go-ethereum
go-ethereum copied to clipboard
ABIGEN v2
This PR adds a new version of abigen which will co-exist parallel to the existing version for a while. To generate v2 bindings provide the --v2
flag to abigen
cmd.
Summary
The main point of abigen v2 is having a lightweight generated binding which allows for more composability. This is possible now thanks to Go generics. "only" methods to pack and unpack call and return data are generated for a contract. As well as unpacking of logs.
To interact with the contract a library is available with functions such as Call
, Transact
, FilterLogs
, etc. These take in the packed calldata, or a function pointer to unpack return data.
Features
The new version is at feature-parity with v1 at a much lower generated binding size. The only missing feature as of now is sessions.
Example
V1 and v2 bindings for a sample contract are available here: https://gist.github.com/s1na/05f2d241b07372b41ba1747ce6e098b7. A sample script using v2 is available in main.go
.