Builder 请进:波卡最新开发入门指南

news2024/11/19 1:38:40

在这里插入图片描述
撰文:Dennis Zoma
编译:OneBlock 社区
本文更新于 2023 年 10 月 3 日,来源:https://wiki.polkadot.network/docs/build-guide

Polkadot 是一个区块链协议,有两个目标:在所有连接的平行链之间提供共享安全性,并允许所有连接的链通过使用 XCM 进行互操作。随着 Substrate 和 Cumulus 等 PDK 的出现,开发和推出新链所需的时间显着缩短。在以前,推出新链需要数年时间,而现在可能只需要几周甚至几天的时间,具体取决于你的目标。

本指南将引导你完成今天就可以采取的步骤,开始使用 Polkadot 构建你的愿景。本文将解释在决定哪种最适合你的架构需求时,平行链和智能合约的区别。

指南提供了四种 build 路线:

  1. 构建平行链

  2. 构建托盘(pallet)

  3. 开发智能合约

  4. 开发 DApp

💡提醒

请记住,这些路线只是建议性的,有很多方法可以利用 Polkadot、Substrate 及其各种开发组件。要获得更多灵感,请查看 wiki 中的开源项目!
在深入研究这些路线之前,我们鼓励你阅读有关 Polkadot 及其网络的信息,以获得有关制作应用的背景信息。

波卡开发生态系统概述

在深入研究各种路径,以及在 Polkadot 上进行开发之前,了解构成以下部分的关键术语非常重要。即使在构想构建哪种类型的应用之前,也应该谨慎地了解 Polkadot 是什么以及与它的关系,每个开发组件在 Polkadot 生态系统中能为你做什么。

在这里插入图片描述

Polkadot 生态系统网络

  • 主网:波卡(Polkadot)
  • 金丝雀网络(Canary network):Kusama
    -Kusama 是一个有价值的金丝雀网络,比 Polkadot 更早获得新功能。期待混乱。
  • 官方测试网:
    -Westend - 功能与当前 Polkadot 主网相同,可能会不时进行下一代功能测试,最终将迁移到 Polkadot。Perma-testnet(不会重置回创世块)。
    -Canvas - 支持基于 Wasm 的智能合约测试网,主要用于 ink! 开发。
    -Rococo - 平行链和 XCM 测试网。偶尔重置(使用新的创世块重新开始)。

Polkadot 主网自 2020 年 5 月开始运行,并以多种编程语言(从 Rust 到 JavaScript)实现。主要的实现是用 Rust 构建的,并使用 Substrate 框架。

与网络交互的工具正在迅速发展;有很多方法可以着手!

但在直接进入代码之前,你应该考虑想要创建的去中心化应用是什么类型,并了解想要在 Polkadot 上构建的开发者可以使用各种范例。

构建平行链

规范而言 Polkadot 称为中继链,它也被认为是零层协议,因为实现了多个平行链(第一层协议)的互操作性和共享安全性。平行链使用平行链协议连接到中继链。
在这里插入图片描述

💡提醒

在本文档中,你将遇到术语运行时(runtime)或 STF(状态转换函数)。两者都指的是相同的概念,因为它们定义了特定系统(即区块链)应该如何处理外部和内部的状态变化。这两个术语在 Polkadot 以及 Substrate 语境中广泛使用。

平行链开启了构建复杂运行时或 STF(状态转换函数)逻辑的可能性,而使用智能合约执行该逻辑的成本太高。然而,与智能合约不同,平行链完全缺乏强制性的燃料(gas)计量系统,并且可能容易到导致无限循环的错误(智能合约的设计可以防止这种情况)。Substrate 中实现的权重系统可以缓解此漏洞,不过它给平行链开发者带来了更多执行正确基准测试的负担。

📌什么是平行线程(Parathreads)?

平行线程或“按需平行链”类似于平行链,使开发者能够对其应用程序的逻辑进行较低级别的控制。两者之间的主要区别在于经济性,因为平行线程的安全成本比平行链低得多,并且是“按需付费”模型。平行线程的成本较低是因为平行线程只会在需要时生成一个块,这与平行链不同,平行链在中继链的每个块上都有一个插槽来生成一个块。构建平行线程时,你可使用相同的工具(例如 PDK)并获得构建平行链的所有好处,而没有成本缺点。

使用 Substrate 构建 FRAME Runtimes

Polkadot 是使用 Substrate 框架构建的。Substrate 是一个用于构建区块链的高度可配置和动态的框架。在较低级别,Substrate 提供了一组工具和库,涉及区块生产、最终性小工具到点对点网络。Polkadot 和 Kusama 以及大多数平行链都是使用 Substrate 构建的。

从本质上讲,Substrate 可以通过提供关键的功能构建块来分解区块链的开发过程,从而无需重新设计开发区块链时通常涉及的复杂机制。

Substrate 可以作为平行链连接到 Polkadot 或 Kusama 等中继链的基础,甚至可以作为形成传统的第一层独立链的基础。

目前,使用 Substrate 最简化的方法是 FRAME,它可以方便地从一组模块(称为托盘 pallets)。在Substrate 中 Runtimes 是使用 WebAssembly (Wasm) 构建的,代表网络的状态转换函数。FRAME 允许一组面向业务逻辑的模块(称为托盘)来构建 runtime/STF 并定义区块链的确切行为方式。从身份到智能合约,托盘在提供链上功能方面可以相当广泛。

尽管 FRAME 被大量使用,但它并不是使用 Substrate 创建有效 runtime/STF 的唯一方法。Substrate 可用于创建基于 web3 概念的新范例和抽象。

💡提醒

尽管大多数平行链利用 FRAME 和 Substrate 来构建用于连接中继链的runtime/STF,但这并不是偶然的。使用其他工具构建平行链是可能的,只要它们遵循平行链协议即可。作为一般经验法则,Substrate提供了通过相对最小的努力使之成为可能的方法。

使用 Cumulus 构建平行链

进一步深入构建平行链,Cumulus 是另一套工具,有助于为 Polkadot 或 Kusama 构建平行链就绪的区块链。Cumulus 利用 FRAME 和 Substrate 创建一种简单的方法来构建你的第一个平行链,确保链遵循平行链协议。

💡提醒

Cumulus clouds(积云)的形状有点像 dot(点);它们共同构成了一个复杂、美观且实用的系统。

对于大多数开发者来说,最好的起点是独立熟悉 Substrate,然后是 FRAME,最后一步是 Cumulus,以了解整个平行链构建过程。通过这种方式,人们可以查看各种范例的应用方式,并就针对其特定用例集成或使用 Substrate 做出决策。

请参阅平行链开发指南,了解如何开始构建平行链或平行线程。

平行链的好处

平行链包含自己的 runtime/STF 逻辑,并受益于 Polkadot 中继链提供的共享安全性和跨链消息传递。平行链允许高度灵活性和定制化,但随着时间的推移需要更多的努力来创建和维护。由于区块链网络技术和经济方面的复杂性,生产级平行链通常需要更多的创建。

平行链为创建者提供了更多空间来从头开始构建货币系统和其他链方面。与智能合约平台相比,它们允许更简洁、更高效地执行复杂逻辑。平行链还在治理形式上提供了更大的灵活性,并且可以比当前的硬分叉过程以争议较小的方式执行完整的升级。
平行链或平行线程支持的一些功能示例:

  • 自定义费用结构(例如,支付固定交易费或按字节付费)。
  • 通过中继链(Polkadot 或 Kusama)共享安全性和最终确定。
  • 针对原生代币和本地经济定制货币政策。
  • 财库将通过状态职能的转变来提供资金。
  • 一种治理机制,可以管理负责分配链上金库的 DAO。

构建托盘

虽然平行链是高度可定制的,但它们的开发通常很复杂。如果你想熟悉 FRAME 和 Substrate,一个好的起点是在开发环境中构建托盘。托盘是一个完全可定制的模块,允许你在基本级别上以相对最少的开发时间实现第一层逻辑,同时仍然允许在自定义链中构建高级功能。

要了解如何构建托盘,请遵循 Substrate 文档。

开发智能合约

智能合约是另一种选择,可以实现更简单的开发者体验。下面是构建智能合约与构建平行链的快速比较:
在这里插入图片描述

📌智能合约和托盘之间有什么区别?

如果你还记得的话,平行链包含通常构建在 Substrate 上的 runtime/STF,后者通常使用 FRAME,而 FRAME 由托盘组成。托盘是 Substrate runtime/STF 的一部分,而智能合约是托盘的产品(请参阅:pallet_contracts)。托盘需要更多的工程和思考,因为它们可以直接影响链的状态。

ink! 和基于 EVM 的智能合约

从较高的层面来看,智能合约只是存在于链上某个地址并可由外部参与者调用的一些代码。无论是基于 EVM,还是使用 ink!、智能合约沙盒、运行在链上的可执行程序。

💡提醒

Polkadot 中继链不支持智能合约。然而,有几个平行链可以。有关所提供环境的更多信息,请参阅智能合约指南。

智能合约的一个流行选择是 ink!。其他提供以 Solidity 和 ink! 编写的基于 EVM 的合约的平行链也可用。

由于智能合约一次存在于一条链上,因此它们可以与同一条链上的其他智能合约具有平滑的互操作性。然而,它们始终会受到其宿主链固有特性的约束和限制。

