什么是原子交换?
安全地在各个区块链网络之间传输资产对于释放被困流动性并吸引更多用户进入这一领域至关重要,同时也保持 Web3 的信任最小化核心价值。原子交换是一种让两个人在不依赖于中介来促成交易的情况下,在不同的区块链网络之间交换通证资产的方式。这为 DeFi 用户提供了一种在多链 Web3 生态系统中保持高度去中心化的方式。
什么是原子交换?
原子交换能够实现不同区块链网络之间的加密通证点对点交换,只有在双方各自向交换合约存入预定数量的通证时才会执行交换。这使得任何两个用户都可以在不依赖第三方促成交易的情况下交换数字通证,从而降低交易对手风险。
"原子性"是一个指数据库事务只能完整执行或完全不执行的软件术语。原子交换按名称分配,要么从每个用户那里接收必要的通证存款并执行交换,要么将所有存入的通证退还给其原始所有者。
原子交换是如何工作的?
原子交换使用哈希时间锁合约(HTLC),它充当“虚拟保险库”或“加密托管账户”,安全地保存用户资金,并仅在正确数量的通证存入合约后执行。每个用户必须在指定的时间间隔内确认收到通证,才能解锁它们。
哈希时间锁合约(HTLC)
HTLC是一种有时限的智能合约,其中使用私钥和密码哈希来控制对资金的访问。每个参与方必须满足所有交换协议才能完成交换,否则通证将退还给其原始所有者。
一个HTLC包括两个核心安全特性:
- 哈希锁定密钥 — 双方都必须提交密码学证明,证实他们已满足了交换合约的条件。
- 时间锁定密钥 — 如果在预设的时间限制内未提交证明,存入的通证将退还给原始所有者。
原子交换示例
- Alice 同意与 Bob 交换 10 枚 X 通证,以换取 10 枚 Y 通证。他们创建了一个在一小时后到期的 HTLC。
- Alice 创建了一个合约地址,并将她的 10 枚 X 通证存入其中。这会生成一个只有Alice 可以访问的私钥。Alice 对私钥创建了一个密码哈希,并将其发送给了 Bob。
- Bob 使用这个哈希来验证 Alice 是否已经将 10 枚 X 通证存入合约地址。但由于他只有哈希,而没有实际的私钥,所以他无法访问这些资金。
- Bob 使用这个哈希生成了一个新的合约地址,并在其中存入了他的 10 枚 Y 通证。现在双方都将资金存入了合约。
- 由于 Bob 使用了 Alice 私钥的哈希创建了地址,Alice 能够领取 Bob 存入的 10 枚 Y 通证。她这样做,并在此过程中向 Bob 揭示了私钥。如果 Bob 在时间锁定到期之前未完成交易,由 Alice 领取的通证将会归还给 Bob。
- 现在,Bob 使用私钥提取了 10 枚 X 通证并完成了交易。
- 在一个小时内完成了交换,合约无法恢复,Alice 成功地将她的 10 枚 X 通证与 Bob 的 10 枚 Y 通证交换了。
原子交换的优势
原子交换为交易者提供了一些其他解决方案所不具备的优势。
- 降低交易对手风险 — 无需将资金托付给中心化第三方来促成交易。交易者完全控制其资产。
- 更深的流动性 — 使资产能够在不同的区块链网络之间交易,增加了这些资产的流动性。
- 直接资产对资产交换 — 用户可以直接购买加密资产,无需首先兑换成高流动性的稳定币并进行多次交易。用户可以在去中心化环境中交易任何他们喜欢的通证。
- 保障结果 — 交易者有保证合约将按照描述执行,否则他们将收回资金。
- 更低的成本 — 点对点交换可能会比依赖第三方管理员产生更低的费用。
原子交换的缺点
由于使用原子交换来交易通证化资产存在一些缺点,因此去中心化交易所(DEXs)和中心化交易所仍然保持高需求。
- 易用性 — 每个交易方都必须就交易金额和价格、时间锁定期限、交换数据和哈希达成一致,并等待交易被处理。这可能会变成一个耗时且复杂的过程,对于初学者来说尤其困难。
- 隐私问题 — 原子交换需要多个区块才能完成,这可能会引起恶意行为者的警觉,让他们有时间追踪地址并针对交易者。
- 兼容性 — 不能在所有区块链网络之间执行原子交换。每个区块链必须使用相同的哈希算法才能实现原子交换。
原子交换与跨链桥梁
虽然原子交换实现了本地资产的点对点交换,但跨链桥梁提供了区块链之间的连接。跨链桥可以通过锁定/解锁或铸造/销毁机制促成封装资产的转移。到目前为止,由于跨链桥梁的黑客攻击,已经有超过26亿美元的损失,这就是为什么 Web3 生态系统正在迅速采用更优越的跨链解决方案的原因。
由 Chainlink CCIP 提供动力的跨链通信
交易者和协议可以通过使用 Chainlink CCIP 克服跨链桥和原子交换的限制,Chainlink CCIP 是跨链互操作性标准,可以在各种区块链之间安全、高效、可靠且可编程地进行通证转移,包括使用不同哈希算法的区块链。例如,Synthetix 正在使用 CCIP 来驱动其 Synth Teleporters,实现流动性在其多链生态系统中的无缝流动。探索 CCIP 如何打开 Web3 的跨链未来。
欢迎关注 Chainlink 预言机并且私信加入开发者社区,有大量关于智能合约的学习资料以及关于区块链的话题!
相关文章:
什么是原子交换?
安全地在各个区块链网络之间传输资产对于释放被困流动性并吸引更多用户进入这一领域至关重要,同时也保持 Web3 的信任最小化核心价值。原子交换是一种让两个人在不依赖于中介来促成交易的情况下,在不同的区块链网络之间交换通证资产的方式。这为 DeFi 用…...
java springboot word文档转pdf
java springboot word文档转pdf 1、环境2、依赖3、代码 1、环境 1、java、springboot 2、maven或者gradle 3、办公软件(自己电脑上的wps或者office等,如果部署到服务器上也要安装,linux、Mac 都有,自己安装) 可能会遇…...
【Leetcode Sheet】Weekly Practice 2
Leetcode Test 1281 整数的各位积和之差(8.9) 给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 提示: 1 < n < 10^5 【原始代码】: int subtractProductAndSum(int n){//1 < n < 10^5//…...
【BERTopic应用 03/3】:微调参数
一、说明 一般来说,BERTopic 在开箱即用的模型中工作得很好。但是,当您有数百万个数据要处理时,使用基本模型处理数据可能需要一些时间。在这篇文章中,我将向您展示如何微调BERTopic中的一些参数并比较它们的结果。让我们潜入。 二…...
2023年上半年数学建模竞赛题目汇总与难度分析
2023年上半年数学建模竞赛题目汇总与难度分析 由于近年来国赛ABC题出题方式漂浮不定,没有太大的定性,目前总体的命题方向为,由之前的单一模型问题变为数据分析评价优化或者预测类题目是B、C题的主要命题方向。为了更好地把握今年命题的主方…...
Linux下搭建java环境
文章目录 一,xshell链接linux二,linux安装jdk环境 一,xshell链接linux 这里用到的工具,VMware搭配CentOS7 64位Xshell5 操作之前确保,传输Xshell连接了虚拟机 打开Xshell,文件->新建 主机ip—>进入虚拟机,右键打开终端,输入命令:ifco…...
String、StringBuffer、StringBuilder三者的异同?
String字符串 不可变的字符序列在 jdk1.8,我们底层用 char [ ] 存储在 jdk 17,我们底层用 byte [ ] 存储 StringBuffer字符串缓冲区类 可变的字符序列,线程安全的(synchronized),效率低在 jdk1.8…...
htmlCSS-----弹性布局案例展示
目录 前言 效果展示 编辑 代码 思路分析 前言 上一期我们学习了弹性布局,那么这一期我们用弹性布局来写一个小案例,下面看代码(上一期链接html&CSS-----弹性布局_灰勒塔德的博客-CSDN博客) 效果展示 代码 html代码&am…...
Fiddler模拟请求发送和修改响应数据
fiddler模拟伪造请求 方法一:打断点模拟HTTP请求 1、浏览器页面填好内容后(不要操作提交),打开fiddler,设置请求前断点,点击菜单fiddler,”Rules”\”Automatic Breakpoints”\”Before Requests” 2、在…...
RH850从0搭建Autosar开发环境【23】- Davinci Configurator之DCM实操实现DID的读取写入
配置DID 一、Developer中创建SWC1.1 创建Application Component Type1.2 实例化Component二、在SWC中创建接口以及Runnable2.1 创建DID的Service Ports2.2 创建DID的Service Runnable三、在Configurator连接接口以及生成代码3.1 连接DCM与SWC3.2 生成RTE3.3 生成SWC的DID的模板…...
ChatGPT收录
VSCode插件-ChatGPT 多磨助手 多磨助手 (domore.run) Steamship Steamship 免费合集 免费chatGPT - Ant Design Pro 免费AI聊天室 (xyys.one)...
Nginx随笔
Nginx下载链接 安装命令: apt update apt install nginx 一、基础命令(Ubuntu) 1、在全局 nginx -t //检查Nginx的配置文件是否有错 systemctl start nginx //启动Nginx systemctl stop nginx //停止Nginx systemctl status nginx //查…...
61. 旋转链表
61. 旋转链表 题目-中等难度示例1. 快慢指针找到分割位置2. 连成环后截断 题目-中等难度 相关企业 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 示例 1: 输入:head [1,2,3,4,5], k 2 输出…...
Python实现动态调用Matlab自定义函数
首先需要下载与python版本对应的matlab,并成功执行matlab中的setup.py文件 参考流程如下 https://blog.csdn.net/s1k9y9/article/details/127793053 完成上述步骤即可开始实现动态调用matlab文件。 文件目录如下 D://call/ |–matlab |–test1 |–main.m |–test2 |…...
redis集群和分片-Redis Cluster:分布式环境中的数据分片、主从复制和 Sentinel 哨兵
当涉及到 Redis 中的集群、分片、主从复制和 Sentinel 哨兵时,这些是构建分布式 Redis 环境中非常重要的概念和组件。下面详细介绍这些概念以及它们在分布式环境中的作用。 Redis Cluster Redis Cluster 是 Redis 官方提供的分布式解决方案,用于管理和…...
【数据库基础】Mysql下载安装及配置
下载 下载地址:https://downloads.mysql.com/archives/community/ 当前最新版本为 8.0版本,可以在Product Version中选择指定版本,在Operating System中选择安装平台,如下 安装 MySQL安装文件分两种 .msi和.zip [外链图片转存失…...
iptables安全与防火墙
防火墙 防火墙主要作用是隔离功能,它是部署在网络边缘或主机边缘;另外在生产中防火墙的主要作用是:决定哪些数据可以被外网访问以及哪些数据可以进入内网访问;顾名思义防火墙处于TCP协议中的网络层。 防火墙分类: 软…...
Linux 内核线程启动以及内核调用应用层程序
#include <linux/kthread.h> //内核线程头文件 static task_struct *test_task; test_task kthread_run(thread_function, NULL, "test_thread_name"); if(IS_ERR(test_task)) { pr_err("test_thread_name create fail\n"); } static int th…...
React+Typescript清理项目环境
上文 创建一个 ReactTypescript 项目 我们创建出了一个 React配合Ts开发的项目环境 那么 本文 我们先将环境清理感觉 方便后续开发 我们先来聊一下React的一个目录结构 跟我们之前开发的React项目还是有一些区别 public 主要是存放一些静态资源文件 例如 html 图片 icon之类的 …...
【linux学习】linux的模块机制
文章目录 前言模块的Hello World! 前言 Linux允许用户通过插入模块,实现干预内核的目的。一直以来,对linux的模块机制都不够清晰,因此本文对内核模块的加载机制进行简单地分析。 ref:https://www.cnblogs.com/fanzhidongyzby/p/…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
