Skip to content

JSON RPC API

vstallins edited this page Nov 11, 2016 · 36 revisions

JSON RPC API

JSON is a lightweight data-interchange format. It can represent numbers, strings, ordered sequences of values, and collections of name/value pairs.

JSON-RPC is a stateless, light-weight remote procedure call (RPC) protocol. Primarily this specification defines several data structures and the rules around their processing. It is transport agnostic in that the concepts can be used within the same process, over sockets, over HTTP, or in many various message passing environments. It uses JSON (RFC 4627) as data format.

JSON Data format

In order to work properly with Pascal Coin, you must follow these instructions:

JSON RPC standard 2.0

We use (by default) pure JSON RPC 2.0 standard
This means that:

  • Every call MUST include 3 params: {"jsonrpc": "2.0", "method": "XXX", "id": YYY}
    • jsonrpc : String value = "2.0"
    • method : String value, name of the method to call
    • id : Integer value
  • Optionally can contain another param called "params" holding an object. Inside we will include params to send to the method
    • {"jsonrpc": "2.0", "method": "XXX", "id": YYY, "params":{"p1":" ","p2":" "}}
  • If JSON is not JSON RPC Standard 2.0 compliant, it will be rejected without a response.
  • If JSON does not have a valid "id" value it will not be processed and rejected without a response.

Http POST calls

All calls will be using HTTP protocol (HTTP 1.1) and passing JSON calls by POST at port 4003

  • Protocol: HTTP v1.1
  • Port: 4003
  • Http method: POST

Example

// Request to server at localhost. Method "getblockcount" (Returns block count of the PascalCoin network)
curl -X POST --data '{"jsonrpc":"2.0","method":"getblockcount","id":123}' http://localhost:4003

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": 26724
}

Data types

RPC Calls could include/return these data types:

  • Integers, strings, boolean (true or false) or null
  • HEXASTRING: String that contains an hexadecimal value (ex. "4423A39C"). An hexadecimal string is always an even character length.
  • PASCURRENCY: Pascal Coin currency is a maximum 4 decimal number (ex. 12.1234). Decimal separator is a "." (dot)
  • JSON "specific" Objects: List of some objects returned by RPC calls and used for many methods: (See each method to know which object returns)

Account Object

An "Account object" is a JSON object with information about an account. Fields are:

  • account : Integer - Account number
  • enc_pubkey : HEXASTRING - Encoded public key value (See decodepubkey )
  • balance : PASCURRENCY - Account balance
  • n_operation : Integer - Operations made by this account (Note: When an account receives a transaction, n_operation is not changed)
  • updated_b Integer - Last block that updated this account. If equal to blockchain blocks count it means that it has pending operations to be included to the blockchain

Block Object

A "Block object" is a JSON object with information about a Blockchain's block. Fields are:

  • block : Integer - Block number
  • enc_pubkey : HEXASTRING - Encoded public key value used to init 5 created accounts of this block (See decodepubkey )
  • reward : PASCURRENCY - Reward of first account's block
  • fee : PASCURRENCY - Fee obtained by operations
  • ver : Integer - Pascal Coin protocol used
  • ver_a : Integer - Pascal Coin protocol available by the miner
  • timestamp : Integer - Unix timestamp
  • target : Integer - Target used
  • nonce : Integer - Nonce used
  • payload : String - Miner's payload
  • sbh : HEXASTRING - SafeBox Hash
  • oph : HEXASTRING - Operations hash
  • pow : HEXASTRING - Proof of work
  • operations : Integer - Number of operations included in this block
  • hashratekhs : Integer - Estimated network hashrate calculated by previous 50 blocks average
  • maturation : Integer - Number of blocks in the blockchain higher than this

Operation Object

