On-chain interaction
Hepton
is compatible with Ethereum
's ecosystem, support all Ethereum
's RPC
API and SDK.
Besides, there are a few Hepton specific RPC
APIs, showing bellow.
Ethereum's RPC
Example:
curl -s -H 'content-type:application/json' -d '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' http://localhost:8545
Hepton Specific RPC
eth_getBlockPredictStatus
Returns the status of the block obtained according to the CasperFFG consensus rule
Parameters
DATA
- 32 Bytes - Hash of a block.QUANTITY
- integer of a block number,
params: [
"0x72d17147a11acd2912846f8c5d10d842be45d67563b2fb6660e0272cbe3a664b",
'0x1b4', // 436
]
Returns
result | status | mark |
---|---|---|
0 | Unknown | The status of the current block is unknown |
1 | Justified | The current block has reached a preliminary consensus, but there is a certain chance to discard it |
2 | Finalized | The current block has reached a final consensus and will not be forked and discarded |
Example
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockPredictStatus","params":["0x72d17147a11acd2912846f8c5d10d842be45d67563b2fb6660e0272cbe3a664b", "0x1b4"],"id":1}' localhost:8545
{
"jsonrpc": "2.0",
"id": 1,
"result": 2
}
eth_getLastFinalizedBlockInfo
Query the block info of the latest finalized status
Parameters
none
Example
curl -X POST -H "Content-Type: application/json" --data "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getLastFinalizedBlockInfo\",\"params\":[],\"id\":1}" localhost:8545
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"Number": "0x91b",
"Hash": "0x80afd1753ed7a5ddc02188e6fe9e8e3fe5c5832f9415527081214ebe240e2e98"
}
}
eth_getDoubleSignPunishTransactionsByBlockNumber
Returns the penalty transaction of violating multiple signatures in the block queried according to the block number
Parameters
QUANTITY
- integer of a block number
params: [
'0x1b4'
]
Returns
Returns all penalty transactions submitted for violating the multi sign rule in the block. The submitted penalty transaction body contains two supporting information. The address of to is a special address, which is used to filter transactions
Example
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getDoubleSignPunishTransactionsByBlockNumber","params":["0x192"],"id":1}' localhost:8545
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"blockHash": "0xd6c76c19f9461e1df42b24ad38b7b960aeaecde2339ddd637e1b965d916ce561",
"blockNumber": "0x192",
"from": "0x0942737e33b1ad9b028bb4fab46677b1e5371d79",
"gas": "0x40641b5",
"gasPrice": "0x0",
"hash": "0x793e9a7314b8ccdd0fdef1f83153f9904689bd9b46f29dea5c94c6f0b1a97785",
"input": "0xf9016202f88de4a0b0f01aa0a340f7f8275239c2f1f25bf81f559a75717990725e9eec5bbf11ee0182018ae4a0f2a4a531ac4c906d0cfd221dce758126717d96d01aa11cd4877c30dc779a829782018ba0dd418ea9c5d3c19cb5d233a6180f544227620cbb2d995af4bd74d2957b7032e7a01342371e87a1daf3f34cbf4faf9511820216cf313ca8b50c27f40da30b30d93b80f88de4a03f546da5c906fe37519c0e056f1407d7f72c622c75ebd9f1e26e8a76765348fe820186e4a0f06463b18dd621d4b8c33364acd57d185c1ec67f3ae28db84133d6d7dfcad93d82018ea0dfa9dc35248be47d77840573105e22a44199d60ef898c289e7bbdcf65f963b40a06565df9f0cd4e6009a2e813ada92cd538068a5867a5fa1d81ca0b5dad97fcb868082019094000000000000000000000000000000000000f006940942737e33b1ad9b028bb4fab46677b1e5371d7994540c913ad8b197152eb041bc56f9c6ab314d25ba80",
"nonce": "0x0",
"to": "0x00000000000000000000000000000000000fffff",
"transactionIndex": "0x0",
"value": "0x0",
"type": "0x0",
"v": "0x4a91",
"r": "0x1f4c0c163ddd523a881bf66f8beba180f23494db42d0249f6a35e90ab72f564f",
"s": "0x2c683319d430e47f436e0db1588bf592dc7656ab32e8727455e3aa64113e6102"
}
]
}
eth_getDoubleSignPunishTransactionsByBlockHash
Returns the penalty transaction of violating multiple signatures in the block queried by the block hash
Parameters
DATA
- 32 Bytes - Hash of a block.
params: [
"0x72d17147a11acd2912846f8c5d10d842be45d67563b2fb6660e0272cbe3a664b"
]
Returns
Returns all penalty transactions submitted for violating the multi sign rule in the block
Example
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getDoubleSignPunishTransactionsByBlockHash","params":["0x793e9a7314b8ccdd0fdef1f83153f9904689bd9b46f29dea5c94c6f0b1a97785"],"id":1}' localhost:8545
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"blockHash": "0xd6c76c19f9461e1df42b24ad38b7b960aeaecde2339ddd637e1b965d916ce561",
"blockNumber": "0x192",
"from": "0x0942737e33b1ad9b028bb4fab46677b1e5371d79",
"gas": "0x40641b5",
"gasPrice": "0x0",
"hash": "0x793e9a7314b8ccdd0fdef1f83153f9904689bd9b46f29dea5c94c6f0b1a97785",
"input": "0xf9016202f88de4a0b0f01aa0a340f7f8275239c2f1f25bf81f559a75717990725e9eec5bbf11ee0182018ae4a0f2a4a531ac4c906d0cfd221dce758126717d96d01aa11cd4877c30dc779a829782018ba0dd418ea9c5d3c19cb5d233a6180f544227620cbb2d995af4bd74d2957b7032e7a01342371e87a1daf3f34cbf4faf9511820216cf313ca8b50c27f40da30b30d93b80f88de4a03f546da5c906fe37519c0e056f1407d7f72c622c75ebd9f1e26e8a76765348fe820186e4a0f06463b18dd621d4b8c33364acd57d185c1ec67f3ae28db84133d6d7dfcad93d82018ea0dfa9dc35248be47d77840573105e22a44199d60ef898c289e7bbdcf65f963b40a06565df9f0cd4e6009a2e813ada92cd538068a5867a5fa1d81ca0b5dad97fcb868082019094000000000000000000000000000000000000f006940942737e33b1ad9b028bb4fab46677b1e5371d7994540c913ad8b197152eb041bc56f9c6ab314d25ba80",
"nonce": "0x0",
"to": "0x00000000000000000000000000000000000fffff",
"transactionIndex": "0x0",
"value": "0x0",
"type": "0x0",
"v": "0x4a91",
"r": "0x1f4c0c163ddd523a881bf66f8beba180f23494db42d0249f6a35e90ab72f564f",
"s": "0x2c683319d430e47f436e0db1588bf592dc7656ab32e8727455e3aa64113e6102"
}
]
}
miner_startAttestation
Start submitting block attestation
By default, it is started at the same time when miner_start
is executed
Parameters
none
Example
curl -X POST -H "Content-Type: application/json" --data "{\"jsonrpc\":\"2.0\",\"method\":\"miner_startAttestation\",\"params\":[],\"id\":1}" localhost:8545
miner_stopAttestation
Stop submitting block attestation
By default, it is stopped at the same time when miner_stop
is executed
Parameters
none
Example
curl -X POST -H "Content-Type: application/json" --data "{\"jsonrpc\":\"2.0\",\"method\":\"miner_stopAttestation\",\"params\":[],\"id\":1}" localhost:8545
JSON RPC Error Codes
See json-rpc-error-codes-improvement-proposal for details.
SDK
Use Ethereum
SDK library such as web3j
,web3js
, ethers.js
, etc for development.
web3js simple example
1. Get chain info
const Web3 = require('web3')
async function getChainId() {
const web3 = new Web3('https://mainnet.hepton.io')
let chainId = await web3.eth.getChainId()
console.log(`chain id: ${chainId}`)
return chainId
}
2. Generate account
const Web3Accounts = require('web3-eth-accounts')
let account = new Web3Accounts().create()
//do not do this on prd env
console.log(`account generated. address: ${account.address}, private key: ${account.privateKey}`)
3. Build transaction
const Web3 = require('web3')
async function transfer(fromAccount, to, value){
const web3 = new Web3('https://mainnet.hepton.io')
let chainId = await web3.eth.getChainId()
let nonce = await web3.eth.getTransactionCount(fromAccount.address)
let gasPrice = await web3.eth.getGasPrice()
let unsigned = {
from: fromAccount.address,
to,
value: web3.utils.numberToHex(web3.utils.toWei(value, 'ether')),
gasPrice,
nonce,
chainId,
}
unsigned.gas = await web3.eth.estimateGas(unsigned)
let signed = await fromAccount.signTransaction(unsigned)
return signed
}