آموزش ساخت توکن روی اتریوم در عرض چند دقیقه با متد جدید

آموزش ساخت توکن روی اتریوم در عرض چند دقیقه با متد جدید : در این مقاله خواهید آموخت : آموزش و یادگیری نحوه ایجاد توکن ERC20 بر روی بلاک چین اتریوم و با شمای کلی این موضوع آشنا خواهید شد که برای افراد یا شرکت هایی که در ابتدای راه راه اندازی یک توکن یا ارز دیجیتال هستند می تواند بسیار مهم و کاربردی باشد. هدف از این مقاله نشان دادن چگونگی ایجاد توکن ERC20 در کمترین زمان ممکن است.

آموزش ساخت توکن روی اتریوم

بیایید با اصول اولیه شروع کنیم : توکن ERC20 چیست؟

در سال های اخیر، توکن های ERC20 به استاندارد غیر رسمی توکن های اتریوم تبدیل شده است. به عبارت دیگر، امروزه بیشتر قراردادهای اتریوم ایجاد شده مطابق با ERC20 هستند.

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


شاید این مطلب نیز برای شما مفید باشد : 🔻🔻🔻🔻🔻🔻


چه چیزی باعث می شود توکن های ERC20 بسیار جذاب و موفق شوند؟

چندین عامل در این موفقیت نقش دارند :

1. همانطور که در آموزش ساخت توکن روی اتریوم مشاهده خواهید کرد، توکن های ERC20 ساده و آسان هستند.

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

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

درست مانند سایر توکن های اتریوم، توکن های ERC20 به صورت قراردادهای هوشمند اجرا و در ماشین مجازی اتریوم (EVM) به روشی غیرمتمرکز اجرا می شوند.

آموزش ساخت توکن روی اتریوم
آموزش ساخت توکن روی اتریوم

سالیدیتی Solidity زبان برنامه نویسی قرارداد هوشمند

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

Solid مشابه جاوا اسکریپت JavaScript است، بنابراین اگر شما از JavaScript یا حتی جاوا و سایر زبان های آن مانند C آگاهی داشته باشید، مشکلی برای نوشتن کد در Solid نخواهید داشت، حتی اگر واقعاً تسلط کافی به استفاده از این زبان نداشته باشید.

اینجاست که سرگرمی شروع می شود، زیرا می توانید در هر زمانی شروع به ایجاد یک قرارداد ساده ERC20 کنید.

این یک کار سهل و ساده است، به سادگی چیزی که این مقاله نشان خواهد داد. حالا به شما خواهیم آموخت که چگونه می توانید یک توکن ERC20 را در کمتر از یک ساعت بنویسید و بکار ببرید.

توکن ‌ای که در اینجا ایجاد خواهیم کرد، حداقل کاری است که برای اجرای ERC20 مورد نیاز است، بدون حواشی زیاد. با این حال، من بسیاری از توکن های ساده مشابه را در دنیای واقعی دیده ام که خیلی خوب کار می کنند.

بررسی اجمالی استاندارد توکن ERC20 در آموزش ساخت توکن روی اتریوم

ERC20 چیست؟

به عبارت ساده، استاندارد ERC20 ، مجموعه ای از توابع است که باید توسط همه توکن های ERC20 پیاده سازی شود تا امکان ادغام با سایر قراردادها، کیف پول ها یا بازارها را داشته باشد. این مجموعه توابع، نسبتاً کوتاه و پایه است.

function totalSupply() public view returns (uint256);
function balanceOf(address tokenOwner) public view returns (uint);
function allowance(address tokenOwner, address spender)
public view returns (uint);
function transfer(address to, uint tokens) public returns (bool);
function approve(address spender, uint tokens) public returns (bool);
function transferFrom(address from, address to, uint tokens) public returns (bool);

عملکردهای ERC20 به یک کاربر خارجی این امکان را می دهد که از دارایی های خود در یک برنامه کیف پول رمزنگاری با مجوز مناسب وجهی را به کاربری دیگر انتقال دهد.

قرارداد هوشمند دو رویداد مشخص را تعریف می کند :

event Approval(address indexed tokenOwner, address indexed spender,
uint tokens);
event Transfer(address indexed from, address indexed to,
uint tokens);

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

بسیاری از توکن های ERC20 علاوه بر توابع استاندارد ERC20 دارای قسمت های اضافی هستند و یا برخی از آنها به بخشی غیر رسمی از استاندارد ERC20 تبدیل شده اند، نه فقط در نوشتن کد بلکه در عمل.

در اینجا چند نمونه از چنین زمینه هایی آورده شده است :

string public constant name;
string public constant symbol;
uint8 public constant decimals;

در اینجا چند نکته در مورد ERC20 و نامگذاری Solid خاطرنشان می شود :

• کارکرد public یعنی قرارداد می تواند خارج از خودش در دسترس باشد.

• view اساساً به معنای ثبات است، یعنی وضعیت داخلی قرارداد با عملکرد تغییر نخواهد کرد

• event روشی است که به Solid امکان می دهد به کاربران اپلیکیشن شما اجازه دهد، در مورد وقایع خاص در قرارداد مطلع شوند

اگر قبلاً مهارت های اساسی Java / JavaScript را داشته باشید، بیشتر سازه های زبان Solid برایتان واضح است.

نوشتن یک توکن ERC20 با Solid در آموزش ساخت توکن روی اتریوم

اکنون که اصول را تشریح کردیم و توضیح دادیم که برای ایجاد یک توکن ERC20 چه چیزی لازم است، وقت آن است که شروع به نوشتن چند تابع کنیم.

ابتدا باید مسیردهی دو شی را تعریف کنیم. این مفهوم Solid برای یک آرایه انجمنی یا کلید / مقدار است :

mapping(address => uint256) balances;
mapping(address => mapping (address => uint256)) allowed;
اصطلاح mapping(address => uint256) یک آرایه انجمنی را تعریف می کند که کلیدهای آن از نوع address است – عددی که برای نشان دادن آدرس های حساب استفاده می شود و مقادیر آن از نوع uint256  است – یک عدد صحیح 256 بیتی که معمولاً برای ذخیره مانده های توکن استفاده می شود.

اولین مسیردهی، balances ، مانده حساب هر حساب مالک را نگه می دارد.

مورد دوم مسیردهی، allowed ، شامل تمام حساب های مصوب برای برداشت از یک حساب معین به همراه مبلغ برداشت برای هر یک است.

همانطور که مشاهده می کنید، مقدار ارزش allowed به خودی خود یک آدرس به مبلغ برداشت مصوب آن است.

این تابع ها به همراه سایر زمینه های دیگر قرارداد در بلاک چین ذخیره می شوند و در نتیجه زمان استخراج، تغییرات ایجاد شده در همه گره های کاربر شبکه منتشر می شوند.

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

اکنون که ساختار داده های مورد نیاز خود را داریم، می توانیم منطق ERC20 را در توابع مناسب بنویسیم.

بررسی اجمالی استاندارد توکن ERC20 در آموزش ساخت توکن روی اتریوم
بررسی اجمالی استاندارد توکن ERC20 در آموزش ساخت توکن روی اتریوم

تنظیم تعداد توکن های ICO در آموزش ساخت توکن روی اتریوم

چگونه تعداد توکن ICO را تنظیم کنیم؟ خوب، تعدادی روش برای تعیین حداکثر تعداد توکن های ICO وجود دارد و ممکن است این موضوع به خودی خود ارزش یک بحث طولانی را داشته باشد.

برای نیازهای آموزش ECR20 ما باید از ساده ترین روش استفاده کنیم :

مقدار کل توکن ها را در زمان ایجاد قرارداد تنظیم کنید و در ابتدا همه آنها را به “صاحب قرارداد” یعنی حساب کاربری که قرارداد هوشمند نصب کرده است اختصاص دهیم :

uint256 totalSupply_;
constructor(uint256 total) public {
totalSupply_ = total;
balances[msg.sender] = _totalSupply;
}