An "Operation object" is a JSON object with information about an operation. Fields are:

  • block : Integer - Block number
  • opblock : Integer - Operation index inside a block (0..operations-1). Note: If opblock=-1 means that is a blockchain reward
  • optype : Integer - Operation type. can be:
    • 0 = Blockchain reward
    • 1 = Transaction
    • 2 = Change key
    • 3 = Recover founds (lost keys)
  • time : Integer - Block timestamp
  • account : Integer - Account affected by this operation. Note: A transaction has 2 affected accounts.
  • optxt : String - Human readable operation type
  • amount : PASCURRENCY - Amount of coins transferred from sender_account to dest_account (Only apply when optype=1)
  • fee : PASCURRENCY - Fee of this operation
  • balance : PASCURRENCY - Balance of account after this block is introduced in the Blockchain
    • Note: balance is a calculation based on current safebox account balance and previous operations, it's only returned on pending operations and account operations
  • sender_account : Integer - Sender account in a transaction (optype = 1)
  • dest_account : Integer - Destination account in a transaction (optype = 1)
  • enc_pubkey : HEXASTRING - Encoded public key in a change key operation (optype = 2). See decodepubkey
  • ophash : HEXASTRING - Operation hash used to find this operation in the blockchain

Connection Object

A "Connection object" is a JSON object with a connection to other node information

  • server : Boolean - True if this connection is to a server node. False if this connection is a client node
  • ip : String
  • port : Integer
  • secs : Integer - seconds of live of this connection
  • sent : Integer - Bytes sent
  • recv : Integer - Bytes received
  • appver : String - Other node App version
  • netvar : Integer - Net protocol of other node
  • netvar_a : Integer - Net protocol available of other node

Error codes

JSON-RPC Error codes will be in a JSON-Object in this format:

  • code : Integer - Error code
  • message : String - Human readable error description

List of usual error codes

  • 100 - Internal error
  • 1001 - Method not found
  • 1002 - Invalid account
  • 1003 - Invalid block
  • 1004 - Invalid operation
  • 1005 - Invalid public key
  • 1010 - Not found
  • 1015 - Wallet is password protected
  • 1016 - Invalid data

JSON CALLS

All calls will be using http transport protocol and JSON will be passed by POST

JSON-RPC methods list

addnode

Add nodes to connect

Params
  • nodes String containing 1 or multiple IP:port separated by ";"
Result (Intger)

Returns an integer with nodes added

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"addnode","params":{"nodes":"123.123.123.123:4004;7.7.7.7:4005"},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": 2
}

getaccount

Returns a JSON Object with account information including pending operations not included in blockchain yet, but affecting this account.
Tip: To know if there are pending operations, must look at updated_b param. It tells last block that modified this account. If this number is equal to blockchain blocks then this account is affected by pending operations (send/receive or change key)

Params
  • account Cardinal containing account number
Result (JSON Object)

Result is an Account Object

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"getaccount","params":{"account":1920},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": {
     "account":1920,
     "enc_pubkey":"CA0220009D92DFA1D6F8B2CAE31194EE5433EE4AD457AE145C1C67E49A9196EE58A45B9F200046EAF20C0A26A80A7693E71C0222313A0187AFCA838209FF86FB740A4FFF7F0B",
     "balance":29595.952,
     "n_operation":0,
     "updated_b":11973
     }
}

getwalletaccounts

Returns a JSON array with all wallet accounts.

Params
  • none
Result (JSON Array)

Each JSON array item contains an Account Object

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"getwalletaccounts","id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": [{
     "account":1920,
     "enc_pubkey":"CA0220009D92DFA1D6F8B2CAE31194EE5433EE4AD457AE145C1C67E49A9196EE58A45B9F200046EAF20C0A26A80A7693E71C0222313A0187AFCA838209FF86FB740A4FFF7F0B",
     "balance":29595.952,
     "n_operation":0,
     "updated_b":11973
     },
     {
     "account":1921,
     "enc_pubkey":"CA0220009D92DFA1D6F8B2CAE31194EE5433EE4AD457AE145C1C67E49A9196EE58A45B9F200046EAF20C0A26A80A7693E71C0222313A0187AFCA838209FF86FB740A4FFF7F0B",
     "balance":29.9521,
     "n_operation":0,
     "updated_b":11973
     }
  ]
}

