Quick Start


The SDK is available as a NPM package. Install using

yarn add @charged-particles/sdk

npm install @charged-particles/sdk

Getting started

// Node
import Charged from '@charged-particles/sdk'

// Creating a signer. This is optional, used for making transactions.
const wallet = ethers.wallet.fromMnemonic(seedPhrase);

// Multiple providers array
const mySpecialProviders = [
		network: 1,
		service: { 
			'alchemy': 'apiKey',
		network: 42,
		service: {
			'rpcUrl': '<https://eth-kovan.alchemyapi.io/v2/><key>'
const charged = new Charged({providers: mySpecialProviders, signer: wallet});

// Ethers
const ethersProvider = ethers.getDefaultProvider();
const charged = new Charged({providers: ethersProvider, signer: wallet});

// Web3
var web3 = new Web3('<http://localhost:8545>');
const charged = new Charged({providers: ethersProvider, signer: wallet});
// Web
import Charged from '@charged-particles/sdk'

const charged = new Charged({providers: window.ethereum});

Be careful not to keep your secrets, or private key in clear text !


Charged class object constructor config parameter.

	sdk: { 
		// checks that signer network matches respective contract
		NftBridgeCheck: false 
	transactionOverride: { 
		from: ''
		value: '' 
		gasPrice: '' 
		gasLimit: ''
		blockTag: ''
		nonce:  ''

Interacting with the protocol

When reading and/or writing you will need to define which NFT you are working with.

Before you call any functions on a specific particle, you'll need to specify 
which one you are going to work with.

const contractAddress = '0x1234';
const tokenId = 33;

const nft = charged.NFT(contractAddress, tokenId);

// This energizes our nft with 47 DAI tokens.
const txReciept = await nft.energize(

// Get the energized mass
const massBN = await nft.getMass('aave.B', '0xDAI');

// Discharges all of the interest accrued by the DAI tokens to my wallet.
const txReceipt2 = await nft.discharge('0xMYADDRESS', 'aave.B', '0xDAI');


The SDK provides a set of utility functions. The example below shows the format that all the functions are called by.

// This will fetch the addresses of a contract associated with the main contract
const stateAddress = await charged.utils.getStateAddress()

Last updated