اس کے علاوہ ، اس نے ایک بار پھر اس بات کا اشارہ کیا ہے کہ اس کے بارے میں کیا خیال ہے کہ اس کی وجہ سے اس کا اثر پڑتا ہے۔
یہ مضمون میری مارچ کے آخر میں LeanCloud پر ہونے والی ٹیکنالوجی کی شیئرنگ سے مرتب کیا گیا ہے، اور یہ فرض کیا گیا ہے کہ قارئین کو بٹ کوائن کے نفاذ کے بارے میں بنیادی علم اور ابتدائی معلومات ہیں۔
بلاکچین کو بلاکچین بھی کہا جاتا ہے اور اسے ہیش ٹری کے طور پر دیکھا جاسکتا ہے ، اور اسی وجہ سے اس میں ہیش ٹری کی طرح کی خصوصیات ہیں:

تصویر بشکریہ<http://happypeter.github.io/bitcoin_basics/book/017_merkle_tree.html
یعنی ایک درخت نما ڈھانچے میں، ہر ٹرمینل نوڈ میں ایک بکھرے ہوئے قدر ہوتی ہے، جبکہ غیر ٹرمینل نوڈ کی بکھرے ہوئے قدر اس کے تمام براہ راست ذیلی نوڈس کے بکھرے ہوئے قدر سے آتی ہے، اس لئے ہر نوڈ براہ راست یا بالواسطہ طور پر اپنے تمام ذیلی نوڈس کی معلومات پر مشتمل ہوتا ہے۔ اس طرح، جب بھی کسی ایک ٹرمینل نوڈ کی بکھرے ہوئے قدر میں تبدیلی آتی ہے، تو اس کے تمام پیرنٹ نوڈس کی بکھرے ہوئے قدر میں بھی تبدیلی آتی ہے، اور جڑ نوڈس بھی بدلنا ضروری ہے۔
میں HashTree کے بارے میں ایک ایپلی کیشن بتا سکتا ہوں: “100٪ ریزرو ثبوت” جو کہ “زیرو علم ثبوت” کی قسم کا سوال ہے۔ ہم اس منظر نامے پر غور کر سکتے ہیں کہ Bitcion کے مالک کو تجارت کرنے کے لئے بٹ کوائنز کو ایک ایکسچینج میں رکھنا پڑتا ہے، اور نظریاتی طور پر ایکسچینج اس رقم کو (تمام صارفین کے جمع کردہ اکاؤنٹ بیلنس) اس کے استعمال کے لئے لے جا سکتا ہے، جو صارفین کو نہیں دیکھنا چاہتا ہے، لیکن ایکسچینج خود کو صاف کرنا چاہتا ہے: ایکسچینج سب سے پہلے اپنے پاس موجود بٹ کوائنز کا ایک ایڈریس شائع کرتا ہے، اور سب کو اس بات کی تصدیق ہوتی ہے کہ ایکسچینج کے پاس ریزرو کے طور پر بٹ کوائنز موجود ہیں، لیکن یہ کیسے ثابت ہوتا ہے کہ یہ رقم واقعی تمام صارفین کے مجموعی بیلنس سے زیادہ ہے؟ دوسرے الفاظ میں، ہر صارف کو اپنے بیلنس کو کس طرح تسلیم کیا جا سکتا ہے، اس صورت میں کہ ہر صارف کے بیلنس کو شائع نہیں کیا جاتا ہے (جو صارف کی رازداری کو ظاہر کرتا ہے) ؟

