mirror of
https://github.com/fluencelabs/tendermint
synced 2025-07-31 12:11:58 +00:00
27
docs/transactional-semantics.rst
Normal file
27
docs/transactional-semantics.rst
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
Transactional Semantics
|
||||||
|
=======================
|
||||||
|
|
||||||
|
In `"Using
|
||||||
|
Tendermint"<./specification/using-tendermint.html#broadcast-api>`__ we
|
||||||
|
discussed different API endpoints for sending transactions and
|
||||||
|
differences between them.
|
||||||
|
|
||||||
|
What we have not yet covered is transactional semantics.
|
||||||
|
|
||||||
|
When you send a transaction using one of the available methods, it
|
||||||
|
first goes to the mempool. Currently, it does not provide strong
|
||||||
|
guarantees like "if the transaction were accepted, it would be
|
||||||
|
eventually included in a block (given CheckTx passes)."
|
||||||
|
|
||||||
|
For instance a tx could enter the mempool, but before it can be sent
|
||||||
|
to peers the node crashes.
|
||||||
|
|
||||||
|
We are planning to provide such guarantees by using a WAL and
|
||||||
|
replaying transactions (See
|
||||||
|
`GH#248<https://github.com/tendermint/tendermint/issues/248>`__), but
|
||||||
|
it's non-trivial to do this all efficiently.
|
||||||
|
|
||||||
|
The temporary solution is for clients to monitor the node and resubmit
|
||||||
|
transaction(s) or/and send them to more nodes at once, so the
|
||||||
|
probability of all of them crashing at the same time and losing the
|
||||||
|
msg decreases substantially.
|
@@ -214,7 +214,7 @@ Broadcast API
|
|||||||
Earlier, we used the ``broadcast_tx_commit`` endpoint to send a
|
Earlier, we used the ``broadcast_tx_commit`` endpoint to send a
|
||||||
transaction. When a transaction is sent to a Tendermint node, it will
|
transaction. When a transaction is sent to a Tendermint node, it will
|
||||||
run via ``CheckTx`` against the application. If it passes ``CheckTx``,
|
run via ``CheckTx`` against the application. If it passes ``CheckTx``,
|
||||||
it will be included in the mempool, broadcast to other peers, and
|
it will be included in the mempool, broadcasted to other peers, and
|
||||||
eventually included in a block.
|
eventually included in a block.
|
||||||
|
|
||||||
Since there are multiple phases to processing a transaction, we offer
|
Since there are multiple phases to processing a transaction, we offer
|
||||||
|
Reference in New Issue
Block a user