注意:md5現在已經不安全了,人為已經可以製造雜湊碰撞了。
2.另乙個性質是hiding,也就是從h(x)無法倒退出x。輸入空間要足夠大,分布要均勻。
3.puzzle friendly。不知道要得到某個範圍雜湊值應該輸入什麼,只能乙個個試。也就是說,挖礦的時候只能乙個個試,沒有捷徑。因為只有滿足h(block header)≤ target的才可以。。。所以,挖礦真的是difficult to solve,but easy to verify。
位元幣中用的雜湊函式是:sha-256(secure hash algorithm)
位元幣中的賬戶管理:在本地建立乙個公鑰私鑰對,就是乙個賬號。是非對稱加密(加解密不用同乙個金鑰,加密用公鑰,解密用私鑰,都是接收方的鑰)。公鑰公開,私鑰保密。公鑰相當於銀行賬戶,私鑰相當於密碼。
把位元幣轉給別人時,用我的私鑰進行簽名,別人收到後,用我的公鑰進行驗證是不是我進行的轉賬操作。
生成公私鑰是隨機的,所以要有好的隨機源,而且每次簽名的時候也要有好的隨機源。
除了儲存位址,還儲存結構體的雜湊值,這樣就不光能找到結構體的位置,還能檢測結構體內容有沒有被篡改(因為儲存了雜湊值)。
乙個個的區塊組成的鍊錶。
區塊鏈和普通的鍊錶區別是,指標被雜湊指標代替。只需要記住最後乙個雜湊值,就能檢測出整個區塊鏈內容有沒有被篡改(因為後一塊的h()值是前一塊的整個內容去雜湊值得到的),如圖。普通鍊錶改其中乙個值不影響其他,而區塊鏈牽一髮而動全身(感覺像多公尺諾骨牌嘻嘻?)。
跟二叉樹長得很像,只是這個是下面兩個節點取雜湊值得到上面節點。只需要記住根節點,就可以檢測整棵樹有沒有被篡改。
根雜湊值存在block header裡,交易過程存在block body裡。全節點包括block header和block body,但是輕節點(比如手機上位元幣錢包)只包括block header。這棵樹可以證明包含某個交易已經被寫進了區塊鏈。
block header
block body
位元幣協議版本
交易列表
前一區塊頭的雜湊值
merkle root hash
target
隨機數注意:有環的不可以用雜湊指標。
去中心化的貨幣要注意的兩個問題:
1.誰能發行數字貨幣:挖礦。
2.怎麼驗證交易的合法性:區塊鏈。
雙花攻擊是數字貨幣的乙個主要挑戰。
位元幣中的交易都要有輸入和輸出,幣從哪來,花到哪去。
最長合法鏈原則。位元幣中接受的區塊應該是在擴充套件最長合法鏈。
正常情況也可能有兩個分叉,因為兩個節點同時獲得記賬權,兩個節點打包的區塊,同時計算出了那個隨機數。此時會暫時兩個分叉共存,直到其中某乙個區塊搶先找到了下乙個區塊,這條就成了最長合法鏈,另乙個分叉就被丟棄。
某惡意節點不停產生賬戶,賬戶總數超過總賬戶的一半,則取得了區塊鏈的控制權。
一些節點是有惡意的,大部分節點是好的。
想法1:把一些交易打包到區塊裡作為候選區塊,讓每個區塊投票,如果通過就寫入區塊鏈。
不行,因為有的惡意節點一直發布一些含有惡意交易的區塊,則一直投票,占用資源。而且有的節點不投票。
想法2:不按賬戶個數投票,而是按照計算力投票。每個節點都可以產生合法交易放入區塊,這些節點就開始試隨機數,直到找到h(block header)≤ target,則這個節點有記賬權。
coinbase transaction。這個不用指出幣的**,有了記賬權的節點(找到了隨機數)會有出塊獎勵。
50btc->25btc->12.5btc,每21萬個位元幣,獎勵就減半。
位元幣爭奪記賬權的過程叫挖礦。爭奪記賬權的節點叫礦工。
位元幣基礎(一)
最近很多人都在問我,到底什麼才是區塊鏈,區塊指的是啥 居民區?行政區?怎麼就把區塊給鏈上了,鏈上又能做什麼,乙個鍊子怎麼又搞出一堆聽不懂的幣出來了,這個幣我怎麼沒見過.區塊鏈都快變成問題鏈了。其實我很能理解大家的這種焦慮,在這麼乙個萬眾創新的時代,每天都有很多新名詞產生,每段時間都會有個所謂的風口。...
位元幣 位元幣的實現
位元幣系統是乙個基於交易的賬本,這意味著儲存在賬本中的是一筆筆交易。那麼在使用者進行轉賬交易時,首先就需要確保使用者所持有的數量要大於或等於將要交易的。這要做的目的是為了避免雙花問題。這種基於交易的賬本好處在於隱私保護性比較好,缺點在於每次交易都需要說明幣的 在位元幣的全節點中,會在記憶體中維護乙個...
位元幣簡單概念 位元幣是啥幣?
閒來無事,密碼技術 的確是本科普密碼學的好書,安利一波。看到最近大熱的位元幣,挺有趣,看看一些基礎概念,豐富下見識。簡寫bitcoin 位元幣的交易是在位址的基礎上實現的。那是怎樣的乙個交易流程呢?emmmm,這個也很好理解滴。假如你去去買一包辣條,老闆生成乙個位址,然後告訴你,你生成乙個位址,向老...