استفاده از قراردادهای هوشمند در بلاکچین به ما این امکان را می‌دهد که توافقات مختلف را به روش ایمن و غیرقابل تغییر ثبت کنیم. یکی از مثال‌های جالب این نوع قراردادها، قرارداد اجاره فروشگاه است که قابلیت تمدید دارد. در این مقاله، ما به شما نشان خواهیم داد که چگونه می‌توانید یک قرارداد فروشگاه با سالیدیتی (Solidity) ایجاد کنید.

مراحل ساخت قرارداد

1. راه‌ اندازی محیط

برای شروع، نیاز است که محیط توسعه‌ای مثل Remix برای نوشتن و تست کد سالیدیتی خود راه‌اندازی کنید. Remix یک IDE آنلاین است که به شما اجازه می‌دهد تا کد خود را نوشته و تست کنید.

2. نوشتن کد قرارداد

در این مرحله، ما یک قرارداد اجاره ساده ایجاد می‌کنیم که به ما اجازه می‌دهد یک فروشگاه را اجاره کنیم و در صورت نیاز، آن را تمدید کنیم. کد زیر را در Remix وارد کنید:

// SPDX-License-Identifier: MIT
pragma solidity ^.8.;

contract StoreRental {
    address public landlord;
    address public tenant;
    uint public rent;
    uint public leaseDuration;
    uint public leaseStartTime;

    event LeaseExtended(uint newLeaseEndTime);

    constructor(uint _rent, uint _leaseDuration) {
        landlord = msg.sender; // شخصی که قرارداد را ایجاد می‌کند
        rent = _rent; // مقدار اجاره
        leaseDuration = _leaseDuration; // مدت اجاره به ثانیه
        leaseStartTime = block.timestamp; // زمان شروع اجاره
    }

    modifier onlyLandlord() {
        require(msg.sender == landlord, "Only landlord can call this function");
        _;
    }

    modifier onlyTenant() {
        require(msg.sender == tenant, "Only tenant can call this function");
        _;
    }

    function signLease(address _tenant) public onlyLandlord {
        tenant = _tenant; // اجاره‌نشین مشخص می‌شود
    }

    function extendLease(uint additionalTime) public onlyLandlord {
        leaseDuration += additionalTime; // تمدید اجاره
        emit LeaseExtended(leaseStartTime + leaseDuration);
    }

    function getLeaseEndTime() public view returns (uint) {
        return leaseStartTime + leaseDuration; // زمان پایان اجاره
    }
}

آموزش سالیدیتی + 5 پروژه عملی

توضیح کد

  • متغیرها:

    • landlord: آدرس مالک فروشگاه را ذخیره می‌کند.
    • tenant: آدرس اجاره‌نشین را ذخیره می‌کند.
    • rent: مقدار اجاره را تعیین می‌کند.
    • leaseDuration: مدت قرارداد اجاره را بر حسب ثانیه ذخیره می‌کند.
    • leaseStartTime: زمان شروع اجاره را ذخیره می‌کند.
  • توابع:

    • constructor: سازنده قرارداد که اجاره‌نشین و مبلغ اجاره را تنظیم می‌کند.
    • signLease: مالک می‌تواند اجاره‌نشین را مشخص کند.
    • extendLease: مالک می‌تواند مدت اجاره را تمدید کند.
    • getLeaseEndTime: زمان پایان اجاره را برمی‌گرداند.

3. تست قرارداد

پس از نوشتن قرارداد، می‌توانید آن را در Remix کامپایل کنید و تست کنید. از تب “Deploy & Run Transactions” برای استقرار قرارداد و تست توابع استفاده کنید. با استفاده از آدرس مالک و اجاره‌نشین، می‌توانید قرارداد را آزمایش کنید و کارکرد آن را مشاهده کنید.

نتیجه‌ گیری

در این مقاله، ما یک قرارداد اجاره فروشگاه با قابلیت تمدید را با استفاده از سالیدیتی طراحی کردیم. با توجه به نیازهای خود، می‌توانید این قرارداد را توسعه دهید و قابلیت‌های بیشتری به آن اضافه کنید. استفاده از قراردادهای هوشمند می‌تواند به شما کمک کند تا توافقات را به صورت ایمن و بدون واسطه انجام دهید.