Documentation
¶
Overview ¶
Package precompile implements custom precompiles for the Nibiru EVM.
Precompiles are special, built-in contract interfaces that exist at predefined addresses and run custom logic outside of what is possible in standard Solidity contracts. This package extends the default Ethereum precompiles with Nibiru-specific functionality.
Key components:
- InitPrecompiles: Initializes and returns a map of precompiled contracts.
- NibiruPrecompile: Interface for Nibiru-specific precompiles.
- PrecompileFunToken: Implements the FunToken precompile for ERC20-to-bank transfers.
The package also provides utility functions for working with precompiles, such as "ABIMethodByID" and "OnRunStart" for common precompile execution setup.
Index ¶
- Variables
- func ABIMethodByID(abi *gethabi.ABI, sigdata []byte) (*gethabi.Method, error)
- func ArgsFunTokenBankSend(erc20 gethcommon.Address, amount *big.Int, to sdk.AccAddress) []any
- func AssertArgCount(args []interface{}, wantNumArgs int) error
- func InitPrecompiles(k keepers.PublicKeepers) (precompiles map[gethcommon.Address]vm.PrecompiledContract)
- func OnRunStart(p NibiruPrecompile, evm *vm.EVM, input []byte) (ctx sdk.Context, method *gethabi.Method, args []interface{}, err error)
- func PrecompileFunToken(keepers keepers.PublicKeepers) vm.PrecompiledContract
- type FunTokenMethod
- type NibiruPrecompile
Constants ¶
This section is empty.
Variables ¶
var PrecompileAddr_FuntokenGateway = eth.MustNewHexAddrFromStr(
"0x0000000000000000000000000000000000000800",
)
Precompile address for "FunToken.sol", the contract that enables transfers of ERC20 tokens to "nibi" addresses as bank coins using the ERC20's `FunToken` mapping.
Functions ¶
func ABIMethodByID ¶
ABIMethodByID: Looks up an ABI method by the 4-byte id. Copy of "ABI.MethodById" from go-ethereum version > 1.10
func ArgsFunTokenBankSend ¶
func ArgsFunTokenBankSend( erc20 gethcommon.Address, amount *big.Int, to sdk.AccAddress, ) []any
ArgsFunTokenBankSend: Constructor for an "args" array of arguments for the "IFunToken.bankSend" function.
func AssertArgCount ¶
func InitPrecompiles ¶
func InitPrecompiles( k keepers.PublicKeepers, ) (precompiles map[gethcommon.Address]vm.PrecompiledContract)
InitPrecompiles initializes and returns a map of precompiled contracts for the EVM. It combines default Ethereum precompiles with custom Nibiru precompiles.
Parameters:
- k: A keepers.PublicKeepers instance providing access to various blockchain state.
Returns:
- A map of Ethereum addresses to PrecompiledContract implementations.
func OnRunStart ¶
func PrecompileFunToken ¶
func PrecompileFunToken(keepers keepers.PublicKeepers) vm.PrecompiledContract
Types ¶
type FunTokenMethod ¶
type FunTokenMethod string
const (
FunTokenMethod_BankSend FunTokenMethod = "bankSend"
)
type NibiruPrecompile ¶
type NibiruPrecompile interface {
vm.PrecompiledContract
ABI() *gethabi.ABI
}
NibiruPrecompile is the interface that all Nibiru-specific precompiles must implement.