哈希
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。前端可通过哈希来标识文件的变化,进而应用在缓存中,比如通过给js、css资源链接后加上哈希<script src="http://d3js.org/d3.v3.min.js?20181208"></script>
,下次浏览器再访问时一样的哈希值则不会再请求资源,而是直接使用缓存。在区块链中,每个区块存储有自己特定的哈希(用sha256哈希)以及上一个区块的哈希,以此作为唯一标识并且连接区块。哈希具有以下特点:
- 正向快速:一样的明文会转换成固定的哈希
- 逆向困难:无法通过哈希逆向解析出明文
- 输入敏感:明文的一丁点改变就会使哈希发生翻天覆地的变化
- 碰撞避免:不一样的明文的哈希值不会重复
共识机制
去中心化就像是没有了领导,大家没有统一的规则证明自己的工作量,有的人会报高有的人会报低,因此出现了共识机制
- POW 工作量证明:形象地说就是大家一起搬砖,谁搬砖得多就证明谁的工作量多,区块链中的应用就是出一道数学题,谁先暴力破解出来了则证明谁的工作量大,缺点是比较耗时
- POS 权益证明:就像是股东机制,谁持的股份大谁就有决定权,缺点是每个人都要认证股份大小,比较耗性能
- DPOS 代理权益证明:像现在的人民代表大会制度,会选取人民代表处理事情一样节点选出超级节点,缺点是会混入黑盒交易,恶意买通内部人员的选举票
非对称加密
互联网上传送信息时通常要对信息进行加密,防止黑客篡改信息内容。主要的加密方法有三种
- 映射加密:这是比较古老的,比如把信息中的a改为z,把b改为y。这种破译比较简单
- 对称加密:发送方通过私钥加密信息,接收方通过发送方的私钥解密信息,缺点显而易见,发送信息时必须通知对方自己的私钥,有泄漏风险而且比较麻烦。AES就是采用这种加密方式
- 非对称加密:每个人都有自己的一个公钥和一个私钥,私钥可以算出公钥并且只有自己知道,公钥所有人都知道,发送方将信息与自己的私钥公钥相结合发送,接收方通过发送方的公钥进行解密,以此认证发送者的唯一性。RSA就是非对称加密
容错
比较著名的是拜占庭将军问题。几个将军必须协议好统一时间进攻同一个地方,如果其中有一个已经叛变了没有一起进攻则会导致失败。因此我们的区块链也要进行容错,防止一个节点出错被黑了发送错误的信息。这里可以采用某个特定值作为容错值。
P2P(点对点)
就像通信中的网状网络,迅雷、电驴等上面用户存储的小电影是分布式存储的,比如完全去中心化的DHT的Kademika网络
其他
分布式、地址、区块、DAPP、智能合约(符合一定条件逻辑自动执行的代码)、钱包、CAP原理、Paxos、raft算法、Merkle树(用来计算哈希)、拜占庭容错
网友评论