smartql logo

SmartQL

NPM Package License: MIT

SmartQL is a GraphQL tool designed for Antelope and EOSIO blockchains. It allows users to query and update all smart contracts across multiple chains, offering comprehensive documentation and CRUD operations. It's a versatile tool for developers seeking interoperability between various blockchains.

Live example

For a SmartQL GUI smartql.relocke.io.

smartql screenshot

Installation

For Node.js, to install smartql and the peer dependency graphql run:

npm install smartql graphql

For Deno.js, to install smartql add to your deno.json configuration file these imports:

{
  "imports": {
    "universal-sha256-js/": "https://deno.land/x/sha256js/",
    "universal-hmac-sha256-js/": "https://deno.land/x/hmacsha256/",
    "universal-hmac-sha256-js/hmac-sha256-node.mjs": "https://deno.land/x/hmacsha256/hmac-sha256-deno.mjs",
    "base58-js/": "https://deno.land/x/base58/",
    "isomorphic-secp256k1-js/": "https://deno.land/x/secp256k1js/",
    "ripemd160-js/": "https://deno.land/x/ripemd160js@v2.0.3/",
    "eosio-wasm-js/": "https://deno.land/x/eosio_wasm_js/",
    "eosio-ecc/": "https://deno.land/x/eosio_ecc/",
    "graphql": "https://cdn.skypack.dev/graphql"
  }
}

Examples

See the examples folder on how to run SmartQL as a Node.js endpoint.

Query a blockchain account

import fetch from "node-fetch";
import SmartQL from "smartql/smartql.mjs";

const { data } = await SmartQL(
  {
    query: /*GraphQL*/ `{
    blockchain{
      get_account(account_name:"relockeblock") {
        core_liquid_balance
        ram_quota
        net_weight
        cpu_weight
        ram_usage
        permissions {
          linked_actions {
            account
            action
          }
          required_auth {
            keys {
              key
              weight
            }
            threshold
          }
        }
      }
    }
  }`
  fetch,
  rpc_url: "https://jungle.relocke.io",
  headers: {
    "content-type": "application/json"
  }
  },
);

console.log(data);

Logged output included an account infomation.

Transfer EOS cryptocurrency

import fetch from "node-fetch";
import SmartQL from "smartql";

const { data } = await SmartQL({
  query: /*GraphQL*/ `mutation{
      push_transaction(actions: [{
        eosio_token:{
          transfer: {
            authorization:{
              actor:"relockeblock"
            }
            to:"relockechain"
            from:"relockeblock"
            memo: ""
            quantity: "0.0002 EOS"
          }
        }
      }]) {
        transaction_id
        block_num
      }
    }`,
  contracts: ["eosio.token"],
  private_keys: ["PVT_K1_…"], // legacy keys support.
  fetch,
  rpc_url: "https://eos.relocke.io", // eos blockchain.
  headers: {
    "content-type": "application/json"
  }
});

console.log(data);

Logged output includes transaction_id and block_num

Ways to require in CJS

Note

As this package is ESM if you need to require it in a Common JS package, then you can import like this:

(async function () {
  const { default: SmartQL } = await import("smartql");
  const { data } = await SmartQL({})
})();

Requirements

Supported runtime environments:

Exports

The npm package smartql features optimal JavaScript module design. It doesn’t have a main index module, so use deep imports from the ECMAScript modules that are exported via the package.json field exports: