ڇا اسان کي بلاڪ چين ٺاهڻ گهرجي؟

انسانيت جي پوري تاريخ زنجيرن مان نجات حاصل ڪرڻ ۽ نئين، اڃا به وڌيڪ مضبوط پيدا ڪرڻ جو هڪ مسلسل عمل آهي. (گمنام ليکڪ)

ڪيترن ئي بلاڪچين منصوبن جو تجزيو ڪندي (Bitshares، Hyperledger، Exonum، Ethereum، Bitcoin، وغيره)، مان سمجهان ٿو ته ٽيڪنيڪل نقطي نظر کان، اهي سڀئي ساڳيا اصولن تي ٺهيل آهن. بلاڪچين گهرن جي ياد ڏياريندا آهن، جيڪي سڀني قسمن جي جوڙجڪ، سجاڳي ۽ مقصدن جي باوجود، هڪ بنياد، ڀت، ڇت، ونڊوز، دروازا آهن جيڪي هڪ ٻئي سان ڪجهه خاص طريقن سان ڳنڍيل آهن. ۽ جيڪڏھن توھان سمجھو ٿا بنيادي اصولن جي عمارت جي ڊيزائن ۽ استعمال ٿيل مواد جي ملڪيت کي ڄاڻو، پوء توھان ھڪڙي گھر جي ھڪڙي گھر جو مقصد طئي ڪري سگھو ٿا. في الحال، هڪ صورتحال پيدا ٿي چڪي آهي blockchain جنهن جي باري ۾ هرڪو ٻڌو آهي، پر ٿورا ماڻهو سمجھندا آهن فن تعمير ۽ آپريشن جا اصول. تنهن ڪري، اتي هڪ غلط فهمي آهي ڇو ۽ ڪيئن اهو سمجھي ٿو ته بلاڪچين ٽيڪنالاجيز کي استعمال ڪرڻ لاء.

هن آرٽيڪل ۾ اسين تجزيو ڪنداسين ملڪيتن ۽ اصولن جو عام سڀني بلاڪچين لاءِ. اڳيون، اچو ته انهن مسئلن تي نظر وجهون جيڪي بلاڪچين استعمال ڪندي حل ڪري سگھجن ٿيون ۽ مواد کي مضبوط ڪرڻ لاءِ، اچو ته اسان جي ورچوئل سائيٽ تي هڪ ننڍڙو پر حقيقي بلاڪچين ٺاهيون!

تنهن ڪري، اچو ته ياد رکون ته ڪهڙيون مسئلا بلاڪچين شروعاتي طور تي حل ڪيا.

مون کي پڪ آهي ته ڪيترائي ورهايل، غير مرڪزي، عوامي ۽ غير متحرڪ ڊيٽابيس بابت چوندا. پر اهو سڀ ڪجهه ڇو ضروري هو؟

مان ڪنهن به ٽيڪنالاجيءَ جو مطالعو شروع ڪرڻ کي ترجيح ڏيان ٿو معيار کي پڙهي، ڇو ته مطالعي هيٺ آيل موضوع تي سڀئي مضمون ۽ ڪتاب انهن تي ٻڌل آهن. پر في الحال ڪوبه بلاڪچين معيار نه آهن؛ ISO صرف ٺاهيو آهي ڪميٽيون انهن جي ترقي لاء. في الحال، هر پبلڪ بلاڪچين پروجيڪٽ وٽ پنهنجو وائيٽ پيپر دستاويز آهي، جيڪو بنيادي طور تي هڪ ٽيڪنيڪل وضاحت آهي. پهريون عوامي طور تي ڄاڻايل بلاڪچين پروجيڪٽ آهي Bitcoin نيٽورڪ. نيٽ ورڪ جي سرڪاري ويب سائيٽ ڏانهن وڃو ۽ ڏسو جتي اهو سڀ شروع ٿيو.

Blockchain چيلنج

تنهن ڪري، اهو ڪم جيڪو بلاڪچين Bitcoin پائنيئر نيٽ ورڪ ۾ حل ڪيو ويو آهي، ڊجيٽل اثاثن (اثاثن) جي ملڪيت جي هڪ قابل اعتماد منتقلي کي هڪ غير قابل اعتماد ماحول ۾ وچولي کان سواء. مثال طور، Bitcoin نيٽ ورڪ ۾، هڪ ڊجيٽل اثاثو آهي bitcoin ڊجيٽل سکن. ۽ Bitcoin ۽ ٻين بلاڪچين جا سڀئي ٽيڪنيڪل حل هن مسئلي کي حل ڪرڻ لاءِ هيٺ اچن ٿا.

مسئلا جيڪي بلاڪچين حل ڪن ٿا

فرض ڪريو هڪ خاص مالياتي اداري جو چوڻ آهي ته هن سڄي دنيا ۾ هڪ نيٽ ورڪ ٺاهيو آهي جنهن جي مدد سان ڪنهن به شخص کي پئسا منتقل ڪرڻ ممڪن آهي. تون هن تي يقين ڪندين؟ جيڪڏهن اها تنظيم ويزا يا ماسٽر ڪارڊ آهي، گهڻو ڪري توهان ان تي يقين ڪندا، پر جيڪڏهن، نسبتا ڳالهائڻ، AnonymousWorldMoney، توهان شايد نه ڪندا. ڇو؟ پر ڇاڪاڻ ته اسان چڱيءَ طرح ڄاڻون ٿا ته ڪيئن ورهايل نظام پرائيويٽ ڪمپنين پاران ٺاهيا ويا آهن، ڪهڙن مقصدن لاءِ، ۽ اهو ڇا ٿي سگهي ٿو. اچو ته اهڙين سسٽم جي مسئلن تي هڪ ويجهي نظر رکون ۽ انهن کي ڪيئن حل ڪري سگهجي ٿو blockchain ٽيڪنالاجي استعمال ڪندي.

اچو ته چئو ته مشروط AnonymousWorldMoney ۾ ڊيٽابيس سان گڏ سرور آهن، ۽ اهو سٺو آهي جيڪڏهن انهن مان ڪيترائي مختلف ڊيٽا سينٽرن ۾ آهن. جڏهن موڪليندڙ پئسا منتقل ڪري ٿو، هڪ ٽرانزيڪشن رجسٽر ٿيل آهي، جيڪو سڀني سرورن ڏانهن نقل ڪيو ويو آهي، ۽ پئسا وصول ڪندڙ تائين پهچي ٿو.

ڇا اسان کي بلاڪ چين ٺاهڻ گهرجي؟

هڪ مثالي دنيا ۾، هي اسڪيم تمام سٺو ڪم ڪري ٿو، پر اسان ۾ هيٺيان مسئلا پيدا ٿين ٿا:

  1. هڪ طرف شرڪت ڪندڙن جي سڃاڻپ جو مسئلو ۽ ٻئي طرف ٽرانزيڪشن جي گمنام جي ضرورت. اهي. توهان کي رقم هڪ مخصوص وصول ڪندڙ ڏانهن منتقل ڪرڻ جي ضرورت آهي ۽ اهڙي طريقي سان ته هن ٽرانزيڪشن جي باري ۾ ڪنهن کي به خبر ناهي سواء ٽرانزيڪشن ۾ شرڪت ڪندڙن جي. بئنڪ وٽ اڪائونٽ نمبر ۽ بئنڪ ڪارڊ آهن جيڪي هڪ مخصوص فرد يا قانوني اداري سان ڳنڍيل آهن، ۽ بئنڪ جي رازداري ٽرانزيڪشن جي معلومات جي حفاظت ڪري ٿي. ۽ ڪير ضمانت ڏئي ٿو ته مشروط AnonymousWorldMoney ذاتي ڊيٽا ۽ ٽرانزيڪشن جي معلومات کي پنهنجي مقصدن لاءِ استعمال نٿو ڪري؟
  2. ڪيئن پڪ ڪجي ته وصول ڪندڙ کي اها رقم ملي ٿي جيڪا هن ڏانهن منتقل ڪئي وئي هئي؟ نسبتا ڳالهائڻ، موڪليندڙ $ 100 منتقل ڪيو، ۽ وصول ڪندڙ $ 10 وصول ڪيو. موڪليندڙ پنهنجي رسيد سان AnonymousWorldMoney آفيس ۾ اچي ٿو، ۽ ڪلارڪ پنهنجو نسخو ڏيکاري ٿو، جتي لکيل آهي ته موڪليندڙ صرف $10 منتقل ڪيا آهن.
  3. هڪ ناقابل اعتماد ماحول جو مسئلو، مثال طور، هڪ اسڪيم سڏيو ويندو آهي ڊبل خرچ. هڪ بيوقوف حصو وٺندڙ پنهنجي بيلنس ڪيترائي ڀيرا خرچ ڪري سگهي ٿو جيستائين ادائيگي سڀني سرورن تي نقل نه ڪئي وڃي. CAP نظريويقينا، ڪو به منسوخ نه ڪيو ويو آهي، ۽ معاهدو آخرڪار حاصل ڪيو ويندو، پر ڪنهن کي فراهم ڪيل خدمتن يا سامان لاء پئسا نه ملندي. تنهن ڪري، جيڪڏهن ادائگي جي تنظيم يا ٽرانزيڪشن ۾ شرڪت ڪندڙن تي مڪمل اعتماد نه آهي، ته پوء اهو ضروري آهي ته هڪ نيٽ ورڪ تعمير ڪرڻ جي بنياد تي نه، پر cryptography تي.
  4. Conditional AnonymousWorldMoney وٽ محدود تعداد ۾ سرور آهن جيڪي غير ارادي طور تي يا بدسلوڪي ارادي جي ڪري دستياب نه ٿي سگھن ٿا.
  5. AnonymousWorldMoney وٺندو ان جو پنهنجو ٺوس ڪميشن.
  6. ڪنٽرول جو امڪان. Bitcoin جي آپريشن دوران، اهو ظاهر ٿيو ته ماڻهو نه رڳو سکن کي هڪ ٻئي ڏانهن منتقل ڪرڻ چاهيندا آهن، پر ٽرانزيڪشن لاء مختلف شرطن جي جانچ ڪرڻ، پروگرام جي ڪم جي منظرنامي، خود بخود عملن کي انجام ڏيڻ جي حالتن تي منحصر ڪري ٿو، وغيره.

