- ارسالها
- 1,057
- امتیاز
- 1,055
- نام مرکز سمپاد
- شهید بهشتی سمنان
- شهر
- سمنان
- سال فارغ التحصیلی
- 1389
- مدال المپیاد
- المپیاد کامپیوتر
- دانشگاه
- صنعتی شریف
- رشته دانشگاه
- مهندسی فن آوری اطلاعات
blockchain bitcoin part 2:
خب یکی از مسایلی که تو اون روش قبلی دیدیم که خیلی ایراد واضحی هست اینه که من میتونم پولی که دارم رو چند بار خرج کنم. اصطلاحا بهش double spending attack میگن. که تقریبا تو تمامی ارز های دیجیتال یکی از مهمترین مسایل حل این مساله هست. یعنی چی ؟
یعنی مثلا Alice پول رو همزمان به 2 نفر داده و الان هر کدوم اگر بررسی کنن میبینن این تراکنش ها معتبر هست. ولی مکانیزمی نیست که بهمیم که الان این پول یک باز استفاده شده و دیگه نمیشه ازش استفاده کرد .
برا توضیح این عکس . اون H() همون HASH هست. بخش امضاش که معلومه با PRIVATE KEY هست. بخش پرداخت هم متاسفانه با همون pk نشون داده ولی منظور برای پرداخت public key هست ( که همون آدرس طرف هم میشه تو بیت کوین) . برای حل این مشکل یه همچین راه کاری رو راه میندازیم.
اونی که بانک هست میاد مثل شکل زیر یه تاریخچه ای از تمام تراکنش ها میده . برای مسایل بهینه سازی به جای اینکه توی هر بلوک یه تراکنش قرار بده میاد چند تا تراکنش قرار میده. این تصویر رو ببینید.
این جناب scrooge همون بانک هست
. حالا بخش trans دو حالت داره. یا این بانک داره به یه سری سکه میده. یا یه تبادلی بین 2 نفر ایجاد شده.
اول حالت 1 رو بررسی کنیم.
خب همونطور که میبینید من مثلا به نفر اول 3.2 سکه دارم میدم. به نفر بعدی 1.4 سکه و به نفر بعدی 7.1 سکه. و recipient هم آدرس اوناییه که این سکه ها بهشون میرسه. اگر دقت کنید این تراکنش ها همه معتبرن . چرا ؟ چون بانک اینو تولید کرده و امضا می کنه. و همینطور وقتی این سکه ها تولید میشن یه coinID میگیرن. که فکر کنم معلومه سیستم این ID دادن.
حالا بلوک پرداخت بقیه به بقیه چطوریه ؟
خب اون بخش signatures پایین یعنی امضای همه اونایی که می خواستن تراکنش انجام بدن. مثلا من که میخوام پول بدم به یکی باید امضای هم بکنم دیگه. و اون پولی که می خوام بدم رو باید ذکر کنم. مثلا می گم سکه ی 72(3) رو بفرست به این آدرس. اونوقت اگر coin قبلا استفاده نشده باشه اون coin از بین میره و یه coin دیگه با همون ارزش برای فرد گیرنده ساخته میشه .
شرایط معتبر بودن این بلوک هم معلومه. باید همه تراکنش ها توسط اون افراد امضا شده باشه. و سکه ای که قبلا مصرف شده دیگه دوباره نمیتونه مصرف بشه . چرا ؟ چون همه این تاریخچه کل پرداخت ها رو میبینن. وقتی یه coinID قبلا استفاده شده همه میفهمن که این double spend attack هست و این بلوک معتبر شناخته نمیشه .
خب ما الان تا حدودی مشکل double spend رو حل کردیم.
ولی هنوز خیلی مشکل هست !
هنوز این وسط فردی به اسم بانک وجود داره که داره این کارارو انجام میده! ما می خوایم بانک نباشه. هیچکس نمی خوایم این وسط قدرت تصمیم گیری مستقل داشته باشه.و از طرفی هیچکس هم به هیچکس اعتماد نداره.
مشکل بعدی هم اینه که این سیستم یکم عملیات چک کردنش سخته که سکه ای مصرف شده یا نه. و حالا خیلی مشکلات دیگه. حالا تا اینجارو بخونید و اگر سوالی هست بپرسید که فردا بخش بعدی رو اضافه می کنم
.
فکر کنم تا 2 بخش دیگه حدودا دستتون میاد که بیت کوین داره چطوری کار می کنه.
خب یکی از مسایلی که تو اون روش قبلی دیدیم که خیلی ایراد واضحی هست اینه که من میتونم پولی که دارم رو چند بار خرج کنم. اصطلاحا بهش double spending attack میگن. که تقریبا تو تمامی ارز های دیجیتال یکی از مهمترین مسایل حل این مساله هست. یعنی چی ؟
یعنی مثلا Alice پول رو همزمان به 2 نفر داده و الان هر کدوم اگر بررسی کنن میبینن این تراکنش ها معتبر هست. ولی مکانیزمی نیست که بهمیم که الان این پول یک باز استفاده شده و دیگه نمیشه ازش استفاده کرد .
برا توضیح این عکس . اون H() همون HASH هست. بخش امضاش که معلومه با PRIVATE KEY هست. بخش پرداخت هم متاسفانه با همون pk نشون داده ولی منظور برای پرداخت public key هست ( که همون آدرس طرف هم میشه تو بیت کوین) . برای حل این مشکل یه همچین راه کاری رو راه میندازیم.
اونی که بانک هست میاد مثل شکل زیر یه تاریخچه ای از تمام تراکنش ها میده . برای مسایل بهینه سازی به جای اینکه توی هر بلوک یه تراکنش قرار بده میاد چند تا تراکنش قرار میده. این تصویر رو ببینید.
این جناب scrooge همون بانک هست
. حالا بخش trans دو حالت داره. یا این بانک داره به یه سری سکه میده. یا یه تبادلی بین 2 نفر ایجاد شده. اول حالت 1 رو بررسی کنیم.
خب همونطور که میبینید من مثلا به نفر اول 3.2 سکه دارم میدم. به نفر بعدی 1.4 سکه و به نفر بعدی 7.1 سکه. و recipient هم آدرس اوناییه که این سکه ها بهشون میرسه. اگر دقت کنید این تراکنش ها همه معتبرن . چرا ؟ چون بانک اینو تولید کرده و امضا می کنه. و همینطور وقتی این سکه ها تولید میشن یه coinID میگیرن. که فکر کنم معلومه سیستم این ID دادن.
حالا بلوک پرداخت بقیه به بقیه چطوریه ؟
خب اون بخش signatures پایین یعنی امضای همه اونایی که می خواستن تراکنش انجام بدن. مثلا من که میخوام پول بدم به یکی باید امضای هم بکنم دیگه. و اون پولی که می خوام بدم رو باید ذکر کنم. مثلا می گم سکه ی 72(3) رو بفرست به این آدرس. اونوقت اگر coin قبلا استفاده نشده باشه اون coin از بین میره و یه coin دیگه با همون ارزش برای فرد گیرنده ساخته میشه .
شرایط معتبر بودن این بلوک هم معلومه. باید همه تراکنش ها توسط اون افراد امضا شده باشه. و سکه ای که قبلا مصرف شده دیگه دوباره نمیتونه مصرف بشه . چرا ؟ چون همه این تاریخچه کل پرداخت ها رو میبینن. وقتی یه coinID قبلا استفاده شده همه میفهمن که این double spend attack هست و این بلوک معتبر شناخته نمیشه .
خب ما الان تا حدودی مشکل double spend رو حل کردیم.
ولی هنوز خیلی مشکل هست !
هنوز این وسط فردی به اسم بانک وجود داره که داره این کارارو انجام میده! ما می خوایم بانک نباشه. هیچکس نمی خوایم این وسط قدرت تصمیم گیری مستقل داشته باشه.و از طرفی هیچکس هم به هیچکس اعتماد نداره.
مشکل بعدی هم اینه که این سیستم یکم عملیات چک کردنش سخته که سکه ای مصرف شده یا نه. و حالا خیلی مشکلات دیگه. حالا تا اینجارو بخونید و اگر سوالی هست بپرسید که فردا بخش بعدی رو اضافه می کنم
. فکر کنم تا 2 بخش دیگه حدودا دستتون میاد که بیت کوین داره چطوری کار می کنه.


