minipool

package
v1.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 3, 2022 License: GPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MinipoolPrelaunchBatchSize = 750
	MinipoolAddressBatchSize   = 50
	MinipoolDetailsBatchSize   = 20
)

Settings

View Source
const EventScanInterval = 10000

The number of blocks to look for events in at once when scanning

Variables

This section is empty.

Functions

func EstimateSubmitMinipoolWithdrawableGas

func EstimateSubmitMinipoolWithdrawableGas(ggp *gogopool.GoGoPool, minipoolAddress common.Address, opts *bind.TransactOpts) (gogopool.GasInfo, error)

Estimate the gas of SubmitMinipoolWithdrawable

func GetActiveMinipoolCount

func GetActiveMinipoolCount(ggp *gogopool.GoGoPool, opts *bind.CallOpts) (uint64, error)

Get the number of active minipools in the network

func GetFinalisedMinipoolCount

func GetFinalisedMinipoolCount(ggp *gogopool.GoGoPool, opts *bind.CallOpts) (uint64, error)

Get the number of finalised minipools in the network

func GetMinipoolAddresses

func GetMinipoolAddresses(ggp *gogopool.GoGoPool, opts *bind.CallOpts) ([]common.Address, error)

Get all minipool addresses

func GetMinipoolAt

func GetMinipoolAt(ggp *gogopool.GoGoPool, index uint64, opts *bind.CallOpts) (common.Address, error)

Get a minipool address by index

func GetMinipoolByPubkey

func GetMinipoolByPubkey(ggp *gogopool.GoGoPool, pubkey ggptypes.ValidatorPubkey, opts *bind.CallOpts) (common.Address, error)

Get a minipool address by validator pubkey

func GetMinipoolBytecode

func GetMinipoolBytecode(ggp *gogopool.GoGoPool, opts *bind.CallOpts) ([]byte, error)

Get the CreationCode binary for the GoGoMinipool contract that will be created by node deposits

func GetMinipoolCount

func GetMinipoolCount(ggp *gogopool.GoGoPool, opts *bind.CallOpts) (uint64, error)

Get the minipool count

func GetMinipoolExists

func GetMinipoolExists(ggp *gogopool.GoGoPool, minipoolAddress common.Address, opts *bind.CallOpts) (bool, error)

Check whether a minipool exists

func GetMinipoolPubkey

func GetMinipoolPubkey(ggp *gogopool.GoGoPool, minipoolAddress common.Address, opts *bind.CallOpts) (ggptypes.ValidatorPubkey, error)

Get a minipool's validator pubkey

func GetMinipoolWithdrawalCredentials

func GetMinipoolWithdrawalCredentials(ggp *gogopool.GoGoPool, minipoolAddress common.Address, opts *bind.CallOpts) (common.Hash, error)

Get the 0x01-based Beacon Chain withdrawal credentials for a given minipool

func GetNodeActiveMinipoolCount

func GetNodeActiveMinipoolCount(ggp *gogopool.GoGoPool, nodeAddress common.Address, opts *bind.CallOpts) (uint64, error)

Get the number of minipools owned by a node that are not finalised

func GetNodeFinalisedMinipoolCount

func GetNodeFinalisedMinipoolCount(ggp *gogopool.GoGoPool, nodeAddress common.Address, opts *bind.CallOpts) (uint64, error)

Get the number of minipools owned by a node that are finalised

func GetNodeMinipoolAddresses

func GetNodeMinipoolAddresses(ggp *gogopool.GoGoPool, nodeAddress common.Address, opts *bind.CallOpts) ([]common.Address, error)

Get a node's minipool addresses

func GetNodeMinipoolAt

func GetNodeMinipoolAt(ggp *gogopool.GoGoPool, nodeAddress common.Address, index uint64, opts *bind.CallOpts) (common.Address, error)

Get a node's minipool address by index

func GetNodeMinipoolCount

func GetNodeMinipoolCount(ggp *gogopool.GoGoPool, nodeAddress common.Address, opts *bind.CallOpts) (uint64, error)

Get a node's minipool count

func GetNodeValidatingMinipoolAt

func GetNodeValidatingMinipoolAt(ggp *gogopool.GoGoPool, nodeAddress common.Address, index uint64, opts *bind.CallOpts) (common.Address, error)

Get a node's validating minipool address by index

func GetNodeValidatingMinipoolCount

func GetNodeValidatingMinipoolCount(ggp *gogopool.GoGoPool, nodeAddress common.Address, opts *bind.CallOpts) (uint64, error)

Get a node's validating minipool count

func GetNodeValidatingMinipoolPubkeys

func GetNodeValidatingMinipoolPubkeys(ggp *gogopool.GoGoPool, nodeAddress common.Address, opts *bind.CallOpts) ([]ggptypes.ValidatorPubkey, error)

Get a node's validating minipool pubkeys

func GetPrelaunchMinipoolAddresses

func GetPrelaunchMinipoolAddresses(ggp *gogopool.GoGoPool, opts *bind.CallOpts) ([]common.Address, error)

Get the addresses of all minipools in prelaunch status

func GetQueueEffectiveCapacity

func GetQueueEffectiveCapacity(ggp *gogopool.GoGoPool, opts *bind.CallOpts) (*big.Int, error)

Get the total effective capacity of the minipool queue (used in node demand calculation)

func GetQueueLength

func GetQueueLength(ggp *gogopool.GoGoPool, depositType ggptypes.MinipoolDeposit, opts *bind.CallOpts) (uint64, error)

Get the length of a single minipool queue

func GetQueueNextCapacity

func GetQueueNextCapacity(ggp *gogopool.GoGoPool, opts *bind.CallOpts) (*big.Int, error)

Get the capacity of the next minipool in the queue

func GetQueueTotalCapacity

func GetQueueTotalCapacity(ggp *gogopool.GoGoPool, opts *bind.CallOpts) (*big.Int, error)

Get the total capacity of the minipool queue

func GetQueueTotalLength

func GetQueueTotalLength(ggp *gogopool.GoGoPool, opts *bind.CallOpts) (uint64, error)

Get the total length of the minipool queue

func SubmitMinipoolWithdrawable

func SubmitMinipoolWithdrawable(ggp *gogopool.GoGoPool, minipoolAddress common.Address, opts *bind.TransactOpts) (common.Hash, error)

Submit a minipool withdrawable event

Types

type Minipool

type Minipool struct {
	Address  common.Address
	Contract *gogopool.Contract
	GoGoPool *gogopool.GoGoPool
}

Minipool contract

func NewMinipool

func NewMinipool(ggp *gogopool.GoGoPool, address common.Address) (*Minipool, error)

Create new minipool contract

func (*Minipool) CalculateNodeShare

func (mp *Minipool) CalculateNodeShare(balance *big.Int, opts *bind.CallOpts) (*big.Int, error)

Given a validator balance, calculates how much belongs to the node taking into consideration rewards and penalties

func (*Minipool) CalculateUserShare

func (mp *Minipool) CalculateUserShare(balance *big.Int, opts *bind.CallOpts) (*big.Int, error)

Given a validator balance, calculates how much belongs to rETH users taking into consideration rewards and penalties

func (*Minipool) Close

func (mp *Minipool) Close(opts *bind.TransactOpts) (common.Hash, error)

Withdraw node balances from the dissolved minipool and close it

func (*Minipool) DelegateRollback

func (mp *Minipool) DelegateRollback(opts *bind.TransactOpts) (common.Hash, error)

Rollback to previous delegate contract

func (*Minipool) DelegateUpgrade

func (mp *Minipool) DelegateUpgrade(opts *bind.TransactOpts) (common.Hash, error)

Upgrade this minipool to the latest network delegate contract