getwalletpubkeys

Returns a JSON Array with all pubkeys of the Wallet (address)

Params

(none)

Result

Each array item is:

  • name : String with internal key name in the Wallet
  • enc_pubkey : HEXASTRING with public key in encoded format (See decodepubkey )
  • can_use : Boolean indicating if we have this private key. (Note: A Wallet can contain pubkeys without private keys, so there will not be possible to operate with this address)
Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"getwalletpubkeys","id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": [{
     "name":"My key",
     "enc_pubkey":"CA0220009D92DFA1D6F8B2CAE31194EE5433EE4AD457AE145C1C67E49A9196EE58A45B9F200046EAF20C0A26A80A7693E71C0222313A0187AFCA838209FF86FB740A4FFF7F0B",
     "can_use":true
     },
     {
     "name":"My key 2",
     "enc_pubkey":"CA02200026D497C8982EC538BC06FCC1F5FACA39A2CA6DFAEC601122155F388A08FEF3812000E8FDAA2C8D8375D022510A12DC65641B5D904A36B1E913C9B96A0A40C645D2F2",
     "can_use":true
     }]
}

getblock

Returns a JSON Object with a block information

Params
  • block : Integer - Block number (0..blocks count-1)
Result

Returns a JSON Object with a "Block Object"

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"getblock","params":{"block":8888},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": {
    "block":8888,
	"enc_pubkey":"CA0220000E60B6F76778CFE8678E30369BA7B2C38D0EC93FC3F39E61468E29FEC39F13BF2000572EDE3C44CF00FF86AFF651474D53CCBDF86B953F1ECE5FB8FC7BB6FA16F114",
	"reward":100,
	"fee":0,
	"ver":1,
	"ver_a":0,
	"timestamp":1473161258,
	"target":559519020,
	"nonce":131965022,
	"payload":"New Node 9/4/2016 10:10:13 PM - Pascal Coin Miner & Explorer Build:1.0.2.0",
	"sbh":"5B75D33D9EFBF560EF5DA9B4A603528808626FE6C1FCEC44F83AF2330C6607EF",
	"oph":"81BE87831F03A2FE272C89BC6D2406DD57614846D9CEF30096BF574AB4AB3EE9",
	"pow":"00000000213A39EBBAB6D1FAEAA1EE528E398A587848F81FF66F7DA6113FC754",
	"operations":1
	}
}

getblocks

Returns a JSON Array with blocks information from "start" to "end" (or "last" n blocks) Blocks are returned in DESCENDING order See getblock

Params
  • last : Integer - Last n blocks in the blockchain (n>0 and n<=1000)
  • start : Integer
  • end : Integers Note: Must use param last alone, or start and end

getblockcount

Returns an Integer with blockcount of node

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"getblockcount","id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": 26724
}

getblockoperation

Returns a JSON Object with an operation inside a block

Params
  • block : Integer - Block number
  • opblock : Integer - Operation (0..operations-1) of this block
Result

Returns a JSON Object with a "Operation Object"

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"getblockoperation","params":{"block":8888,"opblock":0},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": {
    "block":8888,
	"opblock":0,
	"optype":1,
	"time":1473161258,
	"account":43905,
	"optxt":"Transaction Sent to 40511-95",
	"amount":-100,
	"fee":0,
	"balance":0,
	"payload":"",
	"dest_account":40511,
	"ophash":"B822000081AB0000010000003032333646444430344246334637414434413042"
  }
}

getblockoperations

Returns a JSON Array with all operations of specified block Operations are returned in DESCENDING order

Params
  • block : Integer - Block number
Result

Returns a JSON Array with "Operation Object" items

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"getblockoperations","params":{"block":8888},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": [{
    "block":8888,
	"opblock":0,
	"optype":1,
	"time":1473161258,
	"account":43905,
	"optxt":"Transaction Sent to 40511-95",
	"amount":-100,
	"fee":0,
	"balance":0,
	"payload":"",
	"dest_account":40511,
	"ophash":"B822000081AB0000010000003032333646444430344246334637414434413042"
  }]
}

