@rsksmart/rif-relay-light-sdk
v1.1.1
Published
This is a light implementation of the client RIF Relay SDK built using ethers. This is experimential and is subject to change. Please report any issues that you may find.
Downloads
52
Readme
RIF Relay Light SDK
This is a light implementation of the client RIF Relay SDK built using ethers. This is experimential and is subject to change. Please report any issues that you may find.
Install:
yarn @rsksmart/rif-relay-light-sdk
// or
npm i @rsksmart/rif-relay-light-sdk
How to use:
The documentation for this is missing and needs much improvement. This repo is under development and is subject to change without notice.
Basic setup:
import RIFRelaySDK from '@rsksmart/rif-relay-light-sdk
import ethers from 'ethers'
// ...
// fill out the following:
const privateKey = ''
const relayConfig = {
smartWalletFactoryAddress: '',
relayVerifierAddress: '',
deployVerifierAddress: '',
relayServer: ''
}
// Create the Signer:
const provider = new ethers.providers.JsonRpcProvider('https://public-node.testnet.rsk.co')
const signer = new ethers.Wallet(privateKey, provider)
// Create the SDK:
const relaySDK = await sdk.RIFRelaySDK.create(signer, relayConfig)
// Some variables that you might need:
const eoaAddress = relaySDK.eoaAddress
const smartWalletAddress = relaySDK.smartWalletAddress
const isDeployed = await relaySDK.smartWalletFactory.isDeployed()
Deploy the SmartWallet:
The server this is being tested with offers free deployment transactions, if your server costs, then you may need to estimate the cost and send it. Below we are sending 0:
// Deploy the smartwallet for the user.
const freePayment = {
tokenContract: RIF_TOKEN_ADDRESS_TESTNET,
tokenAmount: '0'
}
const deployTx = await relaySDK.sendDeployTransaction(freePayment)
console.log(deployTx)
Estimate and Relay a Transaction:
// A simple ERC20 transaction:
const sendFiveRifToJesseTx = {
to: RIF_TOKEN_ADDRESS_TESTNET,
data: '0xa9059cbb0000000000000000000000003dd03d7d6c3137f1eb7582ba5957b8a2e26f304a0000000000000000000000000000000000000000000000004563918244f40000'
}
// estimate a transaction cost:
const estimateFee = await relaySDK.estimateTransactionCost(sendFiveRifToJesseTx, RIF_TOKEN_ADDRESS_TESTNET)
const payment = {
tokenContract: RIF_TOKEN_ADDRESS_TESTNET,
tokenAmount: estimateFee.toString()
}
// relay a transaction if the smartcontract is already deployed:
const relayTx = await relaySDK.sendRelayTransaction(sendFiveRifToJesseTx, payment)
console.log(relayTx)
Tests:
There are no tests for this library at this time. This tech debt is known, your help is appreciated.
Contribution
Yes please.