Orca
Orca 是 Solana 区块链上最易用的加密货币交易平台之一。更详细的介绍请参阅官方 Orca 文档 和 Orca Developer Portal。执行一次交换
- 创建一个 IDex 实例,并传入默认账户和 RPC 客户端实例:
- 获取 token 信息:
- 查找 whirlpool:
- 获取 1 USDC 的交换报价:
- 创建交换交易:
- 签名并发送交换交易:
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
Debugging an error? Install the MagicBlock AI skill and ask your coding agent instead.
SDK 原生支持 Orca,并提供便捷的工具方法来构建交换、开仓、资金管理和与 Whirlpools 交互所需的交易。
IDex dex = new OrcaDex(
WalletH.Account,
WalletH.Rpc
)
TokenData tokenA = await dex.GetTokenBySymbol("USDC");
TokenData tokenB = await dex.GetTokenBySymbol("ORCA");
Pool whirlpool = await dex.FindWhirlpoolAddress(tokenA.MintAddress, tokenB.MintAddress)
SwapQuote swapQuote = await dex.GetSwapQuoteFromWhirlpool(
whirlpool.Address,
DecimalUtil.ToUlong(1, tokenA.Decimals),
tokenA.MintAddress,
slippageTolerance: 0.1,
);
var quote = DecimalUtil.FromBigInteger(swapQuote.EstimatedAmountOut, tokenB.Decimals);
Debug.Log(quote); // 预期收到的 Orca token 数量
Transaction tx = await dex.SwapWithQuote(
whirlpool,
swapQuote
);
await WalletH.Base.SignAndSendTransaction(tx);
OrcaDex dex = new OrcaDex(
WalletH.Account,
WalletH.Rpc
);
var orcaToken = await dex.GetTokenBySymbol("ORCA");
var usdcToken = await dex.GetTokenBySymbol("USDC");
var whirlpool = await dex.FindWhirlpoolAddress(
usdcToken.MintAddress,
orcaToken.MintAddress
);
Account mint = new Account();
Transaction tx = await dex.OpenPositionWithLiquidity(
whirlpool,
mint,
-1792,
1152,
DecimalUtil.ToUlong(5, tokenA.Decimals),
DecimalUtil.ToUlong(5, tokenB.Decimals),
commitment: Commitment.Confirmed
);
var txSer = tx.Build(new List<Account>() {
WalletH.Account,
mint
});
await WalletH.Base.SignAndSendTransaction(tx);
