Aptos
Overview
Aptos (APT) is the native asset of the Aptos blockchain. It utilizes:
- Account model
- EdDSA signature algorithm
Aptos (APT) is a Layer-1 blockchain designed for high scalability, security, and efficiency. It leverages the Move programming language to enhance smart contract safety and performance. Aptos aims to provide a high-throughput, low-latency blockchain for decentralized applications (dApps), DeFi, NFTs, and institutional use cases.
Explorer
https://explorer.aptoslabs.com/
Wallets Types
BitGo enables holding Aptos in the following wallet types:
| Multisig Cold | Multisig Hot | MPC Cold | MPC Hot | |
|---|---|---|---|---|
| Custody | ❌ | ❌ | ✅ | ✅ |
| Self-Custody | ❌ | ❌ | ✅ | ✅ |
Ticker Symbols
| Mainnet | Testnet |
|---|---|
| apt | tapt |
Units
The smallest unit of APT (Aptos native coin) is called an "Octa".
- 1 APT =
10^8(100,000,000) Octas - 1 Octa = 0.00000001 APT
You can pass balances in string or integer format. However, BitGo recommends using string format to ensure values don't exceed the programmable number limit.
Tokens
The Aptos blockchain natively support tokens.
Fees
Every APT transaction-whether involving tokens or native coin, and whether a withdrawal or consolidation—must pay a gas fee. This fee is determined by both the execution & IO costs and storage costs.
APT wallets at BitGo utilize a Gas Tank to cover transaction fees as the designated fee payer. Total fee would be calculated based on the gas used * gas unit price where gas used would always be less than max gas amount which is currently set at 5000.
Create Wallet
export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>"
export COIN="tapt"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export LABEL="<DESIRED_WALLET_NAME>"
export PASSPHRASE="<YOUR_BITGO_LOGIN_PASSPHRASE>"
export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>"
curl -X POST \
http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/generate \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d '{
"label": "'"$LABEL"'",
"passphrase": "'"$PASSPHRASE"'",
"enterprise": "'"$ENTERPRISE_ID"'",
}'const { BitGo } = require('bitgo');
const accessToken = '<YOUR_ACCESS_TOKEN>';
// Initialize the SDK
const bitgo = new BitGo({
accessToken: accessToken,
env: 'test',
});
// Generate hot wallet
async function createHotWalletSimple() {
const newWallet = await bitgo.coin('tapt').wallets().generateWallet({
label: '<DESIRED_WALLET_NAME>',
passphrase: '<YOUR_BITGO_LOGIN_PASSWORD>',
});
console.log(JSON.stringify(newWallet, undefined, 2));
}Create Address
Apt does not require a minimum balance for receiving addresses. However, an additional cost is incurred for on-chain address initialization. The first deposit to a new address includes an extra fee for on-chain account creation.
export COIN="tapt"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
curl -X POST \
https://app.bitgo-test.com/api/v2/$COIN/wallet/$WALLET_ID/address \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $ACCESS_TOKEN"const { BitGo } = require('bitgo');
const accessToken = '<YOUR_ACCESS_TOKEN>';
// Initialize the SDK
const bitgo = new BitGo({
accessToken: accessToken,
env: 'test',
customRootURI: 'https://app.bitgo-test.com',
});
// Create address
const wallet = await bitgo.coin('tapt').wallets().generateWallet({
label: '<DESIRED_WALLET_NAME>',
passphrase: '<YOUR_BITGO_LOGIN_PASSPHRASE>',
});
const address = await wallet.createAddress(
);
// Print address details
console.log(JSON.stringify(address, undefined, 2));Consolidate Balance
Consolidation Transfer Fee Source: Aptos Gas Tank
To consolidate your receive address balances into the root address, enter the coin as APT, or an APT Token (apt:usdt).
export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>"
export COIN="tapt"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export ADDRESS_1="<DESTINATION_ADDRESS_1>"
export ADDRESS_2="<DESTINATION_ADDRESS_2>"
export WALLET_PASSPHRASE="<YOUR_WALLET_PASSPHRASE>"
curl -X POST \
http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/$WALLET_ID/consolidateAccount \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d '{
"consolidateAddresses": [
{
"address": "'"$ADDRESS_1"'"
},
{
"address": "'"$ADDRESS_2"'"
}
],
"walletPassphrase": "'"$WALLET_PASSPHRASE"'"
}'const BitGoJS = require('bitgo');
const Promise = require('bluebird');
const bitgo = new BitGoJS.BitGo({ env: 'test' });
const coin = 'tapt';
// Enter your wallet ID
const walletId = '<YOUR_WALLET_ID>';
// Enter your wallet passphrase
const walletPassphrase = '<YOUR_WALLET_PASSPHRASE>';
// Enter OTP code
const otp = '<YOUR_OTP>';
// Enter your access token
bitgo.authenticateWithAccessToken({ accessToken });
const wallet = await bitgo.coin(coin).wallets().get({ id: walletId });
// Base address
console.log('Base Address:', wallet.coinSpecific().baseAddress);
// Confirmed balance - sum of the balances of all the addresses
console.log('Confirmed Balance:', wallet.confirmedBalanceString());
// Spendable balance - balance of the base address
console.log('Spendable Balance:', wallet.spendableBalanceString());
const consolidationTxes = await wallet.buildAccountConsolidations();
try {
for (const unsignedConsolidation of consolidationTxes) {
const res = await wallet.sendAccountConsolidation({ walletPassphrase, prebuildTx: unsignedConsolidation });
console.dir(res, { depth: 6 });
}
} catch (e) {
console.error(e);
}
);Estimate Fee
Transaction gas usage can be estimated by simulating it on-chain using the Estimation Gas Fee API, which executes the intended transaction at the blockchain’s current state. The simulation provides an exact gas requirement at that moment, but usage may fluctuate as the chain state changes. Therefore, simulations serve as estimates rather than fixed values.
Transact
Withdrawal Fee Source: Aptos Gas Tank
export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>"
export COIN="tapt"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export ADDRESS="<DESTINATION_ADDRESS>"
export AMOUNT="<AMOUNT_IN_BASE_UNITS>"
export WALLET_PASSPHRASE="<YOUR_WALLET_PASSPHRASE>"
curl -X POST \
http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/$WALLET_ID/sendmany \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d '{
"recipients": [
{
"address": "'"$ADDRESS"'",
"amount": "'"$AMOUNT"'"
},
],
"walletPassphrase": "'"$WALLET_PASSPHRASE"'"
}'let params = {
recipients: [
{
amount: "<AMOUNT",
address: "<DESTINATION_ADDRESS>",
},
],
walletPassphrase: "<YOUR_WALLET_PASSPHRASE>",
};
wallet.sendMany(params).then(function (transaction) {
// Print transaction details
console.dir(transaction);
});Stake
Coming Soon
Updated 2 days ago