Actualmente estoy tratando de implementar un contrato inteligente con código de bytes en una cadena privada de Ethereum, utilizando la cadena "dev" del cliente de paridad. Para ello, compilé el siguiente contrato:
pragma solidity ^0.4.11;
contract MyContract {
uint i = (10 + 2) * 2;
}
con solidez:
solc --bin test.sol
======= test.sol:MyContract =======
Binary:
608060405260186000553480156014576
00080fd5b5060358060226000396000f3006080604052600080fd00a165627a7a72305820d0cc3f28b74510b6f3f34e1a1e1303c584b355320f387a3e30022117e3554e220029
Luego usé la siguiente llamada rpc para crear la transacción:
Request: {"method": "personal_sendTransaction", "id": 1, "jsonrpc": "2.0", "params": [{"from": "0x0053b6a9527c2ba72cf44486dd12d9930ce25bae", "data": "0x60806040526018600055348015601457600080fd5b5060358060226000396000f3006080604052600080fd00a165627a7a72305820d0cc3f28b74510b6f3f34e1a1e1303c584b355320f387a3e30022117e3554e220029"}, "test"]}.
donde 0x0053b6a9527c2ba72cf44486dd12d9930ce25bae
hay una cuenta en la cadena privada que tiene ether y la frase de contraseña test
.
Esta es la respuesta que obtengo:
Response: {"jsonrpc":"2.0","result":"0xf547c28a3f51c05832fadd4b807f5bb769196970d08e446b2644a2ea94359572","id":1}.
Pero la cadena de bytes dada result
no es una dirección válida. ¿Cómo obtengo la dirección del contrato que creé?
El resultado que obtuvo es el "hash de transacción" ( tx ), que luego puede pasar a una llamada "eth_getTransactionReceipt" para obtener la dirección real del contrato.
Consulte https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionreceipt
// Example Call / Request
curl -X POST --data'{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}'
// Result
{
"id":1,
"jsonrpc":"2.0",
"result": {
transactionHash: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238',
transactionIndex: '0x1', // 1
blockNumber: '0xb', // 11
blockHash: '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b',
cumulativeGasUsed: '0x33bc', // 13244
gasUsed: '0x4dc', // 1244
contractAddress: '0xb60e8dd61c5d32be8058bb8eb970870f07233155', // or null, if none was created
logs: [{
// logs as returned by getFilterLogs, etc.
}, ...],
logsBloom: "0x00...0", // 256 byte bloom filter
status: '0x1'
}
}