火星链 火星链
Ctrl+D收藏火星链
首页 > PEPE > 正文

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

作者:

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

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

01

概要

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

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

0x73b地址将8052万SAND转入CEX:金色财经报道,据链上分析师余烬监测,6 小时前,0x73b 地址将 8052 万 SAND(3244万美元) 转入 CEX,其中:

? 7000万SAND转入Binance

? 1000万SAND转入OKX

? 52.9万SAND转入Gemini

0x73b地址的SAND全部来源于The Sandbox: Genesis地址的解锁分配,最近一次是在7天前从Genesis接收到6000万SAND。[2023/8/11 16:19:31]

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

价值约1.8亿美元比特币从Gemini转出至未知钱包:金色财经报道,Whale Alert数据显示,11703BTC(价值约1.8亿美元)于今日07:09从Gemini转出至未知钱包。[2022/11/22 7:54:05]

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

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

美国各州在熊市中重新考虑加密纳税:金色财经报道,除科罗拉多州和犹他州外,美国各州正在重新考虑因熊市价格而允许纳税。美国共有 37 个州,尤其是乔治亚州、亚利桑那州和佛罗里达州,一直在效仿科罗拉多州和犹他州,将加密货币纳税合法化。游说者也一直在尽自己的一份力,因为他们推动立法者就加密税的支付进行辩论。

据报道,佛罗里达区块链商业协会主席塞缪尔·阿姆斯(Samuel Armes)表示,许多州都对允许以加密货币纳税以表明它们对加密货币友好很感兴趣。通过允许这些付款,他们还能够吸引新一波技术和人才。(cryptoslate)[2022/7/7 1:56:11]

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

来源:金色财经

标签:STOWASSANDBSTonston币价格WasabiXPlanet SandboxBSTV2币

PEPE热门资讯
2020做火的挖矿项目:IPFS是小本赚钱的商机!

在协议试验室的规划中,Filecoin将来可能和IPFS集成,彼此之间共同发展。做为个人,我们在应用市面上所谓的储存应用时,有很多大家觉得是理所应当的事儿.

1900/1/1 0:00:00
数字货币:金融时报:多国探路数字货币

编者按专家表示,在数字经济高速发展的背景下,数字货币将是未来最重要的金融基础设施之一。金融科技已经推动数字货币、支付清算体系内生发展.

1900/1/1 0:00:00
OPP:逸戈谈币:12.10午间行情分析和操作策略

  逸戈谈币:12.10午间行情分析和操作策略  机会都是在反对声中萌芽,议论声中爆发,叫好声中幻灭.

1900/1/1 0:00:00
COI:代姗姗专访浪潮存储叶毓睿:从数据安全方面区块链存储如何能让用户愿意付费?

随着分布式存储本身的优势越来越明显、技术越来越成熟,经过与IPFS、Filecoin体系的结合,已经有越来越多的应用的方式和体系.

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

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

1900/1/1 0:00:00
RED:为“Eye?爱”助跑 视觉2020线上马拉松已经开启

眼睛是心灵的窗户,视力损伤严重影响人们的身心健康和生活质量。12月10日,为“Eye·爱”助跑-视觉2020线上爱眼马拉松正式启动。我国是世界上盲和视力损伤人数最多的国家之一.

1900/1/1 0:00:00