賬戶/
位址
位元幣採用了非對稱的加密演算法,使用者自己保留私鑰,對自己發出的交易進行簽名確認,並 公開公鑰。 位元幣的賬戶位址其實就是使用者公鑰經過一系列 hash(hash160,或先進行 sha256,然 後進行 ripemd160)及編碼運算後生成的 160 位(20 位元組)的字串。 一般地,也常常對賬戶位址串進行 base58check 編碼,並新增前導位元組(表明支援哪種腳 本)和 4 位元組校驗位元組,以提高可讀性和準確性。 注:賬戶並非直接是公鑰內容,而是
hash
後的值,避免公鑰過早公開後導致被破解出私鑰。
交易交易指令碼
指令碼(script) 是保障交易完成(主要用於檢驗交易是否合法)的核心機制,當所依附的交易 發生時被觸發。通過指令碼機制而非寫死交易過程,位元幣網路實現了一定的可擴充套件性。位元 幣指令碼語言是一種非圖靈完備的語言,類似 forth 語言。 一般每個交易都會包括兩個指令碼:負責輸入的解鎖指令碼(scriptsig)和負責輸出的鎖定指令碼 (scriptpubkey)。
輸出指令碼一般由付款方對交易設定鎖定,用來對能動用這筆交易的輸出(例如,要花費該交 易的輸出)的物件(收款方)進行許可權控制,例如限制必須是某個公鑰的擁有者才能花費這 筆交易。 認領指令碼則用來證明自己可以滿**易輸出指令碼的鎖定條件,即對某個交易的輸出(位元 幣)的擁有權。
輸出指令碼目前支援兩種型別: p2pkh:pay-to-public-key-hash,允許使用者將位元幣傳送到乙個或多個典型的位元幣 位址上(證明擁有該公鑰),前導位元組一般為 0x00; p2sh:pay-to-script-hash,支付者建立乙個輸出指令碼,裡邊包含另乙個指令碼(認領腳 本)的雜湊,一般用於需要多人簽名的場景,前導位元組一般為 0x05; 以 p2pkh 為例,輸出指令碼的格式為 scriptpubkey: op_dup op_hash160 op_equalverify op_checksig 其中,op_dup 是複製棧頂元素;op_hash160 是計算 hash 值;op_equalverify 判 斷棧頂兩元素是否相等;op_checksig 判斷簽名是否合法。這條指令實際上保證了只有 pubkey 的擁有者才能合法引用這個輸出。
區塊位元幣區塊鏈的乙個區塊不能超過 1 mb,將主要包括如下內容:
區塊大小:4 位元組;
區塊頭:80 位元組:
交易個數計數器:1~9 位元組;
所有交易的具體內容,可變長,匹配 merkle 樹葉子節點順序。
其中,區塊頭資訊十分重要,包括: 版本號:4 位元組; 上乙個區塊頭的 hash 值:鏈結到上乙個合法的塊上,對其區塊頭進行兩次 sha256 操 作,32 位元組; 本區塊所包含的所有交易的 merkle 樹根的雜湊值:兩次 sha256 操作,32 位元組; 時間戳:4 位元組; 難度指標:4 位元組; nonce:4 位元組,pow 問題的答案。 可見,要對區塊鏈的完整性進行檢查,只需要檢驗各個區塊頭部資訊即可,無需獲取到具體 的交易內容,這也是簡單交易驗證(****** payment verification,spv)的基本原理。另 外,通過頭部的鏈結,提供時序關係的同時加大了對區塊中資料進行篡改的難度。
位元幣簡單概念 位元幣是啥幣?
閒來無事,密碼技術 的確是本科普密碼學的好書,安利一波。看到最近大熱的位元幣,挺有趣,看看一些基礎概念,豐富下見識。簡寫bitcoin 位元幣的交易是在位址的基礎上實現的。那是怎樣的乙個交易流程呢?emmmm,這個也很好理解滴。假如你去去買一包辣條,老闆生成乙個位址,然後告訴你,你生成乙個位址,向老...
C 重要幾個概念
1 c 中虛函式的作用是什麼 2.c 運算子過載怎麼理解?說起來比較麻煩,還是自己看起來領悟的快。給你個簡單的運算子過載的例子。過載了兩個 點的加減運算。他使本來只可以在數值上用 運算的可以被座標點運用。點x 1,1 y 2,2 z 3,3 例子如下,成功除錯。include using names...
幾個重要的概念
1 服務 服務是乙個個的介面,介面約定了服務,從而使隨意替換服務的實現對使用介面服務的 沒有任何的影響。像我們上面例子中的ilog,ilogformatter都是乙個個服務,我們在這個例子中支實現了乙個文字檔案的日誌記錄,如果你要是實現資料庫記錄的日誌記錄,都必須要遵守ilog這個介面。2 元件 簡...