1、P2P点对点技术
P2P是一种点对点的网络模型,又称为对等网络,在此网络中的参与者同时扮演服务器和客户端的角色。相比于传统的C/S模型其具有非中心化、可扩展性、健壮性、高性能、负载均衡等等特点。
Client/Server模式 Peer to Peer模式
P2P在区块链中主要解决去中心化的问题。
相比于传统支付系统取消了第三方机构(如银行、支付宝)的存在,实现了节点与节点之间的直接交易。
2、时间戳技术
时间戳是一种具有法律效力的电子凭证,在区块链中引入时间戳来证明数据在某特定时间是存在的。
时间戳在区块链中主要解决“双花问题”。
“双花问题”:指一笔数字现金在交易中被重复使用的现象。
例如在比特币系统中:在每一笔交易发生的那一刻交易数据就会被盖上时间戳,交易被打包进区块并找到具有足够难度的工作量证明后节点会对区块进行广播,当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性。当第一笔交易确认有效后,第二笔交易就无法得到确认,从而解决了“双花问题”。
3、共识机制
共识机制在区块链中主要解决“拜占庭将军问题”。
区块链中的“拜占庭将军问题”:诚实节点如何在已有恶意节点的情况下达成一致协议。
区块链本质上是一种对等的分布式系统, 所有节点共同保障系统的正常运行. 在这种分布式系统中,
由于去中心化而带来的不能信任任意参与者、可能存在恶意节点、各方利益不一致导致数据分歧等问题, 为了防范这些潜在的威胁, 区块链系统需要一种共识机制来使各个节点达成共识, 保证数据的最终一致性。目前常见的共识机制有:POW(工作量证明)、POS(权益证明)、DPOS(股份授权证明)、Casper(投注共识)、Ripple Consensus(瑞波共识机制)、PoET(消逝时间量证明)等。
三种典型共识机制比较:
4、密码学-公钥密码
在公钥加密方案中,密钥分为公钥和私钥,其中公钥可以公开。
- 公钥加密:发送方用接收方的公钥进行加密,接收方用自己的私钥进行解密。
- 数字签名:发送方用自己的私钥对信息进行签名,接收方用发送方的公钥对签名进行验证。
公钥密码在区块链中主要用于标识身份和数字签名。
以比特币系统为例:私钥本质上是32个字节组成的数组,公钥和地址的生成都依赖私钥。有了私钥就能生成公钥和地址,就能够花费对应地址上的比特币。私钥花费比特币的方式就是对这个私钥所对应的未花费的交易进行签名。地址和私钥可对应理解为一个用户的账号和密码。
5、密码学-Hash函数
Hash函数接收一段明文后,以一种不可逆的方式将其转换为一段长度较短、位数固定的散列数据。
其具有以下几个特点:
1、单向性, 由原始数据计算散列数据容易,但是由散列数据无法推导出原始数据。
2、输入的原始数据与输出的散列数据一一对应,任何一个输入信息的变化都必将导致最终输出散列数据的变化。
哈希函数在区块链中保证了整个区块信息的不可篡改。
区块链通过哈希函数对一个交易区块中的交易信息进行运算,并把信息压缩成由一串数字和字母组成的散列字符串。区块链的哈希值能够唯一而准确地标识一个区块,区块链中任意节点通过简单的哈希运算都可以获得这个区块的哈希值,计算出的哈希值没有变化也就意味着区块中的信息没有被篡改。
6、Merkle Tree
Merkle Tree 又称为哈希树,是一种二叉树。最下面的叶节点包含交易数据的哈希值,每个中间节点是其两个孩子节点内容的哈希值,根节点也是由它的两个字节点内容的哈希值组成。其可以应用于快速比较大量数据、快速定位修改、零知识证明等场景。
Merkle Tree在区块链中结合哈希函数来保证交易不可篡改。
区块链利用Merkle树的数据结构存放所有叶子结点的值,并以此为基础生成一个统一的哈希值,区块中任意一个数据的变更都会导致Merkle树结构发生变化。