Documentation
¶
Index ¶
- Constants
- Variables
- type Block
- func (b *Block) Accept(context.Context) error
- func (b *Block) Bytes() []byte
- func (b *Block) Height() uint64
- func (b *Block) ID() ids.ID
- func (b *Block) Parent() ids.ID
- func (b *Block) ParentID() ids.ID
- func (b *Block) Reject(context.Context) error
- func (b *Block) Status() choices.Status
- func (b *Block) Timestamp() time.Time
- func (b *Block) Verify(ctx context.Context) error
- type Bundle
- type Burn
- type ChainDataSource
- type ChainSyncEvent
- type DataIndex
- type DexFactory
- type Factory
- type GConfig
- type GraphQLError
- type GraphQLRequest
- type GraphQLResponse
- type GraphSchema
- type IndexUpdate
- type Location
- type Mint
- type Pair
- type PairDayData
- type Pool
- type PoolDayData
- type PoolHourData
- type Query
- type QueryExecutor
- func (e *QueryExecutor) Execute(ctx context.Context, req *GraphQLRequest) *GraphQLResponse
- func (e *QueryExecutor) GetDB() database.Database
- func (e *QueryExecutor) RegisterResolver(name string, resolver ResolverFunc)
- func (e *QueryExecutor) SubscribeChain(chainID ids.ID, chainName string, prefix string) error
- type QueryResult
- type QueryStatus
- type ResolverFunc
- type SchemaUpdate
- type Subscription
- type Swap
- type Tick
- type Token
- type TokenDayData
- type TokenHourData
- type VM
- func (vm *VM) AppGossip(ctx context.Context, nodeID ids.NodeID, msg []byte) error
- func (vm *VM) AppRequest(ctx context.Context, nodeID ids.NodeID, requestID uint32, deadline time.Time, ...) error
- func (vm *VM) AppRequestFailed(ctx context.Context, nodeID ids.NodeID, requestID uint32, appErr *warp.Error) error
- func (vm *VM) AppResponse(ctx context.Context, nodeID ids.NodeID, requestID uint32, response []byte) error
- func (vm *VM) BuildBlock(ctx context.Context) (block.Block, error)
- func (vm *VM) ConnectChainSource(chainID ids.ID, chainName string) error
- func (vm *VM) Connected(ctx context.Context, nodeID ids.NodeID, nodeVersion interface{}) error
- func (vm *VM) CreateHandlers(context.Context) (map[string]http.Handler, error)
- func (vm *VM) CrossChainAppRequest(ctx context.Context, chainID ids.ID, requestID uint32, deadline time.Time, ...) error
- func (vm *VM) CrossChainAppRequestFailed(ctx context.Context, chainID ids.ID, requestID uint32, appErr *warp.Error) error
- func (vm *VM) CrossChainAppResponse(ctx context.Context, chainID ids.ID, requestID uint32, msg []byte) error
- func (vm *VM) Disconnected(ctx context.Context, nodeID ids.NodeID) error
- func (vm *VM) ExecuteQuery(query *Query) error
- func (vm *VM) GetBlock(ctx context.Context, blkID ids.ID) (block.Block, error)
- func (vm *VM) GetBlockIDAtHeight(ctx context.Context, height uint64) (ids.ID, error)
- func (vm *VM) HealthCheck(context.Context) (any, error)
- func (vm *VM) Initialize(ctx context.Context, chainCtx interface{}, db interface{}, genesisBytes []byte, ...) error
- func (vm *VM) LastAccepted(context.Context) (ids.ID, error)
- func (vm *VM) NewHTTPHandler(ctx context.Context) (interface{}, error)
- func (vm *VM) ParseBlock(ctx context.Context, blockBytes []byte) (block.Block, error)
- func (vm *VM) RegisterSchema(schema *GraphSchema) error
- func (vm *VM) SetPreference(ctx context.Context, blkID ids.ID) error
- func (vm *VM) SetState(ctx context.Context, state uint32) error
- func (vm *VM) Shutdown(context.Context) error
- func (vm *VM) Version(context.Context) (string, error)
- func (vm *VM) WaitForEvent(ctx context.Context) (interface{}, error)
Constants ¶
const ( PrefixFactory = "dex:factory:" PrefixBundle = "dex:bundle:" PrefixToken = "dex:token:" PrefixPool = "dex:pool:" PrefixPair = "dex:pair:" PrefixTick = "dex:tick:" PrefixSwap = "dex:swap:" PrefixMint = "dex:mint:" PrefixBurn = "dex:burn:" PrefixTokenDay = "dex:tokenday:" PrefixTokenHour = "dex:tokenhour:" PrefixPoolDay = "dex:poolday:" PrefixPoolHour = "dex:poolhour:" PrefixPairDay = "dex:pairday:" // Index prefixes for efficient queries PrefixPoolByToken = "idx:pool:token:" PrefixPairByToken = "idx:pair:token:" PrefixSwapByPool = "idx:swap:pool:" PrefixSwapByToken = "idx:swap:token:" )
Database key prefixes for DEX data
Variables ¶
var (
Version = &nodeversion.Semantic{
Major: 1,
Minor: 0,
Patch: 0,
}
)
Functions ¶
This section is empty.
Types ¶
type Block ¶
type Block struct {
// contains filtered or unexported fields
}
Block represents a block in the Graph Chain
type Bundle ¶ added in v1.22.76
type Bundle struct {
ID string `json:"id"`
EthPriceUSD string `json:"ethPriceUSD"`
EthPrice string `json:"ethPrice"` // v2 compat (same as ethPriceUSD)
LuxPriceUSD string `json:"luxPriceUSD"` // native token price
}
Bundle represents ETH/native price in USD
type Burn ¶ added in v1.22.76
type Burn struct {
ID string `json:"id"`
Transaction string `json:"transaction"`
Timestamp int64 `json:"timestamp"`
Pool string `json:"pool"`
Pair string `json:"pair"` // v2 compat
Token0 string `json:"token0"`
Token1 string `json:"token1"`
Owner string `json:"owner"`
Origin string `json:"origin"`
Amount string `json:"amount"`
Amount0 string `json:"amount0"`
Amount1 string `json:"amount1"`
AmountUSD string `json:"amountUSD"`
TickLower int64 `json:"tickLower"` // v3
TickUpper int64 `json:"tickUpper"` // v3
Liquidity string `json:"liquidity"` // v2
LogIndex int64 `json:"logIndex"`
}
Burn represents a liquidity remove event
type ChainDataSource ¶
type ChainDataSource struct {
ChainID ids.ID `json:"chainId"`
ChainName string `json:"chainName"`
Connected bool `json:"connected"`
LastSync int64 `json:"lastSync"`
BlockHeight uint64 `json:"blockHeight"`
}
ChainDataSource represents a connected chain data source
type ChainSyncEvent ¶
type ChainSyncEvent struct {
ChainID ids.ID `json:"chainId"`
BlockHeight uint64 `json:"blockHeight"`
BlockHash ids.ID `json:"blockHash"`
Timestamp int64 `json:"timestamp"`
}
ChainSyncEvent represents a chain synchronization event
type DataIndex ¶
type DataIndex struct {
ID string `json:"id"`
ChainID ids.ID `json:"chainId"`
IndexType string `json:"indexType"`
Fields []string `json:"fields"`
Status string `json:"status"`
}
DataIndex represents an index for optimized queries
type DexFactory ¶ added in v1.22.76
type DexFactory struct {
ID string `json:"id"`
PoolCount int64 `json:"poolCount"`
PairCount int64 `json:"pairCount"` // v2 compat
TxCount int64 `json:"txCount"`
TotalVolumeUSD string `json:"totalVolumeUSD"`
TotalVolumeETH string `json:"totalVolumeETH"`
TotalFeesUSD string `json:"totalFeesUSD"`
TotalValueLockedUSD string `json:"totalValueLockedUSD"`
TotalLiquidityUSD string `json:"totalLiquidityUSD"` // v2 compat
TotalValueLockedETH string `json:"totalValueLockedETH"`
}
DexFactory represents DEX factory stats (Uniswap-compatible)
type GConfig ¶
type GConfig struct {
// DGraph configuration
DgraphEndpoint string `serialize:"true" json:"dgraphEndpoint"`
SchemaVersion string `serialize:"true" json:"schemaVersion"`
EnableFederation bool `serialize:"true" json:"enableFederation"`
// Query configuration
MaxQueryDepth int `serialize:"true" json:"maxQueryDepth"`
QueryTimeoutMs int `serialize:"true" json:"queryTimeoutMs"`
MaxResultSize int `serialize:"true" json:"maxResultSize"`
// Index configuration
AutoIndex bool `serialize:"true" json:"autoIndex"`
IndexBatchSize int `serialize:"true" json:"indexBatchSize"`
// Authentication configuration
RequireAuth bool `serialize:"true" json:"requireAuth"`
APIKeys []string `serialize:"true" json:"apiKeys"`
}
GConfig contains VM configuration
type GraphQLError ¶ added in v1.22.76
type GraphQLError struct {
Message string `json:"message"`
Locations []Location `json:"locations,omitempty"`
Path []string `json:"path,omitempty"`
}
GraphQLError represents a GraphQL error
type GraphQLRequest ¶ added in v1.22.76
type GraphQLRequest struct {
Query string `json:"query"`
OperationName string `json:"operationName,omitempty"`
Variables map[string]interface{} `json:"variables,omitempty"`
}
GraphQLRequest represents an incoming GraphQL request
type GraphQLResponse ¶ added in v1.22.76
type GraphQLResponse struct {
Data interface{} `json:"data,omitempty"`
Errors []GraphQLError `json:"errors,omitempty"`
}
GraphQLResponse represents a GraphQL response
type GraphSchema ¶
type GraphSchema struct {
ID string `json:"id"`
Name string `json:"name"`
Version string `json:"version"`
Schema string `json:"schema"`
Types []string `json:"types"`
Directives []string `json:"directives"`
CreatedAt int64 `json:"createdAt"`
UpdatedAt int64 `json:"updatedAt"`
}
GraphSchema represents a GraphQL schema definition
type IndexUpdate ¶
type IndexUpdate struct {
IndexID string `json:"indexId"`
ChainID ids.ID `json:"chainId"`
Operation string `json:"operation"` // create, update, rebuild
Status string `json:"status"`
}
IndexUpdate represents an index update
type Mint ¶ added in v1.22.76
type Mint struct {
ID string `json:"id"`
Transaction string `json:"transaction"`
Timestamp int64 `json:"timestamp"`
Pool string `json:"pool"`
Pair string `json:"pair"` // v2 compat
Token0 string `json:"token0"`
Token1 string `json:"token1"`
Owner string `json:"owner"`
Sender string `json:"sender"`
Origin string `json:"origin"`
Amount string `json:"amount"` // liquidity amount
Amount0 string `json:"amount0"`
Amount1 string `json:"amount1"`
AmountUSD string `json:"amountUSD"`
TickLower int64 `json:"tickLower"` // v3
TickUpper int64 `json:"tickUpper"` // v3
Liquidity string `json:"liquidity"` // v2
LogIndex int64 `json:"logIndex"`
}
Mint represents a liquidity add event
type Pair ¶ added in v1.22.76
type Pair struct {
ID string `json:"id"` // address
Token0 *Token `json:"token0"`
Token1 *Token `json:"token1"`
Reserve0 string `json:"reserve0"`
Reserve1 string `json:"reserve1"`
TotalSupply string `json:"totalSupply"`
ReserveETH string `json:"reserveETH"`
ReserveUSD string `json:"reserveUSD"`
TrackedReserveETH string `json:"trackedReserveETH"`
Token0Price string `json:"token0Price"`
Token1Price string `json:"token1Price"`
VolumeToken0 string `json:"volumeToken0"`
VolumeToken1 string `json:"volumeToken1"`
VolumeUSD string `json:"volumeUSD"`
TxCount int64 `json:"txCount"`
CreatedAtTimestamp int64 `json:"createdAtTimestamp"`
CreatedAtBlockNumber int64 `json:"createdAtBlockNumber"`
}
Pair represents a v2-style constant product AMM pair
type PairDayData ¶ added in v1.22.76
type PairDayData struct {
ID string `json:"id"`
Date int64 `json:"date"`
PairAddress string `json:"pairAddress"`
Token0 string `json:"token0"`
Token1 string `json:"token1"`
Reserve0 string `json:"reserve0"`
Reserve1 string `json:"reserve1"`
TotalSupply string `json:"totalSupply"`
ReserveUSD string `json:"reserveUSD"`
DailyVolumeToken0 string `json:"dailyVolumeToken0"`
DailyVolumeToken1 string `json:"dailyVolumeToken1"`
DailyVolumeUSD string `json:"dailyVolumeUSD"`
DailyTxns int64 `json:"dailyTxns"`
}
PairDayData represents daily v2 pair stats
type Pool ¶ added in v1.22.76
type Pool struct {
ID string `json:"id"` // address
CreatedAtTimestamp int64 `json:"createdAtTimestamp"`
CreatedAtBlockNumber int64 `json:"createdAtBlockNumber"`
Token0 *Token `json:"token0"`
Token1 *Token `json:"token1"`
FeeTier int64 `json:"feeTier"`
Liquidity string `json:"liquidity"`
SqrtPrice string `json:"sqrtPrice"`
Token0Price string `json:"token0Price"`
Token1Price string `json:"token1Price"`
Tick int64 `json:"tick"`
ObservationIndex int64 `json:"observationIndex"`
VolumeToken0 string `json:"volumeToken0"`
VolumeToken1 string `json:"volumeToken1"`
VolumeUSD string `json:"volumeUSD"`
FeesUSD string `json:"feesUSD"`
TxCount int64 `json:"txCount"`
TotalValueLockedToken0 string `json:"totalValueLockedToken0"`
TotalValueLockedToken1 string `json:"totalValueLockedToken1"`
TotalValueLockedETH string `json:"totalValueLockedETH"`
TotalValueLockedUSD string `json:"totalValueLockedUSD"`
}
Pool represents a v3-style concentrated liquidity pool
type PoolDayData ¶ added in v1.22.76
type PoolDayData struct {
ID string `json:"id"`
Date int64 `json:"date"`
Pool string `json:"pool"`
Liquidity string `json:"liquidity"`
SqrtPrice string `json:"sqrtPrice"`
Token0Price string `json:"token0Price"`
Token1Price string `json:"token1Price"`
Tick int64 `json:"tick"`
TvlUSD string `json:"tvlUSD"`
VolumeToken0 string `json:"volumeToken0"`
VolumeToken1 string `json:"volumeToken1"`
VolumeUSD string `json:"volumeUSD"`
FeesUSD string `json:"feesUSD"`
TxCount int64 `json:"txCount"`
Open string `json:"open"`
High string `json:"high"`
Low string `json:"low"`
Close string `json:"close"`
}
PoolDayData represents daily pool stats
type PoolHourData ¶ added in v1.22.76
type PoolHourData struct {
ID string `json:"id"`
PeriodStartUnix int64 `json:"periodStartUnix"`
Pool string `json:"pool"`
Liquidity string `json:"liquidity"`
SqrtPrice string `json:"sqrtPrice"`
Token0Price string `json:"token0Price"`
Token1Price string `json:"token1Price"`
Tick int64 `json:"tick"`
TvlUSD string `json:"tvlUSD"`
VolumeToken0 string `json:"volumeToken0"`
VolumeToken1 string `json:"volumeToken1"`
VolumeUSD string `json:"volumeUSD"`
FeesUSD string `json:"feesUSD"`
TxCount int64 `json:"txCount"`
Open string `json:"open"`
High string `json:"high"`
Low string `json:"low"`
Close string `json:"close"`
}
PoolHourData represents hourly pool stats
type Query ¶
type Query struct {
ID ids.ID `json:"id"`
QueryText string `json:"queryText"`
Variables []byte `json:"variables"`
ChainScope []ids.ID `json:"chainScope"`
Result []byte `json:"result,omitempty"`
Status QueryStatus `json:"status"`
SubmittedAt int64 `json:"submittedAt"`
CompletedAt int64 `json:"completedAt,omitempty"`
}
Query represents a GraphQL query
type QueryExecutor ¶ added in v1.22.76
type QueryExecutor struct {
// contains filtered or unexported fields
}
QueryExecutor executes GraphQL queries against the shared database
func NewQueryExecutor ¶ added in v1.22.76
func NewQueryExecutor(db database.Database, config *GConfig) *QueryExecutor
NewQueryExecutor creates a new GraphQL query executor
func (*QueryExecutor) Execute ¶ added in v1.22.76
func (e *QueryExecutor) Execute(ctx context.Context, req *GraphQLRequest) *GraphQLResponse
Execute executes a GraphQL query
func (*QueryExecutor) GetDB ¶ added in v1.22.76
func (e *QueryExecutor) GetDB() database.Database
GetDB returns the underlying database (read-only access)
func (*QueryExecutor) RegisterResolver ¶ added in v1.22.76
func (e *QueryExecutor) RegisterResolver(name string, resolver ResolverFunc)
RegisterResolver allows adding custom resolvers
func (*QueryExecutor) SubscribeChain ¶ added in v1.22.76
SubscribeChain connects a chain as a data source for cross-chain queries
type QueryResult ¶
type QueryResult struct {
QueryID ids.ID `json:"queryId"`
ResultHash []byte `json:"resultHash"`
Status string `json:"status"`
}
QueryResult represents a query result to be committed
type QueryStatus ¶
type QueryStatus uint8
QueryStatus represents the status of a query
const ( QueryPending QueryStatus = iota QueryProcessing QueryCompleted QueryFailed )
type ResolverFunc ¶ added in v1.22.76
type ResolverFunc func(ctx context.Context, db database.Database, args map[string]interface{}) (interface{}, error)
ResolverFunc resolves a field from the database
type SchemaUpdate ¶
type SchemaUpdate struct {
SchemaID string `json:"schemaId"`
Operation string `json:"operation"` // create, update, delete
NewVersion string `json:"newVersion,omitempty"`
Schema string `json:"schema,omitempty"`
}
SchemaUpdate represents an update to a GraphQL schema
type Subscription ¶
type Subscription struct {
ID ids.ID `json:"id"`
QueryText string `json:"queryText"`
ChainScope []ids.ID `json:"chainScope"`
Active bool `json:"active"`
CreatedAt int64 `json:"createdAt"`
}
Subscription represents a GraphQL subscription
type Swap ¶ added in v1.22.76
type Swap struct {
ID string `json:"id"` // txHash#logIndex
Transaction string `json:"transaction"`
Timestamp int64 `json:"timestamp"`
Pool string `json:"pool"`
Pair string `json:"pair"` // v2 compat
Token0 string `json:"token0"`
Token1 string `json:"token1"`
Sender string `json:"sender"`
Recipient string `json:"recipient"`
Origin string `json:"origin"`
Amount0 string `json:"amount0"`
Amount1 string `json:"amount1"`
Amount0In string `json:"amount0In"` // v2
Amount0Out string `json:"amount0Out"` // v2
Amount1In string `json:"amount1In"` // v2
Amount1Out string `json:"amount1Out"` // v2
AmountUSD string `json:"amountUSD"`
SqrtPriceX96 string `json:"sqrtPriceX96"` // v3
Tick int64 `json:"tick"` // v3
LogIndex int64 `json:"logIndex"`
}
Swap represents a swap event
type Tick ¶ added in v1.22.76
type Tick struct {
ID string `json:"id"` // pool#tickIdx
PoolAddress string `json:"poolAddress"`
TickIdx int64 `json:"tickIdx"`
LiquidityGross string `json:"liquidityGross"`
LiquidityNet string `json:"liquidityNet"`
Price0 string `json:"price0"`
Price1 string `json:"price1"`
CreatedAtTimestamp int64 `json:"createdAtTimestamp"`
CreatedAtBlockNumber int64 `json:"createdAtBlockNumber"`
}
Tick represents liquidity at a specific price tick (v3)
type Token ¶ added in v1.22.76
type Token struct {
ID string `json:"id"` // address
Symbol string `json:"symbol"`
Name string `json:"name"`
Decimals int64 `json:"decimals"`
TotalSupply string `json:"totalSupply"`
Volume string `json:"volume"`
VolumeUSD string `json:"volumeUSD"`
UntrackedVolumeUSD string `json:"untrackedVolumeUSD"`
FeesUSD string `json:"feesUSD"`
TxCount int64 `json:"txCount"`
PoolCount int64 `json:"poolCount"`
TotalValueLocked string `json:"totalValueLocked"`
TotalValueLockedUSD string `json:"totalValueLockedUSD"`
TotalLiquidity string `json:"totalLiquidity"` // v2 compat
DerivedETH string `json:"derivedETH"`
DerivedLUX string `json:"derivedLUX"` // native token derived price
TradeVolume string `json:"tradeVolume"` // v2 compat
TradeVolumeUSD string `json:"tradeVolumeUSD"` // v2 compat
}
Token represents ERC20 token metadata and stats
type TokenDayData ¶ added in v1.22.76
type TokenDayData struct {
ID string `json:"id"` // tokenAddr-timestamp
Date int64 `json:"date"`
Token string `json:"token"`
Volume string `json:"volume"`
VolumeUSD string `json:"volumeUSD"`
TotalValueLocked string `json:"totalValueLocked"`
TotalValueLockedUSD string `json:"totalValueLockedUSD"`
PriceUSD string `json:"priceUSD"`
FeesUSD string `json:"feesUSD"`
Open string `json:"open"`
High string `json:"high"`
Low string `json:"low"`
Close string `json:"close"`
}
TokenDayData represents daily token stats
type TokenHourData ¶ added in v1.22.76
type TokenHourData struct {
ID string `json:"id"`
PeriodStartUnix int64 `json:"periodStartUnix"`
Token string `json:"token"`
Volume string `json:"volume"`
VolumeUSD string `json:"volumeUSD"`
TotalValueLocked string `json:"totalValueLocked"`
TotalValueLockedUSD string `json:"totalValueLockedUSD"`
PriceUSD string `json:"priceUSD"`
FeesUSD string `json:"feesUSD"`
Open string `json:"open"`
High string `json:"high"`
Low string `json:"low"`
Close string `json:"close"`
}
TokenHourData represents hourly token stats
type VM ¶
type VM struct {
// contains filtered or unexported fields
}
VM implements the chain.ChainVM interface for the Graph Chain (G-Chain)
func (*VM) AppRequest ¶
func (vm *VM) AppRequest(ctx context.Context, nodeID ids.NodeID, requestID uint32, deadline time.Time, request []byte) error
AppRequest implements the common.AppHandler interface
func (*VM) AppRequestFailed ¶
func (vm *VM) AppRequestFailed(ctx context.Context, nodeID ids.NodeID, requestID uint32, appErr *warp.Error) error
AppRequestFailed implements the common.AppHandler interface
func (*VM) AppResponse ¶
func (vm *VM) AppResponse(ctx context.Context, nodeID ids.NodeID, requestID uint32, response []byte) error
AppResponse implements the common.AppHandler interface
func (*VM) BuildBlock ¶
BuildBlock implements the chain.ChainVM interface
func (*VM) ConnectChainSource ¶
ConnectChainSource connects a chain as a data source
func (*VM) CreateHandlers ¶
CreateHandlers implements the common.VM interface
func (*VM) CrossChainAppRequest ¶
func (vm *VM) CrossChainAppRequest(ctx context.Context, chainID ids.ID, requestID uint32, deadline time.Time, msg []byte) error
CrossChainAppRequest implements the common.VM interface
func (*VM) CrossChainAppRequestFailed ¶
func (vm *VM) CrossChainAppRequestFailed(ctx context.Context, chainID ids.ID, requestID uint32, appErr *warp.Error) error
CrossChainAppRequestFailed implements the common.VM interface
func (*VM) CrossChainAppResponse ¶
func (vm *VM) CrossChainAppResponse(ctx context.Context, chainID ids.ID, requestID uint32, msg []byte) error
CrossChainAppResponse implements the common.VM interface
func (*VM) Disconnected ¶
Disconnected implements the validators.Connector interface
func (*VM) ExecuteQuery ¶
ExecuteQuery executes a GraphQL query
func (*VM) GetBlockIDAtHeight ¶
GetBlockIDAtHeight implements the chain.ChainVM interface
func (*VM) HealthCheck ¶
HealthCheck implements the health.Checker interface
func (*VM) Initialize ¶
func (vm *VM) Initialize( ctx context.Context, chainCtx interface{}, db interface{}, genesisBytes []byte, upgradeBytes []byte, configBytes []byte, msgChan interface{}, fxs []interface{}, appSender interface{}, ) error
Initialize implements the common.VM interface
func (*VM) LastAccepted ¶
LastAccepted implements the chain.ChainVM interface
func (*VM) NewHTTPHandler ¶
NewHTTPHandler returns HTTP handlers for the VM
func (*VM) ParseBlock ¶
ParseBlock implements the chain.ChainVM interface
func (*VM) RegisterSchema ¶
func (vm *VM) RegisterSchema(schema *GraphSchema) error
RegisterSchema registers a new GraphQL schema
func (*VM) SetPreference ¶
SetPreference implements the chain.ChainVM interface