RPC API
Wallet RPC API

Dero Stargate RPC API

RPC

A RPC (Remote Procedure Call) is a program that calls a method/function on another network/computer. Simply, its a way to run a function remotely. In Dero, RPC is used to interface with the daemon and wallet for a variety of purposes. There are many methods that can be called on both the daemon and wallet for interacting with the Dero network. For each method, and example body for them will be displayed.

Wallet RPC API Documentation

This API allows you to interact with a Dero wallet via remote procedure calls (RPC).

What you can do:

  • Learning: Understand the available RPC methods and their functionalities.
  • Developing Applications: Build applications that interact with the Dero blockchain using these RPC methods.
  • Testing: Verify the functionality and connectivity of your Dero node by testing various RPC endpoints.
  • Automating: Automate certain blockchain-related tasks by scripting calls to these RPC endpoints.
ℹ️

The RPC server is not enabled by default. To enable it, start the wallet with the --rpc-server parameter.

The RPC server will listen on port 40403 on the testnet.

Echo

Test endpoint to verify that the RPC server is enabled and working well on the wallet side.

Available parameters

NameTypeMandatoryComment
[]stringtrueArray of string

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "Echo",
    "params": ["Hello", "World", "!"]
}

cURL Request

curl -X POST \
  http://127.0.0.1:40403/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "Echo",
    "params": ["Hello", "World", "!"]
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": "WALLET Hello World !"
}

Get Address

Returns the DERO address of the wallet to receive DEROs or other tokens.

Available parameters

No parameters

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetAddress"
}

cURL Request

curl -X POST \
  http://127.0.0.1:40403/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetAddress"
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "address": "deto1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vqqayuknf"
    }
}

Get Balance

Retrieves the current balance of the wallet.

Available parameters

No parameters

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetBalance"
}

cURL Request

curl -X POST \
  http://127.0.0.1:40403/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetBalance"
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "balance": 800000,
        "unlocked_balance": 800000
    }
}

NOTE: The amount is in atomic format. As a reminder, 10^5 (=100000) is equivalent to 1 DERO.

⚠️

If this address is not registered on the blockchain, you will get this error:

{
    "jsonrpc": "2.0",
    "id": "1",
    "error": {
        "code": -32098,
        "message": "Account Unregistered"
    }
}

Get Height

Returns at which block height the wallet is synchronized.

Available parameters

No parameters

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetHeight"
}

cURL Request

curl -X POST \
  http://127.0.0.1:40403/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetHeight"
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "height": 420
    }
}

Get Transfer by TXID

Returns the details of the transaction based on its hash.

Available parameters

NameTypeMandatory
hashHashtrue

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetTransferbyTXID",
    "params": {
        "txid": "2a74bcc6262f48630967129793f3b87dc30236f2cb5df6ebb09d620ec0cb503a"
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:40403/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetTransferbyTXID",
    "params": {
        "txid": "2a74bcc6262f48630967129793f3b87dc30236f2cb5df6ebb09d620ec0cb503a"
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "entry": {
            "height": 31297,
            "topoheight": 31297,
            "blockhash": "44e010e6ae56e66e75b158871570233a8a8b918491efc2d02ce793a7ce258612",
            "minerreward": 0,
            "tpos": 17,
            "pos": 0,
            "coinbase": false,
            "incoming": true,
            "txid": "2a74bcc6262f48630967129793f3b87dc30236f2cb5df6ebb09d620ec0cb503a",
            "destination": "",
            "amount": 500000,
            "fees": 451,
            "proof": "deroproof1qy3zfvkwdz87xa7mvxc0qq7nsmcgkl3gsf00a2amhk7fs2yu09r4uqdzvfyyskpqckdxyd8vgtzd75mjujsyzj6swrfdy6gw7alx78ak23v6ql60ewqxy4j4rgqq0gfqsjjq9u",
            "status": 0,
            "time": "2022-02-03T17:51:16.006+01:00",
            "ewdata": "2efc785f92e9ffdaf1935186e0ffe561e500632722c73f95e741136389a347b8002642ae3d734c6b119a28884920036e895fc8e6a33f9c4ec6d90da1a4d1b65ef901",
            "data": "AqFoQ29tbWVudFNySGVsbG8gZnJvbSBTbGl4ZSAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
            "payloadtype": 0,
            "payload": "oWhDb21tZW50U3JIZWxsbyBmcm9tIFNsaXhlICEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
            "payload_rpc": [
                {
                    "name": "Comment",
                    "datatype": "S",
                    "value": "Hello from Slixe !"
                }
            ],
            "sender": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
            "dstport": 0,
            "srcport": 0
        }
    }
}

