Skip to content
You are reading Codefi Orchestrate 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.

Transaction management

Transaction management automates tasks related to:

  • Creating transactions, including crafting transaction data, managing gas, managing nonces, and signing transactions.
  • Sending transactions to a chain.
  • Post-processing mined transactions, including catching receipts and decoding event logs.

Orchestrate handles nonce assignment internally enabling the maximal theoretical throughput in transactions per second (TPS) for a single account.

Use the SDK or REST API to send transactions. Sending transactions generates and sends Protobuf messages to Apache Kafka. Orchestrate receives the Protobuf messages and manages the full transaction lifecycle.

Gas price policies

Orchestrate allows you to define a gas price policy for transactions. For example, you can set the priority of a transaction, and set a retry policy.

Note

You cannot set a gas price policy when sending raw transactions.

Orchestrate provides an example of using the SDK to create a gas price policy.

Transaction priority

Orchestrate allows you to set the transaction priority if a gas price is not specified. Use the SDK or REST API to set the transaction priority when submitting the transaction.

Important

Do not specify a priority on networks that enforce a minimum gas price. This ensures the user does not submit a low priority transaction where the transaction’s gas price is lower than the minimum accepted by the Ethereum client.

The following priorities are available:

  • Very high: 1.4 x gas price
  • High: 1.2 x gas price
  • Medium: 1 x gas price (default)
  • Low: 0.8 x gas price
  • Very low: 0.6 x gas price

Transaction retry policy

Transactions can remain pending for a long time, for example if the gas price for the transaction is too low, or the network has a high load.

You can create a retry policy based on the gas price when sending transactions using the SDK or REST API.

Orchestrate provides the following policy options:

Option Description
interval Interval to wait before retrying pending transactions. For example, 30s means 30 seconds, 2m means 2 minutes. Must be greater than or equal to 1s for the policy to be created.
increment Gas price percentage increase for each retry. For example, 0.05 means an increment of 5% on every retry, 0.1 means 10%, 1 means 100%. Policy creation fails if limit divided by increment is greater than 10.
limit Maximum gas price limit. For example, 0.5 means a 50% limit on the transaction gas price. The retry policy will no longer execute once the limit is reached. Policy creation fails if limit divided by increment is greater than 10.

The following rules apply to the retry policy:

  • interval must be greater than or equal to 1s (1 second).
  • The maximum number of retries is 10, meaning if limit divided by increment is greater than 10, then the policy creation fails.
  • The policy creates a child job belonging to the same schedule for each retry where the gas price is incremented.
  • The policy sends the same job transaction to the blockchain if the gas has not been incremented during a retry.

You can create a retry policy based on the gas price when sending transactions using the SDK or REST API.

ConsenSys has acquired Quorum from J.P. Morgan. Please read the FAQ.
Questions or feedback? You can obtain paid professional support by Consensys at orchestrate@consensys.net