اتریومباتقراردادهای هوشمندکوین ایرانکیف پولمطالب سودمند

چطور می توانیم یک توسعه دهنده اتریوم (Ethereum) شویم؟ (قسمت دوم)

در قسمت قبل با عملکرد شبکه اتریوم (Ethereum)، قرارداد هوشمند و نحوه استخراج رمزارز آن آشنا شدیم. این قسمت به طور خاص به Solidity، Dapp و کیف پول می پردازد.

Solidity چیست؟ هر کسی که قصد ایجاد یک قرارداد هوشمند را دارد، یادگیری زبان برنامه نویسی Solidity یک نیاز مبرم برای او محسوب می شود. این مقاله یک راهنمای دقیق درمورد این زبان است. در ادامه یک مرور کلی از آن ارائه می دهیم؛ سپس به بررسی کیف پول های اتریوم می پردازیم. Solidity توسط Gavin Wood، Christian Reitwiessner، Alex Beregszaszi، Yoichi Hirai و چندین نفر از عوامل اصلی و سابق اتریوم (Ethereum) توسعه داده شد تا توانایی نوشتن قرارداد های هوشمند بر بستر پلتفرم های بلاکچینی همچون اتریوم (Ethereum)، فراهم شود.

چطور می توانیم یک توسعه دهنده اتریوم (Ethereum) شویم؟ (قسمت نخست)

Solidity هدفمندانه طراحی شده است، زبانی که وابسته به نوع متغیر نیست (loosely-typed language) و بسیار شبیه به ECMAScript (Javascript) می باشد. بهتر است برخی نکات کلیدی از سند منطقی طراحی اتریوم را یادآوری کنیم. مثلا این که با مدل stack-and-memory با سایز کلمات اجرایی ۳۲ بایت کار می کند.

چطور می توانیم یک توسعه دهنده اتریوم (Ethereum) شویم؟ (قسمت دوم)
How to become an ethereum developer/ Source?

ماشین مجازی اتریوم (EVM) دسترسی به برنامه های «stake» را به ما می دهد که شبیه به یک فضای نگاشتن، می توان آدرس های حافظه را برای ایجاد یک برنامه Counter loop/jump (برای کنترل متوالی برنامه) به آن چسباند؛ نیز، یک «حافظه» موقت قابل ارتقا و یک «storage» دائمی که در واقع در یک بلاکچین دائمی نوشته شده است و مهمتر آنکه EVM نیازمند قاطعیت کامل در قرارداد های هوشمند است.

توجه: اتریوم در حال برنامه ریزی است تا در نهایت زبان خود را از Solidity به Viper تغییر دهد.

با این تفاسیر، پیش از ادامه بحث اجازه دهید یک مثال از قرارداد پایه Solidity بزنیم (کد ها از github گرفته شده اند.)

اجازه دهید یک حلقه while ساده را در Solidity اجرا کنیم:

contract BasicIterator
{
address creator; // reserve one “address”-type spot
uint8[10] integers; // reserve a chunk of storage for 10 8-bit unsigned integers in an array
function BasicIterator()
{
creator = msg.sender;
uint8 x = 0;
//Section 1: Assigning values
while(x < integers.length) {
integers[x] = x;
x++;
} }
function getSum() constant returns (uint) {
uint8 sum = 0;
uint8 x = 0;
//Section 2: Adding the integers in an array.
while(x < integers.length) {
sum = sum + integers[x];
x++;
}
return sum;
}
// Section 3: Killing the contract
function kill()
{
if (msg.sender == creator)
{
suicide(creator);
}
}
}

خب، حال بیایید کد را تحلیل کنیم. برای فهم ساده تر، کد را به سه قسمت تقسیم می کنیم:

بخش ۱: اختصاص مقادیر

در گام اول، یک آرایه از «اعداد صحیح» را در 10 8-bit با اعداد صحیح بدون علامت پر می کنیم. این کار را با یک حلقه while  انجام می دهیم. اجازه دهید نگاهی به اتفاقات درون حلقه while بیندازیم.

while(x < integers.length) {   integers[x] = x;   x++;   }

توجه کنید که مقدار صفر را به متغیر صحیح (integer) x داده بودیم. حلقه while از 0 تا integers.length اجرا می شود. Integers.length یک تابع است که حداکثر ظرفیت آرایه را باز می گرداند. بنا براین، اگر می خواهیم یک آرایه 10 عدد صحیح داشته باشد، arrayname.length، ۱۰ مقدار باز می گرداند. در حلقه بالا، مقدار x از ۰ تا ۹ (<۱۰) بود و مقدار خود را به آرایه عدد صحیح منتقل می کرد. بنابراین، پس از پایان حلقه، اعداد صحیح مقادیر زیر را دارند: ۰،۱،۲،۳،۴،۵،۶،۷،۸،۹.

بخش دوم: اضافه کردن محتوای آرایه‌ای

قصد داریم محتویات آرایه خود را به تابع getSum اضافه کنیم. روشی که برای انجام این کار در نظر می‌گیریم، تکرار همان حلقه while، مشابه کاری که در بالا انجام شد، است و متغیر «sum» را برای افزودن محتوا از آرایه استفاده می کنیم.

بخش سوم: خاتمه قرارداد

این تابع قرارداد را خاتمه می دهد و سرمایه ‌ی باقی مانده در قرارداد را به سازنده قرارداد باز می گرداند.

زمانی که راجع به اشتیاق و انگیزه‌ ی پشت پرده‌ی solidity سؤال شد، Dr.Gavin Woods گفت:

«این زبان [solidity] قرار بود تا یک ابزار سطح بالا برای توسعه‌ی قرارداد هایی باشد که در نهایت می‌توانند هم به توسعه دهندگان و هم به کاربر ها اطلاعات مفیدی راجع به این که کد چطور کار می کند، بدهند. برای کمک به چنین برنامه ای، من NatSpec، یک نوع فرمت قرارداد اسنادی، را طراحی کردم و آن را شهروند درجه یک Solidity قرار دادم. همچنین یک زیرمجموعه‌ی زبان رسمی اصلاحی را (که هنوز اجرایی نشده است) برای به حداکثر رساندن انواع ضمانتنامه ‌های اعتباری که قابل ساخته شدن هستند را پیشنهاد دادم.

من رویداد هایی همچون شهروند درجه یک را در زبان Solidity برای تهیه ی یک چکیده خوب برای LOG های مشابه در فرم به فراخوان های تابعی، معرفی کردم. الهام این کار را از  Qt meta-object سیستم های «signals» گرفتم.

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

Ether و Gas چه هستند؟

Ether توکن اصلی اکوسیستم است. همان چیزی که به طرفین قرارداد انگیزه می دهد تا قرارداد هوشمندشان را به پایان برسانند.

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

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

نمودار زیر میانگین قیمت سوخت در Wei را نشان می دهد.

Ether و Gas چه هستند؟
What is Ether and Gas?

Gas مایه حیات اتریوم است

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

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

Gas مایه حیات اتریوم است
How crucial gas might be for ethereum network

در واقع، همان طور که می بینید، در تراکنشی به ارزش ۰.۰۱ اتر تنها ۰.۰۰۰۰۰۰۰۰۰۰۰۰۰۲  اتر به عنوان کارمزد تراکنش محاسبه می شود که از ۰.۰۰۰۰۰۱$ کمتر است.

بنابراین، همان طور که مشاهده می کنید، استخراج کنندگان اتریوم، کارمزد تراکنش بسیار پایینی دریافت می کنند. بدیهی است که جمع آوری کارمزد تراکنش ها وظیفه ثانویه استخراج کنندگان است و وظیفه اصلی آنها استخراج کردن است.

ایجاد Dapp ها و ICO ها

یکی از هیجان انگیز ترین ویژگی های اتریوم (Ethereum) به وضوح این است که پلتفرمی به کاربران ارائه می دهد تا اپلیکیشن های غیر متمرکز (Dapp) خودشان را بسازند.

هرکسی در هر جایی می تواند Dapp خودش را بسازد و از طریق آن و فقط با ارائه یک وایت پیپر (whitepaper) برای یک ICO به جذب سرمایه بپردازد.

نوشته های مرتبط: همه چیز در مورد ICO ها!لیست کردن توکن یک ICO در صرافی ها چقدر هزینه دارد؟

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

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

در واقع، در ماه می سال ۲۰۱۷، اتریوم (Ethereum) ۲۵۰۰۰ نود داشت؛ در مقایسه با ۷۰۰۰ نود بیت کوین! که کمی بیش از سه برابر است. در واقع، تعداد نود های اتریوم از آپریل تا می ۸۱٪ افزایش داشتند … حدودا دو برابر!

 

می خواهم توسعه دهنده Dapp باشم

راه های بسیاری برای اتصال به شبکه اتریوم (Ethereum) دارید. یکی از ساده ترین راه ها استفاده از مرورگر Mist است. Mist یک رابط کاربرپسند و کیف پول دیجیتال را برای معامله و ذخیره Ether همچنین نوشتن، مدیریت، گسترش و استفاده از قرارداد های هوشمند فراهم می کند. مانند مرورگر های وب که برای دسترسی دادن و کمک کردن، افراد را در اینترنت هدایت می کنند؛ Mist یک پورتال در جهان برنامه های بلاکچینی غیر متمرکز فراهم می کند.

افزونه مرورگر MetaMask نیز وجود دارد که گوگل کروم را به مرورگر اتریوم (Ethereum) تبدیل می کند. MetaMask به همه این امکان را می دهد که به راحتی اپلیکیشن های غیر متمرکز را اجرا کنند و یا توسعه دهند. اگر چه در ابتدا به عنوان یک افزونه Chrome ساخته شد، MetaMask در نهایت از فایرفاکس و طیف وسیعی از سایر پلتفرم های وب نیز پشتیبانی خواهد کرد.

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

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

استفاده از کیف پول های اتریوم (Ethereum)

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

نوشته مرتبط: ده کیف پول برتر اتریوم (Ethereum)

در واقع، این بدان معناست که حفظ و ثبت کلید خصوصی اهمیت بسیار بالایی دارد؛ چرا که گم کردن آن معادل با از دست دادن تمام محتویات کیف پول کاغذی شماست (این مساله در مورد تمام کیف پول ها صدق می کند).

کیف پول کاغذی چیست؟

کیف پول کاغذی یک روش ساده نگهداری و ذخیره سازی رمزارز ها به صورت آفلاین است.

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

ایجاد یک کیف پول کاغذی

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

اگر با خواندن این مطالب گیج شدید، اصلا نگران نباشید. شما نیاز به هیچ گونه دانش برنامه نویسی یا رمزنگاری ندارید. تمام چیزی که نیاز دارید یک کامپیوتر، اتصال به اینترنت و چیز هایی برای ذخیره کلید هایتان است:

راهنمای گام به گام ساخت والت کاغذی در سایت Myetherwallet  برای نگهداری رمزارز و توکن های بر پایه اتریوم (Ethereum)

توجه!

دیدگاه هایی که در این مقاله ارائه شده اند، متعلق به نویسنده می باشند و لزوماً مربوط به Coiniran نمی باشد و نباید به آن نسبت داده شود.

منبع

 

نوشته های مشابه

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

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

بستن