Documentation ¶
Index ¶
- Constants
- Variables
- func AnalyzeJumpDests(code []byte) (dests *set.Set)
- func HasPermission(appState AppState, acc *Account, perm ptypes.PermFlag) bool
- func RegisterNativeContract(addr Word256, fn NativeContract) bool
- func RegisteredNativeContract(addr Word256) bool
- func S256(x *big.Int) *big.Int
- func SetDebug(d bool)
- func U256(x *big.Int) *big.Int
- func ValidPermN(n ptypes.PermFlag) bool
- type Account
- type AppState
- type Debug
- type ErrInvalidPermission
- type ErrPermission
- type NativeContract
- type OpCode
- type Params
- type Stack
- func (st *Stack) Dup(n int)
- func (st *Stack) Len() int
- func (st *Stack) Peek() Word256
- func (st *Stack) Pop() Word256
- func (st *Stack) Pop64() int64
- func (st *Stack) PopBytes() []byte
- func (st *Stack) Print(n int)
- func (st *Stack) Push(d Word256)
- func (st *Stack) Push64(i int64)
- func (st *Stack) PushBytes(bz []byte)
- func (st *Stack) Swap(n int)
- type VM
Constants ¶
const ( GasSha3 int64 = 1 GasGetAccount int64 = 1 GasStorageUpdate int64 = 1 GasBaseOp int64 = 0 // TODO: make this 1 GasStackOp int64 = 1 GasEcRecover int64 = 1 GasSha256Word int64 = 1 GasSha256Base int64 = 1 GasRipemd160Word int64 = 1 GasRipemd160Base int64 = 1 GasIdentityWord int64 = 1 GasIdentityBase int64 = 1 )
Variables ¶
var ( ErrUnknownAddress = errors.New("Unknown address") ErrInsufficientBalance = errors.New("Insufficient balance") ErrInvalidJumpDest = errors.New("Invalid jump dest") ErrInsufficientGas = errors.New("Insuffient gas") ErrMemoryOutOfBounds = errors.New("Memory out of bounds") ErrCodeOutOfBounds = errors.New("Code out of bounds") ErrInputOutOfBounds = errors.New("Input out of bounds") ErrCallStackOverflow = errors.New("Call stack overflow") ErrCallStackUnderflow = errors.New("Call stack underflow") ErrDataStackOverflow = errors.New("Data stack overflow") ErrDataStackUnderflow = errors.New("Data stack underflow") ErrInvalidContract = errors.New("Invalid contract") )
Functions ¶
func AnalyzeJumpDests ¶
func AnalyzeJumpDests(code []byte) (dests *set.Set)
func HasPermission ¶
CONTRACT: it is the duty of the contract writer to call known permissions we do not convey if a permission is not set (unlike in state/execution, where we guarantee HasPermission is called on known permissions and panics else) If the perm is not defined in the acc nor set by default in GlobalPermissions, prints a log warning and returns false.
func RegisterNativeContract ¶
func RegisterNativeContract(addr Word256, fn NativeContract) bool
func RegisteredNativeContract ¶
func RegisteredNativeContract(addr Word256) bool
func ValidPermN ¶
Checks if a permission flag is valid (a known base chain or snative permission)
Types ¶
type Account ¶
type Account struct { Address Word256 Balance int64 Code []byte Nonce int64 Other interface{} // For holding all other data. Permissions ptypes.AccountPermissions }
type ErrInvalidPermission ¶
type ErrInvalidPermission struct { Address Word256 SNative string }
func (ErrInvalidPermission) Error ¶
func (e ErrInvalidPermission) Error() string
type ErrPermission ¶
type ErrPermission struct {
// contains filtered or unexported fields
}
func (ErrPermission) Error ¶
func (err ErrPermission) Error() string
type NativeContract ¶
type OpCode ¶
type OpCode byte
const ( // 0x60 range PUSH1 OpCode = 0x60 + iota PUSH2 PUSH3 PUSH4 PUSH5 PUSH6 PUSH7 PUSH8 PUSH9 PUSH10 PUSH11 PUSH12 PUSH13 PUSH14 PUSH15 PUSH16 PUSH17 PUSH18 PUSH19 PUSH20 PUSH21 PUSH22 PUSH23 PUSH24 PUSH25 PUSH26 PUSH27 PUSH28 PUSH29 PUSH30 PUSH31 PUSH32 DUP1 DUP2 DUP3 DUP4 DUP5 DUP6 DUP7 DUP8 DUP9 DUP10 DUP11 DUP12 DUP13 DUP14 DUP15 DUP16 SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 SWAP9 SWAP10 SWAP11 SWAP12 SWAP13 SWAP14 SWAP15 SWAP16 )
type VM ¶
type VM struct {
// contains filtered or unexported fields
}
func (*VM) Call ¶
func (vm *VM) Call(caller, callee *Account, code, input []byte, value int64, gas *int64) (output []byte, err error)
CONTRACT appState is aware of caller and callee, so we can just mutate them. CONTRACT code and input are not mutated. CONTRACT returned 'ret' is a new compact slice. value: To be transferred from caller to callee. Refunded upon error. gas: Available gas. No refunds for gas. code: May be nil, since the CALL opcode may be used to send value from contracts to accounts
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package sha3 implements the SHA3 hash algorithm (formerly called Keccak) chosen by NIST in 2012.
|
Package sha3 implements the SHA3 hash algorithm (formerly called Keccak) chosen by NIST in 2012. |