ہمیں بلاکچین کیا بنانا چاہئے؟

بنی نوع انسان کی پوری تاریخ زنجیروں سے چھٹکارا پانے اور نئی، اس سے بھی مضبوط تخلیق کرنے کا ایک مسلسل عمل ہے۔ (گمنام مصنف)

متعدد بلاکچین پروجیکٹس (Bitshares, Hyperledger, Exonum, Ethereum, Bitcoin، وغیرہ) کا تجزیہ کرتے ہوئے، میں سمجھتا ہوں کہ تکنیکی نقطہ نظر سے، وہ سب ایک ہی اصولوں پر بنائے گئے ہیں۔ بلاک چینز گھروں کی یاد دلاتے ہیں، جن میں تمام قسم کے ڈیزائن، سجاوٹ اور مقاصد کے باوجود ایک بنیاد، دیواریں، چھت، کھڑکیاں، دروازے ہوتے ہیں جو ایک دوسرے سے مخصوص طریقوں سے جڑے ہوتے ہیں۔ اور اگر آپ عمارت کے ڈیزائن کے بنیادی اصولوں کو سمجھتے ہیں اور استعمال شدہ مواد کی خصوصیات کو جانتے ہیں، تو آپ کسی خاص گھر کے مطلوبہ مقصد کا تعین کر سکتے ہیں۔ فی الحال، بلاک چین کے ساتھ ایک ایسی صورتحال پیدا ہوئی ہے جس کے بارے میں سب نے سنا ہے، لیکن بہت کم لوگ آپریشن کے فن تعمیر اور اصولوں کو سمجھتے ہیں۔ لہذا، ایک غلط فہمی ہے کہ بلاک چین ٹیکنالوجیز کا استعمال کیوں اور کیسے سمجھ میں آتا ہے۔

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

تو، آئیے یاد رکھیں کہ بلاکچین نے ابتدائی طور پر کن مسائل کو حل کیا تھا۔

مجھے یقین ہے کہ بہت سے لوگ تقسیم شدہ، وکندریقرت، عوامی اور ناقابل تغیر ڈیٹا بیس کے بارے میں کہیں گے۔ لیکن یہ سب کیوں ضروری تھا؟

میں معیارات کو پڑھ کر کسی بھی ٹیکنالوجی کا مطالعہ شروع کرنے کو ترجیح دیتا ہوں، کیونکہ زیر مطالعہ موضوع پر تمام مضامین اور کتابیں ان پر مبنی ہیں۔ لیکن فی الحال کوئی بلاکچین معیارات نہیں ہیں؛ آئی ایس او نے صرف بنایا ہے۔ کمیٹیاں ان کی ترقی کے لیے۔ فی الحال، ہر پبلک بلاکچین پروجیکٹ کا اپنا وائٹ پیپر دستاویز ہے، جو کہ بنیادی طور پر ایک تکنیکی تفصیلات ہے۔ پہلا عوامی طور پر جانا جاتا بلاکچین پروجیکٹ بٹ کوائن نیٹ ورک ہے۔ نیٹ ورک کی سرکاری ویب سائٹ پر جائیں اور دیکھو جہاں یہ سب شروع ہوا.

بلاک چین چیلنج

لہذا، Bitcoin کے علمبردار نیٹ ورک میں بلاکچین نے جو کام حل کیا ہے وہ ہے ڈیجیٹل اثاثوں (اثاثوں) کی ملکیت کی ایک قابل اعتماد منتقلی کو بغیر کسی ثالث کے غیر قابل اعتماد ماحول میں انجام دینا ہے۔ مثال کے طور پر، بٹ کوائن نیٹ ورک میں، ایک ڈیجیٹل اثاثہ بٹ کوائن ڈیجیٹل سکے ہے۔ اور بٹ کوائن اور دیگر بلاکچینز کے تمام تکنیکی حل اس مسئلے کو حل کرنے کے لیے آتے ہیں۔

وہ مسائل جو بلاکچین حل کرتا ہے۔

فرض کریں کہ ایک خاص مالیاتی تنظیم کہتی ہے کہ اس نے دنیا بھر میں ایک ایسا نیٹ ورک بنایا ہے جس کی مدد سے کسی بھی شخص کو رقم منتقل کرنا ممکن ہے۔ کیا تم اس پر یقین کرو گے؟ اگر یہ تنظیم Visa یا MasterCard ہے، تو غالباً آپ اس پر یقین کریں گے، لیکن اگر نسبتاً بولیں تو AnonymousWorldMoney، آپ شاید نہیں مانیں گے۔ کیوں؟ لیکن کیونکہ ہم اچھی طرح جانتے ہیں کہ پرائیویٹ کمپنیاں کس طرح تقسیم شدہ نظام بناتی ہیں، کن مقاصد کے لیے، اور اس سے کیا نتیجہ نکل سکتا ہے۔ آئیے اس طرح کے سسٹمز کے مسائل پر گہری نظر ڈالتے ہیں اور انہیں بلاک چین ٹیکنالوجیز کے ذریعے کیسے حل کیا جا سکتا ہے۔

چلیں کہ مشروط AnonymousWorldMoney میں ڈیٹا بیس کے ساتھ سرور موجود ہیں، اور یہ اچھا ہے اگر ان میں سے کئی مختلف ڈیٹا سینٹرز میں ہوں۔ جب بھیجنے والا رقم منتقل کرتا ہے، تو ایک لین دین رجسٹرڈ ہوتا ہے، جسے تمام سرورز پر نقل کیا جاتا ہے، اور رقم وصول کنندہ تک پہنچ جاتی ہے۔

ہمیں بلاکچین کیا بنانا چاہئے؟

