mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 04:22:55 +01:00
d40eedbf01
5c3eaf9983043db1b61a98c95d692a6958670b86 doc: Add warnings for http interfaces limitations (Fabian Jahr) Pull request description: `libevent`, which is used for our rest interface, can use up all of the available file descriptors in a system if too many connections are opened at once. If a new block is connected at the same time and can not be written to disk because there are no file descriptors available, the node crashes. Based on my investigation so far the issue is best solved upstream which means we have to wait for the next release (2.2). In the meantime it would be good if we would warn users of this limitation. See #11368 for more background. ACKs for top commit: MarcoFalke: ACK 5c3eaf9983043db1b61a98c95d692a6958670b86 Tree-SHA512: 73914538588477ead19068f5832fdcc8e0eb736e51f73b3aca501c93165e5ad634c2511a3fcffff251adcd3efda23a742b48211ad9d3b2a29cdeac17201d06a1
48 lines
2.2 KiB
Markdown
48 lines
2.2 KiB
Markdown
# JSON-RPC Interface
|
|
|
|
The headless daemon `dashd` has the JSON-RPC API enabled by default, the GUI
|
|
`dash-qt` has it disabled by default. This can be changed with the `-server`
|
|
option. In the GUI it is possible to execute RPC methods in the Debug Console
|
|
Dialog.
|
|
|
|
## RPC consistency guarantees
|
|
|
|
State that can be queried via RPCs is guaranteed to be at least up-to-date with
|
|
the chain state immediately prior to the call's execution. However, the state
|
|
returned by RPCs that reflect the mempool may not be up-to-date with the
|
|
current mempool state.
|
|
|
|
### Transaction Pool
|
|
|
|
The mempool state returned via an RPC is consistent with itself and with the
|
|
chain state at the time of the call. Thus, the mempool state only encompasses
|
|
transactions that are considered mine-able by the node at the time of the RPC.
|
|
|
|
The mempool state returned via an RPC reflects all effects of mempool and chain
|
|
state related RPCs that returned prior to this call.
|
|
|
|
### Wallet
|
|
|
|
The wallet state returned via an RPC is consistent with itself and with the
|
|
chain state at the time of the call.
|
|
|
|
Wallet RPCs will return the latest chain state consistent with prior non-wallet
|
|
RPCs. The effects of all blocks (and transactions in blocks) at the time of the
|
|
call is reflected in the state of all wallet transactions. For example, if a
|
|
block contains transactions that conflicted with mempool transactions, the
|
|
wallet would reflect the removal of these mempool transactions in the state.
|
|
|
|
However, the wallet may not be up-to-date with the current state of the mempool
|
|
or the state of the mempool by an RPC that returned before this RPC.
|
|
|
|
## Limitations
|
|
|
|
There is a known issue in the JSON-RPC interface that can cause a node to crash if
|
|
too many http connections are being opened at the same time because the system runs
|
|
out of available file descriptors. To prevent this from happening you might
|
|
want to increase the number of maximum allowed file descriptors in your system
|
|
and try to prevent opening too many connections to your JSON-RPC interface at the
|
|
same time if this is under your control. It is hard to give general advice
|
|
since this depends on your system but if you make several hundred requests at
|
|
once you are definitely at risk of encountering this issue.
|