DFNS
Dfns is a cybersecurity company providing crypto wallet infrastructure. The company develops a wallet-as-a-service infrastructure in Web3. To use DFNS with expand.network SDK, follow these steps:-
Step 1: Installation
User needs to install the expand.network SDK using the following command:
npm i expand-network
Step 2: Wallet Initialisation
const { WalletDFNS , prepareTransaction } = require('expand-network');
async function initialiseDFNSWallet(){
const options = {};
options.privateKey = process.env.DFNS_PRIVATE_KEY;
options.credId = process.env.DFNS_CRED_ID;
options.xApiKey = process.env.X_API_KEY;
options.appId = process.env.DFNS_APP_ID;
options.authToken = process.env.DFNS_ACCESS_TOKEN;
options.baseUrl = process.env.DFNS_API_URL;
options.walletId = process.env.WALLET_ID;
options.appOrigin = 'http://localhost:3000';
const wallet = await new WalletDFNS(options);
return wallet;
}
const wallet = await initialiseDFNSWallet(); // Initialise the wallet client
Step 3: Prepare Transaction
// Preparing the approve transaction from expand.network
const prepareApproveTx = await prepareTransaction('https://api.expand.network/fungibletoken/approve', {
"from": "OWNER_WALLET_ADDRESS",
"tokenAddress": "TOKEN_CONTRACT_ADDRESS",
"to": "SPENDER_WALLET_ADDRESS",
"amount": "100000",
"gas": "25000",
"xApiKey": "YOUR_API_KEY" // Replace this with your API Key
});
prepareApproveTx.chainId = '1';
Step 4: Sign Transaction
// Sign the transaction locally using sdk client
const approveSignedTx = await wallet.signTransaction(prepareApproveTx);
approveSignedTx.chainId = '1'; // Replace with other chainId to toggle between chains
Step 5: Send Transaction
// Send the signed transaction
let txHash = await wallet.sendTransaction(approveSignedTx);
console.log(`approve transaction: https://etherscan.io/tx/${txHash.TxHash}`); // Confirmation
Sample code to perform a swap using DFNS:
const { WalletDFNS , prepareTransaction } = require('expand-network');
const dotenv = require('dotenv');
async function initialiseDFNSWallet(){
const options = {};
options.privateKey = process.env.DFNS_PRIVATE_KEY;
options.credId = process.env.DFNS_CRED_ID;
options.xApiKey = process.env.X_API_KEY;
options.appId = process.env.DFNS_APP_ID;
options.authToken = process.env.DFNS_ACCESS_TOKEN
options.baseUrl = process.env.DFNS_API_URL;
options.walletId = process.env.WALLET_ID;
options.appOrigin = 'http://localhost:3000';
const wallet = await new WalletDFNS(options);
return wallet;
}
async function main() {
dotenv.config();
const wallet = await initialiseDFNSWallet(); // Initialise the wallet client
const xApiKey = process.env.X_API_KEY;
const prepareApproveTx = await prepareTransaction('https://api.expand.network/fungibletoken/approve', { // Prepare the approve transaction from expand.network
"from": "OWNER_WALLET_ADDRESS",
"tokenAddress": "TOKEN_CONTRACT_ADDRESS",
"to": "SPENDER_WALLET_ADDRESS",
"amount": "100000",
"gas": "25000",
"xApiKey": "YOUR_API_KEY" // Replace this with your API Key
});
prepareApproveTx.chainId = '1'; // Replace with other chainId to toggle between chains
const approveSignedTx = await wallet.signTransaction(prepareApproveTx); // Sign the transaction locally using sdk client
approveSignedTx.chainId = '1'; // Replace with other chainId to toggle between chains
let txHash = await wallet.sendTransaction(approveSignedTx); // Send the transaction
console.log(`approve transaction: https://etherscan.io/tx/${txHash.TxHash}`); // Confirmation
const swapTransaction = await prepareTransaction('https://api.expand.network/dex/swap',{ // Simlarly build the swap Tx
"dexId":"1000", // Replace with other dexId to toggle between dexs
"amountIn": "100000",
"amountOutMin": "0",
"path": ["TOKEN_ADDRESS_TO_SWAP_FROM","TOKEN_ADDRESS_TO_SWAP_TO"],
"to": "RECEIVER_WALLET_ADDRESS",
"deadline": "1965990894",
"from": "SENDER_WALLET_ADDRESS",
"gas": "173376",
"xApiKey": "YOUR_API_KEY" // Replace this with your API Key
});
console.log(swapTransaction);
swapTransaction.chainId = '1'; // Replace with other chainId to toggle between chains
const swapSignedTx = await wallet.signTransaction(swapTransaction);
swapSignedTx.chainId = '1' // Replace with other chainId to toggle between chains
const txHash1 = await wallet.sendTransaction(swapSignedTx);
console.log(`swap transaction: https://etherscan.io/tx/${txHash1.TxHash}`);
}
main();
Last updated