Dero Project - dero.io February 3, 2022
Written by Slixe.
TODO
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.
Endpoint de test permettant de vérifier que le serveur RPC est bien activé du côté du wallet.
Name | Type | Mandatory | Comment |
---|---|---|---|
[]string | true | Array of string |
{
"jsonrpc": "2.0",
"id": "1",
"method": "Echo",
"params": ["Hello", "World", "!"]
}
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", "!"]
}'
{
"jsonrpc": "2.0",
"id": "1",
"result": "WALLET Hello World !"
}
Renvoi l’adresse DERO du portefeuille permettant de recevoir des DERO ou autres tokens.
Aucun paramètre
{
"jsonrpc": "2.0",
"id": "1",
"method": "GetAddress"
}
curl -X POST \
http://127.0.0.1:40403/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "GetAddress"
}'
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"address": "deto1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vqqayuknf"
}
}
Récupère le solde actuelle du portefeuille.
Aucun paramètre
{
"jsonrpc": "2.0",
"id": "1",
"method": "GetBalance"
}
curl -X POST \
http://127.0.0.1:40403/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "GetBalance"
}'
{
"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"
}
}
Retourne à quel hauteur de bloc le portefeuille est synchronisé.
Aucun paramètre
{
"jsonrpc": "2.0",
"id": "1",
"method": "GetHeight"
}
curl -X POST \
http://127.0.0.1:40403/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "GetHeight"
}'
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"height": 420
}
}
Retourne les détails de la transaction basé sur son hash.
Name | Type | Mandatory |
---|---|---|
hash | Hash | true |
{
"jsonrpc": "2.0",
"id": "1",
"method": "GetTransferbyTXID",
"params": {
"txid": "2a74bcc6262f48630967129793f3b87dc30236f2cb5df6ebb09d620ec0cb503a"
}
}
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"
}
}'
{
"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
}
}
}
Retourne toutes les transactions présentes dans le portefeuille par rapport aux filtres appliqués.
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) |
{
"jsonrpc": "2.0",
"id": "1",
"method": "GetTransfers",
"params": {
"out": true,
"in": true
}
}
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
}
}'
{
"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
}
]
}
}
Retourne une nouvelle adresse avec des Payloads inclus.
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 |
{
"jsonrpc": "2.0",
"id": "1",
"method": "MakeIntegratedAddress",
"params": {
"payload_rpc": [
{
"name": "Comment",
"datatype": "S",
"value": "Hello from integrated address !"
}
]
}
}
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 !"
}
]
}
}'
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"integrated_address": "detoi1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vq9pdppk7mtdv4h8g5mcrayx2mrvdusxvun0d5sxjmn5v4nhyct5v4jzqctyv3ex2umnyqssvnqraw",
"payload_rpc": [
{
"name": "Comment",
"datatype": "S",
"value": "Hello from integrated address !"
}
]
}
}
Retourne l’adresse DERO et les payloads inclus dans une Integrated Address.
Name | Type | Mandatory | Comment |
---|---|---|---|
integrated_address | string | true | Integrated Address to decode |
{
"jsonrpc": "2.0",
"id": "1",
"method": "SplitIntegratedAddress",
"params": {
"integrated_address": "detoi1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vq9pdppk7mtdv4h8g5mcrayx2mrvdusxvun0d5sxjmn5v4nhyct5v4jzqctyv3ex2umnyqssvnqraw"
}
}
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"
}
}'
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"address": "deto1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vqqayuknf",
"payload_rpc": [
{
"name": "Comment",
"datatype": "S",
"value": "Hello from integrated address !"
}
]
}
}
Retourne la clé mnémonique (seed) associé à ce portefeuille.
Name | Type | Mandatory | Comment |
---|---|---|---|
key_type | string | true | Key Type (“mnemonic” only) |
{
"jsonrpc": "2.0",
"id": "1",
"method": "QueryKey",
"params": {
"key_type": "mnemonic"
}
}
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"
}
}'
{
"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"
}
}
Crée une transaction et renvoi son hash.
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 |
{
"jsonrpc": "2.0",
"id": "1",
"method": "transfer",
"params": {
"scid": "00000000000000000000000000000000",
"destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
"amount": 100000
}
}
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
}
}'
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"txid": "5201c319d04fb72012ecb2fd8c903feff50bbd5db39c60dfee795b9b3a90433a"
}
}
Crée une transaction vers plusieurs adresses distinctes et renvoi son hash.
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 |
{
"jsonrpc": "2.0",
"id": "1",
"method": "transfer",
"params": {
"transfers": [{
"destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
"amount": 100000
},
{
"destination": "deto1qydvjhl67a3hmcw6zq9yt449extwshzcjxkd7lgk4uhgpyxdr494yqg6zwnc2",
"amount": 100000
}],
"ringsize": 32
}
}
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
}
}'
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"txid": "3a2712ae039e3f55b4cee132ec7ab76b912d05b3c1fc2744ae2ddd2c18be893e"
}
}
Crée une transaction pour appeler une function du Smart Contract et retourne son hash.
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 |
{
"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 -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"
}]
}
}'
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"txid": "bf4b2cd942f4394a03d0d66bbf8c0639f5cbcbf340becc39d4c9e02f987cecca"
}
}