bitcoin

بیت کوین نوع جدیدی پول است که در سال ۲۰۰۹ توسط برنامه نویسی ناشناس با نام مستعار ساتوشی ناکوموتومنتشر شد. با خواندن واژه ی پول احتمالا ذهن شما به سمت پول کاغذی و واحد های پول مرسوم (مانند دلار) می رود که عموما مردم برای ذخیره و نگهداری این پول ها ، آن ها را به بانک می سپارند .

باید گفت تنها وجه اشتراک بیت کوین و پول های معمول ، کاربرد آن­هاست.بیت کوین مانند بقیه پول ها ارزش مالی دارد و برای خرید کالاها و خدمات واقعی استفاده می شود .

با اینحال بیت کوین تفاوت های زیادی با پول معمولی دارد که برخی از این تفاوت ها باعث محبوبیت آن شده است .

۱.بیت­کوین پولی دیجیتال و مجازی است .

بیت­ کوین به صورت فیزیکی تولید نمیشود و الکترونیکی ساخته و نگهداری می­شود . (به زبان ساده تر:بیت کوین مجموعه­­ای از رشته های طولانی کد است که ارزش مالی دارند!)

قبل از بیت کوین اغلب پول های مجازی برای خرید کالاهای خاص مجازی به کار می‌رفته اند(مثلا در اکثر بازی ها نوعی پول جدید برای خرید آیتم های بازی ایجاد شده است.) اما بیت کوین پولی مجازی است که با آن می توان کالاهایی واقعی خرید .

۲.بیت کوین غیر‌متمرکز است .

این نوع پول به شرکت یا دولت خاصی وابسته نیست و توسط آن ها کنترل نمی­شود .

۳.انتقال بیت کوین شخص به شخص۲ است.

برای انتقال پول معمولا واسطه ای مثل بانک یا سیستم کنترلی وجود دارد که بر پرداخت ها نظارت می کند . اما در بیت کوین انتقال پول از شخصی به شخص دیگر بدون واسطه صورت میگیرد .

۴.ناشناس ماندن

در شبکه ی بیت کوین نیازی به استفاده از مشخصات خود ندارید و در نتیجه نام شما فاش نمیشود.

برای شروع استفاده از بیت کوین لازم است یک کیف پول مجازی داشته باشید.

کیف پول مجازی یک پایگاه داده ی کوچک است که با نصب برنامه ی بیت کوین بر روی کامپیوتر یا موبایل شما (local) قرار می­گیرد .

در این حالت کیف پول مجازی شما آسیب پذیراست زیرا در صورت ویروسی شدن یا خرابی فیزیکی کامپیوتر یا موبایل تمام بیت کوین های شما از دست می روند .

همچنین می­توان از طریق سایت های موجود، کیف پول مجازی را به صورت آنلاین ساخت.

در این شیوه هم باید به سازنده ی سایت و امنیت آن اعتماد داشته باشیم.

انتقال پول یا تراکنش

همانطور که گفتیم بیت کوین برای اداره­ی خود به سیستمی مرکزی وابسته نیست و عملیات بیت کوین توسط همه ی کامپیوترهای عضو شده در شبکه ی بیت کوین(گره ها)

انجام میشود.

یک لاگ فایل را در نظر بگیرید که شامل همه ی حساب های ساخته شده در بیت کوین و میزان موجودی آن هاست. یک کپی از این فایل بر هر کامپیوتر(یا گره) در شبکه ی بیت کوین نگهداری می شود .

برای فرستادن پول شما به شبکه اطلاع می دهید که میزان پول موجود در حساب شما باید پایین و پول موجود در حساب گیرنده باید بالا برود .

گره ها (یا کامپیوترها) این تراکنش را در کپی موجود از لاگ فایل خود اضافه می کنند و سپس تراکنش را به گره بعدی انتقال می­دهند .

در این سیستم همه­ی اعضای شبکه ی بیت کوین(هر کامپیوتر) اطلاعات حساب ها را نگه داری میکنند درحالی که در سیستم معمول تنها بانک حساب ها را نگه داری میکند.این موضوع باعث پیدایش تفاوت هایی میان دو سیستم شده است.