getaccountoperations

Return a JSON Array with "Operation Object" items. Operations made over an account Operations are returned in DESCENDING order

Params
  • account : Integer - Account number (0..accounts count-1)
  • deep : Integer - (Optional, default value 100) Deep to search on blocks where this account has been affected
Result

Returns an array holding operations made over account in "Operation Object" format

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"getaccountoperations","params":{"account":101740},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": [
    {"block":22647,
	"opblock":0,
	"optype":1, // Note: This is a transaction
	"time":1476744324,
	"account":101740, 
	"optxt":"Transaction Received from 103844-87",
	"amount":20000,  // Note: This is an incoming transaction, so "amount" is a positive number
	"fee":0,
	"balance":20000,
	"payload":"",
	"sender_account":103844,
	"dest_account":101740,
	"ophash":"77580000A4950100020000003238453136333441383439393046414632443332"
	},{
	"block":21555,
	"opblock":0,
	"optype":2,  // Note: This is a change key operation
	"time":1476466491,
	"account":101740,
	"optxt":"Change Key to secp256k1",
	"amount":0,
	"fee":0,
	"balance":0,
	"payload":"",
	// This is the new public key due to change key operation
	"enc_pubkey":"CA02200078D867C93D58C2C46C66667A139543DCF8420D9119B7A0E06197D22A5BBCE5542000EA2E492FD8B90E48AF3D9EF438C6FBEA57C8A8E75889807DE588B490B1D57187",
	"ophash":"335400006C8D0100020000003330433034464446453130354434444445424141"
	},{
	"block":21255,
	"opblock":0,
	"optype":1,
	"time":1476378864,
	"account":101740,
	"optxt":"Transaction Sent to 63553-29",
	"amount":-100, // Note: This is an outgoing transaction, so "amount" is a negative number
	"fee":0,
	"balance":0,
	"payload":"",
	"sender_account":101740,
	"dest_account":63553, // Note: Dest account is the receiver
	"ophash":"075300006C8D0100010000003536463332393641383335344236323945464536"
	},{
	"block":20348,
	"opblock":-1, // Note: This is a blockchain reward. No operation number included (-1)
	"optype":0,   // optype = 0 = Blockhain reward
	"time":1476153843,
	"account":101740,
	"optxt":"Blockchain reward",
	"amount":100,
	"fee":0,
	"balance":100,
	"payload":"",
	"ophash":"" // Note: A blockchain reward has no ophash operation
	}
  ]
}

getpendings

Return a JSON Array with "Operation Object" items with operations pending to be included at the Blockchain.

Params

(none)

Result

Returns an array holding pending operations in "Operation Object" format

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"getpendings","id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": []  // Note: None pending = empty array
}

findoperation

Return a JSON Object in "Operation Object" format.

Params
  • ophash : HEXASTRING - Value ophash received on an operation
Result

Returns "Operation Object" format JSON object

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"findoperation","params":{"ophash":"075300006C8D0100010000003536463332393641383335344236323945464536"},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": {
	"block":21255,
	"opblock":0,
	"optype":1,
	"time":1476378864,
	"account":101740,
	"optxt":"Transaction Sent to 63553-29",
	"amount":-100, 
	"fee":0,
	"balance":0,
	"payload":"",
	"sender_account":101740,
	"dest_account":63553, // Note: Dest account is the receiver
	"ophash":"075300006C8D0100010000003536463332393641383335344236323945464536"
	}
}

sendto

Executes a transaction operation from "sender" to "target"

