有些時候,由于前期考慮不周,或者后期設計升級,導致合約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}.
德國Auto1 FinTech推出歐洲區塊鏈汽車融資智能合約:10月7日消息,Auto1 FinTech正在取消其核心業務汽車融資中的所有手動輸入和紙質流程,其與融資汽車相關的所有文件、文件和流程都將基于智能合約,通過智能合約最大限度地提高數據安全性和效率,并將汽車融資所涉及的總支出和文件減少到最低限度,這些智能合約包含車輛所有相關信息和流程。
Auto1 Fintech為二手車市場提供快速簡便的數字融資解決方案。該公司宣布的目標是為移動的所有領域提供創新融資和支持。Auto1 FT成立于2017年底,目前在德國和法國開展業務,總部位于柏林和阿姆斯特丹。[2021/10/7 20:11:00]
在合約中增加新的表結構xxxinfo1及其對象,并修正上面問題
InsurAce開始為杠桿挖礦平臺Alpaca Finance的資金池提供智能合約安全相關保險服務:9月16日消息,DeFi保險協議InsurAce宣布與杠桿挖礦平臺Alpaca Finance達成戰略合作,為其平臺的資金池提供智能合約安全相關保險服務。Alpaca Finance用戶通過InsurAce購買相關保險以保護其資產免受智能合約漏洞的影響,年保費率為2.5%。[2021/9/16 23:30:18]
struct]xxxinfo1{uint64_tid;uint32_ttest;//為測試添加的字段uint16_ttest1;//為測試添加的字段uint32_ttest2;//為測試添加的字段autoprimary_key()const{returnid;}};typedefeosio::multi_index<"xxxinfo1"_n,xxxinfo1>xxxinfo1_tables;
Meerkat事件更新:官方開發者稱為幫助用戶認識智能合約危險,邀請黑客進行攻擊:Meerkat Finance開發者表示,為了幫助用戶認識到智能合約的潛在危險,Meerkat邀請黑客攻擊漏洞,盜取超過7.3萬枚BNB和1400萬BUSD。開發者表示,這僅是一個實驗,Meerkat將做數據更新和實施智能合約支付用戶。[2021/3/6 18:21:14]
此時合約內同時存在xxxinfo1和xxxinfo1兩張表.
增加遷移執行的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++;}}
動態 | 區塊鏈服務提供商Kadena在AWS Marketplace上推出企業智能合約解決方案:區塊鏈平臺服務提供商Kadena已成功在亞馬遜AWS Marketplace上推出可擴展的企業智能合約解決方案,現在正在尋求擴展其覆蓋范圍,并在Microsoft Azure Marketplace 上免費提供類似服務。 (forbes)[2019/9/2]
停止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合約賬戶最后再刪除合約內舊表及對象就完成了此次合約表升級過程。
那是什么,為什么它很重要。 以太坊網絡的合并是開源軟件和Web3歷史上的一項重大成就。在大多數情況下,這種從能源密集型工作證明共識機制到能源密集度較低的股權證明機制的轉變因其提高了可持續性而受到.
1900/1/1 0:00:00盡管比特幣目前表現良好,但12月將出現更多沖擊,可能會給它帶來壓力。 比特幣暫時飆升至17,000美元,這主要是由于月底的波動.
1900/1/1 0:00:00在幣安拒絕繼續擬議的FTX收購之后,比特幣的價格跌至2年低點。隨著價格繼續下跌,鯨魚增加了增持。目前交易價格處于2年低點,FTX的潛在崩盤對領先的比特幣比特幣的影響不容小覷.
1900/1/1 0:00:00隨著以太坊合并的日期越來越近,準備工作處于高位。以太坊生態系統一直在為最終推出期待已久的升級付出了巨大的努力。此次升級將使以太坊主網從工作量證明(PoW)共識機制轉變為權益證明(PoS).
1900/1/1 0:00:00其實有好多程序員不知道怎么有高工作效率,在我看來保持高工作效率,主要有以下4個方面,希望在工作中能夠給大家多多少少的幫助.
1900/1/1 0:00:00去年,由于利率上升和幾個加密平臺崩潰,比特幣價格暴跌。到2023年,有幾種潛在的催化劑可能會使BTC價格飆升。 2022年對比特幣(BTC)和其他加密貨幣以及股市來說都不是好年頭.
1900/1/1 0:00:00