مثلا برخلاف بانک که فقط درباره ی تراکنش های خود اطلاع دارید در بیت کوین همه درباره تراکنش های هر فرد مطلعند .

در حالت اول شما به بانک خود اعتماد دارید و اگر اتفاقی بیفتد میتوانید از آن شکایت کنید .اما در بیت کوین با گروهی غریبه روبرو هستید پس نمیتوانید به کسی اعتماد کنید .البته سیستم بیت کوین توابع ریاضی خاصی دارد که سیستم را از هر جهت

محافظت می کند و شما را از اعتماد بی نیاز.

در هر تراکنش دقیقا چه اتفاقی می افتد؟

فرض کنیم فردی به نام x می­خواهد کالایی را از فرد y بخرد و پول آن را با بیت کوین پرداخت کند .

وقتی x میخواهد به y پولی پرداخت کند پیغامی میزان پول و نام حساب ها را به سیستم اطلاع می دهد .

پیام تراکنش:۵ بیت کوین از x به y بفرست .

هر گره که این پیام را دریافت میکند کپی خود از لاگ فایل را به روز کرده و پیام تراکنش را انتقال می دهد.

سوالی که ممکن است ذهن شما را درگیر کند این است که هر گره یا کامپیوتر که پیام را دریافت میکند چگونه می­تواند بفهمد پیام معتبر است و صاحب واقعی بیت کوین پیام را فرستاده است ؟

بیت کوین نیازمند نوعی پسورد برای باز کردن حساب و خرج کردن پول است .به این پسورد امضای دیجیتال ۳میگویند .

امضای دیجیتال همانند امضای معمولی معتبر بودن یک پیام را ثابت می کند ولی شیوه ی اثبات آن به وسیله ی یک الگوریتم ریاضی است که از تقلب در حوزه ی دیجیتال جلوگیری می کند .

یک امضای دیجیتال منحصربه فرد برای هر انتقال پول یا تراکنش لازم است .

این امضا از دو کلید متفاوت (ولی مرتبط) استفاده میکند . یکی ازین کلید ها کلید خصوصی است که برای تولید امضا به کار میرود و بعدی کلید عمومی است که دیگران میتوانند از آن استفاده کنند .

میتوانید این گونه در نظر بگیرید که کلید خصوصی همان پسورد ماست و امضای دیجیتال که از آن ساخته می شود ثابت میکند شما پسورد را دارید بدون این که مجبور باشید آن را فاش کنید .

کلید های عمومی در حقیقت آدرس های ارسال هستند یعنی وقتی به کسی پول ارسال می­کنید آن را به کلید عمومی او میفرستید .

وقتی میخواهید پولی را به کسی بفرستید ابتدا باید پول خود را خرج کنید . پول موجود در حساب شما هم قبلا توسط یک تراکنش به کلید عمومی آن تراکنش یعنی حساب شما فرستاده شده است .

برای خرج پول شما باید ثابت کنید که صاحب واقعی کلید عمومی ای هستید که به آن پول فرستاده شده و این کار را با ساخت یک امضای دیجیتال از پیام تراکنش و کلید خصوصی خود انجام میدهید .(به زبان ریاضی تابعی با دو ورودی پیام تراکنش و کلید خصوصی را داریم که به ما به عنوان خروجی، امضای دیجیتال میدهد)

بقیه ی گره ها در شبکه میتوانند از آن امضا استفاده کنند تا بفهمند که با کلید عمومی شما متناظر است .

به وسیله ی ریاضیات موجود در امضای دیجیتال آن ها قادرند تایید کنند که فرستنده صاحب یک کلید خصوصی است .(بدون دیدن آن کلید!)

چون امضای دیجیتال به پیام تراکنش هم بستگی دارد برای هر تراکنش منحصر به فرد می شود .و به همین دلیل کسی نمی تواند دوباره برای تراکنش دیگری آن را استفاده کند .همین وابستگی به پیام تراکنش باعث میشود که اگر کسی بخواهد تقلب کند و پیام را عوض کند ، منجر به نامعتبر شدن امضای دیجیتال شود .

تا اینجا میدانیم که امضای دیجیتال برای اینکه از معتبر بودن یک انتقال مطمئن شویم استفاده می شود .اما تمام این توضیحات در واقع به شدت ساده شده بود . در واقعیت ماجرا هیچ لاگ فایلی از میزان پول هر حساب در سیستم نگه داری نمیشود !

اگر این که هر کس چقدر پول دارد را نگه نداریم چگونه بدانیم هر فرد پول کافی برای فرستادن به شخص دیگری را دارد ؟

به جای نگه داشتن میزان پول هر شخص ،مالکیت حساب ها به وسیله ی لینکی به تراکنش های قبلی تایید میشود .

برای اینکه x پنج بیت کوین به y ارسال کند فرد x باید به انتقال های قبلی که پنج بیت کوین را از طریق آن ها به دست آورده است مراجعه کند. به این تراکنش های قبلی ، ورودی۴ گویند . بقیه ی گره ها برای تایید کردن یک تراکنش ورودی را بررسی میکنند که مطمئن شوند x گیرنده بوده و ۵ بیت کوین را دریافت کرده است .

با این حساب معتبر بودن هر تراکنش به تراکنش های قبلی بستگی دارد .ولی چطور می­توان به تراکنش های قبلی اعتماد داشت ؟

شما باید ورودی های تراکنش های قبلی را هم بررسی کنید .وقتی که برای اولین بار برنامه ی کیف پول مجازی را نصب میکنید هر تراکنش تا به حال انجام شده در سیستم را دانلود میکند و معتبر بودن هر کدام را تا تراکنش اول بررسی میکند .از آنجایی که با غریبه ها سر و کار دارید لازم است تا هر تراکنش را خودتان بررسی کنید .این عملیات میتواند یک شبانه روز طول بکشد اما فقط یکبار انجام میشود .

پس در واقع به جای لاگ فایل هایی در سراسر سیستم و بر روی هر گره (کامپیوتر) که میزان حساب ها را نگهداری کنند ، گره های بیت کوین یک لیست بزرگ از تراکنش ها را نگهداری میکنند.

داشتن بیت کوین به این معنی است که تراکنش هایی در این لیست به اسم شما وجود دارد که خرج نشده است یا به عبارت دیگر به عنوان ورودی در انتقال های دیگر از آن استفاده نشده است .

نکته ی جالب این ساختار این است که برای دانستن این که در حساب خود چقدر بیت کوین دارید باید از میان هر تراکنشی که تاکنون انجام شده است حرکت کنید و همه ی ورودی ها به حساب شما که خرج نشده اند را جمع کنید .

مشکل دو بارخرج کردن

تاکنون دو مشکل ایجاد شده در سیستم غیرمتمرکز بیت کوین را شرح داده و راه حل آن را گفته ایم.

با استفاده از امضای دیجیتال می­دانیم که تنها صاحب واقعی یک حساب میتواند پیام تراکنش را ایجاد کرده باشد .

برای این که مطمئن شویم فرستنده پولی برای فرستادن دارد ،هر ورودی)تراکنش های قبلی) را بررسی میکنیم و مطمئن می­شویم خرج نشده باشد.

اما همچنان یک مسأله در سیستم وجود دارد و آن ترتیب تراکنش­هاست .

با توجه به اینکه تراکنش­ها گره به گره در شبکه­ی بیت­­کوین انتقال داده می­شوند پس ضمانتی برای اینکه باهمان ترتیبی که تولید شده اند به شما برسند وجود ندارد .

شیوه ای نیست که بتوان گفت یک تراکنش قبل از تراکنش دیگری انجام شده است.این موضوع راه را برای سوءاستفاده ی سودجویان باز میگذارد .

به عنوان مثال کاربر X میخواد از y کالایی را بخرد .

