Documentation
      ¶
    
    
  
    
  
    Index ¶
- Constants
 - Variables
 - func FormatEthAddress(addr common.Address) string
 - func GetEthAddress(privKey *crypto.PrivateKeySECP256K1R) common.Address
 - func IsSortedAndUniqueEVMInputs(inputs []EVMInput) bool
 - func IsSortedAndUniqueEVMOutputs(outputs []EVMOutput) bool
 - func ParseEthAddress(addrStr string) (common.Address, error)
 - func PublicKeyToEthAddress(pubKey crypto.PublicKey) common.Address
 - func SortEVMInputsAndSigners(inputs []EVMInput, signers [][]*crypto.PrivateKeySECP256K1R)
 - func SortEVMOutputs(outputs []EVMOutput)
 - type AvaxAPI
 - func (service *AvaxAPI) ClientVersion() string
 - func (service *AvaxAPI) Export(_ *http.Request, args *ExportArgs, response *api.JSONTxID) error
 - func (service *AvaxAPI) ExportAVAX(_ *http.Request, args *ExportAVAXArgs, response *api.JSONTxID) error
 - func (service *AvaxAPI) ExportKey(r *http.Request, args *ExportKeyArgs, reply *ExportKeyReply) error
 - func (service *AvaxAPI) GetUTXOs(r *http.Request, args *GetUTXOsArgs, reply *GetUTXOsReply) error
 - func (service *AvaxAPI) Import(_ *http.Request, args *ImportArgs, response *api.JSONTxID) error
 - func (service *AvaxAPI) ImportAVAX(_ *http.Request, args *ImportArgs, response *api.JSONTxID) error
 - func (service *AvaxAPI) ImportKey(r *http.Request, args *ImportKeyArgs, reply *api.JSONAddress) error
 - func (service *AvaxAPI) IssueTx(r *http.Request, args *api.FormattedTx, response *api.JSONTxID) error
 
- type Batch
 - type Block
 - type CommandLineConfig
 - type Database
 - func (db Database) Ancient(kind string, number uint64) ([]byte, error)
 - func (db Database) AncientSize(kind string) (uint64, error)
 - func (db Database) Ancients() (uint64, error)
 - func (db Database) AppendAncient(number uint64, hash, header, body, receipts, td []byte) error
 - func (db Database) HasAncient(kind string, number uint64) (bool, error)
 - func (db Database) NewBatch() ethdb.Batch
 - func (db Database) NewIterator(prefix []byte, start []byte) ethdb.Iterator
 - func (db Database) NewIteratorWithStart(start []byte) ethdb.Iterator
 - func (db Database) Sync() error
 - func (db Database) TruncateAncients(items uint64) error
 
- type EVMInput
 - type EVMOutput
 - type ExportAVAXArgs
 - type ExportArgs
 - type ExportKeyArgs
 - type ExportKeyReply
 - type Factory
 - type GetAcceptedFrontReply
 - type GetUTXOsArgs
 - type GetUTXOsReply
 - type ImportArgs
 - type ImportKeyArgs
 - type Index
 - type NetAPI
 - type SnowmanAPI
 - type StaticService
 - type Tx
 - type TxError
 - type UnsignedAtomicTx
 - type UnsignedExportTx
 - func (tx *UnsignedExportTx) Accept(ctx *snow.Context, _ database.Batch) error
 - func (tx *UnsignedExportTx) EVMStateTransfer(vm *VM, state *state.StateDB) error
 - func (tx *UnsignedExportTx) InputUTXOs() ids.Set
 - func (tx *UnsignedExportTx) SemanticVerify(vm *VM, stx *Tx) TxError
 - func (tx *UnsignedExportTx) Verify(avmID ids.ID, ctx *snow.Context, feeAmount uint64, feeAssetID ids.ID) error
 
- type UnsignedImportTx
 - func (tx *UnsignedImportTx) Accept(ctx *snow.Context, _ database.Batch) error
 - func (tx *UnsignedImportTx) EVMStateTransfer(vm *VM, state *state.StateDB) error
 - func (tx *UnsignedImportTx) InputUTXOs() ids.Set
 - func (tx *UnsignedImportTx) SemanticVerify(vm *VM, stx *Tx) TxError
 - func (tx *UnsignedImportTx) Verify(avmID ids.ID, ctx *snow.Context, feeAmount uint64, feeAssetID ids.ID) error
 