ایک مثالی دنیا میں، یہ سکیم بہت اچھا کام کرتی ہے، لیکن ہمارے ہاں درج ذیل مسائل پیدا ہوتے ہیں:

  1. ایک طرف شرکاء کی شناخت کا مسئلہ اور دوسری طرف لین دین کا نام ظاہر نہ کرنے کی ضرورت۔ وہ. آپ کو ایک مخصوص وصول کنندہ کو رقم منتقل کرنے کی ضرورت ہے اور اس طرح کہ اس لین دین کے بارے میں سوائے لین دین میں شریک افراد کے کوئی نہیں جانتا۔ بینکوں کے اکاؤنٹ نمبر اور بینک کارڈز کسی مخصوص فرد یا قانونی ادارے سے منسلک ہوتے ہیں، اور بینک کی رازداری لین دین کی معلومات کی حفاظت کرتی ہے۔ اور کون ضمانت دیتا ہے کہ مشروط AnonymousWorldMoney ذاتی ڈیٹا اور لین دین کی معلومات کو اپنے مقاصد کے لیے استعمال نہیں کرتا؟
  2. یہ کیسے یقینی بنایا جائے کہ وصول کنندہ کو بالکل وہی رقم ملی جو اسے منتقل کی گئی تھی؟ نسبتاً، بھیجنے والے نے $100 منتقل کیے، اور وصول کنندہ کو $10 موصول ہوئے۔ بھیجنے والا اپنی رسید کے ساتھ AnonymousWorldMoney کے دفتر آتا ہے، اور کلرک اپنا ورژن دکھاتا ہے، جہاں لکھا ہوتا ہے کہ بھیجنے والے نے صرف $10 منتقل کیے ہیں۔
  3. ناقابل اعتماد ماحول کا مسئلہ، مثال کے طور پر، ایک اسکینڈل جسے ڈبل خرچ کہتے ہیں۔ ایک بےایمان شریک اپنے بیلنس کو کئی بار خرچ کر سکتا ہے جب تک کہ ادائیگی تمام سرورز پر نقل نہ کر دی جائے۔ CAP نظریہیقیناً، کسی نے منسوخ نہیں کیا، اور معاہدہ بالآخر حاصل ہو جائے گا، لیکن کسی کو فراہم کردہ خدمات یا سامان کے لیے رقم نہیں ملے گی۔ اس لیے، اگر ادائیگی کرنے والے ادارے یا لین دین میں حصہ لینے والوں پر مکمل اعتماد نہیں ہے، تو اس کے لیے ضروری ہے کہ ایک نیٹ ورک کی بنیاد اعتماد پر نہیں، بلکہ خفیہ نگاری پر ہو۔
  4. مشروط AnonymousWorldMoney کے پاس سرورز کی ایک محدود تعداد ہے جو غیر ارادی طور پر یا بدنیتی پر مبنی ارادے کی وجہ سے دستیاب نہیں ہو سکتے ہیں۔
  5. AnonymousWorldMoney اپنا ٹھوس کمیشن لے گا۔
  6. کنٹرول کا امکان۔ Bitcoin کے آپریشن کے دوران، یہ پتہ چلا کہ لوگ نہ صرف ایک دوسرے کو سکے منتقل کرنا چاہتے ہیں، بلکہ لین دین کے لیے مختلف شرائط، پروگرام کے کام کے منظر نامے، حالات کے لحاظ سے خود بخود کارروائیاں کرنا وغیرہ بھی چاہتے ہیں۔

بلاکچین ان مسائل کو کیسے حل کرتا ہے۔

  1. شرکاء کی شناخت چابیاں کے ایک جوڑے کا استعمال کرتے ہوئے کی جاتی ہے: نجی اور عوامی، اور ڈیجیٹل دستخطی الگورتھم منفرد طور پر بھیجنے والے اور وصول کنندہ کی شناخت کرتا ہے، ان کی شناخت کو گمنام چھوڑ کر۔
  2. لین دین کو بلاکس میں جمع کیا جاتا ہے، بلاک کی ہیش کا حساب لگایا جاتا ہے اور اگلے بلاک میں لکھا جاتا ہے۔ بلاکس میں ہیشز کو ریکارڈ کرنے کا یہ سلسلہ بلاکچین ٹیکنالوجی کو اپنا نام دیتا ہے، اور یہ بلاکس سے بلاکس یا انفرادی لین دین کو غیر توجہی طور پر تبدیل / حذف کرنا بھی ناممکن بنا دیتا ہے۔ اس طرح، اگر کوئی لین دین بلاک چین میں شامل ہے، تو آپ یقین کر سکتے ہیں کہ اس کا ڈیٹا غیر تبدیل شدہ رہے گا۔
  3. دوگنا خرچ کرنے والے فراڈ کو نیٹ ورک کے اتفاق رائے تک پہنچنے سے روکا جاتا ہے کہ کس ڈیٹا کو درست ماننا ہے اور کس کو ضائع کرنا ہے۔ بٹ کوائن نیٹ ورک میں، کام کے ثبوت (PoW) سے اتفاق رائے حاصل کیا جاتا ہے۔
  4. نیٹ ورک کی وشوسنییتا اس حقیقت سے حاصل کی جاتی ہے کہ بلاکچین عوامی ہے، جہاں ہر شریک اپنا نوڈ چلا سکتا ہے، بلاکچین کی مکمل کاپی حاصل کر سکتا ہے اور مزید یہ کہ آزادانہ طور پر درستگی کے لیے لین دین کی جانچ کرنا شروع کر دیتا ہے۔ واضح رہے کہ جدید بلاک چینز نہ صرف عوامی (کھلی) بلکہ پرائیویٹ (بند) بلاک چینز کی تعمیر کے ساتھ ساتھ مشترکہ اسکیموں کے استعمال کو بھی ممکن بناتے ہیں۔
  5. بلاکچین کمیشن سے مکمل طور پر چھٹکارا نہیں پائے گا، کیونکہ... آپ کو ان لوگوں کو ادائیگی کرنی ہوگی جو نیٹ ورک کو سپورٹ کرتے ہیں، لیکن بلاک چین میں کمیشن کی ضرورت اس قدر یقین سے ثابت ہوئی ہے کہ اس کی ضرورت میں کوئی شک نہیں ہے۔
  6. جدید بلاک چینز میں کاروباری منطق کو نافذ کرنے کی صلاحیت ہوتی ہے، جسے بلاک چین میں اسمارٹ کنٹریکٹ کہا جاتا ہے۔ سمارٹ معاہدوں کی منطق مختلف اعلیٰ سطحی زبانوں میں لاگو ہوتی ہے۔

