什么是原子交换?
安全地在各个区块链网络之间传输资产对于释放被困流动性并吸引更多用户进入这一领域至关重要,同时也保持 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/…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...

Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...

Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...