Estoy usando Web3j para implementar e interactuar con un contrato en la cadena de bloques del consorcio de Azure.
Conexión al punto final RPC de la cadena de bloques del consorcio de Azure
Web3j web3 = Web3j.build(new HttpService("http://***.cloudapp.azure.com:8545"));
Desbloqueo de mi cuenta desde el archivo de mi billetera
Credentials credentials = WalletUtils.loadCredentials("mypassword", "path/to/mywallet");
Implementación de contrato desde el contenedor de contrato inteligente web3j
Future<MySmartContract> contract = MySmartContract.deploy(
web3,
credentials,
BigInteger.valueOf(700000),
BigInteger.valueOf(700000),
BigInteger.valueOf(0),
new Uint256(10000L));
Imprimir la dirección del contrato
System.out.println(contract.get().getContractAddress());
Debajo del capó, Web3j llamaría
"{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xa8b688bc982252bf514adf9ff0cf6eef73d6b5212fb69a7b2f80b281faefecc8"],"id":1}"
pero el resultado siempre sería"{"jsonrpc":"2.0","id":1,"result":null}[\n]"
Esencialmente, supongo que la transacción se envía a la cadena de bloques, pero la cadena de bloques no extrae esta transacción. He probado esto en Ethereum testnet y funciona. Me pregunto si existen herramientas de depuración o formas de monitorear la cadena de bloques del consorcio azul y las posibles soluciones a este problema.
Resulta que el precio de la gasolina era demasiado bajo (más grande que el número entero más grande). Luego comienza a extraer un contrato vacío, que resultó ser un límite de gas demasiado bajo.
¡Qué bueno que lograste encontrar una solución!
Geth ofrece prueba de autoridad ahora, lo que permite crear cadenas privadas sin prueba de trabajo. No es algo de mucho valor, pero creo que vale la pena mencionarlo. Lo elegimos sobre Azure para nuestra prueba de concepto en ethereum.
mijail vladimirov