- type UnsignedTx
 - type VM
 - func (vm *VM) Bootstrapped() error
 - func (vm *VM) Bootstrapping() error
 - func (vm *VM) BuildBlock() (snowman.Block, error)
 - func (vm *VM) Clock() *timer.Clock
 - func (vm *VM) Codec() codec.Codec
 - func (vm *VM) CreateHandlers() map[string]*commonEng.HTTPHandler
 - func (vm *VM) CreateStaticHandlers() map[string]*commonEng.HTTPHandler
 - func (vm *VM) FormatAddress(chainID ids.ID, addr ids.ShortID) (string, error)
 - func (vm *VM) FormatLocalAddress(addr ids.ShortID) (string, error)
 - func (vm *VM) GetAcceptedNonce(address common.Address) (uint64, error)
 - func (vm *VM) GetAtomicUTXOs(chainID ids.ID, addrs ids.ShortSet, startAddr ids.ShortID, startUTXOID ids.ID, ...) ([]*avax.UTXO, ids.ShortID, ids.ID, error)
 - func (vm *VM) GetBlock(id ids.ID) (snowman.Block, error)
 - func (vm *VM) GetSpendableFunds(keys []*crypto.PrivateKeySECP256K1R, assetID ids.ID, amount uint64) ([]EVMInput, [][]*crypto.PrivateKeySECP256K1R, error)
 - func (vm *VM) Health() (interface{}, error)
 - func (vm *VM) Initialize(ctx *snow.Context, db database.Database, b []byte, ...) error
 - func (vm *VM) LastAccepted() ids.ID
 - func (vm *VM) Logger() logging.Logger
 - func (vm *VM) ParseAddress(addrStr string) (ids.ID, ids.ShortID, error)
 - func (vm *VM) ParseBlock(b []byte) (snowman.Block, error)
 - func (vm *VM) ParseLocalAddress(addrStr string) (ids.ShortID, error)
 - func (vm *VM) SetPreference(blkID ids.ID)
 - func (vm *VM) Shutdown() error
 
- type Web3API
 
Constants ¶
const ( GenesisTestAddr = "0x751a0b96e1042bee789452ecb20253fba40dbe85" GenesisTestKey = "0xabd71b35d559563fea757f0f5edbde286fb8c043105b15abb7cd57189306d7d1" )
test constants
Variables ¶
var Codec codec.Codec
    Codec does serialization and deserialization
var (
	ID = ids.ID{'e', 'v', 'm'}
)
    ID this VM should be referenced by
Functions ¶
func FormatEthAddress ¶ added in v0.3.5
FormatEthAddress formats [addr] into a string
func GetEthAddress ¶ added in v0.2.12
func GetEthAddress(privKey *crypto.PrivateKeySECP256K1R) common.Address
GetEthAddress returns the ethereum address derived from [privKey]
func IsSortedAndUniqueEVMInputs ¶ added in v0.3.5
IsSortedAndUniqueEVMInputs returns true if the EVM Inputs are sorted and unique based on the account addresses
func IsSortedAndUniqueEVMOutputs ¶ added in v0.3.5
IsSortedAndUniqueEVMOutputs returns true if the EVMOutputs are sorted and unique based on the account addresses and assetIDs
func ParseEthAddress ¶ added in v0.3.5
ParseEthAddress parses [addrStr] and returns an Ethereum address
func PublicKeyToEthAddress ¶ added in v0.2.12
PublicKeyToEthAddress returns the ethereum address derived from [pubKey]
func SortEVMInputsAndSigners ¶ added in v0.3.5
func SortEVMInputsAndSigners(inputs []EVMInput, signers [][]*crypto.PrivateKeySECP256K1R)
SortEVMInputsAndSigners sorts the list of EVMInputs based on the addresses and assetIDs
func SortEVMOutputs ¶ added in v0.3.5
func SortEVMOutputs(outputs []EVMOutput)
SortEVMOutputs sorts the list of EVMOutputs based on the addresses and assetIDs of the outputs
Types ¶
type AvaxAPI ¶ added in v0.2.15
type AvaxAPI struct {
	// contains filtered or unexported fields
}
    AvaxAPI offers Avalanche network related API methods
