Skip to content
You are reading Hyperledger Besu development version documentation and some displayed features may not be available in the stable release. You can switch to stable version using the version box at screen bottom.
Last update: December 16, 2021

Sending concurrent private transactions

Private transaction processing involves two transactions, the private transaction and the privacy marker transaction (PMT). The private transaction and the PMT each have their own nonce.

If your private transaction rate requires sending private transactions without waiting for the previous private transaction to be mined, using eth_getTransactionCount and eea_sendRawTransaction may result in incorrect nonces.

In this case, use priv_distributeRawTransaction instead of eea_sendRawTransaction.

Note

You can use priv_getTransactionCount or priv_getEeaTransactionCount to get the nonce for an account for the specified privacy group or participants.

Send the corresponding PMT using eth_sendRawTransaction, specifying the public PMT nonce. This method allows you to create and send the PMT yourself rather than eea_sendRawTransaction handling the PMT.

Important

When using priv_distributeRawTransaction to distribute transactions with consecutive nonces for the same account, the corresponding PMTs must use one account with the nonces in the same order as the private transactions. This is to ensure that the private transactions are executed in the correct order.

Example

The web3js-quorum library includes an example of how to send concurrent private transactions. The example uses offchain privacy groups. Use priv_getPrivacyPrecompileAddress to get the precompile address to specify in the to field when creating the PMT.

Questions or feedback? You can discuss issues and obtain free support on Hyperledger Besu chat channel.
For Hyperledger Besu community support, contact the mailing list besu@lists.hyperledger.org