Builder0x69 JSON-RPC API documentation
Primary RPC endpoint with proximity steering: https://builder0x69.io/
This documentation is intended for advanced developers who already have experience interacting with bundle/transaction relays.
Discord: builder0x69
(TWTR: @builder0x69
).
eth_sendBundle
The method is used to send transaction bundles to our builder and mostly follows standard bundle API, but at the same time there're several additional features available:
{
"jsonrpc": "2.0",
"id": "42069",
"method": "eth_sendBundle",
"params": [
{
txs, // Array[String], A list of signed transactions to execute in an atomic bundle, list can be empty for bundle cancellations
blockNumber, // String, a hex encoded block number for which this bundle is valid on
minTimestamp, // (Optional) Number, the minimum timestamp for which this bundle is valid, in seconds since the unix epoch
maxTimestamp, // (Optional) Number, the maximum timestamp for which this bundle is valid, in seconds since the unix epoch
revertingTxHashes, // (Optional) Array[String], A list of tx hashes that are allowed to "fail" or be discarded from the beginning of the bundle.
uuid, // (Optional) String, UUID that can be used to cancel/replace this bundle
replacementUuid, // (Optional) String, UUID that can be used to cancel/replace this bundle, has priority over `uuid` field
refundPercent, // (Optional) Number, the percent(from 0 to 99) of last bundle transaction ETH reward that should be passed back to the user(`refundRecipient`) at the end of the bundle
refundRecipient, // (Optional) Address, wallet that will receive the ETH reward refund from this bundle, default value - EOA of the first transaction inside the bundle
}
]
}
We support updatable bundles via uuid
/replacementUuid
fields, you can read more about them here
Our endpoint also supports "gas-less"(you can send transactions from an empty wallet) transactions by fully covering all transaction costs inside the bundle as long as funds are returned at the end of the bundle. You can find examples here
If refundPercent
field is set, builder will pass refundPercent
of total ETH reward generated by last transaction inside the bundle to the user(minus burned base fee). If refund amount is insufficient to cover base fee of the block, whole bundle will be discarded to avoid unfairly accumulating tiny rewards which can't be passed back to the user.
CURL example:
curl -s --data '{"jsonrpc": "2.0","id": "42069","method": "eth_sendBundle","params": [{"txs": ["0x02f8b10181db8459682f00850c9f5014d282be9894a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4880b844a9059cbb0000000000000000000000005408b27504dfcf7b0c3edf116e847aa19ce7f03c0000000000000000000000000000000000000000000000000000001e449a9400c080a049c0f50df4219481e031ac35816946daef9d08004f3324f7f46f6938488025aba02a4bda81f792bc5b7033804e39b7e55e619e56de1afcddd2ae4943ae5e7737c4"],"blockNumber": "0xf79d4e","refundPercent": 99,"refundRecipient": "0xab5801a7d398351b8be11c439e05c5b3259aec9b"}]}' -H "Content-Type: application/json" -X POST https://builder0x69.io
Example response:
Our eth_sendBundle
API doesn't return bundle hash as response since at the moment we don't support any statistics API.
eth_sendRawTransaction
Both methods(eth_sendRawTransaction
and eth_sendPrivateRawTransaction
) perform the same task and are used for sending private transactions to our builder. This method DOES NOT provide revert protection(use eth_sendBundle
above), but transactions are kept private and aren't shared in p2p layer. Payload format:
CURL example:
curl -s --data '{"jsonrpc": "2.0","id": "42069","method": "eth_sendRawTransaction","params": ["0x02f8b10181db8459682f00850c9f5014d282be9894a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4880b844a9059cbb0000000000000000000000005408b27504dfcf7b0c3edf116e847aa19ce7f03c0000000000000000000000000000000000000000000000000000001e449a9400c080a049c0f50df4219481e031ac35816946daef9d08004f3324f7f46f6938488025aba02a4bda81f792bc5b7033804e39b7e55e619e56de1afcddd2ae4943ae5e7737c4"]}' -H "Content-Type: application/json" -X POST https://builder0x69.io
Example response: