از اساسیترین نگاه، بیت کوین یک برنامه کامپیوتری است. بخش بزرگی از این برنامه یک فایل دیجیتال است. این فایل دیجیتال که دفتر کل (ledger) نام دارد، شبیه به دفتر حسابوکتاب سنتی عمل کرده و حسابها و موجودی هر نفر را در خود ثبت میکند.
یکی از چیزهایی که بیت کوین را از سیستمهای متمرکز متمایز میکند، نحوه نگهداری و بهروزرسانی دفتر کل است.
در بیت کوین بهجای یک نهاد مرکزی، دفتر کل بهصورت گروهی و اشتراکی توسط اعضای شبکه نگهداری میشود. این یعنی هرکسی میتواند از دفتر کل نگهداری کرده و آن را بهروز کند. به هر کامپیوتری که بهطور مستقیم به شبکه متصل شود و دفتر کل را دریافت کند، نود (Node) گفته میشود.
در سیستمهای متمرکز شما مجبور به اعتماد کورکورانه هستید. وقتی در سیستم بانکی برای کسی پول واریز میکنید، درواقع به بانک اعتماد کردهاید که پول را به حساب فرد واریز خواهد کرد و پول شما بلوکه نخواهد شد. اما در بیت کوین با ریاضیات، منطق و رمزنگاری نیاز به اعتماد از بین میرود. درواقع بهجای اعتماد به یک نهاد متمرکز که میتواند مرتکب خطای عمدی یا غیرعمدی شود، به منطق و ریاضیات اعتماد میکنید.
تمام چیزی که در بیت کوین با آن سروکار داریم را میتوان در این یکی دو جمله خلاصه کرد: سیستمی که به همه (کامپیوترها) اجازه میدهد در نگهداری سابقه تراکنشها سهیم باشند + ویژگیهای امنیتی برای جلوگیری از تقلب و حمله به شبکه.
زمانی که بیت کوین ارسال میکنید چه اتفاقی رخ میدهد؟
گفتیم که همه افراد میتوانند در حفظ و نگهداری دفتر کل بیت کوین سهیم باشند. در سادهترین توضیح، هنگام ارسال بیت کوین به شبکه اعلام میکنید که مقداری از حساب شما کسر شود و به حساب گیرنده واریز شود. نودها یا همان کامپیوترهای موجود در شبکه بیت کوین، پیام شما را دریافت کرده و آن را در دفترهای خود اعمال میکنند. سپس پیام را به دیگر نودها پاس میدهند.
بانکها هم یک دفتر کل دیجیتال دارند که تراکنشها و دارایی مشتریان در آن ثبت شده است. مثلاً محمد ۱۰ میلیون تومان پول دارد و علی ۵ میلیون تومان؛ این اطلاعات روی دفتر کل بانکها ثبت میشود. وقتی محمد ۵ میلیون تومان برای علی میفرستد، در دفتر کل موجود در بانک، ۵ میلیون تومان از حساب محمد کسر میشود و به حساب علی واریز میشود. در هنگام انجام تراکنش بانکی، پول فیزیکی منتقل نمیشود، بلکه فقط مالکیت پول تغییر میکند.
در بیت کوین، اگر رضا بخواهد برای محسن ۵ بیت کوین ارسال کند، باید درخواستش را به شبکه اعلام کند که «۵ بیت کوین از من کم کن و ۵ بیت کوین به محسن اضافه کن.» هر نود در شبکه، پیام را دریافت کرده و کپیِ دفتر حسابوکتاب خود را طبق این درخواست بهروز میکند. همه این فرایند بهصورت دیجیتالی انجام میشود.
همانطور که اشاره شد، درخواست تراکنش از سوی یک کاربر به شبکه ارسال میشود و کامپیوترهای فعال در شبکه آن را اعمال میکنند. اما آنها چگونه مطمئن میشوند که این درخواست معتبر است؟ اگر کسی که این پیام را فرستاده است، واقعاً بیت کوین نداشته باشد چه؟
وقتی یک چک را برای نقد کردن به بانک میبرید، اولین چیزی که کارمند بانک برای انجام درخواست شما بررسی میکند چیست؟ درست حدس زدید: امضای فرد دارنده دسته چک.
در شبکه بیت کوین هم هر پیامِ تراکنش باید امضای معتبر داشته باشد تا قبول شود، اما نه امضای دستنویس؛ امضایی از جنس دیجیتال، چیزی که نتوان آن را جعل کرد.
در درون هر کیف پول بیت کوین، دو رشته متنی وجود دارد که مجزا هستند، اما با هم ارتباط مکمل دارند: کلید عمومی (Public Key) و کلید خصوصی (Private Key).
رضا برای ارسال بیت کوین باید پیام تراکنش را با کلید خصوصی کیف پولش امضا و به شبکه ارسال کند. به این شکل، بدون اینکه نیاز به استفاده از نام و مشخصات هویتی در شبکه بیت کوین باشد، مشخص میشود که بیت کوینها دقیقاً از طریق کیف پول رضا ارسال شدهاند و فرد دیگری به دروغ این پیام را به شبکه نفرستاده است. داشتن کلید خصوصی به منزله داشتن داراییها است. برای همین گفته میشود که هرگز نباید کلید خصوصی کیف پول خود را در اختیار فرد دیگری قرار بدهید.
هر نود، امضای تراکنش رضا را بررسی میکند تا از درستی آن مطمئن شود. اما چگونه شبکه میتواند بدون داشتن کلید خصوصی، از اعتبار امضای دیجیتال اطمینان حاصل کند؟ اینجاست که کلید عمومی بهکار میآید. با استفاده از کلید عمومی که افشای آن هیچ مشکلی ندارد، نودها میتوانند بدون دیدن کلید خصوصی، از اعتبار امضای تراکنش اطمینان حاصل کنند.
امضای دیجیتال برای هر تراکنش منحصر بهفرد است و با هرگونه تغییر در درخواست تراکنش، امضا بهطور کامل تغییر میکند. به این ترتیب، نمیتوان پیامهای درخواست تراکنش را تغییر داد.