graphql client to read/write data on forge powered blockchain

Usage no npm install needed!

<script type="module">
  import arcblockGraphqlClient from 'https://cdn.skypack.dev/@arcblock/graphql-client';



styled with prettier docs Gitter

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 blockchain
  • mutations: send transaction to the blockchain, sendTx, all transactions should be signed before sending out to the blockchain
  • subscriptions: listen to changes of any data on the blockchain
  • senders: shortcut methods that takes a wallet and a tx object, then do the signing, and sending
  • encoders: shortcut methods that takes a wallet and a tx object, encode the transaction for later signing, used internally by senders

Table of Contents


npm i @arcblock/graphql-client -S
# OR
yarn add @arcblock/graphql-client


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');
  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(
      role: Mcrypto.types.RoleType.ROLE_ACCOUNT,
      pk: Mcrypto.types.KeyType.SECP256K1,
      hash: Mcrypto.types.HashType.SHA3,
  const hash = await client.declare({
    moniker: 'username',



  • If you are in Node.js: DEBUG=@arcblock/graphql-client node script.js
  • If you are in browser: localStorage.setItem('DEBUG', '@arcblock/graphql-client')


  • Query arguments and response structure can be found here: QUERIES.md
  • Complete method list can be found here: README.md