بلاڪچين انهن مسئلن کي ڪيئن حل ڪري ٿو

  1. شرڪت ڪندڙن جي سڃاڻپ ڪنجين جي هڪ جوڙي استعمال ڪندي ڪئي ويندي آهي: نجي ۽ عوامي، ۽ ڊجيٽل دستخط الگورٿم منفرد طور تي موڪليندڙ ۽ وصول ڪندڙ کي سڃاڻي ٿو، انهن جي سڃاڻپ کي گمنام ڇڏي ٿو.
  2. ٽرانزيڪشن کي بلاڪ ۾ گڏ ڪيو ويو آهي، بلاڪ جو هيش حساب ڪيو ويو آهي ۽ ايندڙ بلاڪ ۾ لکيو ويو آهي. بلاڪ ۾ رڪارڊنگ هيش جو هي سلسلو بلاڪچين ٽيڪنالاجي کي ان جو نالو ڏئي ٿو، ۽ اهو پڻ ناممڪن طور تي بلاڪ کي تبديل ڪرڻ / حذف ڪرڻ يا بلاڪ مان انفرادي ٽرانزيڪشن کي ناممڪن بڻائي ٿو. اهڙيء طرح، جيڪڏهن هڪ ٽرانزيڪشن بلاڪچين ۾ شامل آهي، توهان پڪ ڪري سگهو ٿا ته ان جي ڊيٽا تبديل نه ٿيندي.
  3. ڊبل خرچن جي فراڊ کي روڪيو وڃي ٿو نيٽ ورڪ اتفاق راءِ تائين پهچڻ سان جنهن تي ڊيٽا کي صحيح سمجهيو وڃي ۽ ڪهڙو رد ڪيو وڃي. Bitcoin نيٽ ورڪ ۾، اتفاق ڪم جي ثبوت (PoW) ذريعي حاصل ڪيو ويندو آهي.
  4. نيٽ ورڪ جي ڀروسي ان حقيقت سان حاصل ڪئي وئي آهي ته بلاڪچين عوامي آهي، جتي هر حصو وٺندڙ پنهنجو نوڊ هلائي سگهي ٿو، بلاڪچين جي مڪمل ڪاپي حاصل ڪري سگهي ٿو ۽ ان کان علاوه، آزاديءَ سان ٽرانزيڪشن کي درست ڪرڻ لاءِ چيڪ ڪرڻ شروع ڪري ٿو. اها ڳالهه نوٽ ڪرڻ گهرجي ته جديد blockchains ان کي نه رڳو عوامي (کليل) پر پڻ نجي (بند) blockchains تعمير ڪرڻ ممڪن بڻائي، گڏو گڏ گڏيل منصوبن جي استعمال.
  5. بلاڪچين مڪمل طور تي ڪميشن کان نجات حاصل نه ڪندو، ڇاڪاڻ ته ... توهان کي انهن ماڻهن کي ادا ڪرڻو پوندو جيڪي نيٽ ورڪ جي حمايت ڪن ٿا، پر بلاڪچين ۾ هڪ ڪميشن جي ضرورت ايتري قدر ثابت ٿي وئي آهي ته ان جي ضرورت بابت ڪو شڪ ناهي.
  6. جديد بلاڪچين ۾ ڪاروباري منطق کي لاڳو ڪرڻ جي صلاحيت آهي، جنهن کي بلاڪچين ۾ سڏيو ويندو آهي سمارٽ معاهدو. سمارٽ معاهدن جو منطق مختلف اعلي سطحي ٻولين ۾ لاڳو ٿئي ٿو.

اڳيون، اسان انهن حلن تي وڌيڪ تفصيل سان غور ڪنداسين.

بلاڪچين فن تعمير

Blockchain اجزاء

هر حصو وٺندڙ بلاڪچين (مڪمل نوڊ) جي مڪمل ڪاپي سان پنهنجو نوڊ شروع ڪري سگهي ٿو. مڪمل نوڊس جيڪي بلاڪچين تي ٽرانزيڪشن کي رڪارڊ ڪري سگھن ٿا سڏين ٿا متفقه نوڊس (شاهه) يا معدنيات (منر). مڪمل نوڊس جيڪي صرف ٽرانزيڪشن جي درستي جي جانچ ڪن ٿا سڏين ٿا آڊٽ نوڊس (آڊٽ). روشن گراهڪ (روشني ڪلائنٽ) بلاڪچين جون مڪمل ڪاپيون ذخيرو نٿا ڪن، پر مڪمل نوڊس استعمال ڪندي نيٽ ورڪ سان رابطو ڪن ٿا.
گھڻا استعمال ڪندڙ ھلڪي ڪلائنٽ يا ويب والٽ استعمال ڪندا آھن ٽرانزيڪشن ڪرڻ لاءِ. سڀئي نوڊس هڪ ٻئي سان ڳنڍيل آهن. عناصر جي هن سيٽ سان، نيٽ ورڪ فن تعمير وڌيڪ مستحڪم ٿيندو:

ڇا اسان کي بلاڪ چين ٺاهڻ گهرجي؟

ٽرانزيڪشن جي زندگي چڪر

اچو ته ٽرانزيڪشن لائف سائيڪل تي نظر رکون ۽ ان کي ٽڪر ٽڪر ٽڪر ٽڪر ڪريو:

ڇا اسان کي بلاڪ چين ٺاهڻ گهرجي؟

Blockchain ٽيڪنالاجيون

اچو ته اسان کي ٽيڪنيڪل حلن ۽ انهن جي هڪ ٻئي سان رابطن تي وڌيڪ تفصيل سان رهون.

سڃاڻپ

هر بلاڪچين ٽرانزيڪشن کي ڊجيٽل طور تي دستخط ٿيڻ گهرجي. تنهن ڪري، هڪ ٽرانزيڪشن مڪمل ڪرڻ لاء، هر شرڪت کي هڪ اهم جوڙو هجڻ گهرجي: نجي / عوامي. ڪڏهن ڪڏهن چاٻين جي هڪ جوڙي کي پرس سڏيو ويندو آهي، ڇاڪاڻ ته ڪنجيون منفرد طور تي شرڪت ڪندڙ جي منفرد ڊجيٽل ايڊريس ۽ بيلنس سان لاڳاپيل آهن. حقيقت ۾، ڪنجيون ۽ ايڊريس صرف مختلف نمبر سسٽم ۾ انگن جا تار آهن. چابيون ۽ والٽ پتي جا مثال:

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

