@aptos-labs/derived-wallet-ethereum

中文文档
0.9.2发布于 2026/05/09Apache-2.0TypeScriptESM + CJS构建来源已验证近 30 天下载 1.8万

轻量级加载包 @aptos-labs/wallet-adapter-反应 使功能能够使用 EVM 钱包作为本地的 Aptos 钱包

中文使用文档
文档目录8 节
  1. EVM 钱包如何使用钱包适配器 ?
  2. 如何将EVM钱包整合到我的DApp中?
  3. 使用量
  4. 备选案文1:自动钱包检测(建议用于dApps)
  5. 备选方案2:程序签名(用于节点/脚本)
  6. 提交交易(与收费人)
  7. 考虑因素
  8. 资源

衍生钱包

轻量级加载包 @aptos-labs/wallet-adapter-反应 使功能能够使用 EVM 钱包作为本地的 Aptos 钱包

EVM 钱包如何使用钱包适配器 ?

当用户使用支持的EVM钱包连接到dApp时,适配器会计算用户的可衍生摘要账户(DAA)地址并转换EVM账户,以遵循Aptos钱包标准接口. 这确保了开发者和终端用户与钱包的无缝互动.

DAA 地址的计算使用 authenticationFunction 编辑 accountIdentity,两者在本包中定义:

  • authenticationFunction:这是一个存在于链上并用于验证EVM账户签名的函数. 该函数存在于 0x1::ethereum_derivable_account::authenticate
  • accountIdentity:这是用于验证EVM账户签名的链上认证功能中使用的账户的身份. EVM DAA账户身份格式为: ${originWalletAddress}${domain}

如何将EVM钱包整合到我的DApp中?

包裹跟随 EIP-1193 (英语) 以发现钱包. 目前,已测试和支持跨链账户的钱包有:

阿普托斯·德文内Aptos 测试网阿普托斯主网
元数据✅✅✅
幽灵✅✅✅
监狱✅✅✅
OKX 单曲✅✅✅
出狱✅✅✅
后包装✅✅✅

使用量

在用户连接其EVM钱包的dApp构建时使用这种方法.

  1. 安装软件包
npm install @aptos-labs/wallet-adapter-react @aptos-labs/derived-wallet-ethereum
  1. 设置自动检测
import { AptosWalletAdapterProvider, Network } from "@aptos-labs/wallet-adapter-react";
import { setupAutomaticEthereumWalletDerivation } from "@aptos-labs/derived-wallet-ethereum";

setupAutomaticEthereumWalletDerivation({ defaultNetwork: Network.TESTNET });

// ...

<AptosWalletAdapterProvider
  dappConfig={{
    network: Network.TESTNET,
  }}
>
  {children}
</AptosWalletAdapterProvider>

备选方案2:程序签名(用于节点/脚本)

在服务器侧签名或脚本中直接访问Ethereum私人密钥时使用这种方法.

npm install @aptos-labs/derived-wallet-ethereum
import { Wallet } from "ethers";
import { EIP1193DerivedAccount } from "@aptos-labs/derived-wallet-ethereum";
import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";

// Create or load an Ethereum wallet
const ethereumWallet = Wallet.createRandom();

// Create the derived account
const account = new EIP1193DerivedAccount({
  ethereumWallet,
  domain: "my-dapp.com",
});

// Get the derived Aptos address
console.log("Aptos address:", account.accountAddress.toString());

// Sign and submit a transaction
const aptos = new Aptos(new AptosConfig({ network: Network.TESTNET }));

const transaction = await aptos.transaction.build.simple({
  sender: account.accountAddress,
  data: {
    function: "0x1::aptos_account::transfer",
    functionArguments: [recipientAddress, 100],
  },
});

const response = await aptos.signAndSubmitTransaction({
  signer: account,
  transaction,
});

console.log("Transaction hash:", response.hash);

提交交易(与收费人)

在大多数情况下,允许用户将带有EVM账户的交易提交给Aptos链,需要使用赞助商交易. 这是因为EVM账户可能没有APT支付天然气. 因此,DApp应考虑维持一个赞助人账户来赞助交易.

