Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Golang client for Flashbots Relay, mev-geth and standard Ethereum JSON-RPC API endpoints

License

Notifications You must be signed in to change notification settings

metachris/flashbotsrpc

Repository files navigation

Flashbots RPC client

Test status

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)

Send a transaction bundle to a list of Builder endpoints with eth_sendBundle (full example [/examples/broadcastbundle]):

urls := []string{
	"https://relay.flashbots.net",
 // Refer to https://www.mev.to/builders for builder endpoints 
}
rpc := flashbotsrpc.NewBuilderBroadcastRPC(urls)
sendBundleArgs := flashbotsrpc.FlashbotsSendBundleRequest{
 Txs: []string{"YOUR_RAW_TX"},
 BlockNumber: fmt.Sprintf("0x%x", 13281018),
}
results := rpc.BroadcastBundle(privateKey, sendBundleArgs)
for _, result := range results {
 if result.Err != nil {
 log.Fatal(result.Err)
 }
 fmt.Printf("%+v\n", result.BundleResponse)
}

More examples

You can find example code in the /examples/ directory.

About

Golang client for Flashbots Relay, mev-geth and standard Ethereum JSON-RPC API endpoints

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Contributors 9

AltStyle によって変換されたページ (->オリジナル) /