genesis

package
v0.0.0-...-2935fa7 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2021 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultProposalThreshold uint64 = 1
View Source
const ShortHashSuffixBytes = 0

How many bytes to take from the front of the GenesisDoc hash to append to the ChainName to form the ChainID. The idea is to avoid some classes of replay attack between chains with the same name.

Variables

Functions

func NewDeterministicGenesis

func NewDeterministicGenesis(seed int64) *deterministicGenesis

Generates deterministic pseudo-random genesis state

func PermissionsAccount

func PermissionsAccount(globalPerms permission.AccountPermissions) *acm.Account

Types

type Account

type Account struct {
	BasicAccount
	Name        string
	Permissions permission.AccountPermissions
}

func GenesisAccountFromAccount

func GenesisAccountFromAccount(name string, account *acm.Account) Account

func (*Account) AcmAccount

func (genesisAccount *Account) AcmAccount() *acm.Account

func (*Account) Clone

func (genesisAccount *Account) Clone() Account

Clone clones the genesis account

type BasicAccount

type BasicAccount struct {
	// Address is convenient to have in file for reference, but otherwise ignored since derived from PublicKey
	Address   crypto.Address
	PublicKey *crypto.PublicKey
	Amount    uint64
}

func (*BasicAccount) Clone

func (basicAccount *BasicAccount) Clone() BasicAccount

Clone clones the basic account

type GenesisDoc

type GenesisDoc struct {
	GenesisTime time.Time
	ChainName   string
	// Ordinarily we derive this from the genesis hash but to support explicit Ethereum ChainID it may be set
	ChainID           string          `json:",omitempty" toml:",omitempty"`
	AppHash           binary.HexBytes `json:",omitempty" toml:",omitempty"`
	Params            params          `json:",omitempty" toml:",omitempty"`
	Salt              []byte          `json:",omitempty" toml:",omitempty"`
	GlobalPermissions permission.AccountPermissions
	Accounts          []Account
	Validators        []Validator
	// contains filtered or unexported fields
}

func GenesisDocFromJSON

func GenesisDocFromJSON(jsonBlob []byte) (*GenesisDoc, error)

func MakeGenesisDocFromAccounts

func MakeGenesisDocFromAccounts(chainName string, salt []byte, genesisTime time.Time, accounts map[string]*acm.Account,
	validators map[string]*validator.Validator) *GenesisDoc

MakeGenesisDocFromAccounts takes a chainName and a slice of pointers to Account, and a slice of pointers to Validator to construct a GenesisDoc, or returns an error on failure. In particular MakeGenesisDocFromAccount uses the local time as a timestamp for the GenesisDoc.

func (*GenesisDoc) GetChainID

func (genesisDoc *GenesisDoc) GetChainID() string

func (*GenesisDoc) GlobalPermissionsAccount

func (genesisDoc *GenesisDoc) GlobalPermissionsAccount() *acm.Account

func (*GenesisDoc) Hash

func (genesisDoc *GenesisDoc) Hash() []byte

func (*GenesisDoc) JSONBytes

func (genesisDoc *GenesisDoc) JSONBytes() ([]byte, error)

JSONBytes returns the JSON canonical bytes for a given GenesisDoc or an error.

func (*GenesisDoc) JSONString

func (genesisDoc *GenesisDoc) JSONString() string

func (*GenesisDoc) ShortHash

func (genesisDoc *GenesisDoc) ShortHash() []byte

type Validator

type Validator struct {
	BasicAccount
	Name     string
	UnbondTo []BasicAccount
}

func (*Validator) Clone

func (gv *Validator) Clone() Validator

Clone clones the genesis validator

func (*Validator) Validator

func (gv *Validator) Validator() validator.Validator

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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