一直以来就很喜欢区块链技术,趁着年前的这段时间又重新学习了下,记录下里面的要点。

比特币与区块链
比特币是一种发行总数固定的虚拟货币,其底层依赖的技术就是区块链。通过比特币可以发行不同的虚拟货币,但是这些虚拟货币的底层技术都是区块链
前导知识
1. 加密
在密码学中,加密(英语:Encryption)是将明文信息改变为难以读取的密文内容,使之不可读的过程。只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容
2. 公钥与私钥
在密码学中,密钥(key,又常称金钥)是指某个用来完成加密、解密、完整性验证等密码学应用的秘密信息。在对称密码学(或称密钥密码学)中,加密和解密用的是同一个钥匙,因此钥匙需要保密。而在公钥密码学(或称非对称密码学)中,加密和解密用的钥匙不同:通常一个是公开的,称为公钥;另一个保密,称为私钥。
3. 哈希
Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。 这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。一般常用的哈希算法有两个算法族,md5和sha,具体见哈希算法与MD5、SHA
4. Merkle Tree

1,首先是它的树的结构,Merkle树常见的结构是二叉树,但它也可以是多叉树,它具有树结构的全部特点。
2,Merkle树的基础数据不是固定的,想存什么数据由你说了算,因为它只要数据经过哈希运算得到的Hash值。
3,Merkle树是从下往上逐层计算的,就是说每个中间节点,都是根据相邻的两个叶子节点组合计算得出的,而根节点是根据两个中间节点组合计算得出的,所以叶子节点是基础。
5. Gossip 算法
消息同步算法,又叫流言算法。Gossip 过程是由种子节点发起,当一个种子节点有状态需要更新到网络中的其他节点时,它会随机的选择周围几个节点散播消息,收到消息的节点也会重复该过程,直至最终网络中所有的节点都收到了消息。这个过程可能需要一定的时间,由于不能保证某个时刻所有节点都收到消息,但是理论上最终所有节点都会收到消息,因此它是一个最终一致性协议。
区块链流程
- 节点加入与启动
- 节点产生交易,交易包括转账费用与记账权节点(矿工)的手续费,并广播。其中手续费不是必须的
- 其余节点收到广播并验证交易,合法交易记录到本地
- 节点执行Mining过程,获取记账权的节点可以打包交易形成区块(区块链会对打包区块的节点发放奖励),会优先选择包含手续费的交易
- 拥有记账权的节点打包好区块后广播
- 其余节点收到广播将区块验证后写入到本地
比特币的总数和来源
比特币总量:2100万个。区块链诞生之初,每10分钟产生一个区块,每个区块奖励50枚比特币,之后每隔4年减半,目前每一个区块奖励6.25枚比特币;基于上述机制,比特币前4年一共产生1050万个比特币,第二个4年产生525万枚,依次往后,算出比特币的总数量为2100万个。
比特币网络平均每十分钟打包一个区块,每个区块上限为1M,如果这个区块被填满,该时段内的多出来的交易信息只能等下一个区块。由于交易频率不固定,所以比特币的区块大小不同。
- 最开始比特币完全来自于区块链对矿工的奖励
- 后续比特币来于交易和手续费,交易手续费收入:手续费收入来自转账的用户,用户每转账一次,需支付一定的比特币作为手续费。传统金融领域,手续费支付给银行,比特币系统中,手续费支付给矿工;比特币网络手续费可以自行设置,拥堵时可上调手续费,矿工会优先打包手续费高的交易。
- 最后区块完全挖完后只能来自交易于手续费。
比特币双花
比特币分叉
区块链的实质
一种点对点的分布式账本。去中心化/防篡改/可追述是其特点,区块链的本质是通过一系列技术解决信任问题。
比特币的实质
电子货币/自由/共识/炒作?