RenJS

RenJS Documentation

Initialization

Import RenJS in one of the following ways:

Import
Require
Script Tag
Import
import RenJS from "@renproject/ren";
Require
const RenJS = require("@renproject/ren").default;
Script Tag
<!--
RenJS can't yet be imported with a script tag.
This will be fixed soon.
-->
<script src="https://unpkg.com/@renproject/ren/build/main/index.js">
</script>

The RenJS accepts the following parameters:

RenJS Class
RenJS Class

Parameter

Type

Description

network

"chaosnet" | "testnet"

Specify what RenVM network you are talking to.

options (optional)

{ endpoint?: string }

endpoint: Specify a different endpoint to the default https://gateway.renproject.io as a URL or "staging".

Example:

const renJS = new RenJS("testnet");

renJS.lockAndMint

lockAndMint is the main method used to send cryptocurrencies into Ethereum.

Type definition

Standard Parameters
Recover from Ren Transaction Hash
Standard Parameters

Parameter

Type

Description

sendToken

RenJS.Tokens.BTC.Mint

The cryptocurrency being shifted. Replace BTC with ZEC or BCH.

contractCalls

See Contract call types below. A single contract call can be included in the top level parameters (see 2nd example).

The details for how the mint approval returned from RenVM should be submitted to Ethereum.

nonce (optional)

string

A value to guarantee unique Gateway addresses. Initialize withRenJS.utils.randomNonce()

suggestedAmount (optional)

NumberInput

Display in the Gateway popup an amount that should be sent to the gateways address. The shift will continue even if the user sends a different amount.

requiredAmount (optional)

NumberInput or { min?: NumberInput, max?: NumberInput}

Require a specific amount to be sent to the gateway address. The shift won't continue if the amount is incorrect.

Examples:

const mint = renJS.mint({
sendToken: RenJS.Tokens.BTC.Mint,
nonce: RenJS.utils.randomNonce(),
suggestedAmount: RenJS.utils.value("0.000225", "btc").sats(),
contractCalls: [... see below],
});
Recover from Ren Transaction Hash

Parameter

Type

Description

sendToken

RenJS.Tokens.BTC.Mint

The cryptocurrency being shifted. Replace BTC with ZEC or BCH.

renTxHash

string

Resume a shift-in by providing the Ren transaction hash.

contractCalls

See Contract call types below.

The details for how the mint approval returned from RenVM should be submitted to Ethereum.

Example:

renJS.open({
sendToken: RenJS.Tokens.BTC.Mint,
renTxHash: "0xda5883967b7a79544a12576ce9a606c438b6a19b13c2a9e04178a1b31f27f172",
contractCalls: [... see below],
});

Contract call types

The contractCall parameter is an array of contract calls, which can be detailed or simple. The last contract call is augmented with the parameters returned from RenVM (see the tutorial for details). On the last contract call can be simple. Providing multiple contract calls should only be used for calls which are required for the last call, e.g. approving token transfers.

Detailed: Call smart contract
Simple: Send directly to address
Detailed: Call smart contract

Parameter

Type

Description

sendTo

string

The address of the contract to be called.

contractFn

string

The name of the function to be called on the contract.

contractParams (optional)

Array<{ name: string, type: string, value: any }>

The parameters to be passed to the contract. See abiToParams for providing an ABI object instead of specifying the types of each parameter. Defaults to [].

txConfig (optional)

TransactionConfig

Transaction options to be passed to Web3.

Example:

{
sendTo: "0xb2731C04610C10f2eB6A26ad14E607d44309FC10",
contractFn: "deposit",
contractParams: [{
name: "_msg",
type: "bytes",
value: web3.utils.fromAscii(`Depositing ${amount} BTC`),
}],
txConfig: { gas: 500000 }
}
Simple: Send directly to address

Parameter

Type

Description

sendTo

string

The Ethereum wallet to receive the shifted funds.

txConfig (optional)

TransactionConfig

Transaction options to be passed to Web3.

Example:

{
sendTo: "0xD5B5b26521665Cb37623DCA0E49c553b41dbF076",
txConfig: { gas: 500000 },
}

Result

Mint

renJS.burnAndRelease

burnAndRelease is the main method used to withdraw cryptocurrencies into Ethereum.

Type definition

Standard Parameters
Provide Ethereum txHash
Provide burn ID
Standard Parameters

Parameter

Type

Description

sendToken

RenJS.Tokens.BTC.Burn

The cryptocurrency being shifted. Replace BTC with ZEC or BCH.

contractCalls

See Contract call types above, plus a sendAmount if using a simple contract call. A single contract call can be included in the top level parameters (see 2nd example).

Provide the details to emit the shift-out request on Ethereum.

Examples:

const burn = renJS.burn({
sendToken: RenJS.Tokens.BTC.Burn,
contractCalls: [... see above],
});
// Contract call in top-level
renJS.burn({
sendToken: RenJS.Tokens.BTC.Burn,
sendTo: "miMi2VET41YV1j6SDNTeZoPBbmH8B4nEx6",
sendAmount: RenJS.utils.value(0.001, "btc").sats(),
txConfig: { gas: 500000 },
});
Provide Ethereum txHash

Parameter

Type

Description

sendToken

RenJS.Tokens.BTC.Burn

The cryptocurrency being shifted. Replace BTC with ZEC or BCH.

ethTxHash

string

An Ethereum transaction hash which contains a request to shift-out the relevant asset (as an event/log).

Examples:

renJS.open({
sendToken: RenJS.Tokens.BTC.Burn,
renTxHash: "0x8dded30c5bf254f818cd656d639edf85e4bd7a93164a360e0e075be77705401e",
});
Provide burn ID

Parameter

Type

Description

sendToken

RenJS.Tokens.BTC.Burn

The cryptocurrency being shifted. Replace BTC with ZEC or BCH.

burnReference

string | number

The reference ID of the shift-out event/log.

Examples:

renJS.open({
sendToken: RenJS.Tokens.BTC.Burn,
burnReference: 1234,
});

Result

Burn

renJS.getGatewayAddress

Get the Gateway contract address for a given asset.

Standard Parameters
Standard Parameters

Parameter

Type

Description

web3

Web3

Local instance of web3.

tokenOrContract

ShiftedToken | RenContract | Asset | ("BTC" | "ZEC" | "BCH")

Token or contract to return an address for.

Returns

string

renJS.getTokenAddress

Get the ERC20 token contract address for a given asset.

Standard Parameters
Standard Parameters

Parameter

Type

Description

web3

Web3

Local instance of web3.

tokenOrContract

ShiftedToken | RenContract | Asset | ("BTC" | "ZEC" | "BCH")

Token or contract to return an address for.

Returns

string

renJS.getFees

Get the current RenVM mint, burn and transaction fees.

Returns

Return Type
Example
Return Type
interface ChainFees {
lock: number; // Chain transaction fees for locking (in sats)
release: number; // Chain transaction fees for releasing (in sats)
ethereum: {
mint: number; // Minting fee basis points (10 = 0.1%)
burn: number; // Burning fee basis points (10 = 0.1%)
};
}
interface Fees {
btc: ChainFees;
zec: ChainFees;
bch: ChainFees;
}
Example
const RenJS = require("@renproject/ren");
new RenJS("testnet").getFees().then(console.log);
> {
btc: { lock: 35000, release: 35000, ethereum: { mint: 10, burn: 10 } },
zec: { lock: 35000, release: 35000, ethereum: { mint: 10, burn: 10 } },
bch: { lock: 35000, release: 35000, ethereum: { mint: 10, burn: 10 } }
}