Moonbeam:开发者的多链教科书

了解波卡的技术架构,只需掌握3个关键词:

  1. Relay Chain(中继链):Polkadot将自身视作多核计算机,承载区块链底层安全架构的辐射中心。
  2. Parachain(平行链):在“Layer 0”架构之上,不同功能的专业化独立区块链能自由运行,成为平行链(Layer 1)。这些平行链拥有Layer 0提供的网络安全,同时兼容普通区块链的开发平台功能。
  3. XCM:为了实现链与链之间的交流,Polkadot提出了跨共识信息格式XCM,提升不同链之间的流动性、业务场景拓展和用户体验。

为什么选择Moombeam?

简单来说,Moonbeam是基于Polkadot Substrate框架开发的兼容以太坊智能合约平行链。

Moonbeam面对多样化的公链架构,从链结构安全性的角度选择在波卡生态中构建以太坊开发环境,以降低主流开发者进入波卡生态的技术门槛。

通过Substrate框架,Moonbeam将以太坊虚拟机(EVM)纳入其中。此外,还增加了各类Web3 RPC支持工具,打造出无缝的ETH JSON RPC集成体验,包括Solisidty开发者常用的HardHat、Foundry、MetaMask或Ether.js。

为了优化开发体验,Moonbeam还增加了一些成熟的开发者工具库,如Gnosis Safe、Etherscan、Chainlink等,类似于以太坊主网上的波卡分网,可以找到以太坊上具备的功能。

此外,Moonbeam还设计了统一账户,使用H160格式的链上账户可以同时实现波卡特色的治理/质押功能和EVM开发环境内的链上交互。

让开发者在使用具备EVM兼容性的同时能感受到与波卡交互的优势,Moonbeam专门上线了各类预编译库,可以自由调用以太坊API的同时获取Substrate层的功能。例如,直接通过智能合约与波卡生态的XCM进行交互,或者打包多笔交易,省去终端使用者需要多次授权和支付Gas费的麻烦。

跨链信息传递

在多链世界的背景下,共识也变得非常重要。

我们都清楚,在家庭和谐相处的前提是对某些原则有着一致的共识,而在区块链类似的场景中也同样存在,只是更加复杂。链上的共识由一群互不认识的验证者履行,无论是PoS还是PoW,他们共同维护公链的区块生产和稳定性。

需要注意的是,不同的公链的共识层是独立的。如果希望链之间进行交流,需要借助更多的辅助外力,比如我们熟悉的原生跨链概念 — — General Messaging Passing Protocols(GMP)。GMP可以将A链上的信息安全准确地传递至B链。一旦信息传递到B链,位于B链的共识层将确认收到的跨链信息,并在链上做出相应的批准和确认。当然,跨链信息格式不仅限于双链互跨,未来有望实现短时间内的多链互跨,从而提升链上的交互效率和用户体验。

在波卡生态系统中,跨链将变得更加容易,毕竟平行链之间已经建立了相互信任的前提,这些平行链在同一个共识体系下进行验证(共享安全的来源)。波卡中的特色传输方式是XCM!

XCM可以简单理解为一种信件的格式,包括问候、正文和结尾署名,这是大家都能理解的信件格式。XCM的标准和格式能够灵活地应用于不同的跨链场景,例如:

  • 远程指令的跨链执行,通过XCM格式将A链的指令传输到B链进行执行。
  • 将A链的原生Token传输到B链,为Token构建更多的应用场景。

XCM范例:远程执行

举一个例子,这样大家会更清楚XCM是如何工作的。

假设Alice希望将10个token从A链传输到B链。

第一步:10个token从A链传输至A链的主权账户,并通过XCM格式发送一条通知信息,准备将这10个token转入B链。

第二步:B链接收到这条XCM格式的信息,并接受了10个token跨链传输的指令。

第三步:一旦A链得知B链确认了10个token跨链传输的指令,A链将这10个token转换为带有XC-格式的token,并将这些转换格式后的token放入一个“Holding Register”中。这个“Holding Register”类似于一个购物车,用于联系两条链之间的token运输。

第四步:在传输这10个XC-token的过程中,每一步都需要支付一定的gas费用。这些费用会直接从这10个XC-token中扣除,所以实际得到的token数量会小于10个。

