因最近需要做一个比特币入门的presentation,所以来简单记录下我对这方面的理解。
比特币定义
比特币(英语:Bitcoin,缩写:BTC 或者 XBT)被部分人点认为是一种去中心化,非普遍全球可支付的电子加密货币,而多数国家则认为比特币属于虚拟商品,并非货币。比特币由中本聪(又译中本哲史)(化名)于2009年1月3日,基于无国界的对等网络,用共识主动性开源软件发明创立。 —— [维基百科]
比特币基本原理
非对称加密(RSA)
传统的对称加密算法,加密与解密都使用相同的密钥。所以如果你有其密钥,你就获得其密文中的信息。
非对称加密算法,有两个密钥,一个是公开密钥(公钥),另一个是私有密钥(私钥),二者具有一一对应的关系。加密方式和解密方式是公开的,公钥用于将原文加密为密文,是公开的,所有人都可以知道。
RSA的安全性在于,私钥掌握在用户手里,只有拥有私钥的人才能够对密文解密,而且也无法通过公钥来得到私钥。这样即使有人窃取了传输信息也无法进行解密,从而保证了传输的安全性。 即:f(原文,公钥)=密文,f(密文,私钥)=原文。
在这种方式下,A想要给B发送信息,只需将所发送的信息用B的公钥进行加密即可,这样就保证了除B之外的其他人均无法知道信息的原内容。
数字签名
数字签名是将公钥密码反过来使用。
A把自己的签名用私钥进行加密,然后发送给B。B通过A的公钥进行解密得到了其数字签名,B因此可以确信,这个信息确实是A所发送的。 即:f(签名,私钥)=密文,f(密文,公钥)=原文。
比特币钱包
每个用户在网上都拥有一对自己的公钥和私钥,根据公钥来生成自己的一个地址。 A想要支付10比特币给B。即A想生成一条这样的交易记录。A只需要提供交易数额(10)、本次交易的双方地址,A的公钥,A的数字签名。我们根据A的公钥可以得到A的地址,进行验证后可以确认A的公钥是否正确,然后用A的公钥去确定数字签名是否正确,从而确定此条交易是否确实是由A发出。
交易记录——区块链
区块链简介
比特币的原理保证了交易的真实性,但这还没有完成。交易数据必须写入数据库之后,才算成立,对方才能真正收到钱。比特币所使用的数据库就是区块链(block chain)。
如图所示,区块链便是由这一个个区块构成的链表,每个区块可以存储一定量的交易条目,它们按照交易的时间顺序进行排列。这是一个分布式的数据库,并不只存储于某个服务器上,任何人都可以查看它或者得到它的副本。
每当一笔交易产生后,它就会被传到网络中,然后矿工会发现这些交易,并由矿工将此交易发布到区块链中,其他矿工验证交易,验证通过后,写入各自的数据库中。
区块链的去中心化就在于它可以由任何人(矿工)进行添加,而无需一个专门的管理员或者管理机构。
比特币的协议规定:挖到新区块的矿工将获得奖励,全网平均10分钟诞生一个区块(这个条件可以由比特币的内部设定来保证如此),区块的大小只有 1MB,最多只能包含2000多笔交易,也就是说,比特币网络每10分钟,最多只能处理2000多笔交易,相当于处理速度为3~5笔/秒。
由于挖到新区块的矿工将会获得奖励,且每比交易可以附加一定的手续费,这个手续费会被矿工得到,这些便是矿工可以得到的奖励。区块回报每产出21万个区块减半一次,大约4年减半一次,最开始(2008年)是50个比特币。显然这个等比数列的和是有限的,到2140年时,将不再有新的比特币产生。而在这之后,矿工们就只能通过手续费获得收入。
区块链是否会有问题
会不会有人交易造假
根据比特币的原理,一笔交易在产生后并不会立刻生效,而是需要写入区块链数据库中才能生效,那在这个过程中,是否会有错误可以出现呢?
比如A现有1个比特币,它先产生“A支付1个比特币给B”,紧接着,由于这个交易还没有立刻生效,A又产生“A支付1个比特币给C”。
根据逻辑来说,这两个交易并不能都成立,根据区块链的原理,到底哪个交易最后会被写入区块链数据库,需要大概一小时后才能确认。也就是说,一个小时前的交易通常是被认为可信的。
会不会有人修改之前的记录
由于区块链是去中心化的,任何人都可以管理。那有没有可能有人修改之前的记录,从而更改自己的余额或者交易呢?
从理论来说,这是可能发生的,但从实际来说,是几乎不会发生的。区块链是一个一个的区块链接起来,但每个区块会通过一种数学方式来保存之前区块的所有信息。这使得如果你要修改某个区块上的交易,它后面的所有区块全都要修改。而新建一个区块所耗费的时间又是很长的。所以除非掌握全网51%的算力,否则是无法做到修改之前的记录的。
因此,在常规情况下,区块链中所存储的交易记录是不可修改的,而且所有人都可以查看它。
共识机制
上面所说的修改记录的问题就是区块链的共识机制。比特币中采用的是工作量证明(Proof-of-Work)。这种共识机制在客观上保证了网络中的区块链账本是真实有效的数据。
总结
比特币与区块链的性质:
- 非对称加密算法保证了比特币交易的真实性
- 比特币的总量是有限的
- 比特币的交易速度是受限的
- 区块链是去中心化的,没有管理员。
- 区块链的共识机制保证了其之前的记录无法被修改
以上便是我总结的比特币与区块链的基本原理,才疏学浅,错漏之处,还望指正。