• اگر سمپادی هستی همین الان عضو شو :

    ثبت نام عضویت

پول مجازی ( بیت کوین )

blockchain bitcoin part 2:

خب یکی از مسایلی که تو اون روش قبلی دیدیم که خیلی ایراد واضحی هست اینه که من میتونم پولی که دارم رو چند بار خرج کنم. اصطلاحا بهش double spending attack میگن. که تقریبا تو تمامی ارز های دیجیتال یکی از مهمترین مسایل حل این مساله هست. یعنی چی ؟
fdfp_crypto1.jpg

یعنی مثلا Alice پول رو همزمان به 2 نفر داده و الان هر کدوم اگر بررسی کنن میبینن این تراکنش ها معتبر هست. ولی مکانیزمی نیست که بهمیم که الان این پول یک باز استفاده شده و دیگه نمیشه ازش استفاده کرد .
برا توضیح این عکس . اون H() همون HASH هست. بخش امضاش که معلومه با PRIVATE KEY هست. بخش پرداخت هم متاسفانه با همون pk نشون داده ولی منظور برای پرداخت public key هست ( که همون آدرس طرف هم میشه تو بیت کوین) . برای حل این مشکل یه همچین راه کاری رو راه میندازیم.
اونی که بانک هست میاد مثل شکل زیر یه تاریخچه ای از تمام تراکنش ها میده . برای مسایل بهینه سازی به جای اینکه توی هر بلوک یه تراکنش قرار بده میاد چند تا تراکنش قرار میده. این تصویر رو ببینید.
crypto1.jpg

این جناب scrooge همون بانک هست :)) . حالا بخش trans دو حالت داره. یا این بانک داره به یه سری سکه میده. یا یه تبادلی بین 2 نفر ایجاد شده.

اول حالت 1 رو بررسی کنیم.
crypto2.jpg

خب همونطور که میبینید من مثلا به نفر اول 3.2 سکه دارم میدم. به نفر بعدی 1.4 سکه و به نفر بعدی 7.1 سکه. و recipient هم آدرس اوناییه که این سکه ها بهشون میرسه. اگر دقت کنید این تراکنش ها همه معتبرن . چرا ؟ چون بانک اینو تولید کرده و امضا می کنه. و همینطور وقتی این سکه ها تولید میشن یه coinID میگیرن. که فکر کنم معلومه سیستم این ID دادن.

حالا بلوک پرداخت بقیه به بقیه چطوریه ؟
crypto3.jpg


خب اون بخش signatures پایین یعنی امضای همه اونایی که می خواستن تراکنش انجام بدن. مثلا من که میخوام پول بدم به یکی باید امضای هم بکنم دیگه. و اون پولی که می خوام بدم رو باید ذکر کنم. مثلا می گم سکه ی 72(3) رو بفرست به این آدرس. اونوقت اگر coin قبلا استفاده نشده باشه اون coin از بین میره و یه coin دیگه با همون ارزش برای فرد گیرنده ساخته میشه .
شرایط معتبر بودن این بلوک هم معلومه. باید همه تراکنش ها توسط اون افراد امضا شده باشه. و سکه ای که قبلا مصرف شده دیگه دوباره نمیتونه مصرف بشه . چرا ؟ چون همه این تاریخچه کل پرداخت ها رو میبینن. وقتی یه coinID قبلا استفاده شده همه میفهمن که این double spend attack هست و این بلوک معتبر شناخته نمیشه .
خب ما الان تا حدودی مشکل double spend رو حل کردیم.


ولی هنوز خیلی مشکل هست !
هنوز این وسط فردی به اسم بانک وجود داره که داره این کارارو انجام میده! ما می خوایم بانک نباشه. هیچکس نمی خوایم این وسط قدرت تصمیم گیری مستقل داشته باشه.و از طرفی هیچکس هم به هیچکس اعتماد نداره.
مشکل بعدی هم اینه که این سیستم یکم عملیات چک کردنش سخته که سکه ای مصرف شده یا نه. و حالا خیلی مشکلات دیگه. حالا تا اینجارو بخونید و اگر سوالی هست بپرسید که فردا بخش بعدی رو اضافه می کنم :دی.
فکر کنم تا 2 بخش دیگه حدودا دستتون میاد که بیت کوین داره چطوری کار می کنه.
 
تا اینجا اگر همه چیز رو فهمیدید بگید که ادامه بدیم امروز یه بخش دیگه رو
 
  • لایک
امتیازات: mhdl
خب قبل اینکه ادامه بدم بیاید یه brainstorm کنیم ببینیم کی چه ایده هایی داره برا حل این مشکل .
الان اصل مشکل اینه که یه فرد معتمد ( بانک ) داره همه ی این کارارو انجام میده. می میخوایم هیچ فردی این بین نباشه. و دقت کنید که به هیچ فردی توی این شبکه نمیتونیم اعتماد کنیم. کسی ایده ای داره ؟


پ.ن : چقدر خسته این شماها :))) یه چیزی بگین :))
 
آخرین ویرایش:
اللن میخوایم بانک نباشه اعتبار (همون کوین آی دی)مونو از کی بگیریم؟ بالاخره باید یکی باشه که همه بهش اعتماد داشته باشن!؟
 
  • لایک
امتیازات: mhdl
اللن میخوایم بانک نباشه اعتبار (همون کوین آی دی)مونو از کی بگیریم؟ بالاخره باید یکی باشه که همه بهش اعتماد داشته باشن!؟
فعلا برای سادگی کار فرض کنیم اول سکه ها رو گرفتین از یه جایی و حالا بدون بانک می خواید منتقل کنید .
 
هیچ ایده ای نبود ؟:)))
 
  • لایک
امتیازات: mhdl
خب تا شماها فکر می کنید راجع به مساله ی بالا من یه خبر جالب بدم.