اگلا، ہم ان حلوں پر مزید تفصیل سے غور کریں گے۔

بلاکچین فن تعمیر

بلاکچین اجزاء

ہر شریک بلاکچین (مکمل نوڈ) کی مکمل کاپی کے ساتھ اپنا نوڈ لانچ کرسکتا ہے۔ بلاکچین پر لین دین کو ریکارڈ کرنے والے مکمل نوڈس کو کہا جاتا ہے۔ اتفاق نوڈس (گواہ) یا کان کن (کان کن)۔ مکمل نوڈس جو صرف لین دین کی درستگی کو چیک کرتے ہیں کہلاتے ہیں۔ آڈٹ نوڈس (آڈٹ). ہلکے کلائنٹس (لائٹ کلائنٹس) بلاکچین کی مکمل کاپیاں ذخیرہ نہیں کرتے ہیں، لیکن مکمل نوڈس کا استعمال کرتے ہوئے نیٹ ورک کے ساتھ بات چیت کرتے ہیں۔
زیادہ تر صارفین لین دین کے لیے ہلکے کلائنٹس یا ویب بٹوے استعمال کرتے ہیں۔ تمام نوڈس ایک دوسرے سے جڑے ہوئے ہیں۔ عناصر کے اس سیٹ کے ساتھ، نیٹ ورک کا فن تعمیر زیادہ مستحکم ہو جاتا ہے:

ہمیں بلاکچین کیا بنانا چاہئے؟

لین دین کا لائف سائیکل

آئیے ٹرانزیکشن لائف سائیکل کو دیکھتے ہیں اور اسے ٹکڑے ٹکڑے کرتے ہیں:

ہمیں بلاکچین کیا بنانا چاہئے؟

بلاکچین ٹیکنالوجیز

آئیے تکنیکی حل اور ایک دوسرے کے ساتھ ان کے رابطوں پر مزید تفصیل سے غور کریں۔

شناخت۔

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

Private key: 0a78194a8a893b8baac7c09b6a4a4b4b161b2f80a126cbb79bde231a4567420f
Public key: 0579b478952214d7cddac32ac9dc522c821a4489bc10aac3a81b9d1cd7a92e57ba
Address: 0x3814JnJpGnt5tB2GD1qfKP709W3KbRdfb27V

بلاک چینز میں ڈیجیٹل دستخط بنانے کے لیے، بیضوی منحنی خطوط پر مبنی الگورتھم استعمال کیا جاتا ہے: بیضوی وکر ڈیجیٹل سگنیچر الگورتھم (ECDSA)۔ اس کے کام کرنے کے لیے، نجی کلید (256 بٹ نمبر) عام طور پر تصادفی طور پر لی جاتی ہے۔ کلیدی اختیارات کی تعداد 2 سے 256 کی طاقت ہے، لہذا ہم پرائیویٹ کیز کی قدروں کو ملانے کے عملی ناممکنات کے بارے میں بات کر سکتے ہیں۔

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

بلاکچین میں استعمال ہونے والی خفیہ نگاری کی تفصیلات کے ساتھ بہت سارے مضامین ہیں، مثال کے طور پر: بٹ کوائن مختصراً - کرپٹوگرافی

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

ہمیں بلاکچین کیا بنانا چاہئے؟

یا آپ مزید قابل اعتماد طریقے استعمال کر سکتے ہیں، مثال کے طور پر، ٹوکنز پر نجی کلید کی قیمت پر مہر لگانا:

ہمیں بلاکچین کیا بنانا چاہئے؟

معاملات

لین دین کے ڈھانچے کے بارے میں مزید تفصیلات مضمون میں مل سکتی ہیں۔ بٹ کوائن مختصر طور پر - لین دین. ہمارے لیے یہ سمجھنا ضروری ہے کہ ہر لین دین میں کم از کم درج ذیل ڈیٹا ہوتا ہے:

From: 0x48C89c341C5960Ca2Bf3732D6D8a0F4f89Cc4368 - цифровой адрес отправителя
To: 0x367adb7894334678b90аfe7882a5b06f7fbc783a - цифровой адрес получателя
Value: 0.0001 - сумма транзакции
Transaction Hash: 0x617ede331e8a99f46a363b32b239542bb4006e4fa9a2727a6636ffe3eb095cef - хэш транзакции

اس کے بعد، ٹرانزیکشن پر نجی کلید کے ساتھ دستخط کیے جاتے ہیں اور بھیجے جاتے ہیں (پروٹوکول کے آپریشن کی تفصیلات دیکھیں بٹ کوائن مختصراً پروٹوکول) بلاکچین کے تمام نوڈس کے لیے جو لین دین کی درستگی کی جانچ کرتے ہیں۔ لین دین کی تصدیق کا الگورتھم غیر معمولی ہے اور اس میں شامل ہے۔ دو درجن قدم.

لین دین کے بلاکس

لین دین کی درستگی کی جانچ کرنے کے بعد، نوڈس ان سے بلاکس بناتے ہیں۔ لین دین کے علاوہ، پچھلے بلاک کی ہیش اور ایک نمبر (نانس کاؤنٹر) کو بلاک میں لکھا جاتا ہے، اور موجودہ بلاک کی ہیش کا حساب SHA-256 الگورتھم کے ذریعے کیا جاتا ہے۔ ہیش نے پیچیدگی کے حالات قائم کیے ہوں گے۔ مثال کے طور پر، بٹ کوائن نیٹ ورک میں، نیٹ ورک کی طاقت کے لحاظ سے ہر 2 ہفتے بعد ہیش کی مشکل خود بخود تبدیل ہو جاتی ہے تاکہ ہر 10 منٹ میں تقریباً ایک بار بلاک بن جائے۔ پیچیدگی کا تعین مندرجہ ذیل شرط سے کیا جاتا ہے: ہیش کا پتہ پہلے سے طے شدہ نمبر سے کم ہونا چاہیے۔ اگر یہ شرط پوری نہیں ہوتی ہے، تو نونس میں 1 کا اضافہ کر دیا جاتا ہے، اور ہیش کا حساب لگانے کا کام دہرایا جاتا ہے۔ ایک ہیش کو منتخب کرنے کے لیے، Nonce فیلڈ استعمال کیا جاتا ہے، کیونکہ بلاک میں یہ واحد ڈیٹا ہے جسے تبدیل کیا جا سکتا ہے؛ باقی کو غیر تبدیل شدہ رہنا چاہیے۔ ایک درست ہیش میں پہلے زیرو کی ایک خاص تعداد ہونی چاہیے، جیسے کہ اصلی ہیش میں سے ایک:

