Documentation ¶
Index ¶
- Constants
- func GetPackingTypes(args []Argument) []interface{}
- func Pack(argSpec []Argument, args ...interface{}) ([]byte, error)
- func PackIntoStruct(argSpec []Argument, st interface{}) ([]byte, error)
- func Packer(abiData, funcName string, args ...string) ([]byte, error)
- func ReadAbiFormulateCall(abiSpecBytes []byte, funcName string, args []string) ([]byte, error)
- func ReadAbiFormulateCallFile(abiLocation, binPath, funcName string, args []string) ([]byte, error)
- func Signature(name string, args []Argument) (sig string)
- func Unpack(argSpec []Argument, data []byte, args ...interface{}) error
- func UnpackEvent(eventSpec *EventSpec, topics []burrow_binary.Word256, data []byte, ...) error
- func UnpackIntoStruct(argSpec []Argument, data []byte, st interface{}) error
- func UnpackRevert(data []byte) (message *string, err error)
- type AbiSpec
- type AbiSpecJSON
- type Argument
- type ArgumentJSON
- type EVMAddress
- type EVMBool
- type EVMBytes
- type EVMFixed
- type EVMInt
- type EVMString
- type EVMType
- type EVMUint
- type EventID
- type EventSpec
- type FunctionID
- type FunctionSpec
- type Variable
Constants ¶
const ElementSize = 32
EVM Solidity calls and return values are packed into pieces of 32 bytes, including a bool (wasting 255 out of 256 bits)
const EventIDSize = 32
const FunctionIDSize = 4
Variables ¶
This section is empty.
Functions ¶
func GetPackingTypes ¶
func GetPackingTypes(args []Argument) []interface{}
func PackIntoStruct ¶
func ReadAbiFormulateCall ¶
func UnpackEvent ¶
func UnpackEvent(eventSpec *EventSpec, topics []burrow_binary.Word256, data []byte, args ...interface{}) error
* Given a eventSpec, get all the fields (topic fields or not)
func UnpackIntoStruct ¶
func UnpackRevert ¶
UnpackRevert decodes the revert reason if a contract called revert. If no reason was given, message will be nil else it will point to the string
Types ¶
type AbiSpec ¶
type AbiSpec struct { Constructor FunctionSpec Fallback FunctionSpec Functions map[string]FunctionSpec Events map[string]EventSpec EventsById map[EventID]EventSpec }
var RevertAbi *AbiSpec
func MergeAbiSpec ¶
MergeAbiSpec takes multiple AbiSpecs and merges them into once structure. Note that the same function name or event name can occur in different abis, so there might be some information loss.
func ReadAbiSpec ¶
func ReadAbiSpecFile ¶
func (*AbiSpec) UnpackWithID ¶
type AbiSpecJSON ¶
type AbiSpecJSON struct { Name string Type string Inputs []ArgumentJSON Outputs []ArgumentJSON Constant bool Payable bool StateMutability string Anonymous bool }
type Argument ¶
type Argument struct { Name string EVM EVMType IsArray bool Indexed bool Hashed bool ArrayLength uint64 }
func EVMTypeFromReflect ¶
type ArgumentJSON ¶
type ArgumentJSON struct { Name string Type string Components []ArgumentJSON Indexed bool }
type EVMAddress ¶
type EVMAddress struct { }
func (EVMAddress) GetSignature ¶
func (e EVMAddress) GetSignature() string
type EVMFixed ¶
type EVMFixed struct {
N, M uint64
// contains filtered or unexported fields
}
func (EVMFixed) GetSignature ¶
type EVMType ¶
type EVMType interface { GetSignature() string // contains filtered or unexported methods }
type EventSpec ¶
func FindEventSpec ¶
FindEventSpec helps when you have an event but you do not know what contract it came from. Events can be emitted from contracts called from other contracts, so you are not likely to know what abi to use. Therefore, this will go through all the files in the directory and see if a matching event spec can be found.
type FunctionID ¶
type FunctionID [FunctionIDSize]byte
func GetFunctionID ¶
func GetFunctionID(signature string) (id FunctionID)
func (FunctionID) Bytes ¶
func (fs FunctionID) Bytes() []byte
type FunctionSpec ¶
type FunctionSpec struct { FunctionID FunctionID Inputs []Argument Outputs []Argument }
func SpecFromFunctionReflect ¶
func SpecFromFunctionReflect(fname string, v reflect.Value, skipIn, skipOut int) *FunctionSpec
func SpecFromStructReflect ¶
SpecFromStructReflect generates a FunctionSpec where the arguments and return values are described a struct. Both args and rets should be set to the return value of reflect.TypeOf() with the respective struct as an argument.
func (*FunctionSpec) SetFunctionID ¶
func (functionSpec *FunctionSpec) SetFunctionID(functionName string)