Documentation Index
Fetch the complete documentation index at: https://docs.magicblock.gg/llms.txt
Use this file to discover all available pages before exploring further.
Orca
Orca는 Solana 블록체인에서 암호화폐를 가장 쉽게 거래할 수 있는 곳 중 하나입니다. 자세한 설명은 공식 Orca 문서와 Orca Developer Portal을 참고하세요.
스왑 수행하기
- 기본 계정과 RPC 클라이언트 인스턴스를 전달해 IDex 인스턴스를 생성합니다:
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);
ORCA/USDC whirlpool 포지션 열기 및 유동성 추가
아래 예시는 풀에 5 ORCA와 5 USDC의 유동성을 추가하고, 해당 포지션을 나타내는 metaplex NFT를 발행하는 방법입니다。
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);