package validator import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/contracts/validator/contract" "math/big" ) type Validator struct { *contract.XDCValidatorSession contractBackend bind.ContractBackend } func NewValidator(transactOpts *bind.TransactOpts, contractAddr common.Address, contractBackend bind.ContractBackend) (*Validator, error) { validator, err := contract.NewXDCValidator(contractAddr, contractBackend) if err != nil { return nil, err } return &Validator{ &contract.XDCValidatorSession{ Contract: validator, TransactOpts: *transactOpts, }, contractBackend, }, nil } func DeployValidator(transactOpts *bind.TransactOpts, contractBackend bind.ContractBackend, candidates []common.Address, caps []*big.Int) (common.Address, *Validator, error) { validatorAddr, _, _, err := contract.DeployXDCValidator(transactOpts, contractBackend, candidates, caps) if err != nil { return validatorAddr, nil, err } validator, err := NewValidator(transactOpts, validatorAddr, contractBackend) if err != nil { return validatorAddr, nil, err } return validatorAddr, validator, nil }