بلاڪچين ۾ ڊجيٽل دستخط ٺاهڻ لاءِ، يلپٽڪ وکر تي ٻڌل هڪ الورورٿم استعمال ڪيو ويندو آهي: Elliptic Curve Digital Signature Algorithm (ECDSA). ان لاءِ ڪم ڪرڻ لاءِ، خانگي چيڪ (256-bit نمبر) عام طور تي بي ترتيب طور ورتو ويندو آهي. اهم اختيارن جو تعداد 2 کان 256 جي طاقت آھي، تنھنڪري اسان نجي چابين جي قدرن کي ملائڻ جي عملي ناممڪن بابت ڳالھائي سگھون ٿا.

اڳيون، عوامي ڪيئي پرائيويٽ مان حاصل ڪئي ويندي آهي ان جي قيمت کي ضرب ڪندي ان جي قيمت کي بيضوي وکر تي واقع هڪ نقطي جي همراهڪن سان، نتيجي ۾ ساڳئي وکر تي هڪ نئين نقطي جي همراهڪن جي نتيجي ۾. اهو عمل يقيني بڻائي ٿو ته توهان هڪ اهم جوڙو حاصل ڪيو جيڪو ڊجيٽل طور تي دستخطي ٽرانزيڪشن لاءِ موزون آهي. آخرڪار، والٽ ايڊريس منفرد طور تي عوامي چيڪ مان نڪتل آهي.

بلاڪچين ۾ استعمال ٿيل ڪرپٽوگرافي تي تفصيل سان ڪيترائي مضمون آھن، مثال طور: Bitcoin مختصر ۾ - Cryptography

خانگي چاٻي کي سختي سان رازداري ۽ محفوظ رکڻ گهرجي. عوامي چاٻي هر ڪنهن کي معلوم آهي. جيڪڏهن خانگي چاٻي گم ٿي وئي آهي، اثاثن تائين رسائي (سڪين) بحال نه ٿي ڪري سگھجي ۽ پئسا هميشه لاء گم ٿي ويندا. تنهن ڪري، محفوظ طور تي نجي چابمن کي محفوظ ڪرڻ جو ڪم انتهائي لاڳاپيل آهي، ڇاڪاڻ ته هي هڪ بينڪ ناهي جتي توهان هميشه پنهنجي پاسپورٽ سان اچي سگهو ٿا ۽ پنهنجو اڪائونٽ بحال ڪري سگهو ٿا. نام نهاد ٿڌي crypto wallets جي پيداوار لاءِ هڪ پوري صنعت آهي، جهڙوڪ فليش ڊرائيو:

ڇا اسان کي بلاڪ چين ٺاهڻ گهرجي؟

يا توهان وڌيڪ قابل اعتماد طريقا استعمال ڪري سگهو ٿا، مثال طور، ٽوڪن تي پرائيويٽ ڪنجي جي قيمت کي ڇڪڻ:

ڇا اسان کي بلاڪ چين ٺاهڻ گهرجي؟

معاملو

ٽرانزيڪشن جي جوڙجڪ بابت وڌيڪ تفصيل مضمون ۾ ڳولهي سگهجن ٿا Bitcoin مختصر ۾ - ٽرانزيڪشن. اسان لاءِ اهو سمجهڻ ضروري آهي ته هر ٽرانزيڪشن ۾ گهٽ ۾ گهٽ هيٺين ڊيٽا هوندي آهي:

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

اڳيون، ٽرانزيڪشن هڪ خانگي چيڪ سان سائن ڪيو ويو آهي ۽ ٻاهر موڪليو ويو آهي (پروٽوڪول جي آپريشن تي تفصيل ڏسو Bitcoin مختصر ۾- پروٽوڪول) بلاڪچين ۾ سڀني نوڊس ڏانهن جيڪي صحيحيت لاءِ ٽرانزيڪشن چيڪ ڪن ٿا. ٽرانزيڪشن جي تصديق واري الگورتھم غير معمولي آھي ۽ شامل آھي ٻه درجن قدم.

ٽرانزيڪشن بلاڪ

ٽرانزيڪشن جي صحيحيت جي جانچ ڪرڻ کان پوء، نوڊس انهن مان بلاڪ ٺاهيندا آهن. ٽرانزيڪشن کان علاوه، پوئين بلاڪ جي هيش ۽ هڪ نمبر (نونس ڪائونٽر) بلاڪ ۾ لکيل آهن، ۽ موجوده بلاڪ جي هيش SHA-256 الگورتھم استعمال ڪندي حساب ڪيو ويو آهي. هيش ضرور پيچيدگي جون حالتون قائم ڪيون هونديون. مثال طور، Bitcoin نيٽ ورڪ ۾، نيٽ ورڪ جي طاقت جي لحاظ کان هر 2 هفتن ۾ هيش جي تڪليف خودڪار طريقي سان تبديل ٿي ويندي آهي ته جيئن هڪ بلاڪ هر 10 منٽن ۾ تقريبن هڪ ڀيرو پيدا ٿئي. پيچيدگي هيٺ ڏنل شرط جي ذريعي طئي ڪئي وئي آهي: هيش مليو آهي اڳ ۾ مقرر ڪيل نمبر کان گهٽ هجڻ گهرجي. جيڪڏهن اها شرط پوري نه ٿي ته پوءِ 1 کي Nonce ۾ شامل ڪيو ويندو، ۽ هش کي ڳڻڻ جو ڪم بار بار ڪيو ويندو. هيش چونڊڻ لاء، نونس فيلڊ استعمال ڪيو ويندو آهي، ڇاڪاڻ ته هي بلاڪ ۾ صرف ڊيٽا آهي جيڪا تبديل ٿي سگهي ٿي؛ باقي باقي اڻڄاتل رهڻ گهرجي. هڪ صحيح هيش ۾ اڳواٽ صفر جو هڪ خاص تعداد هجڻ گهرجي، جهڙوڪ حقيقي هيش مان هڪ:

000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91

Bitcoin يا Ethereum نيٽ ورڪن لاءِ ڪاميابيءَ سان هيش ڳولڻ ڪم جو ثبوت آهي (ڪم جو ثبوت، PoW). هيش ڳولڻ جي عمل کي مائننگ سڏيو ويندو آهي، سون جي مائننگ وانگر. نالو بلڪل صحيح طور تي عمل جي جوهر کي بيان ڪري ٿو، ڇاڪاڻ ته اختيارن جي هڪ سادي ڳولا آهي، ۽ جيڪڏهن ڪو ماڻهو هڪ مناسب هيش ڳولي ٿو، ته اهو واقعي قسمت آهي. اهو ٽين فضول پٿر ۾ حقيقي سون جي نگٽ ڳولڻ وانگر آهي. بلاڪ انعام هاڻي 12.5 BTC آهي ۽ جيڪڏهن توهان ان کي موجوده Bitcoin جي شرح $3900 سان ضرب ڪريو ٿا، توهان کي هڪ ڪلوگرام خالص سون کان وڌيڪ ملندو. وڙهڻ لاءِ ڪجهه آهي!

ڪاميابيءَ سان هڪ هيش ڳولڻ کان پوءِ، بلاڪ ۽ مليل هيش پاڻ کي بلاڪچين ڏانهن ايندڙ بلاڪ جي طور تي لکيو ويو آهي. بلاڪ جي جوڙجڪ تي وڌيڪ تفصيل مضمون ۾ ملي ڪري سگهجي ٿو Bitcoin مختصر ۾- Blockchain، ۽ هيٺ ڏنل هڪ آسان ٿيل خاڪو آهي:

ڇا اسان کي بلاڪ چين ٺاهڻ گهرجي؟

بلاڪچين هڪ بلاڪ سان شروع ٿئي ٿو جيڪو اڃا تائين اڳئين بلاڪ جي هيش نه آهي. بلاڪچين ۾ صرف هڪ اهڙو بلاڪ آهي ۽ ان جو پنهنجو نالو جينيسس بلاڪ آهي. باقي بلاڪن ۾ ساڳي جوڙجڪ آهي ۽ صرف ٽرانزيڪشن جي تعداد ۾ فرق آهي. حقيقي ٽرانزيڪشن ۽ بلاڪ هن وقت ٺاهي رهيا آهن Bitcoin يا Ethereum ۾ ڏسي سگھجي ٿو بلاڪ ايڪسپلورر.

Bitcoin ۾ بلاڪ جي سائيز 1MB تائين محدود آهي ۽ معلومات جي گھٽ ۾ گھٽ رقم سان اٽڪل 200 بائيٽ جي ٽرانزيڪشن ۾، هڪ بلاڪ ۾ ٽرانزيڪشن جو وڌ ۾ وڌ تعداد اٽڪل 6000 ٿي سگهي ٿو. اتان کان، رستي جي ذريعي، Bitcoin جي ڪارڪردگي جي پيروي ڪري ٿو، جنهن تي هرڪو کلندو آهي: هڪ بلاڪ ٺاهي ٿو تقريبن هڪ ڀيرو هر 10 منٽ * 60 سيڪنڊ = 600 سيڪنڊ، جيڪو تقريبا 10 TPS جي رسمي ڪارڪردگي ڏئي ٿو. جيتوڻيڪ حقيقت ۾، هي پيداوار نه آهي، پر ڪم جي هڪ عمدي طور تي لاڳو ڪيل الگورتھم. Ethereum ۾، مقابلي لاء، انهن کي صرف بلاڪ جي نسل جو وقت 15 سيڪنڊ ڪيو. ۽ پيداوار رسمي طور تي وڌي وئي. تنهن ڪري، بلاڪچين ۾ جيڪي PoW استعمال ڪن ٿا اتفاق سان، اهو سڀ ڪجهه ڪارڪردگي جي مقابلي ڪرڻ جو ڪو احساس ناهي، ڇاڪاڻ ته اهو سڌو سنئون ڪيش جي حساب جي پيچيدگي تي منحصر آهي، جيڪو ڪنهن به قيمت تي مقرر ڪري سگهجي ٿو.

ڪانٽو

ڇا ٿيندو، مثال طور، ڪيترائي نوڊس مليا ھيش جيڪي پيچيدگي جي حالتن سان ملن ٿا، پر قدر ۾ مختلف آھن (ٻين لفظن ۾، اھي مختلف اتفاق سان آيا آھن) ۽ بلاڪ کي بلاڪ لکيو؟ اچو ته ڏسو ته ڪيئن بلاڪچين هن صورتحال جي خلاف حفاظت ڪري ٿو. انهي حالت ۾، هڪ نامياري ڪانٽو ٿئي ٿي، ۽ بلاڪچين زنجير جا ٻه نسخا آهن:

ڇا اسان کي بلاڪ چين ٺاهڻ گهرجي؟

