首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

比特币BTC,开山鼻祖中本聪

《比特币白皮书》

http://www.8btc.com/wiki/bitcoin-a-peer-to-peer-electronic-cash-system

原文作者:中本聪(Satoshi Nakamoto)

中本聪提出了一个完全通过点对点技术实现的电子现金系统,它使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。所以比特币系统是一个支付系统的解决方案,要解决的两个主要问题,一个是去中心化的p2p系统,一个是支付要解决的双花(重复支付)问题。

1.链(Chain)怎么形成?

由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录。

竞争记账:每个节点都可以争取记账,看谁最先计算出满足条件的哈希(HASH)值。

涉及技术:共识机制(POW\POS\DPOS\POOL)、密码学(SHA256算法)

广播:P2P(peer-to-peer的缩写)系统

涉及技术:通信协议

核对:全网其他有效节点核对该区块记账的正确性,并盖上时间戳,确认区块合法。

涉及技术:时间戳

存储:账簿是分区块存储,区块与区块相连形成链状结构。

涉及技术:分布式结构、信息技术

备份:每个参与交易者都是区块网络的节点,每个节点都有一份完整的公共账簿备份,也就是分布式账本。

涉及技术:区块化数据库(默克尔树)

2.区块(Block)怎么形成?

记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识。

一个区块相当于一张纸,分两个部分:区块头(记录当前区块的元信息)和区块体(实际数据)。

交易就是点对点转账,在确认交易真实性后,将交易数据写入数据库(区块),才算交易成立,对方才能真正收到钱。产生一个区块时间为10分钟,通过动态调整难度系数,来控制区块的产生速度。

根据比特币协议,一个区块的大小最大是1MB,而一笔交易大概是500字节左右,因此一个区块最多可以包含2000多笔交易。矿工负责把这2000多笔交易打包在一起,组成一个区块,然后计算这个区块的Hash。然后矿工以此获得奖励,并记入当下这个区块第一条交易,新增比特币生效。

所谓Hash就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的Hash长度是256位二进制数字。而且可以保证,只要原始内容不同,对应的Hash一定是不同的。

Hash和区块头一一对应,Hash = SHA256(区块头)。

而矿工的工作是计算区块头中的随机数即nonce的数值,使其满足SHA256(SHA256(Block_Header))

区块头的大小为80字节,由4字节的版本号、32字节的上一个区块的散列值、32字节的Merkle Root Hash、4字节的时间缀(当前时间)、4字节的当前难度值、4字节的随机数(nouce值)组成。区块包含的交易列表则附加在区块头后面,其中的第一笔交易是coinbase交易,这是一笔为了让矿工获得奖励及手续费的特殊交易。

3.交易(Transaction)怎么形成?

一次操作,导致账本状态的一次改变,如添加一条记录。需要解决两个问题:①防止冒用你的名义,②防止双花。

非对称加密(通常使用椭圆曲线算法生成密钥对),就是加密和解密需要两把钥匙:一把公钥和一把私钥。你用私钥加密信息,别人用你的公钥解开,从而证明这个信息确实是你发出的,且未被篡改,这叫做数字签名。非对称加密保证了支付的可靠性,解决了你就是你的问题,防止冒用。

比特币协议规定,申报交易的时候,除了交易金额,转出比特币的一方还必须提供以下数据。

上一笔交易的Hash(你从哪里得到这些比特币)

本次交易双方的地址

支付方的公钥

支付方的私钥生成的数字签名

验证这笔交易是否属实,需要三步。这个就能防止双花。

第一步,找到上一笔交易,确认支付方的比特币来源。

第二步,算出支付方公钥的指纹(所谓指纹,就是一个比较短的、易于传播的哈希值。),确认与支付方的地址一致,从而保证公钥属实。

第三步,使用公钥去解开数字签名,保证私钥属实。

经过上面三步,就可以认定这笔交易是真实的。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180306G0RZX100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券