به زبان بسیار ساده می توان گفت که بیت کوین یک برنامه کامپیوتری بشمار می رود و بخش بزرگی از این برنامه یک فایل دیجیتال است. این فایل دیجیتال که دفتر کل (ledger) نام دارد، شبیه به دفتر حسابوکتاب سنتی عمل کرده و حسابها و موجودی هر نفر را در خود ثبت میکند و یکی از چیزهایی که بیت کوین را از سیستمهای متمرکز متمایز میکند، نحوه نگهداری و بهروزرسانی دفتر کل است.
در بیت کوین بهجای یک نهاد مرکزی، دفتر کل بهصورت گروهی و اشتراکی توسط اعضای شبکه نگهداری میشود. این یعنی هرکسی میتواند از دفتر کل نگهداری کرده و آن را بهروز کند. به هر کامپیوتری که بهطور مستقیم به شبکه متصل شود و دفتر کل را دریافت کند، نود (Node) گفته میشود.
در سیستمهای متمرکز شما مجبور به اعتماد کورکورانه هستید یعنی وقتی در سیستم بانکی برای کسی پول واریز میکنید، درواقع به بانک اعتماد کردهاید که پول را به حساب فرد واریز خواهد کرد و پول شما بلوکه نخواهد شد. اما در بیت کوین با ریاضیات، منطق و رمزنگاری نیاز به اعتماد از بین میرود. درواقع بهجای اعتماد به یک نهاد متمرکز که میتواند مرتکب خطای عمدی یا غیرعمدی شود، به منطق و ریاضیات اعتماد میکنید.
تمام چیزی که در بیت کوین با آن سروکار داریم را میتوان در این یکی دو جمله خلاصه کرد:
سیستمی که به همه (کامپیوترها) اجازه میدهد در نگهداری سابقه تراکنشها سهیم باشند و همچنین ویژگیهای امنیتی برای جلوگیری از تقلب و حمله به شبکه.
همانطور که در بالا اشاره شد همه افراد میتوانند در حفظ و نگهداری دفتر کل بیت کوین سهیم باشند. در سادهترین توضیح، هنگام ارسال بیت کوین به شبکه اعلام میکنید که مقداری از حساب شما کسر شود و به حساب گیرنده واریز شود. نودها یا همان کامپیوترهای موجود در شبکه بیت کوین، پیام شما را دریافت کرده و آن را در دفترهای خود اعمال میکنند. سپس پیام را به دیگر نودها پاس میدهند. لطفا به شکل را ملاحظه کنید:
بانکها هم یک دفتر کل دیجیتال دارند که تراکنشها و دارایی مشتریان در آن ثبت شده است. مثلاً محمد ۱۰ میلیون تومان پول دارد و علی ۵ میلیون تومان؛ این اطلاعات روی دفتر کل بانکها ثبت میشود. وقتی محمد ۵ میلیون تومان برای علی میفرستد، در دفتر کل موجود در بانک، ۵ میلیون تومان از حساب محمد کسر میشود و به حساب علی واریز میشود. در هنگام انجام تراکنش بانکی، پول فیزیکی منتقل نمیشود، بلکه فقط مالکیت پول تغییر میکند.
در بیت کوین، اگر بخواهید بیت کوین ارسال کنید، باید درخواستی را به شبکه اعلام کنید که مثلا ۵ بیت کوین از من کم کن و ۵ بیت کوین به فرد دیگری اضافه کن و بدین ترتیب هر نود در شبکه، پیام را دریافت کرده و کپیِ دفتر حسابوکتاب خود را طبق این درخواست بهروز میکند. همه این فرایند بهصورت دیجیتالی انجام میشود.
سیستم بیت کوین میزان موجودی حسابها را ذخیره نمیکند و اصلاً در بطن این شبکه چیزی بهنام «حساب» تعریف نشده است. در بیت کوین تنها چیزی که ثبت میشود تاریخچه تراکنشها است. دفتر کل بیت کوین فقط سوابق تراکنشها را ذخیره میکند و بنابراین، بهجای ذخیره موجودی حسابها، مالکیت در بیت کوین براساس تراکنشهای قبلی تعیین میشود.
به بیان ساده، وقتی قصد ارسال بیت کوین دارید، به شبکه بیت کوین تراکنشهای قبلی خود را نشان میدهید و میگویید اینها مدارکی هستند که نشان میدهند شما این میزان بیت کوین را دارید.
بنابراین نودهای شبکه مقدار را بررسی کرده و مطمئن میشوند که موجودی کافی است. در حقیقت یک بار خود برنامه کیف پول مقدار موجودی شما را بررسی میکند و یک بار نودهای شبکه این کار را با استفاده از اطلاعات تراکنشهای قبلی انجام میدهند. این فرایند موجب میشود که دوبار خرج کردن (خرج کردن دوباره بیت کوین) امکانپذیر نباشد.
البته به یاد داشته باشید که هر کس میتواند بدون نیاز به وارد کردن نام یا مشخصات خود به شبکه بیت کوین متصل شود و شبکه بیت کوین اجازه ساخت هر تعداد کیف پولی را به کاربران میدهد و هر کیف پول یک کلید خصوصی خاص خودش را دارد.
شاید فکر کنید که تولید یک کلید عمومی برای ساخت آدرس کیف پول، بهمعنای مشخص شدن هویت شخصی شما باشد، اما این قدم هم ناشناس است و حتی میتواند بدون نیاز به اینترنت انجام شود و بهسادگی و با یک کلیک میتوانید در کیف پول خود کلیدهای جدید بسازید.
در هنگام ساخت کیف پول امکان بررسی تکراری بودن یا نبودن آدرس یا کلید نیست.
برای اینکه جمله بالا را بهتر درک کنید، فرایند ساخت ایمیل را در نظر بگیرید. هنگامی که قصد ساخت ایمیل دارید، سرویس ایمیل دهی (مثل جیمیل) از شما میخواهد که یک آدرس ایمیل برای خود مشخص کنید. شما آدرس دلخواه خود را وارد میکنید، اما سیستم به شما میگوید که این آدرس ثبت شده است و نمیتوانید آن را برای خود بردارید اما در بیت کوین اینگونه نیست . بنابراین، اگر بتوانید کلید خصوصی یک نفر را حدس بزنید، به داراییهای او دسترسی خواهید داشت . اما حدس کلید خصوصی تقریباً محال است!!!!! یعنی حداکثر تعداد آدرسهای احتمالی بیت کوین ۲¹⁶⁰ است یعنی ۱۴۶۱۵۰۱۶۳۷۳۳۰۹۰۲۹۱۸۲۰۳۶۸۴۸۳۲۷۱۶۲۸۳۰۱۹۶۵۵۹۳۲۵۴۲۹۷۶ احتمال برای آدرسهای بیت کوین وجود دارد و این موضوع محال بودن آن را اثبات می کند .
برای اینکه بزرگی این عدد را خوب درک کنید به این مثال توجه کنید:
تخمین زده میشود که تعداد دانههای شن و ماسه در دنیا تقریبا ۷.۵ میلیون تریلیون باشد. حالا فرض کنید هر دانه شن یک کره زمین باشد و با احتساب شنهای این کرههای زمین، بازهم رقمی که بهدست میآید خیلی پایینتر از احتمال آدرسهای بیت کوین است . بنابراین این موضوع باعث میشود تا هک یا حملات سایبری با استفاده از حدس زدن کلیدها غیرممکن باشد.
-
بلاک و بلاک چین
تا اینجا به لطف امضای دیجیتال و مفهوم ورودی و خروجی در تراکنشها، مطمئن هستیم که کسی نمیتواند تراکنش غیرمعتبر ارسال کند یا بیشتر از موجودی خود انتقال دهد اما بازهم امنیت بهشکل کامل در شبکه بیت کوین برقرار نشده است.
همانطور که اشاره شد، تراکنشها پس از ارسال به شبکه، از نودی به نود دیگر منتقل میشوند و بنابراین ترتیب رسیدن دو تراکنش مختلف به یک نود میتواند متفاوت باشد.
یک کاربر خرابکار میتواند به فرد دیگری بیت کوین بفرستد و بعد از اینکه آن فرد کالا یا پول بیت کوین را داد، تراکنشی مخالف تراکنش قبلی بفرستد و در این صورت، بهدلیل عدم وجود ترتیب زمانی، نودها ممکن است تراکنش دوم را زودتر دریافت کنند و عملاً بیت کوینها دوبار خرج شود.
- چگونه میتوان فهمید که چه تراکنشی زودتر ارسال شده است؟
برای حل این مشکل، در شبکه بیت کوین سیستم بلاک چینی در نظر گرفته شده است. شبکه بیت کوین تراکنشها را با گذاشتن آنها در بستههایی بهنام «بلاک» (Block) مرتب میکند.
حداکثر حجم بلاک بیت کوین حدود ۱ مگابایت است و در هر بلاک بیت کوین بهطور میانگین حداکثر ۲.۵ هزار تراکنش جای میگیرد و بلاکهای بیت کوین بهطور میانگین هر ده دقیقه یکبار طی فرایند ماینینگ ایجاد میشوند .
هر بلاک یک هش (بخوانید شناسه منحصر بهفرد) و هش بلاک قبلی را در خود دارد. در واقع بلاکها به ترتیب به یکدیگر متصل هستند و یک زنجیره را شکل دادهاند. اگر چیزی داخل یک بلاک تغییر کند، هش بلاک هم تغییر میکند و به این ترتیب بلاکهای دیگر غیرمعتبر میشوند. از این رو گفته میشود بلاک چین تغییرناپذیر است.
تمام تراکنشهایی که در یک بلاک خاص قرار دارند، بهعنوان تراکنشهای ارسالشده در یک زمان در نظر گرفته میشوند و تراکنشهایی که هنوز در بلاک وارد نشده باشند، بهعنوان تأییدنشده یا آنکانفرم (unconfirmed) برچسب میخورند. زمانی که تراکنش در بلاک ثبت شود و آن بلاک به شبکه ارسال شود، تراکنش یک تأیید (confirm) میخورد. زمانی که بلاکهای جدیدی روی بلاک تراکنش قبلی ثبت شوند، تعداد تأیید هم به همان میزان بالا میرود.
اگرچه درک کامل بیت کوین و نحوه کار آن در ابتدا کمی مشکل بهنظر میرسد، این به شما کمک خواهد کرد تا علاوهبر فهمیدن کامل ایده بیت کوین، با مفاهیمی چون بلاک چین و ماینینگ که در دهها ارز دیجیتال دیگر هم وجود دارد، آشنا شوید. البته همانطور که در ابتدای مقاله هم اشاره شد، برای استفاده از پادشاه ارزهای دیجیتال نیاز به وارد شدن به مسائل فنی نیست و امروزه بهلطف نرمافزارهای متعدد، کار کردن با بیت کوین بهسادگی ارسال یک پیامک است.