ایجاد توکن بر بستر اتریوم؛ هزینه ساخت توکن در شبکه اتریوم چقدر است؟
فناوری بلاکچین در حال تسخیر جهان است و در حال حاضر محبوبترین محصول این فناوری، ارز دیجیتال بیت کوین (BTC) نام دارد. ساخت توکن بر بستر اتریوم که یکی از محصولات فرعی شبکه بلاکچین است، کمی پس از جهش بیت کوین موضوعیت پیدا کرد و حالا به یکی از داغترین بحثها تبدیل شده. شبکه بلاکچین اتریوم علاوه بر ارائه یک ماشین مجازی، سیستم قراردادهای هوشمند را هم پیادهسازی کرده که امکان شبیهسازی توکنهای آن به بیت کوین را فراهم میکند. یک توکن میتواند نشانگر یک ارز مجازی، یک اونس طلا، یک بلیط قرعهکشی و خیلیچیزهای دیگر باشد.
شما در این مقاله از والکس با مفاهیمی همچون توکن، نحوه کارکرد اتریوم، استاندارد ERC20 و البته ساخت توکن بر بستر اتریوم (همانند توکن اتر – ETH) آشنا خواهید شد. در نهایت، این شما هستید که با نحوه توسعه انواع توکن در بستر اتریوم آشنا میشوید و میتوانید این عملیات را گامبهگام و بدون مشکل پیش ببرید.
بررسی اصول اولیه ساخت توکن بر بستر اتریوم: توکن چیست؟
توکن (Crypto Token) اصطلاحی است که مشخصاً شامل یک ارز دیجیتال در بازار کریپتوکارنسی و یا حتی نحوه نامگذاری آن میشود. توکنها در واقع داراییهای دیجیتال یا ابزارهای قابل تعویض یا غیر قابل مبادله (مثل: NFT) هستند که در شبکههای بلاک چین خاص خودشان قرار دارند. یک توکن میتواند برای جمعآوری سرمایه در جهت شروع سرمایهگذاری روی یک ارز دیجیتال هم تلقی شود و معمولاً از طریق فرایندی با عنوان «استاندارد عرضه اولیه کوین (ICO)» ایجاد، توزیع و فروخته میشوند.
معمولاً پس از عرضه اولیه یک کوین، پروژه تمرینی برای سرمایهگذاری جمعی در جهت تامین مالی پروژه مورد نظر به اتمام میرسد و ارز دیجیتال مورد نظر در بازار کریپتوکارنسی به گردش درمیآید. شبکههای بلاک چین، پایگاههای اطلاعاتی خاصی هستند که اطلاعات را در بلاکها ذخیره میکنند. در نهایت، این توکنها هستند که واحد ارزشی مشخصی را در مورد یک ارز دیجیتال ارائه میدهند. ساخت توکن بر بستر اتریوم در قالبهای استاندارد به کاربران این اجازه را میدهد که کدهای قابل برنامهریزی را برای پردازش و مدیریت تراکنشهای مختلف را اجرا کنند. برای اطلاع در مورد تفاوت Coin و Token، مقالهای والکس را با عنوان تفاوت توکن و کوین مطالعه کنید.
هدف از ساختن توکنها چیست؟
توکنها نشاندهنده میزان سهم سرمایهگذار در یک پروژه هستند و میتوان آنها را بهعنوان یک هدف اقتصادی مشخص مثل یک مناقصه در نظر گرفت. بهعبارت سادهتر دارندگان یک توکن میتوانند از آن برای خرید هم استفاده کنند و حتی حق دارند آن را مانند سایر سهام یا اوراق بهادار در جهت کسب سود، مورد معامله قرار دهند. البته تعریف کوین (Coin) و توکن با یکدیگر بسیار متفاوت است و بعضی از ارزهای دیجیتال هم وجود دارند که هر دو را ارائه میدهند.
برای مثال، بیت کوین یک ارز دیجیتال است که دارای توکنها و کوینهای مختلفی است و میتوان آنها را برای تجارت، معامله، خرید یا فروش استفاده کرد. توکنها انواع مختلفی دارند که موارد زیر شامل آنها میشوند:
- توکنهای پاداش (reward token)
- توکنهای ارزی (currency token)
- توکنهای ابزاری (utility token)
- توکنهای امنیتی (security token)
- توکنهای دارایی (asset token)
فناوری بلاکچین چیست و چگونه کار میکند؟
بلاک چین به زبان ساده، یک پایگاه جامع برای ثبت تراکنشهای ارز دیجیتال در قالب یک دفتر کل است. این دفتر کل شامل تمامی سوابق مربوط به تراکنشهای انجامشده در شبکه مورد نظر میشود. تراکنش عبارت است از انتقال یک ارز دیجیتال از سمت یک کاربر به کاربری دیگر. برای مثال، فرض کنید که شما ۳۰ واحد بیت کوین به کیف پول دیجیتالی دوستتان انتقال دادهاید. این تراکنش بهصورت رمزنگاریشده و از طریق یک گره (Node) خاص در شبکه بیت کوین در دفتر کل بلاک چین آن ثبت خواهد شد.
وقتی گره اول، اطلاعات مربوط به تراکنش را دریافت میکند، آن را به گرههای دیگر در شبکه ارسال خواهد کرد؛ با این کار، تراکنش عملاً در سطح شبکه بلاک چین پخش و منتشر خواهد شد. سایر گرهها این تراکنش را دریافت و با استفاده از روش تایید استاندارد، آن را تایید و سپس به دفتر کل اضافه میکنند. بهعبارت سادهتر، هر گره یا نود در بلاک چین، یک نسخه کپیشده از دفتر کل است که ماهیت کلی فناوری Blockchain را تعریف میکند.
شبکه اتریوم چیست و نحوه عملکرد آن چگونه است؟
اتریوم یک بلاکچین است که ارز دیجیتال خاص خودش یعنی اتر (ETH) را دارد. اتریوم هم مانند شبکههای بلاکچین عمومی تراکنشها را در یک دفتر کل به ثبت میرساند. چیزی که اتریوم را از سایر بلاکچینها متمایز میکند، انعطافپذیری آن است. در حالی که بسیاری از شبکههای بلاکچین تنها از انتقال ارز دیجیتال پشتیبانی میکنند، اتریوم به شما این امکان را میدهد که هر دادهای را از طریق بلاکچین منتقل کنید و هزینه آن را با پرداخت اتر بپردازید.
ساخت توکن بر بستر اتریوم هم از همین قابلیت انعطافپذیری اتریوم بهرهمند شده است و میتوان با انجام گامهای مربوط به آن، به فرمول ساخت ارز دیجیتال دست یافت. هروقت که یک تراکنش در اتریوم شکل میگیرد، توسط گرههای ماینینگ در شبکه استخراج میشود. فرستنده تراکنش باید کارمزدی را برای استخراج تراکنشها به گرهها بپردازد تا موافقت صورت بپذیرد. به کارمزد تراکنشها در اتریوم، گس (Gas) گفته میشود و نقش بنزین در ماشین را برای دنیای ارزهای دیجیتال ایفا میکند.
همهچیز در مورد استاندارد ERC20
برای ساخت توکن بر بستر اتریوم نیاز است که با مفهوم ERC20 که مخفف عبارت Ethereum Request for Comment است، آشنا شوید. استاندارد ERC20 برای بهبود شبکه اتریوم طراحی شده است و یکی از مهمترین استانداردهای نوع ERC محسوب میشود. فاکتور ERC20 بهعنوان استانداردی فنی در جهت نوشتن قرارداد هوشمند اتریوم در شبکه بلاکچین و در راستای ساخت توکن بر بستر اتریوم محسوب میشود. این استاندارد شامل مجموعهای کامل از قوانینی است که همه توکنهای مبتنی بر اتریوم باید از آنها پیروی کنند.
استاندارد ERC20، توکنها را بهعنوان داراییهای مبتنی بر بلاکچین تعریف میکند که میتوانند ارسال یا دریافت شوند و دارای ارزش باشند. ساخت توکن بر بستر اتریوم با توجه به استاندارد ERC20 از بسیاری جهات شبیه به ساختار بیت کوین و لایت کوین است. با این اوصاف، مهمترین تفاوت این است که توکنهای ERC20 به جای اجرا در شبکه بلاک چین مخصوص خود روی شبکه اتریوم اجرا میشوند و برای معامله آنها باید از گس (Gas) بهعنوان کارمزد تراکنش آنها استفاده کرد.
وضعیت ارزهای دیجیتال پیش از استاندارد ERC20
قبل از ظهور ERC20 هرکسی که توکن میساخت میبایست یک چرخه جدیدی را خلق میکرد؛ چرا که همه توکنها با یکدیگر متفاوت بودند. بهعنوان مثال، اگر توسعهدهندهای میخواست توکن دیگری را خلق کند، به دلیل عدم وجود ساختار خاص برای ساختن توکنهای جدید، باید کل کد قرارداد هوشمند آن توکن را درک میکرد. این اتفاق مخصوصاً برای کیف پولها و پلتفرمهایی که روی صرافیهای ارز دیجیتال قرار داشتند به مراتب دشوار و سخت بود.
ساخت توکن بر بستر اتریوم با استاندارد ERC20 باعث تسهیل تبادل توکنها شده است و میتوان معاملات را بدون حد و مرز انجام داد. این استاندارد شامل ۶ دستورالعمل اجباری و ۳ عملکرد اختیاری است که در نهایت باعث اجرایی شدن قراردادهای هوشمند میشوند.
معرفی ۴ دستورالعمل اجباری در استاندارد ERC20
استاندارد ERC برای ساخت توکن بر بستر اتریوم مجموعهای از توابع اجباری را ارائه میدهد که موارد زیر از جمله انواع پیچیده آن هستند:
تابع totalSupply: روشی است که مجموع عرضه توکنهای شما را مشخص میکند. وقتی مجموع عرضه توکن به totalSupply برسد، قرارداد هوشمند از ایجاد توکنهای جدید خودداری خواهد کرد.
تابع balanceOf: روشی است که تعداد توکنهای یک آدرس کیف پول دیجیتال را بازمیگرداند.
تابع transferForm: نوعی از انواع روشهای انتقال توکن در بین کاربران است. این روش در جریان ساخت توکن بر بستر اتریوم، وضعیت مجاز بودن قرارداد هوشمند را مورد بررسی قرار میدهد.
تابع Allowance: این تابع هم شبیه به روش transferForm است، البته با این تفاوت که موجودی کافی یک کاربر را برای ارسال مقدار مشخصی از توکنها به کاربر دیگر بررسی میکند.
چه چیزی باعث موفقیت ساخت توکن بر بستر اتریوم میشود؟
موارد زیر از جمله پارامترهایی هستند که ساخت توکن بر بستر اتریوم با توجه به استاندارد ERC20 را جذاب، موفقیتآمیز و کاربردی میکنند:
- همانطور که در ادامه این مقاله آموزشی خواهید خواند، ساخت توکن بر بستر اتریوم با استاندارد ERC20 بسیار آسان و ساده است.
- استاندارد ERC20 یک مشکل مهم را حل میکند؛ چرا که بازارهای مبتنی بر بلاک چین و کیف پولهای دیجیتالی به مجموعهای واحد و استاندارد از دستورالعملها برای ارتباط با سایر توکنها نیاز دارند. این دستورالعملها شامل قوانینی هستند که برای تعامل توکنهای مختلف و نحوه خرید آنها وضع شدهاند.
- استاندارد ERC20 اولین پارامتر محبوبی بود که ساخت توکن بر بستر اتریوم را ارائه کرد.
لازمبهذکر است که بدانید، توکنهای ERC20 هم مانند همه توکنهای دیگر اتریوم، بهعنوان قراردادهای هوشمند بر روی ماشین مجازی اتریوم (EVM) بهصورت غیرمتمرکز اجرا خواهند شد.
معرفی زبان برنامهنویسی Solidity
ساخت توکن بر بستر اتریوم در فضای زبان Solidity انجام میشود. این در حالی است که زبانهای برنامهنویسی دیگری هم وجود دارند، اما کمتر کسی از آنها برای ساختن توکن ERC20 استفاده میکند. زبان سالیدیتی شبیه به زبان جاوا اسکریپت است؛ بنابراین اگر دانش کمی در مورد جاوا یا حتی سایر زبانهای مشابه C را دارید، میتوانید بهسادگی ساخت توکن بر بستر اتریوم را با سالیدیتی انجام دهید. زبان سالیدیتی آنقدر آسان است که هیچ مشکلی در فهمین کدهای موجود در برنامهنویسی آن نداشته باشید.
زبان برنامهنویسی سالیدیتی باعث میشود که ساخت توکن بر بستر اتریوم در کمترین زمان ممکن و در فضایی شبیه به یک سرگرمی انجام شود. جالب است بدانید که مراحل ساختن توکن ERC20 با این روش در کمتر از یک ساعت انجام خواهد شد و هزینه ساخت توکن در شبکه اتریوم به حداقل میزان ممکن خواهد رسید.
آموزش ساخت توکن روی بلاکچین اتریوم:
برای شروع ساخت توکن در اتریوم باید یک شبکه را انتخاب کنید؛ ما برای ارائه آموزش، شبکه ropsten را انتخاب کردهایم. پس از انتخاب این شبکه باید از متامسک (Metmask) برای اتصال کیف پول دیجیتال اتریوم استفاده کنید. برای اتصال کامل شبکه مورد نظر و کیف پول دیجیتال، گزینه Ropsten Test Network را در کیف پول Metmask خود انتخاب و سپس، آدرس کیف پول را که در قسمت متنی ایجاد شده را کپی کنید؛ حالا گزینه Send me test Ether را برگزینید تا مسیر اولیه ساخت توکن را هموار کرده باشید.
گام اول: ایجاد فایل توکن در سالیدیتی
برای ساخت توکن در شبکه اتریوم باید علاوه بر آشنایی با زبان برنامهنویسی سالیدیتی (Solidity) از پلتفرم مخصوص توسعهدهندگان اتریوم یعنی Ethereum Remix IDE استفاده کنید. در ادامه، به پلتفرم Ethereum Remix IDE بروید و یک فایل Solidity جدید ایجاد کنید.
حالا نماد و نام خود را در محلهای مورد نظر با توجه به ساختار زیر جایگزین کنید:
symbol = “QKC”;
name = “QuikNode Coin”;
حالا مقدار اعشار را تنظیم کنید؛ این مقدار نشاندهنده اندازهای است که میتوان توکنها را در آن تقسیم کرد و شامل بازه ۰ تا ۸ واحدی میشود. پس از تعیین مقدار اعشار، مقدار عرضه کل توکن با توجه به عدد دلخواهتان طبق ساختار برنامهنویسی زیر ایجاد میشود:
decimals = 2;
_totalSupply = 100000;
نکته مهم: مقدار عرضه کل توکن در ساختار برنامهنویسی باید بهصورت غیر اعشاری (عدد صحیح) وارد شود. برای مثال، مقداری که در ساختار بالا وارد شده، ۲ است و این یعنی که ما به عرضه کلی ۱۰۰۰ توکنی نیازمند هستیم؛ بنابراین، باید متغیر عرضه کل را روی ۱۰۰ هزار تنظیم کنیم تا محاسبات ما با در نظر گرفتن اعشار انجام شود.
گام دوم: تست ارسال توکن
بخش YOUR_METAMASK_WALLET_ADDRESS را به آدرس کیف پول خودتان تغییر دهید؛ یعنی همان کیف پولی که میخواهید برای دریافت آزمایشی ارز دیجیتال معرفی کنید. ساختار برنامهنویسی این بخش هم طبق موارد زیر است:
Balance[YOUR_METAMASK_WALLET_ADDRESS] = _totalSupply;
Emit Transfer(address(0), YOUR_METAMASK_WALLET_ADDRESS,_totalSupply);
در نهایت قرارداد هوشمند را با استفاده از Web3 و با کلیک کردن روی گزینه compile اجرایی کنید. توجه داشته باشید که قبل از compile کردن قرارداد هوشمند، باید گزینه ropsten testnet را در متامسک انتخاب کرده باشید. حالا تراکنش مورد نظر را از طریق پلتفرم Metamask تایید کنید تا وارد گام بعدی شوید.
گام سوم: افزودن توکن در شبکه اتریوم
چنانچه پیش از ایجاد قرارداد، با خطایی تحت عنوان: “This Contract may be abstract” روبهرو شدید، در ابتدا مطمئن شوید که قرارداد مناسبی را در بخش مربوطه انتخاب کردهاید و تراکنش مورد نظرتان را در متامسک مورد تایید قرار دادهاید.
پس از تایید تراکنش مربوط به ساخت توکن بر بستر اتریوم، قرارداد هوشمند اختصاصی در شبکه آزمایشی Ropsten مستقر و اجرایی خواهد شد. حالا برای دریافت توکن ساختهشده در متامسک به بخش Deployed Contracts در پلتفرم Ethereum Remix بروید و آدرس قرارداد مستقرشده را با استفاده از گزینه copy، کپی کنید.
حالا پلتفرم متامسک را باز و روی گزینه Add Token کلیک کنید و در نهایت، بخش Custom Token را برگزینید. در این مرحله آدرس قراردادی را کپی کرده بودید را در فیلد اول قرار دهید. پلتفرم Metamask نماد توکن و اعشار مورد نظر برای عرضه کل را بهصورت خودکار از بخشهای قبلی دریافت میکند و عملیات ساخت توکن بر بستر اتریوم به پایان خواهد رسید.
توضیح لاینهای برنامهنویسی برای ساخت توکن ERC20
لاینهای برنامهنویسی در سالیدیتی برای ساخت توکن بر بستر اتریوم شامل خطوط زیر است و هرکدام شامل توضیحاتی میشوند:
- لاین ۱: این لاین مربوط به نسخه زبان برنامهنویسی سالیدیتی است
- لاین ۳-۴: رابط Safe Math را برای استفاده توابع ریاضی در قرارداد هوشمند مورد نظر فراخوان میکند
- لاین ۴۱-۲۹: فراخوان رابط استاندارد ERC20 برای اجرایی شدن عملکردهای آن
- لاین ۴۸-۴۴: تابع مربوط به قرارداد هوشمند برای دریافت تاییدیه تراکنش و اجرای یک تابع
- لاین ۵۲-۵۶: شروعکننده قرارداد QCKToken مورد نظر، ایجاد یک نماد متغیر، ایجاد یک نام متغیر برای نگهداری توکن، تعریف اعشار متغیر از نوع عدد صحیح بدون علامت
- لاین ۵۸-۵۹: ایجاد ۲ تابع که امکان استفاده از توکن را برای کاربران فراهم میکند
- لاین ۶۱-۶۸: تنظیم نماد، نام و اعشار مربوطه برای تعیین ارزش عرضه کل توکن
- لاین ۷۰-۷۲: کنترل تابع totalSupply
- لاین ۷۴-۷۶: توازن تابعی که موجودی آدرس کیف پول دیجیتال را بررسی میکند
- لاین ۷۸-۸۳: تعریف تابعی که امکان انتقال توکنها را از عرضه کل به کاربران دیگر فراهم میکند
- لاین ۸۵-۸۹: تاییدکننده تابعی که مقدار مجاز عرضه کل توکن را برای تخصیص به یک کاربر بررسی میکند
- لاین ۹۱-۹۷: تعریف تابعی که انتقال توکنها را در بین کاربران مختلف تسهیل میکند
- لاین ۹۹-۱۰۱: تابعی است که موجودی کافی کاربر برای انتقال توکن به کاربر دیگر را مورد بررسی قرار میدهد
- لاین ۱۰۳-۱۰۸: شامل تابع approveAndCall میشود که تراکنشهای خرید یا خرج کردن توکنها را انجام میدهد
- لاین ۱۱۰-۱۱۲: یک تابع بازگشتی است که از ارسال مستقیم اتریوم (ETH) توسط حسابهای مختلف به قرارداد هوشمند جلوگیری میکند. این امر باعث خواهد شد که کاربران امکان خرج کردن گس را برای ترانشهایی که در آن نام تابع ذکر نمیشود، نداشته باشند
نحوه اجرایی کردن کتابخانه Safemath در سالیدیتی
کتابخانه Safemath از جمله کتابخانههای سالیدیتی است که هدف آن مقابله با روشی است که هکرها برای شکستن قراردادها در پیش میگیرند. این حمله که با عنوان «خطر سر ریز یا Overflow Danger» شناخته میشود، قرارداد مورد نظر را با استفاده از پارامترهایی مملو از اعداد صحیح نادرست، دچار اختلال خواهد کرد. کتابخانه Safemath بهصورت اساسی در مقابل حمله سر ریز مقاومت میکند و آنقدری هم از لحاظ اندازه و حجم، کوچک است که تاثیری روی اندازه قرارداد هوشمند نمیگذارد و هزینه ساخت توکن در شبکه اتریوم را افزایش نمیدهد.
برای اضافه کردن این کتابخانه (library) در جریان ساخت توکن بر بستر اتریوم، دستورات زیر را در سالیدیتی اجرا کنید:
library SafeMath { // Only relevant functions
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a — b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
کتابخانه Safemath صحت پارامترهایی که به آن ارسال میشوند را مورد بررسی قرار میدهد تا در صورت لزوم، تایید شوند. در صورت عدم موفقیت، اجرای عملکرد فوراً متوقف میشود و تمامی تغییرات شبکه بلاک چین به حالت قبلی بازگردانده میشوند. برای معرفی این کتابخانه به بخش Compiler زبان برنامهنویسی سالیدیتی، دستورات زیر را اجرا کنید:
using SafeMath for uint256;
سپس، محاسبات سادهای که در ابتدا استفاده کرده بودیم را با این تابع Safemath جایگزین خواهیم کرد:
balances[msg.sender] = balances[msg.sender].sub(numTokens);
balances[receiver] = balances[receiver].add(numTokens);
balances[buyer] = balances[buyer].add(numTokens);
balances[owner] = balances[owner].sub(numTokens);
ارزش یک توکن ERC20 چگونه تعیین میشود؟
بهخاطر داشته باشید که ساخت توکن بر بستر اتریوم دلیلی بر قیمت داشتن آن نیست و باید پارامترهای مهمتری را در این عملیات در نظر داشته باشید. بهطورکلی ارزش ساخت توکن بر بستر اتریوم بسته به کاربرد، ایده، اهداف آن، رودمپ (Roadmap) و غیره تعیین میشود. همانطور که از واژه مرکب Roadmap پیداست، ساخت توکن بر بستر اتریوم باید با توجه به یک نقشه راه پایهریزی شود. یک رودمپ شامل همه مراحل و گامهایی است که راه رسیدن به هدف را روشن میکنند.
توجه کنید که ارزشیابی یک توکن با توجه به عوامل زیر، دستخوش تغییرات خواهد شد:
- تعریف و شناسایی چشمانداز و آیندهنگری توکن مورد نظر
- جذب و جلب نظر ذینفعانی که در پروژه حضور دارند (اطمینان در مورد اینکه ارز دیجیتال مورد نظر یک شت کوین نیست)
- کمک به سرمایهگذاری افراد مختلف برای تامین مالی پروژه
- کمک به افزایش احتمال موفقیت توکن و تبدیل آن به یک ارز دیجیتال موفق
تخته گاز در مسیر ساخت توکن بر بستر اتریوم
این مقاله بهصورت تخصصی در مورد ساخت توکن بر بستر اتریوم تهیه شده است و داستان قابلیتی را تعریف میکند که با آن میتوان یک توکن اختصاصی از نوع ERC20 ساخت. فناوری سیستمهای بلاک چین در حال حاضر حرف اول را میزنند و اکثر پلتفرمها میکوشند تا در این زمینه گام بردارند.
یکی از شبکههای پیشتاز در دنیای کریپتوکارنسی، اتریوم است که قابلیتهای مهمی از جمله قراردادهای هوشمند و استاندارد ERC20 را ارائه کرده. اگر کمی با برنامهنویسی آشنا هستید و قصد دارید تا توکن خودتان را راهاندازی کنید، یکبار دیگر مراحل آموزش ساخت توکن بر بستر اتریوم را در والکس مطالعه نمایید.
با غرض سلام آیا در مورد پروزه های ساختمانی در ایران امکان توکنیزه کردن وجود دارد؟ اگه ممکنه باشه من حضوری صحبت بکنم
سلام
در حال حاضر با توجه به اطلاعات ما هیچ پلتفرمی این سرویس را در ایران ارائه نمیدهد. البته برخی پروژه ها در حال فراهم کردن زیرساختهای لازم برای توکنایز املاک و مستغلات در آینده به صورت تست نت هستند.