اڳتي ڇا ٿيندو؟ اڳيون، نيٽ ورڪ جو حصو هڪ زنجير کان بلاڪ N + 2 تي ڪم ڪرڻ شروع ٿئي ٿو، ۽ ٻيو حصو:

ڇا اسان کي بلاڪ چين ٺاهڻ گهرجي؟

انهن مان هڪ بلاڪ اڳ ۾ مليا ويندا ۽ بلاڪچين ڏانهن موڪليا ويندا، ۽ پوء، ضابطن جي مطابق، بلاڪچين کي هڪ ڊگهي زنجير ڏانهن سوئچ ڪرڻو پوندو ۽ متبادل بلاڪ مان سڀني ٽرانزيڪشن کي منسوخ ڪرڻو پوندو:

ڇا اسان کي بلاڪ چين ٺاهڻ گهرجي؟

ساڳئي وقت، هڪ صورتحال پيدا ٿي سگهي ٿي جڏهن هڪ شرڪت ڪندڙ ٽرانزيڪشن صرف هڪ ڪانٽو بلاڪ ۾ هئي، جيڪا منسوخ ڪئي وئي هئي. تنهن ڪري، پڪ ڪرڻ لاء ته گهربل ٽرانزيڪشن بلاڪچين ۾ رڪارڊ ٿيل آهي، اتي هڪ عام سفارش آهي - ٽرانزيڪشن تي ڀروسو ڪرڻ کان اڳ، توهان کي انتظار ڪرڻ گهرجي جيستائين ايندڙ ڪجهه بلاڪ بلاڪ ۾ شامل ڪيا وڃن. مختلف بلاڪچين لاءِ ڪيترا بلاڪ انتظار ڪرڻ جون تجويزون مختلف آهن. مثال طور، Bitcoin نيٽ ورڪ لاء گھٽ ۾ گھٽ 2 بلاڪ آھي، وڌ ۾ وڌ 6 آھي.

ساڳئي تصوير بلاڪ فورڪ سان گڏ نام نهاد 51٪ حملي دوران مشاهدو ڪيو ويندو - اهو آهي جڏهن معدنيات جو هڪ گروپ هڪ متبادل بلاڪ چين کي وڌائڻ جي ڪوشش ڪري ٿو، انهن جي فريب واري ٽرانزيڪشن سان زنجير کي منسوخ ڪرڻ جي ڪوشش ڪري ٿو. جيتوڻيڪ هن وقت، دوکي جي بدران، اهو وڌيڪ منافعو آهي ته توهان پنهنجي طاقت کي ايمانداري کان کني تي خرچ ڪيو.

اتفاق

Blockchain تي هڪ بلاڪ کي رڪارڊ ڪرڻ لاء، نيٽ ورڪ کي اتفاق سان پهچڻ گهرجي. اچو ته ڪمپيوٽر ڪميونيڪيشن نيٽ ورڪ ۾ اتفاق راءِ حاصل ڪرڻ جو ڪم ياد رکون. اهو مسئلو بازنطيني جنرلن جي ڪم جي طور تي ترتيب ڏنو ويو آهي BFT (بازنطين جي غلطي رواداري). بازنطيني فوج جي مسئلن جي خوبصورت وضاحت کي ڇڏي، مسئلو هن ريت ترتيب ڏئي سگهجي ٿو: ڪيئن نيٽ ورڪ نوڊس هڪ عام نتيجو اچي سگهن ٿا جيڪڏهن ڪجهه نيٽ ورڪ نوڊس انهن کي عمدي طور تي مسخ ڪري سگهن ٿا. BFT جي مسئلي کي حل ڪرڻ لاءِ موجوده الگورتھم ڏيکاري ٿو ته نيٽ ورڪ صحيح ڪم ڪري سگھي ٿو جيڪڏھن 1/3 کان گھٽ فراڊ ڪندڙ آھن. BFT اتفاق راءِ Bitcoin نيٽ ورڪ تي ڇو نه لاڳو ڪيو ويو آهي؟ PoW استعمال ڪرڻ ڇو ضروري هو؟ اهڙا ڪيترائي سبب آهن:

  • BFT نوڊس جي هڪ ننڍڙي مقرر ڪيل سيٽ سان سٺو ڪم ڪري ٿو، پر عوامي بلاڪچين ۾ نوڊس جو تعداد غير متوقع آهي ۽ ان کان علاوه، نوڊس کي بي ترتيب طور تي آن ۽ بند ڪري سگهجي ٿو.
  • اهو ضروري آهي ته ماڻهن کي حوصلا افزائي ڪرڻ لاء بلاڪچين نوڊس شروع ڪرڻ لاء. ائين ڪرڻ لاء، ماڻهن کي انعام ڏيڻ گهرجي. BFT ۾ باضابطه طور تي انعام حاصل ڪرڻ لاءِ ڪجھ به نه آهي، پر PoW ۾ انعام ڇا لاءِ آهي اهو هر ڪنهن لاءِ واضح آهي ته هڪ غير شعوري سطح تي: بلاڪ هيش ڳولڻ جي عمل ۾ پروسيسر طرفان استعمال ٿيندڙ بجلي لاءِ.

PoW کان علاوه، ٻيا ڪيترائي اتفاق آھن جيڪي جديد بلاڪچين ۾ استعمال ڪيا ويا آھن، مثال طور:

  • PoS (اسٽيڪ جو ثبوت) - بلاڪچين تي Hyperledger
  • DPoS (منظم ٿيل پروف-آف-اسٽيڪ) - بلاڪچين تي bitShares
  • BFT ۾ تبديليون: SBFT (آسان ٿيل BFT) ۽ PBFT (عملي BFT)، مثال طور بلاڪچين ۾ Exonum

