Ich habe eine Anwendung, in der ich jede Benutzerinformation in einen anderen Block einfügen muss, um die eindeutige Adresse des Blocks zu erhalten. Muss ich jedes Mal einen Vertrag bereitstellen, wenn ich neue Benutzerinformationen hinzufüge?
Ok, Sie wollen also einen Werksvertrag. Sie könnten es so machen, aber ich schlage trotzdem vor, dass Sie ein Mapping verwenden.
Stellen Sie zuerst den UserFactory
Vertrag bereit. Rufen Sie jedes Mal auf, wenn Sie neue Benutzerinformationen speichern möchten createUser
. Es gibt das Ereignis aus UserCreated
, das den Index enthält, unter dem der Benutzer gespeichert wurde.
pragma solidity ^0.4.22;
contract User {
uint256 public id;
bytes32 public name;
uint8 public age;
constructor( uint256 _id, bytes32 _name, uint8 _age) public {
name = _name;
id = _id;
age = _age;
}
}
contract UserFactory {
User[] public users;
function createUser(uint256 _id, bytes32 _name, uint8 _age) external {
User user = new User(_id, _name, _age);
emit UserCreated(user, users.length);
users.push(user);
}
event UserCreated(User user, uint256 index);
}
Anubhav Gupta
Henk
Anubhav Gupta
Henk