Params
  • sender : Integer - Sender account
  • target : Integer - Destination account
  • amount : PASCURRENCY - Coins to be transferred
  • fee : PASCURRENCY - Fee of the operation
  • payload : HEXASTRING - Payload "item" that will be included in this operation
  • payload_method : String - Encode type of the item payload
    • none : Not encoded. Will be visible for everybody
    • dest (default) : Using Public key of "target" account. Only "target" will be able to decrypt this payload
    • sender : Using sender Public key. Only "sender" will be able to decrypt this payload
    • aes : Encrypted data using pwd param
  • pwd : String - Used to encrypt payload with aes as a payload_method. If none equals to empty password
Result

If trasnaction is successfull will return a JSON Object in "Operation Object" format. Otherwise, will return a JSON-RPC error code with description

Example

Correct example

// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"sendto","params":{"sender":1234,"target":5678,"amount":100000,"fee":0.0001,"payload":"444F444F444F","payload_method":"aes","pwd":"MyPassword"},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": {
	"block":0,
	"opblock":0,
	"optype":1,
	"time":1476363846,
	"account":1234,
	"optxt":"Transaction Sent to 5678-55",
	"amount":-100000, 
	"fee":0.0001,
	"balance":150605.9999,
	"payload":"842357F9C1842357F9C1842357F9C1842357F9C1",
	"sender_account":1234,
	"dest_account":5678, 
	"ophash":"000000006C8D0100010000003536463332393641383335344236323945464536"
	}
}

Error example

// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"sendto","params":{"sender":1234,"target":5678,"amount":100000,"fee":0.0001,"payload":"444F444F444F","payload_method":"aes","pwd":"MyPassword"},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "error": {
    "code":1002,  // Note: See [Error codes](#error-codes)
	"message":"Private key of sender account 1234 not found in wallet"
  }
}

changekey

Executes a change key operation, changing "account" public key for a new one.
Note that new one public key can be another Wallet public key, or none. When none, it's like a transaction, tranferring account owner to an external owner

Params
  • account : Integer - Account number to change key
  • new_enc_pubkey : HEXASTRING - New public key in encoded format
  • fee : PASCURRENCY - Fee of the operation
  • payload : HEXASTRING - Payload "item" that will be included in this operation
  • payload_method : String - Encode type of the item payload
    • none : Not encoded. Will be visible for everybody
    • dest (default) : Using Public key of "target" account. Only "target" will be able to decrypt this payload
    • sender : Using sender Public key. Only "sender" will be able to decrypt this payload
    • aes : Encrypted data using pwd param
  • pwd : String - Used to encrypt payload with aes as a payload_method. If none equals to empty password
Result

If operation is successfull will return a JSON Object in "Operation Object" format. Otherwise, will return a JSON-RPC error code with description

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"changekey","params":{"account":101740,"new_enc_pubkey":"CA02200078D867C93D58C2C46C66667A139543DCF8420D9119B7A0E06197D22A5BBCE5542000EA2E492FD8B90E48AF3D9EF438C6FBEA57C8A8E75889807DE588B490B1D57187","fee":0.0001,"payload":"","payload_method":"none"},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": {
	"block":21555,
	"opblock":0,
	"optype":2,  
	"time":1476466491,
	"account":101740,
	"optxt":"Change Key to secp256k1",
	"amount":0,
	"fee":0,
	"balance":0,
	"payload":"",
	"enc_pubkey":"CA02200078D867C93D58C2C46C66667A139543DCF8420D9119B7A0E06197D22A5BBCE5542000EA2E492FD8B90E48AF3D9EF438C6FBEA57C8A8E75889807DE588B490B1D57187",
	"ophash":"335400006C8D0100020000003330433034464446453130354434444445424141"
	}
}

Error example

// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"changekey","params":{"account":101740,"new_enc_pubkey":"CA02200078D867C93D58C2C46C66667A139543DCF8420D9119B7A0E06197D22A5BBCE5542000EA2E492FD8B90E48AF3D9EF438C6FBEA57C8A8E75889807DE588B490B1D57187","fee":0.0001,"payload":"","payload_method":"none"},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "error": {
    "code":1002,  // Note: See [Error codes](#error-codes)
	"message":"Private key account 101740 not found in wallet"
  }
}