اچو ته PoS اتفاق راءِ تي ٿورو غور ڪريون، ڇاڪاڻ ته... اهو آهي PoS ۽ ان جون قسمون جيڪي نجي بلاڪچين ۾ تمام گهڻيون آهن. ڇو ذاتي ۾؟ هڪ طرف، PoS جون خاصيتون PoW جي مقابلي ۾ بهتر آهن، ڇاڪاڻ ته اتفاق راءِ حاصل ڪرڻ لاءِ، گھٽ ڪمپيوٽنگ وسيلن جي ضرورت آھي، جنھن جو مطلب آھي بلاڪچين ڏانھن ڊيٽا لکڻ جي رفتار وڌي ٿي. پر ٻئي طرف، PoS کي دوکي جا وڌيڪ موقعا آهن، تنهنڪري هن کي غير جانبدار ڪرڻ لاء، بلاڪچين ۾ سڀني شرڪت ڪندڙن کي ڄاڻڻ گهرجي.

PoS اتفاق راءِ هڪ نوڊ جي چونڊ تي مبني آهي جيڪو اڪائونٽ ۾ فنڊ جي رقم جي لحاظ سان بلاڪچين ڏانهن ٽرانزيڪشن سان هڪ بلاڪ لکي سگهي ٿو، يا بلڪه، اڪائونٽ ۾ نه، پر باضابطه طور تي، يعني. جيترا وڌيڪ فنڊ توھان وٽ آھن، اوترو ئي ممڪن آھي ته نيٽ ورڪ توھان جي نوڊ کي بلاڪ لکڻ لاءِ چونڊيندو. جمع واپس نه ڪيو ويندو جيڪڏهن بلاڪ غلط آهي. اهو فراڊ جي خلاف تحفظ فراهم ڪري ٿو. PoS جي هيٺيان مختلف تبديليون آهن:

  • Delegated PoS (DPoS) اتفاق راءِ ۾ حصو وٺندڙن کي ”ووٽر“ ۽ ”تصديق ڪندڙ“ ۾ ورهائي ٿو. ڪوئن هولڊرز (ووٽنگ شرڪت ڪندڙ) ٻين شرڪت ڪندڙن کي بلاڪچين تي ٽرانزيڪشن جي تصديق ۽ رڪارڊ ڪرڻ لاءِ پنهنجي طاقت جو نمائندو ڏين ٿا. اهڙيءَ طرح، تصديق ڪندڙ سمورا ڪمپيوٽيشنل ڪم ڪن ٿا ۽ ان لاءِ انعام وصول ڪن ٿا، ۽ ووٽنگ ۾ شرڪت ڪندڙن جي موجودگي تصديق ڪندڙن جي ايمانداري جي ضمانت ڏئي ٿي، ڇاڪاڻ ته ان کي ڪنهن به وقت تبديل ڪري سگهجي ٿو.
  • LPoS (ليز ٿيل پروف-آف-اسٽيڪ) اتفاق راءِ توهان کي اجازت ڏئي ٿو ته توهان جا فنڊ ٻين نوڊس ڏانهن ليز تي ڏيو ته جيئن انهن کي بلاڪ جي تصديق ڪرڻ جو هڪ بهتر موقعو هجي. اهو. توهان حقيقي ٽرانزيڪشن جي تصديق ۽ بلاڪ کان کني ۾ حصو وٺڻ کان سواء ٽرانزيڪشن لاء ڪميشن حاصل ڪري سگهو ٿا.

اهڙا ٻيا به ڪيترائي اتفاق آهن جيڪي اڃا تائين وڏي پيماني تي استعمال نه ڪيا ويا آهن، مان صرف انهن کي هتي فهرست ڏيندس معلومات لاء، ۽ اتفاق راء جي الگورتھم جو هڪ جائزو پاڻ کي ملي سگهي ٿو، مثال طور، مضمون ۾: Blockchain ۾ اتفاق الخوارزمي.

  • شاعر (گذريل وقت جو ثبوت)
  • PoC (ظرف جو ثبوت)
  • پي او بي (پروف آف برن)
  • پو وزن ( وزن جو ثبوت)
  • PoA (سرگرميءَ جو ثبوت) - PoW + PoS
  • PoI (اهميت جو ثبوت)

بلاڪچين جي قابل اعتماد ۽ ترتيب ڏيڻ جا ماڊل

عوامي بلاڪ

استحڪام پبلڪ يا ٻيو نالو بغير اجازت بلاڪ چين اهو حاصل ڪيو ويو آهي ڪنهن کي ڳنڍڻ ۽ معلومات ڏسڻ جي اجازت ڏيڻ يا ان کان سواءِ پنهنجو نوڊ به ڳنڍڻ، ۽ اعتماد PoW اتفاق راءِ تي ٺهيل آهي.

پرائيويٽ بلاڪچين

پرائيويٽ يا نجي اجازت ڏنل بلاڪچين. انهن بلاڪچين ۾، شرڪت ڪندڙن جي صرف هڪ خاص گروپ (تنظيمن يا ماڻهن) کي معلومات تائين رسائي آهي. اهڙيون بلاڪچين تنظيمن پاران ٺهيل آهن مجموعي فائدي يا ڪارڪردگي وڌائڻ جي مقصد سان. انهن جي اعتبار کي يقيني بڻايو ويو آهي شرڪت ڪندڙن جي عام مقصدن ۽ PoS ۽ BFT اتفاق راءِ واري الگورتھم.

