有些时候,由于前期考虑不周,或者后期设计升级,导致合约table字段需要增加,或者类型需要更改,所以需要数据迁移,下面举例我常用的升级方法假设目前合约内有个tablexxxinfo
struct]xxxinfo{uint64_tid;uint64_ttest;//为测试添加的字段uint8_ttest1;//为测试添加的字段autoprimary_key()const{returnid;}};typedefeosio::multi_index<"xxxinfo"_n,xxxinfo>xxxinfo_tables;
现在升级需要解决的问题是test当初设计字段类型过大,导致ram浪费,test1选型过小,增加test2字段{uint32_t}.
以太坊技术服务商 OpenZeppelin 发布 Optimism 智能合约审计报告:11月25日消息,以太坊技术服务商 OpenZeppelin 发布 Optimism 智能合约审计报告。从 2021 年 3 月 15 日开始,OpenZeppelin 在 7 周的时间里与 3 位审计师一起审计了 Optimism 的代码库,共发现 4 个严重和 4 个高度严重的问题,并提出修改建议以减少代码的攻击面和提高其整体质量,Optimism 团队已承认或修复所有严重问题,代码已迁移到新存储库。[2021/11/25 7:10:27]
在合约中增加新的表结构xxxinfo1及其对象,并修正上面问题
Meerkat事件更新:官方开发者称为帮助用户认识智能合约危险,邀请黑客进行攻击:Meerkat Finance开发者表示,为了帮助用户认识到智能合约的潜在危险,Meerkat邀请黑客攻击漏洞,盗取超过7.3万枚BNB和1400万BUSD。开发者表示,这仅是一个实验,Meerkat将做数据更新和实施智能合约支付用户。[2021/3/6 18:21:14]
struct]xxxinfo1{uint64_tid;uint32_ttest;//为测试添加的字段uint16_ttest1;//为测试添加的字段uint32_ttest2;//为测试添加的字段autoprimary_key()const{returnid;}};typedefeosio::multi_index<"xxxinfo1"_n,xxxinfo1>xxxinfo1_tables;
Nervos宣布联合Cardano技术开发公司IOHK,以打造更安全的智能合约:据官方消息,公链项目Nervos宣布与全球区块链公司、Cardano区块链的技术开发公司IOHK达成长期合作关系,共同致力于降低智能合约给不断增长的DeFi 领域带来的安全风险。在合作的第一阶段,双方将围绕UTXO模型和智能合约进行联合研究,为其它基于UTXO模型的区块链开发改良版框架,使其成为比以太坊账户模型更安全、可扩展的替代方案。
为了进一步推动UTXO模型的发展,Nervos和IOHK将共同撰写有关该主题的研究论文,开源未来的UTXO进展,并探索UTXO模型通用标准的制定;并与其它基于UTXO的主流区块链组成全球UTXO联盟,以促进研究、开发、教育等领域的全行业协作。[2020/12/16 15:20:33]
此时合约内同时存在xxxinfo1和xxxinfo1两张表.
历史上的今天丨苏黎世联邦理工学院开发以太坊智能合约扫描仪:2019年7月14日,游说公司Blockchain Association的Kristin Smith透露称,美国国会对Libra的听证会可能将会集中在Libra具体定义和监管、如何应对系统性风险及隐私安全问题。美国国会工作人员正考虑检查Libra是否符合证券、股票衍生品或ETF的定义,以及Libra如何获得保障,如何防止和应对其带来的经济系统性风险问题。同时Libra总部定为瑞士日内瓦,也会让监管人员担心这会限制美国对该项目的监管。Libra所带来的隐私问题也是大多数立法者的担忧。
2018年7月14日,苏黎世联邦理工学院的研究人员开发了一个以太坊智能合约扫描仪,用以检查智能合约是否存在漏洞、bug、或是其他潜在问题。这些研究人员包括Petar Tsankov博士,Hubert Ritzdorf博士,Martin Vechev教授和Arthur Gervais博士,他们都在系统安全方面拥有丰富的行业和学术经验,并且努力改进区块链智能合约。[2020/7/14]
增加迁移执行的action接口
//.hACTIONmigratexxx();//.cppvoidmigratexxx(){xxxinfo1_tablesxxxinfo1_table(_self,_self.value);xxxinfo_tablesxxxinfo_table(_self,_self.value);autoitr=xxxinfo_table.begin();while(itr!=xxxinfo_table.end()){xxxinfo1_table.emplace(_self,(auto&h){h.id=xxxinfo1_table.available_primary_key();h.test=itr->test;h.test1=itr->test1;});itr++;}}
停止Dapp,避免迁移期间数据改变,然后执行actioncleos-uhttps://api.eoslaomao.compushaction合约账户migratexxx'{}'-p合约账户
如果数据较多,且数据是累计增长,可以分区间执行迁移,迁移过程中,可以不停止dapp,等迁移差不多追上旧表了,再暂停dapp,然后等数据全部迁移完.
修正合约中的新表为
struct]xxxinfo{uint64_tid;uint32_ttest;//为测试添加的字段uint16_ttest1;//为测试添加的字段uint32_ttest2;//为测试添加的字段autoprimary_key()const{returnid;}};typedefeosio::multi_index<"xxxinfo1"_n,xxxinfo>xxxinfo_tables;
将旧表修改为
struct]xxxinfo_bak{uint64_tid;uint64_ttest;//为测试添加的字段uint8_ttest1;//为测试添加的字段autoprimary_key()const{returnid;}};typedefeosio::multi_index<"xxxinfo"_n,xxxinfo_bak>xxxinfo_bak_tables;
修正前后端调用的table名,重新上线,并运行dapp,建议等运行一段时间,在删除旧表增加清理旧表的action
//.hACTIONclearxxxbak();//.cppvoidclearxxxbak(){xxxinfo_bak_tablesxxxinfo_bak_table(_self,_self.value);autoitr=xxxinfo_bak_table.begin();while(itr!=xxxinfo_bak_table.end()){itr=xxxinfo_bak_table.erase(itr);}}
然后执行actioncleos-upushaction合约账户clearxxxbak'{}'-p合约账户最后再删除合约内旧表及对象就完成了此次合约表升级过程。
高风险的山寨币也有很高的回报率。正因如此,它受到了追求快速收益的投资者的极大关注。引起我国加密货币投资者极大兴趣的SHIB已经跨过了一个重要的门槛.
1900/1/1 0:00:00MichaelPizzino昨天在推文中指出,比特币一周内第三次未能突破3.1万美元。该交易员预测,下一次挑战31,000美元可能会导致看涨突破.
1900/1/1 0:00:00柴犬目前在图表中以五个“零”进行交易,并且正在努力扩大指数规模。大多数投资者在SHIB上建仓,希望它能删除“零”并达到0.01美元大关.
1900/1/1 0:00:00如果你是一名软件工程师,拥有软件开发的经验。能知道从系统、架构角度学一个东西,其实能倍增学习效果。如果有一周的空闲时间。好了,下面开始就不再是废话了.
1900/1/1 0:00:00市场情报平台Santiment(@santimentfeed)今天早上在Twitter上分享了一篇关于过去24小时比特币(BTC)表现的帖子.
1900/1/1 0:00:00在价格斗争中,链上指标显示比特币和以太坊的交易量已经枯竭。BTC交易量已从超过400亿美元的交易额下跌到略高于114亿美元,而ETH交易量从近200亿美元下跌到约46亿美元.
1900/1/1 0:00:00