func (*AvaxAPI) ClientVersion ¶ added in v0.3.8
ClientVersion returns the version of the vm running
func (*AvaxAPI) Export ¶ added in v0.3.1
Export exports an asset from the C-Chain to the X-Chain It must be imported on the X-Chain to complete the transfer
func (*AvaxAPI) ExportAVAX ¶ added in v0.2.15
func (service *AvaxAPI) ExportAVAX(_ *http.Request, args *ExportAVAXArgs, response *api.JSONTxID) error
ExportAVAX exports AVAX from the C-Chain to the X-Chain It must be imported on the X-Chain to complete the transfer
func (*AvaxAPI) ExportKey ¶ added in v0.2.15
func (service *AvaxAPI) ExportKey(r *http.Request, args *ExportKeyArgs, reply *ExportKeyReply) error
ExportKey returns a private key from the provided user
func (*AvaxAPI) GetUTXOs ¶ added in v0.3.14
func (service *AvaxAPI) GetUTXOs(r *http.Request, args *GetUTXOsArgs, reply *GetUTXOsReply) error
GetUTXOs gets all utxos for passed in addresses
func (*AvaxAPI) Import ¶ added in v0.3.1
Import issues a transaction to import AVAX from the X-chain. The AVAX must have already been exported from the X-Chain.
func (*AvaxAPI) ImportAVAX ¶ added in v0.2.15
ImportAVAX is a deprecated name for Import.
func (*AvaxAPI) ImportKey ¶ added in v0.2.15
func (service *AvaxAPI) ImportKey(r *http.Request, args *ImportKeyArgs, reply *api.JSONAddress) error
ImportKey adds a private key to the provided user
type Block ¶
type Block struct {
	// contains filtered or unexported fields
}
    Block implements the snowman.Block interface
type CommandLineConfig ¶ added in v0.3.7
type CommandLineConfig struct {
	// Coreth APIs
	SnowmanAPIEnabled     bool `json:"snowman-api-enabled"`
	CorethAdminAPIEnabled bool `json:"coreth-admin-api-enabled"`
	NetAPIEnabled         bool `json:"net-api-enabled"`
	// Coreth API Gas/Price Caps
	RPCGasCap   uint64  `json:"rpc-gas-cap"`
	RPCTxFeeCap float64 `json:"rpc-tx-fee-cap"`
	// Eth APIs
	EthAPIEnabled      bool `json:"eth-api-enabled"`
	PersonalAPIEnabled bool `json:"personal-api-enabled"`
	TxPoolAPIEnabled   bool `json:"tx-pool-api-enabled"`
	DebugAPIEnabled    bool `json:"debug-api-enabled"`
	Web3APIEnabled     bool `json:"web3-api-enabled"`
	ParsingError error
}
    CommandLineConfig ...
func (CommandLineConfig) EthAPIs ¶ added in v0.3.7
func (c CommandLineConfig) EthAPIs() []string
EthAPIs returns an array of strings representing the Eth APIs that should be enabled
type Database ¶
Database implements ethdb.Database
func (Database) AncientSize ¶
AncientSize returns an error as we don't have a backing chain freezer.
func (Database) AppendAncient ¶
AppendAncient returns an error as we don't have a backing chain freezer.
func (Database) HasAncient ¶
HasAncient returns an error as we don't have a backing chain freezer.
func (Database) NewIterator ¶
NewIterator implements ethdb.Database
func (Database) NewIteratorWithStart ¶
NewIteratorWithStart implements ethdb.Database
func (Database) TruncateAncients ¶
TruncateAncients returns an error as we don't have a backing chain freezer.
type EVMInput ¶ added in v0.2.12
type EVMInput struct {
	Address common.Address `serialize:"true" json:"address"`
	Amount  uint64         `serialize:"true" json:"amount"`
	AssetID ids.ID         `serialize:"true" json:"assetID"`
	Nonce   uint64         `serialize:"true" json:"nonce"`
}
    EVMInput defines an input for the EVM State to be used in import transactions
type EVMOutput ¶ added in v0.2.12
type EVMOutput struct {
	Address common.Address `serialize:"true" json:"address"`
	Amount  uint64         `serialize:"true" json:"amount"`
	AssetID ids.ID         `serialize:"true" json:"assetID"`
}
    EVMOutput defines an output from EVM State created from export transactions
