🔍RPC Interface Specification

The Elastos sidechain needs to trade with the mainchain and arbiter, in which the arbiter interacts with the sidechain through JSON-RPC, and the newly added sidechains all need to meet its RPC specification.

The RPC interface that the sidechain must implement is as follows:

getblockcount

description: get block count

parameters: none

argument sample:

{   
  "method":"getblockcount"
}

result sample:

{
    "result": 171454
}

sendrechargetransaction

description: send recharge to sidechain transaction to transaction pool

argument sample:

{
  "method": "sendtransactioninfo",
  "params":{
  	"txid":764342ae4a9a60e02a28339b9302871973fd60c25ca79380064dd09dcf14aeb0",
  }
}

result sample:

{
    "result":["764342ae4a9a60e02a28339b9302871973fd60c25ca79380064dd09dcf14aeb0"]
}

If the recharge to the sidechain transaction is double spend, need to return ErrDoubleSpend error

If the recharge to the sidechain transaction is duplicated, need to return ErrMainchainTxDuplicate error

gettransactioninfo

description: get transaction information by hash for check tx3

parameters:

nametypedescription

txid

string

the hash of transaction

arguments sample:

{
  "method": "gettransactioninfo",
  "params": {
   		"txid": "764691821f937fd566bcf533611a5e5b193008ea1ba1396f67b7b0da22717c02"
  }
}

result sample:

{
    "result": {
   "txid":"e30e315681fc104820737baa41e65eb0668d979f81c4169708f72801a0046683",
   "hash":"e30e315681fc104820737baa41e65eb0668d979f81c4169708f72801a0046683",
                "size":282,
                "vsize":282,
                "version":0,
                "locktime":0,
                "vin":[
                    {
       "txid":"5228401cca844cc51b255e675cd56bf8b8bce585b19398958829301b617836b6",
                        "vout":0,
                        "sequence":0
                    }
                ],
                "vout":[
                    {
                        "value":"0.96000000",
                        "n":0,
                        "address":"0000000000000000000000000000000000",
                        "outputlock":0
                    }
                ],
     "blockhash":"d77a9e0db69dd815f2b5c004852ad7b0b8782ba74aa475f6e1cec203b9ab2bb8",
                "confirmations":8,
                "time":1537503765,
                "blocktime":1537503765,
                "type":8,
                "payloadversion":0,
                "payload":{
                    "crosschainassets":[{
           			   "crosschainaddress":"EQSpUzE4XYJhBSx5j7Tf2cteaKdFdixfVB",
                       "outputindex":0,
                       "crosschainamount":95000000
                    }]
                },
                "attributes":[{
                    "usage":0,
                    "data":"2d36393130383137303436333135373037373130"
                }],
                "programs":[
                    {
 "code":"21037f3caede72447b6082c1e8f7705ffd1ed6e24f348130d34cbc7c0a35c9e993f5ac",
 "parameter":"406c9fa867dfb54051ea75932782914fb2212c8c5f3c46b6a27fb50dadf1ca4ee5e699dcf8b7f098745457dc75d3f41f2263dd46a6a06aebdccac8d668d4429ebd"
                }
                ]
            }
}

getwithdrawtransactionbyhash

description: get withdraw transaction by hash; if the transaction exists in the sidechain, need to return the detailed information of the withdraw transaction.

Parameters:

nametypedescription

Txid

Uint256

the transaction hash

arguments sample:

{
  "method": "getwithdrawtransactionbyhash",
  "params":{
      "txid":"b82babb903c2cee1f675a44aa72b78b8b0d72a8504c0b5f215d89db60d9e7ad7"
  }
}

result sample:

{
    "result":{
        "txid":"b82babb903c2cee1f675a44aa72b78b8b0d72a8504c0b5f215d89db60d9e7ad7",
        "crosschainassets": [
          	"crosschainaddress": "EQSpUzE4XYJhBSx5j7Tf2cteaKdFdixfVB",
						"crosschainamount": "95000000",
	 					"outputamount": "96000000",
	 					"targetdata": "",
        ]
    }
}

getwithdrawtransactionsbyheight

description: get withdraw transactions by block height

parameters:

nametypedescription

height

integer

the height of block chain

arguments sample:

{
  "method": "getwithdrawtransactionsbyheight",
  "params":{
      "height":"1"
  }
}

result sample:

{
    "result":{
        "Hash":"b82babb903c2cee1f675a44aa72b78b8b0d72a8504c0b5f215d89db60d9e7ad7",
        "Height":11193,
        "Transactions":[
            {
   "txid":"e30e315681fc104820737baa41e65eb0668d979f81c4169708f72801a0046683",
   "hash":"e30e315681fc104820737baa41e65eb0668d979f81c4169708f72801a0046683",
                "size":282,
                "vsize":282,
                "version":0,
                "locktime":0,
                "vin":[
                    {
       "txid":"5228401cca844cc51b255e675cd56bf8b8bce585b19398958829301b617836b6",
                        "vout":0,
                        "sequence":0
                    }
                ],
                "vout":[
                    {
                        "value":"0.96000000",
                        "n":0,
                        "address":"0000000000000000000000000000000000",
                        "outputlock":0
                    }
                ],
     "blockhash":"d77a9e0db69dd815f2b5c004852ad7b0b8782ba74aa475f6e1cec203b9ab2bb8",
                "confirmations":8,
                "time":1537503765,
                "blocktime":1537503765,
                "type":8,
                "payloadversion":0,
                "payload":{
                    "crosschainassets":[{
           			   "crosschainaddress":"EQSpUzE4XYJhBSx5j7Tf2cteaKdFdixfVB",
                       "outputindex":0,
                       "crosschainamount":95000000
                    }]
                },
                "attributes":[{
                    "usage":0,
                    "data":"2d36393130383137303436333135373037373130"
                }],
                "programs":[
                    {
 "code":"21037f3caede72447b6082c1e8f7705ffd1ed6e24f348130d34cbc7c0a35c9e993f5ac",
 "parameter":"406c9fa867dfb54051ea75932782914fb2212c8c5f3c46b6a27fb50dadf1ca4ee5e699dcf8b7f098745457dc75d3f41f2263dd46a6a06aebdccac8d668d4429ebd"
                }
                ]
            }
        ]
    }
}

getfaileddeposittransactionbyhash

description: get failed deposit withdraw transaction by hash; if the transaction exists in the sidechain, need to return the same hash directly.

Parameters:

nametypedescription

Txid

Uint256

the transaction hash

arguments sample:

{
  "method": "getfaileddeposittransactionbyhash",
  "params":{
      "hash":"b82babb903c2cee1f675a44aa72b78b8b0d72a8504c0b5f215d89db60d9e7ad7"
  }
}

result sample:

{
    "result": "b82babb903c2cee1f675a44aa72b78b8b0d72a8504c0b5f215d89db60d9e7ad7",
}

getexistdeposittransactions

description: check deposit transactions and return existed transactions

parameters:

nametypedescription

txs

[]string

hashes of deposit transactions

arguments sample:

{
  "method": "getexistdeposittransactions",
  "params": {
      "txs": [
          "164691821f937fd566bcf533611a5e5b193008ea1ba1396f67b7b0da22717c01",
          "264691821f937fd566bcf533611a5e5b193008ea1ba1396f67b7b0da22717c02",
          "364691821f937fd566bcf533611a5e5b193008ea1ba1396f67b7b0da22717c03"
      ]
  }
}

result sample:

{
    "result":{
     "txs": [
    	"264691821f937fd566bcf533611a5e5b193008ea1ba1396f67b7b0da22717c02",
        "364691821f937fd566bcf533611a5e5b193008ea1ba1396f67b7b0da22717c03"
     ]
    }
}

RPC Error

The structure of the error is as follows if it's found and returned:

{ 
    "error": {
    	"code": error code, 
    	"message": error message,
    }
}

Last updated