0.1.0-beta.7 • Published 9 months ago

@anqa-ag/ts-sdk v0.1.0-beta.7

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

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.

0.1.0-beta.7

9 months ago

0.1.0-beta.6

11 months ago

0.1.0-beta.5

11 months ago

0.1.0-beta.4

11 months ago

0.1.0-beta.3

11 months ago

0.1.0-beta.2

11 months ago

0.1.0-beta.1

12 months ago

0.1.0

1 year ago