000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91

Bitcoin یا Ethereum نیٹ ورکس کے لیے کامیابی کے ساتھ ہیش تلاش کرنا کام کا ثبوت ہے (کام کا ثبوت، PoW)۔ ہیش تلاش کرنے کے عمل کو کان کنی کہا جاتا ہے، سونے کی کان کنی کی طرح۔ نام بالکل درست طریقے سے عمل کے جوہر کی وضاحت کرتا ہے، کیونکہ اختیارات کی ایک سادہ سی تلاش ہے، اور اگر کسی کو مناسب ہیش مل جائے، تو یہ واقعی قسمت کی بات ہے۔ یہ ٹن فضلہ چٹان میں ایک حقیقی سونے کی ڈلی تلاش کرنے کے مترادف ہے۔ بلاک کا انعام اب 12.5 BTC ہے اور اگر آپ اسے $3900 کی موجودہ Bitcoin کی شرح سے ضرب دیتے ہیں، تو آپ کو ایک کلو گرام سے زیادہ خالص سونا ملے گا۔ لڑنے کے لئے کچھ ہے!

کامیابی کے ساتھ ہیش تلاش کرنے کے بعد، بلاک اور خود ہی ہیش کو بلاکچین پر اگلے بلاک کے طور پر لکھا جاتا ہے۔ بلاکس کی ساخت پر مزید تفصیلات مضمون میں پایا جا سکتا ہے Bitcoin مختصر طور پر - Blockchain، اور ذیل میں ایک آسان خاکہ ہے:

ہمیں بلاکچین کیا بنانا چاہئے؟

بلاکچین ایک ایسے بلاک سے شروع ہوتا ہے جس میں ابھی تک پچھلے بلاک کی ہیش نہیں ہے۔ بلاکچین میں ایسا صرف ایک بلاک ہے اور اس کا اپنا نام جینیس بلاک ہے۔ باقی بلاکس کی ساخت ایک جیسی ہے اور صرف لین دین کی تعداد میں فرق ہے۔ Bitcoin یا Ethereum میں فی الحال حقیقی لین دین اور بلاکس کو دیکھا جا سکتا ہے۔ بلاک ایکسپلورر.

بٹ کوائن میں بلاکس کا سائز 1MB تک محدود ہے اور تقریباً 200 بائٹس کے لین دین میں معلومات کی کم از کم مقدار کے ساتھ، بلاک میں زیادہ سے زیادہ لین دین تقریباً 6000 ہو سکتے ہیں۔ یہاں سے، ویسے، بٹ کوائن کی کارکردگی کی پیروی کرتا ہے، جس پر ہر کوئی ہنستا ہے: ایک بلاک تقریباً ہر 10 منٹ * 60 سیکنڈ = 600 سیکنڈ میں ایک بار تیار ہوتا ہے، جو تقریباً 10 TPS کی رسمی کارکردگی دیتا ہے۔ اگرچہ حقیقت میں، یہ پیداواریت نہیں ہے، لیکن کام کا جان بوجھ کر لاگو کیا گیا الگورتھم ہے۔ Ethereum میں، مقابلے کے لیے، انہوں نے صرف بلاک جنریشن کا وقت 15 سیکنڈ بنا دیا۔ اور پیداوری رسمی طور پر بڑھ گئی. لہذا، بلاکچینز میں جو PoW کو اتفاق رائے کے طور پر استعمال کرتے ہیں، کارکردگی کا موازنہ کرنا کوئی معنی نہیں رکھتا، کیونکہ یہ براہ راست کیشے کے حساب کتاب کی پیچیدگی پر منحصر ہے، جسے کسی بھی قدر کے لیے تفویض کیا جا سکتا ہے۔

کانٹے

کیا ہوتا ہے اگر، مثال کے طور پر، کئی نوڈس کو ایسی ہیشیں ملیں جو پیچیدگی کی شرائط کو پورا کرتی ہیں، لیکن قدر میں مختلف ہیں (دوسرے لفظوں میں، وہ مختلف اتفاق رائے پر آئے ہیں) اور بلاکس کو بلاکس لکھے؟ آئیے دیکھتے ہیں کہ بلاکچین اس صورت حال سے کیسے بچاتا ہے۔ اس صورت میں، ایک نام نہاد کانٹا ہوتا ہے، اور بلاکچین میں چین کے دو ورژن ہوتے ہیں:

ہمیں بلاکچین کیا بنانا چاہئے؟

اگے کیا ہوتا ہے؟ اس کے بعد، نیٹ ورک کا ایک حصہ بلاک N+2 پر ایک سلسلہ سے، اور حصہ دوسرے سے کام کرنا شروع کرتا ہے:

ہمیں بلاکچین کیا بنانا چاہئے؟

ان میں سے ایک بلاک پہلے مل جائے گا اور اسے بلاک چین کو بھیجا جائے گا، اور پھر، قواعد کے مطابق، بلاکچین کو ایک لمبی زنجیر پر جانا ہوگا اور متبادل بلاک سے تمام لین دین کو منسوخ کرنا ہوگا:

ہمیں بلاکچین کیا بنانا چاہئے؟

