Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

synthetix-js

Package Overview
Dependencies
Maintainers
1
Versions
376
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

synthetix-js

Synthetix JS Library - access Synthetix smart contracts from browser and Node.js

  • 2.1.2
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

SynthetixJs library

CircleCI npm version

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.

The two main packages to do stable payments with are:

  • StablePayments - for transfer() and payment related functions like transfer()
  • Util - a bunch of handy utility functions for number handling and gas estimation

Some other packages for hacking with:

  • IsssuanceController - for Token swapper/exchange functions such as ETH > HAV & ETH > nUSD
  • Mintr - if you want to build a dApp for minting and burning stablecoins.

What can I build on the Synthetix payment engine?

Anything you can think of with programmable money. We provide the stability-as-a-service and fx (foreign exchange).

We’ve come up with some thought starters for dApps you could create by integrating Synthetix's stable payments into your projects.

  • Crypto Games - lottery, poker, fomoSUSD, nUSDCrash for kicks.
  • Crypto Ecommerce
  • Crypto Loans
  • Crypto Insurance
  • Crypto Payroll
  • Crypto Global Remittance

Install via npm

npm install synthetix-js

Example for getting the total nUSD 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 converting ETH to USD pegged stablecoin nUSD

Obtain test ETH from a faucet https://gitter.im/kovan-testnet/faucet

const txObj = await snxjs.IssuanceController.exchangeEtherForSynths({
  value: snxjs.util.parseEther('0.123'),
});

Example of making a stablecoin payment

//Transfer stablecoins to any ethereum address, wallet or smart contract
const txObj = await snxjs.StablePayments.transfer(
  '0x5C545CA7f9D34857664FDCe6aDC22edcF1D5061f',
  nUSDReceived
);

Example of minting stablecoin(nUSD) 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();

See /__tests__ folder for more examples.

More Info

To understand the Synthetix payments engine see more at developer.synthetix.io

Got any questions?

Join our dev community on Discord: https://discord.gg/S5WmKUp

FAQs

Package last updated on 26 Feb 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc