跨链桥——原子交换(Atomic Swaps),哈希时间锁(HTLC) 原理介绍

2023-05-16

什么是原子交换?(Atomic swaps)

跨链原子交换(Atomic swaps)是在两个平行链之间直接交换不同的加密货币的方法。就像用美元兑换人民币一样,这是一个过程,两个人可以在不同的链之间交换加密货币,但没有信任或第三方的节制。我们说这种交换是 "原子性的",因为它们必须是全有或全无的。为了保护两个用户,必须不存在一个人可以同时控制两个币的情况。

原子交换可以在许多区块链之间执行,为了使该方案发挥作用,两个链都需要支持相对的时间锁操作,以及对数据块进行散列并与给定的散列进行检查的能力。在本文中,我们将以比特币和比特币现金举例说明原子交换的实现原理,该实现原理的基础是两个哈希时间锁合约,又称为HTCL。

哈希时间锁合约(HTCL)

区块链就像一叠带锁的邮箱柜,有存款槽,对应链上的区块和区块内的交易数据,当你想从某人那里收到比特币时,你告诉他们该把币放进哪个邮箱,对应合约应该去那个区块查询交易数据。

在单向交易中,假设Bob想要支付 0.5 BTC给Alice,他将 0.5 BTC 放入被锁“A”锁定的邮箱“A”的插槽中。当爱丽丝准备花费硬币或将其转移到其他地方时,她使用她的钥匙“A”打开锁并取出硬币。

在双向交易中,Bob支付0.5 BTC 的同时希望收到 Alice 支付的 1 BTC Cash,完成这个操作的部署在两条链上的合约就是哈希时间锁合约,HTLC。

首先,他们有两个锁,一个锁的钥匙可以在规定时间后打开箱子(时间锁)。一个则是在锁定时间内可以打开邮箱柜的锁(哈希锁),只有先打开邮箱柜,才可以找到藏加密货币的邮箱。

时间锁

时间锁是强制的,必须要在一定的时间后才可以打开。

哈希锁

哈希锁需要正确的密码,一旦输入密码后,全世界都可以看到它,就像邮箱柜打开后,所有人都可以看到邮箱,也可以尝试寻找自己的邮箱。

如何实现交易过程

在理想情况下,我们只会使用哈希锁,时间锁只用于在意外情况下的退款。我们先忽略时间锁,假设 Alice 想要BTC,Bob 想要BTC Cash。他们同意以合适的价格,公平的交换对应的加密货币。

Alice 制作了两个哈希锁,它们都需要完全相同的密码。但是,一个需要她的钱包密钥“A”,而另一个需要鲍勃的钱包密钥“B”。爱丽丝知道密码,但暂时保密。

Alice 将哈希锁“A”放在 BTC 邮箱上,将哈希锁“B”放在BTC Cash邮箱上。 Alice 将她的 BTC Cash存入邮箱“B”,Bob 将他的 BTC 存入邮箱“A”。

交易开始!

当代币都存好了之后,Alice 就可以前往邮箱柜。她输入她之前想出的密码(哈希锁私钥),邮箱柜打开,使用私钥“A”(钱包私钥),打开邮箱“A”,获得 BTC。与此同时,Bob 正在观看 Alice,并看到 ALICE 输入了她的密码打开邮箱柜。现在 Bob 也知道密码了!他打开邮箱柜,找到 BTC Cash 邮箱“B”,输入他的密钥“B”(钱包私钥),这样 Bob 打开BTC Cash邮箱“B”,获得了BTC Cash。于是,Alice和Bob刚刚在两个独立的区块链上成功地交换了加密货币,而且在彼此之间或任何第三方都不存在信任问题(Trustless)。

意外情况处理——有内鬼,交易终止

假设 Bob 将他的BTC放入邮箱“A”,但之后再也没有收到 Alice 的消息,或者 Alice 不输入她的密码,Bob 就无法获得他想要的比特币现金,因此,Bob 需要一种方法来取回他原来的比特币。这就是时间锁的用处。

时间锁允许双方在交易未按计划执行的的情况下自行退款。为了交易的公平进行,排除一个人最终拥有所有加密货币而另一个人一无所有的情况。当加密货币锁在 HTLC 邮箱上时,时间锁可以保证每个人都可以在不受干扰的情况下赎回加密货币。如果交易失败,每个人都可以在时间到期后收回他们的加密货币。

时间锁每次锁定的时间对交易的公平进行至关重要。在我们的例子中,Alice 的时间锁应该更长(比如一周),而 Bob 的锁应该更短(比如一天)。从广义上讲,这是因为 Alice 知道哈希锁的私钥,因此具有很大的优势。只有 Alice 使用密钥,取出想要的加密货币后,交易对于 Bob 来说才刚刚开始,所以我们让 Alice 的退款更加麻烦。如果 Bob 认为 Alice 不诚实,他可以先 Alice 一步可以从邮箱“A”提走他的 BTC。

如果邮箱“B”的退款时间较短,Alice 可以等自己的时间锁到期后,从邮箱“B”退还自己的 BTC Cash,然后将密码输入比特币邮箱“A”并取走 Bob 发送的 BTC 。

原文:https://zhuanlan.zhihu.com/p/470628067

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跨链桥——原子交换(Atomic Swaps),哈希时间锁(HTLC) 原理介绍 的相关文章

  • docker 镜像源大全

    1 镜像源 网易 xff1a http hub mirror c 163 com 中科大镜像地址 xff1a http mirrors ustc edu cn 中科大github地址 xff1a https github com ustcl
  • docker降级操作

    我的场景 xff1a 安装rancher过程中 xff0c 提示报错 xff1a FATA 0001 Unsupported Docker version found 20 10 5 supported versions are 1 13
  • Docker容器--镜像、容器操作

    引言 一 Docker镜像操作 1 搜索镜像 格式 xff1a docker search 关键字 docker search nginx 2 获取镜像 格式 xff1a docker pull 仓库名称 标签 如果下载镜像时不指定标签 x
  • python实现excel数据导入mysql

    excel数据导入mysql excel数据格式 xff1a import pandas as pd import xlrd import xlwt import pymysql df 61 pd read excel 39 1 xlsx
  • Onvif客户端出现“SOAP 1.2 fault: SOAP-ENV:Sender [no subcode]”错误解释

    用Onvif test tool测试自己写的Onvif client时 xff0c Probe收到此信息 xff1a SOAP 1 2 fault SOAP ENV Sender no subcode 34 Stopped no respo
  • Cocos2d-x初入学堂(10)-->ParticleEditor粒子编辑器

    欢迎转载 xff01 转载时请注明出处 xff1a http write blog csdn net postedit 8126525 呵呵 上一讲 xff0c 只是将粒子系统的基础知识 xff0c 也有朋友问windows版的粒子编辑器
  • uni-app封装ajax请求方法

    位置项目根目录index js 定义了两种请求get和post span class token keyword import span baseconfig span class token keyword from span span
  • uni-app嵌套H5,H5向uniapp传值

    HTML xff1a span class token doctype lt DOCTYPE html gt span span class token tag span class token tag span class token p
  • uniapp接入微信分享iOS总是跳转两次

    配置了N遍 xff0c 依旧跳转两次 xff0c 最终倒在了打包签名的方式上面 先打越狱包 xff0c 然后再进行签名 xff0c 这样的包iOS可以微信分享 xff0c 但是每次都是两次 直接打包正式包或基座包 xff0c iOS微信分享
  • uniapp中使用renderjs(一)

    uniapp中使用renderjs xff0c 基础调用和data值渲染 span class token operator lt span template span class token operator gt span span c
  • uniapp中使用renderjs(二)引入高德地图

    span class token operator lt span template span class token operator gt span span class token operator lt span view span
  • uniapp安卓打包证书制作,亲测可直接使用

    平常证书制作直接使用的安卓证书在线制作 xff0c 最近这个工具不能使用了 xff0c 现分享下证书制作过程和打包流程 uniapp安卓打包证书制作 xff0c 亲测可直接使用 尝试多次 xff0c 证书文件不是有效的keystore文件出
  • PHP原生开发demo

    好久没有用到原生PHP进行页面的开发了 xff0c 昨天帮忙写了一个 xff0c 不过脑子 xff0c 也没有封装 xff0c 像流水一样 xff0c 哈哈哈哈 span class token operator lt span span
  • 手机端预览pdf,兼容安卓iOS和pc端

    手机端预览pdf 兼容安卓iOS和pc端 pdf web viewer html 官方下载 https github com mozilla pdf js releases download v2 15 349 pdfjs 2 15 349
  • fiddler抓包APP查看接口请求响应信息

    1 安装夜神模拟器 2 下载fiddler https www telerik com download fiddler first run 3 设置fiddler的Connection接口为8888 4 设置同台电脑的模拟器的wlan的手
  • 详解NRF24L01无线收发模块

    近日有粉丝朋友留言 xff0c 希望介绍一下nRF24L01这款无线收发芯片 xff0c 正巧前不久的电赛有些涉及 xff0c 因此将自己的一些经验写在这里 xff0c 希望能有所收获 前面我们介绍过单片机的几种通信协议 xff0c 并且初
  • 可以替代树莓派4(raspberry pi 4B)的tinker board 2

    近几年 xff0c 随着国产芯片的飞速发展 xff0c 一批基于国产SOC的 xff0c 性价比高 xff0c 能运行Android Linux的开发板在市场上出现 xff0c 此前 xff0c 如果要用到Android Linux的开发板
  • 全国大学生电子设计竞赛参赛分享

    在你想要放弃的那一刻 想想为什么当初走到了这里 努力走自己喜欢且有意义的路 xff0c 遇见以后不平凡的自己 时隔九年 xff0c 再次回想起大学时候参见电子设计竞赛的经历 xff0c 依然历历在目 大赛简介 全国大学生电子设计竞赛 xff
  • Turtlebot 3 rplidar bringup

    Turtlebot 3上安装rplidar A1驱动并配置相关的sh及launch文件 xff0c 实现SBC端的bringup xff0c 以及PC上的rviz Turtlebot 3默认的雷达是HLS Hitachi LG Sensor
  • LiDAR 1 基础

    激光的形成过程 xff1a 原子内的电子有低能量状态和高能量状态 xff0c 低能量电子吸收能量进入高能量活跃态 xff0c 恢复低能量时发射光子 通过高电压在谐振腔内触发激光 不同的介质可以触发不同频段的激光 激光雷达使用的是红外波段的非

随机推荐

  • LiDAR 4 固态激光雷达 (Flash LiDAR)

    固态激光雷达分为Flash LiDAR和OPA Optical Phased Array LiDAR xff0c Flash LiDAR是非扫描式的 xff0c OPA LiDAR 是扫描式的 Flash LiDAR的发射光源和接收部件都是
  • LiDAR 5 相控阵激光雷达 (OPA LiDAR)

    OPA LiDAR相控阵激光雷达的技术核心是OPA scanner Quanergy S3激光雷达Transmitter OPA xff1a Leddar Tech OPA LiDAR模块 xff1a 相控阵Phase array实现方式
  • LiDAR 6 FMCW

    FMCW是TOF之外的另一种方式 xff0c 利用光波的调频实现目标的探测 光的波粒二象性 多普勒效应 系统架构 当系统的复杂程度上升后 xff0c 能够采集到的信息也更多 xff0c 包括距离和速度 采用OPA扫描的FMCW激光雷达设计
  • LiDAR 7 消费电子3D应用

    消费电子3D应用 Depth Camera xff0c AR Glass xff0c 类似 Microsoft Azure Kinect xff0c Intel RealSense xff0c iPhone iPad 等产品 Microso
  • LiDAR 8 激光雷达行业

    激光雷达应用的领域特别广泛 xff0c 在无人驾驶上的应用受到很大的关注 全球汽车领域激光雷达的厂商 xff0c 生态链厂商 xff0c 相信激光雷达在产品和技术上的发展还会有很广阔的天地
  • FOC - SVPWM

    FOC vector control 电机矢量控制FOC通过转子坐标系的转换 xff0c 实现动态电流控制 实现的几个环节 xff0c 相电流phase current gt Park Ialpha Ibeta gt Clarke Iq I
  • STL- 容器特点总结

    关于 STL1 序列式容器2 关联式容器3 容器适配器 关于 STL STL即标准模板库 xff08 Standard Template Library xff09 STL包含 6大组件 43 13个头文件 六大组件 xff1a 容器 算法
  • C++ 迭代器失效 ++报错

    迭代器失效 xff0c 迭代器 43 43 报错 Program terminated with signal SIGSEGV Segmentation fault 0 0x00007f5a4be6ffb4 in std Rb tree i
  • 将.bib转换内容为bibitem(bbl)格式

    部分期刊要求使用一些小众的参考文献格式 xff0c 或者不允许使用biblatex包 xff08 不兼容 xff09 xff0c 这是就需要将 bib里的参考文献转成bibitemx并放在 tex文件的末尾 Latex排版引用问题 xff1
  • 杰卡德相似系数(Jaccardsimilarity coefficient)

    xff08 1 xff09 杰卡德相似系数 两个集合A和B交集元素的个数在A B并集中所占的比例 xff0c 称为这两个集合的杰卡德系数 xff0c 用符号 J A B 表示 杰卡德相似系数是衡量两个集合相似度的一种指标 xff08 余弦距
  • argmax()函数和max()函数区别

    是求f x 的最大值 是求x的最大值 举个列子 xff1a 设 当x 61 2时 xff0c f x 最大 xff0c argmax f x xff09 就是使f x 值最大的那个自变量
  • Python 优先级队列PriorityQueue 用法示例

    优先队列 xff08 PriorityQueue xff09 是队列的变体 xff0c 按优先级顺序 xff08 最低优先 xff09 检索打开的条目 条目通常是以下格式的元组 xff1a 插入格式 xff1a q put priority
  • Python 优先级字典SortedDict 用法实例

    安装 sudo pip install sortedcontainers 默认为增序 用法示例 coding utf 8 导入模块库 from sortedcontainers import SortedDict 初始化 sorted di
  • python SortedDict 遍历删除 不对

    topLevel 61 SortedDict neg 从大到小排序 for priority Id in topLevel items print 34 topLevel1 34 topLevel 将Id从topLevel中删除 topLe
  • Python字典遍历 未遍历所有元素

    不能在遍历的时候往字典中新增 删除元素 xff01 xff01 xff01 下面是我的python脚本 xff0c 它需要遍历所有具有逻辑路径和直接磁盘的物理磁盘 如果我们找到了任何逻辑路径 xff0c 那么我们得到了相应的物理磁盘 xff
  • 以太坊 事务ID txID transaction ID transaction hash怎么计算

    The transaction can then be sent to the network and will be tracked by a 256 bit transaction id This transaction can be
  • 比特币 事务ID txID transaction hash怎么计算

    A TXID Transaction ID is basically an identification number for a bitcoin transaction A TXID is always 32 bytes 64 chara
  • 使用Android studio开发jni,并实现单步调试c/c++代码

    一 环境搭建 本文讲解的是在一个现有的工程中增加JNI的支持 我们从新建一个工程说起 xff0c 本文假设你已经知道怎么设置sdk和ndk 新建工程的时候我们故意不勾选这个选项 xff0c 方便后面说明 一直默认点下一步 xff0c 直到工
  • 以太坊 分片是什么

    Ethereum Sharding An Introduction to Blockchain Sharding Alchemy Team May 18 2022 For years the question of blockchain s
  • 跨链桥——原子交换(Atomic Swaps),哈希时间锁(HTLC) 原理介绍

    什么是原子交换 xff1f xff08 Atomic swaps xff09 跨链原子交换 xff08 Atomic swaps xff09 是在两个平行链之间直接交换不同的加密货币的方法 就像用美元兑换人民币一样 xff0c 这是一个过程