type ExportAVAXArgs ¶ added in v0.2.12
type ExportAVAXArgs struct {
	api.UserPass
	// AssetID of the tokens
	AssetID ids.ID `json:"assetID"`
	// Amount of asset to send
	Amount json.Uint64 `json:"amount"`
	// ID of the address that will receive the AVAX. This address includes the
	// chainID, which is used to determine what the destination chain is.
	To string `json:"to"`
}
    ExportAVAXArgs are the arguments to ExportAVAX
type ExportArgs ¶ added in v0.3.1
type ExportArgs struct {
	ExportAVAXArgs
	// AssetID of the tokens
	AssetID ids.ID `json:"assetID"`
}
    ExportArgs are the arguments to Export
type ExportKeyArgs ¶ added in v0.2.12
ExportKeyArgs are arguments for ExportKey
type ExportKeyReply ¶ added in v0.2.12
type ExportKeyReply struct {
	// The decrypted PrivateKey for the Address provided in the arguments
	PrivateKey    string `json:"privateKey"`
	PrivateKeyHex string `json:"privateKeyHex"`
}
    ExportKeyReply is the response for ExportKey
type GetAcceptedFrontReply ¶
type GetAcceptedFrontReply struct {
	Hash   common.Hash `json:"hash"`
	Number *big.Int    `json:"number"`
}
    GetAcceptedFrontReply defines the reply that will be sent from the GetAcceptedFront API call
type GetUTXOsArgs ¶ added in v0.3.14
type GetUTXOsArgs struct {
	Addresses   []string    `json:"addresses"`
	SourceChain string      `json:"sourceChain"`
	Limit       json.Uint32 `json:"limit"`
	StartIndex  Index       `json:"startIndex"`
	Encoding    string      `json:"encoding"`
}
    GetUTXOsArgs are arguments for passing into GetUTXOs. Gets the UTXOs that reference at least one address in [Addresses]. Returns at most [limit] addresses. If specified, [SourceChain] is the chain where the atomic UTXOs were exported from. If not specified, then GetUTXOs returns an error since the C Chain only has atomic UTXOs. If [limit] == 0 or > [maxUTXOsToFetch], fetches up to [maxUTXOsToFetch]. [StartIndex] defines where to start fetching UTXOs (for pagination.) UTXOs fetched are from addresses equal to or greater than [StartIndex.Address] For address [StartIndex.Address], only UTXOs with IDs greater than [StartIndex.UTXO] will be returned. If [StartIndex] is omitted, gets all UTXOs. If GetUTXOs is called multiple times, with our without [StartIndex], it is not guaranteed that returned UTXOs are unique. That is, the same UTXO may appear in the response of multiple calls.
type GetUTXOsReply ¶ added in v0.3.14
type GetUTXOsReply struct {
	// Number of UTXOs returned
	NumFetched json.Uint64 `json:"numFetched"`
	// The UTXOs
	UTXOs []string `json:"utxos"`
	// The last UTXO that was returned, and the address it corresponds to.
	// Used for pagination. To get the rest of the UTXOs, call GetUTXOs
	// again and set [StartIndex] to this value.
	EndIndex Index `json:"endIndex"`
	// Encoding specifies the encoding format the UTXOs are returned in
	Encoding string `json:"encoding"`
}
    GetUTXOsReply defines the GetUTXOs replies returned from the API
type ImportArgs ¶ added in v0.3.1
type ImportArgs struct {
	api.UserPass
	// Chain the funds are coming from
	SourceChain string `json:"sourceChain"`
	// The address that will receive the imported funds
	To string `json:"to"`
}
    ImportArgs are arguments for passing into Import requests
type ImportKeyArgs ¶ added in v0.2.12
ImportKeyArgs are arguments for ImportKey
type Index ¶ added in v0.3.14
type Index struct {
	Address string `json:"address"` // The address as a string
	UTXO    string `json:"utxo"`    // The UTXO ID as a string
}
    Index is an address and an associated UTXO. Marks a starting or stopping point when fetching UTXOs. Used for pagination.
type NetAPI ¶
type NetAPI struct {
	// contains filtered or unexported fields
}
    NetAPI offers network related API methods
func (*NetAPI) Listening ¶
Listening returns an indication if the node is listening for network connections.
type SnowmanAPI ¶
type SnowmanAPI struct {
	// contains filtered or unexported fields
}
    SnowmanAPI introduces snowman specific functionality to the evm
