Vertrag für jeden Benutzer bereitstellen [Duplikat]

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?

Die von Ihnen vorgeschlagene Antwort passt nicht in meinen Fall. Ich muss für jeden Benutzer einen eindeutigen Block erstellen. Können Sie mir bitte einen guten Ansatz empfehlen, um das zu erreichen?
Was meinst du mit "blockieren"?
Ich meine eine eindeutige Adresse für jeden Benutzer, z. B. wenn wir einen Smart Contract bereitstellen, wird eine eindeutige Adresse des Vertrags zurückgegeben. Also, es ist ein Block für mich.
Ok, mit Block meinst du einen neuen Smart Contract

Antworten (1)

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 UserFactoryVertrag 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);
}
Entschuldigung Henke! Ich bin neu bei Ethereum, ich wusste nicht genau, was ich fragte. Ich finde nur heraus, wenn ich einen Vertrag bereitstelle und dann seine Methode mit send () aufrufe, erhalte ich als Antwort einen Blockhash, eine Blocknummer und eine Transaktions-ID. Wird für jede Transaktion, die ich ausführe, ein Block erstellt und Parameter, die ich an die Funktion übergebe, werden im neuen Block gespeichert, ohne vorherige Benutzerdaten zu überschreiben? Und wie kann man die auf diesen Blöcken gespeicherten Daten anzeigen? Was ist der Unterschied zwischen der Verwendung dieses Prozesses und dem, den Sie in Ihrer Antwort vorgeschlagen haben?
Vielleicht sollten Sie die Solidity-Dokumentation lesen, bevor Sie anfangen, etwas damit zu erstellen. Bitte lesen Sie auch, wie die Blockchain-Technologie tatsächlich funktioniert, da Sie anscheinend mit den Interna von Ethereum und der Ausführung von Smart Contracts nicht sehr vertraut sind. Vielleicht möchten Sie sich dieses Video über Blockchain und dieses Video über Smart Contracts ansehen
Okay. Danke schön. Das werde ich auf jeden Fall durchziehen. Aber in diesem Moment ist es irgendwie dringend für mich. Kannst du mir bitte helfen?
Ich füge jetzt eine Transaktion für jeden Satz neuer Daten hinzu und erhalte im Gegenzug die Transaktions-ID. Nun, wie kann ich meine gespeicherten Daten mit dieser Transaktions-ID sehen?