forma de acceder al valor de miembro de un contrato desde un nodo creado por otro nodo

Tengo un código de contrato que tiene método getter y setter.

He escrito una clase principal de Java que hizo lo siguiente

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);

Otra clase que tiene a continuación:

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]);**

Estos dos se ejecutan en dos JVM diferentes. ahora ejecutando el segundo programa me da un resultado como el siguiente: Valor actual del miembro de datos del contrato: 0 Valor del miembro de datos del contrato ejecutado: 123

Ahora, este " 823555f52655029e4269ccc8de2bf5d5b83936a8 " es la dirección del contrato resuelta al crear el contrato por primera clase de Java.

Entonces, es así, cada nodo que desee acceder a un valor de miembro del contrato debe conocer la dirección del contrato. ¿O hay alguna otra forma de acceder al valor del miembro del contrato en el cliente ethereumj?

Respuestas (1)

Actualmente no hay otra forma de referirse a un contrato que por su dirección. Esto ni siquiera es un problema de EthereumJ, pero es la forma en que funciona para todo el mundo de Ethereum Contract.
Compare una dirección de contrato inteligente con una dirección IP. Ambos son legibles por máquina y comprensibles, pero no son fáciles de obtener para los humanos. Por eso su incertidumbre.
En general, los humanos interactuarán a través de una interfaz web a través de Mist Browser, Metamask o web3js con un contrato inteligente. Esto significa que no necesitan saber la dirección del contrato ya que está codificada en la página web. Dicho esto, considero que un servicio de nombres de dominio para contratos es algo útil y un contrato inteligente que hace esto ciertamente es un prototipo.