func (*Minipool) Dissolve

func (mp *Minipool) Dissolve(opts *bind.TransactOpts) (common.Hash, error)

Dissolve the initialized or prelaunch minipool

func (*Minipool) DistributeBalance

func (mp *Minipool) DistributeBalance(opts *bind.TransactOpts) (common.Hash, error)

Distribute the minipool's ETH balance to the node operator and rETH staking pool. !!! WARNING !!! DO NOT CALL THIS until the minipool's validator has exited from the Beacon Chain and the balance has been deposited into the minipool!

func (*Minipool) DistributeBalanceAndFinalise

func (mp *Minipool) DistributeBalanceAndFinalise(opts *bind.TransactOpts) (common.Hash, error)

Distribute the minipool's ETH balance to the node operator and rETH staking pool, then finalises the minipool !!! WARNING !!! DO NOT CALL THIS until the minipool's validator has exited from the Beacon Chain and the balance has been deposited into the minipool!

func (*Minipool) EstimateCloseGas

func (mp *Minipool) EstimateCloseGas(opts *bind.TransactOpts) (gogopool.GasInfo, error)

Estimate the gas of Close

func (*Minipool) EstimateDelegateRollbackGas

func (mp *Minipool) EstimateDelegateRollbackGas(opts *bind.TransactOpts) (gogopool.GasInfo, error)

Estimate the gas of DelegateRollback

func (*Minipool) EstimateDelegateUpgradeGas

func (mp *Minipool) EstimateDelegateUpgradeGas(opts *bind.TransactOpts) (gogopool.GasInfo, error)

Estimate the gas of DelegateUpgrade

func (*Minipool) EstimateDissolveGas

func (mp *Minipool) EstimateDissolveGas(opts *bind.TransactOpts) (gogopool.GasInfo, error)

Estimate the gas of Dissolve

func (*Minipool) EstimateDistributeBalanceAndFinaliseGas

func (mp *Minipool) EstimateDistributeBalanceAndFinaliseGas(opts *bind.TransactOpts) (gogopool.GasInfo, error)

Estimate the gas of DistributeBalanceAndFinalise

func (*Minipool) EstimateDistributeBalanceGas

func (mp *Minipool) EstimateDistributeBalanceGas(opts *bind.TransactOpts) (gogopool.GasInfo, error)

Estimate the gas of DistributeBalance

func (*Minipool) EstimateFinaliseGas

func (mp *Minipool) EstimateFinaliseGas(opts *bind.TransactOpts) (gogopool.GasInfo, error)

Estimate the gas of Finalise

func (*Minipool) EstimateRefundGas

func (mp *Minipool) EstimateRefundGas(opts *bind.TransactOpts) (gogopool.GasInfo, error)

Estimate the gas of Refund

func (*Minipool) EstimateSetUseLatestDelegateGas

func (mp *Minipool) EstimateSetUseLatestDelegateGas(setting bool, opts *bind.TransactOpts) (gogopool.GasInfo, error)

Estimate the gas of SetUseLatestDelegate

func (*Minipool) EstimateStakeGas

func (mp *Minipool) EstimateStakeGas(validatorSignature ggptypes.ValidatorSignature, depositDataRoot common.Hash, opts *bind.TransactOpts) (gogopool.GasInfo, error)

Estimate the gas of Stake

func (*Minipool) EstimateVoteScrubGas

func (mp *Minipool) EstimateVoteScrubGas(opts *bind.TransactOpts) (gogopool.GasInfo, error)

Estimate the gas requiired to vote to scrub a minipool

func (*Minipool) Finalise

func (mp *Minipool) Finalise(opts *bind.TransactOpts) (common.Hash, error)

Finalise a minipool to get the GGP stake back

func (*Minipool) GetDelegate

func (mp *Minipool) GetDelegate(opts *bind.CallOpts) (common.Address, error)