تصویر بشکریہ<http://blog.bifubao.com/2014/03/16/proof-of-reserves
ہم ایک HashTree تعمیر کر سکتے ہیں جہاں تمام اختتامی نوڈس ایک صارف کی نمائندگی کرتے ہیں، جس میں صارف کا بیلنس ہوتا ہےΣ) اور صارف شناخت (جیسے میل باکس ایڈریس) کی کھیپ (h), اور والد نوڈس اس کے بچوں کے نوڈس کے بیلنس کی مجموعی رقم پر مشتمل ہے ((sum) اور تمام ذیلی نوڈس کی معلومات کا ایک ہیرا (((hashہر صارف کے لئے ، صرف اس کے اپنے اختتامی نوڈس اور بھائی نوڈس ، اس کے تمام والد نوڈس اور اس کے والد نوڈس کے بھائی نوڈس دکھائیں ، کیونکہ یہ صارف اپنے والد کے نوڈس میں شامل ہونے کے لئے اپنے توازن کی تصدیق کر سکتا ہے ، اور آخر میں جڑ کے نوڈس میں شامل ہونے کے لئے۔
اس طرح ، ہر صارف کو جو معلومات دکھائی جاتی ہے وہ صرف اس کی اپنی معلومات اور کچھ مجموعی معلومات ہیں۔ ہر صارف اپنے بیلنس کی تصدیق کر سکتا ہے کہ اس کے بیلنس کو کسی اور کے بیلنس کے بارے میں آگاہ کیے بغیر جڑ نوڈ میں شامل کیا گیا ہے۔hکے لئےe4df9d12اس نوڈ کو صارف کی نمائندگی کرنے والا اختتامی نوڈ نہیں ہونا چاہئے ، بلکہ یہ ایک مجموعی انفارمیشن نوڈ ہونا چاہئے ((اس نوڈ میں ایک 3333 بیلنس والا صارف ، اور ایک 0 بیلنس والا فرضی صارف شامل ہوسکتا ہے) تاکہ کسی صارف کی رازداری کی معلومات کو ضائع نہ کیا جاسکے۔
اس کے بعد ہم گٹ پر نظر ڈالتے ہیں، جو ایک بہت ہی عام بلاکچین ایپلی کیشن ہے۔

تصویر بشکریہhttp://gitbook.liuhui998.com/1_2.html (GPL v2)
گٹ میں ، چاہے فائل (بلب) ، انڈیکس (شجر) یا کمیٹ (تعمیل) ، ہر ایک میں ایک ہیش ہے جس کا تعین اس کے مواد سے ہوتا ہے ، اگر دو اشیاء میں ایک ہی مواد ہوتا ہے تو ، ایک ہی ہیش ہوتا ہے۔ گٹ میں ، پورے گودام کی تاریخ ایک بلاکچین ہے ، ہر کمیٹ ایک بلاک کے برابر ہے ، کمیٹ میں پچھلے کمیٹ کا ہیش اور اس بار متعلقہ اشیاء کا ہیش شامل ہے ، کمیٹ خود ہی اس کے مواد اور ان عناصر کے ذریعہ طے شدہ ہے۔
گٹ نے بلاکچین کا استعمال کرتے ہوئے اپنے ذخیرے کے لئے ایک منفرد تاریخ کا تعین کیا۔ اگر ایک کمیٹ کو تبدیل کیا گیا تو اس کے بعد آنے والے تمام کمیٹس کی ہیش تبدیل ہوجاتی ہے۔ یقینا ، چونکہ گٹ صرف ایک ورژن کنٹرول ٹول ہے ، اس سے آپ کو تاریخ میں ترمیم کرنے سے نہیں روکتا ہے (بعد میں ، آپ دوبارہ بیس کرسکتے ہیں)push --forceاس کے علاوہ ، یہ بھی کہا گیا ہے کہ یہ تبدیلیاں تمام شریک مصنفین کے لئے قابل ذکر ہوں گی۔
ایک اور کلاسیکی بلاکچین ایپلی کیشن بٹ کوائن ہے ، اور یہ بٹ کوائن ہی ہے جس نے بلاکچین کی اصطلاح کو عام کیا ہے (اگرچہ یہ تصور ہمیشہ سے موجود ہے):

تصویر بشکریہhttps://commons.wikimedia.org/wiki/File:Bitcoin_Block_Data.png(CC-BY-SA-3.0)
بٹ کوائن میں، ہر بلاک میں ٹرانزیکشنز اور پچھلے بلاک کے ہیش شامل ہوتے ہیں، جبکہ پوری بلاکچین ایک واحد، وکندریقرت اکاؤنٹ بناتی ہے۔ چونکہ ایک نیا بلاک ہر دس منٹ میں پیدا ہوتا ہے، اور ایک بار جب بلاک پیدا ہوتا ہے تو یہ ہمیشہ کے لئے بلاکچین پر رہتا ہے، لہذا بلاکچین نے ٹرانزیکشنز کی ترتیب کو طے کیا ہے، اور اس بات کا تعین کرنے کے لئے کہ آیا ایک اکاؤنٹ میں ایک ٹرانزیکشن شروع کرنے کے لئے کافی بیلنس ہے.
اس اشتراک کا پہلا حصہ بٹ کوائن کے بارے میں ایک مختصر جائزہ ہے۔
بٹ کوائن میں بلاکس کی تخلیق “کام کی مقدار کے ثبوت” کے ذریعہ کی جاتی ہے ، یعنی ، “کان کنی” میں حصہ لینے والے تمام “کان کنوں” کو کمپیوٹنگ طاقت سے متعلق ، بے ترتیب نوعیت کا ایک چھوٹا سا حساب لگانا پڑتا ہے ، جب تک کہ ایک خاص شرط کو پورا کرنے والے بے ترتیب نمبر کا حساب نہ کیا جائے ، تاکہ بلاک جاری کرنے کا حق حاصل کیا جاسکے۔
ڈیفالٹ کی طرف سے، ہر کان کن ہمیشہ “سب سے طویل سلسلہ” پر بھروسہ کرتا ہے، اور اس کی بنیاد پر اگلے بلاک کا حساب لگاتا ہے جو سب سے طویل سلسلہ ہے جو قواعد کو پورا کرتا ہے، دوسری صورت میں آپ کی کمپیوٹنگ طاقت کو ضائع کر دیا جائے گا کیونکہ دوسرے کان کن ہمیشہ سب سے طویل سلسلہ کو تسلیم کرتے ہیں، اور اگر آپ سب سے طویل سلسلہ کی بنیاد پر کام شروع نہیں کرتے ہیں، تو آپ کو تمام دیگر کان کنوں کی کمپیوٹنگ طاقت کے خلاف مقابلہ کرنا ہوگا.
بٹ کوائن کو ہر 10 منٹ میں ایک نیا بلاک بنانے کے لئے ڈیزائن کیا گیا ہے۔ اس وقت کو ہم سب نے مل کر پچھلے کچھ بلاکس کے وقفے کو دیکھ کر حاصل کیا ہے تاکہ اگلے بلاک کی تخلیق کی شرائط کی دشواری کو ایڈجسٹ کیا جاسکے۔ جب پچھلے کچھ بلاکس کی تخلیق کی رفتار توقع سے زیادہ ہے تو ، ہم یہ سمجھیں گے کہ اگلے بلاک کی تخلیق میں زیادہ مشکل ہونا چاہئے۔
عام طور پر ، ہر بٹ کوائن نوڈ کو مکمل بلاکچین ڈیٹا کو ذخیرہ کرنے کی ضرورت ہوتی ہے تاکہ یہ یقینی بنایا جاسکے کہ کوئی ٹرانزیکشن قانونی ہے یا نہیں ، لیکن اب مکمل بلاکچین 66 جی ہے اور یہ ہر دن 0.1 جی کی رفتار سے بڑھ رہی ہے۔ اگر بٹ کوائن کے ہر صارف کو مکمل بلاکچین کو ذخیرہ کرنے کی ضرورت ہو تو یہ بہت زیادہ تکلیف دہ نہیں ہے۔ لہذا ، بٹ کوائن کے پاس ایک “آسان ادائیگی کی تصدیق” (ایس پی وی) کا طریقہ کار ہے ، جسے ہلکا پھلکا “کلائنٹ” کہا جاتا ہے۔ اس کے بجائے پورے بلاکچین کو ذخیرہ نہ کرنے کا انتخاب کریں ، لیکن صرف ایک یا ایک سے زیادہ مکمل نوڈس پر منسلک کریں ، تمام بلاک کے عناصر کو ذخیرہ کریں ، اور پھر ہر بلاک کو اس بات کی تصدیق کریں کہ اس میں کتنا کام ہے ، ہر بار جب آپ کو ٹرانزیکشن کی تصدیق کرنے کی ضرورت ہو تو ، مکمل بلاکچین نوڈس سے پوچھیں کہ یہ بلاک کہاں ہے ، اور پھر اس ٹرانزیکشن کو حاصل کرنے کے لئے ضروری معلومات حاصل کریں تاکہ اس بات کی تصدیق کی جاسکے کہ آیا یہ بلاک بلاک میں بھی موجود ہے۔

تصویر بشکریہ<https://github.com/ethereum/wiki/wiki/White-Paper
دراصل ہم بٹ کوائن کے بلاکچین کو ایک “ریاست مشین” کے طور پر تصور کرسکتے ہیں ، پورا بلاکچین ایک اسٹیٹڈ “لیجر” ہے ، جس میں ہر ٹرانزیکشن ریکارڈ محفوظ ہوتا ہے ، اور ان ٹرانزیکشن ریکارڈوں کے مطابق ، پورے لیجر کی کسی بھی وقت کی “ریاست” کا حساب لگایا جاسکتا ہے ، یعنی بٹ کوائن نیٹ ورک میں ہر اکاؤنٹ میں کتنا بیلنس ہے۔ ہر ٹرانزیکشن ریاست میں ایک تبدیلی ہے ، اور ہر بلاک پورے بٹ کوائن نیٹ ورک کے کان کنوں کی موجودہ حالت کے بارے میں ایک “اتفاق” ہے ، کیونکہ بٹ کوائن ہر 10 منٹ میں ایک نیا بلاک تیار کرتا ہے ، جو ہر 10 منٹ میں ایک بار تمام اکاؤنٹس کے بیلنس پر اتفاق رائے حاصل کرنے کے مترادف ہے۔
بٹ کوائن کی بنیاد پر بہت سے دیگر کریپٹو کرنسیوں کو بھی تیار کیا گیا ہے ، جن کو اکثر “الٹ سکے” کہا جاتا ہے۔ عام طور پر اس طرح کی کرنسیوں کے دو نفاذ ہیں:
پہلا یہ ہے کہ یہ اپنے نیٹ ورک کا استعمال کرتا ہے جو بٹ کوائن سے الگ ہے۔ اس کا فائدہ یہ ہے کہ کوائن اپنے پروٹوکول اور قواعد کو بہت زیادہ لچکدار بنا سکتا ہے۔ لیکن بٹ کوائن کے برابر صارفین کی تعداد تک پہنچنا مشکل ہے ، لہذا بدنیتی پر مبنی حملوں کے خلاف اس کا دفاع بہت کمزور ہوگا۔
دوسرا طریقہ یہ ہے کہ بٹ کوائن کے نیٹ ورک کو “میٹا پروٹوکول” کا استعمال کریں ، جس میں بٹکوئن کے ٹرانزیکشن پر اپنی مرضی کے مطابق معلومات شامل کی جائیں تاکہ اپنے منطق کو نافذ کیا جاسکے۔ اس طرح کا فائدہ یہ ہے کہ بٹ کوائن کی کمپیوٹنگ طاقت کا استعمال حملوں سے بچنے کے لئے کیا جاسکتا ہے ، لیکن اس کے ساتھ ہی بٹ کوائن نیٹ ورک پر انحصار کرنے کی وجہ سے ، تمام کان کنوں کو نقل کے قواعد پر عمل نہیں کرنا پڑتا ہے۔ لہذا ، بلاک کو بلاکچین میں داخل ہونے سے روکنا ممکن نہیں ہے ، صرف کلائنٹ پر غیر قانونی ٹرانزیکشنوں کو فلٹر کرنا ممکن ہے ، اور نہ ہی پہلے بیان کردہ بٹ کوائن کی پیش کردہ آسان تصدیق کی خصوصیت کو استعمال کیا جاسکتا ہے۔
اس طرح کی نقلوں کے لئے ، بٹ کوائن ایک ایسا بلاکچین مہیا کرسکتا ہے جس میں بڑی تعداد میں کان کنوں کی شرکت ہوتی ہے ، جو بڑے پیمانے پر بدنیتی پر مبنی حملوں سے بچنے کے قابل ہوتا ہے ، جبکہ بٹ کوائن کی ٹرانزیکشن پر اپنی مرضی کے مطابق ڈیٹا بھی ہوسکتا ہے ، جس سے نقل کو لاگو کرنے کے لئے کچھ جگہ باقی رہ جاتی ہے۔
Bitocin نے بھی ایک فراہم کی ہے.Bitcoin Scriptاس سے زیادہ پیچیدہ ٹرانزیکشنز کو انجام دینے کے لئے استعمال کیا جاتا ہے۔ لیکن چونکہ یہ بٹ کوائن کا بنیادی فنکشن نہیں ہے ، لہذا صرف نسبتا simple آسان آپریشنز انجام دیئے جاسکتے ہیں ، بلاکچین پر ڈیٹا کو صرف بہت ہی محدود طریقے سے پڑھا جاسکتا ہے ، اور چکروں کی کمی کی وجہ سے ، عام ، ٹورین مکمل منطق لکھنا مشکل ہے۔

تصویر بشکریہhttps://www.ethereum.org/assets (CC 3.0)
ایتھرئم ایک بلاکچین پر مبنی ، وکندریقرت ایپلی کیشن پلیٹ فارم ہے جو بٹ کوائن کے انفراسٹرکچر کو ایک عام پلیٹ فارم کے طور پر بناتا ہے اور بٹ کوائن نیٹ ورک کی کچھ لاپتہ خصوصیات کو پورا کرتا ہے تاکہ ڈویلپرز اپنی وکندریقرت ایپلی کیشنز کو بلاکچین پر چلائیں۔
ایتھرئم کے بارے میں تفصیل سے بات کرنے سے پہلے ، میں آپ کو دو بنیادی اصولوں کے بارے میں بتاتا ہوں جو میں سمجھتا ہوں کہ ایک وکندریقرت نیٹ ورک ہے۔ خفیہ کاری اور گیمنگ۔ خفیہ کاری ، قدرتی طور پر ، صرف عوامی کلیدی خفیہ کاری ، ڈیجیٹل دستخط ، اسٹریچنگ اور خلاصہ الگورتھم کے ذریعہ ریاضی سے حفاظت کی ضمانت ہے۔ اور گیمنگ یہ ہے کہ وکندریقرت نیٹ ورک میں ، کوئی بھی ، بشمول وہ لوگ جو اس نیٹ ورک کو جان بوجھ کر حملہ کرنا چاہتے ہیں ، اس میں حصہ لے سکتے ہیں۔
تاہم ، ڈیجیٹل دنیا میں ، اعداد و شمار کو جاری کرنے میں کوئی لاگت نہیں آتی ہے ، اور اس میں کوئی “فائدہ” اور “نقصان” نہیں ہوتا ہے ، لہذا “فائدہ” کی تعریف کرنے کے لئے جسمانی دنیا سے کسی طرح کا رابطہ قائم کرنا ضروری ہے۔ مثال کے طور پر ، بٹوکین نیٹ ورک میں ، اگر حملہ آور مصنوعی طور پر بلک چین کی سمت تبدیل کرنا چاہتا ہے تو ، اس میں تمام دیگر کان کنوں سے زیادہ کمپیوٹنگ طاقت کی ضرورت ہوگی۔
لہذا یہ کہنا ہے کہ وکندریقرت نیٹ ورک میں ، تمام مسائل “ٹیکنالوجی” کے ذریعہ حل نہیں ہوتے ہیں۔ جہاں ٹیکنالوجی نہیں پہنچتی ہے ، اسے منافع کے ذریعہ ، معاشی ترغیب کے ذریعہ حل کرنا ہوگا۔ “معاشی ترغیب” کی ضرورت کی وجہ سے ، ایتھریم میں بھی ایک پرس سسٹم ہے (مالی اکائی “ایتھر” کہا جاتا ہے) ، اور ہر صارف کے پاس اس کی واحد شناخت کے طور پر پرس کا پتہ ہوتا ہے۔ اس معاملے میں ، Bitcion کے ساتھ موازنہ کریں۔
معاہدہ (Contract) ایتھرئم میں متعارف کرایا جانے والا سب سے اہم تصور ہے۔ بٹ کوائن میں ، تمام پتے ایک صارف سے تعلق رکھتے ہیں۔ جب ہم کہتے ہیں کہ “صارف” ، تو ہم دراصل عوامی کلید اور نجی کلید کی ایک جوڑی کے بارے میں بات کر رہے ہیں۔ لیکن ایتھرئم میں ، ایک کلیدی جوڑی کے زیر ملکیت ایڈریس کے علاوہ ، ایک ایسا پتہ بھی ہے جو “کوڈ” کے زیر ملکیت ہے ، یعنی معاہدہ۔ معاہدہ صارف کے ذریعہ جاری کیا جاتا ہے ، جو بنیادی طور پر ایک کوڈ ہے ، اور اسے جاری ہونے کے بعد تبدیل نہیں کیا جاسکتا ہے۔ معاہدہ ، جیسے عام اکاؤنٹ ، ایک پرس ایڈریس ہے ، اور جب بھی اس ایڈریس کو ٹرانزیکشن موصول ہوتا ہے ، اس سے وابستہ کوڈ پر عملدرآمد کیا جاتا ہے ، یہ کوڈ:
مثال کے طور پر ، ایک مثال “ملٹی پارٹنرشپ والیٹ” کی ہے ، جس میں ایتھرئم کے آفیشل کلائنٹ میں ایک ملٹی پارٹنرشپ والیٹ بنانے کی خصوصیت ہے۔

اس خصوصیت کے ذریعے ایک ایسا والیٹ ایڈریس بنایا جا سکتا ہے جو 2 دیگر افراد کے ساتھ مشترکہ طور پر استعمال کیا جا سکتا ہے۔ ہر شخص ایک دن میں 100 ایتھر تک استعمال کر سکتا ہے۔ اگر اس حد سے تجاوز کیا جائے تو اس کے لیے کسی دوسرے شخص کی رضامندی ضروری ہے۔
یہ فنکشن اصل میں ایک معاہدہ تخلیق کرتا ہے ، اور مذکورہ بالا منطق معاہدے میں موجود کوڈ کے ذریعہ بیان کی جاتی ہے۔ جب آپ اس مشترکہ پرس سے ادائیگی کرنا چاہتے ہیں تو ، آپ کو اس مشترکہ پرس میں ایک پیغام بھیجنے کی ضرورت ہوگی ((معاملہ پیغام ہے ، ٹرانزیکشن کی رقم صفر ہوسکتی ہے ، صرف اعداد و شمار کو لے کر) ، اور پھر مشترکہ پرس میں موجود کوڈ پر عملدرآمد کیا جائے گا ، اور اگر یہ ادائیگی کی درخواست مذکورہ بالا منطق کے مطابق ہے تو ، حقیقی ادائیگی کی تجارت شروع کی جائے گی ، ورنہ ادائیگی کی درخواست مسترد کردی جائے گی ((حقیقت میں ادائیگی نہیں کی گئی) ۔
ایک اور مثال “حفاظتی معاہدہ” ہے ، جس کے بارے میں ہمیشہ کہا جاتا رہا ہے کہ بٹ کوائن ایک ڈیجیٹل کرنسی ہے جس کی قیمت ((اور قانونی کرنسیوں کے تبادلے کی شرح) میں عدم استحکام ہے ، جو اکثر ایک دن میں دوگنا یا دوگنا ہوجاتا ہے ، لیکن اگر معاہدہ کی مدد سے ایک ہولڈ معاہدہ کیا جائے تو اس مسئلے کو کچھ حد تک حل کیا جاسکتا ہے۔
ہم ایک ایسے شخص کو “رسک ایوینجر” قرار دیں گے جو کرنسی کی قدر کو برقرار رکھنا چاہتا ہے ، اور ایک اور شخص جو کرنسی کی قدر میں اتار چڑھاؤ کا خطرہ مول لینے اور اس سے فائدہ اٹھانے کے لئے تیار ہے اسے “رسک بیئرر” کہا جائے گا ، لہذا وہ رقم (مثال کے طور پر 1000 CNY) اور ایک وقت کی کھڑکی (مثال کے طور پر ایک مہینہ) پر معاہدہ کرسکتے ہیں ، اور ایک معاہدہ تشکیل دے سکتے ہیں۔ مندرجہ ذیل منطق پر عمل کریں:
اگر ایتھر کی قیمت بڑھتی ہے تو ، خطرے کا خطرہ لینے والے کو فائدہ ہوتا ہے۔ اگر ایتھر کی قیمت کم ہوتی ہے تو ، خطرے کا خطرہ لینے والے کو نقصان ہوتا ہے ، لیکن خطرے سے بچنے والا ہمیشہ نہیں ہوتا ہے۔
مذکورہ بالا مثالوں میں ایک اور مسئلہ ہے جو حل نہیں ہوا ہے ، یہ ہے کہ ایتھر اور فاریکس کے مابین تبادلہ کی شرح کو کیسے طے کیا جائے۔ جیسا کہ ہم نے پہلے ذکر کیا ہے ، معاہدہ صرف بلاکچین پر موجود ڈیٹا تک رسائی حاصل کرسکتا ہے ، اور فاریکس ایک ایسا ڈیٹا ہے جو دنیا میں موجود ہے نہ کہ کریپٹو دنیا میں ، ہمیں کسی طرح کے طریقہ کار کے ذریعہ اس طرح کے “غیر کریپٹو دنیا کے اعداد و شمار” کو بلاکچین میں متعارف کرانے کی ضرورت ہے۔
ہم ایک اور معاہدہ ڈیزائن کرسکتے ہیں جس میں اس طرح کے منطق کی وضاحت کی جاتی ہے کہ ہر وقت کی کھڑکی (جیسے ایک گھنٹہ) میں ، حقیقی دنیا سے ایتھر اور قانونی کرنسی کے مابین زر مبادلہ کی شرح حاصل کی جائے:
کسی بھی کھلاڑی کے لئے ، یہ زیادہ امکان ہے کہ وہ انعام حاصل کرے گا کیونکہ وہ دوسروں کی پیش کشوں کو نہیں جانتا ہے ، اور اس کے مقابلے میں ، اس کے پاس بہت زیادہ امکانات ہیں کہ وہ ضمانت سے محروم ہوجائے گا۔
یقینا اس اصول میں کچھ خامیاں ہیں ، مثال کے طور پر اگر کسی شخص کے پاس بہت زیادہ بیعانہ ہے تو ، وہ اوسط کو حقیقی زر مبادلہ کی قیمت سے زیادہ یا کم قیمت پر لے جا سکتا ہے اور اس کے ساتھ ساتھ انعام حاصل کرسکتا ہے ، اور دوسرے لوگوں کو جو درست زر مبادلہ کی شرح فراہم کرتے ہیں وہ بیعانہ کھو دیتے ہیں۔ لیکن حقیقت میں ، حقیقی دنیا میں بھی ایسا ہی ہے ، اگر آپ کے پاس بہت زیادہ رقم ہے تو آپ کسی شے کی قیمت کو بھی بڑھا سکتے ہیں یا دبا سکتے ہیں۔ صرف یہ کہ حقیقی دنیا کے مقابلے میں ، ای کامنس کا حجم بہت چھوٹا ہے ، اور اس کے لئے زیادہ رقم کی ضرورت نہیں ہے۔ لیکن حقیقت میں ، اس طرح کی بدنیتی سے شرح کو بلند کرنا یا دباؤ ڈالنا بھی بہت بڑا خطرہ ہے ، کیونکہ آپ کو یقین نہیں ہے کہ آپ نے کتنا بیعانہ ادا کیا ہے ، اور اگر آپ ناکام ہوجاتے ہیں تو آپ کو تمام بیعانہ کھو دیں گے۔
ایک اور خامی یہ ہے کہ “ہر کوئی معاہدے کے لئے ضمانت کی ادائیگی کرسکتا ہے اور تبادلہ کی شرح فراہم کرسکتا ہے” یہ قدم ٹرانزیکشن بنانے کے ذریعے کیا جاتا ہے ، اور تمام ٹرانزیکشنز کو بلاکچین پر لکھا جاتا ہے ، لہذا آپ کی پیش کردہ شرح تبادلہ دراصل دوسروں کے لئے مرئی ہے ، اور اس سے بدنیتی پر مبنی حملہ آوروں کے لئے مزید مواقع پیدا ہوتے ہیں۔
ہم نے پہلے کہا تھا کہ معاہدہ بلاکچین پر ڈیٹا پڑھ سکتا ہے، لیکن بلاکچین پر اعداد و شمار کا تعین کیا جاتا ہے، اور اگر ہم جوا کی طرح ایپلی کیشنز کو لاگو کرنا چاہتے ہیں، تو ہم ایک بے ترتیب نمبر کہاں سے حاصل کریں گے؟
ایک سوچنے والا بے ترتیب نمبر کا منبع اگلے بلاک کا ہیش ہے ، اور زیادہ تر معاملات میں ، اس حد تک بے ترتیب کافی ہے۔ لیکن دراصل کان کنوں کو اس بے ترتیب نمبر پر کچھ حد تک قابو پانے کی اجازت ہے۔ فرض کریں کہ ایک کان کن نے کسی جوئے میں حصہ لیا ہے ، اور اس جوئے کا فائدہ ایک ٹکڑا کھودنے سے زیادہ ہے ، تو اگر یہ کان کن ایک ایسا ٹکڑا کھودتا ہے جس سے خود کو کھونے کا خطرہ ہوتا ہے ، تو ظاہر ہے کہ یہ کان کن اس نئے ٹکڑے کو شائع نہ کرنے کا انتخاب کرے گا ، جو انفرادی کان کن کی کمپیوٹنگ طاقت کے لحاظ سے زیادہ واضح ہے۔
لہذا ہمیں ایک ایسا میکانزم متعارف کرانے کی ضرورت ہے جو زر مبادلہ کی رقم طلب کرنے کے مترادف ہے تاکہ بے ترتیب تعداد میں بیج طلب کیا جاسکے ، اور پھر ہر ٹائم ونڈو کے اختتام پر ان بیجوں کو استعمال کیا جاسکے تاکہ ایک بے ترتیب تعداد کا حساب لگایا جاسکے۔ لیکن جیسا کہ زر مبادلہ کی رقم طلب کرنا ، کیونکہ شرکاء کرنسی کی شرح جمع کروانے کے لئے ٹرانزیکشنز تشکیل دیتے ہیں ، لہذا ایک ٹائم ونڈو کے درمیان ، ہر شخص کی جمع کردہ بے ترتیب تعداد دوسروں کے لئے مرئی ہے ، لہذا جو شخص کسی جوئے میں حصہ لے چکا ہے وہ احتیاط سے ایک بے ترتیب تعداد میں بیجوں کو منتخب کرسکتا ہے تاکہ دوسروں کے جمع کردہ بیجوں کے علاوہ نئے بیجوں کی پیداوار کی بے ترتیب تعداد اس کی توقعات کے مطابق ہو۔
لہذا ہمیں بیجوں کی کھڑکی کو دو حصوں میں تقسیم کرنے کی ضرورت ہے تاکہ بے ترتیب تعداد حاصل کی جاسکے جس کی کوئی بھی پیش گوئی اور مداخلت نہیں کرسکتا:
پہلے مرحلے میں آپ کو صرف دوسروں کے پیش کردہ بیجوں کی کھرچنی کی قیمت معلوم ہوتی ہے ، نہ کہ اصل بیجوں کی ، لہذا آپ اس کے نتیجے میں مداخلت کرنے کے لئے بیجوں کی تعمیر نہیں کرسکتے ہیں۔ جبکہ دوسرے مرحلے میں ، ہر کوئی صرف پہلے مرحلے میں پیش کردہ بیجوں کی تصدیق کر رہا ہے ، اور نیا جمع نہیں کرسکتا ہے ، اور نہ ہی دوسروں کو جمع کرانے سے روک سکتا ہے۔
اس سے پہلے ہم نے ذکر کیا کہ بٹ کوائن اسکرپٹ میں لوپ ، ریکرنسی ، اور کودنے کی صلاحیت نہیں ہے۔ ہوسکتا ہے کہ بٹ کوائن اسکرپٹ پر عملدرآمد کے وقت کو کنٹرول کرنے کے لئے بٹ کوائن اسکرپٹ کی فکر ہو ، کیونکہ ٹورین کے ‘اسٹاپنگ تھیوری’ کے مطابق ، ٹورین کی مکمل پروگرامنگ زبان کے ذریعہ لکھا گیا پروگرام ، صرف جامد تجزیہ کے نقطہ نظر سے یہ نہیں معلوم کیا جاسکتا ہے کہ آیا یہ محدود اقدامات کے بعد ختم ہوجائے گا یا نہیں۔ اس طرح ، بدنیتی پر مبنی حملہ آور ایک ٹرانزیکشن تشکیل دے سکتے ہیں جس کی وجہ سے کان کنوں کی معمول کی کارروائی میں خلل پڑتا ہے۔
ایتھرئم نے ایک بار پھر “اقتصادی ترغیب” کے ذریعہ اس مسئلے کو دور کیا ، معاہدہ ایک ورچوئل مشین پر چلتا ہے جسے ای وی ایم کہا جاتا ہے۔ ای وی ایم ایک خود سے چلنے والا “چارج” ورچوئل مشین ہے ، ای وی ایم کے معیار میں ، آپ کو آپریٹنگ کے لئے درکار میموری اور سی پی یو ٹائم کے مطابق ، ہر ایک آپ کوڈ کے ذریعہ استعمال ہونے والی گیس کی وضاحت کی گئی ہے۔ یہ ایک ایسا کمپیوٹنگ وسائل ہے جو ایتھر نے خریدا ہے۔ جیسا کہ پہلے ذکر کیا گیا ہے ، جب کسی معاہدے کا مقصد معاہدہ ہوتا ہے تو ، معاہدے کا کوڈ نافذ کیا جاتا ہے ، اور معاہدے کو انجام دینے کے دوران استعمال ہونے والی گیس کی ادائیگی کی ضرورت ہوتی ہے ، جبکہ یہ بیان کیا گیا ہے کہ “اگر گیس ختم ہوجائے تو ، معاہدے کی نفاذ بند ہوجائے گی۔”
پھر ہم “اتفاقی وقفہ” کے بارے میں بات کرتے ہیں ، جیسا کہ پہلے ذکر کیا گیا ہے کہ ہر 10 منٹ میں ایک نیا بلاک بنتا ہے ، یعنی ، پورے نیٹ ورک میں ہر 10 منٹ میں ایک “اتفاق” ہوتا ہے ، لہذا عام طور پر بٹ کوائن ٹرانزیکشن کی تصدیق کے لئے دس منٹ کا انتظار کرنا پڑتا ہے۔
واضح طور پر صارفین کے لئے اتفاق رائے کا وقت کم کرنے سے بہتر تجربہ ہوتا ہے ، کیوں کہ بٹ کوائن بلاک وقت کو کم نہیں کرتا ہے۔ اس کی وجہ یہ ہے کہ اتفاق رائے کے زیادہ وقفے سے “مرکزی کان کنی” کے فوائد میں کچھ اضافہ ہوتا ہے۔ “کان کنی” کا مطلب یہ ہے کہ بٹ کوائن کے کان کنوں نے مل کر کان کنی کی ، کان کنوں نے بغیر کسی شرط کے کان کی ہدایت کی اطاعت کی ، اور آخر میں کان کے ساتھ معاہدے پر منافع کی تقسیم کی۔ بٹ کوائن ایک غیر مرکزی نظام کے طور پر ، واضح طور پر اس طرح کے مرکزی کان کی اضافی فوائد کی توقع نہیں کرتا ہے۔
جب ایک کان کن A کو ایک نیا بلاک کھودتا ہے تو وہ اس بلاک کو نشر کرتا ہے اور دوسرے لوگ اس خبر کو موصول ہونے کے بعد فوری طور پر اس نئے بلاک کی بنیاد پر کام شروع کر دیتے ہیں۔ جبکہ دوسرے لوگوں کے لئے “A نے نیا بلاک کھود لیا” اور “A کے نشر کردہ پیغام کو موصول ہوا” کے درمیان اس وقت کے حساب کتاب کو دراصل ضائع کردیا جاتا ہے ، جبکہ مرکزی کان کنی کے تالاب میں موجود دیگر کان کنوں کو یہ مسئلہ نہیں ہوگا کیونکہ وہ نئے پیدا ہونے والے بلاکس کی معلومات کو زیادہ تیزی سے حاصل کرسکتے ہیں اور فوری طور پر نئے بلاکس کی بنیاد پر کام شروع کر سکتے ہیں۔

اس نشریات میں شاید دس سیکنڈ لگیں گے ، جو 10 منٹ کے لئے زیادہ اہم نہیں ہے ، لیکن اگر اتفاق رائے کے وقفے کو کم کیا جائے تو ، مرکزی کان کنی کے تالابوں کے فوائد واضح ہوجائیں گے۔ لیکن ایتھریم نے “آنکل بلاک” کے تصور کو متعارف کرانے کے ذریعے اس مسئلے کو حل کیا ، جس نے اتفاق رائے کے وقفے کو کم کرکے 15 سیکنڈ کردیا۔ ادائیگی کی تصدیق کی رفتار میں بٹ کوائن کے مقابلے میں بہت زیادہ اضافہ ہوا ہے۔
بٹ کوائن کے بلاکچین میں ، ایک بلاک میں صرف ایک باپ یا بیٹا بلاک ہوسکتا ہے۔ لیکن ایتھریم میں ، ایک نئے پیدا ہونے والے بلاک میں ایک باپ اور متعدد چچا بلاک ہوسکتے ہیں۔ اوپر دی گئی مثال پر واپس آتے ہوئے ، اگر A میں ایک نیا بلاک کھود لیا گیا ہے لیکن دوسرے لوگوں کو ابھی تک نشر ہونے کا وقت نہیں ملا ہے ، اگر کوئی نیا بلاک کھودتا ہے ، لیکن اس کی وجہ یہ ہے کہ نشریات دیر سے قبول نہیں کی گئیں ہیں ، تو اس بلاک کو اگلے بلاک کا “چاچا” بننے کا امکان ہے۔ اس بلاک کی نمائندگی کرنے والے کام کا ثبوت اگلے بلاک کا حصہ سمجھا جائے گا (یعنی اس شخص نے اگلے بلاک کو کھودنے میں دشواری کم کردی ہے) ۔

تصویر بشکریہ<https://blog.ethereum.org/2014/07/11/toward-a-12-second-block-time
اس حصے میں میں آپ کو کچھ ایسے مسائل کے بارے میں بتاتا ہوں جن کا حل ایتھریم نے ابھی تک نہیں نکالا ہے۔
سب سے پہلے یہ ہے کہ ایتھرئم کا موجودہ اتفاق رائے کا طریقہ اب بھی بٹ کوائن کی طرح POW کے ذریعہ ضمانت دیتا ہے ، صرف کام کی ایک مخصوص مقدار مکمل کرنے والے نوڈس ہی بلاک پیدا کرنے والے کام میں حصہ لے سکتے ہیں۔ کام کی مقدار کا مسئلہ یہ ہے کہ نیٹ ورک کی حفاظت کو یقینی بنانے کے لئے بہت زیادہ کمپیوٹنگ طاقت ضائع ہوجاتی ہے ، حالانکہ یہ ہمارے مذکورہ بالا “اقتصادی ترغیب” کے نظریہ پر مبنی ہے ، لیکن اس میں بہتری آسکتی ہے۔ ایتھریم کا خیال ہے کہ کام کی مقدار کے ثبوت کی جگہ POS کا استعمال کرنا بہتر طریقہ ہے۔
چونکہ ایتھر خود ہی قیمتی ہے ، تو پھر کیوں اس کی معاشی ترغیب کے لئے استعمال نہیں کیا جاتا ہے؟ POS کا مطلب یہ ہے کہ آپ کے پاس موجود ایتھر کو گارنٹی کے طور پر استعمال کریں ، یعنی ہر نوڈ جو بلاک کی پیداوار میں حصہ لینا چاہتا ہے (روایتی معنوں میں کان کنی) (جسے تصدیق کنندہ کہا جاتا ہے) کو سسٹم کو ادائیگی کرنے کی ضرورت ہے (یہاں سسٹم کا مطلب یہ ہے کہ معاہدے میں یہ کہا گیا ہے کہ تمام نوڈس سمجھتے ہیں کہ یہ گارنٹی ‘جمود’ ہے) ایک گارنٹی ادا کریں ، اور پھر ہم اپنے ہی گارنٹی کے رقم کو استعمال کریں جو اگلے بلاک کا بلاک بن سکتا ہے۔ (ایک اہم شرط یہ ہے کہ ‘ممکنہ’ یہ ہے کہ یہ بلاک معاہدے کی شرائط کے مطابق ہونا چاہئے) ، اگر یہ بلاک واقعی اگلا بلاک بن جاتا ہے تو ، تمام نوڈس کو انعام دیا جائے گا ، ورنہ گارنٹی ختم کردی جائے گی۔
یہ ماڈل POW کی طرح ہے ، جہاں کان کن اپنی کمپیوٹنگ طاقت کا استعمال کرتے ہوئے “بیٹ” کرتے ہیں ، اور اگر ایک سلسلہ لمبا ہوتا ہے تو ، اس سلسلے میں کان کنی جاری رکھنے کے لئے سوئچ کرنا ضروری ہوتا ہے۔ چونکہ زیادہ سے زیادہ لوگ اس سلسلے میں شامل ہوتے ہیں ، اس لئے یہ ممکن ہے کہ یہ صحیح سلسلہ بن جائے ، اور آخر کار ہم اتفاق رائے پر پہنچ جائیں۔
پی او ایس پورے نیٹ ورک کی ٹرانسمیشن کو بڑھا دے گا اب لوگوں کو بے معنی حساب کی ایک بڑی تعداد کے ذریعے اتفاق رائے حاصل کرنے کی ضرورت نہیں ہوگی ، اور ہر نوڈ پر کام کرنے کی مقدار معاہدے میں کوڈ چلانے اور ڈیٹا کی توثیق کرنے کی مقدار کے قریب ہوگی
یقینا POS کو ابھی تک اپنایا نہیں گیا ہے کیونکہ ابھی تک کچھ حل نہ ہونے والے مسائل موجود ہیں ، ان میں سے ایک POW کی طرح 51٪ حملے کا مسئلہ ہے ، جس میں POW میں 51٪ نیٹ ورک کی کمپیوٹنگ کو اکٹھا کرنے کی طاقت کو کچھ جسمانی حدود کا سامنا کرنا پڑتا ہے کیونکہ کمپیوٹنگ کو فراہم کرنے کے لئے کمپیوٹنگ آلات کی ضرورت ہوتی ہے۔ اس کے برعکس ، POS میں 51٪ نیٹ ورک کی ایتھر جمع کرنا نسبتا easy آسان ہے جب تک آپ کے پاس کافی رقم ہو۔ POS قدرتی طور پر POW سے زیادہ پیچیدہ نہیں ہے ، اور مذکورہ بالا کام کو لاگو کرنے کے ل the منطق کو سنبھالنے کی ضرورت ہے ، جیسے کہ تصدیق کنندہ کی ایک موثر فہرست کو برقرار رکھنا ، تصدیق کی رقم کو منجمد کرنا ، جرمانے کو واپس نہ کرنا ، تجویز کردہ بلاک اور شرط کے بلاک کو روکنا ، تصدیق کنندہ کے مابین اتحاد کے حملوں ، نیٹ ورک کے حصے کی بحالی کے بعد وغیرہ۔
ایک اور موضوع “تقسیم” کا ہے، Bitcoin یا Ethereum دونوں، فی الحال ایک ہی Blockchain پر تمام ٹرانزیکشن کی تصدیق کر رہے ہیں، جو ایک تقسیم شدہ نیٹ ورک کی کمپیوٹنگ کی صلاحیت کو بہت حد تک محدود کرتی ہے۔ ہر نوٹ کو ہر ٹرانزیکشن کو وصول کرنے، اسٹور کرنے اور اس کی توثیق کرنے کی ضرورت ہوتی ہے، پورے نیٹ ورک کی پروسیسنگ کی صلاحیت دراصل ایک نوٹ کی پروسیسنگ کی صلاحیت کے برابر ہوتی ہے۔
لہذا ایتھرئم مستقبل میں ایک “فلیشنگ” کا طریقہ کار متعارف کرانا چاہتا ہے ، تاکہ پورے نیٹ ورک کو کئی حصوں میں تقسیم کیا جاسکے ، اور ان کے مابین آزادانہ طور پر لین دین کی توثیق کی جاسکے۔ لیکن ٹکڑوں کے مابین اشارے کی ساخت کے ذریعہ دوسرے ٹکڑوں کا ڈیٹا حوالہ دیا جائے گا ، اسکرین کال کے ذریعہ دوسرے ٹکڑوں کو متاثر کیا جائے گا ، لہذا صارف کی نظر میں پورا نیٹ ورک ایک ہی رہتا ہے ، صرف اس کے باوجود کہ پورے نیٹ ورک کی پروسیسنگ کی صلاحیت بہت مضبوط ہوگی۔ فی الحال ، ٹکڑے سے متعلق نفاذ نسبتا early ابتدائی ترقی کے مرحلے میں ہے ، لہذا میں نے جو معلومات حاصل کی ہیں وہ محدود ہیں ، لہذا اس کے بارے میں زیادہ معلومات نہیں دی جاسکتی ہیں۔
اس حصے میں میں آپ کو Contract کے کچھ عملی اور کام کرنے والے کوڈ دکھاؤں گا۔ Contract کو بہت سی مختلف زبانوں میں لکھا جاسکتا ہے اور آخر میں وہ EVM پر آپ کوڈ میں مرتب کیا جاتا ہے۔ آج ہم Solidity کی جاوا اسکرپٹ زبان کا استعمال کریں گے جو کہ EVM کی سب سے زیادہ برقرار رکھنے والی زبان ہے۔
contract Test {
uint storedData; // State variable
struct Voter { // Struct
uint weight;
bool voted;
address delegate;
uint vote;
}
event HighestBidIncreased(address bidder, uint amount); // Event
function func() { // Function
if (msg.sender.balance < 10 finney) {
msg.sender.send(10 finney);
}
sha256("...");
address nameServer = 0x72ba7d8e73fe8eb666ea66babc8116a41bfb10e2;
nameServer.delegatecall("isAvailable", "MyName");
nameServer.call("register", "MyName");
}
}
یہ کچھ بنیادی جملے ہیں جو آپ Solidity میں استعمال کر سکتے ہیں تاکہ آپ اسٹیٹ ویریبلز کا اعلان کر سکیں۔uint storedData;اس طرح ، اگر آپ کو کسی بھی متغیر کی قدر معلوم ہوتی ہے ، تو یہ ہمیشہ کے لئے بلاکچین پر محفوظ رہے گا۔structایک معاہدہ پیچیدہ اعداد و شمار کے ڈھانچے کا اعلان کرنے کے لئے استعمال کیا جاتا ہے۔ اس میں فنکشنز کی بھی وضاحت کی جاسکتی ہے ، جو ٹرانزیکشن موصول ہونے پر عملدرآمد کی جاتی ہیں ، اور ٹرانزیکشن کا آغاز کرنے والا کون سے فنکشنز کو منتخب کرسکتا ہے ، لہذا ایک معاہدہ متعدد فنکشنز مہیا کرسکتا ہے ، جس میں فنکشن میں منطقی فیصلے ، گردش ، اور تبدیلی کی مقدار میں ترمیم کی جاسکتی ہے۔
اس میں کچھ آسان خصوصیات ہیں، جیسے عام طور پر استعمال ہونے والے خفیہ کاری کے الگورتھم۔sha256یونٹ تبادلہ10 finneyاس کے علاوہ، یہ بھی ممکن ہے کہ آپ کے پاس کوئی ذاتی معلومات نہیں ہیں.0x72ba7d8e73fe8eb666ea66babc8116a41bfb10e2) وغیرہ۔msgیہ ایک بلٹ ان گلوبل متغیر ہے جس سے آپ اس ٹرانزیکشن سے متعلق معلومات پڑھ سکتے ہیں ، جیسے کہ شروع کرنے والا ، رقم وغیرہ۔ معاہدہ دوسرے معاہدے کے کوڈ کو دو طریقوں سے طلب کرسکتا ہے:delegatecallاس کا مطلب یہ ہے کہ کسی دوسرے معاہدے کے کوڈ کو موجودہ سیاق و سباق میں لاگو کیا جائے ، جیسے کہ ایک لائبریری فنکشن متعارف کرایا گیا ہو۔callاس کے بجائے، یہ ایک نیا معاہدہ شروع کرنے کے لئے ایک اور معاہدہ شروع کرنے کے لئے ایک منطق ہے.
تو ، کنٹریکٹ بلاکچین سے ڈیٹا کو کیسے پڑھتا اور لکھتا ہے؟ یہ پیچیدہ کام “حالت متغیر” کے لئے تجریدی ہے ، جس میں storedData ایک حیثیت متغیر ہے۔ در حقیقت ، کنٹریکٹ پر عملدرآمد کے دوران اسٹیٹ متغیر میں ترمیم بلاکچین میں محفوظ نہیں کی جاتی ہے ، کیونکہ کنٹریکٹ پر عملدرآمد یقینی طور پر ہوتا ہے۔
اب میں آپ کو ایک حقیقی طور پر قابل استعمال کنٹریکٹ ٹوکن دکھاتا ہوں جو ایتھرئم نیٹ ورک پر مبنی اپنے ہی ٹوکن کو جاری کرتا ہے:
contract Coin {
// The keyword "public" makes those variables
// readable from outside.
address public minter;
mapping (address => uint) public balances;
// Events allow light clients to react on
// changes efficiently.
event Sent(address from, address to, uint amount);
// This is the constructor whose code is
// run only when the contract is created.
function Coin() {
minter = msg.sender;
}
function mint(address receiver, uint amount) {
if (msg.sender != minter) return;
balances[receiver] += amount;
}
function send(address receiver, uint amount) {
if (balances[msg.sender] < amount) return;
balances[msg.sender] -= amount;
balances[receiver] += amount;
Sent(msg.sender, receiver, amount);
}
}
کوڈ سے لیا گیا:http://solidity.readthedocs.io/en/latest/introduction-to-smart-contracts.html#subcurrency-example (MIT)
اس معاہدے کا نام سکے ہے اور اس میں دو حالتوں کے متغیرات کا اعلان کیا گیا ہے۔minterتخلیق کاروں کو اس کو ذخیرہ کرنے کے لئے استعمال کیا جاتا ہے، فنکشن کی تعمیر میں ((function Coin()اس متغیر کو پہلے ٹرانزیکشن کے لئے ابتدائیہ تفویض دیا گیا تھا جس میں معاہدے کی تخلیق کی �