Was ist der beste Weg, um Benutzerdaten in Smart Contracts zu speichern? Angenommen, wir haben eine Anzahl von Benutzern und möchten jeden Benutzernamen und seine anderen Details speichern. Sollten wir dann für jeden Benutzer einen Smart Contract erstellen müssen?
Erstellen Sie eine Struktur wie folgt:
struct User {
uint256 id;
bytes32 name;
// other stuff
bool set; // This boolean is used to differentiate between unset and zero struct values
}
Und erstellen Sie eine Zuordnung:
mapping(address => User) public users;
Sie können auch andere Werte als Index verwenden, aber dies dient nur der Demonstration.
Um nun einen Benutzer zu erstellen, verwenden Sie eine Funktion wie diese:
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
});
}
Und fertig!
BEARBEITEN Wie Sie in den Kommentaren angegeben haben, möchten Sie den Hash der Benutzerinformationen in einem Smart Contract speichern. Das ist noch einfacher: Speichern Sie einfach die Hashes in einem Mapping.
Dies ist die Zuordnung, die Sie zum Speichern der Hashes verwenden:
mapping(uint256 => bytes32) public userDataHashes;
Jetzt wird die Funktion zum Festlegen eines Hashs für eine Benutzer-ID wie folgt:
function storeUserDataHash(uint256 _userId, bytes32 _dataHash) public {
userDataHashes[_userId] = _dataHash;
}
Lauri Peltonen
Henk
Anubhav Gupta
Henk
Anubhav Gupta
Henk
bytes32 currentUserHash = userDataHashes[currentUsersId]
. Oder in web3.js:theContract.userDataHashes(currentUsersId)