Roy Crihfield
cd195a0fc0
Patch for module conflict when used as a dependency: `github.com/ethereum/c-kzg-4844/bindings/go` was moved to become part of `github.com/ethereum/c-kzg-4844` by `v0.4.0`.
See:
- cerc-io/plugeth#8
- 6ea035f208
```
% go mod tidy
go: github.com/cerc-io/ipld-eth-db-validator/v5/internal/chaingen imports
github.com/ethereum/go-ethereum/core imports
github.com/ethereum/go-ethereum/crypto/kzg4844 imports
github.com/ethereum/c-kzg-4844/bindings/go: ambiguous import: found package github.com/ethereum/c-kzg-4844/bindings/go in multiple modules:
github.com/ethereum/c-kzg-4844 v0.4.0 (/Users/roy/golang/pkg/mod/github.com/ethereum/c-kzg-4844@v0.4.0/bindings/go)
github.com/ethereum/c-kzg-4844/bindings/go v0.0.0-20230126171313-363c7d7593b4 (/Users/roy/golang/pkg/mod/github.com/ethereum/c-kzg-4844/bindings/go@v0.0.0-20230126171313-363c7d7593b4)
```
Also adds test utils from https://git.vdb.to/cerc-io/ipld-eth-db-validator to be shared by cerc-io/ipld-eth-statedb#5 and wherever else.
Reviewed-on: #24
31 lines
604 B
Go
31 lines
604 B
Go
package chaingen
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/ethereum/go-ethereum/accounts/abi"
|
|
"github.com/ethereum/go-ethereum/common"
|
|
)
|
|
|
|
type ContractSpec struct {
|
|
DeploymentCode []byte
|
|
ABI abi.ABI
|
|
}
|
|
|
|
func ParseContract(abiStr, binStr string) (*ContractSpec, error) {
|
|
parsedABI, err := abi.JSON(strings.NewReader(abiStr))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
data := common.Hex2Bytes(binStr)
|
|
return &ContractSpec{data, parsedABI}, nil
|
|
}
|
|
|
|
func MustParseContract(abiStr, binStr string) *ContractSpec {
|
|
spec, err := ParseContract(abiStr, binStr)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return spec
|
|
}
|