Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

18KB

DERO-HE RPC API

Dero Project - dero.io February 3, 2022

Written by Slixe.

CONTENTS

Daemon RPC API

TODO

Wallet RPC API

Tout d’abord, notez que le serveur RPC n’est pas activé par défaut sur le wallet, pour se faire, lancez le wallet avec le paramètre --rpc-server.

Le serveur RPC écoutera sur le port 40403 sur testnet.

Echo

Endpoint de test permettant de vérifier que le serveur RPC est bien activé du côté du wallet.

Paramètres disponibles
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

Renvoi l’adresse DERO du portefeuille permettant de recevoir des DERO ou autres tokens.

Paramètres disponibles

Aucun paramètre

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

Récupère le solde actuelle du portefeuille.

Paramètres disponibles

Aucun paramètre

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: Le montant est au format atomique. Pour rappel, 10^5 (=100000) équivaut à un 1 DERO.

Attention: si cette adresse n’est pas enregistré sur la blockchain, vous aurez cette erreur:

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

Get Height

Retourne à quel hauteur de bloc le portefeuille est synchronisé.

Paramètres disponibles

Aucun paramètre

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

Retourne les détails de la transaction basé sur son hash.

Paramètres disponibles
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

Retourne toutes les transactions présentes dans le portefeuille par rapport aux filtres appliqués.

Paramètres disponibles
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 uint64 false Minimum height
max_height uint64 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

Retourne une nouvelle adresse avec des Payloads inclus.

Paramètres disponibles
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

Retourne l’adresse DERO et les payloads inclus dans une Integrated Address.

Paramètres disponibles
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

Retourne la clé mnémonique (seed) associé à ce portefeuille.

Paramètres disponibles
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

Crée une transaction et renvoi son hash.

Paramètres disponibles
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 uint64 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

Crée une transaction vers plusieurs adresses distinctes et renvoi son hash.

Paramètres disponibles
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"
    }
}

SC Invoke

Crée une transaction pour appeler une function du Smart Contract et retourne son hash.

Paramètres disponibles
Name Type Mandatory Comment
scid string true SC ID 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"
    }
}