比特币技术之迷-概述

  比特币技术之迷

   闲暇之余,开始阅读比特币源码,本人将收集以及理解的相关资料作为记录,特开此专栏,给大家带入比特币的技术世界。
  
比特币相关资源链接如下:
 比特币技术白皮书:
  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
    CRequestTracker

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

    CTransaction
    CMerkleTx
    CTxIndex

    CBlock
    CBlockIndex
    CDiskBlockIndex
    CBlockLocator

    CAlert : CUnsignedAlert

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

db.cpp/.h:
    CTxDB
    CKeyPool
    CWalletDB

bignum.h
    CBigNum

util.h
    CCriticalSection: 用于线程同步

 

 下一篇我们将讲解 比特币技术之迷-Transaction 交换

(待续)
 
  
  
 

posted on 2014-05-21 20:21  yewenpeng  阅读(679)  评论(0编辑  收藏  举报