mirror of https://github.com/lukechilds/docs.git
Alexander Graebe
4 years ago
5 changed files with 23 additions and 287 deletions
@ -1,5 +0,0 @@ |
|||
## Difference between Blockchain API and Stacks Node RPC API |
|||
|
|||
The Stacks 2.0 Blockchain API is a centrally-hosted API that is accessible via the internet and enables interactions with the publicly-viewable state of the Stacks 2.0 blockchain, including transaction, account, and smart contract data. |
|||
|
|||
The [Node RPC API](/references/stacks-rpc-api) is locally-hosted and runs on Stacks 2.0 Blockchain nodes, providing similar functionality but in a way that is scoped to that specific node, giving access to raw transaction data as the node sees it. |
@ -1,278 +0,0 @@ |
|||
--- |
|||
title: Stacks Node RPC API |
|||
description: Every running Stacks node exposes an RPC API, which allows you to interact with the underlying blockchain. |
|||
--- |
|||
|
|||
## Introduction |
|||
|
|||
Every running Stacks node exposes an RPC API, which allows you to interact with the underlying blockchain. |
|||
|
|||
@include "different_apis.md" |
|||
|
|||
### POST /v2/transactions |
|||
|
|||
This endpoint is for posting _raw_ transaction data to the node's mempool. |
|||
|
|||
Rejections result in a 400 error. |
|||
|
|||
### GET /v2/accounts/[Principal] |
|||
|
|||
Get the account data for the provided principal. |
|||
The principal string is either a Stacks address or a Contract identifier (e.g., |
|||
`SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0.get-info` |
|||
|
|||
Returns JSON data in the form: |
|||
|
|||
```json |
|||
{ |
|||
"balance": "0x100..", |
|||
"nonce": 1, |
|||
"balance_proof": "0x01fa...", |
|||
"nonce_proof": "0x01ab..." |
|||
} |
|||
``` |
|||
|
|||
Where balance is the hex encoding of a unsigned 128-bit integer |
|||
(big-endian), nonce is a unsigned 64-bit integer, and the proofs are |
|||
provided as hex strings. |
|||
|
|||
For non-existent accounts, this _does not_ 404, rather it returns an |
|||
object with balance and nonce of 0. |
|||
|
|||
This endpoint also accepts a querystring parameter `?proof=` which when supplied `0`, will return the |
|||
JSON object _without_ the `balance_proof` or `nonce_proof` fields. |
|||
|
|||
### POST /v2/map_entry/[Stacks Address]/[Contract Name]/[Map Name] |
|||
|
|||
Attempt to fetch data from a contract data map. The contract is identified with [Stacks Address] and |
|||
[Contract Name] in the URL path. The map is identified with [Map Name]. |
|||
|
|||
The _key_ to lookup in the map is supplied via the POST body. This should be supplied as the hex string |
|||
serialization of the key (which should be a Clarity value). Note, this is a _JSON_ string atom. |
|||
|
|||
Returns JSON data in the form: |
|||
|
|||
```json |
|||
{ |
|||
"data": "0x01ce...", |
|||
"proof": "0x01ab..." |
|||
} |
|||
``` |
|||
|
|||
Where data is the hex serialization of the map response. Note that map responses are Clarity _option_ types, |
|||
for non-existent values, this is a serialized `none`, and for all other responses, it is a serialized `(some ...)` |
|||
object. |
|||
|
|||
This endpoint also accepts a querystring parameter `?proof=` which when supplied `0`, will return the |
|||
JSON object _without_ the `proof` field. |
|||
|
|||
### GET /v2/fees/transfer |
|||
|
|||
Get an estimated fee rate for STX transfer transactions. This a a fee rate / byte, and is returned as a JSON integer. |
|||
|
|||
### GET /v2/contracts/interface/[Stacks Address]/[Contract Name] |
|||
|
|||
Fetch the contract interface for a given contract, identified by [Stacks Address] and [Contract Name]. |
|||
|
|||
This returns a JSON object of the form: |
|||
|
|||
```json |
|||
{ |
|||
"functions": [ |
|||
{ |
|||
"name": "exotic-block-height", |
|||
"access": "private", |
|||
"args": [ |
|||
{ |
|||
"name": "height", |
|||
"type": "uint128" |
|||
} |
|||
], |
|||
"outputs": { |
|||
"type": "bool" |
|||
} |
|||
}, |
|||
{ |
|||
"name": "update-info", |
|||
"access": "public", |
|||
"args": [], |
|||
"outputs": { |
|||
"type": { |
|||
"response": { |
|||
"ok": "bool", |
|||
"error": "none" |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
{ |
|||
"name": "get-exotic-data-info", |
|||
"access": "read_only", |
|||
"args": [ |
|||
{ |
|||
"name": "height", |
|||
"type": "uint128" |
|||
} |
|||
], |
|||
"outputs": { |
|||
"type": { |
|||
"tuple": [ |
|||
{ |
|||
"name": "btc-hash", |
|||
"type": { |
|||
"buffer": { |
|||
"length": 32 |
|||
} |
|||
} |
|||
}, |
|||
{ |
|||
"name": "burn-block-time", |
|||
"type": "uint128" |
|||
}, |
|||
{ |
|||
"name": "id-hash", |
|||
"type": { |
|||
"buffer": { |
|||
"length": 32 |
|||
} |
|||
} |
|||
}, |
|||
{ |
|||
"name": "stacks-hash", |
|||
"type": { |
|||
"buffer": { |
|||
"length": 32 |
|||
} |
|||
} |
|||
}, |
|||
{ |
|||
"name": "stacks-miner", |
|||
"type": "principal" |
|||
}, |
|||
{ |
|||
"name": "vrf-seed", |
|||
"type": { |
|||
"buffer": { |
|||
"length": 32 |
|||
} |
|||
} |
|||
} |
|||
] |
|||
} |
|||
} |
|||
} |
|||
], |
|||
"variables": [], |
|||
"maps": [ |
|||
{ |
|||
"name": "block-data", |
|||
"key": [ |
|||
{ |
|||
"name": "height", |
|||
"type": "uint128" |
|||
} |
|||
], |
|||
"value": [ |
|||
{ |
|||
"name": "btc-hash", |
|||
"type": { |
|||
"buffer": { |
|||
"length": 32 |
|||
} |
|||
} |
|||
}, |
|||
{ |
|||
"name": "burn-block-time", |
|||
"type": "uint128" |
|||
}, |
|||
{ |
|||
"name": "id-hash", |
|||
"type": { |
|||
"buffer": { |
|||
"length": 32 |
|||
} |
|||
} |
|||
}, |
|||
{ |
|||
"name": "stacks-hash", |
|||
"type": { |
|||
"buffer": { |
|||
"length": 32 |
|||
} |
|||
} |
|||
}, |
|||
{ |
|||
"name": "stacks-miner", |
|||
"type": "principal" |
|||
}, |
|||
{ |
|||
"name": "vrf-seed", |
|||
"type": { |
|||
"buffer": { |
|||
"length": 32 |
|||
} |
|||
} |
|||
} |
|||
] |
|||
} |
|||
], |
|||
"fungible_tokens": [], |
|||
"non_fungible_tokens": [] |
|||
} |
|||
``` |
|||
|
|||
### GET /v2/contracts/source/[Stacks Address]/[Contract Name] |
|||
|
|||
Fetch the source for a smart contract, along with the block height it was |
|||
published in, and the MARF proof for the data. |
|||
|
|||
```json |
|||
{ |
|||
"source": "(define-private ...", |
|||
"publish_height": 1, |
|||
"proof": "0x00213..." |
|||
} |
|||
``` |
|||
|
|||
This endpoint also accepts a querystring parameter `?proof=` which |
|||
when supplied `0`, will return the JSON object _without_ the `proof` |
|||
field. |
|||
|
|||
### POST /v2/contracts/call-read/[Stacks Address]/[Contract Name]/[Function Name] |
|||
|
|||
Call a read-only public function on a given smart contract. |
|||
|
|||
The smart contract and function are specified using the URL path. The arguments and |
|||
the simulated `tx-sender` are supplied via the POST body in the following JSON format: |
|||
|
|||
```json |
|||
{ |
|||
"sender": "SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0.get-info", |
|||
"arguments": ["0x0011...", "0x00231..."] |
|||
} |
|||
``` |
|||
|
|||
Where sender is either a Contract identifier or a normal Stacks address, and arguments |
|||
is an array of hex serialized Clarity values. |
|||
|
|||
This endpoint returns a JSON object of the following form: |
|||
|
|||
```json |
|||
{ |
|||
"okay": true, |
|||
"result": "0x0011..." |
|||
} |
|||
``` |
|||
|
|||
Where `"okay"` is `true` if the function executed successfully, and result contains the |
|||
hex serialization of the Clarity return value. |
|||
|
|||
If an error occurs in processing the function call, this endpoint returns a 200 response with a JSON |
|||
object of the following form: |
|||
|
|||
```json |
|||
{ |
|||
"okay": false, |
|||
"cause": "Unchecked(PublicFunctionNotReadOnly(..." |
|||
} |
|||
``` |
Loading…
Reference in new issue