package vm
|
|
|
|
import (
|
|
. "github.com/tendermint/tendermint/common"
|
|
ptypes "github.com/tendermint/tendermint/permission/types"
|
|
)
|
|
|
|
const (
|
|
defaultDataStackCapacity = 10
|
|
)
|
|
|
|
type Account struct {
|
|
Address Word256
|
|
Balance int64
|
|
Code []byte
|
|
Nonce int64
|
|
StorageRoot Word256
|
|
Other interface{} // For holding all other data.
|
|
|
|
Permissions ptypes.AccountPermissions
|
|
}
|
|
|
|
func (acc *Account) String() string {
|
|
return Fmt("VMAccount{%X B:%v C:%X N:%v S:%X}",
|
|
acc.Address, acc.Balance, acc.Code, acc.Nonce, acc.StorageRoot)
|
|
}
|
|
|
|
// NOTE: This is serialized as an event from vm/vm.
|
|
// See: EventStringLogEvent
|
|
type Log struct {
|
|
Address Word256 `json:"address"`
|
|
Topics []Word256 `json:"topics"`
|
|
Data []byte `json:"data"`
|
|
Height int64 `json:"height"`
|
|
}
|
|
|
|
type AppState interface {
|
|
|
|
// Accounts
|
|
GetAccount(addr Word256) *Account
|
|
UpdateAccount(*Account)
|
|
RemoveAccount(*Account)
|
|
CreateAccount(*Account) *Account
|
|
|
|
// Storage
|
|
GetStorage(Word256, Word256) Word256
|
|
SetStorage(Word256, Word256, Word256) // Setting to Zero is deleting.
|
|
|
|
// Logs
|
|
AddLog(*Log)
|
|
}
|
|
|
|
type Params struct {
|
|
BlockHeight int64
|
|
BlockHash Word256
|
|
BlockTime int64
|
|
GasLimit int64
|
|
}
|