|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
KLAYswap をプログラム的にスマート コントラクトに統合することで、ユーザーは分散型アプリケーション内でトークンをシームレスに売買できるようになります。このチュートリアルでは、KLAYswap V2 の使用に焦点を当て、Klaytn Cypress (メインネット) ネットワーク上でトークンを交換する方法を提供します。 KLAYswap UniversalRouter は、これらのスワップを容易にするために、swapExactETHForTokens、swapExactTokensForTokens、swapExactTokensForETH などのさまざまなメソッドを提供します。ユーザーは、スワップを開始する前に、ルーターが指定された量のトークンにアクセスすることを承認する必要があります。このガイドには、完全に機能する例、サードウェブ CLI を使用して MiniKLAYswap コントラクトをデプロイする手順、ダッシュボードと Klaytnscope を使用してスワップ操作を実行するためのステップバイステップの手順が含まれています。
Integrating KLAYswap V2 into Smart Contracts: A Comprehensive Guide for Developers
KLAYswap V2 のスマート コントラクトへの統合: 開発者向けの包括的なガイド
Introduction
導入
For developers seeking to enhance the functionality of their decentralized applications (dApps), integrating automated market maker (AMM) protocols such as KLAYswap becomes crucial. This integration enables the seamless swapping of tokens within dApps, enhancing user experience and expanding service offerings.
分散型アプリケーション (dApp) の機能を強化しようとしている開発者にとって、KLAYswap などの自動マーケットメーカー (AMM) プロトコルの統合は重要になります。この統合により、dApps 内でのトークンのシームレスな交換が可能になり、ユーザー エクスペリエンスが向上し、サービス提供が拡大されます。
Understanding KLAYswap
KLAYswap を理解する
KLAYswap is an AMM protocol designed specifically for the Klaytn network. It operates as a decentralized exchange (DEX), facilitating instant token swaps by relying on on-chain liquidity pools established by liquidity providers. Unlike traditional order book structures, KLAYswap's liquidity pools allow users to trade tokens directly with the pool, eliminating the need for counterparties.
KLAYswap は、Klaytn ネットワーク専用に設計された AMM プロトコルです。分散型取引所 (DEX) として動作し、流動性プロバイダーによって確立されたオンチェーンの流動性プールに依存することで、即時トークンのスワップを促進します。従来のオーダーブック構造とは異なり、KLAYswap の流動性プールを使用すると、ユーザーはトークンをプールと直接取引できるため、取引相手の必要がなくなります。
Benefits of Integrating KLAYswap V2
KLAYswap V2 を統合する利点
Integrating KLAYswap V2 into smart contracts provides numerous advantages:
KLAYswap V2 をスマート コントラクトに統合すると、次のような多くの利点が得られます。
- Seamless Token Swapping: Users can conveniently swap tokens directly within your dApp without leaving the interface.
- Enhanced User Experience: By incorporating KLAYswap, you can offer users a more intuitive and efficient trading experience.
- Expanded Functionality: Integrate additional services around specific ERC20 and KIP7 tokens, such as enabling token purchases or lending.
Technical Integration Details
シームレスなトークン スワッピング: ユーザーはインターフェイスを離れることなく、dApp 内で直接トークンを簡単に交換できます。強化されたユーザー エクスペリエンス: KLAYswap を組み込むことで、より直感的で効率的な取引エクスペリエンスをユーザーに提供できます。機能の拡張: 特定の ERC20 および KIP7 トークンに関する追加サービスを統合します。 、トークンの購入や融資の有効化など。技術的統合の詳細
To programmatically integrate KLAYswap V2 into your smart contract, follow these steps:
KLAYswap V2 をプログラム的にスマート コントラクトに統合するには、次の手順に従います。
1. Prerequisites:
1. 前提条件:
- Proficiency in smart contract development.
- Familiarity with smart contract development environments (e.g., thirdweb).
2. KLAYswap Universal Router:
スマート コントラクト開発の習熟度。スマート コントラクト開発環境 (サードウェブなど) に精通していること。2. KLAYswap ユニバーサルルーター:
- Utilize the KLAYswap router to access a range of methods for secure token swapping.
- Before executing any swap method, the user must authorize the router to access the desired amount of tokens.
3. Token Swap Methods:
KLAYswap ルーターを利用して、安全なトークン スワッピングのさまざまなメソッドにアクセスします。スワップ メソッドを実行する前に、ユーザーはルーターが必要な量のトークンにアクセスすることを承認する必要があります。トークンスワップ方法:
- swapExactETHForTokens: Swaps an exact amount of KLAY for tokens, maximizing the output tokens along the specified path.
- swapExactTokensForTokens: Swaps an exact amount of input tokens for tokens, maximizing the output tokens along the specified path.
- swapExactTokensForETH: Swaps an exact amount of tokens for ETH, maximizing the ETH output along the specified path.
4. Fully Working Example:
swapExactETHForTokens: 正確な量の KLAY をトークンに交換し、指定されたパスに沿って出力トークンを最大化します。swapExactTokensForTokens: 正確な量の入力トークンをトークンに交換し、指定されたパスに沿って出力トークンを最大化します。swapExactTokensForETH: 正確な量のトークンを交換します。 ETH、指定されたパスに沿って ETH 出力を最大化します。4.完全に動作する例:
// Sample smart contract showcasing KLAYswap operations// KLAYswap 操作を紹介するサンプル スマート コントラクト
pragma solidity ^0.8.20;プラグマ ソリッドティ ^0.8.20;
interface IKlaySwapRouterV2 {インターフェイス IKlaySwapRouterV2 {
struct SwapParams {struct SwapParams {
address to;アドレスへ;
address[] path;アドレス[] パス;
address[] pool;アドレス[]プール;
uint deadline;期限なし。
}}
}}
function swapExactTokensForTokens(関数 swapExactTokensForTokens(
uint256 amountIn,uint256 の量In、
uint256 amountOutMin,uint256 出力最小値、
SwapParams calldata pSwapParams 呼び出しデータ p
aramsSwapParams 呼び出しデータ パラメータ
) external returns (uint256[] memory amounts);) 外部戻り値 (uint256[] メモリ量);
function swapExactETHForTokens(関数 swapExactETHForTokens(
uint256 amountOutMin,uint256 出力最小値、
SwapParams calldata pSwapParams 呼び出しデータ p
) external payable returns (uint256[] memory amounts);) 外部買掛金リターン (uint256[] メモリ量);
function swapExactTokensForETH(関数 swapExactTokensForETH(
uint256 amountIn,uint256 の量In、
uint256 amountOutMin,uint256 出力最小値、
SwapParams calldata pSwapParams 呼び出しデータ p
) external returns (uint256[] memory amounts);) 外部戻り値 (uint256[] メモリ量);
}}
interface IERC20 {インターフェイス IERC20 {
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);関数 transferFrom(アドレス送信者, アドレス受信者, uint256 金額) 外部戻り値 (bool);
function approve(address spender, uint256 amount) external returns (bool);関数承認(アドレス消費者、uint256 金額) 外部戻り値 (ブール値);
}}
contract MiniKLAYSwap {MiniKLAYSwap を契約する {
address public constant routerAddress = 0xe0fbB27D0E7F3a397A67a9d4864D4f4DD7cF8cB9;アドレスパブリック定数 routerAddress = 0xe0fbB27D0E7F3a397A67a9d4864D4f4DD7cF8cB9;
address public constant MBX_TOKEN_ADDRESS = 0xD068c52d81f4409B9502dA926aCE3301cc41f623;アドレス公開定数 MBX_TOKEN_ADDRESS = 0xD068c52d81f4409B9502dA926aCE3301cc41f623;
address public constant sKAI_TOKEN_ADDRESS = 0x37d46C6813B121d6A27eD263AeF782081ae95434;アドレス公開定数 sKAI_TOKEN_ADDRESS = 0x37d46C6813B121d6A27eD263AeF782081ae95434;
address public constant WKLAY_ADDRESS = 0x19Aac5f612f524B754CA7e7c41cbFa2E981A4432;アドレス公開定数 WKLAY_ADDRESS = 0x19Aac5f612f524B754CA7e7c41cbFa2E981A4432;
IKlaySwapRouterV2 public immutable swapRouter = IKlaySwapRouterV2(routerAddress);IKlaySwapRouterV2 パブリック不変 swapRouter = IKlaySwapRouterV2(routerAddress);
IERC20 public immutable MBX_TOKEN = IERC20(MBX_TOKEN_ADDRESS);IERC20 パブリック不変 MBX_TOKEN = IERC20(MBX_TOKEN_ADDRESS);
IERC20 public immutable SKAI_TOKEN = IERC20(sKAI_TOKEN_ADDRESS);IERC20 パブリック不変 SKAI_TOKEN = IERC20(sKAI_TOKEN_ADDRESS);
address[] private pool = [address(0)];アドレス[] プライベート プール = [アドレス(0)];
address[] private path = [MBX_TOKEN_ADDRESS, WKLAY_ADDRESS];address[] プライベート パス = [MBX_TOKEN_ADDRESS, WKLAY_ADDRESS];
address[] private path1 = [WKLAY_ADDRESS, sKAI_TOKEN_ADDRESS];address[] プライベート パス 1 = [WKLAY_ADDRESS, sKAI_TOKEN_ADDRESS];
address[] private path2 = [sKAI_TOKEN_ADDRESS, WKLAY_ADDRESS];address[] プライベート パス 2 = [sKAI_TOKEN_ADDRESS, WKLAY_ADDRESS];
function swapExactTokensForTokens(関数 swapExactTokensForTokens(
uint256 amountIn) external returns (uint256[] memory amountOut) {
MBX_TOKEN.transferFrom(msg.sender, address(this), amountIn);MBX_TOKEN.transferFrom(msg.sender, address(this), amountIn);
MBX_TOKEN.approve(address(swapRouter), amountIn);MBX_TOKEN.approve(アドレス(swapRouter), 金額);
IKlaySwapRouterV2.SwapParams memory params = IKlaySwapRouterV2.SwapParams(IKlaySwapRouterV2.SwapParams メモリ パラメータ = IKlaySwapRouterV2.SwapParams(
to: msg.sender,宛先: メッセージ送信者、
path: path,パス: パス、
pool: pool,プール: プール、
deadline: block.timestamp期限: block.timestamp
););
amountOut = swapRouter.swapExactTokensForTokens(amountIn, 1, params);amountOut = swapRouter.swapExactTokensForTokens(amountIn, 1, params);
}}
}}
function swapExactKLAYForTokens() external payable returns (uint256[] memory amountOut) {関数 swapExactKLAYForTokens() 外部買掛金の戻り値 (uint256[] メモリ量Out) {
IKlaySwapRouterV2.SwapParams memory params = IKlaySwapRouterV2.SwapParams(IKlaySwapRouterV2.SwapParams メモリ パラメータ = IKlaySwapRouterV2.SwapParams(
to: msg.sender,宛先: メッセージ送信者、
path: path1,パス: パス1、
pool: pool,プール: プール、
deadline: block.timestamp期限: block.timestamp
););
amountOut = swapRouter.swapExactETHForTokens{value: msg.value}}
(1, params);
}}
}}
function swapExactTokensForKLAY(uint256 amountIn) external returns (uint256[] memory amountOut) {関数 swapExactTokensForKLAY(uint256 amountIn) 外部戻り値 (uint256[] メモリ量Out) {
SKAI_TOKEN.transferFrom(msg.sender, address(this), amountIn);SKAI_TOKEN.transferFrom(msg.sender, address(this), amountIn);
SKAI_TOKEN.approve(address(swapRouter), amountIn);SKAI_TOKEN.approve(アドレス(swapRouter), 金額);
IKlaySwapRouterV2.SwapParams memory params = IKlaySwapRouterV2.SwapParams(IKlaySwapRouterV2.SwapParams メモリ パラメータ = IKlaySwapRouterV2.SwapParams(
to: msg.sender,宛先: メッセージ送信者、
path: path2,パス: パス2、
pool: pool,プール: プール、
deadline: block.timestamp期限: block.timestamp
););
amountOut = swapRouter.swapExactTokensForETH(amountIn, 1, params);amountOut = swapRouter.swapExactTokensForETH(amountIn, 1, params);
}}
}}
}}
5. Deploying MiniKLAYswap.sol using thirdweb CLI:
Utilize the thirdweb CLI to deploy the MiniKLAYswap.sol contract. Provide a project name and select your desired framework (Hardhat or Foundry). For this example, choose the Empty base contract option.
thirdweb CLI を使用して、MiniKLAYswap.sol コントラクトをデプロイします。プロジェクト名を入力し、目的のフレームワーク (Hardhat または Foundry) を選択します。この例では、「空の基本契約」オプションを選択します。
6. Performing the Swap Operation:
6. スワップ操作の実行:
To execute the swap operations, navigate to the explorer tab of your deployed MiniKLAYswap contract on the thirdweb dashboard. Select the appropriate swap method (e.g., swapExactKLAYForTokens) and provide the necessary input parameters. Click 'Execute' to perform the swap.
スワップ操作を実行するには、3 番目の Web ダッシュボードで、デプロイされた MiniKLAYswap コントラクトのエクスプローラー タブに移動します。適切なスワップ方法 (swapExactKLAYForTokens など) を選択し、必要な入力パラメータを指定します。 「実行」をクリックして交換を実行します。
7. Verifying the Swap Operation:
7. スワップ操作の確認:
To verify the swap, paste the transaction hash into the Klaytnscope search bar. This will display the details of the transaction, including the swapped token amounts.
スワップを確認するには、トランザクション ハッシュを Klaytnscope の検索バーに貼り付けます。これにより、スワップされたトークンの量を含むトランザクションの詳細が表示されます。
Conclusion
結論
By integrating KLAYswap V2 into your smart contracts, you empower users to seamlessly swap tokens within your dApp. This enhances the user experience and opens up new possibilities for token-related services.
KLAYswap V2 をスマート コントラクトに統合することで、ユーザーが dApp 内でトークンをシームレスに交換できるようになります。これにより、ユーザー エクスペリエンスが向上し、トークン関連サービスの新たな可能性が開かれます。
For further exploration and guidance, refer to the Klaytn Docs and KLAYswap Docs. If you encounter any queries, engage with the Klaytn Forum for assistance. Stay tuned for Part 2 of this tutorial, where we will delve into building a minimalistic frontend to interact with the MiniKLAYswap contract using thirdweb and Next.js.
さらに詳しい調査とガイダンスについては、Klaytn ドキュメントおよび KLAYswap ドキュメントを参照してください。質問がある場合は、Klaytn フォーラムにお問い合わせください。このチュートリアルのパート 2 にご期待ください。ここでは、 thirdweb と Next.js を使用して MiniKLAYswap コントラクトと対話するための最小限のフロントエンドの構築について詳しく説明します。
免責事項:info@kdj.com
提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。
このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。
-
- 暗号通貨市場: 主要なパフォーマーの概観
- 2024-11-09 04:25:01
- この時期、一部の通貨は他の通貨よりもパフォーマンスが優れていますが、仮想通貨市場は全体的に明るい見通しを示しています。