跨链原子交换

原子交换的想法于 2013 年首次在 BitcoinTalk 论坛上提出,它可以实现两个区块链之间的代币交换。

这些交换是原子的,因为双方要么收到对方的硬币,要么都保留自己的硬币。 一方不可能欺骗另一方。 它不依赖任何可信赖的第三方,消除了交易对手风险。

有很多用例。 例如,它们可以作为非托管交易的基础,用户可以在交易的同时控制自己的资金。

基础知识

比特币地址就像一个带有存款槽的上锁邮箱。 当鲍勃向爱丽丝发送比特币时,他将比特币放入邮箱A的槽位,其中包含爱丽丝的“地址”。 只有爱丽丝拥有打开邮箱并取回硬币的钥匙。

有比用简单的私钥就能打开的锁更奇特的锁。 这些锁被视为比特币智能合约,可以规定任意复杂的锁定条件。

哈希锁

它们可以通过密码解锁,例如解锁手机的 PIN 码。 这个秘密实际上是一个散列到给定值的值/原像,该值显示在锁上供每个人查看。 对应的智能合约是一个哈希谜题。 一旦使用 PIN/原像解锁,它就会在区块链上公开可见。

时间锁

这些锁在到达预定时间之前无法打开,该时间可以是 UNIX 纪元时间(自 1 月 1 日到 1970 年以来的秒数)或区块高度。 相应的智能合约称为CheckLockTimeVerify。

原子交换

让我们使用这些锁,根据 Alice 的 BSV 币和 Bob 的 BTC 币按照双方同意的比例进行交换。

设置

Alice 将带有哈希锁的 BSV 放入 Bob 的邮箱中,并将哈希值告诉 Bob。 然后鲍勃将 BTC 使用相同的哈希锁放入 Alice 的邮箱中。 这两个哈希锁共享相同的 PIN,该 PIN 由 Alice 生成并暂时对 Bob 隐藏。

交换

Alice 使用她的私钥A和秘密PIN打开邮箱A以获取BTC Bob存款。 Bob 获悉Alice 刚刚在 BTC 区块链上透露的 PIN 码。 他可以使用相同的PIN打开邮箱B,连同他的私钥B,并获得BSV Alice存款。 他们在没有任何第三方的情况下交换了硬币。

打开一个邮箱可以有效地让另一方能够打开另一个邮箱。 如果 Alice 不打开她的邮箱,Bob 就无法打开她的邮箱。

如果爱丽丝或鲍勃终止怎么办?

如果Alice存入BSV后Bob没有将BTC放入邮箱A,她的BSV就会被卡住。 同样,如果 Alice 在设置后没有输入 PIN,Bob 的 BTC 币就会被卡住,Alice 的 BSV 也会被卡住。 这就是时间锁的用武之地。每个邮箱都有一个防卡住时间锁,因此如果没有人及时打开密码箱,硬币可以退还。 例如,Bob 可以在一定时间后用他的密钥 B 解锁邮箱 A。

请注意,Alice 在邮箱 B 上的时间锁定必须比 Bob 在主邮箱 A 上的时间锁定长。否则,Alice 可以等到邮箱 B 的时间锁定到期,取回她的 BSV 币,并使用 PIN 打开邮箱 A 来提取 Bob 的 BTC 存款。

哈希时间锁定合约(HTLC)

原子交换使用称为哈希时间锁定合约(HTLC)的智能合约,因为它结合了哈希锁和时间锁。

在 BSV 中,HTLC 可以在 sCrypt 中实现,如下所示。

class HashTimeLockContract extends SmartContract {@prop() readonly alicePubKey: PubKey@prop() readonly bobPubKey: PubKey@prop() readonly hashX: Sha256@prop() readonly timeout: bigint // Can be a timestamp or block height.// hash lock@method()public unlock(x: ByteString, aliceSig: Sig) {// Check if H(x) == this.hashXassert(sha256(x) == this.hashX, 'Invalid secret.')// Verify Alices signature.assert(this.checkSig(aliceSig, this.alicePubKey))}// time lock@method()public cancel(bobSig: Sig) {assert(this.ctx.locktime >= this.timeout, 'locktime has not yet expired')// Verify Bobs signature.assert(this.checkSig(bobSig, this.bobPubKey))}
}

HLTC 合约源代码

调用合约有两种方式,即打开邮箱:

  1. unlock():使用PIN交换成功
  2. cancel():不发生交换,币被退还。 this.ctx 是 ScriptContext,允许访问支出交易的锁定时间。

