github.com/n1ghtfa1l/go-vnt@v0.6.4-alpha.6/core/wavm/context.go (about)

     1  // Copyright 2019 The go-vnt Authors
     2  // This file is part of the go-vnt library.
     3  //
     4  // The go-vnt library is free software: you can redistribute it and/or modify
     5  // it under the terms of the GNU Lesser General Public License as published by
     6  // the Free Software Foundation, either version 3 of the License, or
     7  // (at your option) any later version.
     8  //
     9  // The go-vnt library is distributed in the hope that it will be useful,
    10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    12  // GNU Lesser General Public License for more details.
    13  //
    14  // You should have received a copy of the GNU Lesser General Public License
    15  // along with the go-vnt library. If not, see <http://www.gnu.org/licenses/>.
    16  
    17  package wavm
    18  
    19  import (
    20  	"math/big"
    21  
    22  	"github.com/vntchain/go-vnt/accounts/abi"
    23  	"github.com/vntchain/go-vnt/common"
    24  	"github.com/vntchain/go-vnt/core/state"
    25  	inter "github.com/vntchain/go-vnt/core/vm/interface"
    26  	"github.com/vntchain/go-vnt/core/wavm/contract"
    27  	"github.com/vntchain/go-vnt/core/wavm/gas"
    28  	"github.com/vntchain/go-vnt/core/wavm/storage"
    29  	"github.com/vntchain/go-vnt/params"
    30  )
    31  
    32  type ChainContext struct {
    33  	// CanTransfer returns whether the account contains
    34  	// sufficient vnt to transfer the value
    35  	CanTransfer func(inter.StateDB, common.Address, *big.Int) bool
    36  	// Transfer transfers vnt from one account to the other
    37  	Transfer func(inter.StateDB, common.Address, common.Address, *big.Int)
    38  	// GetHash returns the hash corresponding to n
    39  	GetHash func(uint64) common.Hash
    40  	// Message information
    41  	Origin   common.Address // Provides information for ORIGIN
    42  	GasPrice *big.Int       // Provides information for GASPRICE
    43  
    44  	// Block information
    45  	Coinbase       common.Address // Provides information for COINBASE
    46  	GasLimit       uint64         // Provides information for GASLIMIT
    47  	BlockNumber    *big.Int       // Provides information for NUMBER
    48  	Time           *big.Int       // Provides information for TIME
    49  	Difficulty     *big.Int       // Provides information for DIFFICULTY
    50  	StateDB        *state.StateDB
    51  	Contract       *contract.WASMContract
    52  	Code           []byte  //Wasm contract code
    53  	Abi            abi.ABI //Wasm contract abi
    54  	Wavm           *WAVM
    55  	IsCreated      bool
    56  	StorageMapping map[uint64]storage.StorageMapping
    57  	GasRule        gas.Gas
    58  	GasCounter     gas.GasCounter
    59  	GasTable       params.GasTable
    60  }