@mysten/graphql-transport
This package provides a SuiTransport
that enables SuiClient
to make requests using the RPC 2.0
(GraphQL) API instead of the JSON RPC API.
Install
npm install --save @mysten/graphql-transport
Setup
import { SuiClientGraphQLTransport } from '@mysten/graphql-transport';
import { getFullnodeUrl, SuiClient } from '@mysten/sui/client';
const client = new SuiClient({
transport: new SuiClientGraphQLTransport({
url: 'https://sui-testnet.mystenlabs.com/graphql',
fallbackFullNodeUrl: getFullnodeUrl('testnet'),
}),
});
Limitations
Unsupported methods
The following methods are currently unsupported in SuiClientGraphQLTransport, and will either error,
or fallback to the JSON RPC API if a fallbackFullNodeUrl
is provided:
subscribeTransaction
subscribeEvents
call
getNetworkMetrics
getMoveCallMetrics
getAddressMetrics
getEpochs
dryRunTransactionBlock
devInspectTransactionBlock
executeTransactionBlock
Unsupported parameters
Some supported methods in SuiClientGraphQLTransport
do not support the full set of parameters
available in the JSON RPC API.
If an unsupported parameter is used, the request will error, or fallback to JSON RPC API if a
fallbackFullNodeUrl
is provided.
getOwnedObjects
:
- missing the
MatchAll
, MatchAny
, MatchNone
, and Version
filters
queryEvents
:
- missing the
MoveEventField
, Module
, TimeRange
, All
, Any
, And
, and Or
filters
Unsupported fields
queryTransactionBlocks
, getTransactionBlock
, and multiGetTransactionBlocks
- missing
messageVersion
, eventsDigest
, sharedObjects
, unwrapped
, wrapped
, and
unwrappedThenDeleted
in effects - missing
id
for events
getStakes
and getStakesByIds
getLatestSuiSystemState
- missing
stakingPoolMappingsId
, inactivePoolsId
, pendingActiveValidatorsId
,
validatorCandidatesId
- missing
reportRecords
on validators
getCurrentEpoch
- missing
reportRecords
on validators
queryEvents
getCheckpoint
and getCheckpoints
- missing
checkpointCommitments
getCurrentEpoch
- missing
epochTotalTransactions
getDynamicFields
- missing
objectId
, digest
and version
available for DynamicObject
but not DynamicField
Performance
Some may require multiple requests to properly resolve:
getDynamicFieldObject
requires 2 requestsqueryTransactionBlocks
, getTransactionBlock
, and multiGetTransactionBlocks
- may require additional requests to load all
objectChanges
, balanceChanges
, dependencies
and events
getNormalizedMoveModule
and getNormalizedMoveModulesByPage
- may require additional requests to load all
friends
, functions
, and structs
getCheckpoint
and getCheckpoints
,
- may require additional requests to load all
transactionBlocks
and validators
getLatestSuiSystemState
, getCurrentEpoch
, getValidatorsApy
and getCommitteeInfo
:
- may require additional requests to load all
validators
Page sizes and limits for paginated methods are based on the defaults and limits of the GraphQL API,
so page sizes and limits may be different than those returned by the JSON RPC API