web3跨链桥协议-Nomad

项目介绍

Nomad是一个乐观跨链互操作协议。通过Nomad协议,Dapp能够在不同区块链间发送数据(包括rollups),Dapp通过Nomad的合约和链下的代理对跨链数据、消息进行验证、传输。其安全通过乐观验证机制和欺诈证明制约验证者实现,保证Nomad协议的安全性

市场情况

2022年4月13日,Nomad以2.25亿美元估值完成高达2200w美元种子轮融资,Polychain领投

重要事件

2022年8月2日,Nomad跨链桥被盗超过1.9亿美元

核心技术价值

  • 跨链客户端中消息组织为Merkel Tree,方便提供欺诈证明
  • 不需要对交互链的区块头进行中转,降低跨链代价
  • 部署、重用方便
  • Home、Replica的设计思想值得借鉴,但实现和文档描述不一致

竞品分析

HyperlaneNomad
跨链消息验证通过消息组成的Merkel Tree验证跨链消息存在性
验证方式多签验证乐观验证+挑战期
链下多个验证者对消息树树根进行多重签名,Relayer中转单个验证者签名提交到源链合约,再由Relayer中转
欺诈证明在实现中提供不完全,目的链上无法提供欺诈证明

项目技术原理

组成组件

  • 链上合约:
    • Home合约,部署在所有链上,为所有Dapp发出跨链消息
    • Replica合约,部署在所有链上,为Dapp接收Home合约发出的跨链消息
    • XAppConnectionManager合约,管理上述合约注册、Watcher提供欺诈证明等
       
  • 链下代理:
    • Updater,观察Home合约发出的消息事件,对消息树证明进行签名,并再发布消息树证明到Home合约中,(都是源链Home合约)
    • Watcher,观察Updater与Home合约的交互行为,对恶意行为进行监督并提供欺诈证明
    • Relayer,中转消息树更新到目的链的Replica合约中,为该消息树根开启挑战期
    • Processor,根据过了挑战期的消息树根,为跨链消息提供的对应的Merkel proof,证明跨链消息的有效性,并发起目的链调用

整体架构

跨链流程如下

源链Chain A上:

1、Dapp向跨链桥发起调用

2&3、跨链桥调用底层协议dispatch()发出跨链消息事件,同时跨链消息也会被添加到Home合约的消息树中

链下:

4、Updater监听到下Home合约的消息树更新事件,对更新的新的树根和上一次保存的树根进行签名,即<oldroot, newroot, sig>,该签名作为树累加消息的更新证明被提交到Home合约中

5&6、Relayer检测到Updater提交的签名发出更新事件,将树根的签名中转到目的链Replica合约,开启挑战期

目的链Chain B上:

7、Processor根据Relayer中转的签名,在挑战期内观察,若提交的签名与消息树更新过了挑战期,则说明消息树更新有效

8、Processor发起目的链调用,并提交跨链消息对应消息树的Merkel proof,根据消息树更新的树根和Merkel Proof验证跨链消息,最终完成跨链消息调用

Watcher行为:在Nomad协议中,Watcher主要观察Home合约内消息树的的更新是否有效,若存在问题则直接在跨链协议中终止Replica合约接收跨链消息。(代码层面没有体现欺诈证明的验证)

合约架构

上述为Nomad协议的合约架构,其中协议的核心是Home、Replica合约。

Home合约

Home合约管理着由消息组成的Merkel Tree状态和树根的队列queue,该队列保存了每次向Merkel Tree添加消息而引起的树跟的变化。并且Updater通过update()方法会向Home合约提交两次相邻变化的消息树树根的签名,作为跨链消息引起消息树变化的证明,即<oldroot, newroot, sig>的形式,当签名验证通过是newroot会被认为是有效的,能够被用来进行跨链消息验证。

Replica合约

Replica合约负责消息树树根变化的签名信息<oldroot, newroot, sig>,该消息会被Relayer中转到目的链,并且辅助验证跨链消息。跨链消息即,每次更新消息树的树根的负责发出跨链消息和跨链消息树根的Updater签名证明。最终Processor通过proveAndProcecss()方法提交跨链消息和对应的Merkel proof进行目的链验证和调用目的链合约。

XAppConnectionManager合约:

负责管理当前链上的Replica合约和远程链上的合约(与Replica接收端相对应Home发送端);同时接收Watcher的签名并对有问题的Home合约对应的Replica合约进行接收消息终止,保证跨链业务的安全。

安全

跨链消息验证

在Nomad协议中,Home合约和Replica合约相当于跨链消息的发送端和接收端,XAppConnectionManager负责管理二者,二者在服务于跨链流程时成对出现。

而Updater需要向Home提交消息树树根的签名作为跨链消息在消息树中存在的证明,该签名会在源链上和目的链上被验证,目的链上验证则是帮助验证跨链消息是否在消息树中。