作为开发者,你需要考虑智能合约的存储和复杂性,以确保 gas 使用量保持在合理范围内。考虑使用去中心化存储页面上列出的选项来保留数据并仅提交链上的内容地址。

📌构建智能合约

请参阅智能合约指南,了解如何开始构建智能合约。

开发 DApp/uApp

如果你的目标是开发 DApp(去中心化应用)或 uApp(不可阻挡的应用),Polkadot 生态系统包含各种 SDK 来利用中继链和平行链。

对于前端应用,存在多种与基于 Substrate 的链(平行链、中继链等)和智能合约接口的选项。这些通常会与 Substrate 节点的 RPC 交互:

  • Polkadot.js

通过 RPC 调用围绕基于 Polkadot 和 Substrate 的链的 Promise 和 RxJS API。它是根据 Substrate 运行时提供的元数据动态生成的。此处提供完整的文档和示例。

有关工具的完整列表,请查看此处:工具、API 和语言

  • Subxt

使用 Rust 通过 RPC 查询外部信息(交易)并将其提交到 Substrate 节点。也称为 Rust Parity。此处提供完整的文档和示例。

有关工具的完整列表,请查看此处:工具、API 和语言

  • React Hooks for ink!

React hooks 库用于 ink! 抽象 polkadot.js 功能的智能合约。此处提供完整的文档和示例。

有关工具的完整列表,请查看此处:工具、API 和语言

  • ink!athon Boilerplate

ink!athon 是一个全栈 DApp 开发的初始工具包,包括 ink! 智能合约和基于 React 的前端,一应俱全。借助方便的帮助脚本和预配置的项目设置,使你快速构建任何 DApp。此处提供了实时示例和完整文档。

有关工具的完整列表,请查看此处:工具、API 和语言

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

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

相关文章

你绝对不知道的JMeter中如何实现接口之间的关联?

关联是Jmeter工具中非常重要的一个技术。因为在测试过程过有些数据是经常发生变化的,要获取并使用这些数据,就要使用关联。 比如:用户登录后,session信息都不同,有些操作要使用session,就需要将这个动态的信…

计算机网络_04_传输层

文章目录 1.什么是传输层2.传输层提供了什么服务3.传输层协议TCP 1.什么是传输层 传输层是OSI七层体系架构中的第四层, TCP/IP四层体系架构中的第二层, 从通信和信息处理两方面来看,“传输层”既是面向通信部分的最高层,与下面的三层一起共同构建进行网…

bootstap_小项目

通过bootstrap画一个简单的后台管理页面&#xff0c;知识有限&#xff0c;页面粗糙&#xff0c;一种记录方式 页面效果展示 首页页面代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible&qu…

Uva11059 Maximum Product(最大乘积)

1、题目 Uva 11059 2、题意 输入 n n n 个元素组成的序列 S S S&#xff0c;你需要找出一个乘积最大的连续子序列。如果这个最大的乘积不是正数&#xff0c;应输出0&#xff08;表示无解&#xff09;。 1 ≤ n ≤ 18 &#xff0c; − 10 ≤ S i ≤ 10 1 \le n \le 18&…

测试小白必看!接口测试必需掌握的知识要点!

接口测试 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。 接口测试原理 通过测试程序模拟客…

SpringBoot中使用JdbcTemplate访问Oracle数据库

Oracle相信大家都不陌生吧&#xff0c;一个大型的数据库&#xff0c;至于数据库&#xff0c;我相信各位都比较熟悉了&#xff0c;一个软件系统&#xff0c;不论是我们常做的App、小程序、还是传统的web站点&#xff0c;我们都有用户的信息&#xff0c;相关业务的数据&#xff0…

公司如何禁止拷贝文件

公司如何禁止拷贝文件 安企神U盘管理系统下载使用 禁止拷贝文件是一种数据安全措施&#xff0c;通常在企业中用于保护重要信息和知识产权。禁止拷贝文件的方法需要根据公司的实际情况来选择和实施&#xff0c;以下是一些常见的方法&#xff0c;可用于防止文件拷贝&#xff1a…

Splunk 之 filed 恢复

1: 背景&#xff1a; 我们在工作过程中&#xff0c;或者是和很多team 进行交互的时候&#xff0c;总会有 filed 共用的情况&#xff0c;还有就是filed 会被相同权限的同事删除等等&#xff0c;这种情况下&#xff0c;就要求做好 /opt/splunk/etc/apps 的备份工作。 如果知道原…

Amazon Lambda 转 Container Image 方式部署

背景描述 对于从 Lambda Console通过 Author from scratch 创建的函数, 可以直接在浏览器中编辑代码和调试, 非常方便. 不过由于 Lambda 函数 Quota 限制 Console 编辑器最大 3MB, 包含 Layer 和自定义 Runtim 后最大 250MB, 并且此配额不支持提限, 因此当函数体量较大时就不适…