nodestatus

Returns information of the Node in a JSON Object

Params

(none)

Result
  • ready : Boolean - Must be true, otherwise Node is not ready to execute operations
  • ready_s : String - Human readable information about ready or not
  • status_s : String - Human readable information about node status... Running, downloading blockchain, discovering servers...
  • port : Integer - Server port
  • locked : Boolean - True when this wallet is locked, false otherwise
  • timestamp : Integer - Timestamp of the Node
  • version : String - Server version
  • netprotocol : JSON Object
    • ver : Integer - Net protocol version
    • ver_a : Integer - Net protocol available
  • blocks : Integer - Blockchain blocks
  • netstats : JSON Object with net information
  • ndeservers : JSON Array with servers candidates
Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"nodestatus","id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result":{
    "ready":true,
	"ready_s":"",
	"status_s":"Running",
	"port":4004,
	"locked":false,
	"timestamp":1478094204,
	"version":"1.0.9",
	"netprotocol":{
	  "ver":2,
	  "ver_a":3
	},
	"blocks":27547,
	"netstats":{
	  "active":20,
	  "clients":17,
	  "servers":3,
	  "servers_t":3,
	  "total":147,
	  "tclients":142,
	  "tservers":5,
	  "breceived":2006753,
	  "bsend":1917264
	},
	"nodeservers":[
	  {"ip":"46.29.1.190",
	  "port":4004,
	  "lastcon":1478094198,
	  "attempts":0
	  },{
	  "ip":"144.27.2.76",
	  "port":4004,
	  "lastcon":1478094198,
	  "attempts":0
	  },{
	  "ip":"118.48.48.94",
	  "port":4004,
	  "lastcon":1478094198,
	  "attempts":0}
	]
  }
}

encodepubkey

Encodes a public key based on params information

Params
  • ec_nid : Integer
    • 714 = secp256k1
    • 715 = secp384r1
    • 729 = secp283k1
    • 716 = secp521r1
  • x : HEXASTRING with x value of public key
  • y : HEXASTRING with y value of public key
Result

Returns a HEXASTRING with encoded public key

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"encodepubkey","params":{"ec_nid":714,"x":"0E60B6F76778CFE8678E30369BA7B2C38D0EC93FC3F39E61468E29FEC39F13BF","y":"572EDE3C44CF00FF86AFF651474D53CCBDF86B953F1ECE5FB8FC7BB6FA16F114"},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": "CA0220000E60B6F76778CFE8678E30369BA7B2C38D0EC93FC3F39E61468E29FEC39F13BF2000572EDE3C44CF00FF86AFF651474D53CCBDF86B953F1ECE5FB8FC7BB6FA16F114"
}

decodepubkey

Decodes an encoded public key

Params
  • enc_pubkey : HEXASTRING with encoded public key
Result

Returns a JSON Object with public key information:

  • ec_nid : Integer
    • 714 = secp256k1
    • 715 = secp384r1
    • 729 = secp283k1
    • 716 = secp521r1
  • x : HEXASTRING with x value of public key
  • y : HEXASTRING with y value of public key
Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"decodepubkey","params":{"enc_pubkey":"CA0220000E60B6F76778CFE8678E30369BA7B2C38D0EC93FC3F39E61468E29FEC39F13BF2000572EDE3C44CF00FF86AFF651474D53CCBDF86B953F1ECE5FB8FC7BB6FA16F114","id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result": {
    "ec_nid":714,
	"x":"0E60B6F76778CFE8678E30369BA7B2C38D0EC93FC3F39E61468E29FEC39F13BF",
	"y":"572EDE3C44CF00FF86AFF651474D53CCBDF86B953F1ECE5FB8FC7BB6FA16F114"
  }
}

payloadencrypt

Encrypt a text "paylad" using "payload_method"

