本期我们分享来自本体技术团队的一篇文章的第一部分,关于Substrate的合约机制分析。
01
概要
Substrate把整个程序逻辑分为Host和Runtime部分,Host功能是固定的,偏向于底层,是采用原生执行的方式,而Runtime部分是动态的,偏上层业务,编译成Wasm字节码,这样可以随时升级,其执行在Wasm虚拟机中。合约功能作为上层业务,放置在runtime中,由contractpallet模块负责。通过分析本文主要要搞清楚两个问题:
1.合约设计的经济模型:交易执行收费和存储租金机制;
本体联合创始人季宙栋:区块链将成为Web3.0的基础设施:金色财经现场报道,7月6日,由杭州市余杭区政府指导,杭州未来科技城管委会、巴比特主办的2020杭州区块链国际周在杭州举办。在主题为《Web3.0:人人都来打造一个美丽新世界》的圆桌上,本体联合创始人季宙栋表示,Web3.0是Web2.0自然的进化,是解决下一时代的需求,帮助人与AI协作起来。在Web3.0时代,区块链将成为其基础的设施,帮助个人在公开透明的环境里实现身份数字化,资产数字化。[2020/7/6]
2.合约的执行机制:本身跑在Wasm虚拟机里的runtime里是怎么跑用户Wasm合约的。
本体已完成与Chainlink的原生集成:公有链平台本体(Ontology)宣布已完成与去中心化预言机Chainlink的原生集成。本体表示在集成Chainlink之后,智能合约能够安全地访问链外数据源、webAPI和传统银行支付。另外,本体已向Chainlink代码库提交了关键代码,将Chainlink合约用本体原生支持的Python智能合约编程语言重新编写。目前,该项技术已在测试网上线,本体开发者能够基于此构建与实体应用相连接的智能合约。[2020/6/22]
Runtime的contractpallet扩展了Currencytrait的账户系统,因此可以和其他基于Currency实现账户系统的模块一起使用。扩展的合约账户具有实例化合约和调用其他合约和非合约账户的功能。
现场 | ONTology本体主网将于6月30日发布 :金色财经现场报道,6月26日在圣何塞会议中心举行的Blockchain Connect会议上,本体创始人李俊宣布,ONTology本体主网即将在6月30日上线。李俊表示,目前公链的挑战主要由性能问题和场景两方面组成。解决方案为建立公共服务链、高性能的区块链架构和协议组。本体则致力于建立新架构的公链,分布式的信任生态平台。李俊介绍了本体的区块链网络愿景和信任生态愿景,宣布2018年6月30日主网预上线,具体介绍了本体1.0将在基础设施、模块和协议、常用应用等方面进行全面建设的具体情况。为了支持开发社区,本体推进计划(OEP,Ontology Enhancement Proposal)将为开发者群组提供1亿ONT。[2018/6/27]
为了合约代码的复用,将合约代码的上传部署和合约账户的实例化分成两部分,多个合约账户可以从同一份上传的code进行实例化。
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联络我们。
来源:金色财经
随着DeFi领域的不断发展和拓新,用户对DeFi保险的需求与日俱增。近来,基于以太坊的DeFi保险协议CoverProtocol受到颇多的关注,今天就带大家来了解CoverProtocol到底是.
1900/1/1 0:00:00BTC昨日在跌至30日均线后随即反弹,短线走出了一波反弹的走势,现日内反弹3.4%,币价涨至18450。走势还是很强势.
1900/1/1 0:00:00大家好,我是紫狮财经CEO,Hyrik老师。昨天的文章咱们清楚的分析了,短期的比特币已经处于高位震荡横盘区间了.
1900/1/1 0:00:00从比特币赚钱到比特币财务自由,简单,也不简单,简单在于牛市来了,你敢1万保证金50倍合约梭哈,不简单在于贪婪。仅仅是利用比特币赚钱,不是很容易,我曾经在浮盈51万的情况下爆仓,亏掉了15w本金.
1900/1/1 0:00:00欢迎回到最新一期的Serum简报!步入2020年的最后一个月,我们对能为Serum生态系统的某些意义非凡、影响深远的发展奠定基础感到异常兴奋.
1900/1/1 0:00:00行情分析: 比特币日内行情冲高回落,高点触及19300一线,虽然随后多次试探,但是可惜并未进一步突破.
1900/1/1 0:00:00