位元幣是一種點子貨幣,是一種基於密碼學的貨幣,在2023年11月1日由中本聰發表位元幣***,文中提出一種去中心化的點子記賬系統,我們平時的電子現金是銀行來記賬,因為銀行的背後是國家信用。去中心化電子記賬系統是參與者共同記賬。位元幣可以防止主權危機、信用風險。
假設現在有4個人分別稱之為abcd,他們之間發起了3個交易,a轉給b十個位元幣,b轉給c五個位元幣,c轉給d兩個位元幣。如果是傳統的記賬方式,這些交易會記錄在銀行系統中,我們相信銀行不會隨意新增、刪除或修改交易記錄,我們也不會關注到底有哪些交易,只會關注賬戶餘額。但位元幣的記賬方式為abcd每個人儲存這樣乙份賬本,賬本上記錄了上述交易內容,如果每個人的賬本實時的一致,abcd就不需要銀行了。
位元幣是這樣做的,每當有乙個人發起一筆交易,他就要將一筆交易廣播至全網,由全網中的某乙個人,把一段時間內的交易打包好記錄到乙個區塊上,再按照順序把這些區塊,乙個乙個的鏈在一起,進而形成了乙個鏈條,這就是所謂的區塊鏈。
那麼問題來了
1、我憑什麼要參與這個系統,我為什麼要動用自己的計算機資源來儲存這些資訊呢?
2、以誰的記錄為準呢?比如上面的賬單順序,a使用者可能是這個順序,b可能順序不一樣,甚至可能b未收到c傳給d轉賬 的這個訊息
3、位元幣如果做到支付功能,保證該是誰的錢就是誰的錢,而且只有所有者才能花。
4、如何防偽、防篡改以及雙重支付,防偽是驗證每條交易的真的是某人發出的,如果b可能杜撰一條資訊,說某某給我轉了一筆錢,這就是乙個假訊息,或者b說我給某人轉了多少錢,但是實際上他並沒有轉這麼多錢,該怎麼辦。防篡改指的是b可能想從區塊鏈上把自己曾經轉給某人的錢的記錄刪掉,這樣他的餘額就會增加。雙重支付是指,b只有10個位元幣,他同時向c和d轉10個位元幣,造成雙重花費。
因為記賬有獎勵,記賬有手續費的收益,而且打包區塊的人有系統獎勵,獎勵方案是,每十分鐘生成乙個區塊,每生成乙個區塊會獎勵一定數量的位元幣,最開始是50個btc,過四年會獎勵25個btc,再過四年再減半,以此類推。這樣位元幣的產生就會越來越少,越來越趨近於乙個最大值,計算公式是:50*6*24*365*4*(1+1/2+1/4+1/8+...)≈ 2100萬,其中最初獎勵50個位元幣,每個小時有6個區塊,每天24小時,每年365天,前四年如此,之後沒四年減半。
此外,記賬獎勵還有每筆交易的小額手續費,每個交易發起都會附帶一定的手續費,這些手續費是給記賬的礦工的。
各個節點通過工作量證明機制來爭奪記賬權,他們計算乙個很複雜的數學題,複雜到沒有乙個人可以用腦子算出來,他是基於概率的方法,礦工必須通過遍歷、猜測和嘗試的辦法才能解開這個未知數。第乙個計算出來的節點就是下乙個區塊的產生者。那麼這個數學題到底難道**呢,下面詳細介紹。
雜湊函式又被稱為數字摘要活雜湊函式,它的特點是輸入乙個字串,可以生成另外乙個字串,但是如果輸入不同,輸出的字串就一定不同,而且通過輸出的字串,不能反推出輸入。舉個簡單的例子,對1-100內的數模10,可以認為是一種雜湊演算法,比如98%10=8,66%10=6,98和66是輸入,模10是雜湊函式,8和6是輸出,在這個模型中,通過6和8無法推斷輸入是66個98,因為還可以能是56和88,當然因為這例子比較簡單,所以會出現雜湊碰撞,即66和56的結果都是6,輸出的結果相同。乙個優秀的雜湊函式,可以做到輸出一定不同,雜湊碰撞的概率幾乎為0。常見的雜湊需求有很多,比如md系列和sha系列等,位元幣採用的是sha256演算法,即輸入乙個字串,輸出乙個256位的二進位制數。下面是程式執行的結果:
通過程式結果可以看出,輸入的源資訊不同,得到的結果也不同(為了方便,結果使用64位的16進製表示),即乙個orange多了乙個句號,也會產生截然不同的結果。同時,通過輸出的十六進製制字串,也無法倒推輸出。對於位元幣,只要了解sha256的功能即可。
首先介紹一下位元幣每個區塊的資料結構,每個區塊有區塊頭和區塊體兩部分組成。
區塊體中包含了礦工蒐集的若干交易資訊,圖中假設有8個交易被收錄在區塊鏈中,所有的交易生成一棵默爾克樹,默爾克樹是一種資料結構,它將葉子節點兩兩雜湊,生成上一層節點,上一層節點再雜湊,生成上一層,直到最後生成乙個樹根,稱之為默爾克樹,只有樹根保留在區塊頭中,這樣可以節省區塊頭的空間,也便於交易的驗證。
區塊頭中包含父區塊的雜湊,版本號,當前的時間戳,難度值,隨機數和上面提到的默爾克樹根。
假設區塊鏈已經鏈到了某個塊,有abcd四個節點已經蒐集了前10分鐘內全網中的一些交易資訊,他們選出其中約4k條交易,打包好,生成默爾克樹根,將區塊頭中的資訊,即發區塊雜湊+版本號+時間戳+難度值+隨機數+默爾克樹根組成乙個字串str,通過兩次雜湊函式得出乙個256的二進位制數,
關於位元幣
關於位元幣 位元幣的基礎是密碼學。乙個錢包,就是一對數字。其中乙個是公開的,稱之為公鑰,乙個自己保留,稱為私鑰,轉一次賬,要用私鑰簽名,用公鑰驗證。如果有人得到了你的私鑰,你的錢包就是他的錢包了,也就相當於錢丟了。理論上講,針對乙個特定的乙個數字,從公鑰,算出私鑰,用你的電腦需要幾十年甚至更長的時間...
關於位元幣錢包
位元幣錢包本質上是是乙個小型資料庫,其最重要的功能為儲存數字金鑰。位元幣所有權由數字金鑰 位元幣位址和數字簽名來確立。有效的數字簽名需要有效的數字金鑰來產生。金鑰包括私鑰和公鑰,位元幣位址是由公鑰產生的。因此,在最簡情形下,位元幣錢包內 位元幣錢包本質上是是乙個小型資料庫,其最重要的功能為儲存數字金...
位元幣 位元幣的實現
位元幣系統是乙個基於交易的賬本,這意味著儲存在賬本中的是一筆筆交易。那麼在使用者進行轉賬交易時,首先就需要確保使用者所持有的數量要大於或等於將要交易的。這要做的目的是為了避免雙花問題。這種基於交易的賬本好處在於隱私保護性比較好,缺點在於每次交易都需要說明幣的 在位元幣的全節點中,會在記憶體中維護乙個...