ایجاد توکن بر روی پلتفرم اتریوم
آموزش

ایجاد توکن بر روی پلتفرم اتریوم

ایجاد توکن بر روی پلتفرم اتریومReviewed by arzmonitor on Aug 18Rating: 5.0ایجاد توکن بر روی پلتفرم اتریومایجاد توکن بر روی پلتفرم اتریوم با سالیدیتی.آموزش ایجاد توکن ارز دیجیتال با استفاده از زبان برنامه نویسی Solidity.آموزش کامل زبان برنامه نویسی Solidity

ایجاد توکن بر روی پلتفرم اتریوم با سالیدیتی

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

توکن: در لغت به هر نوع دارایی قابل مبادله مانند سهام شرکت، بن تخفیف و … گفته می‌شود.

نحوه ایجاد توکن بر روی پلتفرم اتریوم با زبان solidity

فرض کنید قصد دارید یک استارت آپ راه‌اندازی کنید که بر روی یک ایده جذاب فعالیت کند، اما برای شروع کار نیاز به جذب سرمایه دارید. برای اینکار شما می‌توانید سهام استارت آپ خود را به ۱۰۰۰۰ سهم تقسیم کنید و با جلب اطمینان سرمایه‌گذاران، هر سهم را در ازاء مبلغی در اختیار آنها قرار دهید. به هر کدام از این سهم‌ها توکن گفته می‌شود و ارزش ریالی خود را دارد. حال اگر بخواهید این توکن‌ها را بر روی بلاک‌چینی مانند اتریوم مدیریت کنید، می‌توانید هر سهم را بر اساس اتریوم ارزش‌گذاری کنید، مثلا هر توکن ۰٫۰۱ اتریوم. اگر با گذر زمان ارزش ریالی کل استارت آپ افزایش یابد، باعث افزایش ارزش هر توکن خواهد شد و برعکس.

امروزه بر روی بلاک‌چین اتریوم توکن‌های زیادی معرفی شده است که از معروف‌ترین آنها به VeChain(VEN) ،TRON(TRX) ،EOS و … می‌توان اشاره کرد که البته هرکدام از آنها مدتی بعد شبکه اصلی مختص خود را ایجاد کردند.اما هستند توکن های زیادی که بر بستر خود شبکه اتریوم فعالیت می کنند.

عرضه اولیه سکه (ico): روشی که در تعریف توکن برای جذب سرمایه توسط استارت‌آپ‌ها معرفی کردیم در واقع نوعی عرضه اولیه سکه است. امروزه این روش علاوه بر اینکه به روشی مرسوم برای جذب سرمایه تبدیل شده، به روشی آسان برای کلاهبرداری نیز تبدیل شده است. به همین دلیل قبل از سرمایه‌گذاری در icoها باید در مورد پیشینه ارائه‌دهندگان توکن تحقیق و تفحص کرد.

قرارداد هوشمند: مجموعه‌ایی از دستورات است که براساس منطق IFTTT (IF-THIS-THEN-THAT) کار می‌کند. بدین معنی که اگر این شرایط برقرار شد، آنگاه آن کارها را انجام بده. به عنوان مثال برای فروش توکن‌های استارت‌آپ خود به سرمایه‌گذاران از طریق قرارداد هوشمند، باید تابعی بنویسید که اگر سرمایه‌گذاری ۰٫۱ اتریوم برای قرارداد شما ارسال کرد، به صورت خودکار ۱۰ توکن به آدرس اتریوم فرستنده اختصاص یابد. این دستورات و قراردادها معمولا به زبان solidity نوشته می‌شوند.

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

در ادامه برای آشنایی با نحوه ایجاد توکن بر روی پلتفرم اتریوم، یک قرارداد هوشمند با پیش‌فرض‌های زیر ایجاد خواهیم کرد:

  • تعداد توکن‌ها: ۱۰۰،۰۰۰
  • قیمت هر توکن:  ۱ wei (یک اتریوم معادل ۱۸^۱۰ wei)
pragma solidity ^0.4.11;

contract TokenSaleContract {
    uint maxTokens = 100000;
    uint tokenSwap = 1;
    uint supply = 0;

    mapping (address => uint) balance;

    modifier isTokenAvailable () {
        require (msg.value*tokenSwap + supply <= maxTokens);
        _;
    }

    modifier hasEnoughBalance (uint tokens) {
        require (balance[msg.sender] >= tokens);
        _;
    }

    function buyTokens () public payable isTokenAvailable {
        uint tokensAmount = msg.value * tokenSwap;
        balance [msg.sender] += tokensAmount;
        supply += tokensAmount;
    }

    function sellTokens (uint tokensAmount) public hasEnoughBalance(tokensAmount) {
        msg.sender.transfer(tokensAmount / tokenSwap);
        balance [msg.sender] -= tokensAmount;
        supply -= tokensAmount;
    }

    function getMyBalance () public constant returns (uint) {
        return balance[msg.sender];
    }

    function getAvailableTokens () public constant returns (uint) {
        return maxTokens - supply;
    }
}

