• 比特币技术之迷-概述


      比特币技术之迷

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

    (待续)
     
      
      
     

  • 相关阅读:
    poj2942 点-双联通+二分图染色
    poj1523割顶-点双联通
    poj3694 边-双连通分量+lca
    poj3177边-双连通分量
    poj3352 边-双联通分量
    Codeforces Round #377 (Div. 2) F
    Educational Codeforces Round 30D. Merge Sort
    洛谷p3369 treap
    hdu3572线性欧拉筛
    HYSBZ
  • 原文地址:https://www.cnblogs.com/sonyye/p/3742101.html
Copyright © 2020-2023  润新知