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-sdkfor 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
Ethers-style mental model
Section titled “Ethers-style mental model”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();Current Aptos SDK flow
Section titled “Current Aptos SDK flow”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 });What to update in your instincts
Section titled “What to update in your instincts”- 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.aptosstyle 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.