ایک ہی وقت میں، ایسی صورت حال پیدا ہو سکتی ہے جب کسی شریک کا لین دین صرف فورک بلاکس میں سے ایک میں تھا، جسے منسوخ کر دیا گیا تھا۔ لہذا، اس بات کو یقینی بنانے کے لیے کہ مطلوبہ لین دین بلاکچین میں ریکارڈ کیا گیا ہے، ایک عام تجویز ہے - لین دین پر بھروسہ کرنے سے پہلے، آپ کو اگلے چند بلاکس بلاکچین میں شامل ہونے تک انتظار کرنا چاہیے۔ مختلف بلاکچینز کے لیے کتنے بلاکس کا انتظار کرنا ہے اس کی سفارشات مختلف ہوتی ہیں۔ مثال کے طور پر، بٹ کوائن نیٹ ورک کے لیے کم از کم 2 بلاکس ہیں، زیادہ سے زیادہ 6۔

بلاک فورکس کے ساتھ ایک ہی تصویر نام نہاد 51% حملے کے دوران دیکھی جائے گی - یہ اس وقت ہوتا ہے جب کان کنوں کا ایک گروپ ایک متبادل بلاک چین کو بڑھانے کی کوشش کرتا ہے، اور اپنے جعلی لین دین سے چین کو منسوخ کرنے کی کوشش کرتا ہے۔ اگرچہ فی الحال، دھوکہ دہی کے بجائے، ایماندارانہ کان کنی پر اپنی طاقت خرچ کرنا زیادہ منافع بخش ہے۔

اتفاق رائے

بلاکچین پر بلاک کو ریکارڈ کرنے کے لیے، نیٹ ورک کو اتفاق رائے تک پہنچنا چاہیے۔ آئیے کمپیوٹر کمیونیکیشن نیٹ ورکس میں اتفاق رائے حاصل کرنے کے کام کو یاد رکھیں۔ یہ مسئلہ بازنطینی جرنیلوں کے کام کے طور پر تیار کیا گیا ہے BFT (بازنطینی غلطی رواداری)۔ بازنطینی فوج کے مسائل کی دلکش وضاحت کو چھوڑ کر، اس مسئلے کو اس طرح ترتیب دیا جا سکتا ہے: اگر کچھ نیٹ ورک نوڈس جان بوجھ کر انہیں مسخ کر سکتے ہیں تو نیٹ ورک نوڈس ایک عام نتیجہ پر کیسے پہنچ سکتے ہیں۔ BFT کے مسئلے کو حل کرنے کے لیے موجودہ الگورتھم ظاہر کرتے ہیں کہ نیٹ ورک صحیح طریقے سے کام کر سکتا ہے اگر 1/3 سے کم دھوکہ باز ہوں۔ BFT اتفاق رائے کو Bitcoin نیٹ ورک پر کیوں لاگو نہیں کیا گیا؟ PoW استعمال کرنا کیوں ضروری تھا؟ کئی وجوہات ہیں:

  • BFT نوڈس کے ایک چھوٹے سے مقررہ سیٹ کے ساتھ اچھی طرح کام کرتا ہے، لیکن عوامی بلاک چین میں نوڈس کی تعداد غیر متوقع ہوتی ہے اور اس کے علاوہ، نوڈس کو تصادفی طور پر آن اور آف کیا جا سکتا ہے۔
  • لوگوں کو بلاکچین نوڈس شروع کرنے کی ترغیب دینا ضروری ہے۔ ایسا کرنے کے لئے، لوگوں کو انعام دینا ہوگا. BFT میں باضابطہ طور پر انعام حاصل کرنے کے لیے کچھ بھی نہیں ہے، لیکن PoW میں انعام کس چیز کے لیے ہے یہ ایک بدیہی سطح پر ہر کسی کے لیے واضح ہے: بلاک ہیش کو تلاش کرنے کے عمل میں پروسیسر کے ذریعے استعمال ہونے والی بجلی کے لیے۔

PoW کے علاوہ، کئی دیگر اتفاق رائے ہیں جو جدید بلاک چینز میں استعمال ہوتے ہیں، مثال کے طور پر:

  • PoS (داؤ کا ثبوت) - بلاکچین پر Hyperledger
  • ڈی پی او ایس (ڈیلیگیٹڈ پروف آف اسٹیک) - بلاک چین پر بٹسیرس
  • BFT کی ترمیم: SBFT (آسان BFT) اور PBFT (عملی BFT)، مثال کے طور پر بلاک چین میں Exonum

آئیے PoS اتفاق رائے پر تھوڑا سا غور کریں، کیونکہ... یہ PoS اور اس کی اقسام ہیں جو پرائیویٹ بلاک چینز میں سب سے زیادہ پھیلی ہوئی ہیں۔ ذاتی طور پر کیوں؟ ایک طرف، PoW کے مقابلے PoS کی خصوصیات بہتر ہیں، کیونکہ اتفاق رائے حاصل کرنے کے لیے، کمپیوٹنگ کے کم وسائل کی ضرورت ہے، جس کا مطلب ہے کہ بلاکچین میں ڈیٹا لکھنے کی رفتار بڑھ جاتی ہے۔ لیکن دوسری طرف، PoS کے پاس دھوکہ دہی کے زیادہ مواقع ہیں، اس لیے اسے بے اثر کرنے کے لیے، بلاک چین کے تمام شرکاء کو معلوم ہونا چاہیے۔

