From 14b820f95514e942ba436b485fd03ed8909998f6 Mon Sep 17 00:00:00 2001 From: Joaquim Verges Date: Thu, 24 Apr 2025 19:19:12 +1200 Subject: [PATCH] [SDK] Always checksum Account.address --- .changeset/shiny-pants-shout.md | 5 +++++ packages/thirdweb/src/adapters/ethers5.ts | 3 ++- packages/thirdweb/src/adapters/ethers6.ts | 3 ++- packages/thirdweb/src/wallets/coinbase/coinbase-web.ts | 2 +- packages/thirdweb/src/wallets/private-key.ts | 3 ++- packages/thirdweb/src/wallets/smart/index.ts | 2 +- packages/thirdweb/src/wallets/wallet-connect/controller.ts | 2 +- 7 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 .changeset/shiny-pants-shout.md diff --git a/.changeset/shiny-pants-shout.md b/.changeset/shiny-pants-shout.md new file mode 100644 index 00000000000..5c41f6408a4 --- /dev/null +++ b/.changeset/shiny-pants-shout.md @@ -0,0 +1,5 @@ +--- +"thirdweb": patch +--- + +Always checksum Account.address diff --git a/packages/thirdweb/src/adapters/ethers5.ts b/packages/thirdweb/src/adapters/ethers5.ts index 6faecfb5e5d..2af761ead4b 100644 --- a/packages/thirdweb/src/adapters/ethers5.ts +++ b/packages/thirdweb/src/adapters/ethers5.ts @@ -14,6 +14,7 @@ import { TransactionTypeMap, } from "../transaction/prepare-transaction.js"; import type { SerializableTransaction } from "../transaction/serialize-transaction.js"; +import { getAddress } from "../utils/address.js"; import { toHex } from "../utils/encoding/hex.js"; import type { Account } from "../wallets/interfaces/wallet.js"; @@ -364,7 +365,7 @@ export async function fromEthersSigner( ): Promise { const address = await signer.getAddress(); const account: Account = { - address, + address: getAddress(address), signMessage: async ({ message }) => { return signer.signMessage( typeof message === "string" ? message : message.raw, diff --git a/packages/thirdweb/src/adapters/ethers6.ts b/packages/thirdweb/src/adapters/ethers6.ts index 4a2632501af..6bd1f471e92 100644 --- a/packages/thirdweb/src/adapters/ethers6.ts +++ b/packages/thirdweb/src/adapters/ethers6.ts @@ -10,6 +10,7 @@ import { type ThirdwebContract, getContract } from "../contract/contract.js"; import { toSerializableTransaction } from "../transaction/actions/to-serializable-transaction.js"; import type { PreparedTransaction } from "../transaction/prepare-transaction.js"; import type { SerializableTransaction } from "../transaction/serialize-transaction.js"; +import { getAddress } from "../utils/address.js"; import { toHex } from "../utils/encoding/hex.js"; import { resolvePromisedValue } from "../utils/promise/resolve-promised-value.js"; import type { Account } from "../wallets/interfaces/wallet.js"; @@ -327,7 +328,7 @@ export async function fromEthersSigner( ): Promise { const address = await signer.getAddress(); const account: Account = { - address, + address: getAddress(address), signMessage: async ({ message }) => { return signer.signMessage( typeof message === "string" ? message : message.raw, diff --git a/packages/thirdweb/src/wallets/coinbase/coinbase-web.ts b/packages/thirdweb/src/wallets/coinbase/coinbase-web.ts index 1b0a75ea997..1897f20a74f 100644 --- a/packages/thirdweb/src/wallets/coinbase/coinbase-web.ts +++ b/packages/thirdweb/src/wallets/coinbase/coinbase-web.ts @@ -284,7 +284,7 @@ function createAccount({ client: ThirdwebClient; }) { const account: Account = { - address, + address: getAddress(address), async sendTransaction(tx: SendTransactionOption) { const transactionHash = (await provider.request({ method: "eth_sendTransaction", diff --git a/packages/thirdweb/src/wallets/private-key.ts b/packages/thirdweb/src/wallets/private-key.ts index efd8565b6cd..71af68b587a 100644 --- a/packages/thirdweb/src/wallets/private-key.ts +++ b/packages/thirdweb/src/wallets/private-key.ts @@ -10,6 +10,7 @@ import { getRpcClient } from "../rpc/rpc.js"; import type { AuthorizationRequest } from "../transaction/actions/eip7702/authorization.js"; import { signTransaction } from "../transaction/actions/sign-transaction.js"; import type { SerializableTransaction } from "../transaction/serialize-transaction.js"; +import { getAddress } from "../utils/address.js"; import { type Hex, toHex } from "../utils/encoding/hex.js"; import { signMessage } from "../utils/signatures/sign-message.js"; import { signTypedData } from "../utils/signatures/sign-typed-data.js"; @@ -79,7 +80,7 @@ export function privateKeyToAccount( const address = publicKeyToAddress(publicKey); const account = { - address, + address: getAddress(address), sendTransaction: async ( tx: SerializableTransaction & { chainId: number }, ) => { diff --git a/packages/thirdweb/src/wallets/smart/index.ts b/packages/thirdweb/src/wallets/smart/index.ts index 9f26a788fbb..f6bb8501695 100644 --- a/packages/thirdweb/src/wallets/smart/index.ts +++ b/packages/thirdweb/src/wallets/smart/index.ts @@ -421,7 +421,7 @@ function createZkSyncAccount(args: { }): Account { const { creationOptions, connectionOptions, chain } = args; const account: Account = { - address: connectionOptions.personalAccount.address, + address: getAddress(connectionOptions.personalAccount.address), async sendTransaction(transaction: SendTransactionOption) { // override passed tx, we have to refetch gas and fees always const prepTx = { diff --git a/packages/thirdweb/src/wallets/wallet-connect/controller.ts b/packages/thirdweb/src/wallets/wallet-connect/controller.ts index 34015022db6..07ffe1dba4d 100644 --- a/packages/thirdweb/src/wallets/wallet-connect/controller.ts +++ b/packages/thirdweb/src/wallets/wallet-connect/controller.ts @@ -333,7 +333,7 @@ function createAccount({ client: ThirdwebClient; }) { const account: Account = { - address: address, + address: getAddress(address), async sendTransaction(tx: SendTransactionOption) { const transactionHash = (await provider.request({ method: "eth_sendTransaction",