بلاڪچين ڪنسورشيم

اتي آهن ڪنسوريميميم يا عوامي اجازت ڏنل blockchain. اهي بلاڪچينز آهن جن کي ڏسڻ لاءِ ڪو به ڳنڍي سگهي ٿو، پر هڪ حصو وٺندڙ معلومات شامل ڪري سگهي ٿو يا پنهنجي نوڊ کي صرف ٻين شرڪت ڪندڙن جي اجازت سان ڳنڍي سگهي ٿو. اهڙيون بلاڪچين تنظيمن پاران ٺاهيا ويا آهن ته جيئن گراهڪن جي حصي تي ڀروسو وڌائڻ لاءِ يا پروڊڪٽس جي صارفين يا سماج جي مجموعي طور تي. هتي، اعتماد پڻ شرڪت ڪندڙن جي وچ ۾ اعتماد جي موجودگي ۽ ساڳئي PoS ۽ BFT اتفاق الورورٿمس جي ذريعي حاصل ڪئي وئي آهي.

سموري ٺيڪيدار

Bitcoin کان پوءِ لاڳو ٿيل بلاڪچين، هڪ درجي يا ٻئي تائين، سمارٽ معاهدن تي عمل ڪرڻ جي صلاحيت شامل ڪئي. لازمي طور تي، هڪ سمارٽ معاهدو هڪ ٽرانزيڪشن آهي جنهن ۾ پروگرام ڪوڊ تي عملدرآمد لاء رکيل آهي. Ethereum نيٽ ورڪ تي سمارٽ معاهدو EVM (Ethereum ورچوئل مشين) ۾ جاري ڪيا ويا آهن. سمارٽ ڪانٽريڪٽ تي عمل ڪرڻ شروع ڪرڻ لاءِ، اهو لازمي طور تي ڪنهن ٻئي ٽرانزيڪشن ذريعي شروع ڪيو وڃي، يا ان تي عمل ڪرڻ لاءِ اڳواٽ شرطون پورا ٿيڻ گهرجن. سمارٽ معاهدي جي عملدرآمد جا نتيجا پڻ بلاڪچين ۾ رڪارڊ ڪيا ويندا. Blockchain کان ٻاهر ڊيٽا حاصل ڪرڻ ممڪن آهي، پر انتهائي محدود.

سمارٽ معاهدو استعمال ڪندي ڪهڙي ڪاروباري منطق کي لاڳو ڪري سگهجي ٿو؟ حقيقت ۾، گهڻو ڪجهه ناهي، مثال طور، بلاڪچين مان ڊيٽا استعمال ڪندي حالتن جي جانچ ڪرڻ، انهن حالتن جي بنياد تي ڊجيٽل اثاثن جي مالڪن کي تبديل ڪرڻ، بلاڪ جي اندر مستقل اسٽوريج ۾ ڊيٽا کي رڪارڊ ڪرڻ. منطق هڪ خاص اعلي سطحي ٻولي سوليڊٽي ۾ لاڳو ڪيو ويو آهي.

ڪارڪردگي جو هڪ شاندار مثال جيڪو سمارٽ معاهدو استعمال ڪندي لاڳو ڪيو ويو آهي 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 ۾ سمارٽ معاهدو ڇا آهن.

ٿڪل

اسان انهن ٽيڪنالاجين کي درج ڪيو آهي جن تي جديد بلاڪچين ٺاهيا ويا آهن ۽ اهي ڪيئن هڪ ٻئي سان ڳنڍيل آهن. ھاڻي اچو ته ٺاھيون ته بلاڪچين استعمال ڪندي ڪھڙا مسئلا حل ڪري سگھجن ٿا، ۽ ڪھڙا حل ٿيندا، بھترين طور تي، غير موثر. تنهن ڪري، blockchain استعمال ڪرڻ ضروري نه آهي جيڪڏهن:

  • ٽرانزيڪشن هڪ قابل اعتماد ماحول ۾ ڪيا ويا آهن؛
  • وچولي جي ڪميشن جي موجودگي شرڪت ڪندڙن جي زندگي کي خراب نٿو ڪري.
  • شرڪت ڪندڙن وٽ ملڪيت نه آھي جيڪا نمائندگي ڪري سگھجي ٿي ڊجيٽل اثاثن جي طور تي؛
  • ڊجيٽل اثاثن ۾ ڪابه تقسيم ناهي، يعني قيمت صرف هڪ شرڪت ڪندڙ جي ملڪيت يا فراهم ڪيل آهي.

Blockchain لاء مستقبل ڇا آهي؟ هاڻي اسان صرف ممڪن طريقن تي اندازو لڳائي سگهون ٿا بلاڪ چين ٽيڪنالاجيز جي ترقي لاءِ:

  • Blockchain ساڳي عام ڊيٽابيس ٽيڪنالاجي بڻجي ويندي، مثال طور، SQL يا NoSQL ان جي مخصوص رينج جي مسئلن کي حل ڪرڻ لاء؛
  • Blockchain هڪ وسيع پروٽوڪول بڻجي ويندو، جهڙوڪ HTTP انٽرنيٽ لاء آهي؛
  • Blockchain سيارو تي نئين مالي ۽ سياسي نظام جو بنياد بڻجي ويندو!

ايندڙ حصي ۾ اسين ڏسنداسين ته ڪهڙيون بلاڪچينز موجود آهن ۽ ڇو اهي مختلف صنعتن ۾ استعمال ٿين ٿيون.

هي صرف شروعات آهي!

جو ذريعو: www.habr.com

تبصرو شامل ڪريو