func (*SnowmanAPI) GetAcceptedFront ¶
func (api *SnowmanAPI) GetAcceptedFront(ctx context.Context) (*GetAcceptedFrontReply, error)
GetAcceptedFront returns the last accepted block's hash and height
func (*SnowmanAPI) IssueBlock ¶ added in v0.3.7
func (api *SnowmanAPI) IssueBlock(ctx context.Context) error
IssueBlock to the chain
type StaticService ¶
type StaticService struct{}
    StaticService defines the static API services exposed by the evm
func (*StaticService) BuildGenesis ¶
func (*StaticService) BuildGenesis(_ context.Context, args *core.Genesis) (formatting.CB58, error)
BuildGenesis returns the UTXOs such that at least one address in [args.Addresses] is referenced in the UTXO.
type Tx ¶ added in v0.2.12
type Tx struct {
	// The body of this transaction
	UnsignedTx `serialize:"true" json:"unsignedTx"`
	// The credentials of this transaction
	Creds []verify.Verifiable `serialize:"true" json:"credentials"`
}
    Tx is a signed transaction
type TxError ¶ added in v0.2.12
TxError provides the ability for errors to be distinguished as permenant or temporary
type UnsignedAtomicTx ¶ added in v0.2.12
type UnsignedAtomicTx interface {
	UnsignedTx
	// UTXOs this tx consumes
	InputUTXOs() ids.Set
	// Attempts to verify this transaction with the provided state.
	SemanticVerify(vm *VM, stx *Tx) TxError
	// Accept this transaction with the additionally provided state transitions.
	Accept(ctx *snow.Context, batch database.Batch) error
	EVMStateTransfer(vm *VM, state *state.StateDB) error
}
    UnsignedAtomicTx is an unsigned operation that can be atomically accepted
type UnsignedExportTx ¶ added in v0.2.12
type UnsignedExportTx struct {
	avax.Metadata
	// ID of the network on which this tx was issued
	NetworkID uint32 `serialize:"true" json:"networkID"`
	// ID of this blockchain.
	BlockchainID ids.ID `serialize:"true" json:"blockchainID"`
	// Which chain to send the funds to
	DestinationChain ids.ID `serialize:"true" json:"destinationChain"`
	// Inputs
	Ins []EVMInput `serialize:"true" json:"inputs"`
	// Outputs that are exported to the chain
	ExportedOutputs []*avax.TransferableOutput `serialize:"true" json:"exportedOutputs"`
	// contains filtered or unexported fields
}
    UnsignedExportTx is an unsigned ExportTx
func (*UnsignedExportTx) EVMStateTransfer ¶ added in v0.2.12
func (tx *UnsignedExportTx) EVMStateTransfer(vm *VM, state *state.StateDB) error
EVMStateTransfer executes the state update from the atomic export transaction
func (*UnsignedExportTx) InputUTXOs ¶ added in v0.2.12
func (tx *UnsignedExportTx) InputUTXOs() ids.Set
InputUTXOs returns an empty set
func (*UnsignedExportTx) SemanticVerify ¶ added in v0.2.12
func (tx *UnsignedExportTx) SemanticVerify( vm *VM, stx *Tx, ) TxError
SemanticVerify this transaction is valid.
type UnsignedImportTx ¶ added in v0.2.12
type UnsignedImportTx struct {
	avax.Metadata
	// ID of the network on which this tx was issued
	NetworkID uint32 `serialize:"true" json:"networkID"`
	// ID of this blockchain.
	BlockchainID ids.ID `serialize:"true" json:"blockchainID"`
	// Which chain to consume the funds from
	SourceChain ids.ID `serialize:"true" json:"sourceChain"`
	// Inputs that consume UTXOs produced on the chain
	ImportedInputs []*avax.TransferableInput `serialize:"true" json:"importedInputs"`
	// Outputs
	Outs []EVMOutput `serialize:"true" json:"outputs"`
	// contains filtered or unexported fields
}
    UnsignedImportTx is an unsigned ImportTx
