flashbotsrpc
flashbotsrpc copied to clipboard
Golang client for Flashbots Relay, mev-geth and standard Ethereum JSON-RPC API endpoints
Flashbots RPC client
Fork of ethrpc with additional Flashbots RPC methods:
-
FlashbotsCallBundle
(eth_callBundle
) -
FlashbotsSendBundle
(eth_sendBundle
) -
FlashbotsGetUserStats
(flashbots_getUserStats
) -
FlashbotsSendPrivateTransaction
(eth_sendPrivateTransaction
) -
FlashbotsCancelPrivateTransaction
(eth_cancelPrivateTransaction
) -
FlashbotsSimulateBlock
: simulate a full block
Usage
Add library to your project:
go get github.com/metachris/flashbotsrpc
Create a new private key here for testing (you probably want to use an existing one):
privateKey, _ := crypto.GenerateKey()
Simulate transactions with eth_callBundle
:
callBundleArgs := flashbotsrpc.FlashbotsCallBundleParam{
Txs: []string{"YOUR_RAW_TX"},
BlockNumber: fmt.Sprintf("0x%x", 13281018),
StateBlockNumber: "latest",
}
result, err := rpc.FlashbotsCallBundle(privateKey, callBundleArgs)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
Get Flashbots user stats:
rpc := flashbotsrpc.New("https://relay.flashbots.net")
result, err := rpc.FlashbotsGetUserStats(privateKey, 13281018)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
Send a transaction bundle to Flashbots with eth_sendBundle
:
sendBundleArgs := flashbotsrpc.FlashbotsSendBundleRequest{
Txs: []string{"YOUR_RAW_TX"},
BlockNumber: fmt.Sprintf("0x%x", 13281018),
}
result, err := rpc.FlashbotsSendBundle(privateKey, sendBundleArgs)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
More examples
You can find example code in the /examples/
directory.