Skip to content

Synthetixio/synthetix-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Synthetix Team
Mar 21, 2025
ead8653 · Mar 21, 2025
Sep 5, 2019
May 3, 2019
Feb 24, 2020
Mar 21, 2025
Feb 20, 2020
Mar 21, 2025
Apr 18, 2024
Mar 13, 2024
Oct 28, 2018
Apr 4, 2019
Apr 4, 2019
May 3, 2019
Aug 28, 2018
May 26, 2021
Sep 3, 2018
Mar 21, 2025
Mar 21, 2025
Feb 1, 2019

Repository files navigation

This library is now deprecated. Please use https://github.com/Synthetixio/js-monorepo/tree/master/packages/contracts-interface from our new monorepo.

SynthetixJs library

CircleCI npm version Discord Twitter Follow

The Synthetix-JS Library provides a simple pre-packaged API to communicate with Synthetix on ethereum. You can use it to contribute to DeFi's growing synthetic asset ecosystem.

This is particularly useful for hackathon teams to quickly npm install synthetix-js and start building 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 });

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(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