Documentation ¶
Overview ¶
Package account implements Account used in Kaia.
Inside the package, types, structures, functions, and interfaces associated with the Account are defined.
Type of Account ¶
There are three types of Accounts used in Kaia.
- LegacyAccountType
- ExternallyOwnedAccountType
- SmartContractAccountType
AccountCommon implements the structure and functions common to Kaia account, which also implements the Account interface.
EOA (ExternallyOwnedAccount) and SCA (SmartContractAccount) are implemented in a structure that includes AccountCommon.
LegacyAccount is implemented separately according to the account interface.
Source Files ¶
Account related functions and variables are defined in the files listed below.
- account.go : Defines types, interfaces and functions associated with the Account.
- account_common.go : Data structures and functions that are common to EOA (ExternallyOwnedAccount) and SCA (SmartContractAccount) are defined as AccountCommon.
- account_serializer.go : AccountSerializer is defined for serializing Account.
- externally_owned_account.go : ExternallyOwnedAccount containing an AccountCommon is defined.
- legacy_account.go : LegacyAccount that implements the Account interface is defined.
- smart_contract_account.go : SmartContractAccount containing an AccountCommon is defined.
For more information on Account, please refer to the document below. https://docs.kaia.io/docs/learn/accounts/#kaia-accounts-
Index ¶
- Variables
- func UnextendSerializedAccount(b []byte) (result []byte)
- type Account
- type AccountCommon
- func (e *AccountCommon) DecodeRLP(s *rlp.Stream) error
- func (e *AccountCommon) DeepCopy() *AccountCommon
- func (e *AccountCommon) Empty() bool
- func (e *AccountCommon) EncodeRLP(w io.Writer) error
- func (e *AccountCommon) Equal(ta *AccountCommon) bool
- func (e *AccountCommon) GetBalance() *big.Int
- func (e *AccountCommon) GetHumanReadable() bool
- func (e *AccountCommon) GetKey() accountkey.AccountKey
- func (e *AccountCommon) GetNonce() uint64
- func (e *AccountCommon) MarshalJSON() ([]byte, error)
- func (e *AccountCommon) ReplaceKey(newKey accountkey.AccountKey, currentBlockNumber uint64) error
- func (e *AccountCommon) SetBalance(b *big.Int)
- func (e *AccountCommon) SetHumanReadable(h bool)
- func (e *AccountCommon) SetKey(k accountkey.AccountKey)
- func (e *AccountCommon) SetNonce(n uint64)
- func (e *AccountCommon) String() string
- func (e *AccountCommon) UnmarshalJSON(b []byte) error
- func (e *AccountCommon) UpdateKey(newKey accountkey.AccountKey, currentBlockNumber uint64) error
- type AccountSerializer
- type AccountType
- type AccountValueKeyType
- type AccountWithKey
- type ExternallyOwnedAccount
- type LegacyAccount
- func (a *LegacyAccount) DeepCopy() Account
- func (a *LegacyAccount) Dump()
- func (a *LegacyAccount) Empty() bool
- func (a *LegacyAccount) Equal(b Account) bool
- func (a *LegacyAccount) GetBalance() *big.Int
- func (a *LegacyAccount) GetCodeHash() []byte
- func (a *LegacyAccount) GetHumanReadable() bool
- func (a *LegacyAccount) GetNonce() uint64
- func (a *LegacyAccount) GetStorageRoot() common.Hash
- func (a *LegacyAccount) SetBalance(b *big.Int)
- func (a *LegacyAccount) SetCodeHash(h []byte)
- func (a *LegacyAccount) SetHumanReadable(b bool)
- func (a *LegacyAccount) SetNonce(n uint64)
- func (a *LegacyAccount) SetStorageRoot(h common.Hash)
- func (a *LegacyAccount) String() string
- func (a *LegacyAccount) Type() AccountType
- func (a *LegacyAccount) UpdateKey(newKey accountkey.AccountKey, currentBlockNumber uint64) error
- type ProgramAccount
- type SmartContractAccount
- func (sca *SmartContractAccount) DecodeRLP(s *rlp.Stream) error
- func (sca *SmartContractAccount) DeepCopy() Account
- func (sca *SmartContractAccount) Empty() bool
- func (sca *SmartContractAccount) EncodeRLP(w io.Writer) error
- func (sca *SmartContractAccount) EncodeRLPExt(w io.Writer) error
- func (sca *SmartContractAccount) Equal(a Account) bool
- func (sca *SmartContractAccount) GetCodeFormat() params.CodeFormat
- func (sca *SmartContractAccount) GetCodeHash() []byte
- func (sca *SmartContractAccount) GetStorageRoot() common.ExtHash
- func (sca *SmartContractAccount) GetVmVersion() params.VmVersion
- func (sca *SmartContractAccount) MarshalJSON() ([]byte, error)
- func (sca *SmartContractAccount) SetCodeHash(h []byte)
- func (sca *SmartContractAccount) SetCodeInfo(ci params.CodeInfo)
- func (sca *SmartContractAccount) SetStorageRoot(h common.ExtHash)
- func (sca *SmartContractAccount) String() string
- func (sca *SmartContractAccount) Type() AccountType
- func (sca *SmartContractAccount) UnmarshalJSON(b []byte) error
- func (sca *SmartContractAccount) UpdateKey(newKey accountkey.AccountKey, currentBlockNumber uint64) error
Constants ¶
This section is empty.
Variables ¶
var ( ErrUndefinedAccountType = errors.New("undefined account type") ErrAccountKeyNotModifiable = errors.New("account key is not modifiable") )
Functions ¶
func UnextendSerializedAccount ¶
UnextendSerializedAccount unextends ExtHash fields within an RLP-encoded account. If the supplied bytes is not an RLP-encoded account, or does not contain any ExtHash, then return the supplied bytes unchanged.
Types ¶
type Account ¶
type Account interface { Type() AccountType GetNonce() uint64 GetBalance() *big.Int GetHumanReadable() bool SetNonce(n uint64) SetBalance(b *big.Int) SetHumanReadable(b bool) // UpdateKey updates the account's key with the given key. UpdateKey(newKey accountkey.AccountKey, currentBlockNumber uint64) error // Empty returns whether the account is considered empty. // The "empty" account may be defined differently depending on the actual account type. // An example of an empty account could be described as the one that satisfies the following conditions: // - nonce is zero // - balance is zero // - codeHash is the same as emptyCodeHash Empty() bool // Equal returns true if all the attributes are exactly same. Otherwise, returns false. Equal(Account) bool // DeepCopy copies all the attributes. DeepCopy() Account // String returns all attributes of this object as a string. String() string }
Account is the Kaia consensus representation of accounts. These objects are stored in the main account trie.
func NewAccountWithMap ¶
func NewAccountWithMap(t AccountType, values map[AccountValueKeyType]interface{}) (Account, error)
NewAccountWithMap creates an Account object initialized with the given map.
func NewAccountWithType ¶
func NewAccountWithType(t AccountType) (Account, error)
NewAccountWithType creates an Account object with the given type.
type AccountCommon ¶
type AccountCommon struct {
// contains filtered or unexported fields
}
AccountCommon represents the common data structure of a Kaia account.
func (*AccountCommon) DeepCopy ¶
func (e *AccountCommon) DeepCopy() *AccountCommon
func (*AccountCommon) Empty ¶
func (e *AccountCommon) Empty() bool
func (*AccountCommon) Equal ¶
func (e *AccountCommon) Equal(ta *AccountCommon) bool
func (*AccountCommon) GetBalance ¶
func (e *AccountCommon) GetBalance() *big.Int
func (*AccountCommon) GetHumanReadable ¶
func (e *AccountCommon) GetHumanReadable() bool
func (*AccountCommon) GetKey ¶
func (e *AccountCommon) GetKey() accountkey.AccountKey
func (*AccountCommon) GetNonce ¶
func (e *AccountCommon) GetNonce() uint64
func (*AccountCommon) MarshalJSON ¶
func (e *AccountCommon) MarshalJSON() ([]byte, error)
func (*AccountCommon) ReplaceKey ¶
func (e *AccountCommon) ReplaceKey(newKey accountkey.AccountKey, currentBlockNumber uint64) error
func (*AccountCommon) SetBalance ¶
func (e *AccountCommon) SetBalance(b *big.Int)
func (*AccountCommon) SetHumanReadable ¶
func (e *AccountCommon) SetHumanReadable(h bool)
func (*AccountCommon) SetKey ¶
func (e *AccountCommon) SetKey(k accountkey.AccountKey)
func (*AccountCommon) SetNonce ¶
func (e *AccountCommon) SetNonce(n uint64)
func (*AccountCommon) String ¶
func (e *AccountCommon) String() string
func (*AccountCommon) UnmarshalJSON ¶
func (e *AccountCommon) UnmarshalJSON(b []byte) error
func (*AccountCommon) UpdateKey ¶
func (e *AccountCommon) UpdateKey(newKey accountkey.AccountKey, currentBlockNumber uint64) error
type AccountSerializer ¶
type AccountSerializer struct {
// contains filtered or unexported fields
}
AccountSerializer serializes an Account object using RLP/JSON.
func NewAccountSerializer ¶
func NewAccountSerializer() *AccountSerializer
NewAccountSerializer creates a new AccountSerializer object with default values. This returned object will be used for decoding.
func NewAccountSerializerExt ¶
func NewAccountSerializerExt() *AccountSerializer
NewAccountSerializer creates a new AccountSerializer object with default values. This returned object will be used for decoding.
func NewAccountSerializerExtWithAccount ¶
func NewAccountSerializerExtWithAccount(a Account) *AccountSerializer
NewAccountSerializerExtWithAccount creates a new AccountSerializer object with the given account.
func NewAccountSerializerWithAccount ¶
func NewAccountSerializerWithAccount(a Account) *AccountSerializer
NewAccountSerializerWithAccount creates a new AccountSerializer object with the given account.
func (*AccountSerializer) GetAccount ¶
func (ser *AccountSerializer) GetAccount() Account
func (*AccountSerializer) MarshalJSON ¶
func (ser *AccountSerializer) MarshalJSON() ([]byte, error)
func (*AccountSerializer) UnmarshalJSON ¶
func (ser *AccountSerializer) UnmarshalJSON(b []byte) error
type AccountType ¶
type AccountType uint8
const ( LegacyAccountType AccountType = iota ExternallyOwnedAccountType SmartContractAccountType )
func (AccountType) String ¶
func (a AccountType) String() string
type AccountValueKeyType ¶
type AccountValueKeyType uint
const ( AccountValueKeyNonce AccountValueKeyType = iota AccountValueKeyBalance AccountValueKeyStorageRoot AccountValueKeyCodeHash AccountValueKeyHumanReadable AccountValueKeyAccountKey AccountValueKeyCodeInfo )
type AccountWithKey ¶
type AccountWithKey interface { Account GetKey() accountkey.AccountKey SetKey(key accountkey.AccountKey) }
func GetAccountWithKey ¶
func GetAccountWithKey(a Account) AccountWithKey
type ExternallyOwnedAccount ¶
type ExternallyOwnedAccount struct {
*AccountCommon
}
ExternallyOwnedAccount represents a Kaia account used by a user.
func (*ExternallyOwnedAccount) DeepCopy ¶
func (e *ExternallyOwnedAccount) DeepCopy() Account
func (*ExternallyOwnedAccount) Dump ¶
func (e *ExternallyOwnedAccount) Dump()
func (*ExternallyOwnedAccount) Equal ¶
func (e *ExternallyOwnedAccount) Equal(a Account) bool
func (*ExternallyOwnedAccount) String ¶
func (e *ExternallyOwnedAccount) String() string
func (*ExternallyOwnedAccount) Type ¶
func (e *ExternallyOwnedAccount) Type() AccountType
type LegacyAccount ¶
type LegacyAccount struct { Nonce uint64 Balance *big.Int Root common.Hash // merkle root of the storage trie CodeHash []byte }
LegacyAccount is the Kaia consensus representation of legacy accounts. These objects are stored in the main account trie.
func (*LegacyAccount) DeepCopy ¶
func (a *LegacyAccount) DeepCopy() Account
func (*LegacyAccount) Dump ¶
func (a *LegacyAccount) Dump()
func (*LegacyAccount) Empty ¶
func (a *LegacyAccount) Empty() bool
func (*LegacyAccount) Equal ¶
func (a *LegacyAccount) Equal(b Account) bool
func (*LegacyAccount) GetBalance ¶
func (a *LegacyAccount) GetBalance() *big.Int
func (*LegacyAccount) GetCodeHash ¶
func (a *LegacyAccount) GetCodeHash() []byte
func (*LegacyAccount) GetHumanReadable ¶
func (a *LegacyAccount) GetHumanReadable() bool
func (*LegacyAccount) GetNonce ¶
func (a *LegacyAccount) GetNonce() uint64
func (*LegacyAccount) GetStorageRoot ¶
func (a *LegacyAccount) GetStorageRoot() common.Hash
func (*LegacyAccount) SetBalance ¶
func (a *LegacyAccount) SetBalance(b *big.Int)
func (*LegacyAccount) SetCodeHash ¶
func (a *LegacyAccount) SetCodeHash(h []byte)
func (*LegacyAccount) SetHumanReadable ¶
func (a *LegacyAccount) SetHumanReadable(b bool)
func (*LegacyAccount) SetNonce ¶
func (a *LegacyAccount) SetNonce(n uint64)
func (*LegacyAccount) SetStorageRoot ¶
func (a *LegacyAccount) SetStorageRoot(h common.Hash)
func (*LegacyAccount) String ¶
func (a *LegacyAccount) String() string
func (*LegacyAccount) Type ¶
func (a *LegacyAccount) Type() AccountType
func (*LegacyAccount) UpdateKey ¶
func (a *LegacyAccount) UpdateKey(newKey accountkey.AccountKey, currentBlockNumber uint64) error
type ProgramAccount ¶
type ProgramAccount interface { Account GetStorageRoot() common.ExtHash GetCodeHash() []byte GetCodeFormat() params.CodeFormat GetVmVersion() params.VmVersion SetStorageRoot(h common.ExtHash) SetCodeHash(h []byte) SetCodeInfo(codeInfo params.CodeInfo) // A variant of EncodeRLP that preserves ExtHash fields as-is. // In contrast, vanilla EncodeRLP must unextend ExtHash when encoding. EncodeRLPExt(w io.Writer) error }
ProgramAccount is an interface of an account having a program (code + storage). This interface is implemented by LegacyAccount and SmartContractAccount.
func GetProgramAccount ¶
func GetProgramAccount(a Account) ProgramAccount
type SmartContractAccount ¶
type SmartContractAccount struct { *AccountCommon // contains filtered or unexported fields }
SmartContractAccount represents a smart contract account containing storage root and code hash.
func (*SmartContractAccount) DecodeRLP ¶
func (sca *SmartContractAccount) DecodeRLP(s *rlp.Stream) error
func (*SmartContractAccount) DeepCopy ¶
func (sca *SmartContractAccount) DeepCopy() Account
func (*SmartContractAccount) Empty ¶
func (sca *SmartContractAccount) Empty() bool
func (*SmartContractAccount) EncodeRLP ¶
func (sca *SmartContractAccount) EncodeRLP(w io.Writer) error
func (*SmartContractAccount) EncodeRLPExt ¶
func (sca *SmartContractAccount) EncodeRLPExt(w io.Writer) error
func (*SmartContractAccount) Equal ¶
func (sca *SmartContractAccount) Equal(a Account) bool
func (*SmartContractAccount) GetCodeFormat ¶
func (sca *SmartContractAccount) GetCodeFormat() params.CodeFormat
func (*SmartContractAccount) GetCodeHash ¶
func (sca *SmartContractAccount) GetCodeHash() []byte
func (*SmartContractAccount) GetStorageRoot ¶
func (sca *SmartContractAccount) GetStorageRoot() common.ExtHash
func (*SmartContractAccount) GetVmVersion ¶
func (sca *SmartContractAccount) GetVmVersion() params.VmVersion
func (*SmartContractAccount) MarshalJSON ¶
func (sca *SmartContractAccount) MarshalJSON() ([]byte, error)
func (*SmartContractAccount) SetCodeHash ¶
func (sca *SmartContractAccount) SetCodeHash(h []byte)
func (*SmartContractAccount) SetCodeInfo ¶
func (sca *SmartContractAccount) SetCodeInfo(ci params.CodeInfo)
func (*SmartContractAccount) SetStorageRoot ¶
func (sca *SmartContractAccount) SetStorageRoot(h common.ExtHash)
func (*SmartContractAccount) String ¶
func (sca *SmartContractAccount) String() string
func (*SmartContractAccount) Type ¶
func (sca *SmartContractAccount) Type() AccountType
func (*SmartContractAccount) UnmarshalJSON ¶
func (sca *SmartContractAccount) UnmarshalJSON(b []byte) error
func (*SmartContractAccount) UpdateKey ¶
func (sca *SmartContractAccount) UpdateKey(newKey accountkey.AccountKey, currentBlockNumber uint64) error