zoukankan      html  css  js  c++  java
  • 从零开始学习比特币源码-大纲

    前期准备

    基础的C++知识,阅读比特币白皮书,《精通比特币》第二版
    比特币的开发文档

    比特币中本聪客户端源码(原始并且简单的源码),最新版本的比特币代码迭代了太多版本,新手很难一下子弄懂,中本聪发布的第一个版本的代码足够我们入门了。

    计划

    比特币中本聪客户端的代码数量并不庞大,约16000行,但是,总体涉及非常多领域的知识和新概念。
    很容易就陷入代码的海洋不能自拔,看不懂,理解不了。
    我们可以分小块,逐个攻克。为了更容易理解,我们在阅读代码的时候,处理要关心代码的执行流程,也不能离开相关的重要的数据结构

    • 比特币客户端启动,退出
      当我们运行一个比特币客户端的时候,必然有一系列的初始化过程。由于比特币是一个基于C++语言,wxWidgets UI框架的GUI客户端,所以,它的启动流程和我们平时看的不太一样。
      同理,当关闭一个比特币客户端,必然需要进行资源的清理。

    我们可以先简单了解些比特币启动的初始化操作,退出的清理操作,为下一步分析建立信心。

    • 比特币的交易构造
      比特币的主要功能就是将比特币发送给某人。
      首先就需要创建一个交易,交易本身只是谁支付给谁以及他支付了多少的记录。

    • 与其他比特币应用程序沟通
      新创建的交易需要广播给其他连接到比特币网络的应用程序。
      比特币节点之间使用对等协议(p2p)通信,无需中介服务器

    • 挖掘一个区块
      一个比特币的节点接收到足够多的交易后,把它们组合成一个区块,并通过工作量证明。
      然后区块被广播到所有网络。

    • 维护区块链
      一个节点接收到新块,比特币应用程序会尝试先验证所有的交易,验证工作量证明,然后把这个节点链接到上一个节点上面。每个节点都要自己的本地区块链,整个比特币网络以合法的最长的区块链为共识。

    相关资料:

    有关比特币协议如何工作的信息,请参阅原始智能白皮书:
    http://bitcoin.org/bitcoin.pdf

    关于bitcoin.it Wiki的文章:
    https://en.bitcoin.it/wiki/Category:Technical

    特别提及协议规范:

    https://en.bitcoin.it/wiki/Protocol_specification

    协议规则:
    https://en.bitcoin.it/wiki/Protocol_rules

  • 相关阅读:
    log4js 2.X版本配置详解
    ping -c 3 localhost
    children_process.exec 执行 ping命令报错
    淘宝双十一为什么会出现通道拥挤?
    'ascii' codec can't decode byte 0xd6 in position 0
    window 安装grunt
    display:none与visible:hidden的区别 slideDown与
    ztree-demo 2
    ztree-demo
    技术总结PHP+微信
  • 原文地址:https://www.cnblogs.com/bylijian/p/9169306.html
Copyright © 2011-2022 走看看