بزرگترین دزدی ( با هک) دنیا 2 روز پیش اتفاق افتاد. بدین صورت که هکر با به دست آوردن private key یه سایت بزرگ خرید و فروش این کوین ها تونست بیشتر از 500 میلیون سکه ی NEM رو بدزده و برای خودش بفرسته! ارزشش خدودا 532 میلیون دلار هست که خیلی هست!
این آدرس هکره هست
NC4C6PSUW5CLTDT5SXAGJDQJGZNESKFK5MCN77OG
http://explorer.ournem.com/#/s_account?account=NC4C6PSUW5CLTDT5SXAGJDQJGZNESKFK5MCN77OG
اگر ببینید طرف اول برا خودش 10 تا سکه فرستاده ! بعد هر 100 میلیون 100 میلیون تا فرستاده . بعد از حدودا 530 میلیون تراکنش اومده اینا رو فرستاده برا یه سری آدرس های مختلف که احتمالا آدرس های دیگه هم برای خودش هست ! بعد 7 8 ساعت دوبازه اومده که باز هم بدزده :)))
متاسفانه پول از دست رفته هست و کاریش نمیشه کرد و چون این سیستم به فردی مثل بانک وابسته کسی نمیتونه کاری کنه!
اما ! شرکت NEM یه ایده ای الان زده و اومده آدرس این فرد رو به عنوان هکر ذخیره کرده و تو 1 2 ساعت سیستمی طراحی کرده که این فرد به هرکی هم این سکه هارو بفرسته آدرس اونا هم به عنوان دزد ذخیره میشه .

حالا مساله اینه که الان اگر بخوان این سکه ها رو تبدیل به پول کنن باید از یک سری وب سایت انجام بدن که الان این آدرس ها به این سایت ها اعلام شدن و عملا این سکه ها قابلیت جایجایی دارن ولی طرف نمیتونه اینا رو پول کنه ! و عملا چیزی گیرش نیومده.
 
خب من فردا یه سری پست جدید میزارم اینجا. برای بدست آوردن coin های مجانی یه سری راه هست که واقعا با قیمت های الان سود دهی ندارن. ولی مثلا یه سری هستن که شاید روزی نهایت 5 دقیقه وقتتون رو بگیرن و مثلا بعد مدتی بتونید روزی 1 دلار در بیارید با هیچ کاری! اگر قیمتا خیلی رشد کنه هم یهو دیدید این روزی 1 دلار شد چمیدونم 20 30 دلار! و خوبیش اینه که coin بدست میارید.
اگر کسی می خواد بهم خصوصی پیغام بده بگم بهش چی کار کنه.
 
خب بریم پارت بعدی :


یه جمع بندی ای تا الان داشته باشیم. پس مساله این شد که ما باید بتونیم یه زنجیره از تراکنش ها داشته باشیم. که بتونیم جلوی double spend رو بگیریم. مساله ای که وجود داره اینه که از اونجایی که هیچ بانکی این وسط وجود نداره.
تمامی node های داخل این شبکه باید این زنجیره بلوکی تا حال حاضر رو دانلود کنن. مساله اینجاست که اگر کسی تراکنشی انجام میده همه باید مطمئن باشیم که این تراکنش یا همه جا ثبت میشه یا هیچ جا ثبت نمیشه. یعنی تو سیستم هر کس باید ثبت بشه. ( شاید براتون سوال پیش بیاد اینا مگه جا نمیگیره! چرا ولی یه سیستم هوشمندی هم وجود داره که اون بلوک هایی رو که کاملا استفاده شدن و دیگه قرار نیست بهشون پوینتری وارد بشه رو حذف می کنه از سیستم )

حالا چطور این عملیات ثبت صورت میگیره. یه pool وجود داره که هر کسی هر تراکنش که می خواد انجام بده رو اونجا اضافه می کنه. دقت کنید که بخاطر یه سری مسایل بهینه سازی داخل هر بلوک بجای یک تراکنش مثلا 30 40 تا تراکنش قرار میگیره.
حالا من که یکی از node های این شبکه هستم مثلا 30 تا از تراکنش های انجام نشده ای که توی pool هست رو برمیدارم و اینارو داخل بلوک قرار میدم و حالا باید این رو به کل شبکه اطلاع بدم که من می خوام این بلوک رو به این زنجیره اضافه کنم.
حالا چرا من ؟ لزومی نداره این فرد من باشم. قضیه اینجاست که هرکسی داخل این شبکه میتونه همچین کاری انجام بده. و همه موازی دارن این کار رو انجام میدن. قطعا میتونید درک کنید که خیلی اوضاع شیر تو شیری هست :)))
ولی یه سری مشکلات اصلی وجود داره تا الان

1-اگر این بلوک رو یه فرد متقلب اضافه کنه چی مبشه ؟ که 100% همچین اتفاقی ممکن هست بیفته !
2- اینکه همه همزمان امکان داره بلوک اضافه کنن تکلیف چیه ؟ و خیلی مسایل دیگه
 
خب فرض کنید مشکل موازی بودن رو بعدا حل کنیم. می خوایم ببینیم یه حمله کننده به سیستم چه طور کار هایی ازش برمیاد
آیا میتونه از حساب شما چیزی بدزده ؟ نه نمیتونه! چون کلید خصوصیتون رو نداره
آیا میتونه جلوی تراکنش های شما رو بگیره ؟ آره! میتونه تراکنش هایی که از طرف آدرس شما هست رو تو بلوک قرار نده. ولی خب خودش که تنها نیست! پس این هم حمله ی جذابی نیست .

آیا میتونه حمله ای شبیه double spend انجام بده ؟ تحت یه سری شرایط خیلی خیلی خاص آره !
 
Back
بالا