package vm
|
|
|
|
import (
|
|
. "github.com/tendermint/go-common"
|
|
ptypes "github.com/tendermint/tendermint/permission/types"
|
|
)
|
|
|
|
const (
|
|
defaultDataStackCapacity = 10
|
|
)
|
|
|
|
type Account struct {
|
|
Address Word256
|
|
Balance int64
|
|
Code []byte
|
|
Nonce int64
|
|
Other interface{} // For holding all other data.
|
|
|
|
Permissions ptypes.AccountPermissions
|
|
}
|
|
|
|
func (acc *Account) String() string {
|
|
if acc == nil {
|
|
return "nil-VMAccount"
|
|
}
|
|
return Fmt("VMAccount{%X B:%v C:%X N:%v}",
|
|
acc.Address, acc.Balance, acc.Code, acc.Nonce)
|
|
}
|
|
|
|
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.
|
|
|
|
}
|
|
|
|
type Params struct {
|
|
BlockHeight int64
|
|
BlockHash Word256
|
|
BlockTime int64
|
|
GasLimit int64
|
|
}
|