tendermint/vm/types.go

59 lines
1.2 KiB
Go

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
}