Platform gRPC Endpoints

Detailed platform gRPC endpoint reference

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.

Data Proofs and Metadata

Since Dash Platform 0.20.0, Platform gRPC endpoints can provide proofs so the data returned for a request can be verified as being valid. Full support is not yet available in the JavaScript client, but can be used via the low level dapi-grpc library. Additional information about proofs is available on the Platform Proofs page.

Some additional metadata is also provided with responses:

  • height: the last committed platform chain height
  • coreChainLockedHeight: height of the most recent ChainLock on the core chain

Endpoint Details

broadcastStateTransition

📘

Updated in Dash Platform 0.18.0

Since Dash Platform 0.18.0, broadcastStateTransition returns once the state transition has been accepted into the mempool instead of waiting until it is confirmed.

Note: The waitForStateTransitionResult endpoint should be used in conjunction with this one for instances where proof of block confirmation is required.

Broadcasts a state transition to the platform via DAPI to make a change to layer 2 data.

Returns: Nothing or error
Parameters:

NameTypeRequiredDescription
state_transitionBytes (Base64)YesA state transition

Example Request and Response

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

const client = new DAPIClient();
const dpp = new DashPlatformProtocol();

// Data Contract Create State Transition (JSON)
const stateTransitionObject = {
  protocolVersion: 0,
  type: 0,
  signature: 'HxAipUsLWQBE++C1suSRNQiQh91rI1LZbblvQhk2erUaIvRneAagxGYYsXXYNvEeO+lBzlF1a9KHGGTHgnO/8Ts=',
  signaturePublicKeyId: 0,
  dataContract: {
    protocolVersion: 0,
    '$id': 'CMc7RghKkHeHtFdwfSX5Hzy7CUdpCEJnwsbfHdsbmJ32',
    '$schema': 'https://schema.dash.org/dpp-0-4-0/meta/data-contract',
    ownerId: '8Z3ps3tNoGoPEDYerUNCd4yi7zDwgBh2ejgSMExxvkfD',
    documents: {
      note: {
        properties: { message: { type: 'string' } },
        additionalProperties: false,
      },
    },
  },
  entropy: '+RqUArypdL8f/gCMAo4b6c3CoQvxHzsQG0BdYrT5QT0=',
};

// Convert signature and entropy to buffer
stateTransitionObject.signature = Buffer.from(stateTransitionObject.signature, 'base64');
stateTransitionObject.entropy = Buffer.from(stateTransitionObject.entropy, 'base64');

dpp.stateTransition.createFromObject(stateTransitionObject, { skipValidation: true })
  .then((stateTransition) => {
    client.platform.broadcastStateTransition(stateTransition.toBuffer())
      .then(() => console.log('State Transition broadcast successfully'));
  });
const {
  v0: {
    PlatformPromiseClient,
    BroadcastStateTransitionRequest,
  },
} = require('@dashevo/dapi-grpc');
const DashPlatformProtocol = require('@dashevo/dpp');

const platformPromiseClient = new PlatformPromiseClient(
  'http://seed-1.testnet.networks.dash.org:3010',
);

const dpp = new DashPlatformProtocol();

// Data Contract Create State Transition (JSON)
const stateTransitionObject = {
  protocolVersion: 0,
  type: 0,
  signature: 'HxAipUsLWQBE++C1suSRNQiQh91rI1LZbblvQhk2erUaIvRneAagxGYYsXXYNvEeO+lBzlF1a9KHGGTHgnO/8Ts=',
  signaturePublicKeyId: 0,
  dataContract: {
    protocolVersion: 0,
    '$id': 'CMc7RghKkHeHtFdwfSX5Hzy7CUdpCEJnwsbfHdsbmJ32',
    '$schema': 'https://schema.dash.org/dpp-0-4-0/meta/data-contract',
    ownerId: '8Z3ps3tNoGoPEDYerUNCd4yi7zDwgBh2ejgSMExxvkfD',
    documents: {
      note: {
        properties: { message: { type: 'string' } },
        additionalProperties: false,
      },
    },
  },
  entropy: '+RqUArypdL8f/gCMAo4b6c3CoQvxHzsQG0BdYrT5QT0=',
};

// Convert signature and entropy to buffer
stateTransitionObject.signature = Buffer.from(stateTransitionObject.signature, 'base64');
stateTransitionObject.entropy = Buffer.from(stateTransitionObject.entropy, 'base64');

const broadcastStateTransitionRequest = new BroadcastStateTransitionRequest();

dpp.stateTransition.createFromObject(stateTransitionObject, { skipValidation: true })
  .then((stateTransition) => {
    console.log(stateTransition);
    broadcastStateTransitionRequest.setStateTransition(stateTransition.toBuffer());

    platformPromiseClient.broadcastStateTransition(broadcastStateTransitionRequest)
      .then(() => console.log('State Transition broadcast successfully'))
      .catch((e) => {
        console.error(e);
        console.error(e.metadata);
      });
  })
  .catch((e) => console.error(e));
# Submit an identity create State Transition
# `state_transition` must be represented in base64
grpcurl -proto protos/platform/v0/platform.proto -plaintext \
  -d '{
    "state_transition":"pWR0eXBlAmlzaWduYXR1cmV4WEg3TWhFWDQ0Z3JzMVIwTE9XTU5IZjAxWFNpYVFQcUlVZ1JLRXQyMkxHVERsUlUrZ1BwQUlUZk5JUmhXd3IvYTVHd0lzWm1idGdYVVFxcVhjbW9lQWtUOD1qcHVibGljS2V5c4GkYmlkAGRkYXRheCxBdzh2UmYxeFFCTlVLbzNiY2llaHlaR2NhM0hBSThkY0ZvVWJTK3hLb0lITmR0eXBlAGlpc0VuYWJsZWT1bmxvY2tlZE91dFBvaW50eDBLT1VUSHB5YnFPek9DNnhEVUhFWm9uc1lNSVpqcGppTHFZNnkxYmlWNWxRQUFBQUFvcHJvdG9jb2xWZXJzaW9uAA=="

    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Platform/broadcastStateTransition

Response: No response except on error

getIdentity

🚧

Breaking changes

As of Dash Platform 0.21 the protocolVersion is no longer included in the CBOR-encoded data. It is instead prepended to the data following CBOR encoding.

Returns: Identity information for the requested identity
Parameters:

NameTypeRequiredDescription
idBytesYesAn identity id
proveBooleanNoSet to true to receive a proof that contains the requested identity

📘

