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
Name | Type | Mandatory | Comment |
---|---|---|---|
[]string | true | Array 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
Name | Type | Mandatory |
---|---|---|
hash | Hash | true |
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
Name | Type | Mandatory | Comment |
---|---|---|---|
scid | Hash | false | Smart Contract ID |
coinbase | bool | false | Accept coinbase TX ? |
in | bool | false | Accept incoming TX ? |
out | bool | false | Accept outgoing TX ? |
min_height | unint64 | false | Minimum height |
max_height | unint64 | false | Maximum height |
sender | string | false | Sender address equal |
receiver | string | false | Receiver address equal |
dstport | uint64 | false | Destination Port (Service) |
srcport | uint64 | false | Source 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
Name | Type | Mandatory | Comment |
---|---|---|---|
address | string | false | DERO Address (if empty, the one from wallet is used) |
payload_rpc | Argument | false | Parameters 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
Name | Type | Mandatory | Comment |
---|---|---|---|
integrated_address | string | true | Integrated 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
Name | Type | Mandatory | Comment |
---|---|---|---|
key_type | string | true | Key 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
Name | Type | Mandatory | Comment |
---|---|---|---|
scid | Hash | false | SCID of asset |
destination | string | false | DERO Address of receiver |
amount | uint64 | false | Amount of token to send |
burn | uint63 | false | Amount of token to burn |
payload_rpc | Arguments | false | Payload 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
Name | Type | Mandatory | Comment |
---|---|---|---|
transfers | []Transfer | false | see previous request |
sc | string | false | SC Code to deploy |
sc_rpc | Arguments | false | SC Call Arguments |
ringsize | uint64 | false | Level of anonymity |
scid | string | false | SCID to call |
fees | uint64 | false | Tx Fees |
signer | string | false | used 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
Name | Type | Mandatory | Comment |
---|---|---|---|
scid | string | true | SCID of asset/token |
sc_rpc | Arguments | true | SC Arguments |
sc_dero_deposit | uint64 | false | Amount of DERO to deposit |
sc_token_deposit | uint64 | false | Amount of token to deposit |
ringsize | uint64 | false | Level 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"
}
}