eos合约开发教程2——跨越不同版本合约代码的鸿沟

聆嘉, 王 2019-07-22

由于区块链透明公开的特性,很多项目方都开源了自己的非核心合约代码,合约本身的阅读对于有经验的技术人员来说并不是难事。但是github上很多开源的合约代码看起来跟官方示例差别很大,而且也无法编译运行,更别说修改了。

其实根本的原因是eos的两次重大更新,修改和删除了很多预定义宏,

这两次更新分别是1.2->1.3和1.5->1.6。

1.2升级1.3的主要修改

删除N(foo)宏,修改为”foo”n或name(“foo”)

删除S(4,SYS),修改为symbol(“SYS”,4)或symbol(symbolcode(“SYS”),4)

修改 EOSIOABI 为EOSIODISPATCH

删除 symbol_name

删除 permission_name

删除 scope_name

删除 table_name

删除 action_name

新增 capi_name

删除 time 和 weight_type

删除 transaction_id_type 和 block_id_type

删除 require_read_lock 和 require_write_lock

删除 account_permission

更新checksum160 为 capi_checksum160

更新checksum256为 capi_checksum256

更新checksum512为 capi_checksum512

更新public_key 为 capi_public_key

更新signature 为capi_signature

1.5升级1.6

修改eosiolib头文件为eosio

更新 publication_time 为capi_signature

更新 publication_time 为 time_pointpublication_time()

更新 current_receiver 为name current_receiver()

更新 read_action_data 为 uint32_t read_action_data(void* msg, uint32_tlen)

更新 action_data_size 为 uint32_

以上仅列出源码层面的一些关键修改,具体修改可以参照1.2->1.3和1.5->1.6。

下期预告:multiindex 多索引数据库解析

发表评论

电子邮件地址不会被公开。 必填项已用*标注