swcommon

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: May 2, 2024 License: AGPL-3.0 Imports: 33 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Stakewise validators deposit a full 32 ETH
	StakewiseDepositAmount uint64 = 32e9
)

Variables

This section is empty.

Functions

This section is empty.

Types

type DepositDataManager

type DepositDataManager struct {
	// contains filtered or unexported fields
}

DepositDataManager manages the aggregated deposit data file that Stakewise uses

func NewDepositDataManager

func NewDepositDataManager(sp *StakewiseServiceProvider) (*DepositDataManager, error)

Creates a new manager

func (*DepositDataManager) ComputeMerkleRoot

func (m *DepositDataManager) ComputeMerkleRoot(data []types.ExtendedDepositData) (common.Hash, error)

Compute the Merkle root of the aggregated deposit data using the Stakewise rules NOTE: reverse engineered from https://github.com/stakewise/v3-operator/blob/fa4ac2673a64a486ced51098005376e56e2ddd19/src/validators/utils.py#L207

func (*DepositDataManager) GenerateDepositData

func (m *DepositDataManager) GenerateDepositData(keys []*eth2types.BLSPrivateKey) ([]*types.ExtendedDepositData, error)

Generates deposit data for the provided keys

func (*DepositDataManager) GetDepositData

func (m *DepositDataManager) GetDepositData() ([]byte, error)

Read the deposit data file

func (*DepositDataManager) UpdateDepositData

func (m *DepositDataManager) UpdateDepositData(data []types.ExtendedDepositData) error

Save the deposit data file

type DepositDataMetaResponse

type DepositDataMetaResponse struct {
	Version int `json:"version"`
}

api/deposit-data/meta

type DepositDataResponse

type DepositDataResponse struct {
	Version int                         `json:"version"`
	Data    []types.ExtendedDepositData `json:"data"`
}

api/deposit-data

type ExitData

type ExitData struct {
	Pubkey      string      `json:"pubkey"`
	ExitMessage ExitMessage `json:"exit_message"`
}

type ExitMessage

type ExitMessage struct {
	Message   ExitMessageDetails `json:"message"`
	Signature string             `json:"signature"`
}

type ExitMessageDetails

type ExitMessageDetails struct {
	Epoch          string `json:"epoch"`
	ValidatorIndex string `json:"validator_index"`
}

================= === Requests === =================

type NodesetClient

type NodesetClient struct {
	// contains filtered or unexported fields
}

Client for interacting with the Nodeset server

func NewNodesetClient

func NewNodesetClient(sp *StakewiseServiceProvider) *NodesetClient

Creates a new Nodeset client

func (*NodesetClient) EnsureAuthSignatureExists

func (c *NodesetClient) EnsureAuthSignatureExists() error

Checks if the NodeSet authorization signature has been set, and if not, creates it by getting a signed message from the node wallet

func (*NodesetClient) GetRegisteredValidators

func (c *NodesetClient) GetRegisteredValidators(ctx context.Context) ([]ValidatorStatus, error)

Get a list of all of the pubkeys that have already been registered with NodeSet for this node

func (*NodesetClient) GetServerDepositData

func (c *NodesetClient) GetServerDepositData(ctx context.Context) (int, []types.ExtendedDepositData, error)

Get the aggregated deposit data from the server

func (*NodesetClient) GetServerDepositDataVersion

func (c *NodesetClient) GetServerDepositDataVersion(ctx context.Context) (int, error)

Get the current version of the aggregated deposit data on the server

func (*NodesetClient) UploadDepositData

func (c *NodesetClient) UploadDepositData(ctx context.Context, depositData []byte) ([]byte, error)

Uploads deposit data to Nodeset

func (*NodesetClient) UploadSignedExitData

func (c *NodesetClient) UploadSignedExitData(ctx context.Context, exitData []ExitData) ([]byte, error)

Submit signed exit data to Nodeset

type StakewiseServiceProvider

type StakewiseServiceProvider struct {
	*services.ServiceProvider
	// contains filtered or unexported fields
}

func NewStakewiseServiceProvider

func NewStakewiseServiceProvider(sp *services.ServiceProvider) (*StakewiseServiceProvider, error)

Create a new service provider with Stakewise daemon-specific features

func (*StakewiseServiceProvider) GetDepositDataManager

func (s *StakewiseServiceProvider) GetDepositDataManager() *DepositDataManager

func (*StakewiseServiceProvider) GetModuleConfig

func (s *StakewiseServiceProvider) GetModuleConfig() *swconfig.StakewiseConfig

func (*StakewiseServiceProvider) GetNodesetClient

func (s *StakewiseServiceProvider) GetNodesetClient() *NodesetClient

func (*StakewiseServiceProvider) GetResources

func (*StakewiseServiceProvider) GetWallet

func (s *StakewiseServiceProvider) GetWallet() *Wallet

func (*StakewiseServiceProvider) RequireStakewiseWalletReady

func (sp *StakewiseServiceProvider) RequireStakewiseWalletReady(ctx context.Context, status wallet.WalletStatus) error

func (*StakewiseServiceProvider) WaitForStakewiseWallet

func (sp *StakewiseServiceProvider) WaitForStakewiseWallet(ctx context.Context) error

type ValidatorStatus

type ValidatorStatus struct {
	Pubkey              beacon.ValidatorPubkey `json:"pubkey"`
	Status              string                 `json:"status"`
	ExitMessageUploaded bool                   `json:"exitMessage"`
}

api/validators

type ValidatorsResponse

type ValidatorsResponse struct {
	Data []ValidatorStatus `json:"data"`
}

api/dev/validators

type Wallet

type Wallet struct {
	// contains filtered or unexported fields
}

Wallet manager for the Stakewise daemon

func NewWallet

func NewWallet(sp *services.ServiceProvider) (*Wallet, error)

Create a new wallet

func (*Wallet) CheckIfStakewiseWalletExists

func (w *Wallet) CheckIfStakewiseWalletExists() (bool, error)

Check if the Stakewise wallet and password files exist

func (*Wallet) DerivePubKeys

func (w *Wallet) DerivePubKeys(privateKeys []*eth2types.BLSPrivateKey) ([]beacon.ValidatorPubkey, error)

Get the private validator key with the corresponding pubkey

func (*Wallet) GenerateNewValidatorKey

func (w *Wallet) GenerateNewValidatorKey() (*eth2types.BLSPrivateKey, error)

Generate a new validator key and save it

func (*Wallet) GetAllPrivateKeys

func (w *Wallet) GetAllPrivateKeys() ([]*eth2types.BLSPrivateKey, error)

Gets all of the validator private keys that are stored in the Stakewise keystore folder

func (*Wallet) GetLatestDepositDataVersion

func (w *Wallet) GetLatestDepositDataVersion() int

Get the version of the aggregated deposit data from the NodeSet server that's stored on disk

func (*Wallet) GetPrivateKeyForPubkey

func (w *Wallet) GetPrivateKeyForPubkey(pubkey beacon.ValidatorPubkey) (*eth2types.BLSPrivateKey, error)

Get the private validator key with the corresponding pubkey

func (*Wallet) SaveStakewiseWallet

func (w *Wallet) SaveStakewiseWallet(ethKey []byte, password string) error

Saves the Stakewise wallet and password files

func (*Wallet) SetLatestDepositDataVersion

func (w *Wallet) SetLatestDepositDataVersion(version int) error

Set the latest deposit data version and save the wallet data

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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