区块链记帐原理

本文首发于深刻浅出区块链社区
原文连接:区块链记帐原理原文已更新,请读者前往原文阅读算法

区块链(1.0)是一个基于密码学安全的分布式帐本,是一个方便验证,不可篡改的帐本。
一般认为与智能合约相结合的区块链为区块链2.0, 如以太坊是典型的区块链2.0
不少人只了解过比特币,不知道区块链,比特币实际是一个使用了区块链技术的应用,只是比特币当前太热,把区块链技术的光芒给掩盖了。区块链才是将来,指望各位开发人员少关心币价,多关心技术。
本文将讲解区块链1.0技术是如何实现的。安全

哈希函数

在讲区块链记帐以前,先说明一下哈希函数。
哈希函数:Hash(原始信息) = 摘要信息
原始信息能够是任意的信息, hash以后会获得一个简短的摘要信息分布式

哈希函数有几个特色:函数

  • 一样的原始信息用同一个哈希函数总能获得相同的摘要信息
  • 原始信息任何微小的变化都会哈希出面目全非的摘要信息
  • 从摘要信息没法逆向推算出原始信息

举例说明:
Hash(张三借给李四100万,利息1%,1年后还本息 .....) = AC4635D34DEF
帐本上记录了AC4635D34DEF这样一条记录。学习

能够看出哈希函数有4个做用:区块链

  • 简化信息

很好理解,哈希后的信息变短了。spa

  • 标识信息

可使用AC4635D34DEF来标识原始信息,摘要信息也称为原始信息的id。code

  • 隐匿信息

帐本是AC4635D34DEF这样一条记录,原始信息被隐匿。blog

  • 验证信息

假如李四在还款时欺骗说,张三只借给李四10万,双方能够用AC4635D34DEF来验证原始信息图片

哈希函数的这4个做用在区块链技术里有普遍的运用。
(哈希函数是一组函数或算法,之后会发文章专门介绍哈希)

区块链记帐方法

假设有一个帐页序号为0的帐页交易记录以下:
图片描述

记帐时间为:2017-10-22 10:22:02

区块链在记帐是会把帐页信息(包含序号、记帐时间、交易记录)做为原始信息进行Hash, 获得一个Hash值,如:787635ACD, 用函数表示为:

Hash(序号0、记帐时间、交易记录) = 787635ACD

帐页信息和Hash值组合在一块儿就构成了第一个区块。

比特币系统里约10分钟记一次帐,即每一个区块生成时间大概间隔10分钟

在记第2个帐页的时候,会把上一个块的Hash值和当前的帐页信息一块儿做为原始信息进行Hash,即:

Hash(上一个Hash值、序号一、记帐时间、交易记录) = 456635BCD

这样第2个区块不只包含了本帐页信息,还间接的包含了第一个区块的信息。依次按照此方法继续记帐,则最新的区块老是间接包含了全部以前的帐页信息。

全部这些区块组合起来就造成了区块链,这样的区块链就构成了一个便于验证(只要验证最后一个区块的Hash值就至关于验证了整个帐本),不可更改(任何一个交易信息的更改,会让全部以后的区块的Hash值发生变化,这样在验证时就没法经过)的总帐本。

记帐有成本,想了解节点为何要记帐,请看这篇:比特币如何挖矿(挖矿原理)-工做量证实

深刻浅出区块链 - 系统学习区块链,打造最好的区块链技术博客。

☛ 个人知识星球为各位解答区块链技术问题,欢迎加入讨论。

☛ 关注公众号“深刻浅出区块链技术”第一时间获取区块链技术信息。

相关文章
相关标签/搜索