Params
  • payload : HEXASTRING - Text to encrypt in hexadecimal format
  • payload_method : String - Can be one of:
    • none
    • pubkey : Using a Publick Key. Only owner of this private key will be able to read it. Must provide enc_pubkey param. See decodepubkey or encodepubkey
      • enc_pubkey : HEXASTRING -
    • aes : Using a Password. Must provide pwd param
      • pwd : String
Result

Returns a HEXASTRING with encrypted payload

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"payloadencrypt","params":{"payload":"444F444F","payload_method":"aes","pwd":"mypassword"},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result":"53616C7465645F5F8312C92E9BFFD6068ADA9F2F7CEA90505B50CE2CAE995C28"
}

payloaddecrypt

Returns a HEXASTRING with decrypted text (a payload) using private keys in the wallet or a list of Passwords (used in "aes" encryption)

Params
  • payload:HEXASTRING - Encrypted data
  • pwds: JSON Array of Strings (optional)
Result
  • result : Boolean
  • enc_payload : HEXASTRING - Same value than param payload sent
  • unenc_payload : String - Unencoded value in readable format (no HEXASTRING)
  • payload_method : String - "key" or "pwd"
  • enc_pubkey : HEXASTRING - Encoded public key used to decrypt when method = "key"
  • pwd : String - String value used to decrypt when method = "pwd" Note:
  • If using one of private keys is able to decrypt payload then returns value "key" in payload_method and enc_pubkey contains encoded public key in HEXASTRING
  • If using one of passwords to decrypt payload then returns value "pwd" in payload_method and pwd contains password used
Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"payloaddecrypt","params":{"payload":"53616C7465645F5F8312C92E9BFFD6068ADA9F2F7CEA90505B50CE2CAE995C28","pwds":["mypassword","otherpwd"]},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result":{
    "result":true,
	"enc_payload":"53616C7465645F5F8312C92E9BFFD6068ADA9F2F7CEA90505B50CE2CAE995C28",
	"unenc_payload":"DODO",
	"payload_method":"pwd",
	"pwd":"mypassword"
  }
}

getconnections

Returns a JSON Array with Connection Objects

addnewkey

Creates a new Private key and sotres it on the wallet, returning an enc_pubkey value

Params
  • ec_nid : Integer - One of
    • 714 = secp256k1
    • 715 = secp384r1
    • 729 = secp283k1
    • 716 = secp521r1
  • name : String - Name to alias this new private key
Result

HEXASTRING containing an encoded public key (See decodepubkey )

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"addnewkey","params":{"ec_nid":729,"name":"My new key"},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result":"D902240006ECEFF2AFDAF182F77BCC0E1316C99680C5221BE08A3AB58A43C52B298057FCE594CD33240003AEA36BBB9A82DFECA7D30CE33503FED96CC1AA16AF5F80BA0836CD4AF28F4716253237"
}

unlock

Unlocks a locked Wallet using "pwd" param

Params
  • pwd : String;
Result

Returns a Boolean indicating if Wallet is unlocked after using pwd password

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"unlock","params":{"pwd":"mypassword"},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result":true
}

setwalletpassword

Changes the password of the Wallet. (Must be previously unlocked) Note: If pwd param is empty string, then wallet will be not protected by password

Params
  • pwd : String - New password
Result

Returns a Boolean if Wallet password changed with new pwd password

Example

Valid example

// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"setwalletpassword","params":{"pwd":"myNEWpassword"},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result":true
}

Error example (Wallet password protected)

// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"setwalletpassword","params":{"pwd":"myNEWpassword"},"id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "error":{
    "code":1015,
	"message":"Wallet is password protected. Unlock first"
	}
}

stopnode

Stops the node and the server. Closes all connections

Params

(none)

Result

Boolean "true"

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"stopnode","id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result":true
}

startnode

Starts the node and the server. Starts connection process

Params

(none)

Result

Boolean "true"

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"startnode","id":123}'

// Result
{
  "jsonrpc":"2.0",
  "id":123,
  "result":true
}
Clone this wiki locally