引?言
我们都知道,区块链的特性之一是不可篡改,这一特性背后是节点共识等技术的支撑。在全节点共识的网络中,升级一直是困扰区块链界的一大问题,因为在实际使用场景中,节点的部署通常存在一定的地理隔离。要想在同一时间对所有节点进行升级基本是不可能的!这一问题在公链中更为凸显,一条公链的节点可能分散在世界的各个角落。
如果不能同一时间对全部节点进行升级,就会导致某一时刻,既有运行旧版本的节点也有运行新版本的节点。如果旧版本的节点无法验证新版本的节点产生的区块,那么便会存在两条区块链,即所有旧版本的节点维护一条链,所有新版本的节点维护一条新的链。这一现象我们称为“硬分叉”。
现有区块链的升级方式
引言中提到的“硬分叉”确实是区块链里的一种软件升级方式,典型的例子如比特币以及硬分叉的比特币现金。
还有一种分叉称为“软分叉”,与硬分叉不同之处在于:硬分叉中,新版本的节点可以验证旧版本的节点产生的区块,旧版本的节点无法验证新版本节点产生的区块;而软分叉中,新旧版本软件可以互相验证对方产生的区块,因此软分叉以后,依旧是一条区块链。
以太坊基金会分配94.8万美元奖励给Layer2社区的22个项目:金色财经报道,以太坊基金会隐私与扩展探索团队公布2022年Layer2社区受赠项目名单,Candidelabs、Quantstamp、Spiro、SoulWallet等22个项目共分配94.8万美元的总奖金。
据悉,Layer 2 Community Grants轮次于2022年10月24日开始,为期6周,共收到130多个提案。由于提案质量较高,以太坊基金会将预算从最初的75万美元提高到了94.8万美元。[2023/2/15 12:07:45]
软分叉和硬分叉都可以对区块链进行升级,但是它们有非常明显的缺点:
影响业务运行:需要将正在运行的节点停掉,替换成新版本的二进制,再启动新版本的节点升级需要较长时间:由于区块链的节点数量很多,且由不同的矿工/管理员运行,整个升级过程可能持续较长时间才能完成
Polkadot如何进行升级
Polkadot是基于Substrate框架开发的区块链,也是一个跨链协议,其作为中继链实现不同区块链之间的跨链交互。它使用Substrate提供的升级方案来进行无分叉的系统升级,完美解决了传统区块链升级中存在的问题。
数据:Deribit上的ETH期货合约24小时交易量达到4个月高点:金色财经报道,据Glassnode数据显示,Deribit上的ETH期货合约24小时交易量刚刚达到685,175,797美元的4个月高点。
2022年9月15日观察到之前的4个月高点为679,769,522美元。[2022/10/26 11:44:47]
▲?Runtime介绍
要解释Polkadot如何进行无分叉升级,首先不得不介绍一下Polkadot里的几个概念。从技术角度来讲,Polkadot协议可以分为两个部分:Runtime和RuntimeEnvironment,Runtime包含Polkadot协议的大多数状态转换函数的执行逻辑,RuntimeEnvironment则包含区块链的一些通用模块,如网络通信、区块生成和共识引擎等。RuntimeEnvironment将外部数据传入Runtime,并与之交互来执行状态转换函数。对Polkadot的升级其实就是对Runtime部分的升级。
用户可以选择使用FRAME来开发Runtime,它的全称是FrameworkforRuntimeAggregationofModularizedEntities,是一组可简化Runtime开发的模块和支持库。Polkadot的Runtime是用rust编写的代码,它被同时编译成一个native可执行文件和一个WebAssembly二进制文件,native可执行文件是整个节点可执行文件的一部分,而wasm二进制则被作为状态的一部分存储在链上。节点执行时既可以使用nativeruntime也可以使用wasmruntime,wasmruntime虽然比nativeruntime执行效率低一点,但是它有以下优点:
Coinbase:合并后上账确认所需要的区块数将暂时增至85:9月15日消息,Coinbase发推称,为了保证安全性,合并后上账确认所需要的区块数将暂时从14增加到85。[2022/9/15 6:57:18]
跨平台。虽然wasm是与平台无关的二进制格式,无论使用何种硬件,在VM中运行wasm,得到相同的执行结果。可以确保产生有效的区块。在wasm中执行的逻辑总是能在nativeruntime中运行,但反过来则不一定。良好的社区支持。工具链和生态得到了社区的大力支持,目前rust对wasm支持的最好。▲?Runtime无分叉升级
升级Runtime的第一步,就是提出一个议案,将更新的Runtimewasm二进制提交到链上。下图是作者写这篇文章时在Polkadot浏览器中的提案截图,其中编号为2的提案便是对Runtime进行升级的提案。
DuckPond Technologies完成150万美元seed-1轮融资,James Moor领投:金色财经报道,元宇宙游戏开发公司DuckPond Technologies宣布完成150万美元seed-1轮融资,James Moor领投,估值达到5000万美元。DuckPond Technologies 专注于开发企业软件和创新产品,首个产品是一款名为 Hip-Hop Golf 的元宇宙游戏,Hip-Hop Sportz 游戏生态系统被设计为一种去中心化的消费者优先技术,将具有沉浸式虚拟和增强现实功能、加密编程、NFT数字虚拟地块交易的游戏体验带给移动玩家。(finsmes)[2022/8/11 12:17:01]
该议案进入公投并投票通过以后,区块链节点便使用当前的Runtime逻辑,将链上使用的wasm二进制替换为议案通过的wasm二进制。作为共识过程的一部分,全网所有的区块链节点都将执行这一过程。
Runtime提供版本信息以区分不同的版本,节点执行时通过判断nativeruntime和wasmruntime的版本信息,来选择合适的Runtime执行。Runtime使用RuntimeVersion结构体来表示版本信息,如下图所示:
以太坊扩容项目AltLayer将于7月28日空投OG徽章NFT:7月6日消息,以太坊扩容项目AltLayer今日宣布,将向早期用户空投OG徽章NFT,本次活动共有1000个OG徽章,其中400个将在此活动中铸造和分发,剩余的600个OG徽章将留作以后分发。
NFT白名单活动将于北京时间7月6日20:00点开始,并于2022年7月25日20:00结束。NFT铸造活动将于北京时间7月28日20:00开始。OG NFT空投将以先到先得的方式提供给所有列入白名单的地址。每个白名单地址将有资格铸造最多1个OG徽章。只有前300个地址会收到OG徽章。所有NFT都将免费提供,用户在铸币过程中不需要gas费。[2022/7/6 1:55:43]
其中各字段解释如下:
spec_name:用于区分不同Substrateruntime的标识符。
impl_name:Runtime实现名称,用于区分不同团队所实现的代码。
authoring_version:出块接口版本号。只有当该值等于nativeruntime的版本号时,出块节点才会生成区块。
spec_version:Runtime规范版本号。只有当nativeruntime和wasmruntime中的spec_name、spec_version、和authoring_version都相等的情况下,全节点才会使用nativeruntime,否则使用wasmruntime。
impl_version:Runtime规范实现版本号。节点可以完全忽略此值;它仅用来说明代码是不同的。
transaction_version:外部交易接口版本号。
apis:所支持的RuntimeAPI及其版本的列表。
之后,节点执行时会发现nativeruntime的版本和wasmruntime版本不一致,因此之后所有执行过程都会使用链上最新的wasmruntime,而不是nativeruntime。至此,便完成了无分叉的升级过程。
▲?存储迁移
在Polkadot升级过程中,还有一个不可忽略的要点便是存储迁移,它是指开发人员重新调整现有的存储以满足新的需求。
为什么需要存储迁移呢?举个简单的例子:假设在旧的Runtime逻辑中,用户账户余额的数据类型是用无符号整型表示的,也就是用无符号整型进行存储的;而在新的Runtime逻辑中,该数据类型是用有符号整型表示的。如果没有使用存储迁移,新的Runtime执行状态转换逻辑的过程中,读取用户账户余额时有可能读取到负数可能,这便可能引起不可预料的结果。
在Runtime中需要进行迁移的改动必须使用Substrate提供的D1-runtime-migration标签来指定。同时,FRAME提供了on_runtime_upgrade函数,该函数的逻辑会在Runtime升级之后立即执行,因此可以在该函数中加入相关的逻辑来实现存储迁移。
总结
Polkadot的升级方案通过将Runtime分为native和wasm并采用链上治理进行升级,无需中断节点且不影响业务运行,也无需太多的人员投入,效率大大提高,完美解决了分叉升级带来的问题,确实是一个非常不错的区块链升级方案。
参考文献
?RuntimeUpgrades,?https://substrate.dev/docs/en/knowledgebase/runtime/upgrades
?J.Burdges,A.Cevallos,P.Czaban,R.Habermeier,S.Hosseini,F.Lama,H.K.Alper,X.Luo,F.Shirazi,A.Stewart,andG.Wood.Overviewofpolkadotanditsdesignconsiderations.arXivpreprintarXiv:2005.13456,2020.
作者简介
周蓉
数据网格实验室BitXHub团队
研究方向:区块链账本互操作技术
由ETHGlobal举办的虚拟黑客马拉松及峰会「ScalingEthereum」将于2021年4月16日开启,活动持续到5月13日.
1900/1/1 0:00:00据TheBlock报道,以太坊二层网络Connext完成由PolychainCapital领投的220万美元种子轮融资,参投方包括1kx和HuobiCapital.
1900/1/1 0:00:00尽管比特币在过去24小时内出现了一个月以来的最大跌幅,但它的牛市行情很可能会持续下去。数据显示,比特币对于现有持有者和潜在买家而言仍有吸引力。比特币的“储备风险”目前为0.008.
1900/1/1 0:00:00本文来自U.Today,作者:YuriMolchanOdaily星球日报译者|余顺遂加密货币倡导者、杀软件之父JohnMcAfee自2020年秋季以来一直在西班牙监狱等待审判并可能被引渡到美国.
1900/1/1 0:00:00多链代币锁定和托管平台Polkalokr将于UTC时间4月7日13点在Polkastarter进行IDO。UTC时间14:30,流动性将被添加到Uniswap池中并将开启代币交易.
1900/1/1 0:00:003月25日,发改委等多部门印发了《加快培育新型消费实施方案》,提出要加快数字人民币的试点推广,优先选择部分新型消费活跃的城市进行试点,着力提高金融运行效率、降低金融交易成本.
1900/1/1 0:00:00