npm

Need private packages and team management tools?Check out npm Orgs. »

synthetix-js

2.7.1 • Public • Published

SynthetixJs library

CircleCI npm version Discord Twitter Follow

The Synthetix-JS Library provides a simple pre-packaged API to communicate with the Synthetix payment engine on ethereum. You can use it to build your own dApp that needs to work with payments using a stablecoin.

This is particularly useful for hackathon teams to quickly npm install synthetix-js and have stable payments integrated into their dApp in just a few minutes.

Under the hood, SynthetixJs uses ethers.js library and its concept of providers and transaction signers.

Install via npm

npm install synthetix-js

Developer Docs

developer.synthetix.io

Example for getting the total sUSD stablecoin in circulation

const { SynthetixJs } = require('synthetix-js');
const snxjs = new SynthetixJs(); //uses default ContractSettings - ethers.js default provider, mainnet
(async function() {
  const totalSUSD = await snxjs.sUSD.totalSupply();
  const totalSUSDSupply = snxjs.utils.formatEther(totalSUSD);
  console.log('sUSDTotalSupply', totalSUSDSupply);
})();

Default settings don't use any signer. That means that constants can be viewed from the contract but executing a transaction will fail. To execute transactions, set up signer.

4 signers are included in the library - Metamask (compatible with Dapp browsers), Trezor, Ledger and PrivateKey. Custom ethers.js compatible signers can be used too.

Example using a metamask signer

const { SynthetixJs } = require('synthetix-js');
const metaMaskSigner = new SynthetixJs.signers.Metamask();
const snxjs = new SynthetixJs({ signer: metaMaskSigner }); //uses Metamask signer and default infura.io provider on mainnet

Example of minting stablecoin(sUSD) with private key signer

const { SynthetixJs } = require('synthetix-js');
//parameters: default provider, default networkId, private key as a string
const signer = new SynthetixJs.signers.PrivateKey(
  null,
  0,
  '0x0123456789012345678901234567890123456789012345678901234567890123'
);
const snxjs = new SynthetixJs({ signer });
const sUSD = snxjs.utils.toUtf8Bytes('sUSD');
 
async function run() {
  const totalSupply = await snxjs.Synthetix.totalSupply();
  const snxTotalSupply = snxjs.utils.formatEther(totalSupply);
  console.log('snxTotalSupply', snxTotalSupply);
 
  //issue 100 synths (will throw if insufficient funds for gas)
  try {
    const txObj = await snxjs.Synthetix.issueSynths(sUSD, snxjs.util.parseEther('100')); //execute transaction (requires gas)
    console.log('transaction hash', txObj.hash);
  } catch (e) {
    console.log(e);
  }
}
 
run();

Live examples

  • Get total synth supply Get total supply
  • Get collateralized state image

Got any questions?

Join our dev community on Discord: Discord

Keywords

none

install

npm i synthetix-js

Downloadsweekly downloads

243

version

2.7.1

license

MIT

repository

Gitgithub

last publish

collaborators

  • avatar
  • avatar
  • avatar
  • avatar
  • avatar
Report a vulnerability