@aptos-labs/derived-wallet-solana

中文文档
0.12.2发布于 2026/03/10Apache-2.0TypeScriptESM + CJS构建来源已验证近 30 天下载 1.1万

轻量级加载包 @aptos-labs/wallet-adapter-反应 使功能能够使用 Solana 钱包作为原生 Aptos 钱包

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

衍生钱包索拉纳

轻量级加载包 @aptos-labs/wallet-adapter-反应 使功能能够使用 Solana 钱包作为原生 Aptos 钱包

索拉纳钱包如何使用钱包适配器??

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

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

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

如何把索拉纳的钱包纳入我的DApp?

钱包适配器跟随 索拉纳钱包标准 以发现钱包. 目前,已测试和支持跨链账户的钱包有:

阿普托斯·德文内Aptos 测试网阿普托斯主网
幽灵✅✅✅
索夫莱尔✅✅✅
后包装✅✅✅
OKX 单曲✅✅✅

使用量

说明: 编程器硬件钱包目前不支持索拉纳衍生出Aptos账户所需的脱链信件签名. 这是莱德格索拉纳应用的已知限制. 用户应当使用软件钱包(Phantom,Solflare等)而无需硬件设备连接.

在用户连接其索拉纳钱包的 dApp 构建时使用此方法 .

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

setupAutomaticSolanaWalletDerivation({ defaultNetwork: Network.TESTNET });

// ...

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

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

在服务器侧签名或脚本中使用此方法, 您可以直接访问 Solana keypair .

npm install @aptos-labs/derived-wallet-solana
import { Keypair } from "@solana/web3.js";
import { SolanaDerivedAccount } from "@aptos-labs/derived-wallet-solana";
import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";

// Create or load a Solana keypair
const solanaKeypair = Keypair.generate();

// Create the derived account
const account = new SolanaDerivedAccount({
  solanaKeypair,
  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);

提交交易(与收费人)

在大多数情况下,允许用户将索拉纳账户的交易提交到Aptos链,需要使用赞助商交易. 这是因为索拉纳账户可能没有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 { isSolanaDerivedWallet } = useWallet();

if (isSolanaDerivedWallet(wallet)) {
  const publicKey = wallet.solanaWallet.publicKey;
}

资源

版本与发布记录

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

版本发布日期距今
0.12.2latest2026/03/107 个月前
0.12.12026/03/048 个月前
0.12.02026/01/279 个月前
0.11.02026/01/279 个月前
0.11.0-alpha.4alpha2026/01/239 个月前
0.11.0-alpha.32026/01/239 个月前

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

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

轻量级加载包 @aptos-labs/wallet-adapter-反应 使功能能够使用 Solana 钱包作为原生 Aptos 钱包

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

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

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

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

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

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

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

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

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

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

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

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