核心:将跨链交易在区块中的存在性证明,转变为在交易树中的证明,但是需要链下的签名保证传递到目的链的消息树树根正确性。因此,引入了链下节点的签名来作为见证,但也是由此,该签名由链下Updater产生,消息树的正确性最终就委托到了链下的签名者身上,有一定的中心化风险。虽然官方文档中描述Updater是去中心化的,但是目前在合约中并没有体现,而是每个Home合约只绑定一个Updater。

欺诈证明

在源链的Home端为了保证链下的Updater不作恶,可以通过两种方式检测到Updater的恶意行为。

检测欺诈证明提供的两种方式:

1)在Updater提交对消息树根的签名时,检查是否Updater提交了不在树根队列中的错误的根

2)任何人可以通过提交两个新的矛盾的树根和签名,证明Updater曾经对两个树根进行签名

但Nomad协议中,并未给出具体的如何惩罚Updater的行为,或者一些经济行为的惩罚,这部分应该是交给了上层桥的开发者实现。

另外,在目的链上Replica中为每个被中转的消息树及证明设定了挑战期。由于目的链上不能感知到源链上哪一个消息树的树根是正确的,因此引入了Watcher来进行监督。若在挑战期内,任何诚实的Watcher发现Home合约和Updater交互出错,Watcher有权利直接通过XAppConnectionManager终止Replica合约接收跨链消息,阻止跨链消息在目的链被处理。Watcher并不需要提供任何证明,因为目的链上当前的实现中不跟踪每一个消息树的树根更新记录,也无法提供证明。

思考

1)Watcher不是去信任的,由于当前的Nomad设计中Replica上没有跟踪消息树更新,Watcher无法提供欺诈证明,Watcher需要在合约中经过许可才能进行管理、监督

2)Replica合约应该增加记录消息树更新的状态,以便能够在目的链端进行欺诈证明的检测

参考资料

官方文档:Funds Recovery | Nomad Docs

github:GitHub - nomad-xyz/monorepo: Nomad Monorepo -- SDKs, Contracts, and more!

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

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

相关文章

微信小程序实现画板画布自由绘制、选择画笔粗细及颜色、记录撤回、画板板擦、清空、写字板、导出绘图、canvas,开箱即用

目录 画板创建canvas绘制及渲染画笔粗细功能实现画笔颜色选择画笔痕迹撤回、板擦、画布清空canvas解析微信小程序中 canvas 的应用场景canvas 与 2D 上下文、webgl 上下文的关系图像的加载与绘制说明代码说明画板创建 canvas绘制及渲染 在wxml添加对应的canvas标签代码,并在j…

网站灰度发布?Tomcat的8005、8009、8080三个端口的作用什么是CDNLVS、Nginx和Haproxy的优缺点服务器无法开机时

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

解锁BL后的K40降级

1 下载刷机工具 https://miuiver.com/miflash/ 2、下载刷机包 https://xiaomirom.com/series/ 下载ROM包&#xff0c;12.0.8比较好 3 打开第一步下载的刷机工具 打开首次安装驱动&#xff0c; 接下来先选择个重要的东西&#xff0c;如果不想重新上BL那就选择全部删除…

蓝桥杯刷题——day8

蓝桥杯刷题——day8 题目一题干解题思路代码 题目二题干解题思路代码 题目一 题干 N 架飞机准备降落到某个只有一条跑道的机场。其中第i架飞机在 Ti时刻到达机场上空&#xff0c;到达时它的剩余油料还可以继续盘旋 Di个单位时间&#xff0c;即它最早可以于 Ti时刻开始降落&am…

redis数据类型:list

list 的相关命令配合使用的应用场景&#xff1a; 栈和队列&#xff1a;插入和弹出命令的配合&#xff0c;亦可实现栈和队列的功能 实现哪种数据结构&#xff0c;取决于插入和弹出命令的配合&#xff0c;如左插右出或右插左出&#xff1a;这两种种方式实现先进先出的数据结构&a…

IDEA中解决Edit Configurations中没有tomcat Server选项的问题

今天使用IDEA2024专业版的时候,发现Edit Configurations里面没有tomcat Server,最终找到解决方案。 一、解决办法 1、打开Settings 2、搜索tomcat插件 搜索tomcat插件之后,找到tomcat 发现tomcat插件处于未勾选状态,然后我们将其勾选保存即可。 二、结果展示 最后,再次编…

复习打卡大数据篇——Hadoop HDFS 02

目录 1. HDFS辅助工具 2. namenode安全模式 1. HDFS辅助工具 跨集群数据拷贝 当我们需要跨集群进行文件数据的拷贝时可以用&#xff1a; hadoop distcp 集群1的某个文件路径 要拷贝到集群2的地址路径 文件归档工具archive 由于HDFS的块的数量取决于文件的大小和数量&…

