العقود الذكية القائمة على النوايا: التعريف، والأنواع، والأمثلة، والتحديات
فريق التمويل MC²
3 دقائق للقراءة
شارك
من المحتمل أن تكون قد استخدمت تطبيقات تضبط فيها كل شيء مرة واحدة، والباقي يحدث كالسحر.
ولكن ماذا لو كان من الممكن تطبيق هذا المستوى من السهولة على كل حركة تقوم بها في عالم DeFi؟
في هذه المقالة، سوف نفهم كيف تعمل العقود الذكية القائمة على النوايا على تبسيط مهام DeFi مثل التداول الآلي والتحويلات عبر السلاسل وزراعة الغلة وNFTs والإقراض. بالإضافة إلى ذلك، سنغطي التحديات وكيف تدعمك MC² Finance.
ما هي العقود الذكية القائمة على النوايا؟
العقد الذكي القائم على النوايا هو نوع من الاتفاقات الآلية التي تنفذ إجراءات محددة بناءً على نواياك أو أهدافك المعلنة، دون الحاجة إلى تدخل يدوي.
العقود الذكية التقليدية على المنشطات = العقود الذكية القائمة على النية. المصدر: X
كيف تختلف عن العقود الذكية التقليدية؟
في العقود الذكية التقليدية، يجب أن تكون جميع الشروط ومنطق التنفيذ محددة بالكامل مقدمًا، ويتم تنفيذ العقد تلقائيًا بمجرد استيفاء شروط محددة.
ومع ذلك، تسمح لك العقود الذكية القائمة على المقاصد بالتعبير عن أهداف عالية المستوى (أو "المقاصد")، مع تفسير العقد ديناميكيًا وتنفيذ الإجراءات اللازمة عبر منصات مختلفة، وغالبًا ما تتضمن عمليات معقدة متعددة الخطوات أو متعددة السلاسل.
أنواع العقود الذكية القائمة على النوايا (مع أمثلة)
فيما يلي بعض الأنواع الأكثر شيوعًا من العقود الذكية القائمة على النوايا:
عقود التداول الآلي
العقود عبر السلاسل
عقود زراعة المحاصيل الزراعية
عقود سوق NFT
عقود الإقراض/الاقتراض
1. عقود التداول الآلي
تسمح لك عقود التداول الآلي بإعداد قواعد لشراء أو بيع التوكنات بناءً على أهداف السعر، لذلك لن تحتاج إلى مراقبة السوق باستمرار.
مثال على ذلك:
pragma solidity ^0.8.4;
// SPDX-License-Identifier: MIT
contract AutomatedTrading {
address public owner;
uint256 public targetPrice;
address public tokenAddress;
// Initializes contract with the owner and the target price for automated trading
targetPrice = _targetPrice; // Price at which trade will execute
tokenAddress = _tokenAddress; // Token to trade
}
// Function to execute trade if the target price is reached
function executeTrade(uint256 currentPrice) public view {
require(currentPrice >= targetPrice, "Target price not reached");
// Execute trade logic here
// For example: Buy or sell tokens based on predefined strategy
}
}
في المثال أعلاه، قمت بتعيين السعر المستهدف (عن طريق المُنشئ الدالة)، وبمجرد وصول السوق إلى هذا السعر، يقوم العقد تلقائيًا بإجراء الصفقة نيابة عنك (تنفيذ التجارة).
2. العقود عبر السلاسل
تسمح لك العقود عبر السلاسل المتقاطعة بنقل رموزك عبر سلاسل بلوكشين مختلفة (على سبيل المثال، الإيثيريوم ← بينانس).
مثال على ذلك:
pragma solidity ^0.8.4;
// SPDX-License-Identifier: MIT
interface ICrossChainBridge {
function transfer(address to, uint256 amount, address tokenAddress) external;
}
contract CrossChain {
ICrossChainBridge public bridge;
// Initializes the cross-chain bridge
constructor(address _bridge) {
bridge = ICrossChainBridge(_bridge);
}
// Function to send tokens across chains
function crossChainTransfer(address to, uint256 amount, address tokenAddress) external {
bridge.transfer(to, amount, tokenAddress); // Transfer tokens to a different chain
}
}لا داعي للقلق بشأن إدارة محافظ منفصلة أو تحويلات معقدة - فالعقد يتصل بجسر عبر السلسلة (عبر المُنشئ) ويتولى التعامل مع المعاملة (نقل عبر السلسلة المتقاطعة).
3. عقود زراعة المحاصيل الزراعية
تعمل عقود زراعة العوائد على نقل التوكنات الخاصة بك تلقائيًا بين المنصات لزيادة النمو المحتمل.
مثال على ذلك:
pragma solidity ^0.8.4;
// SPDX-License-Identifier: MIT
interface IYieldProtocol {
function stake(uint256 amount) external;
function withdraw(uint256 amount) external;
}
contract YieldFarming {
IYieldProtocol public protocol;
// Initializes the yield farming protocol
constructor(address _protocol) {
protocol = IYieldProtocol(_protocol);
}
// Function to automatically stake funds
function autoStake(uint256 amount) external {
protocol.stake(amount); // Stake the specified amount in the yield protocol
}
// Function to withdraw staked funds
function autoWithdraw(uint256 amount) external {
protocol.withdraw(amount); // Withdraw the specified amount from the yield protocol
}
}
وبدلاً من البحث يدويًا عن أفضل الفرص، يقوم العقد برهن التوكنات الخاصة بك في المنصة التي تقدم أفضل الشروط (عبر AutoStake) وسحبها عند الضرورة(AutoWithdraw).
4. عقود سوق NFT
وبالمثل، تعمل عقود سوق NFT على أتمتة عمليات مثل شراء وبيع ومزاد NFTs بناءً على نيتك.
مثال على ذلك:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
interface INFTMarketplace {
function listNFT(uint256 tokenId, uint256 price) external;
function bidOnNFT(uint256 tokenId, uint256 bidAmount) external;
}
contract NFTMarketplace {
INFTMarketplace public marketplace;
// Initializes the NFT marketplace by linking to an existing NFT marketplace contract
constructor(address _marketplace) {
marketplace = INFTMarketplace(_marketplace);
}
// Function to list NFT for sale, interacting with the external contract
function listMyNFT(uint256 tokenId, uint256 price) external {
marketplace.listNFT(tokenId, price); // List the specified NFT for sale at a defined price
}
// Function to bid on NFT, interacting with the external contract
function placeBid(uint256 tokenId, uint256 bidAmount) external {
marketplace.bidOnNFT(tokenId, bidAmount); // Place a bid on the specified NFT
}
}
تقوم بتعيين القواعد، مثل السعر الذي تريد البيع به (عبر listMyNFT)، ويقوم العقد بإدراج أو بيع NFT أو تعيين عروض الأسعار(placeBid).
5. عقود الإقراض/الاقتراض
تتيح لك عقود الإقراض والاقتراض إدارة القروض تلقائيًا داخل منصات DeFi.
مثال على ذلك:
pragma solidity ^0.8.4;
// SPDX-License-Identifier: MIT
interface ILendingProtocol {
function depositCollateral(uint256 amount) external;
function borrow(uint256 amount) external;
function repayLoan(uint256 amount) external;
}
contract LendingBorrowing {
ILendingProtocol public protocol;
// Initializes the lending protocol
constructor(address _protocol) {
protocol = ILendingProtocol(_protocol);
}
// Function to deposit collateral
function depositCollateral(uint256 amount) external {
protocol.depositCollateral(amount); // Deposit collateral to secure a loan
}
// Function to borrow funds
function borrowFunds(uint256 amount) external {
protocol.borrow(amount); // Borrow the specified amount of funds
}
// Function to repay a loan
function repayLoan(uint256 amount) external {
protocol.repayLoan(amount); // Repay the borrowed amount