
Security News
NIST Under Federal Audit for NVD Processing Backlog and Delays
As vulnerability data bottlenecks grow, the federal government is formally investigating NIST’s handling of the National Vulnerability Database.
bitfi-solana-js
Advanced tools
A JavaScript/TypeScript library for interacting with the Bitfi Solana smart contract.
A JavaScript/TypeScript library for interacting with the Bitfi Solana smart contract.
This library provides a set of utilities and functions to interact with the Bitfi smart contract on the Solana blockchain. It handles operations such as:
npm install bitfi-solana-js
When the user want to deposit SOL/Spl token to the Bitfi program.
import { createDepositAndVaultAtaIfNeededAndNonceAccountInstructions, DepositInstructionParam } from 'bitfi-solana-js';
// Deposit params receive from the backend/solver
const depositParams: DepositInstructionParam = {}
// Build necessary instructions for depositing
const instructions = await createDepositAndVaultAtaIfNeededAndNonceAccountInstructions(depositParams);
// Build the transaction with built instructions
const transaction = new Transaction().add(...instructions);
transaction.recentBlockhash = (await connection.getLatestBlockhash()).blockhash;
transaction.feePayer = user.publicKey;
// Send the transaction to the network
// Note: Transactions need to be signed by the user and user ephemeral account
const signature = await sendAndConfirmTransaction(connection, transaction, [user, userEphemeral], { commitment: 'confirmed' });
console.log(`Signature: ${signature}`);
When the pmm already paid the user, then the mpcs can settle the trade. Settlement needs two step
userEphemeral
key, allow the mpcs can settle the trade with agreed informations from userimport { createUserPresignSettlementTransactionAndSerializeToString } from "bitfi-solana-js";
// Build the presign transaction, serialize it to string, then send to the solver
const settlementPresign = await createUserPresignSettlementTransactionAndSerializeToString({
connection: connection,
tradeId: tradeId,
mpcPubkey: mpc.publicKey,
pmmPubkey: pmm.publicKey,
userEphemeral: userEphemeral,
});
console.log(`Settlement presign: ${settlementPresign}`);
// recover transaction from the presign string
const recoveredTransaction = Transaction.from(Buffer.from(settlementPresign, 'hex'));
// Sign the transaction with mpc keys
recoveredTransaction.partialSign(mpc);
// Send the transaction to the network
const latestBlockhash = await connection.getLatestBlockhash();
const sig = await connection.sendRawTransaction(recoveredTransaction.serialize(), {
skipPreflight: false,
})
await connection.confirmTransaction({
signature: sig,
blockhash: latestBlockhash.blockhash,
lastValidBlockHeight: latestBlockhash.lastValidBlockHeight
}, 'confirmed')
console.log(`Settlement success at ${sig}`);
When the trade is timed out, the user can claim the deposit back.
import { createClaimInstructions } from "bitfi-solana-js";
// Create claim instructions
const instructions = await createClaimAndRefundAtaAndProtocolAtaIfNeededInstructions({
tradeId,
connection,
userPubkey: user.publicKey,
})
// Build the transaction with built instructions
const transaction = new Transaction().add(...instructions);
// Send the transaction to the network
const signature = await sendAndConfirmTransaction(connection, transaction, [user], { commitment: 'confirmed' });
console.log(`Claim success at ${signature}`);
When the user deposit the SOL/Spl token, the mpcs can set the total fee for the trade.
import { createSetTotalFeeInstructions } from "bitfi-solana-js";
const instructions = await createSetTotalFeeInstructions({
tradeId,
amount: '0.0001',
connection,
mpcPubkey: mpc.publicKey,
});
// Build the transaction with built instructions
const transaction = new Transaction().add(...instructions);
// Send the transaction to the network
const signature = await sendAndConfirmTransaction(connection, transaction, [mpc], { commitment: 'confirmed' });
console.log(`Set fee success at ${signature}`);
When some parties want to decode list of accounts, maybe fetched from a transaction.
import { decodeTradeDetailAccounts } from "bitfi-solana-js";
// Some tx hash, maybe a deposit transaction
const txHash = `...`
const parsedTx = await connection.getParsedTransaction(txHash, 'confirmed');
const accounts = parsedTx?.transaction.message.accountKeys;
const accountPubkey = accounts.map((account) => account.pubkey);
const results = await decodePaymentReceiptAccounts(connection, accountPubkey);
console.log('Trade details', results.filter((result) => result.error !== null));
FAQs
A JavaScript/TypeScript library for interacting with the Bitfi Solana smart contract.
The npm package bitfi-solana-js receives a total of 6 weekly downloads. As such, bitfi-solana-js popularity was classified as not popular.
We found that bitfi-solana-js demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
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.
Security News
As vulnerability data bottlenecks grow, the federal government is formally investigating NIST’s handling of the National Vulnerability Database.
Research
Security News
Socket’s Threat Research Team has uncovered 60 npm packages using post-install scripts to silently exfiltrate hostnames, IP addresses, DNS servers, and user directories to a Discord-controlled endpoint.
Security News
TypeScript Native Previews offers a 10x faster Go-based compiler, now available on npm for public testing with early editor and language support.