我們如何將唯一的雜湊 id 分配給在我們的乙太坊智能合約中創建的 id?
我正在使用 truffle、ganache 和 web3。我在部署智能合約時正在初始化智能合約中的使用者 ID。到目前為止,一切都由**帳戶完成$$ 0 $$**甘納許。
現在,我想要這樣的功能,如果## Heading ##I 在智能合約中創建任何使用者 ID,則必須為其分配由區塊鏈給出的唯一雜湊。
為此,我不知道如何將新創建的使用者集成到 ganache 的帳戶中。
有沒有其他方法可以做到這一點,或者有人有任何參考連結嗎?
您只需要一個
addUser(name)
添加新創建使用者的方法。然後可以計算散列
keccak256()
以生成bytes32
散列。現在,這取決於您希望如何儲存它的案例。也許是使用者詳細資訊的結構或帶有uint
id =>string
雜湊的映射。到目前為止,一切都由帳戶完成
$$ 0 $$甘納許。
是的,這是預設設置。如果您提到這一點,我想您只希望
account[0]
或契約部署者能夠添加使用者。在這種情況下,您只需要一個require(msg.sender==admin)
管理員是在契約部署期間分配的人。編輯
我又讀了你的問題。如果您認為契約上的每個使用者都將直接擁有一個映射帳戶.. 不!你需要解釋更多你想要達到的目標。
更新
在您發表評論後,您似乎需要為使用者分配地址。
TestRPC/Ganache
工作方式不同。這些是您控制下的預設創建帳戶。您可以輕鬆地洩露帳戶的公共地址,但這並不能解決任何目的。為什麼?因為使用者應該有自己的私鑰來進行某種交易。
為此,這完全取決於現在。使用者應該並且應該創建自己的帳戶並給你公共地址。這個地址現在應該留在契約中。
但是,如果您仍然想這樣做並作為使用者的管理員,只需選擇一個帳戶,例如
account[5]
.account[5]
將其放置在分配給 username的本地數據庫中(可選)123user
。在合約中創建映射,呼叫函式分配地址。當您呼叫該函式時,只需傳遞地址account[5]
和使用者名。休息一切隨之而來。更好的方法是生成
bip39
/bip44
錢包。