SmartQL
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.
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:
- Node.js versions
>=16.0.0
. - Browsers matching the Browserslist query
> 0.5%, not OperaMini all, not dead
. - Deno version
>=1.30.0
.
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
: