| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 两分钟带你弄懂Starcoin如何去中心化升级Stdlib -> 正文阅读 |
|
[区块链]两分钟带你弄懂Starcoin如何去中心化升级Stdlib |
* 本文由Starcoin社区原创 作者:WGB,根据「去中心化的Stdlib升级——Starcoin vs ETH」的直播整理,点击查看原文。 Starcoin与其他公链不同,Starcoin把的共识、区块设置、区块奖励、账号定义、Token定义、NFT协议等预先定义在stdlib中,以便升级维护统一管理。stdlib是存在于链上的合约库,所以starcoin 可以不使用硬编码来实现区块奖励、区块算法、共识等定义,同时stdlib也可以通过Dao链上治理的方式进行升级或修复。 智能合约:Starcoin vs ETH
以太坊:以太坊的合约大多时使用solidity编写,在编写过程中如ERC20等协议的代币需要编写时自己实现,没有stdllib标准库。 Starcoin:?Starcoin的合约使用move语言编写,move语言有module和script的概念,module大多用来编写基础代码,通过script来组合调用。在Starcoin中有stdlib,内置实现了ERC20、NFT、Dao等协议,同时move语言支持范型,可以方便的创建出不同的Token以及其他功能。 2. 智能合约的调用与存储 以太坊:以太坊分为合约地址与非合约地址,合约需要放在合约地址,所以在调用合约时需要通过合约的地址来找到合约。如果合约升级,在不使用Proxy contract (代理合约)等方法时,需要改变合约地址才能使用新的合约。 Starcoin:Starcoin的合约以及其他资源(Token、NFT ...)是存储在账户地址,所以在调用合约时需要通过拥有者地址+模块?来找到合约。如果合约升级,不会影响调用合约的地址和模块名称。 智能合约升级:Starcoin vs ETH以太坊:?以太坊上的合约需要升级但不希望更改调用的地址时可以使用Proxy contract (代理合约),访问代理合约的地址,由代理合约提供新合约的地址。 Starcoin:?Starcoin的合约需要升级时Dao去中心化社区投票、Two-phase (两阶段提交)来解决,在升级后就可以使用原地址调用新合约。 合约升级方案:Starcoin VS ETHStarcoin的stdlib合约存在于链上,采用Dao去中心化的管理,社区可通过投票操作来决定合约升级计划的部署等。 代码提交是采用两阶段提交:先提交升级计划,再提交更新代码。 整个流程分为七个阶段,如图所示:
1. PENDING在coder 修改代码后向Dao提交一个升级的proposal txn,整个流程进入PENDING状态。设置有一段时间使社区对该项议题讨论和了解后进入下一个阶段。 2. ACTIVE在上个阶段的结束后,进入ACTIVE阶段,在这个阶段需要社区的人员进行投票,在到达设置的规定时间后转为下个阶段。 3. AGREED在上个阶段到达规定时间后,流程进入到AGREED阶段,在这个阶段中会对投票结果进行统计,如果超过预定占比,则视为升级计划被Dao社区允许,在发起公示后,可以进行下一个阶段。 4.QUEUED在上个阶段的投票结果统计后,流程进入由发起公示后到公示期,这个阶段主要是展示发起人和proposal的信息等,当公示期过去之后进入下个阶段。 5.EXECTABLE在上个阶段的公示期时间结束后,流程进入到可以升级合约的Two-phase(两阶段提交)的第一个阶段,提交合约代码升级计划。在提交完合约升级计划后即可进入下一个阶段。 6.ETRACTED在上个阶段的提交合约升级计划后,流程进入到升级合约的Two-phase(两阶段提交)的第二个阶段,在此阶段可以提交修复或升级合约的代码,在提交完成后即可进入下个阶段。 7.Upgrade complete在上个阶段的代码提交后,整个合约升级流程结束,在此之后可以使用新的合约代码进行操作。 Stdlib升级1. 编写stdlib中的代码此处以stdlib中的DummyToken.move为例,增加一个Mymint函数和Mymint脚本。功能为定值造100个DummyToken。 DummyToken.move下的 DummyToken Module :
DummyToken.move下的 DummyTokenScripts Module :
2. 准备编译好的二进制的Module在Starcoin 命令行中执行命令,分两步编译、打包出二进制的 Module?编译:
打包:
3. 准备账号以及余额准备账号:?需要两个账号:
使用密钥导入或使用account create 创建账号即可?准备余额:
4. 提交提案 进入 PENDING
5. 查询提案的状态查看提议id:
查看提议状态:
6. 等待社区议论 进入 ACTIVE在PENDING状态下经过一段时间进入投票期,在dev下可以通过sleep方式加快区块链时间进入下个阶段。?加速进入:
查看提案状态:
7. 社区投票 进入 AGREED用投票代表账号参与投票后等待投票时间结束后,流程进入AGREED阶段
8. AGREED的提议放入更新队列 进入QUEUED在进入AGREED 以后,任何人都可以将状态为 AGREED 的提议放入更新队列。
9. 公示期等待 进入EXECTABLE公示期的等待时间过去之后,就可以进入执行阶段。dev下可以通过命令加速此阶段?加速进入:
10. 提交升级计划 进入ETRACTED这一步是可执行阶段,可以执行升级计划。
11. 提交代码 进入Upgrade complete在这一步中Dao流程已经结束,两阶段提交流程进入最后一阶段?代码模块提交:
12. 完成合约升级流程至此已经完成整个合约升级过程 13. 升级的验证可以执行DummyTokenScripts模块中的 Mymint函数来校验是否升级成功
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:47:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |