手把手教你实现简易比特币(Golang版) 第1章 初识比特币与区块链

点此注册【火币交易所】享受更低的手续费
比特币价格未来将破10万元,快速买卖比特币  

1. 比特币发展简史

1、2008年全球金融危机,以美国为首的货币超发引起金融危机,这也就是比特币产生的原因和动机。

  • 2008年金融危机,美国政府无限增发货币(因为有记账权)。
  • 区块链是新型支付体系,区块链网络中的每个人都具有记账权,货币不能超发,整个账本完全公开透明,非常公平。

2、2008年10月,中本聪Satoshi Nakamoto发表比特币论文《bitcoin:A peer to peer electronic cash system》,描述了一种被他称为“比特币”的电子货币及其算法;

  • 中本聪的整体思想是开创性的。其中的技术是已经存在的。P2P、分布式存储、Hash算法、非对称加密等。他将这些技术集成化、系统化、实现了一个可供实践的解决方案。
  • 从发表论文以来,中本聪的真实身份长期不为外界所知,维基解密创始人朱利安·阿桑奇(Julian Assange)宣称中本聪是一位密码朋克(Cypherpunk)。另外,有人称“中本聪是一名无政府主义者,他的初衷并不希望数字加密货币被某国政府或中央银行控制,而是希望其成为全球自由流动、不受政府监管和控制的货币。”

3、2009年1月3日,中本聪开发出首个实现了比特币算法的客户端程序并进行了首次“采矿”(mining)。北京时间2009年1月4日 2:15:05 AM(英国时间约2009年1月3日 18:15:05 PM) 比特币的第一个区块,这就是创世区块产生。

  • 中本聪获得了第一批50个比特币。挖矿奖励比特币数并不是固定的,每产生21万个区块奖励就减半。截止到目前每挖到一个区块奖励为12.5个比特币。
  • 在第一个区块中,没有交易记录。而是将《泰晤士报》2009年1月3日的一条新闻永远记录在了其中。
    • The Times 03/Jan/2009 Chancellor on brink of second bailout for banks
    • 财政大臣濒临第二次银行救助的边缘

http://img.kongyixueyuan.com/1007_aaa.jpg

  • 每个区块都有一个固定的编号,创世区块的编号为0,这个编号叫做该区块的高度,该区块后续区块的个数为区块的深度。

http://img.kongyixueyuan.com/1008_block.jpeg

  • 从0号到第209999号区块的奖励都是50BTC,从21万号到419999号区块的奖励都是25BTC,从第42万个开始奖励是12.5BTC。
  • 比特币区块的产生大约是10分钟,每产生21万个区块大约就需要4年。因此每四年挖矿奖励减半。

http://img.kongyixueyuan.com/1009_%E5%A5%96%E5%8A%B1.jpeg

4、2010年,中本聪销声匿迹,将项目移交给比特币社区的核心成员嘉文.安德烈森。中本聪据信持有约一百万个比特币。目前价值约79.3亿。

  • 中本聪是密码朋克(CypherPunk)组织的成员,强调匿名和隐私,不重视物质。密码朋克的成员约1400人,讨论话题:数学、加密、计算机、政治、哲学。成员中包括很多IT精英。wiki创始人阿桑奇,BT下载作者布拉奇.科恩,万维网发明者蒂姆.博纳斯,Facebook创始人肖恩.帕克。
  • 2010年5月22日,美国程序员拉斯勒用10000个比特币购买25美元的Pizza。这是比特币第一次有了价值,引起轰动。每年5月22日被比特币爱好者成为:比特币披萨日。(当前价值6亿港元的披萨)

##2. 比特币是什么?

1、比特币是加密数字货币,没有现钞,没有比特币实物货币,也没有银行网点;

2、所有账目公开透明、可查询;https://blockexplorer.com/

3、比特币是基于P2P网络的一种分布式系统;

4、比特币是基于非对称加密技术(公开密钥算法)的交易;

5、法币是通过央行来发行,而比特币是通过挖矿产生。

6、比特币的特性

  • 硬通货:比特币是加密数字货币中的黄金。比特币市场价格定位:1比特币>1盎司黄金。目前全球部分国家可以交易
  • 易携带:只需要携带一个私钥即可
  • 隐秘性:只暴露钱包地址,无需任何其他个人信息
  • 无货币超发:通货紧缩
  • 比特币的最小单位是:聪。1聪 = 一亿分之一比特币

##3. 比特币是如何发行的?

比特币不是任何银行或金融机构发行的,使用比特币不需要绑定银行卡,不需要任何身份证明,不需要手机短信认证。只要能上网,只要安装了比特币客户端软件(钱包),就可以转账、收款,甚至是挖矿。比特币的生产就是靠挖矿。

1、挖矿

  • 挖矿是重复计算区块头的hash,不断修改随机数nonce,直到与难度目标值匹配。
  • 挖矿就是在争取记账权,对一段时间内比特币网络中的交易进行确认,并记录在区块链上的过程。
  • 挖矿的人是矿工,挖矿过程就是争取记账的过程;矿工是记账员,区块链是账本,每个区块就是整个账本中的每一个账页。
  • 挖矿成功,比特币系统会新产生一笔比特币,目前是12.5BTC,将次奖励给挖矿成功的矿工。
  • 挖矿成功,矿工争取到了区块的记账权,这10分钟内被打包的所有未确认的交易的手续费都会奖励给该矿工。

2、比特币钱包

