- Requirements
- Installation
- Pet Shop
- Start server
- Truffle
- ERC20 with QtumJS
- Interact with QtumJS
- Try to interact with contract
- Support ETH methods
- Known issues
Created by gh-md-toc
- Golang
- Docker
- linux commands:
make
,curl
- NodeJS
- Yarn
- Truffle
$ go get github.com/qtumproject/janus/...
$ cd $GOPATH/src/github.com/qtumproject/janus/playground
$ yarn install
cd playground
make run init-container deploy-contracts serve-pet-shop
# It will open http://localhost:3000 automatically
# Two prefund accounts you can login with:
# 0x7926223070547d2d15b2ef5e7383e541c338ffe9
# 0x2352be3db3177f0a07efbe6da5857615b8c9901d
# clean
make stop clean-qtum-data
$ make run
$ export ETH_RPC=http://0x7926223070547d2d15b2ef5e7383e541c338ffe9:@localhost:23889
it will init qtum wallet:
- import test wallet
- qUbxboqjBRp96j3La8D1RYkyqx5uQbJPoW (hex 0x7926223070547d2d15b2ef5e7383e541c338ffe9 )
- qLn9vqbr2Gx3TsVR9QyTVB5mrMoh4x43Uf (hex 0x2352be3db3177f0a07efbe6da5857615b8c9901d )
- fund two addresses above with uxtos
truffle migrate
$ truffle console
truffle(development)> exec "./truffle-test-simpleStore.js"
exec: store.get()
value: 100
exec: store.set(184)
receipt: { tx: 'ef3469b6473c700c5775ea22c8003b7b52d720a26af0108a2ef9e2684ee77c11',
receipt:
{ transactionHash: '0xef3469b6473c700c5775ea22c8003b7b52d720a26af0108a2ef9e2684ee77c11',
transactionIndex: 1,
blockHash: '0x5b276c69975588c9bcf6da3dd85187be6ff816d77d6a1bcc67f5a7cb169b79a1',
blockNumber: 633,
cumulativeGasUsed: 28604,
gasUsed: 28604,
contractAddress: '0xe2266d26dbb997f26327bf64f202061ce709e600',
logs: [ [Object] ],
logsBloom: '',
status: '0x1' },
logs:
[ { logIndex: 0,
transactionIndex: 1,
transactionHash: '0xef3469b6473c700c5775ea22c8003b7b52d720a26af0108a2ef9e2684ee77c11',
blockHash: '0x5b276c69975588c9bcf6da3dd85187be6ff816d77d6a1bcc67f5a7cb169b79a1',
blockNumber: 633,
address: '0xe2266d26dbb997f26327bf64f202061ce709e600',
event: 'UpdateValue',
args: [Object] } ] }
exec: store.get()
value: 184
truffle(development)> var token
truffle(development)> var acc1 = "0x7926223070547d2d15b2ef5e7383e541c338ffe9"
truffle(development)> var acc2 = "0x2352be3db3177f0a07efbe6da5857615b8c9901d"
truffle(development)> MyToken.deployed().then(function(i) { token = i })
truffle(development)> token.mint(acc1, 100)
{ tx: '7d310aa0bdc0532af9e5fceec296d0a45225dffb3214929f8889d0788de62f80',
receipt:
{ transactionHash: '0x7d310aa0bdc0532af9e5fceec296d0a45225dffb3214929f8889d0788de62f80',
transactionIndex: 1,
blockHash: '0x4735770fe79995cbfbe905241f305373733e310ae1b74d4bb49731930d909c66',
blockNumber: 638,
cumulativeGasUsed: 68569,
gasUsed: 68569,
contractAddress: '0xa6f433f17ceedaea685fbb9a5d0776c50c84a2cd',
logs: [ [Object], [Object] ],
logsBloom: '',
status: '0x1' },
logs:
[ { logIndex: 0,
transactionIndex: 1,
transactionHash: '0x7d310aa0bdc0532af9e5fceec296d0a45225dffb3214929f8889d0788de62f80',
blockHash: '0x4735770fe79995cbfbe905241f305373733e310ae1b74d4bb49731930d909c66',
blockNumber: 638,
address: '0xa6f433f17ceedaea685fbb9a5d0776c50c84a2cd',
event: 'Mint',
args: [Object] },
{ logIndex: 1,
transactionIndex: 1,
transactionHash: '0x7d310aa0bdc0532af9e5fceec296d0a45225dffb3214929f8889d0788de62f80',
blockHash: '0x4735770fe79995cbfbe905241f305373733e310ae1b74d4bb49731930d909c66',
blockNumber: 638,
address: '0xa6f433f17ceedaea685fbb9a5d0776c50c84a2cd',
event: 'Transfer',
args: [Object] } ] }
truffle(development)> token.balanceOf(acc1).then(function(res) { console.log(res.toNumber()) })
100
truffle(development)> token.transfer(acc2, 10, {from: acc1})
{ tx: '029cf6599a58df639e3a9a0db08aeaf57b06e7955756d6ed32548cbeca68cb48',
receipt:
{ transactionHash: '0x029cf6599a58df639e3a9a0db08aeaf57b06e7955756d6ed32548cbeca68cb48',
transactionIndex: 1,
blockHash: '0x7d2025a7339d8c0ba39a2c9fddf5b4abdc2df28c096897e1958af51c0243bb56',
blockNumber: 639,
cumulativeGasUsed: 51613,
gasUsed: 51613,
contractAddress: '0xa6f433f17ceedaea685fbb9a5d0776c50c84a2cd',
logs: [ [Object] ],
logsBloom: '',
status: '0x1' },
logs:
[ { logIndex: 0,
transactionIndex: 1,
transactionHash: '0x029cf6599a58df639e3a9a0db08aeaf57b06e7955756d6ed32548cbeca68cb48',
blockHash: '0x7d2025a7339d8c0ba39a2c9fddf5b4abdc2df28c096897e1958af51c0243bb56',
blockNumber: 639,
address: '0xa6f433f17ceedaea685fbb9a5d0776c50c84a2cd',
event: 'Transfer',
args: [Object] } ] }
truffle(development)> token.balanceOf(acc1).then(function(res) { console.log(res.toNumber()) })
90
truffle(development)> token.balanceOf(acc2).then(function(res) { console.log(res.toNumber()) })
10
$ sh deploy-myToken.sh
+ solar deploy contracts/MyToken.sol --gasPrice=0.0000001 '[21000000]' --force
exec: solc [contracts/MyToken.sol --combined-json bin,metadata --optimize --allow-paths /Users/bob/Documents/golangWorkspace/src/github.com/qtumproject/janus/playground]
cli gasPrice 0.0000001 1e-07
gasPrice 1e-07 100
gasPriceWei 100
txHash: 0x7e4a1297bf5337b75f221351acb9e0540f128e45257588d86079c4ec962c4e51
contractAddress: 0x60833fd66342d3d031031e4cc1de57a4cd400dd9
🚀 All contracts confirmed
deployed contracts/MyToken.sol => 0x60833fd66342d3d031031e4cc1de57a4cd400dd9
$ node myToken.js mint 0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19 100
mint tx: undefined
{ hash: '0x5ee0463596cf35c00363f10b5781499aa6693e0477965053b5537716e84113c6',
nonce: '',
blockHash: '0x',
blockNumber: '',
transactionIndex: '',
from: '',
to: '',
value: '0x0',
gasPrice: '0x64',
gas: '0x30d40',
input: '0x40c10f19000000000000000000000000cb3cb8375fe457a11f041f9ff55373e1a5a78d190000000000000000000000000000000000000000000000000000000000000064',
method: 'mint',
confirm: [Function: confirm] }
✔ confirm mint
tx receipt: {
"transactionHash": "0x5ee0463596cf35c00363f10b5781499aa6693e0477965053b5537716e84113c6",
"transactionIndex": "0x2",
"blockHash": "0xe7e8523ff95cd2f6663992e2c4e80d354fb20d1c67d6ffbbbb0c1448758f61a1",
"blockNumber": "0x353f",
"cumulativeGasUsed": "0x10bdc",
"gasUsed": "0x10bdc",
"contractAddress": "0x90f3e8062c8537ee4825fd384caef0260795f8df",
"logsBloom": "",
"status": "0x1",
"from": "0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19",
"to": "0x90f3e8062c8537ee4825fd384caef0260795f8df",
"logs": [
{
"amount": "64",
"to": "0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19",
"type": "Mint"
},
{
"value": "64",
"from": "0x0000000000000000000000000000000000000000",
"to": "0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19",
"type": "Transfer"
}
],
"rawlogs": [
{
"logIndex": "0x0",
"transactionIndex": "0x2",
"transactionHash": "0x5ee0463596cf35c00363f10b5781499aa6693e0477965053b5537716e84113c6",
"blockHash": "0xe7e8523ff95cd2f6663992e2c4e80d354fb20d1c67d6ffbbbb0c1448758f61a1",
"blockNumber": "0x353f",
"address": "0x90f3e8062c8537ee4825fd384caef0260795f8df",
"data": "0x0000000000000000000000000000000000000000000000000000000000000064",
"topics": [
"0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885",
"0x000000000000000000000000cb3cb8375fe457a11f041f9ff55373e1a5a78d19"
]
},
{
"logIndex": "0x1",
"transactionIndex": "0x2",
"transactionHash": "0x5ee0463596cf35c00363f10b5781499aa6693e0477965053b5537716e84113c6",
"blockHash": "0xe7e8523ff95cd2f6663992e2c4e80d354fb20d1c67d6ffbbbb0c1448758f61a1",
"blockNumber": "0x353f",
"address": "0x90f3e8062c8537ee4825fd384caef0260795f8df",
"data": "0x0000000000000000000000000000000000000000000000000000000000000064",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x000000000000000000000000cb3cb8375fe457a11f041f9ff55373e1a5a78d19"
]
}
]
}
$ node myToken.js balance 0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19
balance: 100
$ node myToken.js transfer 0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19 0xd66789418ca152f5720b1c8dd04e9ff2f3891f6f 5
transfer tx: undefined
{ hash: '0x0cfe192b3244bc0eb1089a72962d2f164156ff40bea46e160c74fc86b0403d9a',
nonce: '',
blockHash: '0x',
blockNumber: '',
transactionIndex: '',
from: '',
to: '',
value: '0x0',
gasPrice: '0x64',
gas: '0x30d40',
input: '0xa9059cbb000000000000000000000000d66789418ca152f5720b1c8dd04e9ff2f3891f6f0000000000000000000000000000000000000000000000000000000000000005',
method: 'transfer',
confirm: [Function: confirm] }
✔ confirm transfer
$ node myToken.js logs
[
{
"logIndex": "0x0",
"transactionIndex": "0x2",
"transactionHash": "0x5ee0463596cf35c00363f10b5781499aa6693e0477965053b5537716e84113c6",
"blockHash": "0xe7e8523ff95cd2f6663992e2c4e80d354fb20d1c67d6ffbbbb0c1448758f61a1",
"blockNumber": "0x353f",
"address": "0x90f3e8062c8537ee4825fd384caef0260795f8df",
"data": "0x0000000000000000000000000000000000000000000000000000000000000064",
"topics": [
"0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885",
"0x000000000000000000000000cb3cb8375fe457a11f041f9ff55373e1a5a78d19"
],
"event": {
"amount": "64",
"to": "0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19",
"type": "Mint"
}
},
{
"logIndex": "0x1",
"transactionIndex": "0x2",
"transactionHash": "0x5ee0463596cf35c00363f10b5781499aa6693e0477965053b5537716e84113c6",
"blockHash": "0xe7e8523ff95cd2f6663992e2c4e80d354fb20d1c67d6ffbbbb0c1448758f61a1",
"blockNumber": "0x353f",
"address": "0x90f3e8062c8537ee4825fd384caef0260795f8df",
"data": "0x0000000000000000000000000000000000000000000000000000000000000064",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x000000000000000000000000cb3cb8375fe457a11f041f9ff55373e1a5a78d19"
],
"event": {
"value": "64",
"from": "0x0000000000000000000000000000000000000000",
"to": "0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19",
"type": "Transfer"
}
},
{
"logIndex": "0x0",
"transactionIndex": "0x2",
"transactionHash": "0x0cfe192b3244bc0eb1089a72962d2f164156ff40bea46e160c74fc86b0403d9a",
"blockHash": "0x307c14f3a536b62e648566bec19f86270098a3d97d35f0d0cbaed4500150cb80",
"blockNumber": "0x3544",
"address": "0x90f3e8062c8537ee4825fd384caef0260795f8df",
"data": "0x0000000000000000000000000000000000000000000000000000000000000005",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x000000000000000000000000cb3cb8375fe457a11f041f9ff55373e1a5a78d19",
"0x000000000000000000000000d66789418ca152f5720b1c8dd04e9ff2f3891f6f"
],
"event": {
"value": "5",
"from": "0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19",
"to": "0xd66789418ca152f5720b1c8dd04e9ff2f3891f6f",
"type": "Transfer"
}
}
]
$ node myToken.js events
Subscribed to contract events
Ctrl-C to terminate events subscription
{ logIndex: '0x0',
transactionIndex: '0x2',
transactionHash: '0xe1e8afd1591bb4ef110fe4ddddf7de2bc1c04bbace3eb079cb95c8f8c5214729',
blockHash: '0xd4e8fcea409a82c303823faee8164a7e5e57531c8cf50d37082fd3c128fb1e62',
blockNumber: '0x3549',
address: '0x90f3e8062c8537ee4825fd384caef0260795f8df',
data: '0x0000000000000000000000000000000000000000000000000000000000000005',
topics:
[ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
'0x000000000000000000000000cb3cb8375fe457a11f041f9ff55373e1a5a78d19',
'0x000000000000000000000000d66789418ca152f5720b1c8dd04e9ff2f3891f6f' ],
event:
Result {
value: <BN: 5>,
from: '0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19',
to: '0xd66789418ca152f5720b1c8dd04e9ff2f3891f6f',
type: 'Transfer' } }
$ sh deploy-SimpleStore.sh
+ solar deploy ./contracts/SimpleStore.sol '["1"]' --gasPrice=0.0000001 --force
exec: solc [./contracts/SimpleStore.sol --combined-json bin,metadata --optimize --allow-paths /Users/bob/Documents/golangWorkspace/src/github.com/qtumproject/janus/playground]
cli gasPrice 0.0000001 1e-07
gasPrice 1e-07 100
gasPriceWei 100
txHash: 0x95472d05243864764211bd8c6d8110fa397bd045cff78d845c1250bdff789bc7
contractAddress: 0x6997a4803d75964b8d093a939c227a16833d23ad
🚀 All contracts confirmed
deployed ./contracts/SimpleStore.sol => 0x6997a4803d75964b8d093a939c227a16833d23ad
$ node test-SimpleStore.js
exec: await simpleStoreContract.call("get", [], {gasPrice: 100})
call { rawResult: '0x0000000000000000000000000000000000000000000000000000000000000001',
outputs: [ <BN: 1> ],
logs: [] }
exec: await simpleStoreContract.send("set", [82009999], {gasPrice: 100})
tx { hash: '0x23a0d715ef4fc2ce8bcf79bf1427e3fea6af38905efab9668672e693591f3ee4',
nonce: '',
blockHash: '0x',
blockNumber: '',
transactionIndex: '',
from: '',
to: '',
value: '0x0',
gasPrice: '0x64',
gas: '0x30d40',
input: '0x60fe47b10000000000000000000000000000000000000000000000000000000004e35f8f',
method: 'set',
confirm: [Function: confirm] }
exec: await tx.confirm(0)
receipt { transactionHash: '0x23a0d715ef4fc2ce8bcf79bf1427e3fea6af38905efab9668672e693591f3ee4',
transactionIndex: '0x2',
blockHash: '0x6b8273375b3a8dff6701c4151d03aa2e3211fbb3f2bea558d16a762fe0cd2b1a',
blockNumber: '0x2eaf',
cumulativeGasUsed: '0x702e',
gasUsed: '0x702e',
contractAddress: '0x6997a4803d75964b8d093a939c227a16833d23ad',
logsBloom: '',
status: '0x1',
from: '0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19',
to: '0x6997a4803d75964b8d093a939c227a16833d23ad',
logs:
[ Result {
from: '0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19',
_oldValue: <BN: 1>,
_newValue: <BN: 4e35f8f>,
type: 'UpdateValue' } ],
rawlogs:
[ { logIndex: '0x0',
transactionIndex: '0x2',
transactionHash: '0x23a0d715ef4fc2ce8bcf79bf1427e3fea6af38905efab9668672e693591f3ee4',
blockHash: '0x6b8273375b3a8dff6701c4151d03aa2e3211fbb3f2bea558d16a762fe0cd2b1a',
blockNumber: '0x2eaf',
address: '0x6997a4803d75964b8d093a939c227a16833d23ad',
data: '0x000000000000000000000000cb3cb8375fe457a11f041f9ff55373e1a5a78d190000000000000000000000000000000000000000000000000000000000000001',
topics: [Array] } ] }
exec: await simpleStoreContract.call("get", [], {gasPrice: 100})
call { rawResult: '0x0000000000000000000000000000000000000000000000000000000004e35f8f',
outputs: [ <BN: 4e35f8f> ],
logs: [] }
see: Qtum smart contract
Assumed that you have a contract like this:
pragma solidity ^0.4.18;
contract SimpleStore {
constructor(uint _value) public {
value = _value;
}
function set(uint newValue) public {
value = newValue;
}
function get() public constant returns (uint) {
return value;
}
uint value;
}
so that the bytecode is
solc --optimize --bin contracts/SimpleStore.sol
======= contracts/SimpleStore.sol:SimpleStore =======
Binary:
608060405234801561001057600080fd5b506040516020806100f2833981016040525160005560bf806100336000396000f30060806040526004361060485763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166360fe47b18114604d5780636d4ce63c146064575b600080fd5b348015605857600080fd5b5060626004356088565b005b348015606f57600080fd5b506076608d565b60408051918252519081900360200190f35b600055565b600054905600a165627a7a7230582049a087087e1fc6da0b68ca259d45a2e369efcbb50e93f9b7fa3e198de6402b810029
constructor parameters is 0000000000000000000000000000000000000000000000000000000000000001
$ curl --header 'Content-Type: application/json' --data \
'{"id":"10","jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19","gas":"0x6691b7","gasPrice":"0x174876e800","data":"0x608060405234801561001057600080fd5b506040516020806100f2833981016040525160005560bf806100336000396000f30060806040526004361060485763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166360fe47b18114604d5780636d4ce63c146064575b600080fd5b348015605857600080fd5b5060626004356088565b005b348015606f57600080fd5b506076608d565b60408051918252519081900360200190f35b600055565b600054905600a165627a7a7230582049a087087e1fc6da0b68ca259d45a2e369efcbb50e93f9b7fa3e198de6402b8100290000000000000000000000000000000000000000000000000000000000000001"}]}' \
'http://localhost:23889'
{
"jsonrpc": "2.0",
"result": "0x6da39dc909debf70a536bbc108e2218fd7bce23305ddc00284075df5dfccc21b",
"id": "10"
}
$ curl --header 'Content-Type: application/json' --data \
'{"id":"10","jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x6da39dc909debf70a536bbc108e2218fd7bce23305ddc00284075df5dfccc21b"]}' \
'localhost:23889'
{
"jsonrpc": "2.0",
"result": {
"hash": "0x6da39dc909debf70a536bbc108e2218fd7bce23305ddc00284075df5dfccc21b",
"nonce": "",
"blockHash": "0xa5f0db33370d6a3e83ace9ed2b3ff74c29ad70b78427eb67de1d959dfa485085",
"blockNumber": "0x1c51",
"transactionIndex": "0x2",
"from": "0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19",
"to": "0x1d96667c8de1a6d8a2a393d6518f376ed3239dd3",
"value": "0x0",
"gasPrice": "0x28",
"gas": "0x6691b7",
"input": "0x608060405234801561001057600080fd5b506040516020806100f2833981016040525160005560bf806100336000396000f30060806040526004361060485763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166360fe47b18114604d5780636d4ce63c146064575b600080fd5b348015605857600080fd5b5060626004356088565b005b348015606f57600080fd5b506076608d565b60408051918252519081900360200190f35b600055565b600054905600a165627a7a7230582049a087087e1fc6da0b68ca259d45a2e369efcbb50e93f9b7fa3e198de6402b8100290000000000000000000000000000000000000000000000000000000000000001"
},
"id": "10"
}
$ curl --header 'Content-Type: application/json' --data \
'{"id":"10","jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x6da39dc909debf70a536bbc108e2218fd7bce23305ddc00284075df5dfccc21b"]}' \
'localhost:23889'
{
"jsonrpc": "2.0",
"result": {
"transactionHash": "0x6da39dc909debf70a536bbc108e2218fd7bce23305ddc00284075df5dfccc21b",
"transactionIndex": "0x2",
"blockHash": "0xa5f0db33370d6a3e83ace9ed2b3ff74c29ad70b78427eb67de1d959dfa485085",
"blockNumber": "0x1c51",
"cumulativeGasUsed": "0x1e8a9",
"gasUsed": "0x1e8a9",
"contractAddress": "0x1d96667c8de1a6d8a2a393d6518f376ed3239dd3",
"logs": [],
"logsBloom": "",
"status": "0x1"
},
"id": "10"
}
the ABI code of set method with param '["2"]' is 60fe47b10000000000000000000000000000000000000000000000000000000000000002
$ curl --header 'Content-Type: application/json' --data \
'{"id":"10","jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19","gas":"0x6691b7","gasPrice":"0x174876e800","to":"0x1d96667c8de1a6d8a2a393d6518f376ed3239dd3","data":"60fe47b10000000000000000000000000000000000000000000000000000000000000002"}]}' \
'localhost:23889'
{
"jsonrpc": "2.0",
"result": "0xb6a315733207992115e8aa002b7b9543d34839f7265f3f5399453ebf54febe71",
"id": "10"
}
get method's ABI code is 6d4ce63c
$ curl --header 'Content-Type: application/json' --data \
'{"id":"10","jsonrpc":"2.0","method":"eth_call","params":[{"from":"0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19","gas":"0x6691b7","gasPrice":"0x174876e800","to":"0x1d96667c8de1a6d8a2a393d6518f376ed3239dd3","data":"6d4ce63c"},"latest"]}' \
'localhost:23889'
{
"jsonrpc": "2.0",
"result": "0x0000000000000000000000000000000000000000000000000000000000000002",
"id": "10"
}
$ curl --header 'Content-Type: application/json' --data \
'{"id":"10","jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0xcb3cb8375fe457a11f041f9ff55373e1a5a78d19","gas":"0x6691b7","gasPrice":"0x174876e800","value":"0xffffff", "to": "0xd66789418ca152f5720b1c8dd04e9ff2f3891f6f"}]}' \
'http://localhost:23889'
{
"jsonrpc": "2.0",
"result": "0x978ed14c122dca1669df875e2cc33302a6edd13b7a8a5a30e3a53ef53b53bbf4",
"id": "10"
}
$ curl --header 'Content-Type: application/json' --data \
'{"id":"10","jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x978ed14c122dca1669df875e2cc33302a6edd13b7a8a5a30e3a53ef53b53bbf4"]}' \
'localhost:23889'
// notice: the tx receipt of sendtoaddress is an empty array
{
"jsonrpc": "2.0",
"result": [],
"id": "10"
}
$ curl --header 'Content-Type: application/json' --data \
'{"id":"10","jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x978ed14c122dca1669df875e2cc33302a6edd13b7a8a5a30e3a53ef53b53bbf4"]}' \
'localhost:23889'
// notice: blockNumber, transactionIndex, from, to are empty, because tx receipt of sendtoaddress is an empty array
{
"jsonrpc": "2.0",
"result": {
"hash": "0x978ed14c122dca1669df875e2cc33302a6edd13b7a8a5a30e3a53ef53b53bbf4",
"nonce": "",
"blockHash": "0x9a5c002cac26df0bbd77099412dff3bd542741a1bb6e955cc161b76a83b8626f",
"blockNumber": "",
"transactionIndex": "",
"from": "",
"to": "",
"value": "0x0",
"gasPrice": "",
"gas": "",
"input": ""
},
"id": "10"
}
curl --header 'Content-Type: application/json' --data
'{"id":"10","jsonrpc":"2.0","method":"eth_getLogs","params":[]}'
'localhost:23889'
- eth_sendTransaction
- eth_sendRawTransaction
- eth_signTransaction
- eth_call
- eth_getTransactionByHash
- eth_getTransactionReceipt
- eth_getTransactionCount
- always returns 1 due to the UTXO nature of Qtum
- eth_blockNumber
- net_version
- returns string // current network name as defined in BIP70 (main, test, regtest)
- eth_getLogs
- topics is not supported yet
- tags, "pending" and "earliest", are unsupported
- eth_accounts
- eth_getCode
- eth_newFilter
- eth_newBlockFilter
- eth_getFilterChanges
- eth_uninstallFilter
- eth_getFilterLogs
- eth_getBlockByNumber
- eth_estimateGas
- eth_getBalance
- eth_gasPrice
- personal_unlockAccount
- eth_getTransactionReceipt
logsBloom
is an empty string- result will be an empty array if the txid of the transaction is a transfer operation
- eth_getTransactionByHash
nonce
is an empty stringblockNumber
,transactionIndex
,from
,to
,value
will be empty, if the txid of the transaction is a transfer operation
- eth_accounts
- only return addresses which are linked to default account