Möglichkeit, auf den Mitgliedswert eines Vertrags von einem Knoten zuzugreifen, der von einem anderen Knoten erstellt wurde

Ich habe einen Vertragscode mit Getter- und Setter-Methode.

Ich habe eine Java-Hauptklasse geschrieben, die Folgendes getan hat

TransactionReceipt receipt = sendTxAndWait(new byte[0], Hex.decode(metadata.bin));
byte[] contractAddress = receipt.getTransaction().getContractAddress();
CallTransaction.Contract contract = new CallTransaction.Contract(metadata.abi);
CallTransaction.Function inc = contract.getByName("set");
byte[] functionCallBytes = inc.encode(123);
TransactionReceipt receipt1 = sendTxAndWait(contractAddress, functionCallBytes);

Eine andere Klasse mit unten:

TransactionReceipt receipt = sendTxAndWait(new byte[0], Hex.decode(metadata.bin));
byte[] contractAddress = receipt.getTransaction().getContractAddress();
CallTransaction.Contract contract = new CallTransaction.Contract(metadata.abi);

ProgramResult r = ethereum.callConstantFunction(Hex.toHexString(contractAddress), contract.getByName("get"));
Object[] ret = contract.getByName("get").decodeResult(r.getHReturn());
System.out.println("Current contract data member value: " + ret[0]);

ProgramResult r1 = ethereum.callConstantFunction("823555f52655029e4269ccc8de2bf5d5b83936a8", contract.getByName("get"));
Object[] ret1 = contract.getByName("get").decodeResult(r1.getHReturn());
System.out.println("Executed contract data member value: " + ret1[0]);**

Diese beiden laufen in zwei verschiedenen JVMs. Das jetzt laufende zweite Programm gibt mir die folgende Ausgabe: Aktueller Vertragsdaten-Mitgliedswert: 0 Ausgeführter Vertragsdaten-Mitgliedswert: 123

Nun ist diese „ 823555f52655029e4269ccc8de2bf5d5b83936a8 “ die Vertragsadresse, die beim Erstellen des Vertrags durch die erste Java-Klasse aufgelöst wird.

Ist es also so, dass jeder Knoten, der auf einen Vertragsmitgliedswert zugreifen möchte, die Vertragsadresse kennen sollte. oder gibt es eine andere Möglichkeit, auf den Wert des Vertragsmitglieds im Ethereumj-Client zuzugreifen?

Antworten (1)

Derzeit gibt es keine andere Möglichkeit, auf einen Vertrag hinzuweisen als auf seine Adresse. Dies ist nicht einmal ein EthereumJ-Problem, sondern es funktioniert für die gesamte Ethereum Contract-Welt.
Vergleichen Sie eine Smart-Contract-Adresse mit einer IP-Adresse. Sie sind sowohl maschinenlesbar als auch verständlich, aber für Menschen nicht leicht zu bekommen. Daher deine Unsicherheit.
Im Allgemeinen interagieren Menschen über eine Webschnittstelle über den Mist Browser, Metamask oder web3js mit einem Smart Contract. Dies bedeutet, dass sie die Vertragsadresse nicht kennen müssen, da sie in die Webseite codiert ist. Ich halte einen Domain-Namensdienst für Verträge für eine nützliche Sache, und ein intelligenter Vertrag, der dies tut, ist sicherlich ein Prototyp.