Moonbeam 与 Hyperlane 之间的跨链互连合约
跨链通信除了作为Moonbeam的核心,也是为何另一个跨链协议Hyperlane部署于Moonbeam之上的原因。与先前介绍的跨链协议Axelar和LayerZero类似,Hyperlane允许开发人员编写可以跨区块链通信的智能合约,并让开发人员可以在Moonbeam上构建,这些应用程序可以利用波卡、以太坊、Avalanche等公链提供的功能。
多链dApp目前作为跨多个不同EVM协议的整合接口。协议将能够使用Hyperlane的通用消息传递将其合约进行跨链整合,从而实现多链部署,在原先孤立的生态系统之间实现进阶的互操作性和功能。
为展示互连合约的强大功能,此演示将会把一个字符串自一个EVM测试网发送并存储至另一个EVM测试网。该演示需要一个已添加Moonbase Alpha网络的MetaMask帐户,您可以通过访问Moonbeam文档页面来完成此操作:https://docs.moonbeam.network/cn/builders/get-started/networks/moonbase/ 1 Hyperlane合约概览 Hyperlane是PoS链协议的委托证明,通过可配置的共识函数验证和保护跨链通信。Hyperlane网络中的每个验证人都将负责验证Hyperlane连接到的每条链。Hyperlane协议包含可验证的欺诈证明,可由其Watchtowers网络计算,以证明验证人提供的跨链消息是否有效。这些证明将根据dApp希望使用的共识函数(PoS权益证明、多签等)进行调整,然而大多数dApp会默认使用权益证明(PoS)。 图片来源于Hyperlane 跨链消息通过Hyperlane的发件箱(Outbox)和收件箱(Inbox)智能合约进行路由。收件箱(Inbox)是接收和处理消息的智能合约。每个Hyperlane连接的链都部署了多个收件箱,因为每个收件箱仅连接到另一区块链。发件箱也是一个智能合约,可以通过它将消息发送到其他链。每条链上只会部署了一个发件箱。 为帮助管理收件箱和发件箱智能合约,Hyperlane有一个当前名为AbacusConnectionManager的合约(Hyperlane过去被命名为Abacus)。此外,为帮助管理目标链上的Gas支付,Hyperlane还有另一个名为InterchainGasPaymaster的合约。 作为开发人员,您将部署与所有这些合约交互的智能合约,尽管大部分智能合约代码将打包到母智能合约中供您使用,您在使用时无需查看实现细节。 2 连接SimpleGeneralMessage合约 Hyperlane目前建议您使用其快速入门指南来了解他们的协议,这是了解跨链消息是如何发送和接收的重要指南。本指南部分使用Hyperlane范例项目进行开发,这将有助于读者理解如何部署和编写跨链互连合约。 本指南将不会设置整个Git库,而是使用流行工具Remix来部署合约并与之交互。要了解您在做什么,请查看将部署的合约(已在Github gist中提供),您也可以通过此Remix链接访问。 此合约的母合约为Router,它是从Hyperlane包中导入的。该母合约简化了与Inbox和Outbox合约交互的困难,让编写互连合约更加容易。为了简单起见,本文不会深入至Router合约,但其中有两点对于理解整个部署步骤很重要。 首先,请注意智能合约开发人员可以覆盖一个_handle函数。当Inbox合约收到一条指向一个智能合约的消息时,它将调用一个名为handle的外部函数。该handle函数将在数次检查后调用_handle,因此_handle函数实际上是智能合约接收和回应跨链消息的地方。 其次,有一个路由注册系统会充当每个合约的白名单。一个Hyperlane连接的合约无法向另一个未注册的合约发送消息(如果目的地使用Router合约)。Router合约将有许多外部函数,而这些函数将应用onlyRemoteRouter修饰符,以调用上述白名单系统。 在部署时,您必须与路由注册系统进行交互,以便让互连合约知道向哪个合约发送消息。 但在您部署之前,请先查看SimpleGeneralMessage智能合约中的sendMessage函数。如果您看过我们先前介绍Axelar和LayerZero的博客,您将能猜到这个函数类似于跨链发送消息。Hyperlane的路由合约提供了可能是当前可用的最简化版本,只需要目标链的域名(Hyperlane版本的链ID)和有效载荷来启动跨链消息。 第一行将消息发送者和字符串消息打包成一个字节物件,此为大多数跨链通用消息系统用来发送和接收数据的格式。第二行将消息发送到本地链的Outbox合约,并使用InterchainGasPaymaster支付消息在目标链的执行费用。 请注意,该消息是需要付费的。由于_dispatchWithGas函数的调用包括msg.value作为其第三个参数,因此交易的全部价值将作为Gas发送,以支付在目标链上的执行费用。而之所以需要二次Gas支付,是因为交易执行时支付的Gas仅针对源链,需要发送额外的价值来支付目标链的执行才能完成一次完整的跨链消息。 现在您可以查看互连合约是如何接收消息的。当Inbox合约收到一条指向互连合约的消息时,它将调用该合约的外部handle函数并传入相关数据。您的互连合约继承自的The Router函数包括此handle函数。连同额外的幕后逻辑,它调用内部和可覆盖的_handle函数(如下所示),它将允许开发人员在接收消息时自定义他们的智能合约逻辑。 在这种情况下,_handle函数做的第一件事就是解码由远程合约的sendMessage函数打包的消息。接着在第二行存储要读取的结果消息。 代码相对简单,所以现在您将部署合约!实践是最好的学习方式,因此请您尝试跟随此教程,自己在Moonbase Alpha上部署和执行消息传递。 3 通过Remix在Moonbase Alpha上 进行部署 部署一个Demo合约最简单的方式是通过Remix。而在Moonbase Alpha上部署需要DEV,如果您尚未拥有DEV,您可以从我们提供的Faucet获取。 要部署脚本,您首先可以将合约复制并粘贴到Remix中,或者直接从此Remix gist链接打开它。然后在Solidity Compiler标签中编译。同时,请确保您的MetaMask已连接到Moonbase Alpha网络。然后,在Remix的Deploy & Run Transactions标签中,将环境设置为Injected Web3。这将使用MetaMask作为Web3提供者。 要在每条链上部署,您将需要上述提及的两个合约的本地实例地址:AbacusConnectionManager和InterchainGasPaymaster。此外,您将需要Hyperlane域名以用于后续步骤。下表为选定测试网的所有相关数据。您可以在Hyperlane的文档页面上找到其他网络的终端。 在Moonbase Alpha上部署合约后,确保复制其地址并使用连接到Hyperlane的任何其他EVM测试网之一重复该过程,以便它可以跨链发送消息。 4 注册远程路由 如先前所述,Router母智能合约附带了一个白名单安全系统。如果您曾阅读LayerZero博客文章,您会注意到他们在设置信任的远程地址时也有一个类似的系统。 路由合约目前只允许每条链有一个智能合约作为注册的远程路由,因为它假设每条链上只有一个部署相互通信。但这不是网络本身的限制:您可以编写自己的自定义Router智能合约。 要注册互连Router合约,您须调用以下函数。只有合约所有者(在本例中为部署者)才能设置信任的远程地址。_domain参数是合约应从中接收消息的链的Hyperlane域名标识符,其中一些列于上表中(其余在Hyperlane的文档页面上)。_router参数是互连合约的地址,您应从该地址接收消息。除外,该地址与域名标识符存在于同一链上。 您可能会注意到_router参数是bytes32而非一般地址。这是为了支持未来的非EVM链而设计。在Remix中提供输入时,您需要在地址中额外填充24个零。例如,如果我连接的合约地址是0xaf108eF646c8214c9DD9C13CBC5fadf964Bbe293,我会在Remix中输入以下内容: 0x000000000000000000000000af108ef646c8214c9dd9c13cbc5fadf964bbe293 现在我们将继续使用Remix来确保您的两个互连合约相互信任。您必须对已部署的两个合约执行此操作。要在不同链上的合约之间切换,请通过MetaMask连接到目标网络。确保您处于Injected Provider环境中,并且合约仍然为SimpleGeneralMessage。然后将目标合约的地址粘贴到At Address输入框中。 要添加信任的远程地址,请在SimpleGeneralMessage合约中找到enrollRemoteRouter函数并将其打开。 当您在Moonbase Alpha上时,将_domain设置为您选择的其他EVM测试网的Hyperlane域名标识符(可在他们的文档或上表中找到)。将_router设置为您在其他EVM测试网上部署的合约,并确保为格式正确(用24个零填充)的地址。之后,在MetaMask中进行交易和确认。 当您在备用EVM测试网上时,将_domain输入框设置为Moonbase Alpha的Hyperlane域名标识符(0x6d6f2d61)。将_router输入框设置为您在Moonbase Alpha上部署的合约,并确保为格式正确的地址。最后,在MetaMask中进行交易和确认。 在本部分教程中,您应该已经在两条链上发送了两笔交易,以在两个合约中设置信任的远程地址。之后,您应该可以在互连合约之间发送交易。 5 通过Hyperlane从Moonbase传送 跨链消息 要发送带有自动目标链交易的跨链消息,您必须使用Hyperlane终端消息支付额外的Gas以抵消目标链的Gas成本。这种额外的Gas支付以您包含在交易中的原生Token(GLMR、ETH等)形式出现,并被设置为消息的值。 Hyperlane有一个易用的SDK来帮助估算跨链交易的Gas费用,但对于这篇博客来说超出了范围。为了简单起见,最好使用跨链消息发送一笔较大数额的原生Token,比如300000000 Gwei。注意,请勿在生产环境中发送如此大数额的Token,并且这种高估Gas的方法仅用于测试网的演示目的。截至本文撰写时,Hyperlane的Gas退款功能仍在开发中,任何多出的Gas将由中继器保留。 现在您可以使用Remix接口操作。此范例将向Avalanche Fuji测试网发送跨链消息,但您可以用Gas数值和链名称替换您想要的任何EVM网络。 接着,检查以下事项: 环境为Injected Provider – Web3 on network 1287(Moonbase Alpha) 您的钱包里有来自faucet的大量资金,以支付交易成本和目标链Gas包含的DEV 您在上一步中将Gas费用设置为300000000 Gwei后输入 在sendMessage调用的消息输入中输入您选择的短消息(在本例中为“hello from moonbase alpha”) 将目标链的Hyperlane域名标识符放在sendMessage调用的_destinationDomain输入框中 当您完成上述步骤,请执行交易并在MetaMask中确认。 6 追踪跨链消息 在您发送交易后,您应该能够进入Moonbase Alpha区块浏览器使用其交易哈希查看交易。如果一切顺利,交易应当能够被成功确认,而当您以UTF-8格式查看时,您将能够在最底部看到交易输入的痕迹。 在一般的交易中,交易的状态和数据将可在一个浏览器的页面上看到。但是,由于这是跨链消息传递,因此实际上在两条链上发生了两笔EVM交易。 如果一切顺利,交易将被批准,您将能够看到跨链交易成功后在源链中更新的lastMessage!如果它没有自动更新,请不要担心。一般来说,交易完成大约需要30秒到一分钟的时间。 如果您想查看储存在合约中的消息,您可以通过Remix操作。首先,通过MetaMask连接到目标网络。接着,确保您处于Injected Provider环境中,并且选择的合约仍然是“SimpleGeneralMessage”。然后,获取目标合约的地址,并将其粘贴到At Address输入栏中。点击后,您应该可以使用获得的合约结果查看最后一条消息。 如果您没有看到消息的结果,Hyperlane有一个浏览器来追踪交易,您可以使用第一个源链消息的交易哈希来追踪跨链消息的状态。 7 深入了解跨链互连合约 更多信息,包括Hyperlane文档中的如何发送跨链消息: https://docs.hyperlane.xyz/hyperlane-docs/introduction/readme 阅读关于Moonbeam如何成为区块链互操作性的领导者,请访问Moonbeam的Connected Contracts页面:https://moonbeam.network/builders/connected-contracts/
比推快讯
更多 >>- 1亿枚 USDT 从 Tether Treasury 转移到 Bitfinex
- Optimism已修复其测试网的两个关键漏洞
- Arkham:与 Wisdomtree WBIT相关的钱包持有8900枚BTC,价值约 5.79 亿美元
- 纳指止步4周连跌,创去年11月以来最大单周涨幅
- DAI 单日链上转账金额达到 860 亿美元,创下历史新高
- 以太坊 Rollup 协议 Zircuit 拟于夏季启动主网,总锁仓价值已达25亿美元
- 美参议员警告用于交易儿童性虐待材料的加密活动有所增加
- 加密银行 Custodia Bank 就其美联储成员资格败诉一案提出上诉
- Yuga Labs裁员,专注于建立“更小、更灵活的加密原生团队”
- NFTfi基金会:NFTFI空投申领门户将从 4 月 30 日开放至 6 月 10 日
- dYdX Chain累计交易量突破1200亿美元
- Phoenix Wallet将从美国应用商店下架,Jack Dorsey称“感觉完全没有必要”
- 零知识 (ZK) 协议 Hinkal 完成140 万美元战略融资,估值 7000 万美元
- 姆爷Eminem取代马特·达蒙成为 Crypto.com 最新明星代言人
- 九只现货比特币ETF今日净减持2,987枚BTC,净流出约1.9亿美元
- Yuga Labs 聘请媒体资深人士 Won Kim 担任品牌合作主管
- 一巨鲸从3月1日至4月15日买入近2.5万枚BTC,价值达 16.8 亿美元
- Sam Altman、黄仁勋等科技巨头高管加入美国联邦人工智能安全委员会
- PENDLE 持仓第二巨鲸疑似在持有近一年后卖出 120 万枚 PENDLE ,预计获利 645 万美元
- 福克斯记者:马萨诸塞州参议员候选人John Deaton将提交法庭之友陈述,以支持Coinbase的上诉动议
- Azuki将Azuki #723捐赠给Arbitrum DAO财库
- 链上借贷协议Venus Protocol已于以太坊主网部署DAI市场
- 花旗现预计美联储将于7月降息,2024年共降息100个基点
- 零信任DePIN网络Staex完成战略轮融资,Moonrock Capital参投
- 灰度向Coinbase Prime等地址转入约1811.1枚BTC
- 比特币波动指数昨日降至60.53,日跌幅8.07%
- 美国利率期货合约交易员预计美联储九月首次降息的可能性增加
- 稳定币公司OpenDelta完成250万美元Pre-Seed轮融资
- 美国3月核心PCE物价指数年率2.8%,预期2.7%
- Web3游戏L3E7完成1000万美元融资
- 芝加哥期权交易所拟将数字资产衍生品业务整合到其全球衍生品和结算业务中
- 某鲸鱼地址将3527枚ezETH PT和3300枚ETH存入Zircuit
- Quantix Capital投资NFA Labs 1000万美美元
- Uniswap基金会向Auditless拨款120万美元以创建Protocol Grants Program
- Arthur Hayes:美财长耶伦或将推出天量流动性注入计划,加速加密牛市回归
- RWA协议The Conlony完成新一轮融资,TechStars等参投
- 名义价值93亿美元的BTC与ETH期权即将到期
- Amaranth基金会创始人花费2470万美元购买7814枚ETH
- Vitalik:PoW也相当中心化,PoW只是转向PoS之前的临时阶段
- 中国证监会科技监管司司长、信息中心主任姚前接受审查调查
- 比特币长期持有者已从1月份开始抛售仓位
- PenPad宣布获得加密投资机构Animoca Brands投资
- 富达现货比特币ETF首次录得资金流出
- 华盛证券成为首批虚拟资产现货ETF承销商
比推专栏
更多 >>观点
项目
比推热门文章
- 【比推每日新闻精选】与 Wisdomtree WBIT相关的钱包持有8900枚BTC,价值约 5.79 亿美元;DAI 单日链上转账金额达到 860 亿美元,创下历史新高;芝加哥期权交易所拟将数字资产业务整合到其全球衍生品和结算业务中
- 1亿枚 USDT 从 Tether Treasury 转移到 Bitfinex
- Optimism已修复其测试网的两个关键漏洞
- Arkham:与 Wisdomtree WBIT相关的钱包持有8900枚BTC,价值约 5.79 亿美元
- 【比推每日市场动态】再测6.4万美元,BTC无聊走势或将持续3到6个月
- 纳指止步4周连跌,创去年11月以来最大单周涨幅
- DAI 单日链上转账金额达到 860 亿美元,创下历史新高
- 以太坊 Rollup 协议 Zircuit 拟于夏季启动主网,总锁仓价值已达25亿美元
- 美参议员警告用于交易儿童性虐待材料的加密活动有所增加
- 加密银行 Custodia Bank 就其美联储成员资格败诉一案提出上诉