1. 程式人生 > >比特幣原始碼解讀之前期準備

比特幣原始碼解讀之前期準備

前言

       筆者從今天開始對bitcoin 第一個發行版v0.1.0版本進行原始碼分析(ps. 網上對比特幣高版本的分析文章很多,但是介紹第一個版本的分析很少,系統全面的分析第一個版本更是寥寥無幾)。讀者如果需要了解學習區塊鏈技術,可能從第一個版本中受到啟發。這是一系列的文件,筆者大家對大綱進行總結,後續將基本按大綱發表解讀文章(中間文章發表順序可能有所調整)。大綱如下所示:

學習資料

1. 比特幣白皮書

2. bitcoin開發文件

準備知識點

1. BOOST庫

       BOOST庫是一個可移植、提供原始碼的C++庫,作為標準庫的後備,是C++標準化程序的開發引擎之一。
官方網址: https://www.boost.org/

2. P2P網路

       P2P網路(peer-to-peer,簡稱為P2P),又稱為對等式網路,也叫說點對點網路。這是一種無中心伺服器、完全由客戶端交換資訊的網際網路體系。
參考網址:
P2P網路的拓撲結構 http://www.intsci.ac.cn/users/luojw/P2P/ch02.html

3. 橢圓曲線演算法secp256k1

       橢圓曲線密碼學是基於橢圓曲線數學的一種公鑰密碼的方法。它的優勢是在某些情況下它比其他的方法使用更小的金鑰提供相當的或更高等級的安全。
參考網站:
https://www.zhihu.com/question/22399196

4. SHA256演算法

       SHA256演算法是安全雜湊演算法SHA(Secure Hash Algorithm)系列演算法之一,因為摘要長度為32個位元組(256位),所以稱為SHA256演算法。
參考網址:
SHA256演算法分析與實現 

http://www.cnblogs.com/foxclever/p/8370712.html

原始碼地址

1. 比特幣v0.1.0版下載地址

2. 比特幣最新版本下載地址

下一篇:

作者:雨後的蚊子

相關推薦

原始碼解讀前期準備

前言       筆者從今天開始對bitcoin 第一個發行版v0.1.0版本進行原始碼分析(ps. 網上對比特幣高版本的分析文章很多,但是介紹第一個版本的分析很少,系統全面的分析第一個版本更是寥寥無幾)。讀者如果需要了解學習區塊鏈技術,可能從第一個版本中受到啟發。這是一系列