PoS اتفاق رائے ایک نوڈ کے انتخاب پر مبنی ہے جو اکاؤنٹ میں فنڈز کی رقم کے لحاظ سے بلاکچین کو لین دین کے ساتھ ایک بلاک لکھ سکتا ہے، یا اس کے بجائے، اکاؤنٹ میں نہیں، بلکہ کولیٹرل میں، یعنی۔ آپ کے پاس ضمانت کے طور پر جتنے زیادہ فنڈز ہوں گے، اتنا ہی زیادہ امکان ہے کہ نیٹ ورک آپ کے نوڈ کو بلاک لکھنے کے لیے منتخب کرے گا۔ اگر بلاک غلط ہے تو جمع رقم واپس نہیں کی جائے گی۔ یہ دھوکہ دہی کے خلاف تحفظ فراہم کرتا ہے۔ PoS کے درج ذیل تغیرات ہیں:

  • ڈیلیگیٹڈ پی او ایس (ڈی پی او ایس) اتفاق رائے شرکاء کو "ووٹرز" اور "ویلیڈیٹرز" میں تقسیم کرتا ہے۔ سکے ہولڈرز (ووٹ دینے والے شرکاء) بلاک چین پر لین دین کی تصدیق اور ریکارڈ کرنے کا اپنا اختیار دوسرے شرکاء کو دیتے ہیں۔ اس طرح، توثیق کرنے والے تمام کمپیوٹیشنل کام کرتے ہیں اور اس کے لیے انعام وصول کرتے ہیں، اور ووٹنگ کے شرکاء کی موجودگی تصدیق کنندگان کی ایمانداری کی ضمانت دیتی ہے، کیونکہ وہ کسی بھی وقت تبدیل کر سکتے ہیں.
  • ایل پی او ایس (لیزڈ پروف آف اسٹیک) اتفاق رائے آپ کو اپنے فنڈز کو دوسرے نوڈس کو لیز پر دینے کی اجازت دیتا ہے تاکہ ان کے پاس بلاکس کی توثیق کا بہتر موقع ہو۔ وہ. آپ حقیقی لین دین کی تصدیق اور بلاک مائننگ میں حصہ لیے بغیر لین دین کے لیے کمیشن حاصل کر سکتے ہیں۔

ایسے متعدد اتفاق رائے بھی ہیں جو ابھی تک وسیع نہیں ہوئے ہیں؛ میں صرف معلومات کے لیے انہیں یہاں درج کروں گا، اور خود اتفاق رائے کے الگورتھم کا ایک جائزہ پایا جا سکتا ہے، مثال کے طور پر، مضمون میں: بلاکچین میں متفقہ الگورتھم.

  • PoET (گذرے ہوئے وقت کا ثبوت)
  • PoC (صلاحیت کا ثبوت)
  • PoB (برن کا ثبوت)
  • پو ویٹ (وزن کا ثبوت)
  • PoA (سرگرمی کا ثبوت) – PoW + PoS
  • PoI (اہمات کا ثبوت)

بلاکچینز کے قابل اعتماد اور تعیناتی ماڈل

عوامی بلاکچین

استحکام پبلک یا کوئی اور نام؟ بلا اجازت بلاکچین یہ کسی کو بھی معلومات کو جوڑنے اور دیکھنے یا یہاں تک کہ اپنے نوڈ کو جوڑنے کی اجازت دے کر حاصل کیا جاتا ہے، اور اعتماد PoW اتفاق رائے پر قائم ہوتا ہے۔

پرائیویٹ بلاکچین

ذاتی یا نجی اجازت یافتہ بلاکچین. ان بلاک چینز میں، شرکاء کے صرف ایک مخصوص گروپ (تنظیموں یا لوگوں) کو معلومات تک رسائی حاصل ہوتی ہے۔ اس طرح کے بلاک چینز تنظیموں کے ذریعے مجموعی فائدہ یا کارکردگی کو بڑھانے کے مقصد کے ساتھ بنائے جاتے ہیں۔ ان کی وشوسنییتا کو شرکاء کے مشترکہ اہداف اور PoS اور BFT متفقہ الگورتھم سے یقینی بنایا جاتا ہے۔

بلاکچین کنسورشیم

اس کنسورشیم یا عوامی اجازت یافتہ بلاکچین. یہ بلاک چینز ہیں جنہیں دیکھنے کے لیے کوئی بھی رابطہ کر سکتا ہے، لیکن ایک شریک معلومات شامل کر سکتا ہے یا اپنے نوڈ کو صرف دوسرے شرکاء کی اجازت سے جوڑ سکتا ہے۔ اس طرح کے بلاک چینز کو تنظیموں کے ذریعے بنایا جاتا ہے تاکہ صارفین یا مصنوعات کے صارفین یا مجموعی طور پر معاشرے پر اعتماد بڑھایا جا سکے۔ یہاں، شرکاء اور اسی PoS اور BFT متفقہ الگورتھم کے درمیان اعتماد کی موجودگی سے بھی قابل اعتماد حاصل کیا جاتا ہے۔

سمارٹ معاہدہ

Bitcoin کے بعد لاگو کی گئی بلاک چینز نے، کسی نہ کسی حد تک، سمارٹ معاہدوں کو انجام دینے کی صلاحیت کو شامل کیا۔ بنیادی طور پر، ایک سمارٹ کنٹریکٹ ایک لین دین ہے جس میں پروگرام کوڈ پر عمل درآمد کے لیے رکھا جاتا ہے۔ ایتھریم نیٹ ورک پر سمارٹ معاہدوں کو ای وی ایم (ایتھریم ورچوئل مشین) میں انجام دیا جاتا ہے۔ سمارٹ کنٹریکٹ پر عمل درآمد شروع کرنے کے لیے، اسے کسی اور لین دین کے ذریعے واضح طور پر شروع کیا جانا چاہیے، یا اس پر عمل درآمد کے لیے پیشگی شرائط کو پورا کیا جانا چاہیے۔ سمارٹ کنٹریکٹ پر عمل درآمد کے نتائج بھی بلاک چین میں ریکارڈ کیے جائیں گے۔ بلاکچین کے باہر سے ڈیٹا وصول کرنا ممکن ہے، لیکن انتہائی محدود۔

سمارٹ کنٹریکٹ کا استعمال کرتے ہوئے کس کاروباری منطق کو لاگو کیا جا سکتا ہے؟ درحقیقت، بہت کچھ نہیں ہے، مثال کے طور پر، بلاکچین سے ڈیٹا کا استعمال کرتے ہوئے حالات کی جانچ کرنا، ان شرائط کے مطابق ڈیجیٹل اثاثوں کے مالکان کو تبدیل کرنا، بلاکچین کے اندر مستقل اسٹوریج میں ڈیٹا ریکارڈ کرنا۔ منطق کو ایک خاص اعلیٰ سطحی زبان سولیڈیٹی میں لاگو کیا جاتا ہے۔

