比特币区块链学习笔记

学习一个新的知识点最有效的方式应该是带着问题主动学习
特别推荐想了解比特币区块链原理的朋友阅读这篇文章长文解惑:区块链与比特币
比特币系统就是去中心化理念和区块链技术的一个优秀示范项目
然而比特币存在先天不足:

  1. 全节点占用存储空间越来越多,个人挖矿几乎不可能;
  2. 交易确认时间长;
  3. 产量固定,紧缩货币,不能满足日益增长的交易需求;
比特币不能代表区块链,区块链也不是比特币。 区块链解决的核心问题是信任问题。
比特币基本原理
【比特币区块链学习笔记】数字指纹和非对称加密
如何确保信息的完整性? 二进制(计算机语言)(一个英文字母或数字对应8位即一个字节,1bit=1二进制位,8bit=1byte,一个中文字符对应16bit)缺点:原始信息越长二进制编码也越长
哈希值(长度固定,不能反向计算出原始信息,即无法破解)就好像我们每个人的指纹一样,在手指那么大的地方保存的信息几乎可以和我们本人一一对应,更准确的说法是数字摘要
只要有稍微的变化得到的结果完全不同
比特币用到的是第二代算法 SHA-256算法,指纹长度固定为256位,仍然太长
SHA-256到十六进制指纹进一步缩短
这样信息完整性的验证变为:
原始信息-SHA-256-指纹 = 收到信息+SHA-256编码? 一致则完整,不一致则可能被篡改过
如何确保信息的真实性? 给指纹加密:非对称加密
提到非对称加密,得先说什么是对称加密,所谓对称加密就是加密和解密的方法完全一样。
比特币采用椭圆曲线算法(ECC算法)确保信息的真实性
比特币原理深入
两个问题
1.账本同步问题 2.如何防止同一个比特币被重复使用? 为了解决以上两个问题,区块链解决方案登场!
区块的规则(至少包含以下信息):
前一个区块的数字指纹+固定信息+收到的交易记录+一个随机数
挖矿的难度 挖矿过程产生新的区块,获得比特币奖励
中本聪规定:新区块的数字指纹(一个256位的二进制数)的前72位必须全部为0
因为二进制位每一位只能有两种可能性,0或者1,所以凑出一个奥数的可能性是凑出一个奥数的可能性是2的72次方分之一,也就是:1/4722366482869645213696
它大约就是4.7万亿亿分之一。换句话说,就是平均要进行4.7万亿亿次SHA计算,才可能得到一个奥数,可见每一个奥数的金贵。
怎么保证比特币的产出速度大致恒定?
随机数要求前72位全部为零,如果改为73位难度翻一倍,如果72位减为71,难度减半,但是这种调节较为粗糙,只能翻倍或者减半。
交易效率
因为这个随机数太难找所以每个区块平均要10分钟才能生成一个,所以关于“何时同步帐本”的问题就基本解决了,只要三四分钟的时间,足以让所有在线的电脑同步到这个区块,而那些不在线的电脑或者第一次运行客户端的电脑,上线后第一件事,就是从临近节点上获取最新的账本。
交易额越小反而费率越高。这是因为,交易手续费除了鼓励矿工挖矿,还有一个非常重要的功能,就是防止有人恶意发布大量的小额交易造成信息拥堵。
怎么处理两台矿机同时找到随机数同时完成记账并生成新区块呢?
系统给出的规则:节点优先收到哪个区块,就接到哪个区块上,同时放弃另一个区块,然后全网广播,即比特币网络永远只承认更长的那条分支。
临时分叉的规则:只要分支一样长就暂时保留,直到出现两个分支不一样长时,就放弃短于两个区块的,保留长的。
结论
比特币不是区块链,它只是区块链技术的一个具体应用

    推荐阅读