کاربر x یک تراکنش انجام میدهد و پول کالا را برای y میفرستد .سپس منتظر می­ماند تا y کالای سفارش داده شده را برای او بفرستد . بعد از آن یک تراکنش دیگر را با استفاده از همان ورودی که برای y فرستاد ، برای خودش میفرستد.

یعضی از گره ها در شبکه به دلیل اختلافات زمانی ، دومین تراکنش ( ارسال پولx به خودش) را قبل از تراکنش اول دریافت کرده و وقتی تراکنش واریز پول به y میرسد آن را نادرست می­شمارند زیرا این تراکنش تلاش میکند از همان ورودی دوباره استفاده کند .

در این مثال y هم پول و هم کالای خود را از دست داده است .

در شبکه بین گره ها درباره ی اینکه کدامشان پول را دارند اختلاف وجود دارد زیرا راهی نیست که ثابت کنند کدام تراکنش اول آمده است .

به دلیل مشکل مطرح شده باید راهی باشد که همه ی گره ها ترتیب تراکنش ها را بدانند و با یک ترتیب موافقت کنند !

راه حل سیستم بیت کوین راهی هوشمندانه بود که در ادامه می­بینیم .

زنجیره ی بلاک ها : ترتیب تراکنش ها

block chain

بیت کوین ترتیب تراکنش ها را با قراردادنشان در گروه هایی به نام بلاک۵ تنظیم میکند و این بلاک ها را به هم لینک میکند که به آن زنجیره ی بلاک ها گویند .

هر بلاک به بلاک قبلی خود اشاره میکند . اگر بلاک ها را به عقب برگردیم همه ی تراکنش ها را تا اولین تراکنش های سیستم میبینیم .

هر بلاک می­تواند چندین تراکنش را در خود داشته باشد .

تراکنش های موجود در یک بلاک در یک زمان اتفاق افتاده اند . و تراکنش هایی که در بلاکی قرار ندارند هنوز تایید نشده اند .

هر گره میتواند تعدادی از این تراکنش های تایید نشده را در یک بلاک جمع کند و آن را به عنوان بلاک بعدی در زنجیره ی بلاک ها ، به شبکه پیشنهاد دهد .

از آن جایی که گره های مختلف هر کدام میتوانند پیشنهاد های متفاوتی ایجاد کنند انتخاب های متفاوتی برای بلاک بعدی وجود دارد .

پس شبکه چطور تصمیم میگیرد ؟

برای فهمیدن راه حل بیت کوین باید ابتدا با مفهوم هش به زبان ساده آشنا شویم .

یک تابع هش در بیت کوین تابعی برگشت ناپذیر است که یک رشته را میگیرد و آن را به یک عدد یا رشته منحصر به فرد تبدیل میکند.

مثلا تابع هشی که بیت کوین استفاده میکند(SHA256) به صورت زیر کار میکند:

SHA256(“bitcoin”)

=

۶b88c087247aa2f07ee1c5956b

۸e1a9f4c7f892a70e324f1bb3d161e05ca107b

با اندکی تغییر دادن رشته ورودی، خروجی تماما تغییر میکند و قابل پیش بینی نیست .فرض کنید میخواهیم یک خروجی خاص را ایجاد کنیم .تنها راه پیدا کردن یک مقدار خاص به عنوان خروجی این است که برای رشته ی ورودی حدس های تصادفی بزنیم.

بیت کوین چگونه از این تابع هش استفاده کرد؟

برای اینکه بلاک جدیدی توسط تمام کامپیوترهای شبکه تایید شود نیازمند مشارکت همه ی آن ها هستیم.

در زنجیره ی بلاک ها آخرین بلاک همواره بر سر زنجیره در شبکه قرار دارد . اگر میخواهیم بلاک جدیدی معتبر شناخته شود کامپیوتری بر روی شبکه باید پیام تراکنشی برای آن ایجاد کند که به بلاک قبلی تایید شده متصل شود .