原始碼解讀整體框架

      本文主要描述了程序啟動時初始化(載入地址、區塊、錢包資訊,啟動節點執行緒以及礦工挖礦執行緒等)、比特幣客戶端交易的發起(交易初始化、提交交易請求、確認和廣播及交易)以及比特幣客戶端當前節點地址和收款方地址。下文將根據總體框架圖分別描述各個功能在原始碼中的函式實現(

原始碼解讀交易發起

(本文使用的是比特幣v0.1.0版本 點選下載原始碼)本文主要描述交易是如何發起中,其過程包含交易的新建(包含交易的選擇,交易費的計算、簽名);提交交易請求;本節點接受交易(驗證、檢查並儲存交易等);最後廣播交易到其他節點中。流程圖如下所示:新建交易if(!CreateTra

原始碼解讀執行緒處理-礦工執行緒

(本文使用的是比特幣v0.1.0版本 點選下載原始碼)   比特幣原始碼解讀之執行緒處理分為兩篇,礦工執行緒處理和其他執行緒處理兩篇,本文描述礦工執行緒處理,主要包含創幣交易的產生、當前交易的打包處理,工作量等相關內容。流程圖如下所示: 新建礦

原始碼解讀私鑰、公鑰和地址

(本文使用的是比特幣v0.1.0版本 點選下載原始碼)比特幣是建立在數字加密基礎上的,接觸過比特幣的朋友應該知道:(1)購買比特幣最後是通過一個比特幣地址進行的,比特幣地址就像支票中的支付物件(收款方);(2)而比特幣地址則是通過公鑰單向雜湊生成的;(3)而公鑰則是通過私鑰使

原始碼解讀區塊確認

(本文使用的是比特幣v0.1.0版本 點選下載原始碼)本文主要描述礦工挖到區塊或者收到“block”訊息後進行的區塊處理。主要包含區塊有效性檢查,孤立區塊處理以及當前區塊處理等(ps:本文暫不涉及工作量證明以及共識, 這兩方面內容再後續文章中介紹)流程圖如下所示:本文主要描述

原始碼解讀

這篇我們主要分析下AppInit2的程式碼,這個函式在init.cpp中。這個函式分了12步完成了初始化客戶端的功能。裡面包含了bitcoin的大部分初始程式,包括讀取'塊索引'、載入塊鏈、載入100個預產生的keys,匯入peers.dat中的資訊,以及初始化其他執行緒。現在我們就看下這12步都做了些什麼。

原始碼閱讀(1)--雜記與加密部分(爽小刀)

比特幣原始碼閱讀(1)–雜記與加密部分(爽之小刀) 歡迎轉載和引用 若有問題請聯絡請聯絡 Email : [email protected] QQ:2279557541 最近從成都來到了杭州拼一槍 由於老婆為了圓自己的一個大公司夢來到了杭州

原始碼研讀(二)搭環境遇到的那些坑

首先說一下度《精通比特幣》是一直不理解的一個地方: 上面兩處被圈起來的地方都提到了一個數字2256,特別是第一句話更是讓人費解,如果私鑰只能在1到2256間產生那豈不是太容易重複了。關於這點,我認為是在翻譯或者排版是出現了錯誤,2256應該是想表達2的256次方的意

原始碼情景分析script指令碼驗證(1)

Bitcoin script是一種簡單的指令執行框架1)指令碼概述指令碼主要由兩部分構成:指令碼物件CScript和執行函式VerifyScript。指令碼物件分為兩類:scriptSig和scriptPublicKeyscriptSig位於交易中的txin中,而script

原始碼情景分析bloom filter精讀

上一篇SPV錢包裡utxos同步提到了bloom filter,這一章節我們將從原始碼分析角度來個深度解剖Bloom filter基本原理 An example of a Bloom filter, representing the set {x, y, z}. The co

原始碼情景分析script指令碼驗證(2)

    通過上一篇的分析,我們應該已經對script有了一定的理解,這章節我們以原始碼分析的方式來了解下指令碼驗證執行流程    bitcoin節點在處理一條交易時就需要驗證交易的txin,由於一條交易可能包含多個txin,因而需要執行多個指令碼驗證,自然需要並行化,因而系統

原始碼情景分析SPV錢包輕量級錢包

SPV錢包最理想的實現方案是,伺服器是全節點,SPV錢包通過伺服器驗證和發起交易,查詢交易歷史,本地做交易封裝,即signRawTransaction和使用者互動。SPV節點不需要執行bitcoin core程式碼,由於需要監聽先的交易事件,需要伺服器通過JPush類似的機制主動通知SPV錢包新的交易等事件。

升級版位元聯儲(UBTC)十大優勢解析

原作者:幣世通 略有修改   比特幣(BitCoin)的概念最初由中本聰在2009年提出,根據中本聰的思路設計釋出的開源軟體以及建構其上的P2P網路。比特幣是一種P2P形式的數字貨幣,點對點的傳輸意味著一個去中心化的支付系統。   與大多數貨幣不同,比特幣不依

區塊鏈學習1.5-原始碼的學習-網路

本篇文章有部分內容直接出自《Mastering Bitcoin》 比特幣網路層主要是由 P2P網路,傳播機制,驗證機制三部分組成。 白皮書關於network的內容回顧一下: The steps to run the network are as follows:

區塊鏈學習1.4-原始碼的學習-基礎

1.3就已經提到區塊鏈的四大技術組合,我認為還是有必要了解背後的原理的。下面做一個簡要的介紹。 一. 區塊鏈資料結構和數字簽名演算法 1.資料結構Merkel樹 說到merkle樹就不得不談到交易,merkle樹就是用於存放交易的 資料結構。如下圖: 它是一個雜湊二叉樹,雜湊的

精通解讀 第八章

8.1 P2P網路架構  比特幣採用了基於國際網際網路(Internet)的P2P(peer-to-peer)網路架構。P2P是指位於同一網路中的每臺計算機都彼此對等,各個節點共同提供網路服務,不存在任何“特殊”節點。每個網路節點在具有“扁平”拓撲結構的mesh networ

原始碼研讀--埠對映

在P2P網路中,一個節點既是客戶又是伺服器,它還要接受其他節點的連線,為網路中其他節點提供服務。這篇文章著重分析一下比特幣P2P網路中是如何通過upnp來實現埠對映的。 1 從騰訊的一道面試題說起     筆者所在團隊的總監在面試的時候必然要問面試者這

【區塊鏈】原始碼學習

比特幣原始碼學習 - 1 - 交易 參考部落格:here and here 一、交易概念 1、 交易形式 比特幣交易中的基礎構建單元是交易輸出。在比特幣的世界裡既沒有賬戶,也沒有餘額,只有分散到區塊鏈裡的UTXO[未花費的交易輸出]。 例如,你有20比特幣

【區塊鏈】原始碼

比特幣原始碼 - 2 - 金鑰和地址 一、基本概念 這裡摘抄一下《精通比特幣》裡面的描述: 比特幣的所有權是通過數字金鑰、比特幣地址和數字簽名來確立的。數字金鑰實際上並不是儲存在網路中,而是由使用者生成並存儲在一個檔案或簡單的資料庫中,稱為錢包。 每筆比特幣交