Note: When requesting proofs, the data requested will be encoded as part of the proof in the response. See the Platform Proofs page for details on decoding the data.

Example Request and Response

const DAPIClient = require('@dashevo/dapi-client');
const Identifier = require('@dashevo/dpp/lib/Identifier');
const cbor = require('cbor');

const client = new DAPIClient();

const identityId = Identifier.from('3nJjUPiVbwvKRpZ6pLUwVjcFoEJdeqPqakobctF3uECU');
client.platform.getIdentity(identityId).then((response) => {
  // Strip off protocol version (leading 4 bytes) and decode
  const identity = cbor.decode(response.identity.slice(4, response.identity.length));
  console.log(identity);
});
const {
  v0: {
    PlatformPromiseClient,
  },
} = require('@dashevo/dapi-grpc');
const Identifier = require('@dashevo/dpp/lib/Identifier');
const cbor = require('cbor');

const platformPromiseClient = new PlatformPromiseClient(
  'http://seed-1.testnet.networks.dash.org:3010',
);

const id = Identifier.from('3nJjUPiVbwvKRpZ6pLUwVjcFoEJdeqPqakobctF3uECU');
const idBuffer = Buffer.from(id);
const getIdentityRequest = new GetIdentityRequest();
getIdentityRequest.setId(idBuffer);
getIdentityRequest.setProve(false);

platformPromiseClient.getIdentity(getIdentityRequest)
  .then((response) => {
    const identityResponse = response.getIdentity();
    const identityBuffer = Buffer.from(identityResponse);
    // Strip off protocol version (leading 4 bytes) and decode
    console.log(cbor.decode(identityBuffer.slice(4, identityBuffer.length)));
  })
  .catch((e) => console.error(e));
# `id` must be represented in base64
grpcurl -proto protos/platform/v0/platform.proto -plaintext \
  -d '{
    "id":"KVKPajj5rQh5LpoDLZk8dtHFbASadzzPvgLPFm4P9q0="
    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Platform/getIdentity
# `id` must be represented in base64
grpcurl -proto protos/platform/v0/platform.proto -plaintext \
  -d '{
    "id":"KVKPajj5rQh5LpoDLZk8dtHFbASadzzPvgLPFm4P9q0=",
    "prove":true
    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Platform/getIdentity
{
  id: <Buffer 29 52 8f 6a 38 f9 ad 08 79 2e 9a 03 2d 99 3c 76 d1 c5 6c 04 9a 77 3c cf be 02 cf 16 6e 0f f6 ad>,
  balance: 48570,
  revision: 0,
  publicKeys: [
    {
      id: 0,
      data: <Buffer 02 f2 3b 65 31 e0 46 01 e4 ee ed 53 c1 44 e0 6a 28 2e e0 56 40 8a 8b 22 97 9c a7 85 c8 11 b9 9c 59>,
      type: 0
    }
  ]
}
{
  "identity": "AQAAAKRiaWRYIClSj2o4+a0IeS6aAy2ZPHbRxWwEmnc8z74CzxZuD/atZ2JhbGFuY2UZvbpocmV2aXNpb24AanB1YmxpY0tleXOBo2JpZABkZGF0YVghAvI7ZTHgRgHk7u1TwUTgaigu4FZAiosil5ynhcgRuZxZZHR5cGUA",
  "metadata": {
    "height": "4087",
    "coreChainLockedHeight": 602550
  }
}
// The storeTreeProof contains the requested data
{
  "proof": {
    "rootTreeProof": "v+99FytmaUPDP65HthQllBL1JDXt2Zu/kzFEQRw66rQYEo4ebstz3CguuRKrBP2Cf9cMMDexKgMIX8a4ZnbtzoRRIZem6YRYjSO6e78TdtgwuuxbtaQ9t7uZI8EZI3q6",
    "storeTreeProofs": {
      "identitiesProof": "Ab3+9XLi6seGGvOeC+YPa6820TTQJg+/VLMTI1l+Aa8uAkoa3iCpnFGnKNsuN3kmkoZziG5966ZPSns0QhkuLhcMEAHqjSiFz+M0EUzxVwMmeYDzBJtbkAf1Dt5ZV0wHrPSy/gJQNWR9nfgU8mqYVkQZvn+cgnUW+ZfuJItL0Vihkm7sbhABLEnf8Xpnpkn4RBFx+7Ftc9+kA+AeukotY1n+Cry0f/kDIClSj2o4+a0IeS6aAy2ZPHbRxWwEmnc8z74CzxZuD/atAH4BAAAApGJpZFggKVKPajj5rQh5LpoDLZk8dtHFbASadzzPvgLPFm4P9q1nYmFsYW5jZRm9umhyZXZpc2lvbgBqcHVibGljS2V5c4GjYmlkAGRkYXRhWCEC8jtlMeBGAeTu7VPBROBqKC7gVkCKiyKXnKeFyBG5nFlkdHlwZQAQAYr7Kwts+/MCvdAEAfe0qlM939luA/bmFk/NWn3j+4XMERERAk89CgifO1qwuFxa+KOoekT9JZIRnwerQ3sSHCSWvqliEAHjXdp0pKgcIEmQaWfWG970qaHE8iQWEjp0z9WXkJYAxBECJq4BeR3ucca+V5J1neVZaj8NTzLC7tTtPzMDJ1udK3sQAVSpKcwG23rP77Wl0GF9QCtgi7AMuIA4W6ZDlpJ5guKKEQ=="
    },
    "signatureLlmqHash": "AAAA1p9iTq8xLCvbRQKqUT0TgOksMi4pRUwPp3mPhDI=",
    "signature": "lk8TENYBLqhmBaw/IzyR8IjCM7aBhMne/EMwocLs0oQ+JyOKrNTJ8giIgc1aXAKCFDdqgpOMZNPnZcdgcnqJVUpRqIAebTlVdvIZODYpG8LZTA+cQtOqTwVkH3A3c+tr"
  },
  "metadata": {
    "height": "4087",
    "coreChainLockedHeight": 602550
  }
}

getIdentitiesByPublicKeyHashes

Returns: Identity information associated with the provided public key hashes
Parameters:

NameTypeRequiredDescription
public_key_hashesBytesYesPublic key hashes (double-sha256) of identity public keys
proveBooleanNoSet to true to receive a proof that contains the requested identities

📘

Note: When requesting proofs, the data requested will be encoded as part of the proof in the response. See the Platform Proofs page for details on decoding the data.

📘

Public key hash

