Aptos 跨钱核心
使用 Aptos 块链进行跨链 USDC 传输的 SDK 类型 圆形的 CCTP (Cross-Chain转让协议) 虫洞 桥.
概览
这个软件包可以在Aptos和其他支持的区块链之间实现无缝的USDC传输. 它总结了跨链交易的复杂性,为:
- 转账: 将USDC从外部链条(索拉纳、伊特鲁姆等)移动到Aptos
- 退 款: 将 USDC 从 Aptos 移动到外部链条
- 余额查询: 检查所有支持链的USDC余额
- 引文估计: 在执行前获取转账费用和手续费
建筑
flowchart TB
subgraph core [CrossChainCore]
CCCore[CrossChainCore Class]
Config[Config - chains/tokens]
Utils[Utils - logger, balance]
end
subgraph provider [WormholeProvider]
WH[WormholeProvider]
Quote[getQuote]
Transfer[transfer]
Withdraw[withdraw]
end
subgraph signers [Signers]
MainSigner[Signer - Router]
SolanaSig[SolanaSigner]
EthSig[EthereumSigner]
AptosSig[AptosSigner]
SuiSig[SuiSigner]
AptosLocal[AptosLocalSigner]
end
CCCore --> WH
WH --> MainSigner
MainSigner --> SolanaSig
MainSigner --> EthSig
MainSigner --> AptosSig
MainSigner --> SuiSig
支持的链条
| 网络 | 主网链标识 | 测试网链 ID | A. 背景情况 |
|---|---|---|---|
| 自动 | 1个 | 2个 | 目标/来源 |
| 索拉纳 | 主网-β | 脱网 | 来源/来源 |
| 以利亚 | 1个 | 11155111(塞波利亚) | 来源/来源 |
| 基础 | 8453 (英语) | 84532 (塞波利亚) | 来源/来源 |
| 坐标 | 42161 (韩语) | 421614 (塞波利亚) | 来源/来源 |
| 雪崩 | 第43114号 | 43113 (富吉语) | 来源/来源 |
| 多边形 | 137国 | 80002 (阿莫伊语) | 来源/来源 |
| 苏 | 主网 | 测试网 | 来源/来源 |
支持的托肯斯语Name
目前,仅 USDC 美洲金融共同体 通过Circle's Cross-Chain 传输协议(CCTP)支持.
如何运作
- 初始化创建一个
CrossChainCore使用您的网络配置 - 获取提供者: 获取
WormholeProvider用于执行转账 - 获取引用: 计算费用和转账参数
- 执行传输: 签署并提交跨链交易
- 等待完成时: SDK 处理验证和在目的地链上索赔
转移流量(外部链-平面)
Source Chain Wallet → CCTP Burn → Wormhole Attestation → Aptos Claim → Aptos Wallet
取出流量(阿普托斯-外部链)
Aptos Wallet → CCTP Burn → Wormhole Attestation → External Chain Claim → Destination Wallet
签名人
A 类 签名 是处理特定区块链交易签名和提交内容的组件。 SDK使用签名器与Wormhole桥协议交互,执行 SignAndSendSigner 来自 Wormhole SDK 的接口.
可用的签名符
| 签名 | 链条 | 说明 |
|---|---|---|
Signer | 全体 | 根据上下文向链式特定标志代表发送的路由器符号 |
SolanaSigner | 索拉纳 | 通过 SolanaDerivedWallet |
EthereumSigner | EVM链 | 通过 EIP1193DerivedWallet |
AptosSigner | 自动 | 通过钱包适配器( 用户交互) 签名交易 |
AptosLocalSigner | 自动 | 与本地交易签名 Account (方案) |
SuiSigner | 苏 | 通过 SuiDerivedWallet |
为什么是两个Aptos的签名人?
跨链转移涉及两个不同的阶段,每个阶段都有不同的签署要求:
两级移交进程
- 启动阶段 (源链):用户在源链上燃烧USDC并创建证明
- 索赔阶段 (调制链): 经认证的USDC在目的地链上被铸造
这些阶段需要不同类型的签字:
| 阶段 | 签名 | 用户交互 | 使用大小写 |
|---|---|---|---|
| 启动( 退出) | AptosSigner | 所需时间 | 用户从 Aptos 钱包中燃烧 USDC |
| 索赔(转让) | AptosLocalSigner | 自动 | 代表用户的USDC索赔 |
Aptos 符号
用于 退 款 用户从 Aptos 钱包启动交易时:
- 需要钱包适配器连接和用户批准
- 用户必须明确签名才能烧掉 USDC
- 标准钱包交互流量
本地标志
用于 转让 uSDC从另一条链上到达的Aptos:
- 与本地
Account对象 - 不需要用户交互
- 启用无需用户动作的自动要求
衍生的钱包优势
当从外部链(索拉纳、伊特鲁姆等)转移到Aptos时,SDK使用 衍生钱包。一个衍生的钱包创建了与用户外部链条公钥在数学上链接的Aptos账户地址.
这意味着用户不需要现有的Aptos钱包来接收资金!
流动是这样的:
- 用户连接他们的 Solana 钱包( 例如)
- SDK从索拉纳的公用钥匙得到相应的Aptos地址
- 用户在 Solana 上签名燃烧交易
- Aptos 自动索赔USDC 使用
AptosLocalSigner - 资金出现在衍生的Aptos地址中,由同一索拉纳钥匙控制
这种设计可以实现无缝上载:用户只能使用现有的外链钱包将USDC转移到Aptos上.
安装
pnpm add @aptos-labs/cross-chain-core
或者说
npm install @aptos-labs/cross-chain-core
快速启动
import { CrossChainCore, Network } from "@aptos-labs/cross-chain-core";
// Initialize the core with network configuration
const crossChainCore = new CrossChainCore({
dappConfig: {
aptosNetwork: Network.TESTNET,
// Optional: Custom Solana RPC
solanaConfig: {
rpc: "https://api.devnet.solana.com",
},
},
});
// Get the Wormhole provider
const provider = crossChainCore.getProvider("Wormhole");
API 参考
十字铸币局
跨链业务的主要切入点.
const core = new CrossChainCore({
dappConfig: {
aptosNetwork: Network.TESTNET | Network.MAINNET,
disableTelemetry?: boolean,
solanaConfig?: {
rpc?: string,
priorityFeeConfig?: {
percentile?: number,
percentileMultiple?: number,
min?: number,
max?: number,
}
}
}
});
getProvider(providerType: "Wormhole")
返回执行跨链传输的提供者实例.
const provider = core.getProvider("Wormhole");
getWalletUSDCBalance(walletAddress: string, chain: Chain)
在任何支持的链上获取 USDC 的钱包余额 .
const balance = await core.getWalletUSDCBalance(
"0x1234...", // wallet address
"Solana", // chain name
);
console.log(`Balance: ${balance} USDC`);
虫洞提供器
getQuote(params)
计算转账费用并在执行前获得报价.
const quote = await provider.getQuote({
// Amount to transfer (as string, e.g., "100.50")
amount: "100",
// The external chain involved
originChain: "Solana",
// Transaction type:
// - "transfer": External chain → Aptos
// - "withdraw": Aptos → External chain
type: "transfer",
});
回返: 有收费、估计时间和转账细节的引文对象.
transfer(params)
将 USDC 从一个外部链钱包转移到一个 Aptos 钱包 .
const { originChainTxnId, destinationChainTxnId } = await provider.transfer({
// Source blockchain
sourceChain: "Solana",
// Source chain wallet adapter (must support signing)
wallet: solanaWalletAdapter,
// Destination Aptos address
destinationAddress: "0x1234...",
// Aptos account to sign the claim transaction
mainSigner: aptosAccount,
// Optional: Amount (if not using a previous quote)
amount: "100",
// Optional: Sponsor account for gas fees
sponsorAccount: feePayerAccount,
});
console.log(`Source TX: ${originChainTxnId}`);
console.log(`Destination TX: ${destinationChainTxnId}`);
回返数字 :
originChainTxnId: 源链上交易散列destinationChainTxnId: Aptos 目的地链上的散列交易
withdraw(params)
将 USDC 从 Aptos 钱包撤回到外部链钱包 .
const { originChainTxnId, destinationChainTxnId } = await provider.withdraw({
// Destination blockchain
sourceChain: "Ethereum",
// Aptos wallet adapter
wallet: aptosWalletAdapter,
// Destination address on the external chain
destinationAddress: "0xabcd...",
// Optional: Sponsor account for gas fees
sponsorAccount: feePayerAccount,
});
console.log(`Aptos TX: ${originChainTxnId}`);
console.log(`Destination TX: ${destinationChainTxnId}`);
回返数字 :
originChainTxnId平面散列交易destinationChainTxnId: 目的地链上的散列交易
服务器-Side Solana索赔(备选)
在将USDC从Aptos撤回索拉纳时,索拉纳公司的索赔交易需要签名. 默认情况下,用户的钱包会在此交易上签名. 然而,对于更平滑的用户体验,您可以配置一个 服务器端索赔 你的后端签下了索拉纳的债权交易.
福利:
- 用户只签名一次( Aptos 刻录交易)
- ~60 第二级证明后没有第二个钱包跳出
- 无缝一击取出流量
要启用服务器端的主张, 配置 serverClaimUrl 在你身边 solanaConfig数字 :
const crossChainCore = new CrossChainCore({
dappConfig: {
aptosNetwork: Network.MAINNET,
solanaConfig: {
serverClaimUrl: "/api/claim-withdraw", // Your API endpoint
},
},
});
在配置时, SDK 在确认和验证 Aptos 刻录交易后, 将会自动 POST 给您的服务器端点的验证收据 。 您的服务器然后使用一个有资金的 keypair 签名并提交 Solana 索赔交易 .
📖 见 (原始内容存档于2012-10-12). ServerSide Solana SIGNER.md 完整实施指南.
链式ID映射
SDK提供从Ethereum链式ID到链式配置的映射:
import {
EthereumChainIdToTestnetChain,
EthereumChainIdToMainnetChain,
} from "@aptos-labs/cross-chain-core";
// Get chain config from chain ID
const sepoliaConfig = EthereumChainIdToTestnetChain["11155111"];
const ethereumConfig = EthereumChainIdToMainnetChain["1"];
处理错误
SDK 为常见问题投出描述性错误:
try {
await provider.transfer({ ... });
} catch (error) {
if (error.message.includes("Unsupported chain")) {
// Handle unsupported chain
} else if (error.message.includes("User rejected")) {
// Handle user rejection
}
}
所需资源
- 节点.js 18+
@aptos-labs/ts-sdk^ 5.1.1(对老年人的依赖)@aptos-labs/wallet-adapter-react- 这个软件包旨在与Aptos钱包适配器生态系统合作,特别是使用衍生的钱包适配器(@aptos-labs/derived-wallet-solana, (中文(简体) ),@aptos-labs/derived-wallet-ethereum, (中文(简体) ),@aptos-labs/derived-wallet-sui属于该项目的一部分