سازنده یک کارکرد ویژه است که به طور خودکار توسط اتریوم ایجاد و پس از استقرار قرارداد خوانده می شود.

به طور معمول برای تنظیم اولیه وضعیت توکن با استفاده از پارامترهای مصوب حساب توسعه دهنده ی قرارداد استفاده می شود.

msg یک متغیر جهانی است که توسط خود اتریوم اعلام و عمومی شده است. که شامل داده های مهم برای انجام قرارداد است.

فیلدی که ما در اینجا از آن استفاده می کنیم : msg.sender شامل یک حساب اتریوم است که عملکرد قرارداد فعلی را انجام می دهد.

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

کل توکن های ایجاد شده را دریافت کنید :

در آموزش ساخت توکن روی اتریوم برای دریافت کل توکن های ایجاد شده به شکل زیر عمل کنید :

function totalSupply() public view returns (uint256) {
return totalSupply_;
}

این عملکرد بدون در نظر گرفتن مالک، تعداد کل نشانگرهای اختصاص داده شده توسط این قرارداد را نمایش می دهد.

مانده حساب مالک را دریافت کنید

function balanceOf(address tokenOwner) public view returns (uint) {
return balances[tokenOwner];
}

balanceOf ، موجودی را که توسط آدرس صاحبان آن مشخص شده است، نشان می دهد.

توکن ها را به یک حساب دیگر انتقال دهید :

function transfer(address receiver,
uint numTokens) public returns (bool) {
require(numTokens <= balances[msg.sender]);
balances[msg.sender] = balances[msg.sender] — numTokens;
balances[receiver] = balances[receiver] + numTokens;
emit Transfer(msg.sender, receiver, numTokens);
return true;
}

همانطور که از نام آن پیداست، از تابع transfer برای جابجایی تعداد توکن های numTokens استفاده می شود که از مانده حساب مالک به کاربر دیگر یا receiver استفاده می شود.

مالک انتقال دهنده، msg.sender است. یعنی کسی که این عملکرد را انجام می دهد، بدین معنی که تنها صاحب توکن ها می توانند آنها را به دیگران منتقل کنند.

راه Solid برای اثبات یک گزاره require است. در این حالت قرارداد بررسی می کند که آیا حساب انتقال دهنده از تراز کافی برای اجرای انتقال برخوردار است یا خیر.

در صورت عدم موفقیت در گزاره require ، معامله بلافاصله برگشت داده می شود و هیچ تغییری در بلاک چین ایجاد نخواهد شد.

درست قبل از اجرا شدن، این عملکرد رویداد ERC20 را شروع می کند و Transfer به کاربران ثبت شده اجازه می دهد تا نسبت به اتمام آن واکنش نشان دهند.

امیدواریم که تا اینجا از آموزش ساخت توکن روی اتریوم استفاده لازم را برده باشید….در ادامه این مقاله مفید با ما همراه باشید.

نماینده را برای برداشتن توکن ها تصویب کنید :

این عملکرد اغلب در بازارهای رمزارز استفاده می شود.

function approve(address delegate,
uint numTokens) public returns (bool) {
allowed[msg.sender][delegate] = numTokens;
emit Approval(msg.sender, delegate, numTokens);
return true;
}

آنچه approve انجام می دهد این است که به یک مالک msg.sender امکان می دهد به یک حساب نماینده – احتمالاً خود بازار – مجوز برداشت توکن ها از حساب و انتقالشان به حساب های دیگر را دهد.

همانطور که مشاهده می کنید، این عملکرد برای سناریوهایی استفاده می شود که دارندگان توکن، آنها را در بازار عرضه می کنند. این امکان را به بازار می دهد تا بدون انتظار برای تأیید قبلی، معامله را نهایی کند.

در پایان اجرای آن، این عملکرد یک رویداد Approval را اجرا می کند.

تعداد توکن های تایید شده برای برداشت را دریافت کنید – آموزش ساخت توکن روی اتریوم

function allowance(address owner,
address delegate) public view returns (uint) {
return allowed[owner][delegate];
}

