
Security News
MCP Community Begins Work on Official MCP Metaregistry
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
optimex-solana-js
Advanced tools
A JavaScript/TypeScript library for interacting with the Optimex Solana smart contract.
A JavaScript/TypeScript library for interacting with the Optimex Solana smart contract.
This library provides a set of utilities and functions to interact with the Optimex smart contract on the Solana blockchain. It handles operations such as:
npm install optimex-solana-js
When the user want to deposit SOL/Spl token to the Optimex program.
import { createDepositAndVaultAtaIfNeededAndNonceAccountInstructions, DepositInstructionParam } from 'optimex-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 "optimex-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 "optimex-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 "optimex-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 "optimex-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 Optimex Solana smart contract.
The npm package optimex-solana-js receives a total of 0 weekly downloads. As such, optimex-solana-js popularity was classified as not popular.
We found that optimex-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
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
Research
Security News
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.
Research
Security News
Malicious npm packages posing as developer tools target macOS Cursor IDE users, stealing credentials and modifying files to gain persistent backdoor access.