Solidity
將使用者詳細資訊添加到智能合約
在智能合約上儲存使用者數據的最佳方式是什麼?假設我們有 n 個使用者並且我們想要儲存每個使用者名和他的其他詳細資訊,我們是否必須為每個使用者單獨創建一個智能合約?
像這樣創建一個結構:
struct User { uint256 id; bytes32 name; // other stuff bool set; // This boolean is used to differentiate between unset and zero struct values }
並創建一個映射:
mapping(address => User) public users;
您也可以使用其他值作為索引,但這只是為了展示。
現在,要創建使用者,請使用如下函式:
function createUser(address _userAddress, uint256 _userId, bytes32 _userName) public { User storage user = users[_userAddress]; // Check that the user did not already exist: require(!user.set); //Store the user users[_userAddress] = User({ id: _userId, name: _userName, set: true }); }
並做了!
編輯 正如您在評論中所說,您希望將使用者資訊的雜湊儲存在智能合約中。那更簡單:只需將雜湊儲存在映射中。
這是您用來儲存雜湊的映射:
mapping(uint256 => bytes32) public userDataHashes;
現在,為使用者 ID 設置雜湊的函式變為:
function storeUserDataHash(uint256 _userId, bytes32 _dataHash) public { userDataHashes[_userId] = _dataHash; }