Returns the address of the minipool's stored delegate

func (*Minipool) GetDepositType

func (mp *Minipool) GetDepositType(opts *bind.CallOpts) (ggptypes.MinipoolDeposit, error)

Get deposit type

func (*Minipool) GetEffectiveDelegate

func (mp *Minipool) GetEffectiveDelegate(opts *bind.CallOpts) (common.Address, error)

Returns the delegate which will be used when calling this minipool taking into account useLatestDelegate setting

func (*Minipool) GetFinalised

func (mp *Minipool) GetFinalised(opts *bind.CallOpts) (bool, error)

func (*Minipool) GetNodeAddress

func (mp *Minipool) GetNodeAddress(opts *bind.CallOpts) (common.Address, error)

func (*Minipool) GetNodeDepositAssigned

func (mp *Minipool) GetNodeDepositAssigned(opts *bind.CallOpts) (bool, error)

func (*Minipool) GetNodeDepositBalance

func (mp *Minipool) GetNodeDepositBalance(opts *bind.CallOpts) (*big.Int, error)

func (*Minipool) GetNodeDetails

func (mp *Minipool) GetNodeDetails(opts *bind.CallOpts) (NodeDetails, error)

Get node details

func (*Minipool) GetNodeFee

func (mp *Minipool) GetNodeFee(opts *bind.CallOpts) (float64, error)

func (*Minipool) GetNodeRefundBalance

func (mp *Minipool) GetNodeRefundBalance(opts *bind.CallOpts) (*big.Int, error)

func (*Minipool) GetPrestakeEvent

func (mp *Minipool) GetPrestakeEvent(intervalSize *big.Int, opts *bind.CallOpts) (PrestakeData, error)

Get the data from this minipool's MinipoolPrestaked event

func (*Minipool) GetPreviousDelegate

func (mp *Minipool) GetPreviousDelegate(opts *bind.CallOpts) (common.Address, error)

Returns the address of the minipool's previous delegate (or address(0) if not set)

func (*Minipool) GetStatus

func (mp *Minipool) GetStatus(opts *bind.CallOpts) (ggptypes.MinipoolStatus, error)

func (*Minipool) GetStatusBlock

func (mp *Minipool) GetStatusBlock(opts *bind.CallOpts) (uint64, error)

func (*Minipool) GetStatusDetails

func (mp *Minipool) GetStatusDetails(opts *bind.CallOpts) (StatusDetails, error)

Get status details

func (*Minipool) GetStatusTime

func (mp *Minipool) GetStatusTime(opts *bind.CallOpts) (time.Time, error)

func (*Minipool) GetUseLatestDelegate

func (mp *Minipool) GetUseLatestDelegate(opts *bind.CallOpts) (bool, error)

Getter for useLatestDelegate setting

func (*Minipool) GetUserDepositAssigned

func (mp *Minipool) GetUserDepositAssigned(opts *bind.CallOpts) (bool, error)

func (*Minipool) GetUserDepositAssignedTime

func (mp *Minipool) GetUserDepositAssignedTime(opts *bind.CallOpts) (time.Time, error)

func (*Minipool) GetUserDepositBalance

func (mp *Minipool) GetUserDepositBalance(opts *bind.CallOpts) (*big.Int, error)

func (*Minipool) GetUserDetails

func (mp *Minipool) GetUserDetails(opts *bind.CallOpts) (UserDetails, error)

Get user deposit details

func (*Minipool) Refund

func (mp *Minipool) Refund(opts *bind.TransactOpts) (common.Hash, error)

Refund node ETH from the minipool

func (*Minipool) SetUseLatestDelegate

func (mp *Minipool) SetUseLatestDelegate(setting bool, opts *bind.TransactOpts) (common.Hash, error)

If set to true, will automatically use the latest delegate contract

func (*Minipool) Stake

func (mp *Minipool) Stake(validatorSignature ggptypes.ValidatorSignature, depositDataRoot common.Hash, opts *bind.TransactOpts) (common.Hash, error)

Progress the prelaunch minipool to staking

func (*Minipool) VoteScrub

func (mp *Minipool) VoteScrub(opts *bind.TransactOpts) (common.Hash, error)

Vote to scrub a minipool

type MinipoolCountsPerStatus

type MinipoolCountsPerStatus struct {
	Initialized  *big.Int `abi:"initialisedCount"`
	Prelaunch    *big.Int `abi:"prelaunchCount"`
	Staking      *big.Int `abi:"stakingCount"`
	Withdrawable *big.Int `abi:"withdrawableCount"`
	Dissolved    *big.Int `abi:"dissolvedCount"`
}

The counts of minipools per status

func GetMinipoolCountPerStatus

func GetMinipoolCountPerStatus(ggp *gogopool.GoGoPool, opts *bind.CallOpts) (MinipoolCountsPerStatus, error)

Get the minipool count by status

type MinipoolDetails

type MinipoolDetails struct {
	Address common.Address           `json:"address"`
	Exists  bool                     `json:"exists"`
	Pubkey  ggptypes.ValidatorPubkey `json:"pubkey"`
}

Minipool details

func GetMinipoolDetails

func GetMinipoolDetails(ggp *gogopool.GoGoPool, minipoolAddress common.Address, opts *bind.CallOpts) (MinipoolDetails, error)

Get a minipool's details

func GetMinipools

func GetMinipools(ggp *gogopool.GoGoPool, opts *bind.CallOpts) ([]MinipoolDetails, error)

Get all minipool details

func GetNodeMinipools

func GetNodeMinipools(ggp *gogopool.GoGoPool, nodeAddress common.Address, opts *bind.CallOpts) ([]MinipoolDetails, error)

Get a node's minipool details

type NodeDetails

type NodeDetails struct {
	Address         common.Address `json:"address"`
	Fee             float64        `json:"fee"`
	DepositBalance  *big.Int       `json:"depositBalance"`
	RefundBalance   *big.Int       `json:"refundBalance"`
	DepositAssigned bool           `json:"depositAssigned"`
}

type PrestakeData

type PrestakeData struct {
	Pubkey                ggptypes.ValidatorPubkey    `json:"pubkey"`
	WithdrawalCredentials common.Hash                 `json:"withdrawalCredentials"`
	Amount                *big.Int                    `json:"amount"`
	Signature             ggptypes.ValidatorSignature `json:"signature"`
	DepositDataRoot       common.Hash                 `json:"depositDataRoot"`
	Time                  time.Time                   `json:"time"`
}

Formatted MinipoolPrestaked event data

type QueueCapacity

type QueueCapacity struct {
	Total        *big.Int
	Effective    *big.Int
	NextMinipool *big.Int
}

Minipool queue capacity

func GetQueueCapacity

func GetQueueCapacity(ggp *gogopool.GoGoPool, opts *bind.CallOpts) (QueueCapacity, error)

Get minipool queue capacity

type QueueLengths

type QueueLengths struct {
	Total        uint64
	FullDeposit  uint64
	HalfDeposit  uint64
	EmptyDeposit uint64
}

Minipool queue lengths

func GetQueueLengths

func GetQueueLengths(ggp *gogopool.GoGoPool, opts *bind.CallOpts) (QueueLengths, error)

Get minipool queue lengths

type StatusDetails

type StatusDetails struct {
	Status      ggptypes.MinipoolStatus `json:"status"`
	StatusBlock uint64                  `json:"statusBlock"`
	StatusTime  time.Time               `json:"statusTime"`
}

Minipool detail types

type UserDetails

type UserDetails struct {
	DepositBalance      *big.Int  `json:"depositBalance"`
	DepositAssigned     bool      `json:"depositAssigned"`
	DepositAssignedTime time.Time `json:"depositAssignedTime"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL