月亮链 月亮链
Ctrl+D收藏月亮链

STO:本体技术视点 | 一文读懂Substrate的合约机制(一)_BST

作者:

时间:1900/1/1 0:00:00

本期我们分享来自本体技术团队的一篇文章的第一部分,关于Substrate的合约机制分析。

01

概要

Substrate把整个程序逻辑分为Host和Runtime部分,Host功能是固定的,偏向于底层,是采用原生执行的方式,而Runtime部分是动态的,偏上层业务,编译成Wasm字节码,这样可以随时升级,其执行在Wasm虚拟机中。合约功能作为上层业务,放置在runtime中,由contractpallet模块负责。通过分析本文主要要搞清楚两个问题:

1.合约设计的经济模型:交易执行收费和存储租金机制;

比特币矿企Riot订购3.3万台MicroBT矿机:金色财经报道,比特币矿商Riot订购首批3.3万台MicroBT机器,以建立国内供应链。购买的MicroBT机器将在匹兹堡的一个新工厂生产,将用于Riot在德克萨斯州纳瓦罗县的科西加纳工厂。

预计将于12月开始交付33280台机器,并将于明年第一季度部署。这些机器将把Riot的哈希率提高到20.1 EH/s。如果Riot选择购买额外的66560台MicroBT机器,其容量估计将达到35.4 EH/s。[2023/6/26 22:01:14]

2.合约的执行机制:本身跑在Wasm虚拟机里的runtime里是怎么跑用户Wasm合约的。

XRP的市值超过200亿美元:金色财经报道,据coingecko数据显示,XRP的市值超过200亿美元,当前为20,993,050,589美元;24小时交易量为1,420,392,270美元。[2023/1/22 11:25:27]

Runtime的contractpallet扩展了Currencytrait的账户系统,因此可以和其他基于Currency实现账户系统的模块一起使用。扩展的合约账户具有实例化合约和调用其他合约和非合约账户的功能。

为了合约代码的复用,将合约代码的上传部署和合约账户的实例化分成两部分,多个合约账户可以从同一份上传的code进行实例化。

广州落地数字人民币支付场景8.5万个:6月26日消息,中国人民银行广州分行副行长郭云喜表示,数字人民币在广州正式试点以来,各项工作进展良好,涌现了一批比较有代表性的示范场景。

数据显示,截至6月15日,广州地区7家参与试点金融机构累计开立个人钱包202.5万个,对公钱包19.5万个,流通(转账、交易)业务336.3万笔,金额4.9亿元,落地支持数字人民币支付场景8.5万个。(bianews)[2022/6/26 1:32:10]

02

合约的经济模型

为了避免垃圾交易和恶意合约占用计算和存储资源,合约的设计考虑了交易执行收费和合约存储收费逻辑。当合约账户的余额不够支付存储租金时,合约的存储会被清理并进入tombstone状态。

合约的生命周期

alive状态的合约信息

当合约处于正常工作状态,其主要有以下信息:

tombstone状态的合约信息

当合约进入tombstone状态后,合约的所有存储都会被清理,合约信息里只有一个对storage_root+code_hash进行hash的值。

合约的复活

合约进入tombstone状态后,技术上是可以进行恢复的。首先需要准备一本新临时合约T,往T合约的存储中插入原合约中的key-value对,使storageroot和原合约完全一致,然后调用restore_to合约接口,这个接口会检查当前合约的storageroot是否和要恢复的tombstone一致,如果满足要求那么就使原合约复活,并且将当前的临时合约的资产转移到复活合约,并销毁当前临时合约。

执行合约的Gas收费

交易的sender必须在每个call中指定gaslimit,未使用完的gas会在调用结束后返还。当到达了指定的gaslimit后,那么所有的call和相关的状态变更只会在当前调用的合约层进行回滚,比如,合约A调用B,并且B执行时gas不够,那么所有B的调用将被回滚。如果A能对错误进行正确处理,那么A的其他调用和状态变更依然可以进行持久存储。初看起来这样做是一个极大的限制,但其实是底层增加了灵活性,因为并不是所有的调用都是灾难性的,因此给了调用方可以进行合理的判断和处理的机会;如果想要其他链那种出错就完全回滚的方式,那么可以在调用B出错后A也直接报错回滚A的变更。

对于Wasm的每一个指令和host函数都设置了对应的InstructionWeight。

runtime会准备一个gas(amount:u32)的计费函数,在Wasm合约上传后,立刻会对Wasm中的每一个函数进行计费函数的插入生成新的code。后续合约的执行都以新的code为准。

下一期我们将继续围绕Substrate的合约存储的收租机制、Wasm合约限制、合约对外部交易的接口等方面展开。

如有任何疑问,可通过research@ont.io联络我们。

来源:金色财经

标签:STOWASASMBSTSTONKSWASABI币PolkaSmithBST币

狗狗币价格热门资讯
NFT:以太先跌后涨 狗庄要玩多空双爆?_稳定币

ETH今日先跌后涨?狗庄又玩起了多空双爆?以太于凌晨收线之后开始暴跌,日内一直持续走跌,最低点位插针530低位,日内跌幅40余点,在下午4点收先后开始持续走升,暴力拉升40余点.

1900/1/1 0:00:00
BTC:马校长论币:12.10下午BTC行情分析_NFT

前言:合约没有方向,是被大海拍打的浪。方向没有导航,是进入虎口的羊,联系马校长,跟上操作,愿你不再迷茫,成为孤独的风中一匹狼.

1900/1/1 0:00:00
老A言币:12/9BTC白盘的一路下跌 午夜该如何进场以然明朗

--前言人生的轨迹不一定会按你喜欢的方式运行。有些事你可以不喜欢,但不得不做;有些人你可以不喜欢,但不得不交往。当遇到那些自己不喜欢却又无力改变的事情时,我们唯一能做的,就是忍耐.

1900/1/1 0:00:00
稳定币:rebase概念持续升温 算法稳定币具有神马神奇魔力?_REBASEAPY

要说目前市场上最热的题材是什么?当属rebase概念,特指算法稳定币板块。由于涨幅引发的财富效应,最近算法稳定币占据各大行业媒体和行情软件搜索栏的头版头条.

1900/1/1 0:00:00
VELO:晚报:12.9国际黄金、TD黄金市场行情走势分析_gate.io官网APP下载

    国际黄金行情分析:    黄金日线昨日再次收取一根带上影线的实体小阳柱,日线布林带已经连续收取5跟阳柱,之后行情有向下开口发展的趋势,上方阻力位在1875点位附近.

1900/1/1 0:00:00
NFT:比特币刘先生:12.9晚评简析_比特币

 大饼自上午见到18033低点后反弹修复,但是多次在18300上方遇阻;下午一波从18250附近直接跌破18000来到17650.

1900/1/1 0:00:00