فنکشنلٹی کی ایک بہترین مثال جو سمارٹ کنٹریکٹس کا استعمال کرتے ہوئے لاگو ہوتی ہے ICOs کے لیے ٹوکن کا اجراء ہے۔ مثال کے طور پر، میں نے ایک معمولی 500 AlexToken جاری کرنے کے لیے ایک سمارٹ معاہدہ نافذ کیا۔ کی طرف سے Etherscan میں لنک ہے

سولیڈیٹی زبان میں سمارٹ کنٹریکٹ کا سورس کوڈ

pragma solidity ^0.4.23;
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
**/
function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
if (a == 0) {
return 0;
}
c = a * b;
assert(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
**/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
// uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return a / b;
}
/**
* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
**/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
**/
function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
c = a + b;
assert(c >= a);
return c;
}
}
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
**/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender account.
**/
constructor() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
**/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
**/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
/**
* @title ERC20Basic interface
* @dev Basic ERC20 interface
**/
contract ERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
**/
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
* @title Basic token
* @dev Basic version of StandardToken, with no allowances.
**/
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) balances;
uint256 totalSupply_;
/**
* @dev total number of tokens in existence
**/
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
/**
* @dev transfer token for a specified address
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
**/
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[msg.sender]);
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
emit Transfer(msg.sender, _to, _value);
return true;
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
**/
function balanceOf(address _owner) public view returns (uint256) {
return balances[_owner];
}
}
contract StandardToken is ERC20, BasicToken {
mapping (address => mapping (address => uint256)) internal allowed;
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the amount of tokens to be transferred
**/
function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[_from]);
require(_value <= allowed[_from][msg.sender]);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
emit Transfer(_from, _to, _value);
return true;
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
*
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
**/
function approve(address _spender, uint256 _value) public returns (bool) {
allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
**/
function allowance(address _owner, address _spender) public view returns (uint256) {
return allowed[_owner][_spender];
}
/**
* @dev Increase the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To increment
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _addedValue The amount of tokens to increase the allowance by.
**/
function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
/**
* @dev Decrease the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To decrement
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _subtractedValue The amount of tokens to decrease the allowance by.
**/
function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
uint oldValue = allowed[msg.sender][_spender];
if (_subtractedValue > oldValue) {
allowed[msg.sender][_spender] = 0;
} else {
allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
}
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
}
/**
* @title Configurable
* @dev Configurable varriables of the contract
**/
contract Configurable {
uint256 public constant cap = 1000000000*10**18;
uint256 public constant basePrice = 100*10**18; // tokens per 1 ether
uint256 public tokensSold = 0;
uint256 public constant tokenReserve = 500000000*10**18;
uint256 public remainingTokens = 0;
}
/**
* @title CrowdsaleToken 
* @dev Contract to preform crowd sale with token
**/
contract CrowdsaleToken is StandardToken, Configurable, Ownable {
/**
* @dev enum of current crowd sale state
**/
enum Stages {
none,
icoStart, 
icoEnd
}
Stages currentStage;
/**
* @dev constructor of CrowdsaleToken
**/
constructor() public {
currentStage = Stages.none;
balances[owner] = balances[owner].add(tokenReserve);
totalSupply_ = totalSupply_.add(tokenReserve);
remainingTokens = cap;
emit Transfer(address(this), owner, tokenReserve);
}
/**
* @dev fallback function to send ether to for Crowd sale
**/
function () public payable {
require(currentStage == Stages.icoStart);
require(msg.value > 0);
require(remainingTokens > 0);
uint256 weiAmount = msg.value; // Calculate tokens to sell
uint256 tokens = weiAmount.mul(basePrice).div(1 ether);
uint256 returnWei = 0;
if(tokensSold.add(tokens) > cap){
uint256 newTokens = cap.sub(tokensSold);
uint256 newWei = newTokens.div(basePrice).mul(1 ether);
returnWei = weiAmount.sub(newWei);
weiAmount = newWei;
tokens = newTokens;
}
tokensSold = tokensSold.add(tokens); // Increment raised amount
remainingTokens = cap.sub(tokensSold);
if(returnWei > 0){
msg.sender.transfer(returnWei);
emit Transfer(address(this), msg.sender, returnWei);
}
balances[msg.sender] = balances[msg.sender].add(tokens);
emit Transfer(address(this), msg.sender, tokens);
totalSupply_ = totalSupply_.add(tokens);
owner.transfer(weiAmount);// Send money to owner
}
/**
* @dev startIco starts the public ICO
**/
function startIco() public onlyOwner {
require(currentStage != Stages.icoEnd);
currentStage = Stages.icoStart;
}
/**
* @dev endIco closes down the ICO 
**/
function endIco() internal {
currentStage = Stages.icoEnd;
// Transfer any remaining tokens
if(remainingTokens > 0)
balances[owner] = balances[owner].add(remainingTokens);
// transfer any remaining ETH balance in the contract to the owner
owner.transfer(address(this).balance); 
}
/**
* @dev finalizeIco closes down the ICO and sets needed varriables
**/
function finalizeIco() public onlyOwner {
require(currentStage != Stages.icoEnd);
endIco();
}
}
/**
* @title LavevelToken 
* @dev Contract to create the Lavevel Token
**/
contract AlexToken is CrowdsaleToken {
string public constant name = "AlexToken";
string public constant symbol = "ALT";
uint32 public constant decimals = 18;
}

اور بائنری نمائندگی جیسا کہ نیٹ ورک اسے دیکھتا ہے۔

60806040526000600355600060045533600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908360028111156200006f57fe5b0217905550620001036b019d971e4fe8401e74000000600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200024a6401000000000262000b1d179091906401000000009004565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001986b019d971e4fe8401e740000006001546200024a6401000000000262000b1d179091906401000000009004565b6001819055506b033b2e3c9fd0803ce8000000600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b019d971e4fe8401e740000006040518082815260200191505060405180910390a362000267565b600081830190508281101515156200025e57fe5b80905092915050565b611cb880620002776000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146104c7578063095ea7b31461055757806318160ddd146105bc57806323b872dd146105e7578063313ce5671461066c578063355274ea146106a3578063518ab2a8146106ce57806366188463146106f957806370a082311461075e57806389311e6f146107b55780638da5cb5b146107cc578063903a3ef61461082357806395d89b411461083a578063a9059cbb146108ca578063bf5839031461092f578063c7876ea41461095a578063cbcb317114610985578063d73dd623146109b0578063dd62ed3e14610a15578063f2fde38b14610a8c575b60008060008060006001600281111561012757fe5b600560149054906101000a900460ff16600281111561014257fe5b14151561014e57600080fd5b60003411151561015d57600080fd5b600060045411151561016e57600080fd5b3494506101a7670de0b6b3a764000061019968056bc75e2d6310000088610acf90919063ffffffff16565b610b0790919063ffffffff16565b9350600092506b033b2e3c9fd0803ce80000006101cf85600354610b1d90919063ffffffff16565b111561024c576101f66003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b915061022e670de0b6b3a764000061022068056bc75e2d6310000085610b0790919063ffffffff16565b610acf90919063ffffffff16565b90506102438186610b3990919063ffffffff16565b92508094508193505b61026184600354610b1d90919063ffffffff16565b6003819055506102886003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b6004819055506000831115610344573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156102dd573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b610395846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a361045184600154610b1d90919063ffffffff16565b600181905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156104bf573d6000803e3d6000fd5b505050505050005b3480156104d357600080fd5b506104dc610b52565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056357600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156105c857600080fd5b506105d1610c7d565b6040518082815260200191505060405180910390f35b3480156105f357600080fd5b50610652600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c87565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b50610681611041565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b506106b8611046565b6040518082815260200191505060405180910390f35b3480156106da57600080fd5b506106e3611056565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ed565b6040518082815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611335565b005b3480156107d857600080fd5b506107e16113eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082f57600080fd5b50610838611411565b005b34801561084657600080fd5b5061084f6114ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088f578082015181840152602081019050610874565b50505050905090810190601f1680156108bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108d657600080fd5b50610915600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b34801561093b57600080fd5b50610944611703565b6040518082815260200191505060405180910390f35b34801561096657600080fd5b5061096f611709565b6040518082815260200191505060405180910390f35b34801561099157600080fd5b5061099a611716565b6040518082815260200191505060405180910390f35b3480156109bc57600080fd5b506109fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b348015610a2157600080fd5b50610a76600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611922565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a9565b005b600080831415610ae25760009050610b01565b8183029050818382811515610af357fe5b04141515610afd57fe5b8090505b92915050565b60008183811515610b1457fe5b04905092915050565b60008183019050828110151515610b3057fe5b80905092915050565b6000828211151515610b4757fe5b818303905092915050565b6040805190810160405280600981526020017f416c6578546f6b656e000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cc457600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d1157600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d9c57600080fd5b610ded826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e80826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b60035481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561116d576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611201565b6111808382610b3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561139157600080fd5b60028081111561139d57fe5b600560149054906101000a900460ff1660028111156113b857fe5b141515156113c557600080fd5b6001600560146101000a81548160ff021916908360028111156113e457fe5b0217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146d57600080fd5b60028081111561147957fe5b600560149054906101000a900460ff16600281111561149457fe5b141515156114a157600080fd5b6114a9611b01565b565b6040805190810160405280600381526020017f414c54000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561152157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561156e57600080fd5b6115bf826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611652826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60045481565b68056bc75e2d6310000081565b6b019d971e4fe8401e7400000081565b60006117b782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002600560146101000a81548160ff02191690836002811115611b2057fe5b021790555060006004541115611c0a57611ba5600454600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c89573d6000803e3d6000fd5b505600a165627a7a723058205bbef016cc7699572f944871cb6f05e69915ada3a92a1d9f03a3fb434aac0c2b0029

سمارٹ معاہدوں کے بارے میں مزید تفصیلات مضمون میں مل سکتی ہیں: Ethereum میں سمارٹ معاہدے کیا ہیں؟.

حاصل يہ ہوا

ہم نے وہ ٹیکنالوجیز درج کی ہیں جن پر جدید بلاک چینز بنائے گئے ہیں اور وہ ایک دوسرے سے کیسے جڑے ہوئے ہیں۔ اب آئیے وضع کرتے ہیں کہ بلاکچین کے استعمال سے کن مسائل کو حل کیا جا سکتا ہے، اور کون سے حل بہترین طور پر، غیر موثر ہوں گے۔ لہذا، بلاکچین کا استعمال ضروری نہیں ہے اگر:

  • لین دین ایک قابل اعتماد ماحول میں کئے جاتے ہیں؛
  • ثالثوں کے کمیشن کی موجودگی شرکاء کی زندگی کو خراب نہیں کرتی۔
  • شرکاء کے پاس ایسی جائیداد نہیں ہے جسے ڈیجیٹل اثاثوں کے طور پر پیش کیا جا سکے۔
  • ڈیجیٹل اثاثوں میں کوئی تقسیم نہیں ہے، یعنی قیمت صرف ایک شریک کی ملکیت یا فراہم کی جاتی ہے۔

بلاکچین کا مستقبل کیا ہے؟ اب ہم صرف بلاکچین ٹیکنالوجیز کی ترقی کے ممکنہ طریقوں پر قیاس کر سکتے ہیں:

  • بلاکچین وہی عام ڈیٹابیس ٹیکنالوجی بن جائے گی جو کہ اپنے مخصوص مسائل کو حل کرنے کے لیے، مثال کے طور پر، SQL یا NoSQL؛
  • بلاکچین ایک وسیع پروٹوکول بن جائے گا، جیسا کہ HTTP انٹرنیٹ کے لیے ہے۔
  • بلاکچین سیارے پر ایک نئے مالیاتی اور سیاسی نظام کی بنیاد بن جائے گا!

اگلے حصے میں ہم دیکھیں گے کہ اس وقت کون سی بلاک چینز موجود ہیں اور انہیں مختلف صنعتوں میں کیوں استعمال کیا جاتا ہے۔

یہ صرف آغاز ہے!

ماخذ: www.habr.com

نیا تبصرہ شامل کریں