$ mkdir ts_sdk_basic_usage && cd ts_sdk_basic_usage
$ pnpm init
$ pnpm add @aptos-labs/ts-sdk
import {
Account,
Ed25519PrivateKey,
SigningSchemeInput,
} from "@aptos-labs/ts-sdk";
function createAccount() {
const account1 = Account.generate(); // defaults to Legacy Ed25519
console.log(`account1: ${account1.accountAddress.toString()}`);
account1.privateKey.toString;
const account2 = Account.generate({
scheme: SigningSchemeInput.Secp256k1Ecdsa,
}); // Single Sender Secp256k1
console.log(`account2: ${account2.accountAddress.toString()}`);
const account3 = Account.generate({
scheme: SigningSchemeInput.Ed25519,
legacy: false,
}); // Single Sender Ed25519
console.log(`account3: ${account3.accountAddress.toString()}`);
return account1;
}
function createAccountFromPrivateKey(privateKeyBytes: string) {
const privateKey = new Ed25519PrivateKey(privateKeyBytes);
const account = Account.fromPrivateKey({ privateKey });
console.log(
`account1 from private key: ${account.accountAddress.toString()}`
);
}
async function main() {
const account = createAccount();
createAccountFromPrivateKey(account.privateKey.toString());
}
main();
// OUTPUT:
// account1: 0x2d7b14974554446317f614737f1f3df32a285c48b44ee3f520d2885ad9ade31a
// account2: 0xd49f49ee44ade9a30dcded76f2b805d683ad9117613ccd95e38b30d586351dbf
// account3: 0xc04102d0a5fdb19ea0ba31c8d7215625a76b1b778167bf58297cdbec1b0cd8e6
// account1 from private key: 0x2d7b14974554446317f614737f1f3df32a285c48b44ee3f520d2885ad9ade31a
import {
Account,
Aptos,
AptosConfig,
Ed25519PrivateKey,
Network,
SigningSchemeInput,
} from "@aptos-labs/ts-sdk";
async function fetch_data() {
const aptosConfig = new AptosConfig({ network: Network.TESTNET });
const aptos = new Aptos(aptosConfig);
const account = Account.generate();
console.log(`>>> create account: ${account.accountAddress.toString()}`);
const transaction = await aptos.fundAccount({
accountAddress: account.accountAddress,
amount: 100,
});
console.log(`\n>>> transaction: ${JSON.stringify(transaction)}`);
const fund = await aptos.getAccountInfo({
accountAddress: account.accountAddress,
});
console.log(`\n>>>fund: ${JSON.stringify(fund)}`);
const modules = await aptos.getAccountModules({
accountAddress: account.accountAddress,
});
console.log(`\n>>> modules: ${JSON.stringify(modules)}`);
const tokens = await aptos.getAccountOwnedTokens({
accountAddress: account.accountAddress,
});
console.log(`\n>>> tokens: ${JSON.stringify(tokens)}`);
type Coin = { coin: { value: string } };
const resource = await aptos.getAccountResource<Coin>({
accountAddress: account.accountAddress,
resourceType: "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>",
});
console.log(`\n>>> resource: ${JSON.stringify(resource)}`);
const value = resource.coin.value;
console.log(`\n>>> coin value: ${value}`);
}
async function main() {
fetch_data();
}
main();
// >>> create account: 0x06a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d
// >>> transaction: {"version":"5974082853","hash":"0x3308cd348384fa5623986b2c6aa82cb93a4df3fb4d8d11fa21e7e18c07dc369c","state_change_hash":"0x9df9233fe8a13c6e790cf588b2c7160587d5ce0f33cd87e0b92434361dbe34eb","event_root_hash":"0x5efdc1806cd0bc1968a417db06bf204d175291443a0f20535b45ead9fb1f168a","state_checkpoint_hash":null,"gas_used":"1001","success":true,"vm_status":"Executed successfully","accumulator_root_hash":"0xedb82d4e1287e47350edc723dc470ccd41794b831d24ae35e409df205820c967","changes":[{"address":"0x6a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d","state_key_hash":"0x8ff336347df3a198a09afdaaad8c8434ded97110b4c398aa4ffcfb0d60c65e35","data":{"type":"0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>","data":{"coin":{"value":"100"},"deposit_events":{"counter":"1","guid":{"id":{"addr":"0x6a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d","creation_num":"2"}}},"frozen":false,"withdraw_events":{"counter":"0","guid":{"id":{"addr":"0x6a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d","creation_num":"3"}}}}},"type":"write_resource"},{"address":"0x6a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d","state_key_hash":"0x3f92d599ad51f3a459fb7dbc993208a7ac55aa8ff7b529ee318eb71d683d4b8f","data":{"type":"0x1::account::Account","data":{"authentication_key":"0x06a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d","coin_register_events":{"counter":"1","guid":{"id":{"addr":"0x6a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d","creation_num":"0"}}},"guid_creation_num":"4","key_rotation_events":{"counter":"0","guid":{"id":{"addr":"0x6a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d","creation_num":"1"}}},"rotation_capability_offer":{"for":{"vec":[]}},"sequence_number":"0","signer_capability_offer":{"for":{"vec":[]}}}},"type":"write_resource"},{"address":"0x19e2c9d62d5d5cc16f0de87e7e05f5161f9e820932341e82740cdeed1ba63d12","state_key_hash":"0xc1b87f42046e685dfc675966f239376b4dad0bddb08c5d4710d87d631381be1d","data":{"type":"0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>","data":{"coin":{"value":"328418492900"},"deposit_events":{"counter":"2381638","guid":{"id":{"addr":"0x19e2c9d62d5d5cc16f0de87e7e05f5161f9e820932341e82740cdeed1ba63d12","creation_num":"2"}}},"frozen":false,"withdraw_events":{"counter":"2381630","guid":{"id":{"addr":"0x19e2c9d62d5d5cc16f0de87e7e05f5161f9e820932341e82740cdeed1ba63d12","creation_num":"3"}}}}},"type":"write_resource"},{"address":"0x19e2c9d62d5d5cc16f0de87e7e05f5161f9e820932341e82740cdeed1ba63d12","state_key_hash":"0xa64c3e06541e5b27ab82cec64706a40eb629a67a9218f13cd7459f5baa9978ff","data":{"type":"0x1::account::Account","data":{"authentication_key":"0x19e2c9d62d5d5cc16f0de87e7e05f5161f9e820932341e82740cdeed1ba63d12","coin_register_events":{"counter":"1","guid":{"id":{"addr":"0x19e2c9d62d5d5cc16f0de87e7e05f5161f9e820932341e82740cdeed1ba63d12","creation_num":"0"}}},"guid_creation_num":"4","key_rotation_events":{"counter":"0","guid":{"id":{"addr":"0x19e2c9d62d5d5cc16f0de87e7e05f5161f9e820932341e82740cdeed1ba63d12","creation_num":"1"}}},"rotation_capability_offer":{"for":{"vec":[]}},"sequence_number":"2381638","signer_capability_offer":{"for":{"vec":[]}}}},"type":"write_resource"},{"state_key_hash":"0x6e4b28d40f98a106a65163530924c0dcb40c1349d3aa915d108b4d6cfc1ddb19","handle":"0x1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca","key":"0x0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935","value":"0x4d784ea77b0cbd940100000000000000","data":null,"type":"write_table_item"}],"sender":"0x19e2c9d62d5d5cc16f0de87e7e05f5161f9e820932341e82740cdeed1ba63d12","sequence_number":"2381637","max_gas_amount":"500000","gas_unit_price":"100","expiration_timestamp_secs":"1726153296","payload":{"code":{"bytecode":"0xa11ceb0b0500000008010008020804030c150421020523100733500883012006a30114000000010002000301050800030403010002060105010001070002000008000200010403060c050301050001060c01080001030d6170746f735f6163636f756e740a6170746f735f636f696e04636f696e067369676e65720a616464726573735f6f66094170746f73436f696e0762616c616e6365046d696e74087472616e7366657200000000000000000000000000000000000000000000000000000000000000010308a0860100000000000308ffffffffffffffff000001170a0011000c030a03380007010a02170700172304120a000b030a0207001611020b000b010b02110302","abi":{"name":"main","visibility":"public","is_entry":true,"is_view":false,"generic_type_params":[],"params":["&signer","address","u64"],"return":[]}},"type_arguments":[],"arguments":["0x6a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d","100"],"type":"script_payload"},"signature":{"public_key":"0x7a58e569925baaba11db29b72e2f4975a0262ec6f9502d50e3b1a5da1d85ae04","signature":"0xf9fe2ff5efe90ee8ec1f1b0117c58bc7b4e5202b385b1d044d60c3395625a16902a763298433ea4c66babf1c6bc618af0f06d6fb9ad977ecef12d25478905f0a","type":"ed25519_signature"},"events":[{"guid":{"creation_number":"2","account_address":"0x19e2c9d62d5d5cc16f0de87e7e05f5161f9e820932341e82740cdeed1ba63d12"},"sequence_number":"2381637","type":"0x1::coin::DepositEvent","data":{"amount":"100100"}},{"guid":{"creation_number":"0","account_address":"0x6a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d"},"sequence_number":"0","type":"0x1::account::CoinRegisterEvent","data":{"type_info":{"account_address":"0x1","module_name":"0x6170746f735f636f696e","struct_name":"0x4170746f73436f696e"}}},{"guid":{"creation_number":"3","account_address":"0x19e2c9d62d5d5cc16f0de87e7e05f5161f9e820932341e82740cdeed1ba63d12"},"sequence_number":"2381629","type":"0x1::coin::WithdrawEvent","data":{"amount":"100"}},{"guid":{"creation_number":"2","account_address":"0x6a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d"},"sequence_number":"0","type":"0x1::coin::DepositEvent","data":{"amount":"100"}},{"guid":{"creation_number":"0","account_address":"0x0"},"sequence_number":"0","type":"0x1::transaction_fee::FeeStatement","data":{"execution_gas_units":"6","io_gas_units":"7","storage_fee_octas":"98800","storage_fee_refund_octas":"0","total_charge_gas_units":"1001"}}],"timestamp":"1726153281890208","type":"user_transaction"}
// >>>fund: {"sequence_number":"0","authentication_key":"0x06a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d"}
// >>> modules: []
// >>> tokens: []
// >>> resource: {"coin":{"value":"100"},"deposit_events":{"counter":"1","guid":{"id":{"addr":"0x6a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d","creation_num":"2"}}},"frozen":false,"withdraw_events":{"counter":"0","guid":{"id":{"addr":"0x6a90df7117beb151d0483002ee0138b84c88c9b691610bdfc3edfe52bcfb85d","creation_num":"3"}}}}
// >>> coin value: 100
import {
Account,
Aptos,
AptosConfig,
Ed25519PrivateKey,
Network,
SigningSchemeInput,
} from "@aptos-labs/ts-sdk";
async function transaction() {
console.log(
"This example will create two accounts (Alice and Bob) and send a transaction transfering APT to Bob's account."
);
// 0. Setup the client and test accounts
const config = new AptosConfig({ network: Network.TESTNET });
const aptos = new Aptos(config);
let alice = Account.generate();
let bob = Account.generate();
console.log("=== Addresses ===\n");
console.log(`Alice's address is: ${alice.accountAddress}`);
console.log(`Bob's address is: ${bob.accountAddress}`);
console.log("\n=== Funding accounts ===\n");
await aptos.fundAccount({
accountAddress: alice.accountAddress,
amount: 100_000_000,
});
await aptos.fundAccount({
accountAddress: bob.accountAddress,
amount: 100,
});
console.log("Funded Alice and Bob's accounts!");
// 1. Build
console.log("\n=== 1. Building the transaction ===\n");
const transaction = await aptos.transaction.build.simple({
sender: alice.accountAddress,
data: {
// All transactions on Aptos are implemented via smart contracts.
function: "0x1::aptos_account::transfer",
functionArguments: [bob.accountAddress, 100],
},
});
console.log("Built the transaction!");
// 2. Simulate (Optional)
console.log("\n === 2. Simulating Response (Optional) === \n");
const [userTransactionResponse] = await aptos.transaction.simulate.simple({
signerPublicKey: alice.publicKey,
transaction,
});
console.log(userTransactionResponse);
// 3. Sign
console.log("\n=== 3. Signing transaction ===\n");
const senderAuthenticator = aptos.transaction.sign({
signer: alice,
transaction,
});
console.log("Signed the transaction!");
// 4. Submit
console.log("\n=== 4. Submitting transaction ===\n");
const submittedTransaction = await aptos.transaction.submit.simple({
transaction,
senderAuthenticator,
});
console.log(`Submitted transaction hash: ${submittedTransaction.hash}`);
// 5. Wait for results
console.log("\n=== 5. Waiting for result of transaction ===\n");
const executedTransaction = await aptos.waitForTransaction({
transactionHash: submittedTransaction.hash,
});
console.log(executedTransaction);
}
async function main() {
transaction();
}
main();
// $ ts-node src/03_transaction.ts
// This example will create two accounts (Alice and Bob) and send a transaction transfering APT to Bob's account.
// === Addresses ===
// Alice's address is: 0x001e858caee9d67b50a97f441b1590c170419905f2fb8d2140803c7e8e22c852
// Bob's address is: 0xa52522c9a1d0d6695e09be57b9605168056173e50a56e2f355385270ab7070e1
// === Funding accounts ===
// Funded Alice and Bob's accounts!
// === 1. Building the transaction ===
// Built the transaction!
// === 2. Simulating Response (Optional) ===
// {
// version: '5979042043',
// hash: '0xa3e7b041ce44d6d4aba88fa76a23ead97ecd064d327608bef3a585b5c5c1de22',
// state_change_hash: '0x0000000000000000000000000000000000000000000000000000000000000000',
// event_root_hash: '0x0000000000000000000000000000000000000000000000000000000000000000',
// state_checkpoint_hash: null,
// gas_used: '9',
// success: true,
// vm_status: 'Executed successfully',
// accumulator_root_hash: '0x0000000000000000000000000000000000000000000000000000000000000000',
// changes: [
// {
// address: '0x1e858caee9d67b50a97f441b1590c170419905f2fb8d2140803c7e8e22c852',
// state_key_hash: '0x7f4ad20eb420245733b8128041b91e3723ac16a4105a7d42584484207aa31186',
// data: [Object],
// type: 'write_resource'
// },
// {
// address: '0x1e858caee9d67b50a97f441b1590c170419905f2fb8d2140803c7e8e22c852',
// state_key_hash: '0x940f9bd6c4a7c61733c53d99c83007bbaea16ccb3a9a638f573d1ab7d3647d85',
// data: [Object],
// type: 'write_resource'
// },
// {
// address: '0xa52522c9a1d0d6695e09be57b9605168056173e50a56e2f355385270ab7070e1',
// state_key_hash: '0x820cf5d86aa00653ace8db87a11885e143a73dd04688fa8dcc23556ba3bd23da',
// data: [Object],
// type: 'write_resource'
// },
// {
// state_key_hash: '0x6e4b28d40f98a106a65163530924c0dcb40c1349d3aa915d108b4d6cfc1ddb19',
// handle: '0x1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca',
// key: '0x0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935',
// value: '0x65b3a042e529be940100000000000000',
// data: null,
// type: 'write_table_item'
// }
// ],
// sender: '0x1e858caee9d67b50a97f441b1590c170419905f2fb8d2140803c7e8e22c852',
// sequence_number: '0',
// max_gas_amount: '200000',
// gas_unit_price: '100',
// expiration_timestamp_secs: '1726236062',
// payload: {
// function: '0x1::aptos_account::transfer',
// type_arguments: [],
// arguments: [
// '0xa52522c9a1d0d6695e09be57b9605168056173e50a56e2f355385270ab7070e1',
// '100'
// ],
// type: 'entry_function_payload'
// },
// signature: {
// public_key: '0x0da1e7c9f856094993233fa9b9d0ce434aa192964c2d2a7f9ac0e98db7bef244',
// signature: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
// type: 'ed25519_signature'
// },
// events: [
// {
// guid: [Object],
// sequence_number: '0',
// type: '0x1::coin::WithdrawEvent',
// data: [Object]
// },
// {
// guid: [Object],
// sequence_number: '1',
// type: '0x1::coin::DepositEvent',
// data: [Object]
// },
// {
// guid: [Object],
// sequence_number: '0',
// type: '0x1::transaction_fee::FeeStatement',
// data: [Object]
// }
// ],
// timestamp: '1726236042647926'
// }
// === 3. Signing transaction ===
// Signed the transaction!
// === 4. Submitting transaction ===
// Submitted transaction hash: 0xab2aee974223a22ea6a1c24754a939c26a02bc417ac2e595aff8df6bb4e38f58
// === 5. Waiting for result of transaction ===
// {
// version: '5979042103',
// hash: '0xab2aee974223a22ea6a1c24754a939c26a02bc417ac2e595aff8df6bb4e38f58',
// state_change_hash: '0xb983e92f607a266695468412bbbecbb52922aecd8d7b7f2681d0b4e977b1a6a6',
// event_root_hash: '0xc6c4ffa097c7cf46570289b33ac3f2cd77fa41c72f767781f8122abe0014b583',
// state_checkpoint_hash: null,
// gas_used: '9',
// success: true,
// vm_status: 'Executed successfully',
// accumulator_root_hash: '0xb9ddc32e3353a440762f727a57929a9722e87b27398924a3aff6ebc322ff00e5',
// changes: [
// {
// address: '0x1e858caee9d67b50a97f441b1590c170419905f2fb8d2140803c7e8e22c852',
// state_key_hash: '0x7f4ad20eb420245733b8128041b91e3723ac16a4105a7d42584484207aa31186',
// data: [Object],
// type: 'write_resource'
// },
// {
// address: '0x1e858caee9d67b50a97f441b1590c170419905f2fb8d2140803c7e8e22c852',
// state_key_hash: '0x940f9bd6c4a7c61733c53d99c83007bbaea16ccb3a9a638f573d1ab7d3647d85',
// data: [Object],
// type: 'write_resource'
// },
// {
// address: '0xa52522c9a1d0d6695e09be57b9605168056173e50a56e2f355385270ab7070e1',
// state_key_hash: '0x820cf5d86aa00653ace8db87a11885e143a73dd04688fa8dcc23556ba3bd23da',
// data: [Object],
// type: 'write_resource'
// },
// {
// state_key_hash: '0x6e4b28d40f98a106a65163530924c0dcb40c1349d3aa915d108b4d6cfc1ddb19',
// handle: '0x1b854694ae746cdbd8d44186ca4929b2b337df21d1c74633be19b2710552fdca',
// key: '0x0619dc29a0aac8fa146714058e8dd6d2d0f3bdf5f6331907bf91f3acd81e6935',
// value: '0x93d3fb1fe629be940100000000000000',
// data: null,
// type: 'write_table_item'
// }
// ],
// sender: '0x1e858caee9d67b50a97f441b1590c170419905f2fb8d2140803c7e8e22c852',
// sequence_number: '0',
// max_gas_amount: '200000',
// gas_unit_price: '100',
// expiration_timestamp_secs: '1726236062',
// payload: {
// function: '0x1::aptos_account::transfer',
// type_arguments: [],
// arguments: [
// '0xa52522c9a1d0d6695e09be57b9605168056173e50a56e2f355385270ab7070e1',
// '100'
// ],
// type: 'entry_function_payload'
// },
// signature: {
// public_key: '0x0da1e7c9f856094993233fa9b9d0ce434aa192964c2d2a7f9ac0e98db7bef244',
// signature: '0x7cc94bc08806e4c1f71d1a2098b29d950dbc7ff29239bc6c1a628f036059ff7a4702b3a2ec4be64c2777be2e3ca61d5c1d058ae9d56e3d74e9340ac9c5e47802',
// type: 'ed25519_signature'
// },
// events: [
// {
// guid: [Object],
// sequence_number: '0',
// type: '0x1::coin::WithdrawEvent',
// data: [Object]
// },
// {
// guid: [Object],
// sequence_number: '1',
// type: '0x1::coin::DepositEvent',
// data: [Object]
// },
// {
// guid: [Object],
// sequence_number: '0',
// type: '0x1::transaction_fee::FeeStatement',
// data: [Object]
// }
// ],
// timestamp: '1726236043771659',
// type: 'user_transaction'
// }