搜尋

首頁  >  問答  >  主體

c++ - 比特币最近这么热,有人分析过其源码么?

从github上clone了bitcoin的源码,看src文件里大多是cpp文件,应该是用c++写的,但是没找到main函数,如果我想在windows上编译运行,如何做呢?有人分析过源码么?

伊谢尔伦伊谢尔伦2804 天前1018

全部回覆(2)我來回復

  • 高洛峰

    高洛峰2017-04-17 11:15:12

    文章來自知乎:深入淺出比特幣 作者:Wu Hao

    • 第負一章 回饋

      • 第一節 風險警告
      • 第二節 刪節版
    • 第零章 玩具
    • 第一章 帳單

      • 第一節 撕紙遊戲
      • 第二節 帳單鏈
      • 第三節 遊戲規則
      • 第四節 2100萬
    • 第二章 支付

      • 第一節 匿名
      • 第二節 點對點
      • 第三節 重要的細節
    • 第三章 沙發 --總結以及FAQ

      • 第一節 主觀臆斷
      • 第二節 客觀事實
      • 第三節 結語

    作者在 2013-11-22 新增了「第負一章 第二節 刪節版」,並提供了一段原始碼:

    function mine()
    {
        while(true)
        {
            longestChain = getLongestValidChain()
    
            -- A number that changes every time, so that you don't waste time
            -- trying to calculate a valid blockHash with the same input.
            nonce = getNewNonce()
    
            currentTXs = getUnconfirmedTransactionsFromNetwork()
    
            newBlock = getNewBlock(longestChain, currentTX, nonce)
    
            -- http://en.wikipedia.org/wiki/SHA-2
            -- and this is what all the "mining machines" are doing.
            blockHash = sha256(newBlock)
    
            if(meetReqirements(blockHash))
            {
                broadcast(newBlock)
                -- Now the height the block chain is incremented by 1
                -- (if the new block is accepted by other peers),
                -- and all the TXs in the new block are "confirmed"
            }
        }
    }
    ////////////////////////////////////////////////// ///////////////
    function sendBTC(amount)
    {
        sourceTXs = pickConfirmedTransactionsToBeSpent(amount)
        tx = generateTX(sourceTXs, targetAddrs, amount, fee)
        signedTx = sign(tx, privateKeysOfAllInputAddress)
        broadcast(signedTx)
    }
    ////////////////////////////////////////////////// ///////////////
    

    現在雖然沒有分析,不過靜待作者的更新吧。

    ----2013-12-10 13:16 更新---

    非常遺憾,作者的回信是:「沒有繼續寫的打算」。

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 11:15:12

    MAIN函數在 bitcoinGUI.cpp 或bitcoind.cpp 裡面。 看看DOC/BUILD-WIN.MD裡面有編譯方法

    回覆
    0
  • 取消回覆