025.
比特幣的交易原理是什么?
比特幣主要使用橢圓曲線數位簽章演算法(ECDSA),這個算法有兩個至關重要的特性:第一,只要知道私鑰,就可以算出相應的公鑰;第二,你用私鑰簽過名的東西,可以用公鑰算一下是不是你簽的。
其實,比特幣在交易過程中沒有錢包,只有交易賬單,整個比特幣交易就是一大堆交易賬單。比如,賬單1,從A轉到B,轉了X比特幣;賬單2,從B轉到C和D,轉了X比特幣;賬單3,從C轉到E,轉了X比特幣……只要下載客戶端,就能接收到從比特幣成立那天開始的所有賬單。因此,只要把所有賬單都下載,自然就能知道各賬戶上應該剩多少錢。
每張比特幣交易賬單都是一段數據,簽完名后會發送到全網。下面把數據結構逆向成易懂的中文解釋,具體如下:
1. FROM(誰發送的)
它包括兩部分:一是Previous Tx,也就是說,花的任何一筆錢都應有人轉給你,需要出示賬單的ID;二是Script Si,就是把單子用你的私鑰做Hash(哈希算法),只有你能做這個Hash。
2.TO(誰接受的)
這包括兩部分:一是Value,即要發多少;二是Script Pub Key,即對方的公鑰,比特幣賬戶就是一段公鑰。
簽完單子后,開始往全網發送。怎么發呢?比特幣通信很簡單,可以類比成IRC頻道。跟普通的IRC不同的是,其客戶端是一臺IRC服務器,啟動客戶端的時候,會接收到周圍的有公網IP的客戶端地址,也就是“服務器”列表。此列表會不斷地刷新,都是其他比特幣用戶,你在這個IRC“喊”一句話,周圍的人都會聽到,進而擴散到全世界。
把簽單發送到全世界后,收到單子的客戶端就會校驗這個單子是否正確。比如,校驗你的簽名,是不是你發的;校驗你是否有那么多錢。計算后如果發現這筆交易沒問題,基本上就算轉賬成功。
現在,即使對方接受了比特幣,但要想花,也得有那個地址(公鑰)對應的私鑰。
如此往復。這就是比特幣的交易原理。