Solidity

我們如何將唯一的雜湊 id 分配給在我們的乙太坊智能合約中創建的 id?

  • July 24, 2018

我正在使用 truffle、ganache 和 web3。我在部署智能合約時正在初始化智能合約中的使用者 ID。到目前為止,一切都由**帳戶完成$$ 0 $$**甘納許。

現在,我想要這樣的功能,如果## Heading ##I 在智能合約中創建任何使用者 ID,則必須為其分配由區塊鏈給出的唯一雜湊。

為此,我不知道如何將新創建的使用者集成到 ganache 的帳戶中。

有沒有其他方法可以做到這一點,或者有人有任何參考連結嗎?

您只需要一個addUser(name)添加新創建使用者的方法。

然後可以計算散列keccak256() 以生成bytes32散列。現在,這取決於您希望如何儲存它的案例。也許是使用者詳細資訊的結構或帶有uintid =>string雜湊的映射。

到目前為止,一切都由帳戶完成

$$ 0 $$甘納許。

是的,這是預設設置。如果您提到這一點,我想您只希望account[0]或契約部署者能夠添加使用者。在這種情況下,您只需要一個require(msg.sender==admin)管理員是在契約部署期間分配的人。

編輯

我又讀了你的問題。如果您認為契約上的每個使用者都將直接擁有一個映射帳戶.. 不!你需要解釋更多你想要達到的目標。

更新

在您發表評論後,您似乎需要為使用者分配地址。TestRPC/Ganache工作方式不同。

這些是您控制下的預設創建帳戶。您可以輕鬆地洩露帳戶的公共地址,但這並不能解決任何目的。為什麼?因為使用者應該有自己的私鑰來進行某種交易。

為此,這完全取決於現在。使用者應該並且應該創建自己的帳戶並給你公共地址。這個地址現在應該留在契約中。

但是,如果您仍然想這樣做並作為使用者的管理員,只需選擇一個帳戶,例如account[5]. account[5]將其放置在分配給 username的本地數據庫中(可選)123user。在合約中創建映射,呼叫函式分配地址。當您呼叫該函式時,只需傳遞地址account[5]和使用者名。休息一切隨之而來。

更好的方法是生成bip39/bip44錢包。

引用自:https://ethereum.stackexchange.com/questions/54917