func (*UnsignedImportTx) Accept ¶ added in v0.2.12
Accept this transaction and spend imported inputs We spend imported UTXOs here rather than in semanticVerify because we don't want to remove an imported UTXO in semanticVerify only to have the transaction not be Accepted. This would be inconsistent. Recall that imported UTXOs are not kept in a versionDB.
func (*UnsignedImportTx) EVMStateTransfer ¶ added in v0.2.12
func (tx *UnsignedImportTx) EVMStateTransfer(vm *VM, state *state.StateDB) error
EVMStateTransfer performs the state transfer to increase the balances of accounts accordingly with the imported EVMOutputs
func (*UnsignedImportTx) InputUTXOs ¶ added in v0.2.12
func (tx *UnsignedImportTx) InputUTXOs() ids.Set
InputUTXOs returns the UTXOIDs of the imported funds
func (*UnsignedImportTx) SemanticVerify ¶ added in v0.2.12
func (tx *UnsignedImportTx) SemanticVerify( vm *VM, stx *Tx, ) TxError
SemanticVerify this transaction is valid.
type UnsignedTx ¶ added in v0.2.12
type UnsignedTx interface {
	Initialize(unsignedBytes, signedBytes []byte)
	ID() ids.ID
	UnsignedBytes() []byte
	Bytes() []byte
}
    UnsignedTx is an unsigned transaction
type VM ¶
type VM struct {
	CLIConfig CommandLineConfig
	// contains filtered or unexported fields
}
    VM implements the snowman.ChainVM interface
func (*VM) Bootstrapped ¶ added in v0.2.4
Bootstrapped notifies this VM that the consensus engine has finished bootstrapping
func (*VM) Bootstrapping ¶ added in v0.2.4
Bootstrapping notifies this VM that the consensus engine is performing bootstrapping
func (*VM) BuildBlock ¶
BuildBlock implements the snowman.ChainVM interface
func (*VM) CreateHandlers ¶
func (vm *VM) CreateHandlers() map[string]*commonEng.HTTPHandler
CreateHandlers makes new http handlers that can handle API calls
func (*VM) CreateStaticHandlers ¶
func (vm *VM) CreateStaticHandlers() map[string]*commonEng.HTTPHandler
CreateStaticHandlers makes new http handlers that can handle API calls
func (*VM) FormatAddress ¶ added in v0.3.14
FormatAddress takes in a chainID and a raw address and produces the formatted address
func (*VM) FormatLocalAddress ¶ added in v0.3.14
FormatLocalAddress takes in a raw address and produces the formatted address
func (*VM) GetAcceptedNonce ¶ added in v0.2.12
GetAcceptedNonce returns the nonce associated with the address at the last accepted block
func (*VM) GetAtomicUTXOs ¶ added in v0.2.12
func (vm *VM) GetAtomicUTXOs( chainID ids.ID, addrs ids.ShortSet, startAddr ids.ShortID, startUTXOID ids.ID, limit int, ) ([]*avax.UTXO, ids.ShortID, ids.ID, error)
GetAtomicUTXOs returns the utxos that at least one of the provided addresses is referenced in.
func (*VM) GetSpendableFunds ¶ added in v0.3.5
func (vm *VM) GetSpendableFunds(keys []*crypto.PrivateKeySECP256K1R, assetID ids.ID, amount uint64) ([]EVMInput, [][]*crypto.PrivateKeySECP256K1R, error)
GetSpendableFunds returns a list of EVMInputs and keys (in corresponding order) to total [amount] of [assetID] owned by [keys] TODO switch to returning a list of private keys since there are no multisig inputs in Ethereum
func (*VM) Health ¶ added in v0.3.1
Health returns nil if this chain is healthy. Also returns details, which should be one of: string, []byte, map[string]string
func (*VM) Initialize ¶
func (vm *VM) Initialize( ctx *snow.Context, db database.Database, b []byte, toEngine chan<- commonEng.Message, fxs []*commonEng.Fx, ) error
Initialize implements the snowman.ChainVM interface
func (*VM) LastAccepted ¶
LastAccepted returns the ID of the block that was last accepted
func (*VM) ParseAddress ¶ added in v0.2.12
ParseAddress takes in an address and produces the ID of the chain it's for the ID of the address
func (*VM) ParseBlock ¶
ParseBlock implements the snowman.ChainVM interface
func (*VM) ParseLocalAddress ¶ added in v0.3.14
ParseLocalAddress takes in an address for this chain and produces the ID
func (*VM) SetPreference ¶
SetPreference sets what the current tail of the chain is
type Web3API ¶
type Web3API struct{}
    Web3API offers helper API methods
func (*Web3API) ClientVersion ¶
ClientVersion returns the version of the vm running