Note: the hash must be done using all fields of the identity public key object - e.g.

{
  id: 0,
  type: 0,
  data: 'A/Wmv+LhxAjSBE19d3OJCUawUiYORF5HDDetZbvTDgQQ'
}

When using the js-dpp library, the hash can be accessed via the IdentityPublicKey object's hash method (e.g. identity.getPublicKeyById(0).hash()).

Example Request and Response

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

const client = new DAPIClient();
const dpp = new DashPlatformProtocol();

const publicKeyHash = '1e5debba672f105e6f0635fa21a6491d459b8d83';
const publicKeysBuffer = [Buffer.from(publicKeyHash, 'hex')];

dpp.initialize().then(() => {
  client.platform.getIdentitiesByPublicKeyHashes(publicKeysBuffer)
    .then((response) => {
      const retrievedIdentity = dpp.identity.createFromBuffer(response.identities[0]);
      console.log(retrievedIdentity.toJSON());
    });
});
const {
  v0: {
    PlatformPromiseClient,
    GetIdentitiesByPublicKeyHashesRequest,
  },
} = require('@dashevo/dapi-grpc');
const cbor = require('cbor');
const DashPlatformProtocol = require('@dashevo/dpp');

const dpp = new DashPlatformProtocol();

dpp.initialize()
  .then(() => {
    const platformPromiseClient = new PlatformPromiseClient(
      'http://seed-1.testnet.networks.dash.org:3010',
    );

    const publicKeyHash = '1e5debba672f105e6f0635fa21a6491d459b8d83';
    const publicKeysBuffer = [Buffer.from(publicKeyHash, 'hex')];

    const getIdentitiesByPublicKeyHashesRequest = new GetIdentitiesByPublicKeyHashesRequest();
    getIdentitiesByPublicKeyHashesRequest.setPublicKeyHashesList(publicKeysBuffer);

    platformPromiseClient.getIdentitiesByPublicKeyHashes(getIdentitiesByPublicKeyHashesRequest)
      .then((response) => {
        const identitiesResponse = response.getIdentitiesList();
        const identities = identitiesResponse
            .map((identity) => (identity.length > 0 ? Buffer.from(identity) : null));
        console.log(dpp.identity.createFromBuffer(identityBuffers[0]).toJSON());
      })
      .catch((e) => console.error(e));
    });
# `public_key_hashes` must be represented in base64
grpcurl -proto protos/platform/v0/platform.proto -plaintext \
  -d '{
      "public_key_hashes":"Hl3rumcvEF5vBjX6IaZJHUWbjYM="
    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Platform/getIdentitiesByPublicKeyHashes
# `public_key_hashes` must be represented in base64
grpcurl -proto protos/platform/v0/platform.proto -plaintext \
  -d '{
    "public_key_hashes":"Hl3rumcvEF5vBjX6IaZJHUWbjYM=",
    "prove": true
    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Platform/getIdentitiesByPublicKeyHashes
{
  protocolVersion: 1,
  id: '3nJjUPiVbwvKRpZ6pLUwVjcFoEJdeqPqakobctF3uECU',
  publicKeys: [
    {
      id: 0,
      type: 0,
      data: 'AvI7ZTHgRgHk7u1TwUTgaigu4FZAiosil5ynhcgRuZxZ'
    }
  ],
  balance: 48570,
  revision: 0
}
{
  "identities": [
    "AQAAAKRiaWRYIClSj2o4+a0IeS6aAy2ZPHbRxWwEmnc8z74CzxZuD/atZ2JhbGFuY2UZvbpocmV2aXNpb24AanB1YmxpY0tleXOBo2JpZABkZGF0YVghAvI7ZTHgRgHk7u1TwUTgaigu4FZAiosil5ynhcgRuZxZZHR5cGUA"
  ],
  "metadata": {
    "height": "4087",
    "coreChainLockedHeight": 602550
  }
}
// The storeTreeProof contains the requested data
{
  "proof": {
    "rootTreeProof": "v+99FytmaUPDP65HthQllBL1JDXt2Zu/kzFEQRw66rS90a8Geh7WyM0bzw8iZZtO9TOcTRdGxiKyNu1w1SZtmoRRIZem6YRYjSO6e78TdtgwuuxbtaQ9t7uZI8EZI3q6",
    "storeTreeProofs": {
      "identitiesProof": "Ab3+9XLi6seGGvOeC+YPa6820TTQJg+/VLMTI1l+Aa8uAkoa3iCpnFGnKNsuN3kmkoZziG5966ZPSns0QhkuLhcMEAHqjSiFz+M0EUzxVwMmeYDzBJtbkAf1Dt5ZV0wHrPSy/gJQNWR9nfgU8mqYVkQZvn+cgnUW+ZfuJItL0Vihkm7sbhABLEnf8Xpnpkn4RBFx+7Ftc9+kA+AeukotY1n+Cry0f/kDIClSj2o4+a0IeS6aAy2ZPHbRxWwEmnc8z74CzxZuD/atAH4BAAAApGJpZFggKVKPajj5rQh5LpoDLZk8dtHFbASadzzPvgLPFm4P9q1nYmFsYW5jZRm9umhyZXZpc2lvbgBqcHVibGljS2V5c4GjYmlkAGRkYXRhWCEC8jtlMeBGAeTu7VPBROBqKC7gVkCKiyKXnKeFyBG5nFlkdHlwZQAQAYr7Kwts+/MCvdAEAfe0qlM939luA/bmFk/NWn3j+4XMERERAk89CgifO1qwuFxa+KOoekT9JZIRnwerQ3sSHCSWvqliEAHjXdp0pKgcIEmQaWfWG970qaHE8iQWEjp0z9WXkJYAxBECJq4BeR3ucca+V5J1neVZaj8NTzLC7tTtPzMDJ1udK3sQAVSpKcwG23rP77Wl0GF9QCtgi7AMuIA4W6ZDlpJ5guKKEQ==",
      "publicKeyHashesToIdentityIdsProof": "AVVHdharvPK/abcB6ecVTNNxm3n21DO7rsQ8CYCtIDXOAvvzK1glOGZsp5eAfNCH334Wyu/+v8QKlESPYuNw73u6EAHiHt1xB1elAoisxa5A7aamXJFlnDVp+fO+39Dww8/ANxE="
    },
    "signatureLlmqHash": "AAAA1p9iTq8xLCvbRQKqUT0TgOksMi4pRUwPp3mPhDI=",
    "signature": "lk8TENYBLqhmBaw/IzyR8IjCM7aBhMne/EMwocLs0oQ+JyOKrNTJ8giIgc1aXAKCFDdqgpOMZNPnZcdgcnqJVUpRqIAebTlVdvIZODYpG8LZTA+cQtOqTwVkH3A3c+tr"
  },
  "metadata": {
    "height": "4087",
    "coreChainLockedHeight": 602550
  }
}

