我正在玩一個私有的以太坊區塊鏈,我對實施一些智能合約很感興趣。但是,信息非常有限,因為這是區塊鏈的較新實現。舉個例子,假設我想要一份包含個人信息的合同。為每個人創建一個新合約,還是簡單地在同一個合約中保存所有用戶的信息,是否更有效?在偽代碼中,這兩個選項如下所示。選項 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個贊
是的。但是,每次您想要添加用戶時,您都必須發送一個交易來向現有合約添加新記錄。
區塊由交易組成。每次添加用戶時,都必須為相應的函數調用創建一個事務。但是,您只需執行此操作一次,并且不會將數據冗余復制到未來的塊中。
是的。
從您的問題的結構來看,您似乎應該再次閱讀交易和塊之間的區別。

慕田峪4524236
TA貢獻1875條經驗 獲得超5個贊
考慮到您的用戶對象不是太大,所有用戶的單一合同就足夠了。
從上面的代碼中,建議使用 amap
比數組更有效地獲取用戶記錄。按任何字符串鍵入記錄,例如名字+姓氏。
mapping(string => user_struct) public users;
- 2 回答
- 0 關注
- 174 瀏覽
添加回答
舉報
0/150
提交
取消