Ejecuto el siguiente código contra dos cadenas de bloques privadas, parity-aura y geth-clique. ¿Por qué la transacción de paridad se revierte y por qué usa 6,000,000 de gas cuando en realidad solo debería usar alrededor de 44709 de gas?
Código JS
contract = new web3.eth.Contract(KVStoreABI);
contract.options.address = contractAddress;
tx = contract.methods.set("hello", "world");
tx.send({ "from": fromAddress })
.once('transactionHash', function (hash) {
console.log("TX RECEIVED:", hash)
})
.once('receipt', function (receipt) {
console.log("RECEIPT:\n", receipt)
})
.on('error', function (error) {
console.log("ERROR\n:", error)
})
.then(function (receipt) {
console.log("TX MINED:", receipt.transactionHash)
});
kvstore.sol
pragma solidity ^0.5.7;
contract KVstore {
mapping(string=>string) public store;
function get(string memory key) public view returns(string memory) {
return store[key];
}
function set(string memory key, string memory value) public {
store[key] = value;
}
}
Paridad-Aura
Contract at: 0xd653D36C16c01dC6c0802B571Bb4B129A2Cb2CD7
Sending 1txs...
TX RECEIVED: 0x0d5e8b19a8706bf2f1e1c46e35081353e140d5a0b608c0b65aae6225cd41a8b3
(node:29273) UnhandledPromiseRejectionWarning: Error: Transaction has been reverted by the EVM:
{
"blockHash": "0xa1ef20cfdb0790d3fa00420cd892e7cfd59e013c45cd794d0766f8f076e54ff6",
"blockNumber": 20,
"contractAddress": null,
"cumulativeGasUsed": 6000000,
"from": "0x933e73c3f959759c169effa4019c8faf7d05ce33",
"gasUsed": 6000000,
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"root": null,
"status": false,
"to": "0xd653d36c16c01dc6c0802b571bb4b129a2cb2cd7",
"transactionHash": "0x0d5e8b19a8706bf2f1e1c46e35081353e140d5a0b608c0b65aae6225cd41a8b3",
"transactionIndex": 0,
"events": {}
}
at /home/ubuntu/node_modules/web3-core-method/src/index.js:412:37
at processTicksAndRejections (internal/process/task_queues.js:93:5)
Camarilla Geth
Contract at: 0x4032E20ea7bb7F1F9dA448D661B3B27EcbCa9DFd
Sending 1txs...
TX RECEIVED: 0x0d7766a5eab1fa3220c9401dc74444360653932fa467941b3e38e033aca132ad
RECEIPT:
{
blockHash: '0x177e9d9c12bdfc8cfa895e7bc545e801baca1310e2637637d9dd3afd8a31e063',
blockNumber: 326,
contractAddress: null,
cumulativeGasUsed: 44709,
from: '0x933e73c3f959759c169effa4019c8faf7d05ce33',
gasUsed: 44709,
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
status: true,
to: '0x4032e20ea7bb7f1f9da448d661b3b27ecbca9dfd',
transactionHash: '0x0d7766a5eab1fa3220c9401dc74444360653932fa467941b3e38e033aca132ad',
transactionIndex: 0,
events: {}
}
TX MINED: 0x0d7766a5eab1fa3220c9401dc74444360653932fa467941b3e38e033aca132ad
Tengo entendido que con la llegada de la bifurcación de Constantinopla y San Petersburgo, el código EVM cambió y que los contratos compilados con versiones de Solidity 0.5.5 y superiores solo son compatibles con redes que ejecutan Constantinopla/San Petersburgo.
Compilé el contrato con solidity 0.5.0 y resolvió el problema, ¡ejecutándose para ambas implementaciones ahora!
buena vibración
0x933e73c3f959759c169effa4019c8faf7d05ce33
está desbloqueada en su red Geth-Clique pero no en su red Parity-Aura...senju