Get Transfers

Returns all transactions present in the portfolio against the applied filters.

Available parameters

NameTypeMandatoryComment
scidHashfalseSmart Contract ID
coinbaseboolfalseAccept coinbase TX ?
inboolfalseAccept incoming TX ?
outboolfalseAccept outgoing TX ?
min_heightunint64falseMinimum height
max_heightunint64falseMaximum height
senderstringfalseSender address equal
receiverstringfalseReceiver address equal
dstportuint64falseDestination Port (Service)
srcportuint64falseSource Port (Service)

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetTransfers",
    "params": {
        "out": true,
        "in": true
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:40403/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "GetTransfers",
    "params": {
        "out": true,
        "in": true
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "entries": [
            {
                "height": 31297,
                "topoheight": 31297,
                "blockhash": "44e010e6ae56e66e75b158871570233a8a8b918491efc2d02ce793a7ce258612",
                "minerreward": 0,
                "tpos": 17,
                "pos": 0,
                "coinbase": false,
                "incoming": true,
                "txid": "2a74bcc6262f48630967129793f3b87dc30236f2cb5df6ebb09d620ec0cb503a",
                "destination": "",
                "amount": 500000,
                "fees": 451,
                "proof": "deroproof1qy3zfvkwdz87xa7mvxc0qq7nsmcgkl3gsf00a2amhk7fs2yu09r4uqdzvfyyskpqckdxyd8vgtzd75mjujsyzj6swrfdy6gw7alx78ak23v6ql60ewqxy4j4rgqq0gfqsjjq9u",
                "status": 0,
                "time": "2022-02-03T17:51:16.006+01:00",
                "ewdata": "2efc785f92e9ffdaf1935186e0ffe561e500632722c73f95e741136389a347b8002642ae3d734c6b119a28884920036e895fc8e6a33f9c4ec6d90da1a4d1b65ef901",
                "data": "AqFoQ29tbWVudFNySGVsbG8gZnJvbSBTbGl4ZSAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
                "payloadtype": 0,
                "payload": "oWhDb21tZW50U3JIZWxsbyBmcm9tIFNsaXhlICEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                "payload_rpc": [
                    {
                        "name": "Comment",
                        "datatype": "S",
                        "value": "Hello from Slixe !"
                    }
                ],
                "sender": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
                "dstport": 0,
                "srcport": 0
            }
        ]
    }
}

Make Integrated Address

Returns a new integrated address with Payloads included.

Available parameters

NameTypeMandatoryComment
addressstringfalseDERO Address (if empty, the one from wallet is used)
payload_rpcArgumentfalseParameters to include in address

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "MakeIntegratedAddress",
    "params": {
        "payload_rpc": [
            {
                "name": "Comment",
                "datatype": "S",
                "value": "Hello from integrated address !"
            }
        ]
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:40403/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "MakeIntegratedAddress",
    "params": {
        "payload_rpc": [
            {
                "name": "Comment",
                "datatype": "S",
                "value": "Hello from integrated address !"
            }
        ]
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "integrated_address": "detoi1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vq9pdppk7mtdv4h8g5mcrayx2mrvdusxvun0d5sxjmn5v4nhyct5v4jzqctyv3ex2umnyqssvnqraw",
        "payload_rpc": [
            {
                "name": "Comment",
                "datatype": "S",
                "value": "Hello from integrated address !"
            }
        ]
    }
}

Split Integrated Address

Returns the DERO address and the payloads included in an Integrated Address.

Available parameters

NameTypeMandatoryComment
integrated_addressstringtrueIntegrated Address to decode

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "SplitIntegratedAddress",
    "params": {
        "integrated_address": "detoi1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vq9pdppk7mtdv4h8g5mcrayx2mrvdusxvun0d5sxjmn5v4nhyct5v4jzqctyv3ex2umnyqssvnqraw"
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:40403/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "SplitIntegratedAddress",
    "params": {
        "integrated_address": "detoi1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vq9pdppk7mtdv4h8g5mcrayx2mrvdusxvun0d5sxjmn5v4nhyct5v4jzqctyv3ex2umnyqssvnqraw"
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "address": "deto1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vqqayuknf",
        "payload_rpc": [
            {
                "name": "Comment",
                "datatype": "S",
                "value": "Hello from integrated address !"
            }
        ]
    }
}

