|
|
- package vm
-
- import ()
-
- const (
- defaultDataStackCapacity = 10
- )
-
- var (
- Zero = Word{0}
- One = Word{1}
- )
-
- type Word [32]byte
-
- func (w Word) String() string { return string(w[:]) }
- func (w Word) Copy() Word { return w }
- func (w Word) Bytes() []byte { return w[:] } // copied.
- func (w Word) Address() []byte { return w[:20] }
- func (w Word) IsZero() bool {
- accum := byte(0)
- for _, byt := range w {
- accum |= byt
- }
- return accum == 0
- }
-
- //-----------------------------------------------------------------------------
-
- type Account struct {
- Address Word
- Balance uint64
- Code []byte
- Nonce uint64
- StorageRoot Word
- Other interface{} // For holding all other data.
- }
-
- type Log struct {
- Address Word
- Topics []Word
- Data []byte
- Height uint64
- }
-
- type AppState interface {
-
- // Accounts
- GetAccount(addr Word) (*Account, error)
- UpdateAccount(*Account) error
- DeleteAccount(*Account) error
- CreateAccount(*Account) (*Account, error)
-
- // Storage
- GetStorage(Word, Word) (Word, error)
- SetStorage(Word, Word, Word) (bool, error) // Setting to Zero is deleting.
-
- // Logs
- AddLog(*Log)
- }
-
- type Params struct {
- BlockHeight uint64
- BlockHash Word
- BlockTime int64
- GasLimit uint64
- }
|