getIdentityIdsByPublicKeyHashes

Returns: Identity ID(s) associated with the provided public key hashes
Parameters:

NameTypeRequiredDescription
public_key_hashesBytesYesPublic key hash (double-sha256) of an identity's public key
proveBooleanNoSet to true to receive a proof that contains the requested identity IDs

📘

Note: When requesting proofs, the data requested will be encoded as part of the proof in the response. See the Platform Proofs page for details on decoding the data.

📘

Public key hash

Note: the hash must be done using all fields of the identity public key object - e.g.

{
  id: 0,
  type: 0,
  data: 'A/Wmv+LhxAjSBE19d3OJCUawUiYORF5HDDetZbvTDgQQ'
}

When using the js-dpp library, the hash can be accessed via the IdentityPublicKey object's hash method (e.g. identity.getPublicKeyById(0).hash()).

Example Request and Response

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

const client = new DAPIClient();

// Get identity from hex public key hash
const publicKeyHash = '1e5debba672f105e6f0635fa21a6491d459b8d83';
const publicKeysBuffer = [Buffer.from(publicKeyHash, 'hex')];

client.platform.getIdentityIdsByPublicKeyHashes(publicKeysBuffer)
  .then((response) => {
    for (const r of response) {
      console.log(`Identity ID: ${Identifier.from(r).toString()}`);
    }
  });
const {
  v0: {
    PlatformPromiseClient,
    GetIdentityIdsByPublicKeyHashesRequest,
  },
} = require('@dashevo/dapi-grpc');
const Identifier = require('@dashevo/dpp/lib/Identifier');

const platformPromiseClient = new PlatformPromiseClient(
  'http://seed-1.testnet.networks.dash.org:3010',
);

const publicKeyHash = '1e5debba672f105e6f0635fa21a6491d459b8d83';
const publicKeysBuffer = [Buffer.from(publicKeyHash, 'hex')];

const getIdentityIdsByPublicKeyHashesRequest = new GetIdentityIdsByPublicKeyHashesRequest();
getIdentityIdsByPublicKeyHashesRequest.setPublicKeyHashesList(publicKeysBuffer);

platformPromiseClient.getIdentityIdsByPublicKeyHashes(getIdentityIdsByPublicKeyHashesRequest)
  .then((response) => {
    for (const r of response.getIdentityIdsList()) {
      const id = Buffer.from(r);
      console.log(`Identity ID: ${Identifier.from(id).toString()}`);
    }
  })
  .catch((e) => console.error(e));
# `public_key_hashes` must be represented in base64
grpcurl -proto protos/platform/v0/platform.proto -plaintext \
  -d '{
    "public_key_hashes":"Hl3rumcvEF5vBjX6IaZJHUWbjYM="
    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Platform/getIdentityIdsByPublicKeyHashes
# `public_key_hashes` must be represented in base64
grpcurl -proto protos/platform/v0/platform.proto -plaintext \
  -d '{
    "public_key_hashes":"Hl3rumcvEF5vBjX6IaZJHUWbjYM=",
    "prove": true
    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Platform/getIdentityIdsByPublicKeyHashes
Identity ID: 3nJjUPiVbwvKRpZ6pLUwVjcFoEJdeqPqakobctF3uECU
{
  "identityIds": [
    "KVKPajj5rQh5LpoDLZk8dtHFbASadzzPvgLPFm4P9q0="
  ],
  "metadata": {
    "height": "4086",
    "coreChainLockedHeight": 602550
  }
}
// The storeTreeProof contains the requested data
{
  "proof": {
    "rootTreeProof": "vdGvBnoe1sjNG88PImWbTvUznE0XRsYisjbtcNUmbZoi9eaFSC/P2CNfdJ0+uFFYwUMpSE/op2o70wTCcKKFboRRIZem6YRYjSO6e78TdtgwuuxbtaQ9t7uZI8EZI3q6",
    "storeTreeProofs": {
      "publicKeyHashesToIdentityIdsProof": "ASl+f/bOOvYpB1UPrhD+OWx78EIJRDRlDQ3t81EFtxDwAxQeXeu6Zy8QXm8GNfohpkkdRZuNgwAgKVKPajj5rQh5LpoDLZk8dtHFbASadzzPvgLPFm4P9q0QAQw3DUjb35EbQujSCMbYJoBVowJeJYuF/n52Fs7SZxW7EQL78ytYJThmbKeXgHzQh99+Fsrv/r/ECpREj2LjcO97uhAB4h7dcQdXpQKIrMWuQO2mplyRZZw1afnzvt/Q8MPPwDcR"
    },
    "signatureLlmqHash": "AAAA1p9iTq8xLCvbRQKqUT0TgOksMi4pRUwPp3mPhDI=",
    "signature": "lPD7ukoFs+mbUonBdnfn95pqFK2J06DBtjtMZro+KNY7pVy4waMx057mjc8boZoOBjT9Fo0XXqGrE9JLY7cGEITd6k3KpS2kMP9/SSgnm7L/7S9LRqPnMlUF5j2Ihusl"
  },
  "metadata": {
    "height": "4086",
    "coreChainLockedHeight": 602550
  }
}

getDataContract

Returns: Data Contract information for the requested data contract
Parameters:

NameTypeRequiredDescription
idBytesYesA data contract id
proveBooleanNoSet to true to receive a proof that contains the requested data contract

📘

Note: When requesting proofs, the data requested will be encoded as part of the proof in the response. See the Platform Proofs page for details on decoding the data.

Example Request and Response

const DAPIClient = require('@dashevo/dapi-client');
const Identifier = require('@dashevo/dpp/lib/Identifier');
const cbor = require('cbor');

const client = new DAPIClient();

const contractId = Identifier.from('7sGiwoT8QaMAqEcuhB9UXLYq4oNG3r87up8fK2vvADXc');
client.platform.getDataContract(contractId).then((response) => {
  const contract = cbor.decode(response.dataContract);
  console.dir(contract, { depth: 10 });
});
const {
  v0: {
    PlatformPromiseClient,
    GetDataContractRequest,
  },
} = require('@dashevo/dapi-grpc');
const Identifier = require('@dashevo/dpp/lib/Identifier');
const cbor = require('cbor');