import React from "react";
import { useWallet } from "@aptos-labs/wallet-adapter-react";
import {
  Aptos,
  AptosConfig,
  Network,
  Ed25519PrivateKey,
  PrivateKey,
  PrivateKeyVariants,
  Account,
} from "@aptos-labs/ts-sdk";

// Initialize an Aptos client
const config = new AptosConfig({ network: Network.TESTNET });
const aptos = new Aptos(config);

// Generate a sponsor account or use an existing account
const privateKey = new Ed25519PrivateKey(
  PrivateKey.formatPrivateKey("0x123", PrivateKeyVariants.Ed25519),
);
const sponsor = Account.fromPrivateKey({ privateKey });

const SignAndSubmit = () => {
  const { account, signTransaction } = useWallet();

  const onSignAndSubmitTransaction = async () => {
    if (!account) {
      throw new Error(
        "Account is not connected and unable to sign transaction",
      );
    }

    try {
      // Build the transaction
      const rawTransaction = await aptos.transaction.build.simple({
        data: {
          function: "0x1::aptos_account::transfer",
          functionArguments: [account.address.toString(), 1],
        },
        sender: account.address,
        withFeePayer: true,
      });

      // Send it to the wallet to sign
      const walletSignedTransaction = await signTransaction({
        transactionOrPayload: rawTransaction,
      });

      // Sponsor account signs the transaction to pay for the gas fees
      const sponsorAuthenticator = aptos.transaction.signAsFeePayer({
        signer: sponsor,
        transaction: rawTransaction,
      });

      // Submit the transaction to chain
      const txnSubmitted = await aptosClient(network).transaction.submit.simple(
        {
          transaction: rawTransaction,
          senderAuthenticator: walletSignedTransaction.authenticator,
          feePayerAuthenticator: sponsorAuthenticator,
        },
      );

      // if you want to wait for transaction
      await aptos.waitForTransaction({ transactionHash: txnSubmitted.hash });
    } catch (error) {
      console.error(error);
    }
  };

  return (
    <button onClick={onSignAndSubmitTransaction}>
      Sign and submit transaction
    </button>
  );
};

export default SignAndSubmit;

考虑因素

  • 由于来源钱包最有可能没有与Aptos集成,所以在钱包中无法使用模拟.
  • 软件包保留了原产地钱包,因此开发人员应该能够通过:
import { useWallet } from "@aptos-labs/wallet-adapter-react";

const { isEIP1193DerivedWallet } = useWallet();

if (isEIP1193DerivedWallet(wallet)) {
  const [activeAccount] = await wallet.eip1193Ethers.listAccounts();
}

资源

版本与发布记录

@aptos-labs/derived-wallet-ethereum 共发布 29 个版本,首次发布于 2025/03/21;过去 12 个月发布了 13 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.9.2latest2026/05/096 个月前
0.9.12026/03/107 个月前
0.9.02026/01/279 个月前
0.8.62026/01/279 个月前
0.8.6-alpha.4alpha2026/01/239 个月前
0.8.6-alpha.32026/01/239 个月前

关于 @aptos-labs/derived-wallet-ethereum 的常见问题

@aptos-labs/derived-wallet-ethereum 是什么?

轻量级加载包 @aptos-labs/wallet-adapter-反应 使功能能够使用 EVM 钱包作为本地的 Aptos 钱包

如何安装 @aptos-labs/derived-wallet-ethereum?

在项目目录运行 npm install @aptos-labs/derived-wallet-ethereum,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@aptos-labs/ts-sdk(^5.1.1)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aptos-labs/derived-wallet-ethereum 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aptos-labs/derived-wallet-ethereum 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@aptos-labs/derived-wallet-ethereum 可以商用吗?

@aptos-labs/derived-wallet-ethereum 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aptos-labs/derived-wallet-ethereum 的下载量有多少?

根据 npm 官方下载统计,@aptos-labs/derived-wallet-ethereum 在 2026/10/07 – 2026/11/05 这 30 天内被下载 17,663 次,日均约 589 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aptos-labs/derived-wallet-ethereum 还在维护吗?

最新版本 0.9.2 发布于 2026/05/09(6 个月前);至今共发布 29 个版本,其中过去 12 个月发布了 13 个;首次发布于 2025/03/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。