比特幣技術之迷-概述

  比特幣技術之迷html

   閒暇之餘,開始閱讀比特幣源碼,本人將收集以及理解的相關資料做爲記錄,特開此專欄,給你們帶入比特幣的技術世界。
  
比特幣相關資源連接以下:
 比特幣技術白皮書:
  http://bitcoin.org/bitcoin.pdf
  比特幣相關wiki文章
  https://en.bitcoin.it/wiki/Category:Technical
  比特幣協議詳解
  https://en.bitcoin.it/wiki/Protocol_specification
  比特幣協議規則
  https://en.bitcoin.it/wiki/Protocol_rules
 
  比特幣客戶端主要包括如下模塊:
   初始化模塊:
   在初始化過程當中,客戶端會初始化各類模塊,包括多線程同步操做相關模塊
   節點發現模塊:
   客戶端經過各類技術細節來實現其它比特幣節點的發現
   節點鏈接模塊
   與其它節點的鏈接與保持模塊
   sokect和消息模塊
   客戶端處理來自其它節點的消息,並經過socket和其它節點進行鏈接
   block交換
   節點間廣播自身持有的block,並與相關節點交換,以創建完備的block chains
   Transaction交換
   節點間相關交換與傳遞Transactions。
   錢包服務
   用戶能夠用本地錢包建立Transaction,相關Transaction放在本地錢包中,客戶端提供一個服務來管理本地錢包
   RPC接口
   客戶端經過HTTP 和sockets提供 JSON-RPC接口,用來完成各類操做功能和管理本地錢包。
  
   輕客戶端模式(fClient Mode)
   值得注意的是,客戶端已經實現了一種輕模式,在這種模式中只會下載block頭信息,這種實現用來實現輕客戶端,同時不用驗證和保存全部的block和transactions。
  
   目前控制這種輕客戶端模式的控制變量已經在代碼中硬性寫爲false了,估計是還沒寫完。
  
   主線程關鍵函數流程:
   init.cpp:
    main()
    ExitTimeout
    Shutdown
net.cpp:
    StartNode
    ThreadGetMyExternalIP
    ThreadMapPort
    ThreadSocketHandler
    ThreadOpenConnections
    ThreadMessageHandler
rpc.cpp:
    ThreadRPCServer
irc.cpp:
    ThreadIRCSeed
db.cpp:
    ThreadFlushWalletDB
ui.cpp:
    ThreadDelayedRepaint
    SendingDialogStartTransfer多線程

 各文件中關鍵類:
 net.cpp/.h:
    CNode:  處理節點的鏈接
    CInv
    CAddress
    CMessageHeader
    CRequestTrackersocket

main.cpp/.h:
    CDiskTxPos
    CInPoint
    COutPoint
    CTxIn
    CTxOut函數

    CTransaction
    CMerkleTx
    CTxIndexpost

    CBlock
    CBlockIndex
    CDiskBlockIndex
    CBlockLocatorui

    CAlert : CUnsignedAlerturl

wallet.cpp/.h
    CWallet : CKeyStore
    CReserveKey
    CWalletTx : CMerkleTx
    CWalletKey
    CAccount
    CAccountingEntry線程

db.cpp/.h:
    CTxDB
    CKeyPool
    CWalletDBhtm

bignum.h
    CBigNumblog

util.h
    CCriticalSection: 用於線程同步

 

 下一篇咱們將講解 比特幣技術之迷-Transaction 交換

(待續)        

相關文章
相關標籤/搜索