区块链及比特币学习总结
一、比特币
1.1 比特币特点
1.1.1 去中心化
基于分布式技术,整个网络的用户共同维护交易区块链。
1.1.2 基于共识协议(共识协议是让各个节点积极参与的一种激励机制)
比特币使用了POW(工作量证明协议)共识协议。
流程:
第一个区块为创世区块,每隔十分钟会产生一个交易区块。(该区块由每一个用户都有一个交易缓冲池,存放十分钟左右的交易数据。然后根据机制的算法计算出一个前面多少位为0的一个数字,然后各个矿机找一个随机数,根据这个随机数计算各个块头的hash,hash值小于这个数字,并广播给各个节点确认,当超过51%的节点确认成功后,该区块便产生成功进入区块。系统会分配给挖矿者一定数量的比特币【开始为50个,每个四年减半】,并且旷工还能获取确认成功的手续费。)(注意:每个区块入链后,至少需要再产生5个区块才能有效。因此会带来分叉的问题。)
1.1.3 智能合约
智能合约是一种脚本语言,比特币产生时该脚本就产生了共有166种命令格式,常用命令5种。他是交易结构的一部分,当满足预设值的条件,交易自动执行。
1.2 比特币结构分析
每一个区块的结构图
1.2.1主链hash链
是由每个区块的块头中的存放的前一区块的hash值链起来的一个hash链表。每一个区块都记录了一个时段是交易记录
1.2.2 merkle树(交易的hash二叉树)
每一个区块体由一个merkle树组成,每一个叶子节点为一个交易,根节点如图为所有交易的hash,根节点的hash也会存在区块头中。
1.2.3 交易结构体
主要包括:
1.产量交易(Generation)
每个Block都对应一个产量交易(Generation TX),该类交易是没有输入交易的,挖出的新币是所有币的源头。
2.合成地址交易(Script Hash)
该类交易的接收地址不是通常意义的地址,而是一个合成地址,以3开头,需要几对公私钥一起生成合成地址,在生成过程中可以指定,几对公私钥中的几个签名以后,就可以消费该地址的比特币。
3.通用地址交易(PubkeyHash)
结构体
交易部分 |
脚本 基本是基于智能协议脚本,写的当判断条件完成时自动执行交易记录 |
交易部分(里面的公钥和签名值是我自己查资料的理解,培训这一点模糊带过)
版本号 |
交易输入个数 |
交易输入 前一交易hash 前交易索引 接受者公钥长度 接受者公钥 序列 |
交易输出个数 输出数值 输出者私钥签名值长度 输出者私钥签名值 |
交易输出 |
时间戳 |
1.3 挖矿机制
挖矿的本质是创建区块链中的一个区块,并且让个节点共同参与论证的一种共识机制。当完成区块的建立后奖励创建者响应的比特币作为报酬。
1.4 小计
个人认为比特币构建了一个非常公平的虚拟货币体系,对比传统货币不在有中央银行去管理维护,货币的数量维护完全交给市场,每一个比特币的参与者都可以成为比特币的产生者,也都拥有并且维护比特币的交易记录。同时比特币也是对各个参与的身份信息进行保护,不在交易中展现用户信息,利用密码学技术代替实体的交易者,但是对交易信息又完全公开,交易记录一旦产生不可删除。各个交易区块的建立依据共识机制,全员参与。
二、比特币和区块链的关系
区块链是中本聪提出的比特币中使用的一种解决弱信任的解决方案。
三、区块链
3.1简介:
比特币的技术细节介绍大致也是区块链的技术介绍,基于区块链目前比较成功的架构有以太坊和超级账本。他们使用的区块链的共识机制不同,以太坊使用的POS协议。超级账本的共识机制可以根据应用需要配置。并且他们还扩充了区块链的智能协议。
3.2定义:
区块链是一种多方参与的、分布的、复试账本技术。(太一网提出的,个人认为是符合中国国情的,毕竟去中心化,完全没有管控是很那实现的)
3.3目前的发展
应用:
目前比较成功的是在虚拟货币上的应用,例如比特币,以太币等
开源架构:
比特币、以太币,超级账本(IBM提出)
3.4实际应用需要考虑的问题
要解决什么问题?什么样的场景中使用?那些数据上链?如何解决数据同步带来的网络冗余?使用区块链技术是否真的比传统中心服务更方便更好?
四、区块链和商用密码
目前区块链个人身份使用的ECC的密钥对,同SM2算法一直同根,我们可以针对某个开源框架,修改他的签名结构,将原先使用的160位的ECC方法,使用SM2算法替换。完成符合商用密码使用的区块链底层框架,据了解目前国内区块链开发还没有公司专门做这个方面,都是沿用160的ECC算法。