Documentation
¶
Overview ¶
This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>
(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.2.0]
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>
(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.2.0]
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License alongth this program. If not, see <http://www.gnu.org/licenses/>.
This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>
(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.2.0]
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
Index ¶
- Constants
- func DecodeAbi(abiEncoded string) (*abi.ABI, error)
- func EncodeAbiStr(abiStr string) (string, error)
- type Contract
- func (c *Contract) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error
- func (c *Contract) GetTransactionEvents(txReceipt *types.Receipt, eventName string, eventPrototype interface{}) ([]interface{}, error)
- func (c *Contract) GetTransactionGasInfo(opts *bind.TransactOpts, method string, params ...interface{}) (GasInfo, error)
- func (c *Contract) GetTransferGasInfo(opts *bind.TransactOpts) (GasInfo, error)
- func (c *Contract) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error)
- func (c *Contract) Transfer(opts *bind.TransactOpts) (common.Hash, error)
- type Erc20TokenContractManager
- type ExecutionClient
- type GasInfo
- type NodeElRewardVaultContractManager
- type OperatorRewardsCollectorContractManager
- type PenaltyTrackerContractManager
- type PermissionlessNodeRegistryContractManager
- type PermissionlessPoolContractManager
- type PoolUtilsContractManager
- type SdCollateralContractManager
- type SocializingPoolContractManager
- type StaderConfigContractManager
- type StakePoolManagerContractManager
- type ValidatorWithdrawVaultContractManager
- type VaultFactoryContractManager
- type VaultProxyContractManager
Constants ¶
const ( GasLimitMultiplier float64 = 1.5 MaxGasLimit uint64 = 50000000 )
Transaction settings
Variables ¶
This section is empty.
Functions ¶
func EncodeAbiStr ¶
zlib-compress and base64-encode an ABI JSON string
Types ¶
type Contract ¶
type Contract struct {
Contract *bind.BoundContract
Address *common.Address
ABI *abi.ABI
Client ExecutionClient
}
Contract type wraps go-ethereum bound contract
func (*Contract) Call ¶
func (c *Contract) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error
Call a contract method
func (*Contract) GetTransactionEvents ¶
func (c *Contract) GetTransactionEvents(txReceipt *types.Receipt, eventName string, eventPrototype interface{}) ([]interface{}, error)
Get contract events from a transaction eventPrototype must be an event struct type Returns a slice of untyped values; assert returned events to event struct type
func (*Contract) GetTransactionGasInfo ¶
func (c *Contract) GetTransactionGasInfo(opts *bind.TransactOpts, method string, params ...interface{}) (GasInfo, error)
Get Gas Limit for transaction
func (*Contract) GetTransferGasInfo ¶
func (c *Contract) GetTransferGasInfo(opts *bind.TransactOpts) (GasInfo, error)
Get gas limit for a transfer call
func (*Contract) Transact ¶
func (c *Contract) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error)
Transact on a contract method and wait for a receipt
type Erc20TokenContractManager ¶
type Erc20TokenContractManager struct {
Client ExecutionClient
Erc20Token *contracts.Erc20
Erc20TokenContract *Contract
}
func NewErc20TokenContract ¶
func NewErc20TokenContract(client ExecutionClient, erc20TokenAddress common.Address) (*Erc20TokenContractManager, error)
type ExecutionClient ¶
type ExecutionClient interface {
// CodeAt returns the code of the given account. This is needed to differentiate
// between contract internal errors and the local chain being out of sync.
CodeAt(ctx context.Context, contract common.Address, blockNumber *big.Int) ([]byte, error)
// CallContract executes an Ethereum contract call with the specified data as the
// input.
CallContract(ctx context.Context, call ethereum.CallMsg, blockNumber *big.Int) ([]byte, error)
// HeaderByHash returns the block header with the given hash.
HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error)
// HeaderByNumber returns a block header from the current canonical chain. If number is
// nil, the latest known header is returned.
HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error)
// PendingCodeAt returns the code of the given account in the pending state.
PendingCodeAt(ctx context.Context, account common.Address) ([]byte, error)
// PendingNonceAt retrieves the current pending nonce associated with an account.
PendingNonceAt(ctx context.Context, account common.Address) (uint64, error)
// SuggestGasPrice retrieves the currently suggested gas price to allow a timely
// execution of a transaction.
SuggestGasPrice(ctx context.Context) (*big.Int, error)
// SuggestGasTipCap retrieves the currently suggested 1559 priority fee to allow
// a timely execution of a transaction.
SuggestGasTipCap(ctx context.Context) (*big.Int, error)
// EstimateGas tries to estimate the gas needed to execute a specific
// transaction based on the current pending state of the backend blockchain.
// There is no guarantee that this is the true gas limit requirement as other
// transactions may be added or removed by miners, but it should provide a basis
// for setting a reasonable default.
EstimateGas(ctx context.Context, call ethereum.CallMsg) (gas uint64, err error)
// SendTransaction injects the transaction into the pending pool for execution.
SendTransaction(ctx context.Context, tx *types.Transaction) error
// FilterLogs executes a log filter operation, blocking during execution and
// returning all the results in one batch.
//
FilterLogs(ctx context.Context, query ethereum.FilterQuery) ([]types.Log, error)
// SubscribeFilterLogs creates a background log filtering operation, returning
// a subscription immediately, which can be used to stream the found events.
SubscribeFilterLogs(ctx context.Context, query ethereum.FilterQuery, ch chan<- types.Log) (ethereum.Subscription, error)
// TransactionReceipt returns the receipt of a transaction by transaction hash.
// Note that the receipt is not available for pending transactions.
TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error)
// BlockNumber returns the most recent block number
BlockNumber(ctx context.Context) (uint64, error)
// BalanceAt returns the wei balance of the given account.
// The block number can be nil, in which case the balance is taken from the latest known block.
BalanceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (*big.Int, error)
// TransactionByHash returns the transaction with the given hash.
TransactionByHash(ctx context.Context, hash common.Hash) (tx *types.Transaction, isPending bool, err error)
// NonceAt returns the account nonce of the given account.
// The block number can be nil, in which case the nonce is taken from the latest known block.
NonceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (uint64, error)
// SyncProgress retrieves the current progress of the sync algorithm. If there's
// no sync currently running, it returns nil.
SyncProgress(ctx context.Context) (*ethereum.SyncProgress, error)
}
This is the common interface for execution clients.
type GasInfo ¶
type GasInfo struct {
EstGasLimit uint64 `json:"estGasLimit"`
SafeGasLimit uint64 `json:"safeGasLimit"`
}
Response for gas limits from network and from user request
type NodeElRewardVaultContractManager ¶
type NodeElRewardVaultContractManager struct {
Client ExecutionClient
NodeElRewardVault *contracts.NodeElRewardVault
NodeElRewardVaultContract *Contract
}
func NewNodeElRewardVaultFactory ¶
func NewNodeElRewardVaultFactory(client ExecutionClient, nodeElRewardVaultAddress common.Address) (*NodeElRewardVaultContractManager, error)
type OperatorRewardsCollectorContractManager ¶
type OperatorRewardsCollectorContractManager struct {
Client ExecutionClient
OperatorRewardsCollector *contracts.OperatorRewardsCollector
OperatorRewardsCollectorContract *Contract
}
func NewOperatorRewardsCollector ¶
func NewOperatorRewardsCollector(client ExecutionClient, operatorRewardsCollectorAddress common.Address) (*OperatorRewardsCollectorContractManager, error)
type PenaltyTrackerContractManager ¶
type PenaltyTrackerContractManager struct {
Client ExecutionClient
Penalty *contracts.PenaltyTracker
PenaltyContract *Contract
}
func NewPenaltyTracker ¶
func NewPenaltyTracker(client ExecutionClient, penaltyAddress common.Address) (*PenaltyTrackerContractManager, error)
type PermissionlessNodeRegistryContractManager ¶
type PermissionlessNodeRegistryContractManager struct {
Client ExecutionClient
PermissionlessNodeRegistry *contracts.PermissionlessNodeRegistry
PermissionlessNodeRegistryContract *Contract
}
func NewPermissionlessNodeRegistry ¶
func NewPermissionlessNodeRegistry(client ExecutionClient, permissionlessNodeRegistryAddress common.Address) (*PermissionlessNodeRegistryContractManager, error)
type PermissionlessPoolContractManager ¶
type PermissionlessPoolContractManager struct {
Client ExecutionClient
PermissionlessPool *contracts.PermissionlessPool
PermissionlessPoolContract *Contract
}
func NewPermissionlessPoolFactory ¶
func NewPermissionlessPoolFactory(client ExecutionClient, permissionPoolAddress common.Address) (*PermissionlessPoolContractManager, error)
type PoolUtilsContractManager ¶
type PoolUtilsContractManager struct {
Client ExecutionClient
PoolUtils *contracts.PoolUtils
PoolUtilsContract *Contract
}
func NewPoolUtils ¶
func NewPoolUtils(client ExecutionClient, poolUtilsAddress common.Address) (*PoolUtilsContractManager, error)
type SdCollateralContractManager ¶
type SdCollateralContractManager struct {
Client ExecutionClient
SdCollateral *contracts.SdCollateral
SdCollateralContract *Contract
}
func NewSdCollateralContract ¶
func NewSdCollateralContract(client ExecutionClient, sdCollateralAddress common.Address) (*SdCollateralContractManager, error)
type SocializingPoolContractManager ¶
type SocializingPoolContractManager struct {
Client ExecutionClient
SocializingPool *contracts.SocializingPool
SocializingPoolContract *Contract
}
func NewSocializingPool ¶
func NewSocializingPool(client ExecutionClient, socializingPoolAddress common.Address) (*SocializingPoolContractManager, error)
type StaderConfigContractManager ¶
type StaderConfigContractManager struct {
Client ExecutionClient
StaderConfig *contracts.StaderConfig
StaderConfigContract *Contract
}
func NewStaderConfig ¶
func NewStaderConfig(client ExecutionClient, staderConfigAddress common.Address) (*StaderConfigContractManager, error)
type StakePoolManagerContractManager ¶
type StakePoolManagerContractManager struct {
Client ExecutionClient
StakePoolManager *contracts.StakePoolManager
StakePoolManagerContract *Contract
}
func NewStakePoolManager ¶
func NewStakePoolManager(client ExecutionClient, stakePoolManagerAddress common.Address) (*StakePoolManagerContractManager, error)
type ValidatorWithdrawVaultContractManager ¶
type ValidatorWithdrawVaultContractManager struct {
Client ExecutionClient
ValidatorWithdrawVault *contracts.ValidatorWithdrawVault
ValidatorWithdrawVaultContract *Contract
}
func NewValidatorWithdrawVaultFactory ¶
func NewValidatorWithdrawVaultFactory(client ExecutionClient, validatorWithdrawVaultAddress common.Address) (*ValidatorWithdrawVaultContractManager, error)
type VaultFactoryContractManager ¶
type VaultFactoryContractManager struct {
Client ExecutionClient
VaultFactory *contracts.VaultFactory
VaultFactoryContract *Contract
}
func NewVaultFactory ¶
func NewVaultFactory(client ExecutionClient, vaultFactoryAddress common.Address) (*VaultFactoryContractManager, error)
type VaultProxyContractManager ¶
type VaultProxyContractManager struct {
Client ExecutionClient
VaultProxy *contracts.VaultProxy
VaultProxyContract *Contract
}
Write above bindings for VaultProxy
func NewVaultProxy ¶
func NewVaultProxy(client ExecutionClient, vaultProxyAddress common.Address) (*VaultProxyContractManager, error)