const platformPromiseClient = new PlatformPromiseClient(
  'http://seed-1.testnet.networks.dash.org:3010',
);

const contractId = Identifier.from('7sGiwoT8QaMAqEcuhB9UXLYq4oNG3r87up8fK2vvADXc');
const contractIdBuffer = Buffer.from(contractId);
const getDataContractRequest = new GetDataContractRequest();
getDataContractRequest.setId(contractIdBuffer);

platformPromiseClient.getDataContract(getDataContractRequest)
  .then((response) => {
    const contractResponse = response.getDataContract();
    const contractBuffer = Buffer.from(contractResponse);
    // Strip off protocol version (leading 4 bytes) and decode
    console.dir(cbor.decode(contractBuffer.slice(4, contractBuffer.length)), { depth: 5 });
  })
  .catch((e) => console.error(e));
# `id` must be represented in base64
grpcurl -proto protos/platform/v0/platform.proto -plaintext \
  -d '{
    "id":"Zgbwte3d6DhC3X1bM3BWgJPWFLAA/Cl3SL5o3lpL+bc="
    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Platform/getDataContract
# `id` must be represented in base64
grpcurl -proto protos/platform/v0/platform.proto -plaintext \
  -d '{
    "id":"Zgbwte3d6DhC3X1bM3BWgJPWFLAA/Cl3SL5o3lpL+bc=",
    "prove":true
    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Platform/getDataContract
{
  '$id': Buffer(32) [Uint8Array] [
    102,   6, 240, 181, 237, 221, 232,  56,
     66, 221, 125,  91,  51, 112,  86, 128,
    147, 214,  20, 176,   0, 252,  41, 119,
     72, 190, 104, 222,  90,  75, 249, 183
  ],
  '$schema': 'https://schema.dash.org/dpp-0-4-0/meta/data-contract',
  ownerId: Buffer(32) [Uint8Array] [
    145, 119, 123, 174, 134,  75, 184,  15,
    197, 162, 149, 223,  43, 213, 181, 107,
     93, 222, 219, 162, 204, 166, 175,  99,
     46,  49, 177,  86,  41,  54,  19, 232
  ],
  documents: {
    note: {
      type: 'object',
      properties: { message: { type: 'string' } },
      additionalProperties: false
    }
  }
}
{
  "dataContract": "AQAAAKRjJGlkWCBmBvC17d3oOELdfVszcFaAk9YUsAD8KXdIvmjeWkv5t2ckc2NoZW1heDRodHRwczovL3NjaGVtYS5kYXNoLm9yZy9kcHAtMC00LTAvbWV0YS9kYXRhLWNvbnRyYWN0Z293bmVySWRYIJF3e66GS7gPxaKV3yvVtWtd3tuizKavYy4xsVYpNhPoaWRvY3VtZW50c6Fkbm90ZaNkdHlwZWZvYmplY3RqcHJvcGVydGllc6FnbWVzc2FnZaFkdHlwZWZzdHJpbmd0YWRkaXRpb25hbFByb3BlcnRpZXP0",
  "metadata": {
    "height": "4126",
    "coreChainLockedHeight": 602597
  }
}
// The storeTreeProof contains the requested data
{
  "proof": {
    "rootTreeProof": "UoUWcVFiOzWnTwE0g+mU5HoRsBjGYxCBMTawVvEiihQi9eaFSC/P2CNfdJ0+uFFYwUMpSE/op2o70wTCcKKFboRRIZem6YRYjSO6e78TdtgwuuxbtaQ9t7uZI8EZI3q6",
    "storeTreeProofs": {
      "dataContractsProof": "AWTLA9zhqX/Iv1xWjFje9RO1gvSDeR2Nozr0jJ54zC2WAtmQfNDX/4w3ZxzF6l+WrJ6zCXaoSgj+usc/W8Sq1wAZEAFw8dhrMeRmw/D5phVlzDMTz3+GPl6bragUf98TjetMHAKAHGP8oviChW1cszz/Z3X6JNqLu0cZvbKjVqg4XTOQ0BADIGYG8LXt3eg4Qt19WzNwVoCT1hSwAPwpd0i+aN5aS/m3AOcBAAAApGMkaWRYIGYG8LXt3eg4Qt19WzNwVoCT1hSwAPwpd0i+aN5aS/m3ZyRzY2hlbWF4NGh0dHBzOi8vc2NoZW1hLmRhc2gub3JnL2RwcC0wLTQtMC9tZXRhL2RhdGEtY29udHJhY3Rnb3duZXJJZFggkXd7roZLuA/FopXfK9W1a13e26LMpq9jLjGxVik2E+hpZG9jdW1lbnRzoWRub3Rlo2R0eXBlZm9iamVjdGpwcm9wZXJ0aWVzoWdtZXNzYWdloWR0eXBlZnN0cmluZ3RhZGRpdGlvbmFsUHJvcGVydGllc/QCajFnEzRfWdMz9eb04hV6NkJ7/WnRLZapbVLvbDjP+LAQAYChpQAdFW0BPcHA4K544kYqtHtZpMvE7zyN13z6i0DEEREC1f4FCxWur82ee+34+KBPfEyNPiVO5N6/Ri9fg0zTss4QATcPUokVmwwBNhZJYxh9hWOBbVkeUYlJnMoWMHNlOE0gEQL5aC0sNYefYm/7IxrFWDfk5UOpT1Xev55SxLVAcigOCRABwxylhTyqpev1DMfV8Z/QWCjr3bZWmWqafhooeOrG75ARAkLyTiNKYJZUXcOGs3Ba+UOX2LqBnK2Mh5ZKaDl1omAbEAHpUHg/nWE0DXbMghdB9OX5WB9sKyqQciNAlX3PrpDAqhECGn4Eb3qGrD88QyS5a6hjzlfCgURpHHU3bSmITL5IR+gQAbBk1WCyJTCDPtv+5KEJRdI9YliOesShZrZIJwcZrJpEERE="
    },
    "signatureLlmqHash": "AAAA8+9g8wrkwRLpHCZTI3kZr3wCIEgIAyPgwXDe/JU=",
    "signature": "E5kGj0PbY4aHm3+3Ps8s5oM5XkIc8gpt7zgjDvyjVXqlmFD1fMgISjKtownBrDCIEXr6TjoMfpPwyG98IXe5xfeiYoUH4ZF7qElh9xt0nd+OXcmu/wznf7TTwt0+FvD/"
  },
  "metadata": {
    "height": "4158",
    "coreChainLockedHeight": 602638
  }
}

