Skip to content

JSON RPC API

Pascal Coin edited this page Nov 24, 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

Public Key Object

A "Public Key object" is a JSON object with information about a public key.

  • name : String - Human readable name stored at the Wallet for this key
  • can_use : Boolean - If false then Wallet doesn't have Private key for this public key, so, Wallet cannot execute operations with this key
  • enc_pubkey : HEXASTRING - Encoded value of this public key. This HEXASTRING has no checksum, so, if using it always must be sure that value is correct
  • b58_pubkey : String - Encoded value of this public key in Base 58 format, also contains a checksum. This is the same value that Application Wallet exports as a public key
  • ec_nid : Integer - Indicates which EC type is used:
    • 714 = secp256k1
    • 715 = secp384r1
    • 729 = secp283k1
    • 716 = secp521r1
  • x : HEXASTRING with x value of public key
  • y : HEXASTRING with y value of public key

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}' http://localhost:4003

// 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}' http://localhost:4003

// 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
  • enc_pubkey HEXASTRING (optional). If provided, return only accounts of this public key
  • b58_pubkey String (optional). If provided, return only accounts of this public key
    • Note: If use enc_pubkey and b58_pubkey together and is not the same public key, will return an error
  • start Integer (optional, default = 0). If provided, will return wallet accounts starting at this position (index starts at position 0)
  • max Integer (optional, default = 100). If provided, will return max accounts. If not provided, max=100 by default
Result (JSON Array)

Each JSON array item contains an Account Object

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

// 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
     }
  ]
}

getwalletaccountscount

Get number of available wallet accounts (total or filtered by public key)

Params
  • enc_pubkey HEXASTRING (optional). If provided, count only accounts of this public key
  • b58_pubkey String (optional). If provided, return only accounts of this public key
    • Note: If use enc_pubkey and b58_pubkey together and is not the same public key, will return an error
  • start Integer (optional, default = 0). If provided, will return wallet accounts starting at this position (index starts at position 0)
  • max Integer (optional, default = 100). If provided, will return max accounts. If not provided, max=100 by default
Result (integer)

Returns an integer with total

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"getwalletaccountscount","id":123,"params":{"enc_pubkey":"CA0220009D92DFA1D6F8B2CAE31194EE5433EE4AD457AE145C1C67E49A9196EE58A45B9F200046EAF20C0A26A80A7693E71C0222313A0187AFCA838209FF86FB740A4FFF7F0B"}}' http://localhost:4003

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

getwalletpubkeys

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

Params
  • start Integer (optional, default = 0). If provided, will return wallet public keys starting at this position (index starts at position 0)
  • max Integer (optional, default = 100). If provided, will return max public keys. If not provided, max=100 by default
Result

Returns a JSON Array with "Public Key Object"

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"getwalletpubkeys","id":123}' http://localhost:4003

// 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
     }]
}

getwalletpubkey

Returns a JSON Object with a public key if found in the Wallet

Params
  • enc_pubkey HEXASTRING
  • b58_pubkey String
    • Note: If use enc_pubkey and b58_pubkey together and is not the same public key, will return an error
Result

Returns a JSON Object with a "Public Key Object"

getwalletcoins

Returns coins balance.

Params
  • enc_pubkey HEXASTRING (optional). If provided, return only this public key balance
  • b58_pubkey String (optional). If provided, return only this public key balance
    • Note: If use enc_pubkey and b58_pubkey together and is not the same public key, will return an error
Result (PASCURRENCY)

Returns a PASCURRENCY value with maximum 4 decimals

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"getwalletcoins","id":123}' http://localhost:4003

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

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}' http://localhost:4003

// 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}' http://localhost:4003

// 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}' http://localhost:4003

// 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
  • start Integer (optional, default = 0). If provided, will start at this position (index starts at position 0)
  • max Integer (optional, default = 100). If provided, will return max registers. If not provided, max=100 by default
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}' http://localhost:4003

// 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
  • start Integer (optional, default = 0). If provided, will start at this position (index starts at position 0)
  • max Integer (optional, default = 100). If provided, will return max registers. If not provided, max=100 by default
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}' http://localhost:4003

// 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}' http://localhost:4003

// 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}' http://localhost:4003

// 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}' http://localhost:4003

// 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}' http://localhost:4003

// 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
  • new_b58_pubkey : String - New public key in Base 58 format (the same that Application Wallet exports)
  • 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}' http://localhost:4003

// 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}' http://localhost:4003

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

changekeys

Executes a change key operation, changing "account" public key for a new one, in multiple accounts Works like [changekey][#changekey]

Params
  • accounts : String - List of accounts separated by a comma
  • See all other params from [changekey][#changekey]
Result

If operation is successfull will return a JSON Object with:

  • accounts_total : Integer - Total of distinct accounts at param accounts
  • accounts_ok : Integer - Total of accounts with change key executed
  • accounts_error : Integer - Total of accounts that a change key has not been executed
  • errors : String - Errors description

If operation cannot be made, a JSON-RPC error message is returned

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}' http://localhost:4003

// 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}' http://localhost:4003

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

decodepubkey

Decodes an encoded public key

Params
  • enc_pubkey : HEXASTRING with encoded public key
  • b58_pubkey String. b58_pubkey is the same value that Application Wallet exports as a public key
    • Note: If use enc_pubkey and b58_pubkey together and is not the same public key, will return an error
Result

Returns a JSON Object with a "Public Key Object"

Example
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"decodepubkey","params":{"enc_pubkey":"CA0220000E60B6F76778CFE8678E30369BA7B2C38D0EC93FC3F39E61468E29FEC39F13BF2000572EDE3C44CF00FF86AFF651474D53CCBDF86B953F1ECE5FB8FC7BB6FA16F114","id":123}' http://localhost:4003

// 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 or b58_pubkey param. See decodepubkey or encodepubkey
      • enc_pubkey : HEXASTRING
      • or
      • b58_pubkey : String
    • 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}' http://localhost:4003

// 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}' http://localhost:4003

// 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

Returns a JSON Object with a "Public Key Object"

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

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

lock

Locks the Wallet if it has a password, otherwise wallet cannot be locked

Params

(none)

Result

Returns a Boolean indicating if Wallet is locked. If false that means that Wallet has an empty password and cannot be locked

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}' http://localhost:4003

// 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}' http://localhost:4003

// 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}' http://localhost:4003

// 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}' http://localhost:4003

// 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}' http://localhost:4003

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