第五步:一旦“Holding Register”将这10个XCtoken传输到B链,它会找到B链上接收这10个XCtoken的账户地址,并向该地址请求接收token。

什么是XC-Token?

此外,XC-token还可以用于远程质押token、远程跨链参与治理等等。

你可能会问,XC-token是什么?这是Moonbeam跨链生态的一种特有的token格式,被称为XC-20。XC-20格式类似于我们熟悉的ERC-20格式,可以与以太坊API进行交互,同时还可以与Substrate API进行交互。简单来说,XC-20格式的token可以直接在波卡的EVM兼容链上使用,而不需要进行token格式的重组。

多链互跨使项目方和公链生态紧密依存。公链提供开发组件,方便项目方将产品扩展到多条链上。这种跨链方式不仅成本低,产出高,对开发者而言一举多得。

跨链意味着能快速获取多链上的用户和流动性。投放原生token到其他公链,吸引更多用户参与生态系统,增加token的使用率和价值。跨链还让项目方占据不同公链的生态优势,建立品牌形象和用户群体,扩大市场份额。

对公链而言,跨链扩展了公链的跨界应用场景。提供开发组件,吸引项目方将产品扩展到自己的链上,增加用户和流动性。公链与项目方合作相互依存,公链提供技术支持和生态资源,项目方优化产品性能和使用体验。通过技术集成,公链增加生态规模和影响力,提升市场竞争力。

多链互跨为项目方和公链生态带来机遇和挑战。项目方通过跨链扩展市场份额和用户群体,公链通过合作增加生态规模和影响力。随着跨链技术的发展,多链互跨将成为未来区块链发展的重要趋势。

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

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

相关文章

Postman如何导出接口的几种方法

本文主要介绍了Postman如何导出接口的几种方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 前言: 我的文章还是一贯的作风,简确用风格(简单确实有用)&am…

【从零开始学习JAVA | 三十四篇】IO流

目录 前言: IO流介绍: IO流的常见方法: 1.字节流类: 2.字符流类: 总结: 前言: IO流就是存入和读取数据的解决方案,并且他是一个知识点很多的章节,因此我们关于IO流…

Jmeter —— jmeter接口自动化测试操作流程

在企业使用jmeter开展实际的接口自动化测试工具,建议按如下操作流程, 可以使整个接口测试过程更规范,更有效。 接口自动化的流程: 1、获取到接口文档:swagger、word、excel ... 2、熟悉接口文档然后设计测试用例&am…

ES开启身份认证

文章目录 X-Pack简介之前的安全方案ES开启认证ES服务升级https协议开启集群节点之间的证书认证 X-Pack简介 X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 X-Pack的发展演变&am…

html刷新图片

文章目录 前言网页整体刷新改变图像的url 备注 前言 海思3516的一个开发板,不断的采集图像编码为jpeg,保存为同一个文件。打算用网页实现查看视频的效果,需要前端能够自动刷新。 目前找到了两个方法,一个是网页的不断刷新&#…

Pytest学习教程_测试报告生成pytest-html(三)

前言 pytest-html 是一个用于生成漂亮的 HTML 测试报告的 pytest 插件。它可以方便地将 pytest 运行的测试结果转换为易于阅读和理解的 HTML 报告,提供了丰富的测试结果展示功能和交互性。 一、安装 # 版本查看命令 pytest版本: pytest --version pyte…

VGN N75pro说明书

VGN N75pro说明书 1、封面和最后一页 2、第01、02、03 3、第04 4、第05

面试总结-Redis篇章(十)——Redis哨兵模式、集群脑裂

Redis哨兵模式、集群脑裂 哨兵模式哨兵的作用服务状态监控 Redis集群(哨兵模式)脑裂解决办法 哨兵模式 为了保证Redis的高可用,Redis提供了哨兵模式 哨兵的作用 服务状态监控 Redis集群(哨兵模式)脑裂 假设由于网络原…

344.翻转字符串+387.字符串中的第一个唯一字符

