木星链 木星链
Ctrl+D收藏木星链
首页 > Fil > 正文

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

作者:

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

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

01

概要

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

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

LayerZero:CEO Bryan Pellegrino推特账户被盗,请勿参与可疑活动:7月5日消息,跨链互操作性协议LayerZero官方表示,CEO Bryan Pellegrino的推特账户被盗,请勿点击任何可疑链接或参与可疑活动。如果有人可以与推特取得联系,请联络我们。[2023/7/5 22:18:22]

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

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

Coinbase CEO:计划未来一年内出售约2%所持股份,以资助科学研究和公司:金色财经报道,Coinbase CEO Brian Armstrong在社交媒体上表示,我热衷于加速科学和技术的发展,以帮助解决世界上的一些最大挑战。为了进一步做到这一点,我计划在未来一年内出售我持有的大约2%Coinbase股份,以资助科学研究和公司。

他还表示,为了避免疑问,我打算在很长一段时间内担任Coinbase的CEO,仍然看好加密货币和Coinbase。我完全致力于发展我们的业务和推进我们的使命,但我也很高兴能以不同的方式作出贡献。[2022/10/15 14:28:47]

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

金华市:数字人民币是金华全市深化金融改革的重要抓手:金色财经报道,金华市召开全市数字人民币工作推进会,总结前一阶段全市数字人民币试点工作推进情况,研究部署推进下步工作。会议强调,数字人民币作为数字金融时代重要的基础设施,是金华全市深化金融改革的重要抓手,有利于稳企纾困、降本增效,实现稳市场、稳增长、稳预期的效果。4月2日,人民银行总行公布新一批数字人民币试点城市,金华市作为承办2022年杭州亚运会的6个城市之一,纳入新的数字人民币试点测试地区。截至5月6日,金华市共开立数字人民币对公钱包3.47万个,个人钱包55.66万个,累计交易笔数15.85万笔,交易金额2392.91万元,线下可受理商户数2.44万户,走在浙江全省前列。(金华日报)[2022/5/16 3:19:31]

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联络我们。

来源:金色财经

标签:STOBSTASMWASStonkBaseBST币asm币价格最新价格人民币SWASH价格

Fil热门资讯
NFT:乾元解币:比特币午盘策略多空双杀共获利1080点利润

???乾元中午的时候发文就把一天的剧本给写好了,先空后多,比特币18250位置做空,最低点给到17650位置,空单最高是获利了600点利润.

1900/1/1 0:00:00
ETH:红日说币:12-10 晚间比特币行情分析及策略分享

BTC行情分析小时图分析,大饼今天白盘是震荡行情,凌晨2点K线最低来到18161附近遇支撑后反弹。早间7点最高来到18637附近遇阻后回落,目前K线来到18100附近运行.

1900/1/1 0:00:00
FAN:聚币Jubi Labs Live | Jubi Labs战略投资MW 对话分布式存储的未来

2020年12月9日15:00,JubiLabs对话MW联合发起人HowardFung,在JubiLabs直播间进行“JubiLabs战略投资MW,对话分布式存储的未来”的主题AMA.

1900/1/1 0:00:00
BASE:闻渊:#交易日记连载——12月9日周三以太坊走势解读和操作计划

点击此处添加图片说明文字以太坊在经过昨日晚间的震荡之后在早间终于破位,币价突破三角区间之后再次迅速下跌,在连续两波的下跌之后,下方形成双针探低,短期行情有见底反弹迹象.

1900/1/1 0:00:00
NFT:顶级NFT交易平台Terra Virtua代币TVK,即将在BitMax开启拍卖

进入到2020年以来,NFT市场逐渐的打开局面。早期NFT市场比如CryptoKitties等逐渐的勾勒出了一个NFT的轮廓,而与DeFi形成联动的比如MEME、DEGO、Decentralan.

1900/1/1 0:00:00
SHI:雄哲说币:午间行情一直在持续震荡看空还是看是多?

比特币于昨日下午开启了回调之旅,在今日凌晨更是暴跌八百多个点,K线直接跌破4小时级别布林带下轨,空头情绪浓重,目前在18100附近震荡.

1900/1/1 0:00:00