View Source
const DefaultProposalThreshold uint64 = 3
View Source
const ShortHashSuffixBytes = 3

    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.



    func NewDeterministicGenesis

    func NewDeterministicGenesis(seed int64) *deterministicGenesis

      Generates deterministic pseudo-random genesis state

      func PermissionsAccount

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


      type Account

      type Account struct {
      	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
          	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) ChainID

            func (genesisDoc *GenesisDoc) ChainID() 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 {
              	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


                Path Synopsis