بلاک چین 101: ایک بصری ڈیمو
بلاک چین ٹیکنالوجی کے کام کرنے کے طریقے کا ایک ڈیمو، جس میں ہیشنگ، بلاکس، چینز، ڈسٹریبیوٹڈ لیجرز، اور ٹوکنز کا احاطہ کیا گیا ہے تاکہ بلاک چین کے تصورات کو ٹھوس اور قابل فہم بنایا جا سکے۔
Date published: ۱۳ نومبر، ۲۰۱۶
اینڈرس براؤن ورتھ کا بلاک چین ٹیکنالوجی کے کام کرنے کے طریقے کا بصری ڈیمو، جس میں SHA-256 ہیشنگ، بلاکس، کان کنی، بلاک چینز، ڈسٹریبیوٹڈ لیجرز، ٹوکنز، اور بہت کچھ کا احاطہ کیا گیا ہے۔
یہ ٹرانسکرپٹ اینڈرس براؤن ورتھ کی جانب سے شائع کردہ اصل ویڈیو ٹرانسکرپٹ (opens in a new tab) کی ایک قابل رسائی کاپی ہے۔ اسے پڑھنے میں آسانی کے لیے معمولی طور پر ایڈٹ کیا گیا ہے۔
SHA-256 ہیش (0:01)
یہ ایک بلاک چین ڈیمو ہے۔ ہم اسے ایک انتہائی بصری انداز میں کرنے جا رہے ہیں — ہم بلاک چین کے کلیدی حصوں کو مرحلہ وار سمجھ کر اسے سمجھنا بہت آسان بنانے جا رہے ہیں۔
شروع کرنے سے پہلے، ہمیں SHA-256 ہیش کہلانے والی اس چیز پر ایک نظر ڈالنے کی ضرورت ہے۔ ایک ہیش بے ترتیب نمبروں کے مجموعے کی طرح لگتا ہے، اور بنیادی طور پر یہ کسی ڈیجیٹل ڈیٹا کا فنگر پرنٹ ہوتا ہے۔ یہ اتفاق سے اس چیز کا فنگر پرنٹ ہے جو میں اس باکس میں ٹائپ کرتا ہوں۔ اگر میں اس باکس میں اپنا نام "Anders" ٹائپ کرتا ہوں، تو آپ دیکھیں گے کہ ہیش تبدیل ہو گیا ہے۔ درحقیقت، جب بھی میں نے کوئی حرف ٹائپ کیا تو یہ تبدیل ہوا۔
تو یہ نام "Anders" کا ہیش ہے، تمام چھوٹے حروف میں — یہ 19ea سے شروع ہوتا ہے۔ اگر میں اسے حذف کر دوں اور دوبارہ "Anders" ٹائپ کروں، تو آپ دیکھ سکتے ہیں کہ یہ 19ea سے شروع ہوتا ہے — بالکل وہی ہیش۔ اس لحاظ سے یہ اس ڈیٹا کا ڈیجیٹل فنگر پرنٹ ہے۔ یہاں جو بھی ڈیٹا ہو، جب بھی آپ بالکل وہی ڈیٹا ٹائپ کرتے ہیں تو آپ کو بالکل وہی ہیش ملتا ہے۔
میں جو چاہوں ٹائپ کر سکتا ہوں۔ آپ کچھ بھی نہ لکھیں — e3b0 — یہ کچھ نہ ہونے کا ہیش ہے۔ یا آپ بہت سارا مواد ٹائپ کر سکتے ہیں۔ درحقیقت، آپ یہاں لائبریری آف کانگریس (Library of Congress) کا پورا ڈیٹا ڈال سکتے ہیں اور آپ کو ایک ہیش مل جائے گا۔ دلچسپ بات یہ ہے کہ، اس بات سے قطع نظر کہ معلومات کی تھوڑی سی مقدار ہے، کوئی معلومات نہیں ہے، یا پوری لائبریری آف کانگریس ہے، آپ کو ہمیشہ ایک ہیش ملے گا جو اتنا ہی طویل ہوگا۔ آپ پہلے سے اندازہ نہیں لگا سکیں گے کہ یہ کیا ہے — آپ کو ہیش معلوم کرنے کے لیے ڈیٹا ڈالنا پڑتا ہے، لیکن آپ کو ہمیشہ بالکل وہی ہیش ملے گا چاہے آپ کتنی ہی بار بالکل وہی معلومات درج کریں۔
بلاک (2:10)
میں جو کرنے جا رہا ہوں وہ یہ ہے کہ ہیش کے اس خیال کو ایک ایسی چیز تک بڑھاؤں جسے ہم بلاک کہیں گے۔ ایک بلاک بالکل ہیش کی طرح ہوتا ہے، لیکن ڈیٹا کے حصے کو تین حصوں میں تقسیم کر دیا گیا ہے: ایک جسے "بلاک" کہا جاتا ہے — صرف ایک نمبر، یہ بلاک نمبر 1 ہے — ایک "نانس"، جو صرف ایک اور نمبر ہے، اور پھر کچھ ڈیٹا بالکل ویسے ہی جیسے ہمارے پاس پہلے تھا۔
اس تمام معلومات کا ہیش یہاں نیچے ہے، اور یہ چار صفر سے شروع ہوتا ہے۔ یہ نسبتاً ایک غیر معمولی ہیش ہے — ان میں سے زیادہ تر اس طرح چار صفر سے شروع نہیں ہوں گے۔ لیکن یہ ہوتا ہے، اور چونکہ یہ ہوتا ہے، مکمل طور پر صوابدیدی طور پر، میں یہ کہوں گا کہ یہ بلاک "دستخط شدہ" (signed) ہے۔
اگر میں اس معلومات کے کسی بھی حصے کو تبدیل کر دوں تو کیا ہوگا؟ فرض کریں کہ میں یہاں کچھ ٹائپ کرتا ہوں — ہیش تبدیل ہو جائے گا، اور اس بات کا کیا امکان ہے کہ یہ چار صفر سے شروع ہوگا؟ بہت کم۔ میں صرف "hi" کہنے جا رہا ہوں — اسے دیکھیں، یہ ہیش چار صفر سے شروع نہیں ہوتا، اور پس منظر سرخ ہو گیا ہے۔ تو اب آپ جانتے ہیں کہ یہ بلاک جس میں یہ معلومات ہیں، ایک درست یا دستخط شدہ بلاک نہیں ہے۔
یہیں پر نانس کا کردار آتا ہے۔ نانس صرف ایک نمبر ہے جسے آپ ایک ایسی قدر تلاش کرنے کی کوشش کے لیے سیٹ کر سکتے ہیں جو ہیش کو دوبارہ چار صفر سے شروع کرے۔ میں سارا دن یہاں بیٹھ کر نمبر ٹائپ کر سکتا ہوں، لیکن میرے پاس یہ چھوٹا سا "Mine" بٹن ہے۔ جب میں اسے دباؤں گا تو کیا ہوگا کہ یہ 1 سے اوپر کے تمام نمبروں کو جانچے گا تاکہ ایک ایسا نمبر تلاش کیا جا سکے جہاں ہیش چار صفر سے شروع ہو۔ اس عمل کو کان کنی کہا جاتا ہے۔
یہ 59,396 پر رک گیا ہے — اور اتفاق سے اس کا ہیش کچھ ایسا نکلتا ہے جو چار صفر سے شروع ہوتا ہے۔ یہ میری اس تعریف کو پورا کرتا ہے کہ دستخط شدہ بلاک کیا ہوتا ہے۔
بلاک چین (5:16)
تو کیا آپ مجھے بتا سکتے ہیں کہ بلاک چین کیا ہے؟ یہ شاید صرف ان بلاکس کی ایک چین ہے۔ یہ میری بلاک چین ہے — بلاک نمبر ایک میں پہلے کی طرح ایک نانس ہے، ایک ڈیٹا ایریا ہے، لیکن پھر اس میں یہ "پچھلی" (previous) فیلڈ ہے جو صفر کا ایک مجموعہ ہے۔ آگے بڑھتے ہوئے، یہ بلاک دو، بلاک تین، بلاک چار ہے — اس بلاک چین پر پانچ بلاکس ہیں۔
ہر بلاک کے لیے "پچھلی" فیلڈ اس سے پہلے والے بلاک کا ہیش ہے۔ آپ دیکھ سکتے ہیں کہ ہر بلاک اپنے سے پہلے والے بلاک کی طرف اشارہ کرتا ہے۔ اس پہلے بلاک کا کوئی پچھلا بلاک نہیں ہے، اس لیے یہ صرف صفر کا ایک مجموعہ ہے۔
اگر میں یہاں کچھ معلومات تبدیل کروں تو کیا ہوگا؟ یہ اس بلاک کے ہیش کو تبدیل کر دے گا اور اسے باطل کر دے گا۔ لیکن کیا ہوگا اگر میں کسی پچھلے بلاک میں کچھ تبدیل کروں؟ یہ اس ہیش کو تبدیل کر دے گا، لیکن وہ ہیش اگلے بلاک کی "پچھلی" فیلڈ میں کاپی ہو جاتا ہے، اس لیے یہ دونوں بلاکس کو توڑ دیتا ہے۔ ہم ماضی میں کسی بھی مقام تک جتنا چاہیں پیچھے جا سکتے ہیں اور اس بلاک کو توڑ سکتے ہیں، اور یہ اس کے بعد کے تمام بلاکس کو توڑ دے گا۔ اس سے پہلے کی ہر چیز اب بھی سبز ہے، لیکن اس کے بعد کی ہر چیز سرخ ہو جاتی ہے۔
اگر میں جا کر آخری بلاک کو تبدیل کرتا ہوں، تو مجھے صرف اس ایک بلاک کی دوبارہ کان کنی کرنی ہوگی۔ اگر میں وقت میں بہت پیچھے جا کر کوئی تبدیلی کرتا ہوں، تو مجھے اس کی، اس کی، اس کی، اور اس کی کان کنی کرنی ہوگی۔ جتنے زیادہ بلاکس گزرتے ہیں، تبدیلی کرنا اتنا ہی مشکل ہوتا جاتا ہے۔ اس طرح ایک بلاک چین تغیر (mutation) کے خلاف مزاحمت کرتی ہے — تبدیلی کے خلاف مزاحمت کرتی ہے۔
ڈسٹریبیوٹڈ بلاک چین (9:18)
تو مجھے کیسے پتہ چلے گا کہ میری بلاک چین کی دوبارہ کان کنی کی گئی ہے؟ اب ہمارے پاس ایک ڈسٹریبیوٹڈ بلاک چین ہے۔ یہ بالکل پچھلی بلاک چین کی طرح لگتی ہے، لیکن یہ پیئر A ہے۔ اگر آپ یہاں نیچے جائیں، تو آپ پیئر B دیکھ سکتے ہیں، اور اس کے پاس بلاک چین کی بالکل ہوبہو کاپی ہے۔ ایک پیئر C بھی ہے — یہ سلسلہ ہمیشہ چل سکتا ہے۔ انٹرنیٹ پر بہت سے پیئرز ہیں، اور ان سب کے پاس بلاک چین کی مکمل کاپی ہے۔
اگر میں اس ہیش کو دیکھوں، تو یہ e4b ہے۔ اگر میں اگلے والے پر نیچے جاؤں، تو اس میں بھی e4b ہے۔ وہ لازمی طور پر ایک جیسے ہونے چاہئیں۔ اب اگر میں یہاں جا کر کچھ ٹائپ کروں، اس بلاک کی دوبارہ کان کنی کروں، اور پھر اگلے بلاکس کی کان کنی کروں — تمام چینز سبز ہیں۔ تاہم، یہ چین کہتی ہے کہ آخری ہیش e4b ہے، نیچے والی بھی e4b کہتی ہے، اور یہ درمیانی والی 4cae کہتی ہے۔
تو میں صرف اس ایک چھوٹے سے ہیش پر نظر ڈال کر جانتا ہوں کہ اس بلاک چین میں کچھ گڑبڑ ہے۔ اگرچہ تمام ہیشز چار صفر سے شروع ہوتے ہیں، لیکن یہ والا مختلف ہے۔ یہ بنیادی طور پر ایک کے مقابلے میں دو ہیں — ہم یہاں ایک چھوٹی سی جمہوریت ہیں۔ اس لیے e4b جیت جاتا ہے۔ اس طرح بہت سے مختلف کمپیوٹرز پر مکمل طور پر ڈسٹریبیوٹڈ کاپی ہونے سے آپ کو تیزی سے یہ دیکھنے میں مدد ملتی ہے کہ آیا تمام بلاکس ایک جیسے ہیں۔
بلاک چینز میں بہت آسانی سے 400,000 یا 500,000 بلاکس ہو سکتے ہیں۔ ان سب کو چیک کرنے کے بجائے، آپ کو بس سب سے حالیہ والے کے ہیش کو دیکھنا ہوتا ہے، اور آپ دیکھ سکتے ہیں کہ آیا ماضی میں کسی چیز کو تبدیل کیا گیا تھا۔
ٹوکنز (12:17)
بس یہی پوری بات ہے — اس میں اس سے زیادہ کچھ نہیں ہے۔ لیکن یہ ایک طرح سے واقعی مفید نہیں ہے کیونکہ ہمارے پاس ڈیٹا ایریا میں ایسی کوئی چیز نہیں ہے جس کا کوئی مطلب ہو۔ ہم جو واقعی چاہتے ہیں وہ ایک ٹوکن ہے۔
اب میرے پاس یہ ٹوکنز ہیں — مکمل طور پر صوابدیدی طور پر، میں انہیں ڈالر کہہ رہا ہوں۔ ہمارے پاس ڈارسی (Darcy) سے بنگلے (Bingley) تک پچیس ڈالر ہیں، الزبتھ (Elizabeth) سے جین (Jane) تک چار ڈالر اور ستائیس سینٹ ہیں — آپ سمجھ گئے ہوں گے۔ یہ تمام ٹرانزیکشنز ہو رہی ہیں، اور میں نے صرف ڈیٹا کو ان ٹرانزیکشنز سے بدل دیا ہے۔ بالکل پہلے کی طرح، اگر ہم نیچے جائیں تو ہم دیکھتے ہیں کہ ہمارے پاس اسی بلاک چین کی یہ تمام دوسری کاپیاں موجود ہیں۔
یہیں پر ناقابلِ تبدیلی (immutability) اہم ہے۔ اگر میں یہاں پیچھے کچھ تبدیل کرتا ہوں، تو ہیش دوسری کاپیوں پر موجود ہیش سے مختلف ہوگا۔ یہ بہت اہم ہے کہ اگر آپ وقت میں پیچھے جا کر کوئی قدر تبدیل کرتے ہیں، تو ہم اسے محسوس کر لیں۔ پیسے کے معاملے میں یہ بہت اہم ہے کہ آپ حساب نہ کھوئیں، اور بلاک چین استعمال کرنے کا پورا مقصد یہی ہے — ماضی میں ہونے والی چیزوں میں کسی بھی قسم کی تبدیلیوں کے خلاف مزاحمت کرنا۔
ایک چیز جس کا میں ذکر کروں گا: ہم یہ درج نہیں کر رہے ہیں کہ "ڈارسی کے پاس سو ڈالر ہیں اور وہ بنگلے کو 25 دے رہا ہے۔" ہم صرف پیسوں کی نقل و حرکت کو یاد رکھ رہے ہیں، بینک اکاؤنٹ کے بیلنس کو نہیں۔ اس سے یہ سوال پیدا ہوتا ہے — کیا ڈارسی کے پاس $25 ہیں؟
کوائن بیس ٹرانزیکشن (14:34)
بلاک چین کے اس ورژن میں ہمیں ایک مسئلہ درپیش ہے: ہم دراصل نہیں جانتے کہ آیا ڈارسی کے پاس $25 ہیں۔ تو آئیے ایک کوائن بیس (Coinbase) ٹرانزیکشن پر نظر ڈالتے ہیں۔ ہم اپنے بلاکس میں ایک کوائن بیس ٹرانزیکشن شامل کرتے ہیں — یہ کہتی ہے کہ ہم ہوا سے سو ڈالر ایجاد کرنے جا رہے ہیں اور اسے اینڈرس کو دینے جا رہے ہیں۔ اس بلاک میں کوئی اور ٹرانزیکشنز نہیں ہیں کیونکہ اس سے پہلے کسی کے پاس کوئی پیسہ نہیں تھا۔
اگلے بلاک میں، ایک اور سو ڈالر کہیں سے آتے ہیں اور اینڈرس کے پاس جاتے ہیں۔ اب ہمارے پاس کچھ ٹرانزیکشنز ہیں — وہ سب اینڈرس کی طرف سے ہیں کیونکہ اس وقت میں ہی واحد شخص ہوں جس کے پاس کوئی پیسہ ہے۔ میں اپنے دس ڈالر سوفی (Sophie) کو بھیج رہا ہوں۔ کیا میرے پاس دس ڈالر ہیں؟ ہاں — میں پیچھے مڑ کر دیکھتا ہوں اور پاتا ہوں کہ کوائن بیس ٹرانزیکشن نے مجھے سو دیے تھے، اس لیے میرے پاس کم از کم دس تو ہیں۔
آپ ان سب کو جمع کریں اور وہ سو سے زیادہ نہیں ہوتے۔ یہ کرنسی کے ایک بنیادی اصول کی پیروی کرتا ہے: آپ ہوا سے پیسہ نہیں بنا سکتے، اور اس کی تقسیم کنٹرول میں ہوتی ہے۔
اگر ہم وقت میں تیزی سے آگے بڑھیں، تو ہم دیکھتے ہیں کہ جیکسن (Jackson) الیکسا (Alexa) کو دو ڈالر دے رہا ہے۔ کیا جیکسن کے پاس واقعی دو ڈالر ہیں؟ ہم ایک بلاک پیچھے جاتے ہیں اور دیکھتے ہیں کہ ایملی (Emily) کو اینڈرس سے دس ڈالر ملے تھے اور اس نے دس جیکسن کو دے دیے۔ تو جیکسن کے پاس واقعی پیسہ ہے۔ ہم پیچھے جا کر یہ معلوم کر سکتے ہیں — یہ "پچھلی" فیلڈ ہونے کے فوائد میں سے ایک ہے۔
اختتام (16:30)
یہ ایک بنیادی بلاک چین ہے جس کے اوپر ایک کرنسی چل رہی ہے۔ جیسا کہ آپ جانتے ہیں، بلاک چینز کی بہت سی کاپیاں ہوتی ہیں — ہر ایک کے پاس ایک کاپی ہوتی ہے۔ اگر ہم کسی چیز کو تبدیل کر کے اسے چھ ڈالر کر دیں، تو بلاکس باطل ہو جاتے ہیں اور دوسری کاپیوں سے مطابقت نہیں رکھتے۔ یہ چھیڑ چھاڑ کے خلاف مزاحمت کرتا ہے، جو کہ آپ ایک کرنسی کے لیے چاہتے ہیں۔ یہ ان چیزوں کے لیے بہت اچھی طرح کام کرتا ہے جو چھوٹی اور ٹرانزیکشنل نوعیت کی ہوں۔
بلاک چینز اس بات پر اتفاق رائے کو سنبھالنے کا ایک انتہائی موثر طریقہ ہیں کہ ماضی میں کیا ہوا ہے — یہ ناقابلِ تبدیلی تاریخ جو وقت کے ساتھ ساتھ آگے بڑھتی ہے۔ ہم کچھ اہم نکات کو سرسری طور پر دیکھ رہے ہیں، لیکن اگر آپ ڈیمو کی گہرائی میں جائیں اور ان چیزوں پر کلک کریں اور اس کے ساتھ تجربہ کریں، تو آپ کو اس کے کام کرنے کے طریقے کا بہتر سے بہتر اندازہ ہو جائے گا۔