在BTC中,HTLC可以如下实现:

OP_IF// hash lock branchOP_SHA256<hash of secret>OP_EQUALVERIFY<pubKey of swap>OP_CHECKSIG
OP_ELSE// time lock branch<locktime>OP_CHECKLOCKTIMEVERIFYOP_DROP<pubKey of refund>OP_CHECKSIG
OP_ENDIF

它也有两种解锁方式,在时间锁分支中使用OP_CHECKLOCKTIMEVERIFY。 使用脚本而不是 sCrypt,因为 BTC禁用了许多操作码。

完整的协议序列

总之,BSV 和 BTC 之间的原子交换协议可以按照以下步骤执行。

  1. Alice 生成一个安全随机数 x 并计算其哈希值:h = SHA256(x)。 Alice 将 h 发送给 Bob。
  2. Alice 将币锁定在 BSV 上的 HTLC 中,可以通过以下两种方式之一解锁:1) 哈希到 h 和 Bob 签名的值; 2) 比如说 24 小时后 Alice 的签名。 Alice 通过向 BSV 网络广播交易来部署合约。
  3. Bob 将币锁定在 BTC 的 HTLC 中,可以通过以下两种方式之一解锁:1)哈希到 h 和 Alice 签名的值; 2) Bob 在 48 小时后签名。 Bob 通过向 BTC 网络广播交易来部署合约。
  4. 确认 Bob 的交易后,Alice 通过提供 x 和她的签名来领取 BTC。
  5. Bob 在 BTC 上观察到 x,并使用 x 和他的签名来索取 BSV。

如果步骤 34 没有发生,双方都可以在时间锁定到期后取回他们的硬币。

概括

我们已经演示了如何在 BSV 和 BTC 区块链上自动交换硬币。 任何两条区块链都可以支持跨链原子交换,只要它们支持HTLC,即具有相同的哈希函数并支持时间锁。 例如,已实施以下交换:

  • BTC <-> ETH & ERC20 tokens: using HTLC on Ethereum

  • BTC <-> LTC

  • BTC <-> BCH

  • BTC <-> QTUM

  • Decred <-> LTC

令人惊讶的是,原子交换甚至可以在没有 HTLC 的区块链上实现,例如门罗币。 使用高级的密码学,原子交换甚至可以用于任何区块链,只要它可以验证签名。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/191306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hdoop学习笔记(HDP)-Part.10 创建集群

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

【二叉树】常见题目解析(2)

题目1&#xff1a;104. 二叉树的最大深度 - 力扣&#xff08;LeetCode&#xff09; 题目1描述&#xff1a; 题目1分析及解决&#xff1a; &#xff08;1&#xff09;base case&#xff1a;当前节点为null时&#xff0c;以当前节点为根节点的树最大深度是0。 &#xff08;2&…

使用系统ProgressBar实现三色进度条

使用系统ProgressBar实现如图三色进度条&#xff1a; //布局中<ProgressBarandroid:layout_width"0dp"android:layout_height"8dp"android:layout_marginLeft"16dp"app:layout_constraintBottom_toBottomOf"id/photo"app:layout_c…

Docker部署Plik临时文件上传系统并且实现远程访问

文章目录 1. Docker部署Plik2. 本地访问Plik3. Linux安装Cpolar4. 配置Plik公网地址5. 远程访问Plik6. 固定Plik公网地址7. 固定地址访问Plik8. 结语 本文介绍如何使用Linux docker方式快速安装Plik并且结合Cpolar内网穿透工具实现远程访问&#xff0c;实现随时随地在任意设备上…

为自己创建的游戏编程源码申请软件著作权详细流程(免费分享模板)

以为我这篇文章制作的游戏申请软件著作权为例 Ren‘py 视觉小说 交互式故事游戏制作过程学习笔记(Windows下实现)(多结局游戏)-CSDN博客 一、网站注册 申请软著时&#xff0c;所有的著作权人都需要在中国版权保护中心官网注册账号&#xff0c;并进行实名认证后&#xff0c;才…

SpringBoot2.x整合WebService实现远程接口调用

一、添加依赖 <!-- SpringBoot 2.4 以下版本--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web-services</artifactId> </dependency><dependency><groupId>org.apach…

Android 应用资源概览

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、资源类型分组四、配置限定符名称表…

口罩标准讲解及推荐

一、我国医用口罩质量标准 1、YY/T0969-2013《一次性使用医用口罩》 2、YY0469-2011《医用外科口罩》 3、GB19083-2010《医用防护口罩技术要求》三类医用口罩各项指标对比如下&#xff1a; 结论&#xff1a;防护效果来说&#xff1a;医用防护口罩>医用外科口罩>一次性…

