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

在这里插入图片描述
撰文: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.rhkb.cn/news/172224.html

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

相关文章

如何能够在发现问题和提问的时候一并带出自己的解决方案

1. 充分理解问题: 在提出问题之前,确保你已经完全理解了问题的本质。从不同的角度分析问题,确保没有遗漏任何重要的信息或者上下文。 2. 进行自我调查和研究: 在向他人寻求帮助之前,尝试自己解决问题。利用网络资源…

vue项目package.json与package-lock.json作用及区别

package.json文件介绍和使用 运行项目,命令行: npm run dev “dependencies” 运行依赖,需引入页面使用 “devDependencies” 开发依赖(生产环境使用),只是开发阶段需要 我们每次新建一个项目的时候会发现在项目中会有这么俩个相似的文件&am…

vue3基础流程

目录 1. 安装和创建项目 2. 项目结构 3. 主要文件解析 3.1 main.js 3.2 App.vue 4. 组件和Props 5. 事件处理 6. 生命周期钩子 7. Vue 3的Composition API 8. 总结和结论 响应式系统: 组件化: 易于学习: 灵活性: 社…

grafana InfluxDB returned error: error reading influxDB 400错误解决

问题: 如图提示错误解决 确认自己的docker容器是否配置了以下3个字段 DOCKER_INFLUXDB_INIT_USERNAMExxx DOCKER_INFLUXDB_INIT_PASSWORDyyy DOCKER_INFLUXDB_INIT_ADMIN_TOKENzzz 如果有,在grafana中需要添加header配置Header: Authorization , Value…

SSM宾馆客房管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 宾馆客房管理系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代 码和数据库,系统…

mac安装jenkins

1、安装jenkins之前确认是否安装了homebrew 2、开始安装jenkins 安装完如下图则安装完成 3、不想用默认ip和端口的自己改一下ip和端口 4、启动jenkins brew services restart jenkins 使用自己修改后的ip:port http://0.0.0.0:8088 根据提示信息,拿到管理员密码&…

Echarts 实现 设备运行状态图(甘特图) 工业大数据展示

let option{tooltip: {formatter: function (params) {let startTime new Date(params.value[1])let endTime new Date(params.value[2]);//北京时间/时间戳转成日常时间function convert(date){var y date.getFullYear();var m date.getMonth() 1;m m < 10 ? "0…

如何在 Azure 容器应用程序上部署具有 Elastic Observability 的 Hello World Web 应用程序

作者&#xff1a;Jonathan Simon Elastic Observability 是提供对正在运行的 Web 应用程序的可见性的最佳工具。 Microsoft Azure 容器应用程序是一个完全托管的环境&#xff0c;使你能够在无服务器平台上运行容器化应用程序&#xff0c;以便你的应用程序可以扩展和缩减。 这使…

Redis(01)| 数据结构

这里写自定义目录标题 Redis 速度快的原因除了它是内存数据库&#xff0c;使得所有的操作都在内存上进行之外&#xff0c;还有一个重要因素&#xff0c;它实现的数据结构&#xff0c;使得我们对数据进行增删查改操作时&#xff0c;Redis 能高效的处理。 因此&#xff0c;这次我…

Apriori介绍及代码批注

一、Apriori原理解析 1. 概述 关联规则分析是数据挖掘中最活跃的研究方法之一&#xff0c;目的是在一个数据集中找到各项之间的关联关系&#xff0c;而这种关系并没有在数据中直接体现出来。以超市的销售数据为例&#xff0c;当存在很多商品时&#xff0c;可能的商品组合数量…

【Opencv4快速入门】轮廓检测findContours

7.2 轮廓检测findContours 7.2.1 轮廓查找findContours7.2.2 轮廓绘制drawContours图像轮廓是指图像中对象的边界,是图像目标的外部特征,这个特征对于图像分析、目标识别和理解更深层次的含义具有重要的作用。 7.2.1 轮廓查找findContours 图像的轮廓补单能够提供物体的边缘,…

Java练习题2020-2

"统计1到N的整数中,除了1和自身之外&#xff0c;至少还能被两个数整除的数的个数 输入说明&#xff1a;整数 N(N<10000)&#xff1b; 输出说明&#xff1a;符合条件的数的个数 输入样例&#xff1a;10 输出样例&#xff1a;3 (说明&#xff1a;样例中符合条件的3个数是…

安卓开发实例:方向传感器

调用手机的方向传感器&#xff0c;X轴&#xff0c;Y轴&#xff0c;Z轴的数值 activity_sensor.xml <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayoutxmlns:android"http://schemas.android.c…

檢測項目簡體字

某些項目可能要求代碼中不允許使用簡體字 安裝stcheck檢查 yarn add stcheck --dev在項目根目錄創建 st.config.json 文件 {"patterns": ["./**/*.(ts|js|tsx|jsx|vue|html)","!**/node_modules/**","!.git/**"],"gitignore&q…

UE5 Blueprint发送http请求

一、下载插件HttpBlueprint、Json Blueprint Utilities两个插件是互相依赖的&#xff0c;启用&#xff0c;重启项目 目前两个是Beta的状态&#xff0c;如果你使用的平台支持就可以使用&#xff0c;我们的项目因为需要取Header的值&#xff0c;所有没法使用这两个插件&#xff0…

从零开始搭建Prometheus+grafana服务器组件监控系统

服务器及相关组件监控 本文档主要记录了常用企业级服务器及各种组件的监控手段和监控部署方案&#xff0c;使企业可以实时感知服务器组件的健康状态&#xff0c;并在服务器或组件出现异常时及时做出反应。 本方案采用的Prometheusgrafana的方式实现对服务器及各种组件的监控&am…

使用VisualStudio生成类图结构图for高效阅读代码

使用VisualStudio高效阅读代码 前言相关准备导入工程利用VisualStudio生成类图&#xff0c;结构体调用关系利用EnterpriseArchitect(EA)画时序图 前言 目前市面上代码阅读的IDE工具非常丰富&#xff0c;也各有千秋。由于工作经历原因&#xff0c;研发机经历过windows、Mac、Li…

67 跳跃游戏 II

跳跃游戏 II 题解1 贪心1 正向题解2 贪心2 反向题解3 DP 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 &…

数据库分库分表的原则

目录 1、数据库分库分表是什么 2、为什么要对数据库分库分表 3、何时选择分库分表 4、⭐分库分表遵循的原则 5、分库分表的方式 6、数据存放在表和库中的规则&#xff08;算法&#xff09; 7、分库分表的架构模式 8、分库分表的问题 小结 1、数据库分库分表是什么 数…

Android JNI/NDK 入门从一到二

1. 前言 最基础的创建JNI接口的操作&#xff0c;可以直接看这篇文章 : 第一个Android JNI工程&#xff0c; 本文会基于掌握创建JNI接口的操作的基础之上&#xff0c;来入门JNI/NDK。 2. 在JNI中打印日志 2.1 添加log模块 记得CMake中有log模块&#xff0c;不然编译不过 ta…