@anqa-ag/ts-sdk
v0.1.0-beta.8
Published
### 1. Importing Required Modules
Downloads
90
Readme
Example of using Anqa SDK to build a swap transaction on Aptos
1. Importing Required Modules
First, we need to import the necessary modules and dependencies for the Aptos blockchain transactions and swap data retrieval:
import { getSwapData } from '@anqa-ag/ts-sdk';
import { Aptos, AptosConfig, Network, APTOS_COIN, Ed25519PublicKey, Ed25519PrivateKey, Account } from '@aptos-labs/ts-sdk';
import invariant from 'tiny-invariant';
2. Setting Up Constants
Next, define the constants that will be used throughout the script. These include wallet addresses, keys, and asset identifiers:
export const TEST_WALLET_ADDRESS = ''; // change me
export const TEST_PRIVATE_KEY = ''; // change me
export const TEST_PUBLIC_KEY = ''; // change me
export const Z_USDC = '0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDC';
export const SLIPPAGE_BPS = 50;
3. Configuring Aptos
Set up the configuration for the Aptos blockchain network:
const aptosConfig = new AptosConfig({ network: Network.MAINNET });
export const aptos = new Aptos(aptosConfig);
4. Retrieving Swap Data
Retrieve the necessary swap data for the transaction using the getSwapData
function:
const swapData = await getSwapData({
tokenIn: APTOS_COIN,
tokenOut: Z_USDC,
amountIn: '1000000',
slippageBps: 50, // 0.5%
feeRecipient: '0x24570782d195e458b6e67c52e373ad1c54e18b4ac41e7b4cd2cddec255e42ffb',
feeBps: 50, // 0.5%
chargeFeeBy: 'token_in', // token_in
});
5. Building the Transaction
Build a simple transaction with the swap data retrieved:
const transaction = await aptos.transaction.build.simple({
sender: TEST_WALLET_ADDRESS,
data: {
function: swapData.function,
functionArguments: swapData.functionArguments,
typeArguments: swapData.typeArguments,
},
});
6. Simulating the Transaction
Simulate the transaction to ensure it will succeed:
const simulateResponse = await aptos.transaction.simulate.simple({
signerPublicKey: new Ed25519PublicKey(TEST_PUBLIC_KEY),
transaction,
});
invariant(simulateResponse.length === 1, `unexpected error, simulateResponse = ${JSON.stringify(simulateResponse)}`);
invariant(simulateResponse[0].success, 'simulate failed');
7. Signing and Submitting the Transaction
Sign and submit the transaction using the private key:
const pendingTxResponse = await aptos.transaction.signAndSubmitTransaction({
signer: Account.fromPrivateKey({ privateKey: new Ed25519PrivateKey(TEST_PRIVATE_KEY) }),
transaction,
});
8. Waiting for Transaction Confirmation
Wait for the transaction to be confirmed on the blockchain:
const committedTxResponse = await aptos.transaction.waitForTransaction({ transactionHash: pendingTxResponse.hash });
invariant(committedTxResponse.success, 'transaction failed');
9. Logging the Transaction Result
Finally, log the success message with the transaction details:
console.log(`Success. https://aptoscan.com/transaction/${committedTxResponse.version}`);
Each block of code corresponds to a specific step in the process of setting up, building, simulating, signing, submitting, and confirming a transaction on the Aptos blockchain. This structure helps in understanding the flow and individual responsibilities of each part of the script.