getDocuments

Returns: Document information for the requested document(s)
Parameters:

🚧
  • Parameter constraints

The where, order_by, limit, start_at, and start_after parameters must comply with the limits defined on the Query Syntax page.

Additionally, note that where and order_by must be CBOR encoded.

NameTypeRequiredDescription
data_contract_idBytesYesA data contract id
document_typeStringYesA document type defined by the data contract (e.g. preorder or domain for the DPNS contract)
where *BytesNoWhere clause to filter the results (must be CBOR encoded)
order_by *BytesNoSort records by the field(s) provided (must be CBOR encoded)
limitIntegerNoMaximum number of results to return
----------
One of the following:
start_atIntegerNoReturn records beginning with the index provided
start_afterIntegerNoReturn records beginning after the index provided
----------
proveBooleanNoSet to true to receive a proof that contains the requested document(s)

📘

Note: When requesting proofs, the data requested will be encoded as part of the proof in the response. See the Platform Proofs page for details on decoding the data.

Example Request and Response

const DAPIClient = require('@dashevo/dapi-client');
const Identifier = require('@dashevo/dpp/lib/Identifier');
const cbor = require('cbor');

const client = new DAPIClient();

const contractId = Identifier.from('7sGiwoT8QaMAqEcuhB9UXLYq4oNG3r87up8fK2vvADXc');
client.platform.getDocuments(contractId, 'note', { limit: 10 }).then((response) => {
  for (const rawData of response.documents) {
    console.log(cbor.decode(rawData.slice(4, rawData.length)));
  }
});
const {
  v0: {
    PlatformPromiseClient,
    GetDocumentsRequest,
  },
} = require('@dashevo/dapi-grpc');
const cbor = require('cbor');
const Identifier = require('@dashevo/dpp/lib/Identifier');

const platformPromiseClient = new PlatformPromiseClient(
  'http://seed-1.testnet.networks.dash.org:3010',
);

const contractId = Identifier.from('7sGiwoT8QaMAqEcuhB9UXLYq4oNG3r87up8fK2vvADXc');
const contractIdBuffer = Buffer.from(contractId);
const getDocumentsRequest = new GetDocumentsRequest();
const type = 'note';
const limit = 10;

getDocumentsRequest.setDataContractId(contractIdBuffer);
getDocumentsRequest.setDocumentType(type);
// getDocumentsRequest.setWhere(whereSerialized);
// getDocumentsRequest.setOrderBy(orderBySerialized);
getDocumentsRequest.setLimit(limit);
// getDocumentsRequest.setStartAfter(startAfter);
// getDocumentsRequest.setStartAt(startAt);

platformPromiseClient.getDocuments(getDocumentsRequest)
  .then((response) => {
    for (const document of response.getDocumentsList()) {
      const documentBuffer = Buffer.from(document);
      // Strip off protocol version (leading 4 bytes) and decode
      console.log(cbor.decode(documentBuffer.slice(4, documentBuffer.length)));
    }
  })
  .catch((e) => console.error(e));
# Request documents
# `id` must be represented in base64
grpcurl -proto protos/platform/v0/platform.proto -plaintext \
  -d '{
    "data_contract_id":"Zgbwte3d6DhC3X1bM3BWgJPWFLAA/Cl3SL5o3lpL+bc=",
    "document_type":"note",
    "limit":10
    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Platform/getDocuments
# Request documents
# `id` must be represented in base64
grpcurl -proto protos/platform/v0/platform.proto -plaintext \
  -d '{
    "data_contract_id":"Zgbwte3d6DhC3X1bM3BWgJPWFLAA/Cl3SL5o3lpL+bc=",
    "document_type":"note",
    "limit":10,
    "prove":true
    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Platform/getDocuments
{
  '$id': <Buffer f6 28 4c ec 6a 42 e8 49 b5 97 91 80 dc 4e 6d c3 61 eb 16 f0 f1 17 06 5e 6b fc a8 2f 13 1f 47 ab>,
  '$type': 'note',
  message: 'Tutorial CI Test @ Wed, 27 Oct 2021 18:07:32 GMT',
  '$ownerId': <Buffer 91 77 7b ae 86 4b b8 0f c5 a2 95 df 2b d5 b5 6b 5d de db a2 cc a6 af 63 2e 31 b1 56 29 36 13 e8>,
  '$revision': 1,
  '$dataContractId': <Buffer 66 06 f0 b5 ed dd e8 38 42 dd 7d 5b 33 70 56 80 93 d6 14 b0 00 fc 29 77 48 be 68 de 5a 4b f9 b7>
}
{
  "documents": [
    "AQAAAKZjJGlkWCD2KEzsakLoSbWXkYDcTm3DYesW8PEXBl5r/KgvEx9Hq2UkdHlwZWRub3RlZ21lc3NhZ2V4MFR1dG9yaWFsIENJIFRlc3QgQCBXZWQsIDI3IE9jdCAyMDIxIDE4OjA3OjMyIEdNVGgkb3duZXJJZFggkXd7roZLuA/FopXfK9W1a13e26LMpq9jLjGxVik2E+hpJHJldmlzaW9uAW8kZGF0YUNvbnRyYWN0SWRYIGYG8LXt3eg4Qt19WzNwVoCT1hSwAPwpd0i+aN5aS/m3"
  ],
  "metadata": {
    "height": "4181",
    "coreChainLockedHeight": 602674
  }
}
// The storeTreeProof contains the requested data
{
  "proof": {
    "rootTreeProof": "OROtAnUrAkPl0DYUzlsMB9LhJZ06ru05bOPqkHVYo+31K6UWyw8x5nPaeBOdpn9MFo4KoyAeMuO6RJhg6uhR6g==",
    "storeTreeProofs": {
      "documentsProof": "Af3qHY9UTnuT73Ae0Z/XjDkekjlH1FfZguvcpoReGdogAjr5vfOseSD5G5S0Dkw1g34k0sczimEtHbGtYcyZ7icBEAGGyGfN3RmR58TRbLWh5UAS/+BLFIFYlQ2PJQ4h6NkWxgIPfn+kvIrzjO5P4NYObIRV0+xxCl0XKmHjzWHA3rXBqRABgJ8gC7AGyacDWJHJQKx+kdMeqmOYWyO99CBLFrJZnDgCHw+XhxBZjK7OJKbo3FXfiNzBN7YvAz3gxTqaIiWknNoQAVhIL5S6zg6v57CLmcP+ve+VDXdVexvBLGfImbrJ+Z1/AqLtr92YXdne0HIJNybRNY9W6dq1zPX8IpmLihMVt+4/EAE2BzKOaX9r6X+0zBVEAXuRHEI7jhpjmPhljWlAINlI/gIRmjuSsyX7cN/ADIM0LpiCR6xmd0h/x6y+DCo/8j8KqBABHrWz3C6kWbMLNPxATaDV6CiSti/3HFNa4fkCFzBs2F8DIPYoTOxqQuhJtZeRgNxObcNh6xbw8RcGXmv8qC8TH0erANgBAAAApmMkaWRYIPYoTOxqQuhJtZeRgNxObcNh6xbw8RcGXmv8qC8TH0erZSR0eXBlZG5vdGVnbWVzc2FnZXgwVHV0b3JpYWwgQ0kgVGVzdCBAIFdlZCwgMjcgT2N0IDIwMjEgMTg6MDc6MzIgR01UaCRvd25lcklkWCCRd3uuhku4D8Wild8r1bVrXd7bosymr2MuMbFWKTYT6GkkcmV2aXNpb24BbyRkYXRhQ29udHJhY3RJZFggZgbwte3d6DhC3X1bM3BWgJPWFLAA/Cl3SL5o3lpL+bcQARO6Fxi1e5WmcVHGtcGZVW//UkDG3e5s51hmYBmrw4CxEQJKYPVW7qYg9EU9ycHP1kpqW8gIlajI7snfor/ZTlcbWxAB/YH69QkKkpIg6ZV3EoEsr4CpY6Yg/LziAypgUbGeEwIRAhI5xb5+Cfsd2m8dJ0CXWWVIPPMNFzzip3H0rJvP9kQzEAGNmmazyIMJvTKmXDKxCAol5Cbgpp/3SBf6L4tyq5gZxhEREREREQ=="
    },
    "signatureLlmqHash": "AAAA1p9iTq8xLCvbRQKqUT0TgOksMi4pRUwPp3mPhDI=",
    "signature": "k6o6k3BHGFcKU5fbdIH6wCu1dA+5WwgYlwMF9u1yvUeUn+KqzIZ+ijwlaQp5kSc+CVdFgMyVH4E5uysp+6fHSp8l1B47EdcHwe9CahdnlB4pGDA6RtCxCHLa5rrv6/eK"
  },
  "metadata": {
    "height": "4181",
    "coreChainLockedHeight": 602674
  }
}

