mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-12 23:13:45 +00:00
accounts/abi/bind/v2: remove ContractInstance
It's equivalent to BoundContract.
This commit is contained in:
parent
c9da576739
commit
7c5c0bbbf3
7 changed files with 19 additions and 44 deletions
|
|
@ -52,7 +52,7 @@ func NewDB() *DB {
|
||||||
|
|
||||||
// Instance creates a wrapper for a deployed contract instance at the given address.
|
// Instance creates a wrapper for a deployed contract instance at the given address.
|
||||||
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
||||||
func (c *DB) Instance(backend bind.ContractBackend, addr common.Address) bind.ContractInstance {
|
func (c *DB) Instance(backend bind.ContractBackend, addr common.Address) *bind.BoundContract {
|
||||||
return bind.NewContractInstance(backend, addr, c.abi)
|
return bind.NewContractInstance(backend, addr, c.abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ func NewC() *C {
|
||||||
|
|
||||||
// Instance creates a wrapper for a deployed contract instance at the given address.
|
// Instance creates a wrapper for a deployed contract instance at the given address.
|
||||||
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
||||||
func (c *C) Instance(backend bind.ContractBackend, addr common.Address) bind.ContractInstance {
|
func (c *C) Instance(backend bind.ContractBackend, addr common.Address) *bind.BoundContract {
|
||||||
return bind.NewContractInstance(backend, addr, c.abi)
|
return bind.NewContractInstance(backend, addr, c.abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ func NewC1() *C1 {
|
||||||
|
|
||||||
// Instance creates a wrapper for a deployed contract instance at the given address.
|
// Instance creates a wrapper for a deployed contract instance at the given address.
|
||||||
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
||||||
func (c *C1) Instance(backend bind.ContractBackend, addr common.Address) bind.ContractInstance {
|
func (c *C1) Instance(backend bind.ContractBackend, addr common.Address) *bind.BoundContract {
|
||||||
return bind.NewContractInstance(backend, addr, c.abi)
|
return bind.NewContractInstance(backend, addr, c.abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -112,7 +112,7 @@ func NewC2() *C2 {
|
||||||
|
|
||||||
// Instance creates a wrapper for a deployed contract instance at the given address.
|
// Instance creates a wrapper for a deployed contract instance at the given address.
|
||||||
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
||||||
func (c *C2) Instance(backend bind.ContractBackend, addr common.Address) bind.ContractInstance {
|
func (c *C2) Instance(backend bind.ContractBackend, addr common.Address) *bind.BoundContract {
|
||||||
return bind.NewContractInstance(backend, addr, c.abi)
|
return bind.NewContractInstance(backend, addr, c.abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -171,7 +171,7 @@ func NewL1() *L1 {
|
||||||
|
|
||||||
// Instance creates a wrapper for a deployed contract instance at the given address.
|
// Instance creates a wrapper for a deployed contract instance at the given address.
|
||||||
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
||||||
func (c *L1) Instance(backend bind.ContractBackend, addr common.Address) bind.ContractInstance {
|
func (c *L1) Instance(backend bind.ContractBackend, addr common.Address) *bind.BoundContract {
|
||||||
return bind.NewContractInstance(backend, addr, c.abi)
|
return bind.NewContractInstance(backend, addr, c.abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -225,7 +225,7 @@ func NewL2() *L2 {
|
||||||
|
|
||||||
// Instance creates a wrapper for a deployed contract instance at the given address.
|
// Instance creates a wrapper for a deployed contract instance at the given address.
|
||||||
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
||||||
func (c *L2) Instance(backend bind.ContractBackend, addr common.Address) bind.ContractInstance {
|
func (c *L2) Instance(backend bind.ContractBackend, addr common.Address) *bind.BoundContract {
|
||||||
return bind.NewContractInstance(backend, addr, c.abi)
|
return bind.NewContractInstance(backend, addr, c.abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -279,7 +279,7 @@ func NewL2b() *L2b {
|
||||||
|
|
||||||
// Instance creates a wrapper for a deployed contract instance at the given address.
|
// Instance creates a wrapper for a deployed contract instance at the given address.
|
||||||
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
||||||
func (c *L2b) Instance(backend bind.ContractBackend, addr common.Address) bind.ContractInstance {
|
func (c *L2b) Instance(backend bind.ContractBackend, addr common.Address) *bind.BoundContract {
|
||||||
return bind.NewContractInstance(backend, addr, c.abi)
|
return bind.NewContractInstance(backend, addr, c.abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -330,7 +330,7 @@ func NewL3() *L3 {
|
||||||
|
|
||||||
// Instance creates a wrapper for a deployed contract instance at the given address.
|
// Instance creates a wrapper for a deployed contract instance at the given address.
|
||||||
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
||||||
func (c *L3) Instance(backend bind.ContractBackend, addr common.Address) bind.ContractInstance {
|
func (c *L3) Instance(backend bind.ContractBackend, addr common.Address) *bind.BoundContract {
|
||||||
return bind.NewContractInstance(backend, addr, c.abi)
|
return bind.NewContractInstance(backend, addr, c.abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -385,7 +385,7 @@ func NewL4() *L4 {
|
||||||
|
|
||||||
// Instance creates a wrapper for a deployed contract instance at the given address.
|
// Instance creates a wrapper for a deployed contract instance at the given address.
|
||||||
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
||||||
func (c *L4) Instance(backend bind.ContractBackend, addr common.Address) bind.ContractInstance {
|
func (c *L4) Instance(backend bind.ContractBackend, addr common.Address) *bind.BoundContract {
|
||||||
return bind.NewContractInstance(backend, addr, c.abi)
|
return bind.NewContractInstance(backend, addr, c.abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -439,7 +439,7 @@ func NewL4b() *L4b {
|
||||||
|
|
||||||
// Instance creates a wrapper for a deployed contract instance at the given address.
|
// Instance creates a wrapper for a deployed contract instance at the given address.
|
||||||
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
||||||
func (c *L4b) Instance(backend bind.ContractBackend, addr common.Address) bind.ContractInstance {
|
func (c *L4b) Instance(backend bind.ContractBackend, addr common.Address) *bind.BoundContract {
|
||||||
return bind.NewContractInstance(backend, addr, c.abi)
|
return bind.NewContractInstance(backend, addr, c.abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ func NewC() *C {
|
||||||
|
|
||||||
// Instance creates a wrapper for a deployed contract instance at the given address.
|
// Instance creates a wrapper for a deployed contract instance at the given address.
|
||||||
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
||||||
func (c *C) Instance(backend bind.ContractBackend, addr common.Address) bind.ContractInstance {
|
func (c *C) Instance(backend bind.ContractBackend, addr common.Address) *bind.BoundContract {
|
||||||
return bind.NewContractInstance(backend, addr, c.abi)
|
return bind.NewContractInstance(backend, addr, c.abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -151,7 +151,7 @@ func NewC2() *C2 {
|
||||||
|
|
||||||
// Instance creates a wrapper for a deployed contract instance at the given address.
|
// Instance creates a wrapper for a deployed contract instance at the given address.
|
||||||
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
||||||
func (c *C2) Instance(backend bind.ContractBackend, addr common.Address) bind.ContractInstance {
|
func (c *C2) Instance(backend bind.ContractBackend, addr common.Address) *bind.BoundContract {
|
||||||
return bind.NewContractInstance(backend, addr, c.abi)
|
return bind.NewContractInstance(backend, addr, c.abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ func NewMyContract() *MyContract {
|
||||||
|
|
||||||
// Instance creates a wrapper for a deployed contract instance at the given address.
|
// Instance creates a wrapper for a deployed contract instance at the given address.
|
||||||
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
// Use this to create the instance object passed to abigen v2 library functions Call, Transact, etc.
|
||||||
func (c *MyContract) Instance(backend bind.ContractBackend, addr common.Address) bind.ContractInstance {
|
func (c *MyContract) Instance(backend bind.ContractBackend, addr common.Address) *bind.BoundContract {
|
||||||
return bind.NewContractInstance(backend, addr, c.abi)
|
return bind.NewContractInstance(backend, addr, c.abi)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,22 +27,12 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/event"
|
"github.com/ethereum/go-ethereum/event"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ContractInstance represents a contract deployed on-chain that can be interacted with (filter for past logs, watch
|
func NewContractInstance(backend ContractBackend, addr common.Address, abi abi.ABI) *BoundContract {
|
||||||
// for new logs, call, transact).
|
return NewBoundContract(addr, abi, backend, backend, backend)
|
||||||
type ContractInstance struct {
|
|
||||||
Address common.Address
|
|
||||||
Backend ContractBackend
|
|
||||||
abi abi.ABI
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewContractInstance(backend ContractBackend, addr common.Address, abi abi.ABI) ContractInstance {
|
|
||||||
return ContractInstance{addr, backend, abi}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// FilterEvents returns an EventIterator instance for filtering historical events based on the event id and a block range.
|
// FilterEvents returns an EventIterator instance for filtering historical events based on the event id and a block range.
|
||||||
func FilterEvents[T any](instance ContractInstance, opts *FilterOpts, eventName string, unpack func(*types.Log) (*T, error), topics ...[]any) (*EventIterator[T], error) {
|
func FilterEvents[T any](c *BoundContract, opts *FilterOpts, eventName string, unpack func(*types.Log) (*T, error), topics ...[]any) (*EventIterator[T], error) {
|
||||||
backend := instance.Backend
|
|
||||||
c := NewBoundContract(instance.Address, instance.abi, backend, backend, backend)
|
|
||||||
logs, sub, err := c.FilterLogs(opts, eventName, topics...)
|
logs, sub, err := c.FilterLogs(opts, eventName, topics...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -54,9 +44,7 @@ func FilterEvents[T any](instance ContractInstance, opts *FilterOpts, eventName
|
||||||
// contract to be intercepted, unpacked, and forwarded to sink. If
|
// contract to be intercepted, unpacked, and forwarded to sink. If
|
||||||
// unpack returns an error, the returned subscription is closed with the
|
// unpack returns an error, the returned subscription is closed with the
|
||||||
// error.
|
// error.
|
||||||
func WatchEvents[T any](instance ContractInstance, opts *WatchOpts, eventName string, unpack func(*types.Log) (*T, error), sink chan<- *T, topics ...[]any) (event.Subscription, error) {
|
func WatchEvents[T any](c *BoundContract, opts *WatchOpts, eventName string, unpack func(*types.Log) (*T, error), sink chan<- *T, topics ...[]any) (event.Subscription, error) {
|
||||||
backend := instance.Backend
|
|
||||||
c := NewBoundContract(instance.Address, instance.abi, backend, backend, backend)
|
|
||||||
logs, sub, err := c.WatchLogs(opts, eventName, topics...)
|
logs, sub, err := c.WatchLogs(opts, eventName, topics...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -159,26 +147,13 @@ func (it *EventIterator[T]) Close() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Transact creates and submits a transaction to the bound contract instance
|
|
||||||
// using the provided abi-encoded input (or nil).
|
|
||||||
func Transact(instance ContractInstance, opts *TransactOpts, input []byte) (*types.Transaction, error) {
|
|
||||||
var (
|
|
||||||
addr = instance.Address
|
|
||||||
backend = instance.Backend
|
|
||||||
)
|
|
||||||
c := NewBoundContract(addr, instance.abi, backend, backend, backend)
|
|
||||||
return c.RawTransact(opts, input)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Call performs an eth_call on the given bound contract instance, using the provided
|
// Call performs an eth_call on the given bound contract instance, using the provided
|
||||||
// ABI-encoded input.
|
// ABI-encoded input.
|
||||||
//
|
//
|
||||||
// To call a function that doesn't return any output, pass nil as the unpack function.
|
// To call a function that doesn't return any output, pass nil as the unpack function.
|
||||||
// This can be useful if you just want to check that the function doesn't revert.
|
// This can be useful if you just want to check that the function doesn't revert.
|
||||||
func Call[T any](instance ContractInstance, opts *CallOpts, packedInput []byte, unpack func([]byte) (T, error)) (T, error) {
|
func Call[T any](c *BoundContract, opts *CallOpts, packedInput []byte, unpack func([]byte) (T, error)) (T, error) {
|
||||||
var defaultResult T
|
var defaultResult T
|
||||||
backend := instance.Backend
|
|
||||||
c := NewBoundContract(instance.Address, instance.abi, backend, backend, backend)
|
|
||||||
packedOutput, err := c.CallRaw(opts, packedInput)
|
packedOutput, err := c.CallRaw(opts, packedInput)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return defaultResult, err
|
return defaultResult, err
|
||||||
|
|
|
||||||
|
|
@ -237,7 +237,7 @@ func TestEvents(t *testing.T) {
|
||||||
defer sub2.Unsubscribe()
|
defer sub2.Unsubscribe()
|
||||||
|
|
||||||
packedInput := c.PackEmitMulti()
|
packedInput := c.PackEmitMulti()
|
||||||
tx, err := bind.Transact(instance, txAuth, packedInput)
|
tx, err := instance.RawTransact(txAuth, packedInput)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to send transaction: %v", err)
|
t.Fatalf("failed to send transaction: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue