亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在以太坊區塊鏈上保存合約數據的更有效方式是什么?

在以太坊區塊鏈上保存合約數據的更有效方式是什么?

Go
蠱毒傳說 2021-11-29 15:49:34
我正在玩一個私有的以太坊區塊鏈,我對實施一些智能合約很感興趣。但是,信息非常有限,因為這是區塊鏈的較新實現。舉個例子,假設我想要一份包含個人信息的合同。為每個人創建一個新合約,還是簡單地在同一個合約中保存所有用戶的信息,是否更有效?在偽代碼中,這兩個選項如下所示。選項 1(為每個人實例化一個新合同):contract = // contract codeethereum.newContract(contract, userInfo);選項 2(在一份合約中保存所有用戶的信息):contract = {  var users = [];  // other contract code}ethereum.newContract(contract, userInfo);在這種情況下,我們可以通過以下方式量化“效率”:每次實例化新合約時,我們都必須為合約挖掘區塊,然后挖掘用戶對合約進行的任何交易。然而,如果我們只實例化一個合約,我們只挖掘合約部署一次,然后是之后的任何交易,但是......如果我們選擇將所有用戶的所有信息存儲在一個合約中,則只是將合約數據的“差異”(所有用戶的“數組”)存儲為一個塊,或者將整個數據集存儲在每個街區?或者...如果我們選擇“每個用戶的合同”選項,如果我們多次存儲整個合同定義,是否會“浪費空間”(是否值得進行可能的冗余挖掘)?希望我的問題很清楚,但如果沒有,請告訴我。我相信這個問題是“權衡”之一。(回復:標簽——我使用以太坊的 golang 實現,以及一個 JavaScript API 與之交互。)
查看完整描述

2 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

  1. 是的。但是,每次您想要添加用戶時,您都必須發送一個交易來向現有合約添加新記錄。

  2. 區塊由交易組成。每次添加用戶時,都必須為相應的函數調用創建一個事務。但是,您只需執行此操作一次,并且不會將數據冗余復制到未來的塊中。

  3. 是的。

從您的問題的結構來看,您似乎應該再次閱讀交易和塊之間的區別。


查看完整回答
反對 回復 2021-11-29
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

考慮到您的用戶對象不是太大,所有用戶的單一合同就足夠了。

從上面的代碼中,建議使用 amap比數組更有效地獲取用戶記錄。按任何字符串鍵入記錄,例如名字+姓氏。

mapping(string => user_struct) public users;


查看完整回答
反對 回復 2021-11-29
  • 2 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號