approve همانطور که عملکرد تأیید شده است، تعداد توکن های تصویب شده فعلی توسط یک مالک را به یک نماینده خاص برمی گرداند.

انتقال توکن ها توسط نماینده در آموزش ساخت توکن روی اتریوم

تابع transferFrom همکار تابع approve است، که قبلاً در مورد آن بحث کردیم. اجازه می دهد تا یک نماینده مجاز شده برای برداشت، وجوه مالک را به یک حساب شخص ثالث انتقال دهد.

function transferFrom(address owner, address buyer,
uint numTokens) public returns (bool) {
require(numTokens <= balances[owner]);
require(numTokens <= allowed[owner][msg.sender]);
balances[owner] = balances[owner] — numTokens;
allowed[owner][msg.sender] =
allowed[from][msg.sender] — numTokens;
balances[buyer] = balances[buyer] + numTokens;
Transfer(owner, buyer, numTokens);
return true;
}

دو گزاره require در ابتدای کار صحت معامله را تأیید می کنند، یعنی اینکه مالک دارای توکن های کافی برای انتقال است و نماینده برای برداشت (حداقل) numTokens اجازه دارد.

علاوه بر انتقال مبلغ numTokens از مالک به خریدار، این تابع مبلغ numTokens را از مبلغ برداشت مجاز نماینده کسر می کند.

این اساساً به نماینده ای با اجازه برداشت مشخص امکان می دهد تا مبلغ را به چندین برداشت جداگانه تقسیم کند، که این در بازار عرف است.

تا اینجا ما یک اجرای ERC20 معتبر داریم. با این حال، ما می خواهیم یک قدم جلوتر برویم، زیرا می خواهیم یک توکن با قدرت حضور در بازار داشته باشیم.

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

کتابخانه Solid SafeMath

SafeMath یک کتابخانه Solid است که با هدف مقابله با هکرهایی که از طریق یک روش شناخته شده قراردادها را نقض می کند، ایجاد شده است.

در چنین حمله ای، هکر قرارداد را با قرار دادن اعداد صحیحی که از حداکثر مقادیر مجاز قراردادها بیشتر است، مجبور می کند تا از مقادیر عددی نادرست استفاده کند.

SafeMath با آزمایش کردن اعداد، مقادیر غیرمجاز را مسدود می کند، بنابراین خطر حمله سرریز را از بین می برد. كتابخانه آنقدر كوچك است كه تأثیر آن بر اندازه قرارداد حداقل است، بدون هیچ گونه كار و ایحاد هزینه اضافی برای ذخیره داده ها.

بیایید SafeMath را به کدمان اضافه کنیم:

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 برای تأیید صحت پارامترهای منتقل شده از assert استفاده می کند. در صورت عدم موفقیت، اجرای عملکرد بلافاصله متوقف می شود و کلیه تغییرات بلاک چین باید به عقب برگردد.

در مرحله بعد، ما گزاره زیر را برای معرفی کتابخانه به گرداننده solid اضافه خواهیم کرد :

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);

تجمیع همه ی گزاره ها با هم در آموزش ساخت توکن روی اتریوم

در سالیدیتی ، کارکردها و وقایع یک قرارداد هوشمند در یک موجودیت موسوم به contract ، تجمیع می شود که می توانید در خفا آن را “کلاس بلاک چین”بنامید.

قرارداد سازگار با ERC20 ای که ایجاد کردیم، بخش عمده ی کد ماست. قسمت ها و نام ها و نمادها می توانند در صورت تمایل تغییر کنند. بیشتر توکن ها مقدار اعشار را در 18 نگه می دارند، بنابراین ما همین کار را خواهیم کرد.

استقرار قرارداد اتریوم

زمان آن فرا رسیده است که در آموزش ساخت توکن روی اتریوم ، قراردادمان را به بلاک چین منتقل کنیم. پس از استقرار، قرارداد ما به کلیه گره های شرکت کننده در شبکه منتقل می شود.

هرگونه تغییر و تحول در قرارداد بر همه گره های شرکت کننده تاثیر می گذارد.

توسعه دهندگان اتریوم معمولاً از ابزارهای استقرار مانند Truffle استفاده می کنند. Truffle برای نیازهای محدود این مقاله بیش از حد امکانات دارد و یک ابزار آنلاین ساده به نام Remix نیز کافی خواهد بود.

برای استفاده از آن ، شما باید افزونه ی کیف پول متامسک MetaMask را در مرورگر خود نصب کنید و یک حساب Rinkeby (شبکه آزمایش اتریوم) با حداقل مقداری اتر Rinkeby در آن ایجاد کنید. اینها مراحل نسبتاً ساده ای هستند، بنابراین ما به جزئیات آن نمی پردازیم.

در صورت نداشتن اطلاعات در این زمینه ، برای پیوندهای بارگیری به آموزش کیف پول متامسک MetaMask و Rinkeby بروید و مسیرهای نصب و طریقه استفاده از آن را یاد بگیرید.

ادامه آموزش ساخت توکن روی اتریوم

اکنون که همه کارهای لازم را انجام داده ایم، به سمت Remix خواهیم رفت و کد بالا از جمله خط پراگما و کتابخانه SafeMath را در ویرایشگر آنلاین قرار می دهیم.

سپس، به برگه دوم سمت راست به نام “” Run می رویم و روی ” Deploy” کلیک می کنیم. یک پنجره MetaMask ظاهر می شود که از ما می خواهد تا تراکنش را تأیید کنیم. البته، ما آن را تأیید خواهیم کرد.

استقرار قرارداد اتریوم در بلاک چین
استقرار قرارداد اتریوم در بلاک چین

فیلد سبز : مطمئن شوید وجه تراکنش Rinkeby است

فیلد آبی : مقدار کل توکن خود را تنظیم کنید

فیلد قرمز : استقرار!

Gist: https://gist.github.com/giladHaimov/8e81dbde10c9aeff69a1d683ed6870be#file-basicerc20-sol

تبریک می گویم! شما به تازگی اولین توکن ERC20 خود را مانند یک حرفه ای واقعی در بلاک چین اتریوم مستقر کرده اید.

همانطور که وعده داده بودیم، این توکن ساده و سبک است اما در عین حال کاملاً کاربردی و مطابق با استاندارد ERC20 است و با MathSafe ایمن و آماده ی خرید، پرداخت و انتقال در کل بلاک چین است.

اینهم از آموزش ساخت توکن روی اتریوم بصورت ساده و کاربردی البته برای کسانی که با اصول اولیه ساخت توکن آشنایی دارند.

آیا همه قردادها به این میزان کوتاه و ساده هستند؟

نه، حتی نزدیک به این هم نیستند، زیرا آموزش کوتاه ما بسیار مبتدیانه است و صرفاً با یک جنبه از توسعه قراردادهای هوشمند سروکار دارد.

بسته به منطق كسب و كار، الگوسازی شما از تعامل با كاربران، اجازه برای ماندگاری توکن ها و سوختنشان، توافق های هوشمند می توانند بسیار پیچیده تر باشند. مجموعه ای از توابع مجاز سرپرست، و غیره. شما اکنون فقط یک شمای کلی را فرا گرفته اید.

با این وجود، اگر بتوانید آنچه را که ما در اینجا انجام داده ایم، تکرار کنید، یک پایه محکم دارید تا دانش خود را گسترش داده و در صورت لزوم به سمت نوشتن قراردادهای پیچیده تر بروید.

5/5 (1 نظر)

درباره ی ندا رحیمی

نویسنده و محقق در زمینه ارزهای دیجیتال و بلاک چین و کاربرد آنها در صنایع مختلف

مطلب پیشنهادی

بیتکوین-در-سال-2020

بیت کوین در سال 2020 هنوز هم ارزان محسوب می‌شود؟ آیا برای خرید بیتکوین دیر شده است؟

علی رغم افزایش بیش از 42 درصدی قیمت بیت کوین در سال 2020، اصول بیت …

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

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