Categorygithub.com/e4coder/tb-sdk
modulepackage
0.1.6-beta.2
Repository: https://github.com/e4coder/tb-sdk.git
Documentation: pkg.go.dev

# README

TB-SDK: THE BUNDLER SDK

This golang SDK is designed to aid in the integration with the ERC-4773 Account Abstractions Bundler component. The TB-SDK provides a comprehensive suite of functions to interact directly with a bundler instance, streamlining the process of preparing, executing, and managing user operations on the blockchain.

Supported Methods

eth_ Namespace

Methods defined by the ERC-4337 spec.

MethodSupported
eth_chainId
eth_supportedEntryPoints
eth_estimateUserOperationGas
eth_sendUserOperation
eth_getUserOperationByHash
eth_getUserOperationReceipt

debug_ Namespace

Method defined by the ERC-4337 spec. Used only for debugging/testing and should be disabled on production APIs.

MethodSupported
debug_bundler_clearState🚧
debug_bundler_dumpMempool🚧
debug_bundler_sendBundleNow🚧
debug_bundler_setBundlingMode🚧
debug_bundler_setReputation🚧
debug_bundler_dumpReputation🚧
debug_bundler_addUserOps🚧

Sample Usage

- Bundler

package main

import (
    tbsdk "github.com/e4coder/tb-sdk"
)

func main() {
    bundler := tbsdk.NewBundler()
    err := bundler.Init("http://localhost:3000")
    if err != nil {
        panic(err)
    }

    userOp := tbsdk.NewOperationBuilder().
        Nonce(big.NewInt(123)).
        Sender(sender).
        CallData(data).
        FactoryAndData(&factoryAddress, factoryData).
        Signature(signature).
        Build()

    // RPC -> eth_estimateUserOperationGas
    rpcResponse, err := bundler.Eth_estimateUserOperationGas(userOp)
    if err != nil {
        panic(err)
    }

    fmt.Println(rpcResponse.Result)
}

- CounterfactualAddress

package main

import (
    tbsdk "github.com/e4coder/tb-sdk"
)

func main() {
	owner, _ := hex.DecodeString("494E8f1c10bb14Bea02C2f16cFB33a84BC57ef74")
	factory, _ := hex.DecodeString("4BBa2E1c4856228c0572f7b64f14916E2F091391")
	ar, _ := hex.DecodeString("F235B58DC3b2169136A857B06aaedcE1aEC4c667")
	ep, _ := hex.DecodeString("8024A70A99d35FF24Cacc861e946945530ee96A3")
	salt, _ := hex.DecodeString("0000000000000000000000000000000000000000000000000000000000000001")
	creationCode, _ := hex.DecodeString(TestAccountContractCreationCode) // look at create2_test.go

	initCode := tbsdk.AbiEncodePacked(creationCode, tbsdk.AbiEncode(
		owner,
		ar,
		ep,
		factory,
	))

	address := tbsdk.ComputeCounterfactualAddress(factory, salt, initCode)

	// https://mumbai.polygonscan.com/address/0xd40aeab1d9e7c57523c2f5381f79c9738a73fe2d#internaltx
	deployedAddress := "0xd40aeab1d9e7c57523c2f5381f79c9738a73fe2d"

	if address != deployedAddress {
        panic("error")
	}
}

Contributing

Feel free to open pull requests and issues, the project is in active development any and all help is very much appreciated

# Functions

TODO: input type ...interface{} output ([]byte, error).
TODO: input type ...interface{} output ([]byte, error).
initCode = creationCode + packed(constructorArguments).
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Variables

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Interfaces

No description provided by the author
No description provided by the author

# Type aliases

No description provided by the author