Query Key

Returns the mnemonic key (seed) associated with this portfolio.

Available parameters

NameTypeMandatoryComment
key_typestringtrueKey Type ("mnemonic" only)

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "QueryKey",
    "params": {
        "key_type": "mnemonic"
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:40403/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "QueryKey",
    "params": {
        "key_type": "mnemonic"
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "key": "eavesdrop sailor tavern fizzle mammal were utmost stellar rafts vats dedicated dosage lynx cent after toyed coexist zippers lipstick aztec dedicated custom chrome onto launching"
    }
}

Transfer

Creates a transaction and returns its hash.

Available parameters

NameTypeMandatoryComment
scidHashfalseSCID of asset
destinationstringfalseDERO Address of receiver
amountuint64falseAmount of token to send
burnuint63falseAmount of token to burn
payload_rpcArgumentsfalsePayload Arguments

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "transfer",
    "params": {
        "scid": "00000000000000000000000000000000",
        "destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
        "amount": 100000
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:40403/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "transfer",
    "params": {
        "scid": "00000000000000000000000000000000",
        "destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
        "amount": 100000
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "txid": "5201c319d04fb72012ecb2fd8c903feff50bbd5db39c60dfee795b9b3a90433a"
    }
}

Transfer 2

Creates a transaction to several distinct addresses and returns its hash.

Available parameters

NameTypeMandatoryComment
transfers[]Transferfalsesee previous request
scstringfalseSC Code to deploy
sc_rpcArgumentsfalseSC Call Arguments
ringsizeuint64falseLevel of anonymity
scidstringfalseSCID to call
feesuint64falseTx Fees
signerstringfalseused for gas estimation

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "transfer",
    "params": {
        "transfers": [{
                "destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
                "amount": 100000
            },
            {
                "destination": "deto1qydvjhl67a3hmcw6zq9yt449extwshzcjxkd7lgk4uhgpyxdr494yqg6zwnc2",
                "amount": 100000
            }
        ],
        "ringsize": 32
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:40403/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "transfer",
    "params": {
        "transfers": [{
                "destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
                "amount": 100000
            },
            {
                "destination": "deto1qydvjhl67a3hmcw6zq9yt449extwshzcjxkd7lgk4uhgpyxdr494yqg6zwnc2",
                "amount": 100000
            }
        ],
        "ringsize": 32
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "txid": "3a2712ae039e3f55b4cee132ec7ab76b912d05b3c1fc2744ae2ddd2c18be893e"
    }
}

Smart Contract Invoke

Creates a transaction to call a Smart Contract function and returns its hash.

Available parameters

NameTypeMandatoryComment
scidstringtrueSCID of asset/token
sc_rpcArgumentstrueSC Arguments
sc_dero_deposituint64falseAmount of DERO to deposit
sc_token_deposituint64falseAmount of token to deposit
ringsizeuint64falseLevel of anonymity

Body

{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "scinvoke",
    "params": {
        "scid": "0000000000000000000000000000000000000000000000000000000000000001",
        "ringsize": 2,
        "sc_rpc": [
            {
                "name": "entrypoint",
                "datatype": "S",
                "value": "Register"
            },
            {
                "name": "name",
                "datatype": "S",
                "value": "Slixe"
            }
        ]
    }
}

cURL Request

curl -X POST \
  http://127.0.0.1:40403/json_rpc \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "scinvoke",
    "params": {
        "scid": "0000000000000000000000000000000000000000000000000000000000000001",
        "ringsize": 2,
        "sc_rpc": [
            {
                "name": "entrypoint",
                "datatype": "S",
                "value": "Register"
            },
            {
                "name": "name",
                "datatype": "S",
                "value": "Slixe"
            }
        ]
    }
}'

Result

{
    "jsonrpc": "2.0",
    "id": "1",
    "result": {
        "txid": "bf4b2cd942f4394a03d0d66bbf8c0639f5cbcbf340becc39d4c9e02f987cecca"
    }
}