Hey! These docs are for version 0.19.0, which is no longer officially supported. Click here for the latest version, 0.21.0!

Core gRPC Endpoints

Detailed core gRPC endpoint reference

📘

gRPC Overview

Please refer to the gRPC Overview for details regarding running the examples shown below, encoding/decoding the request/response data, and clients available for several languages.

Endpoint Details

broadcastTransaction

Returns: The transaction id (TXID) if successful
Parameters:

NameTypeRequiredDescription
transactionBytesYesA raw transaction
allow_high_feesBooleanNoEnables bypassing the high fee check
bypass_limitsBooleanNo

Example Request and Response

const DAPIClient = require('@dashevo/dapi-client');
const { Transaction } = require('@dashevo/dashcore-lib');

const client = new DAPIClient({
  seeds: [{
    host: 'seed-1.testnet.networks.dash.org',
    port: 3000
  }],
});

const tx = Transaction('02000000022fd1c4583099109524b8216d712373bd837d24a502414fcadd8ae94753c3d87e010000006a47304402202cbdc560898ad389005fbe231fb345da503d838cfadab738a7d2f57bdd7ff77c02206e02b9f05c3dfb380d158949407372f26fa8ecc66956297792509c2f700723d1012103422fa857d5049000c22c3188e84557da5b783c2ef54b83a76a2933a0564c22dafeffffff07e987f3bb114c4370b937915e980657e2706135e21fbd8972a5534c804d5495000000006a473044022041a69c058035a2a8c88715c018efcb77a9ee3a08b72fd24afe8591364cee8dc002203026f115ac9c7206a985f71422ac38d451bde092d708bfb81ef35b2968f4ee34012102f0ce58f50515d04d4ff01a550a4d3246fbdc9d27031ef7d883e845b6b41f0e4efeffffff0269440f00000000001976a91465f6a3d634ba58247825c6fd55174ca72fdcdbd988ac00e1f505000000001976a9144139b147b5cef5fef5bcdb02fcdf55e426f74dbb88ac4d5b0600');

client.core.broadcastTransaction(tx.toBuffer())
  .then((response) => console.log(response));
const {
  v0: {
    CorePromiseClient,
  },
} = require('@dashevo/dapi-grpc');
const { Transaction } = require('@dashevo/dashcore-lib');

const corePromiseClient = new CorePromiseClient('http://seed-1.testnet.networks.dash.org:3010');

const tx = Transaction('02000000022fd1c4583099109524b8216d712373bd837d24a502414fcadd8ae94753c3d87e010000006a47304402202cbdc560898ad389005fbe231fb345da503d838cfadab738a7d2f57bdd7ff77c02206e02b9f05c3dfb380d158949407372f26fa8ecc66956297792509c2f700723d1012103422fa857d5049000c22c3188e84557da5b783c2ef54b83a76a2933a0564c22dafeffffff07e987f3bb114c4370b937915e980657e2706135e21fbd8972a5534c804d5495000000006a473044022041a69c058035a2a8c88715c018efcb77a9ee3a08b72fd24afe8591364cee8dc002203026f115ac9c7206a985f71422ac38d451bde092d708bfb81ef35b2968f4ee34012102f0ce58f50515d04d4ff01a550a4d3246fbdc9d27031ef7d883e845b6b41f0e4efeffffff0269440f00000000001976a91465f6a3d634ba58247825c6fd55174ca72fdcdbd988ac00e1f505000000001976a9144139b147b5cef5fef5bcdb02fcdf55e426f74dbb88ac4d5b0600');

corePromiseClient.client.broadcastTransaction({ transaction: tx.toBuffer() })
  .then((response) => console.log(response));
{
  transactionId: '552eaf24a60014edcbbb253dbc4dd68766532cab3854b44face051cedcfd578f'
}

getStatus

🚧

Breaking change in Dash Platform 0.19.0

The structure of the response has been reformatted in Dash Platform 0.19.0 (PR 107). See the previous version of documentation for details of the older format.

Returns: Status information from the Core chain
Parameters: None

Example Request and Response

const DAPIClient = require('@dashevo/dapi-client');

const client = new DAPIClient({
  seeds: [{
    host: 'seed-1.testnet.networks.dash.org',
    port: 3000
  }],
});

client.core.getStatus()
  .then((response) => console.log(response));
const {
  v0: {
    GetStatusRequest,
    CorePromiseClient,
  },
} = require('@dashevo/dapi-grpc');

const corePromiseClient = new CorePromiseClient('http://seed-1.testnet.networks.dash.org:3010');

corePromiseClient.client.getStatus(new GetStatusRequest())
  .then((response) => console.log(response));
grpcurl -plaintext -proto protos/core/v0/core.proto \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Core/getStatus
{
   "version":{
      "protocol":70219,
      "software":170000,
      "agent":"/Dash Core:0.17.0.0/"
   },
   "time":{
      "now":1620322175,
      "offset":0,
      "median":1620321299
   },
   "status":"READY",
   "syncProgress":0.9999994872058411,
   "chain":{
      "name":"test",
      "headersCount":494825,
      "blocksCount":494825,
      "bestBlockHash":<Buffer 00 00 00 82 7f 8d ac 9a b0 71 e5 4c 91 f5 1b 07 60 46 48 25 bc 08 72 f8 2e 49 23 30 3d 0b e7 9d>,
      "difficulty":0.00279997477523297,
      "chainWork":<Buffer 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 2f 14 da c3 9c f1 bb>,
      "isSynced":true,
      "syncProgress":0.9999994872058411
   },
   "masternode":{
      "status":"READY",
      "proTxHash":<Buffer aa 9b 76 35 e2 ba 2b ac 54 a1 f9 90 fc 88 92 d5 a8 ae c4 78 f7 7c c1 da 00 b9 f0 3d 9b 18 b3 58>,
      "posePenalty":0,
      "isSynced":true,
      "syncProgress":1
   },
   "network":{
      "peersCount":167,
      "fee":{
         "relay":0.00001,
         "incremental":0.00001
      }
   }
}
{
   "version":{
      "protocol":70219,
      "software":170000,
      "agent":"/Dash Core:0.17.0.0/"
   },
   "time":{
      "now":1620322383,
      "median":1620321517
   },
   "status":"READY",
   "syncProgress":0.9999996782468702,
   "chain":{
      "name":"test",
      "headersCount":494826,
      "blocksCount":494826,
      "bestBlockHash":"AAAAX/TonwIUBy4PtB2r7DPd8uuKBbOLgJZk8zqXoms=",
      "difficulty":0.002842032681099084,
      "chainWork":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAi8U2sRXM9o=",
      "isSynced":true,
      "syncProgress":0.9999996782468702
   },
   "masternode":{
      "status":"READY",
      "proTxHash":"vMf8qFk4MHCWATHJ0bMWAm/RVove6LNMNXpcVko3YaY=",
      "isSynced":true,
      "syncProgress":1
   },
   "network":{
      "peersCount":172,
      "fee":{
         "relay":1e-05,
         "incremental":1e-05
      }
   }
}

getBlock

Returns: A raw block
Parameters:

NameTypeRequiredDescription
One of the following:
hashBytesNoReturn the block matching the block hash provided
heightIntegerNoReturn the block matching the block height provided

Example Request and Response

const DAPIClient = require('@dashevo/dapi-client');

const client = new DAPIClient({
  seeds: [{
    host: 'seed-1.testnet.networks.dash.org',
    port: 3000
  }],
});

client.core.getBlockByHeight(1)
  .then((response) => console.log(response.toString('hex')));
const {
  v0: {
    CorePromiseClient,
  },
} = require('@dashevo/dapi-grpc');

const corePromiseClient = new CorePromiseClient('http://seed-1.testnet.networks.dash.org:3010');

corePromiseClient.client.getBlock({ height: 1 })
  .then((response) => console.log(response.block.toString('hex')));
const {
  v0: {
    CorePromiseClient,
  },
} = require('@dashevo/dapi-grpc');

const corePromiseClient = new CorePromiseClient('http://seed-1.testnet.networks.dash.org:3010');

corePromiseClient.client.getBlock({
  hash: '0000047d24635e347be3aaaeb66c26be94901a2f962feccd4f95090191f208c1',
}).then((response) => {
  console.log(response.block.toString('hex'));
});
grpcurl -plaintext -proto protos/core/v0/core.proto \
  -d '{
    "height":1
    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Core/getBlock

📘

Block Encoding

Note: The gRPCurl response block data is Base64 encoded

020000002cbcf83b62913d56f605c0e581a48872839428c92e5eb76cd7ad94bcaf0b00007f11dcce14075520e8f74cc4ddf092b4e26ebd23b8d8665a1ae5bfc41b58fdb4c3a95e53ffff0f1ef37a00000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0a510101062f503253482fffffffff0100743ba40b0000002321020131f38ae3eb0714531dbfc3f45491b4131d1211e3777177636388bb5a74c3e4ac00000000
{
  "block": "AgAAACy8+DtikT1W9gXA5YGkiHKDlCjJLl63bNetlLyvCwAAfxHczhQHVSDo90zE3fCStOJuvSO42GZaGuW/xBtY/bTDqV5T//8PHvN6AAABAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8KUQEBBi9QMlNIL/////8BAHQ7pAsAAAAjIQIBMfOK4+sHFFMdv8P0VJG0Ex0SEeN3cXdjY4i7WnTD5KwAAAAA"
}

getTransaction

Returns: A raw transaction
Parameters:

NameTypeRequiredDescription
idStringYesA transaction id (TXID)

Example Request and Response

const DAPIClient = require('@dashevo/dapi-client');

const client = new DAPIClient({
  seeds: [{
    host: 'seed-1.testnet.networks.dash.org',
    port: 3000
  }],
});

const txid = '4004d3f9f1b688f2babb1f98ea48e1472be51e29712f942fc379c6e996cdd308';
client.core.getTransaction(txid)
  .then((response) => console.log(response.toString('hex')));
const {
  v0: {
    CorePromiseClient,
  },
} = require('@dashevo/dapi-grpc');

const corePromiseClient = new CorePromiseClient('http://seed-1.testnet.networks.dash.org:3010');

const txid = '4004d3f9f1b688f2babb1f98ea48e1472be51e29712f942fc379c6e996cdd308';

corePromiseClient.client.getTransaction({ id: txid })
  .then((response) => console.log(response.transaction.toString('hex')));
grpcurl -plaintext -proto protos/core/v0/core.proto \
  -d '{
    "id":"4004d3f9f1b688f2babb1f98ea48e1472be51e29712f942fc379c6e996cdd308"
    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Core/getTransaction

📘

Transaction Encoding

Note: The gRPCurl response transaction data is Base64 encoded

03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff0603c25a060109ffffffff02eefccf31000000001976a9147eb25dc5af472d6bf19a877a96f0a707c2c61b7688ac65fbb74a000000001976a9141ec5c66e9789c655ae068d35088b4073345fe0b088ac00000000460200c25a0600df34a6b9c99dbbbf82698fba9f86861f24891e16c0c5e881de034c192220600d5ceaadc37b4c316e2ec7a407f8838060494aa19a403155f95c43275da3edb318
{
  "transaction": "AwAFAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8GA8JaBgEJ/////wLu/M8xAAAAABl2qRR+sl3Fr0cta/Gah3qW8KcHwsYbdoisZfu3SgAAAAAZdqkUHsXGbpeJxlWuBo01CItAczRf4LCIrAAAAABGAgDCWgYA3zSmucmdu7+CaY+6n4aGHySJHhbAxeiB3gNMGSIgYA1c6q3De0wxbi7HpAf4g4BgSUqhmkAxVflcQyddo+2zGA=="
}

subscribeToTransactionsWithProofs

Returns: streams the requested transaction information
Parameters:

NameTypeRequiredDescription
bloom_filter.v_dataBytesYesThe filter itself is simply a bit field of arbitrary byte-aligned size. The maximum size is 36,000 bytes
bloom_filter.n_hash_funcsIntegerYesThe number of hash functions to use in this filter. The maximum value allowed in this field is 50
bloom_filter.n_tweakIntegerYesA random value to add to the seed value in the hash function used by the bloom filter
bloom_filter.n_flagsIntegerYesA set of flags that control how matched items are added to the filter
----------
One of the following:
from_block_hashBytesNoReturn records beginning with the block hash provided
from_block_heightIntegerNoReturn records beginning with the block height provided
----------
countIntegerNoNumber of blocks to sync. If set to 0 syncing is continuously sends new data as well (default: 0)
send_transaction_hashes *BooleanNo

Example Request and Response

grpcurl -proto protos/core/v0/core.proto -plaintext \
  -d '{
  "from_block_height": 1,
  "count": 1,
  "bloom_filter": {
    "n_hash_funcs": 11,
    "v_data": "",
    "n_tweak": 0,
    "n_flags": 0
  }
}' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Core/subscribeToTransactionsWithProofs
{
  "rawTransactions": {
    "transactions": [
      "AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8KUQEBBi9QMlNIL/////8BAHQ7pAsAAAAjIQIBMfOK4+sHFFMdv8P0VJG0Ex0SEeN3cXdjY4i7WnTD5KwAAAAA"
    ]
  }
}
{
  "rawMerkleBlock": "AgAAACy8+DtikT1W9gXA5YGkiHKDlCjJLl63bNetlLyvCwAAfxHczhQHVSDo90zE3fCStOJuvSO42GZaGuW/xBtY/bTDqV5T//8PHvN6AAABAAAAAX8R3M4UB1Ug6PdMxN3wkrTibr0juNhmWhrlv8QbWP20AQE="
}

Deprecated Endpoints

There are no recently deprecated endpoint, but the previous version of documentation can be viewed here.

Code Reference

Implementation details related to the information on this page can be found in:


Did this page help you?