基于AI与物联网技术的智能视频监控系统架构剖析

智能视频监控系统正逐渐成为我们日常生活和工作中不可或缺的一部分。基于物联网的智能监控系统架构为我们在各个领域提供了更高效、智能化和安全的监控解决方案。本文将以旭帆科技EasyCVR视频监控云平台为例&#xff0c;介绍基于AI、物联网的智能监控系统的架构&#xff0c;并探…

一网打尽——线粒体基因组高级分析

线粒体堪称生命活动的“能量供给站”&#xff0c;这种存在于大多数细胞中的细胞器&#xff0c;拥有自身的遗传物质和遗传体系&#xff0c;除了为细胞供能之外&#xff0c;线粒体还参与到多种细胞功能过程中&#xff0c;拥有调控细胞生长和细胞周期的能力。 典型的动物线粒体是…

【BUG】Nginx转发失败解决方案

最近在做项目的时候出现了一个问题&#xff0c;琢磨了好久&#xff0c;来浅浅记录一下。 这个项目后端使用的是gateway网关和nacos实现动态的路由&#xff0c;前端使用nginx来管理前端资源&#xff0c;大体流程&#xff1a;浏览器发起请求&#xff0c;经过nginx代理&#xff0c…

智能化燃气场站建设4要点!

关键词&#xff1a;智慧燃气、智慧燃气场站、智慧燃气建设、智慧燃气平台、 设备设施数字化管理平台 建 议 建设智能燃气场站&#xff0c;首先&#xff0c;要调研现有场站&#xff0c;摸清掌握现有场站智能化数据。在现有设施基础上&#xff0c;对现有燃气场站进行技术升级设…

Angular-03:组件模板

各种学习后的知识点整理归纳&#xff0c;非原创&#xff01; 组件模板 ① 数据绑定② 属性绑定③ 类名绑定④ 样式绑定⑤ 事件绑定⑥ 获取原生DOM对象6.1 在组件模板中获取6.2 在组件类中获取 ⑦ 双向数据绑定⑧ 内容投影8.1 select选择器8.2 单槽投影8.3 多槽投影 ⑨ 安全操作…

[开源]传统实体产业提供进销存管理解决方案,助传统企业降本增效

一、开源项目简介 管店云, 技术链接产业. 管店云为传统实体产业提供进销存管理解决方案&#xff0c;实现进货、库存、销售、收银、记账完整的业务场景&#xff0c;帮助传统产业实现数字化转型&#xff0c;提升管理效率&#xff0c;提高自身数字化经营的能力&#xff0c;让管人管…

Unity的碰撞检测(六)

温馨提示&#xff1a;本文基于前一篇“Unity的碰撞检测(五)”继续探讨两个游戏对象具备刚体的BodyType均为Dynamic&#xff0c;但是Collision Detection属性不同的碰撞检测&#xff0c;阅读本文则默认已阅读前文。 &#xff08;一&#xff09;测试说明 在基于两个游戏对象都具…

退运险业务及系统架构演进史

作者&#xff1a;曾利⺠、杨代铭 ⽂章简介&#xff1a;本⽂回顾退运险上线⼗年以来相关系统架构的演进。 背景    退运险对于我司来说是⼀个举⾜轻重⼀款产品&#xff0c;初创时期贡献了99.9%的 保费收⼊&#xff0c;随着公司的发展各类产品的不断创新&#xff0c;退运险的…

前端移动web高级详细解析一

01-平面转换 简介 作用&#xff1a;为元素添加动态效果&#xff0c;一般与过渡配合使用 概念&#xff1a;改变盒子在平面内的形态&#xff08;位移、旋转、缩放、倾斜&#xff09; 平面转换也叫 2D 转换&#xff0c;属性是 transform 平移 transform: translate(X轴移动距…

YOLOv5算法改进(21)— 添加CA注意力机制 + 更换Neck网络之BiFPN + 更换损失函数之EIoU

前言:Hello大家好,我是小哥谈。通过上节课的学习,相信同学们一定了解了组合改进的核心。本节课开始,就让我们结合论文来对YOLOv5进行组合改进(添加CA注意力机制+更换Neck网络之BiFPN+更换损失函数之EIoU),希望同学们学完本节课可以有所启迪,并且后期可以自行进行YOLOv5…

记一次任意文件下载到Getshell

任意文件下载&#xff08;Arbitrary File Download&#xff09;是一种常见的 Web 攻击技术&#xff0c;用于窃取服务器上任意文件的内容。攻击者利用应用程序中的漏洞&#xff0c;通过构造恶意请求&#xff0c;使应用程序将任意文件&#xff08;如配置文件、敏感数据等&#xf…