注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

亿能部落格---观察思维比思维本身更重要

我是回来地球补课的!

 
 
 

日志

 
 
关于我

光行者的存在不在于他们真的能唤醒人类或者改变人类,而在于人类世界走向几近崩溃的时候能够站出来建立一套持久永恒的生活模式。

网易考拉推荐

一段程序看懂比特币原理  

2016-06-16 11:25:02|  分类: 金融股市 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

自从比特币火起来以后,网上对比特币的解释可谓汗牛充栋,纷繁复杂。但对于程序员来说,最直接的方式莫过于直接看程序代码了。嫌比特币代码庞杂没关系,我找到一段简明扼要的代码,用来理解比特币再好不过了。

以下这段程序转自知乎上Wu Hao的回答

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, currentTXs, 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)
}
////////////////////////////////////////////////////////////////

下面是我的解释:

挖矿过程就是不断从比特币网络中获取所有未确认交易getUnconfirmedTransactionsFromNetwork(),把它们打包成一个区块并挂载目前最长的区块链上getNewBlock(longestChain, currentTXs, nonce),然后计算新的区块的散列值sha256(newBlock),如果散列值正好满足挖矿难度了meetReqirements(blockHash),那么就挖矿成功了。所谓挖矿难度,指的是要求的二进制散列值小于某个阈值,阈值越小,挖矿的难度就越大。

付款过程就是把一些有余额的已确认交易拿出来作为发送地址pickConfirmedTransactionsToBeSpent(amount),然后根据目标地址支付一定交易费生成新的交易generateTX(sourceTXs, targetAddrs, amount, fee),并用钱包私钥对交易签名sign(tx, privateKeysOfAllInputAddress),然后广播出去。

原文链接:https://www.byvoid.com/zhs/blog/bitcoin-principle-program

  评论这张
 
阅读(345)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017