برای جلوگیری از پذیرفته شدن بلاک های ساختگی باید مهر تایید هر بلاک برای هر کاربر مستقل بر روی شبکه مشکل باشد ولی برای کل شبکه راحت انجام شود . هر کامپیوتر به تنهایی برای حل کردن یک بلاک باید چندین سال حدس بزند . به همین دلیل برای دور زدن این سیستم به توان کامپیوتری حداقل نصف شبکه نیاز داریم که عملا غیر ممکن است .

برای حل بلاک بعدی ، کل شبکه سعی میکنند به وسیله ی اضافه کردن تراکنش های جدید به آخرین بلاک (که در واقع سر تمام بلاک های پیشین است) یک خروجی از تابع هش در محدوده ای خاص و از پیش تعیین شده تولید کنند .

با وجود شبکه ی بیت کوین و همه ی کامپیوتر ها در آن که در حال حدس زدن هستند به طور میانگین ده دقیقه طول میکشد که کسی یک جواب پیدا کند .

اولین کسی که بلاک را حل کند ، بلاک پیشنهادی اش را اعلام میکند و میتواند آن را به عنوان بلاک بعدی در زنجیره ی بلاک ها قرار دهد .

استخراج پول

بیت کوین ها از کجا می آیند ؟ برای فرستادن پول شما به یک تراکنش قبلی که در آن گیرنده بودید مراجعه میکنید ولی اولین بیت کوین ها چه گونه وارد سیستم شده اند؟

تولید بیت کوین ها شیوه ای آرام و تصادفی دارد.برای ایجاد بیت کوین به هر کس که با استفاده از توان کامپیوتری خود یک بلاک را حل میکند جایزه داده میشود. برای همین به حل کردن بلاک ها استخراج میگوییم .سیستم بیت کوین را مانند یک معدن طلا در نظر بگیرید . در ابتدا این جایزه ۵۰ سکه بیت کوین بود .

یعنی به کسانی که با گذاشتن توان کامپیوتری یک بلاک را حل می­کردند ۵۰ سکه بیت کوین تعلق می­گرفت و بدین صورت پول به سیستم وارد میشد.در سال ۲۰۱۳ این مقدار نصف شده و ۲۵ سکه بود .(همانند یک معدن طلا که طلا های اصلی آن کشف شده و به دست آوردن طلا های جدید سخت تر شده است)در سال ۲۰۱۷ ، ۱۲.۵ سکه و به تدریج این مقدار انقدر نصف میشود که میزان ورود سکه به سیستم تقریبا صفر شود .

در نهایت در تمام شبکه ۲۱ میلیون بیت کوین وجود خواهد داشت که بین مردم منتقل میشوند و سکه ی جدیدی تولید نخواهد شد.

ناکوموتو انگیزه ی خود را از ساخت بیت­کوین خشم ازوضعیت اقتصادی و دخالت دولت ها

در آن اعلام کرده بود . اما بیت کوین به عنوان پولی مستقل و غیرقابل ردیابی همانطور که

دست دولت ها را از کنترل پرداخت ها کوتاه کرده است راه را برای انجام معاملات غیر

قانونی هم باز گذاشته است.

بیت­­کوین هسته ی اصلی سایت Silk Road بود که یک بازار سیاه برای خرید داروهای غیرقانونی به شمار می رفت.

بسیاری از مردم نمی­توانند به بیت کوین اعتماد کنند چون توسط یک سیستم مرکزی کنترل نمی­شود و تماما وابسته به کاربرانش است .

اما فراموش نکنیم با توجه به مزایای گفته شده ، بیت کوین انقلابی در پول های دیجیتال است .

پولی که مستقل از حکومت و دولت توسط مردم دنیا اداره می­شود .

منابع اصلی :

۱٫https://en.wikipedia.org/wiki/Bitcoin

۲٫http://www.imponderablethings.com/2013/07/how-bitcoin-works-under-hood.html

۳٫http://www.economist.com/blogs/babbage/2011/06/virtual-currency

۴٫ https://jadi.net/2012/09/radio-geek-royaye-fridman

 

۱ BitCoin

۲ Peer to peer

۳ Digital signature

۴ input

۵ Block