Mamba安装环境和使用,anaconda环境打包

什么是mamba Mamba是一个极速版本的conda&#xff0c;它是conda的C重新实现&#xff0c;使用多线程并行处理来加速包和依赖项的下载。 Mamba旨在提高安装、更新和卸载Python包的速度&#xff0c;同时保持与conda相同的兼容性和命令行接口。 Mamba的核心部分使用C实现&#xff…

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导 Sigrity System Explorer Snip Via Pattern From Layout模式支持从其它设计中截取过孔模型用于仿真分析,同样以差分模板为例 具体操作如下 双击打开System Explorer软件…

顺序表的操作

注意位序和数组下标的关系 插入&#xff1a; 插入的时间复杂度&#xff1a; 最深层语句&#xff1a; 最好情况 最坏情况 平均情况 删除&#xff1a; 查找&#xff1a;

以腾讯混元模型为例,在管理平台上集成一个智能助手

背景 前几天&#xff0c;公司的同事们一起吃了个饭&#xff0c;餐桌上大家聊到大模型的落地场景。我个人在去年已经利用百度千帆平台写过案例&#xff0c;并发过博客&#xff08;传送门&#x1f449;&#xff1a;利用文心千帆打造一个属于自己的小师爷&#xff09;&#xff0c…

计算机基础 试题

建议做的时候复制粘贴,全部颜色改为黑色,做完了可以看博客对答案。 一、单项选择题(本大题共25小题,每小题2分,共50分〉 1.计算机内部采用二进制数表示信息,为了便于书写,常用十六进制数表示。一个二进制数0010011010110用十六进制数表示为 A.9A6 B.26B C.4D6 D.…

[机器学习]XGBoost(3)——确定树的结构

XGBoost的目标函数详见[机器学习]XGBoost&#xff08;2&#xff09;——目标函数&#xff08;公式详解&#xff09; 确定树的结构 之前在关于目标函数的计算中&#xff0c;均假设树的结构是确定的&#xff0c;但实际上&#xff0c;当划分条件不同时&#xff0c;叶子节点包含的…

【AI驱动的数据结构:包装类的艺术与科学】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 包装类装箱和拆箱阿里巴巴面试题 包装类 在Java中基本数据类型不是继承来自Object&#xff0c;为了…

探索Moticon智能传感器鞋垫OpenGo的功能与优势

Moticon智能传感器鞋垫OpenGo是一款专为运动科学和临床研究设计的先进工具。它通过13枚压力传感器、1枚3D加速器和1枚温度传感器&#xff0c;实时监测脚部的压力分布和步态变化。用户可以通过配套的Beaker应用&#xff0c;将这些数据以图表形式呈现&#xff0c;便于分析和理解。…

hive注释comment中文乱码解决

问题描述 当使用以下命令查看表的元数据信息时出现中文乱码&#xff08;使用的是idea连接hive&#xff09; desc formatted test.t_archer; 解决 连接保存hive元数据的MySQL数据库&#xff0c;执行以下命令&#xff1a; use hive3; show tables;alter table hive3.COLUMNS_…

模型 结构化思维

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。分步拆解&#xff0c;系统思考。 1 结构化思维的应用 1.1 提升销售额的结构化思维应用案例 小李是一家电商公司的运营经理&#xff0c;面对激烈的市场竞争&#xff0c;公司希望在下个季度实现销售额…

uniApp上传文件踩坑日记

最近在做移动端app&#xff0c;开始接触uniapp。想着直接用PC端的前后端API去做文件上传&#xff0c;但是uniapp的底层把请求拆成了普通请求和文件上传请求&#xff0c;所以不能用一个axios去做所有请求的处理&#xff0c;拆成uni.request和uni.uploadFile去分别处理两种情况。…

数据压缩比 38.65%,TDengine 重塑 3H1 的存储与性能

小T导读&#xff1a;这篇文章是“2024&#xff0c;我想和 TDengine 谈谈”征文活动的三等奖作品之一。作者通过自身实践&#xff0c;详细分享了 TDengine 在高端装备运维服务平台中的应用&#xff0c;涵盖架构改造、性能测试、功能实现等多个方面。从压缩效率到查询性能&#x…

电气设计 | 低压接地系统:TN-C 、TN-S、TN-C-S、TT适用哪些场所?

电气设计 | 低压接地系统&#xff1a;TN-C 、TN-S、TN-C-S、TT适用哪些场所&#xff1f; 1、低压配电系统简介2、各种低压配电系统介绍2.1、TN-C系统2.2、TN-S系统2.3、TN-C-S 系统2.4、TT 系统2.5、IT 系统 1、低压配电系统简介 低压配电系统有TN-C、TN-S、TN-C-S、TT和IT五种…