【交换排序 简单选择排序 堆排序 归并排序】

文章目录 交换排序简单选择排序堆排序归并排序 交换排序 冒泡排序的算法分析&#xff1a; 冒泡排序最好的时间复杂度是O&#xff08;n&#xff09;冒泡排序最好的时间复杂度是O&#xff08;n平方&#xff09;冒泡排序平均时间复杂度为O&#xff08;n的平方&#xff09;冒泡排…

02数仓平台Zookeeper

概述 ZooKeeper是一种分布式协调服务&#xff0c;用于管理大型主机集。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用程序逻辑&#xff0c;而不必担心应用程序的分布式性质。 Zookeepe…

基于springboot,vue高校图书馆管理系统

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;项目采用前后端分离 前端技术&#xff1a;vueelementUI 服务端技术&#xff1a;springbootmybatisredis 本项…

[英语学习][6][Word Power Made Easy]的精读与翻译优化

[序言] 针对第18页的阅读, 进行第二次翻译优化以及纠错, 这次译者的翻译出现的严重问题: 没有考虑时态的变化导致整个翻译跟上下文脱节, 然后又有偷懒的嫌疑, 翻译得很随意. [英文学习的目标] 提升自身的英语水平, 对日后编程技能的提升有很大帮助. 希望大家这次能学到东西,…

2023年12月03日新闻简报(国内国际)

新闻简报 每天三分钟&#xff0c;朝闻天下事。今天是&#xff1a;2023年12月03日&#xff0c;星期日&#xff0c;农历十月廿一&#xff0c;祝工作愉快&#xff0c;身体健康&#xff0c;生活喜乐&#xff1a; &#x1f449;&#x1f449;国内新闻 1、1日凌晨&#xff0c;四川…

OpenCV技术应用(6)— 暖色滤镜和冷色滤镜

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本节课就手把手教大家如何将一幅图像转化成暖色滤镜和冷色滤镜&#xff0c;希望大家学习之后能够有所收获~&#xff01;&#x1f308; 目录 &#x1f680;1.技术介绍 &#x1f680;2.暖色滤镜 &#x1f680;3.冷色滤…

SpringBoot 是如何启动一个内置的Tomcat

为什么说Spring Boot框架内置Tomcat 容器,Spring Boot框架又是怎么样去启动Tomcat的?我简单总结下学习过程。 一:简单了解SpringBoot的启动类 我们都知道Spring Boot框架的启动类上是需要使用 @SpringBootApplication 注解标注的, @SpringBootApplication 是一个复合注解…

FL Studio(水果软件)2024最新中文版云盘下载

如今&#xff0c;越来越多的音乐人选择使用音乐制作软件来进行音乐的创作&#xff0c;一台电脑、一款软件以及一个外接MIDI就是一个小型的音乐工作站。FL Studio成了音乐界萌新的首选&#xff0c;目前最新的版本为FL Studio2024版本。 你可以不知道如何做音乐&#xff0c;但是…

Normalizing Kalman Filters for Multivariate Time Series Analysis

l l l means latent state&#xff0c;LGM means ‘linear Gaussian state space models’ 辅助信息 作者未提供代码

cnpm 安装后无法使用怎么办?

问题的原因 cnpm 安装成功&#xff0c;但是却无法使用&#xff0c;一般分为两种情况&#xff0c;一种是提示无法执行命令&#xff0c;另一种是可以执行但是执行时报错&#xff0c;下面分别说明遇到这两种情况的解决方案。 解决方案 问题一&#xff1a;无法执行相关命令 首先…

CleanMyMac X4.16.2最新2024注册许可证

都说苹果的闪存是金子做的&#xff0c;这句话并非空穴来风&#xff0c;普遍都是256G起步&#xff0c;闪存没升级一个等级&#xff0c;价格都要增加上千元。昂贵的价格让多数消费者都只能选择低容量版本的mac。而低容量的mac是很难满足用户的需求的&#xff0c;伴随着时间的推移…

LZW的编码和解码

不同于哈弗曼编码针对于每个元素编码&#xff0c;LZW主要针对字符串的编码优化&#xff0c;也就是把出现频率高的字符串压缩成一个字符表示&#xff0c;这也是大名鼎鼎的GIF采用的压缩格式。下面我将从三个角度谈谈我的一些理解&#xff0c;文章主要参考了这位大佬&#xff1a;…