همانطور که مشاهده می‌کنید، به زبان solidity یک قرارداد هوشمند بسیار ساده به نام TokenSaleContract نوشته‌ایم که برای خرید و فروش توکن می‌تواند مورد استفاده قرار گیرد. به منظور درک راحت‌تر کد فوق، در ادامه در مورد کلمات کلیدی و متدهایی که در این قرارداد به کار رفته‌اند توضیحاتی ارائه می‌دهم.

(ایجاد توکن بر روی پلتفرم اتریوم با زبان برنامه نویسی solidity)

کلمات کلیدی:

modifier: توابعی هستند که بر روی سایر توابع اعمال می‌شوند و از آنها می‌توان برای چک‌کردن بعضی پیش‌نیازها قبل از اجرا شدن توابع استفاده کرد. مثلا در کد فوق از مودیفایر isTokenAvailable استفاده شده است، تا قبل از اجراء دستورات متد buyTokens و فروش توکن به کاربر بررسی شود که آیا به اندازه کافی توکن برای فروش وجود دارد یا خیر.

برای کسب اطلاعات بیشتر پیشنهاد می‌کنم مطلب کاربردی Modifier ها درSolidity را مطالعه نمائید.

payable: مشابه حساب‌های شخصی اتریوم، شما می‌توانید برای قراردادهای هوشمند نیز اتریوم ارسال کنید. اگر بخواهید همزمان با فراخوانی یک متد برای آن اتریوم نیز ارسال کنید، کافیست در تعریف آن متد از این کلمه کلیدی استفاده کنید. در صورتیکه در تعریف متد از این modifier استفاده نشود و اتریوم برای آن ارسال شود، تراکنش رد خواهد شد. به عنوان مثال برای فروش توکن به کاربران در متد buyTokens، از کاربر اتریوم دریافت می‌شود و معادل آن توکن به حساب کاربر واریز می‌شود. به همین دلیل در تعریف این متد از payable استفاده شده است.

mapping: یک نوع Hash Table است که برای نگهداری جفت‌های کلید/مقدار استفاده می‌شود. در کد فوق از این نوع داده برای نگهداری تعداد توکن‌های هرآدرس اتریوم (کاربر) استفاده می‌شود.

msg.value: یک متغیر سراسری در قراردادهای هوشمند است که مقدار اتریومی که از طریق یک متد payable برای قرارداد ارسال شده است، نگه می‌دارد. در remix.ethereum.org با مقداردهی پارامتر value در تب Run می‌توان برای متدهای قرارداد، اتریوم ارسال کرد.

msg.sender: این متغیر سراسری، آدرس اتریوم کاربری که یکی از متدهای قرارداد هوشمند را فراخوانی کرده است در خود نگه می‌دارد.

transfer: هر قرارداد، مشابه حساب‌های شخصی می‌تواند موجودی اتریوم داشته باشد. با استفاده از این تابع سراسری، از موجودی اتریوم قرارداد می‌توان به حساب آدرس مقصد (msg.sender) اتریوم واریز کرد.

(ایجاد توکن بر روی پلتفرم اتریوم)

متدها:

buyTokens: با ارسال اتریوم با واحد wei به این متد، به ازاء هر یک wei یک توکن به حساب کاربر واریز می‌کند. اما قبل از اینکه تابع اجرا و پرداخت انجام شود، با استفاده از مودیفایر isTokenAvailable بررسی می‌شود که آیا به اندازه کافی توکن برای فروش وجود دارد یا خیر.

sellTokens: قبل از اجراء این تابع، در مودیفایر hasEnoughBalance بررسی می‌شود که آیا تعداد توکن‌هایی که کاربر برای فروش گذاشته است، برابر یا کمتر از موجودی توکن‌هایش است یا خیر. اگر موجودی کافی داشته باشد این تابع اجرا می‌شود و به ازاء هر توکن یک wei به حساب اتریوم کاربر با دستور transfer واریز می‌شود.

getMyBalance: هر کاربر با فراخوانی این متد، می‌تواند موجودی توکن‌های خود را دریافت کند.

getAvailableTokens: این تابع، تعداد توکن‌های موجود برای خرید را برمی‌گرداند.

برای تست قرارداد فوق، کد آن را در remix.ethereum.org کپی می‌کنیم. پس از کامپایل، با انتخاب تب Run آن را بر روی محیط شبیه‌سازی شده تحت وب با زدن کلید Create ایجاد و سپس متدهای مختلف آن را فراخوانی می‌کنیم. اگر با IDE فوق تاکنون کار نکرده‌اید، پیشنهاد می‌کنم مطلب زبان برنامه نویسی سالیدیتی (Solidity) چیست را مطالعه کنید.

قرارداد ساده‌ایی که در این مطلب نوشته‌ایم هرچند می‌تواند برای خرید و فروش توکن استفاده شود، اما یک قرارداد غیر استاندارد است که نمی‌تواند با کیف پول‌ها، صرافی‌ها و سایر قراردادهای هوشمند به راحتی ارتباط برقرار کند. به همین دلیل امروزه اکثر توسعه‌دهندگان قراردادهای هوشمند، از استاندارد ERC20 برای نوشتن قراردادهای خود استفاده می‌کنند.

(ایجاد توکن بر روی پلتفرم اتریوم با سالیدیتی)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *