Skip to content

Ethers.js vs the Aptos TS SDK

Ethereum frontend developers usually start with Ethers.js, a provider, a signer, and a contract instance. On Aptos, the equivalent stack is:

  • @aptos-labs/ts-sdk for reading data, building transactions, and submitting them
  • Wallet Adapter for browser wallet integration using the current AIP-62 standard
  • Forklift for a Hardhat/Foundry-like contract development workflow
const provider = new ethers.JsonRpcProvider(rpcUrl);
const wallet = new ethers.Wallet(privateKey, provider);
const tx = await wallet.sendTransaction({
to: recipient,
value: ethers.parseEther("1"),
});
await tx.wait();
import {
Account,
Aptos,
AptosConfig,
Network,
} from "@aptos-labs/ts-sdk";
const aptos = new Aptos(new AptosConfig({ network: Network.TESTNET }));
const alice = Account.generate();
const bob = Account.generate();
await aptos.fundAccount({
accountAddress: alice.accountAddress,
amount: 100_000_000,
});
const transaction = await aptos.transaction.build.simple({
sender: alice.accountAddress,
data: {
function: "0x1::aptos_account::transfer",
functionArguments: [bob.accountAddress, 1_000],
},
});
const pending = await aptos.signAndSubmitTransaction({
signer: alice,
transaction,
});
await aptos.waitForTransaction({ transactionHash: pending.hash });
  • Build the transaction first, then sign and submit it.
  • Always call waitForTransaction() after submission.
  • Use the Wallet Adapter for browser wallets instead of old window.aptos style globals.
  • Use Forklift when you want a contract-development workflow closer to Hardhat or Foundry.

For more advanced flows, continue with building transactions, sponsored transactions, and wallet adapter dapp integration.