简介
作者在学习虚拟机时突然发现有人提出如何在区块链开发一款轻量型jvm,由于对区块链不太了解,也不理解区块链为什么需要轻量型jvm。恰好最近有空,泡在图书馆找了本书《区块链导论》对相关知识进行了学习。
区块链系统;
特点:
- 去中介化:即没有向用户提供代理服务的机构。区块链通过密码学,共识技术等手段可直接实现"机器信任"而不需要第三方机构 进行信任担保。区块链拓扑网络采用点对点网络,没有专司决策的中央节点(去中心化)
- 可靠性:通过设计共识机制,就算有部分参与节点失效了,区块链系统依旧可以正常运行。
- 可追溯性:为交易和区块标上时间戳。
- 不易篡改性:已经上链的数据将会永远的存储在区块链中,不可删除且极难篡改。(为什么极难篡改:由于区块链系统是一个分布式的存储系统,如果要修改其中某个值,那么就需要修改大部分参与节点的共识直到达到该系统的修改标准,如果节点基数较大的话这样做的成本极高)
- 透明性:交易数据透明性,交易规则透明性。全量节点会同步区块链上所有交易数据。
体系架构:
- 数据结构和账户体系:区块分为区块头(一般存储该区块的元数据)和区块体(存储所有实际的交易结构)两部分。UTXO是比特币引入的一个模型主要由交易构成,每笔交易有多个输入输出内容是比特币数量。区块第一笔交易例外,输出地址是旷工比特币地址,是挖坑奖励。
- 网络通信:P2P网络,区块链网络模型,区块链网络协议。
- 安全体系
- 共识算法:往往由传统分布式一致算法演变而来(RAFT、PBFT .etc)。
- 智能合约:是区块链业务逻辑的载体,本质上是区块链网络中的一段代码,是网络中节点共同监督和遵守的"合同"和"约定"
密码学:
主要讲讲现代密码学:
密码攻击方式:
- 唯密文攻击:密码分析者有一些使用同种加密算法的密文,通过密文尽可能恢复明文或者获取密钥。
- 已知明文攻击:密码分析人员可能不仅获取到密文,甚至获取到了一些明文。通过二者结合进行解密。
- 选择明文攻击:选择被加密明文和待解密密文使用同一密钥加密。
- 选择密文攻击:选择不同被加密密文与待解密的密文使用同一密钥加密
对称型加密模式:
- 发送方和接收方约定一个密钥,在安全信道中传输密钥然后通过公共信道获取密文。
- 特点:算法公开,计算量小,加密速度快,加密效率高。不足:随着使用数量不断增加,难以获取其他人不知道的唯一密钥,双方使用同一密钥,无法保障安全性。
非对称加密算法:
- 加密和解密使用不同算法,由于加密算法是公开的,所以也被称为公钥算法,只有解密算法是私有的。
- 特点:密钥分配简单,密钥保存量少,可以满足互不相识的人之间进行私人谈话时的保密要求,可以完成数字签名和身份验证。
区块链中hash函数(不过多解释)
数字签名:
-
-
即附加在数据单元上的一些数据或是对数据数据单元所做的密码变换。这种数据或密码变换可以被数据单元接受者用于确
-
认数据单元的来源和数据单元的完整性。保护数据不背他人伪造。
-
对等网络:
- 区块链三大技术支持:密码学,对等网络,共识算法。区块链去中心化是对于比特币时期而言的,当下区块链更多突出的是可信任特点和价值维护作用,网络组也更加灵活。
- 对等网络概述:是一种在IP网络之上的应用层的分布式网络,网络参与者即对等节点共享他们拥有的一部分硬件资源,对等网络 中共享资源提供的服务和内容能被对等网络中的对等节点访问,访问不需要经过对等网络外的其他实体。被称为覆盖网络或者端 对端网络。
- 特点:去中心化,可扩展性,健壮性,高性价比,负载均衡性,隐私性。
对等网络的拓扑结构:
- 集中式对等网络
- 全分布式对等网络
- 混合式对等网络
总结
比特币并不等于区块链计数,和以太坊一样,二者都是区块链的应用案例,而对于区块链的开发,目前主流开发语言有cpp, go。Java 由于性能与前二者无法相比,所以并不常用于区块链开发,如之前的NEM(新经币最早的源代码由 Java 百分之百原创编写,但是后来整个架构重构迁移移到了 C++),目前区块链在智慧城市中也有很多的应用,相关内容我将在我阅读玩相关论文后再进行补充。