@arcblock/graphql-client
v1.7.1
Published
graphql client to read/write data on forge powered blockchain
Downloads
669
Readme
Client library to connect your app with forge powered blockchain node, all requests are sent over http/https, can be used in both Node.js and browser environment.
A GraphQLClient
instance mainly supports 5 groups of methods that saves you time when read/write data from/to blockchain.
queries
: query block/transaction/account/asset/chain/node data form the blockchainmutations
: send transaction to the blockchain,sendTx
, all transactions should be signed before sending out to the blockchainsubscriptions
: listen to changes of any data on the blockchainsenders
: shortcut methods that takes awallet
and atx
object, then do the signing, and sendingencoders
: shortcut methods that takes awallet
and atx
object, encode the transaction for later signing, used internally by senders
Table of Contents
Install
npm i @arcblock/graphql-client -S
# OR
yarn add @arcblock/graphql-client
Usage
const Mcrypto = require('@arcblock/mcrypto');
const GraphQLClient = require('@arcblock/graphql-client');
const { fromRandom, WalletType } = require('@arcblock/forge-wallet');
const { hexToBytes } = require('@arcblock/forge-util');
const client = new GraphQLClient('http://localhost:8210/api');
console.log({
queries: client.getQueries(),
subscriptions: client.getSubscriptions(),
mutations: client.getMutations(),
senders: client.getTxSendMethods(),
encoders: client.getTxEncodeMethods(),
});
(async () => {
// Query chain state data
const chainInfo = await client.getChainInfo();
const forgeState = await client.getForgeState();
const block = await client.getBlock({ height: 2 });
console.log('getChainInfo', chainInfo);
console.log('getForgeState', forgeState);
console.log('getBlock', block);
// Send transaction
const wallet = fromRandom(
WalletType({
role: Mcrypto.types.RoleType.ROLE_ACCOUNT,
pk: Mcrypto.types.KeyType.SECP256K1,
hash: Mcrypto.types.HashType.SHA3,
})
);
const hash = await client.declare({
moniker: 'username',
wallet,
});
console.log(hash);
})();
Examples
- Declare identify on the blockchain
- Get free token for newly created account
- Transfer assets between 2 accounts
- Transfer tokens between 2 accounts
- Exchange asset and token between 2 newly created accounts
- Create/update asset on the blockchain
- Consume newly create asset
- Stake for the connected node
Debugging
- If you are in Node.js:
DEBUG=@arcblock/graphql-client node script.js
- If you are in browser:
localStorage.setItem('DEBUG', '@arcblock/graphql-client')
Documentation
- Query arguments and response structure can be found here: QUERIES.md
- Complete method list can be found here: README.md