Skip to content

Migration Guide

If you are coming from an earlier version 1.x.x of aptos, you will need to make the following updates.

The TypeScript SDK V2 is under a new GitHub repo and with a new package name - @aptos-labs/ts-sdk

Terminal window
npm i @aptos-labs/ts-sdk

Remove all <*>Client modules (i.e AptosClient, FaucetClient, CoinClient, etc.) and replace with an Aptos entry point class

V1

const faucetClient = new FaucetClient(NODE_URL, FAUCET_URL);
const aptosClient = new AptosClient(NODE_URL);
const indexerClient = new IndexerClient(INDEXER_URL);
const tokenClient = new TokenClient(aptosClient);

V2

const aptos = new Aptos();
// make queries
const fund = await aptos.fundAccount({ accountAddress: "0x123", amount: 100 });
const modules = await aptos.getAccountModules({ accountAddress: "0x123" });
const tokens = await aptos.getAccountOwnedTokens({ accountAddress: "0x123" });

To configure your Aptos client, you can use an AptosConfig object.

const aptosConfig = new AptosConfig({ network: Network.DEVNET }); // default to devnet
const aptos = new Aptos(config);

Removed all separate transaction functions in favor of a more simplified and friendlier transaction builder flow

V1

const aptosClient = new AptosClient(NODE_URL);
// bcs serialized arguments payload
const entryFunctionPayload =
new TxnBuilderTypes.TransactionPayloadEntryFunction(
TxnBuilderTypes.EntryFunction.natural(
"0x1::aptos_account",
"transfer",
[],
[bcsToBytes(TxnBuilderTypes.AccountAddress.fromHex(receiver.address()))],
),
);
// generate a raw transaction
const transaction = await client.generateRawTransaction(
sender.address(),
entryFunctionPayload,
);
// non-serialized arguments payload
const payload: Gen.TransactionPayload = {
type: "entry_function_payload",
function: "0x1::aptos_account::transfer",
type_arguments: [],
arguments: [account2.address().hex(), 100000],
};
// generate a raw transaction
const transaction = await client.generateTransaction(
account1.address(),
payload,
);
// sign transaction
const signedTransaction = AptosClient.generateBCSTransaction(
sender,
transaction,
);
// submit transaction
const txn = await client.submitSignedBCSTransaction(signedTransaction);

V2

const aptos = new Aptos();
// non-serialized arguments transaction
const transaction = await aptos.build.transaction({
sender: alice.accountAddress,
data: {
function: "0x1::coin::transfer",
typeArguments: ["0x1::aptos_coin::AptosCoin"],
functionArguments: [bobAddress, 100],
},
});
// bcs serialized arguments transaction
const transaction = await aptos.build.transaction({
sender: alice.accountAddress,
data: {
function: "0x1::coin::transfer",
typeArguments: [parseTypeTag("0x1::aptos_coin::AptosCoin")],
functionArguments: [bobAddress, new U64(100)],
},
});
// sign transaction
const senderAuthenticator = aptos.sign.transaction({
signer: alice,
transaction,
});
// submit transaction
const committedTransaction = await aptos.submit.transaction({
transaction,
senderAuthenticator,
});

Rename AptosAccount to Account and use static methods to generate / derive an account

V1

// generate a new account (or key pair) OR derive from private key OR derive from private key and address
const account = new AptosAccount(); // supports only Legacy Ed25519
// derive account from derivation path
const account = AptosAccount.fromDerivePath(..)

V2

// generate a new account (or key pair)
const account = Account.generate(); // defaults to Legacy Ed25519
const account = Account.generate({ scheme: SigningSchemeInput.Secp256k1Ecdsa }); // Single Sender Secp256k1
const account = Account.generate({
scheme: SigningSchemeInput.Ed25519,
legacy: false,
}); // Single Sender Ed25519
// derive account from private key
const account = Account.fromPrivateKey({ privateKey });
// derive account from private key and address
const account = Account.fromPrivateKeyAndAddress({
privateKey,
address: accountAddress,
});
// derive account from derivation path
const account = Account.fromDerivationPath({
path,
mnemonic,
scheme: SigningSchemeInput.Ed25519,
});