waitForStateTransitionResult

📘

Added in Dash Platform 0.18.0

Returns: The state transition hash and either a proof that the state transition was confirmed in a block or an error.
Parameters:

NameTypeRequiredDescription
state_transition_hashBytesYesHash of the state transition
proveBooleanYesSet to true to request a proof

📘

Note: When requesting proofs, the data requested will be encoded as part of the proof in the response. See the Platform Proofs page for details on decoding the data.

Example Request and Response

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

const client = new DAPIClient();
const dpp = new DashPlatformProtocol();

const stateTransitionObject = {
  protocolVersion: 0,
  type: 0,
  signature: 'HxAipUsLWQBE++C1suSRNQiQh91rI1LZbblvQhk2erUaIvRneAagxGYYsXXYNvEeO+lBzlF1a9KHGGTHgnO/8Ts=',
  signaturePublicKeyId: 0,
  dataContract: {
    protocolVersion: 0,
    '$id': 'CMc7RghKkHeHtFdwfSX5Hzy7CUdpCEJnwsbfHdsbmJ32',
    '$schema': 'https://schema.dash.org/dpp-0-4-0/meta/data-contract',
    ownerId: '8Z3ps3tNoGoPEDYerUNCd4yi7zDwgBh2ejgSMExxvkfD',
    documents: {
      note: {
        properties: { message: { type: 'string' } },
        additionalProperties: false,
      },
    },
  },
  entropy: '+RqUArypdL8f/gCMAo4b6c3CoQvxHzsQG0BdYrT5QT0=',
};

// Convert signature and entropy to buffer
stateTransitionObject.signature = Buffer.from(stateTransitionObject.signature, 'base64');
stateTransitionObject.entropy = Buffer.from(stateTransitionObject.entropy, 'base64');

dpp.stateTransition.createFromObject(stateTransitionObject, { skipValidation: true })
  .then((stateTransition) => {
    //  Calculate state transition hash
    const hash = crypto.createHash('sha256')
      .update(stateTransition.toBuffer())
      .digest();

    console.log(`Requesting proof of state transition with hash:\n\t${hash.toString('hex')}`);

    client.platform.waitForStateTransitionResult(hash, { prove: true })
      .then((response) => {
        console.log(response);
      });
  });
const {
  v0: {
    PlatformPromiseClient,
    WaitForStateTransitionResultRequest,
  },
} = require('@dashevo/dapi-grpc');
const DashPlatformProtocol = require('@dashevo/dpp');
const crypto = require('crypto');

const platformPromiseClient = new PlatformPromiseClient(
  'http://seed-1.testnet.networks.dash.org:3010',
);

const dpp = new DashPlatformProtocol();

const stateTransitionObject = {
  protocolVersion: 0,
  type: 0,
  signature: 'HxAipUsLWQBE++C1suSRNQiQh91rI1LZbblvQhk2erUaIvRneAagxGYYsXXYNvEeO+lBzlF1a9KHGGTHgnO/8Ts=',
  signaturePublicKeyId: 0,
  dataContract: {
    protocolVersion: 0,
    '$id': 'CMc7RghKkHeHtFdwfSX5Hzy7CUdpCEJnwsbfHdsbmJ32',
    '$schema': 'https://schema.dash.org/dpp-0-4-0/meta/data-contract',
    ownerId: '8Z3ps3tNoGoPEDYerUNCd4yi7zDwgBh2ejgSMExxvkfD',
    documents: {
      note: {
        properties: { message: { type: 'string' } },
        additionalProperties: false,
      },
    },
  },
  entropy: '+RqUArypdL8f/gCMAo4b6c3CoQvxHzsQG0BdYrT5QT0=',
};

// Convert signature and entropy to buffer
stateTransitionObject.signature = Buffer.from(stateTransitionObject.signature, 'base64');
stateTransitionObject.entropy = Buffer.from(stateTransitionObject.entropy, 'base64');

dpp.stateTransition.createFromObject(stateTransitionObject, { skipValidation: true })
  .then((stateTransition) => {
    //  Calculate state transition hash
    const hash = crypto.createHash('sha256')
      .update(stateTransition.toBuffer())
      .digest();

    const waitForStateTransitionResultRequest = new WaitForStateTransitionResultRequest();
    waitForStateTransitionResultRequest.setStateTransitionHash(hash);
    waitForStateTransitionResultRequest.setProve(true);

    console.log(`Requesting proof of state transition with hash:\n\t${hash.toString('hex')}`);

    platformPromiseClient.waitForStateTransitionResult(waitForStateTransitionResultRequest)
      .then((response) => {
        const rootTreeProof = Buffer.from(response.getProof().getRootTreeProof());
        const storeTreeProof = Buffer.from(response.getProof().getStoreTreeProof());
        console.log(`Root tree proof: ${rootTreeProof.toString('hex')}`);
        console.log(`Store tree proof: ${storeTreeProof.toString('hex')}`);
      })
        .catch((e) => console.error(e));
  });
# `state_transition_hash` must be represented in base64
grpcurl -proto protos/platform/v0/platform.proto -plaintext \
  -d '{
    "state_transition_hash":"iuk7icJyRV886NAdupmjooyVUCYqYCxrpE3gjlRdOqk=",
    "prove": "true"
    }' \
  seed-1.testnet.networks.dash.org:3010 \
  org.dash.platform.dapi.v0.Platform/waitForStateTransitionResult
{
  proof: {
    rootTreeProof: <Buffer 01 00 00 00 03 26 e0 35 e0 31 82 7e 7c 27 b0 91 23 41 ed d2 11 bf 3b 90 54 70 11 2c 68 5a 8e 76 8c 68 bb 39 21 3d cf 46 6d 09 d0 7a 28 e3 e9 0b 2b 0e ... 17 more bytes>,
    storeTreeProof: <Buffer 01 0b ee 31 ce ca 2a bd 44 6a db d4 9f 13 4a 7d 70 25 96 a9 b9 02 6e c4 e1 90 95 f7 a1 b4 c9 de 1f e4 63 e6 ce f7 58 3a 5b c3 10 01 78 9b 4f 98 9a c9 ... 526 more bytes>
  }
}
Requesting proof of state transition with hash:
        8ae93b89c272455f3ce8d01dba99a3a28c9550262a602c6ba44de08e545d3aa9
Root tree proof: 010000000326e035e031827e7c27b0912341edd211bf3b905470112c685a8e768c68bb39213dcf466d09d07a28e3e90b2b0e1d1510dede30214f68e32f8cf498220101
Store tree proof: 010bee31ceca2abd446adbd49f134a7d702596a9b9026ec4e19095f7a1b4c9de1fe463e6cef7583a5bc31001789b4f989ac9f8f524f1247fed372502d8c54a3c026072d5239f074422621673c250d1c74eadbb304a10013fb54a99ef641b9a7585d6d28dd443875e435a35022d92a0711f56ae23bc13f4a630a1455970451e3f1001fe2b060fca69ce2eb3d784cec28c0f575690f131026df252af068635bdf08f5448ea67c23d9a9a02831001a7df0a9f392682d7d7d0a29bd43d932c16b0d6530320a8b7df4cadb6cdfd5b5d1bb31cbb488d241e91d60cc1341cd686a3fbb6291f19e800a5632469645820a8b7df4cadb6cdfd5b5d1bb31cbb488d241e91d60cc1341cd686a3fbb6291f196724736368656d61783468747470733a2f2f736368656d612e646173682e6f72672f6470702d302d342d302f6d6574612f646174612d636f6e7472616374676f776e657249645820703796bfd3e2bbd54505a8e04929bb05b8aecfb1cd5c013ef8a8b84511770e0c69646f63756d656e7473a1646e6f7465a26a70726f70657274696573a1676d657373616765a1647479706566737472696e67746164646974696f6e616c50726f70657274696573f46f70726f746f636f6c56657273696f6e001001d94cd40044b8485e962d80e57c1992c77a182a1611111102abe7e3f7231ed71b8c4fd7ee09d4a1f970a51cd4100139312feadce145313ef34f720e940892d0ed2405111102245c6aaaf192b51207333be85ab77c9c9393af47100128ef7d4479e4f488373d92280fe8e52a9a48a6621111
{
  "proof": {
    "rootTreeProof": "AQAAAAMm4DXgMYJ+fCewkSNB7dIRvzuQVHARLGhajnaMaLs5IT3PRm0J0Hoo4+kLKw4dFRDe3jAhT2jjL4z0mCIBAQ==",
    "storeTreeProof": "AQvuMc7KKr1EatvUnxNKfXAllqm5Am7E4ZCV96G0yd4f5GPmzvdYOlvDEAF4m0+Ymsn49STxJH/tNyUC2MVKPAJgctUjnwdEImIWc8JQ0cdOrbswShABP7VKme9kG5p1hdbSjdRDh15DWjUCLZKgcR9WriO8E/SmMKFFWXBFHj8QAf4rBg/Kac4us9eEzsKMD1dWkPExAm3yUq8GhjW98I9USOpnwj2amgKDEAGn3wqfOSaC19fQopvUPZMsFrDWUwMgqLffTK22zf1bXRuzHLtIjSQekdYMwTQc1oaj+7YpHxnoAKVjJGlkWCCot99MrbbN/VtdG7Mcu0iNJB6R1gzBNBzWhqP7tikfGWckc2NoZW1heDRodHRwczovL3NjaGVtYS5kYXNoLm9yZy9kcHAtMC00LTAvbWV0YS9kYXRhLWNvbnRyYWN0Z293bmVySWRYIHA3lr/T4rvVRQWo4EkpuwW4rs+xzVwBPviouEURdw4MaWRvY3VtZW50c6Fkbm90ZaJqcHJvcGVydGllc6FnbWVzc2FnZaFkdHlwZWZzdHJpbmd0YWRkaXRpb25hbFByb3BlcnRpZXP0b3Byb3RvY29sVmVyc2lvbgAQAdlM1ABEuEheli2A5XwZksd6GCoWERERAqvn4/cjHtcbjE/X7gnUoflwpRzUEAE5MS/q3OFFMT7zT3IOlAiS0O0kBRERAiRcaqrxkrUSBzM76Fq3fJyTk69HEAEo731EeeT0iDc9kigP6OUqmkimYhER"
  }
}

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?