“钱包”一词在比特币中有多重含义。

  • 广义上,钱包是一个应用程序,为用户提供交互界面。 钱包控制用户访问权限、管理比特币地址及其密钥、跟踪余额、创建交易和签名交易。
  • 狭义上,即从程序员的角度来看,“钱包”是指用于存储和管理用户密钥的数据结构。
  • 钱包是私钥的容器,一般是通过结构化文件或简单数据库来实现。
  • 一个常见误解是,比特币钱包里含有比特币。 事实上,钱包里只含有钥匙。 “钱币”被记录在比特币网络的区块链中。 用户通过钱包中的密钥签名交易,从而来控制网络上的钱币。 在某种意义上,比特币钱包是密钥链。
  • 比特币钱包只含有密钥,而不是钱币。 每个用户有一个包含多个密钥的钱包。 钱包只包含私钥/公钥对的密钥链。 用户用密钥签名交易,从而证明他们拥有交易输出(他们的钱币)。

3、比特币节点

  • 运行区块链软件的计算机就是一个节点
    • 每个比特币钱包都是一个节点。
  • 全节点
    • 拥有完整区块链账本的节点叫做全节点,负责比特币转账交易的广播和验证。
    • 同步整个区块链并对交易做验证,同时中继区块的在网络上的传播
  • 轻节点
    • 不保存所有区块,依赖全节点做交易验证
  • 挖矿节点
    • 带挖矿功能的全节点。
    • 转账交易发生后由所有节点共同广播至全网,挖矿节点验证该交易正确后会记录至区块链账本。
  • 因为不需要全节点也可以进行比特币转账,所以比特币全节点个数只占全部节点数的一小部分。
  • https://bitnodes.earn.com/ Node Counter是一个分析型的网站,跟踪整个比特币节点。

4、挖矿三部曲:记录、打包、挂链

http://img.kongyixueyuan.com/1010_%E8%8A%82%E7%82%B9%E5%88%86%E5%B8%83.png

##4. 比特币与区块链的关系

1、区块链是比特币的底层技术,比特币是区块链的第一个应用。

2、比特币是钱的话,区块链就是账本,是记录比特币转账记录的。但是区块链不单单是比特币独有,除了数字货币外,区块链将在其他应用领域有更多用武之地。

3、中本聪在其比特币白皮书里面其实并没有提到过区块链(blockchain)这个名词,但是提到了两个概念block和chain。直到2014年金融机构开始重视比特币的底层支撑技术,于是区块链这个概念才被正式确认。

4、区块链并不是新技术,而是一系列技术的集成。包括非对称加密技术、时间戳、共识机制等。几乎所有的技术在比特币出现之前就已经存在了,但是在比特币之前,这些技术都没有产生如此巨大的影响力,所以说比特币是区块链技术的第一个成功的应用。要想学习区块链技术,比特币是绕不开的东西。然而区块链,却并不仅仅是比特币。

5、比特币是世界公认的第一条区块链,也是目前世界上最强壮最安全的区块链。

● 比特币被称为第一代区块链的代表,主要的应用方向是加密数字货币;

● 以太坊称之为第二代区块链,以太坊不仅有自己的加密数字货币(以太币),更主要是一个区块链开发平台,主要的应用方向是开发智能合约和DApp开发;

● 超级账本是第三代区块链,跟加密数字货币没有关系,是面向企业的分布式账本平台,引入了权限管理。

##5. Block和BlockChain

5.1 BlockChain的本质?

区块链的本质是什么?一句话,它是是一个多方参与、共同维护、持续增长的分布式数据库,也称为分布式共享账本。

首先,区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。

其次,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的世界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库。你可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。

最后,所有节点共同维护一条不断增长的链,只能添加记录,记录不可删除、不可篡改;

5.2 区块链的最大特点

区块链没有管理员,它是彻底无中心的。

其他的数据库都有管理员,但是区块链没有。如果有人想对区块链添加审核,也实现不了,因为它的设计目标就是防止出现居于中心地位的管理当局。

正是因为无法管理,区块链才能做到无法被控制。否则一旦大公司大集团控制了管理权,他们就会控制整个平台,其他使用者就都必须听命于他们了。

但是,没有了管理员,人人都可以往里面写入数据,怎么才能保证数据是可信的呢?需要了解区块的设计思想。

  • 以比特币为例,区块链通过时间戳和工作量证明机制,解决了双花和拜占庭将军问题。这就保证了同一笔比特币不可能被花费两次,并且在这整个去中心化的区块链网络中,可以让节点保持一致性。
  • 非对称加密机制保证私钥的安全性,时间戳保证区块按顺序链接成链,工作量证明机制解决了在去中心化系统中如何公平地分发比特币的问题。
  • 区块链具有匿名性、去中心化、公开透明、不可篡改等特点。所以区块链被誉为制造信用的机器,实现机器信任;。
  • 区块链本质上解决了信任和价值传递。这种强信任背书的情况下,任何人没有能力,也没有必要质疑数据的质量和真实性。

5.3 Hash

这里,你需要理解什么叫 Hash,这是理解区块链必需的。

hash是一种算法, 是将文本转换成具有相同长度的,不可逆的杂凑字符串散列(很多资料也叫指纹或叫消息摘要Message Digest)。本身词义"切碎,剁碎"。

hash算法的特点:

  • 能将任意长度的二进制值(明文)映射为较短的固定长度二进制值(Hash值)
  • 不同的明文很难映射为相同的Hash值
  • hash算法最大的特点就是不可逆。

HASH主要用于信息安全领域中加密算法,它把一些不同长度的信息转化成杂乱的128位的编码,叫做HASH值. 也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系。

安全散列算法SHA:

安全散列算法SHA(Secure Hash Algorithm)是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数,包括 SHA-1、SHA-224、SHA-256、SHA-384 和 SHA-512 等变体。主要适用于数字签名标准(DigitalSignature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。SHA-1已经不是那么安全了,google和微软都已经弃用这个加密算法。为此,我们使用热门的比特币使用过的算法SHA-256作为实例。其它SHA算法,