目录 一、翻转字符串 二、字符串中的第一个唯一字符 一、翻转字符串 344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:void reverseString(vector<char>& s) {int start0;int end s.size()-1;while(start < end){swap(s[sta…

3ds MAX 绘制喷泉

首先绘制一个小圆柱体当做喷头&#xff1a; 在粒子系统内选择【超级喷射】&#xff0c;并设置对应的参数&#xff1a; 轴和平面的扩散代表了我们看到的水柱能占据多大的面积 另外比较重要的参数是粒子运动和粒子计时 前者是粒子移动的时间也就是喷射的速度 后者代表了喷射出的…

构建语言模型:BERT 分步实施指南

学习目标 了解 BERT 的架构和组件。了解 BERT 输入所需的预处理步骤以及如何处理不同的输入序列长度。获得使用 TensorFlow 或 PyTorch 等流行机器学习框架实施 BERT 的实践知识。了解如何针对特定下游任务(例如文本分类或命名实体识别)微调 BERT。为什么我们需要 BERT? 正…

数学建模常见模型汇总

优化问题 线性规划、半定规划、几何规划、非线性规划、整数规划、多目标规划(分层序列法)、动态规划、存贮论、代理模型、响应面分析法、列生成算法 预测模型 微分方程、小波分析、回归分析、灰色预测、马尔可夫预测、时间序列分析(AR MAMA.RMA ARTMA LSTM神经网络)、混沌模…

【VTK】基于读取出来的 STL 模型,当用户点击鼠标左键时,程序将获取点击位置的点,显示其坐标,并设置它为模型的旋转原点

知识不是单独的&#xff0c;一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏&#xff1a;Visual Studio。 文章目录 class PointPickedSignal : public QObjectclass MouseInteractorCommand : public vtkCommandvoid A::on_pushButtonSelected_clicked()void A::on…

2023年华数杯数学建模D题思路分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor 1 竞赛信息 为了培养学生的创新意识及运用数…

Linux vi/vim以及三种模式常用快捷键

vi/vim vi和vimvi 命令模式vi 插入模式vi 底行模式 vi和vim vi 和 vim 都是在 Linux 系统中的文本编辑器。vim 实际上是 vi 的增强版&#xff0c;提供了更多的功能和改进。 vi&#xff1a; vi 是一个经典的文本编辑器&#xff0c;几乎在每个 Linux 发行版中都预装了。vi 的使用…

算法专题:子序列系列2(回文)

文章目录 示例1&#xff1a;回文子串思路DP数组含义&#xff08;注意&#xff09;递推公式初始化遍历顺序&#xff08;注意&#xff09; 完整版注意点 示例2&#xff1a;最长回文子序列思路DP数组含义递推公式初始化遍历顺序 完整版注意点另一种写法不能把DP数组全部初始化为1的…

【pandas使用小技巧】如何将DataFrame的index有序化【reset_index()方法】

在pandas中&#xff0c;可以使用**reset_index()**方法将DataFrame的index改成连续的。reset_index()方法会将原来的index作为一列新的数据添加到DataFrame中&#xff0c;并将新的index设置为连续的整数。栗子如下&#xff0c;演示如何使用reset_index()方法将DataFrame的index…

vue3搭建(vite+create-vue)

目录 前提条件 输入命令 对于Add an End-to-End Testing Solution nightwatch和Cypress 和 Playwright 运行 前提条件 熟悉命令行已安装 16.0 或更高版本的 Node.js &#xff08;node -v查看版本&#xff09; 输入命令 npm init vuelatest 这一指令将会安装并执行 create-…

Meta AI研究团队新AI模型: Llama 2 大语言模型

Llama是Facebook Research团队开发的基础语言模型集&#xff0c;旨在提供广泛的语言理解能力。它基于转换器架构&#xff0c;参数范围从7B到65B。通过使用Llama模型&#xff0c;研究人员和开发人员可以构建更先进的自然语言处理系统。您可以在GitHub上找到相关的代码和资源&…

kotlin 编写一个简单的天气预报app(四)增加界面显示

编写界面来显示返回的数据 用户友好性&#xff1a;通过界面设计和用户体验优化&#xff0c;可以使天气信息更易读、易理解和易操作。有效的界面设计可以提高用户满意度并提供更好的交互体验。 增加城市名字的TextView <TextViewandroid:id"id/textViewCityName"…