区块链记账原理

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

哈希函数

在讲区块链记账之前,先说明一下哈希函数。 哈希函数:Hash(原始信息) = 摘要信息 原始信息可以是任意的信息, hash之后会得到一个简短的摘要信息

哈希函数有几个特点:

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

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

可以看出哈希函数有4个作用:

  • 简化信息 很好理解,哈希后的信息变短了。
  • 标识信息 可以使用AC4635D34DEF来标识原始信息,摘要信息也称为原始信息的id。
  • 隐匿信息 账本是AC4635D34DEF这样一条记录,原始信息被隐匿。
  • 验证信息 假如李四在还款时欺骗说,张三只借给李四10万,双方可以用AC4635D34DEF来验证原始信息

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

区块链记账方法

假设有一个账页序号为0的账页交易记录如下:

账号

入账

出账

余额

备注说明

王二

100

190

收到xxx货款

张三

100

30

xxxx

李四

120

90

170

xxxx

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

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

1

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

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

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

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

1

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

这样第2个区块不仅包含了本账页信息,还间接的包含了第一个区块的信息。依次按照此方法继续记账,则最新的区块总是间接包含了所有之前的账页信息。

所有这些区块组合起来就形成了区块链,这样的区块链就构成了一个便于验证(只要验证最后一个区块的Hash值就相当于验证了整个账本),不可更改(任何一个交易信息的更改,会让所有之后的区块的Hash值发生变化,这样在验证时就无法通过)的总账本。

原文发布于微信公众号 - 深入浅出区块链技术(blockchaincore)

原文发表时间:2017-11-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏汇智网教程

web3.eth.getTransaction

2675
来自专栏吴生的专栏

Java 实现区块链中的区块,BLOCK的实现

区块6个属性的说明-Hash 区块的hash值是整个区块各个内容整体计算出的hash值

440
来自专栏女程序员的日常

51单片机学习1

一、单片机发展 单片机由单板机发展而来 单板机: 将CPU芯片、存储芯片、 I/O接口芯片和简单的I/O设备(小键盘、LED显示器)等装配在一块印刷电路板上,再...

1901
来自专栏区块链大本营

0.166666667小时,教会你深挖以太坊数据层

从架构设计上来说,区块链可以简单的分为三个层次,协议层、扩展层和应用层。其中,协议层又可以分为存储层和网络层,它们相互独立但又不可分割。

725
来自专栏区块链入门

【深度知识】10分钟教会你深挖以太坊数据层

在当下数据爆炸的信息时代,凭借区块链去中心化、点对点和防篡改的特性,“区块链+大数据”已成为研究的热门,可以说,区块链与大数据的结合为今后区块链应用的大规模落地...

1012
来自专栏汇智网教程

如何将任意数据保存到以太坊区块链?

3708
来自专栏汇智网教程

web3.eth.getTransactionReceipt

3628
来自专栏极客编程

用Solidity语言通过以太坊钱包开发hello world示例

使用以太坊钱包开发实现经典的HelloWord智能合约类。本文中,我们将看到如何编写简单的合约并将其部署到区块链上。我们还将通过发送和读取数据来了解如何与我们的...

511
来自专栏区块链大本营

年薪百万的技术面试都问啥?来收下这份必考题葵花宝典吧|套路

话说,区块链行业对人才的缺口越来越大,但由于区块链涉及的知识领域较为广泛,能找到真正有用的人才对每个企业来说都非常不易。

631
来自专栏全栈数据化营销

用python从0开始创建一个区块链,从代码深入理解区块链

本文主要内容翻译自Learn Blockchains by Building One 作者认为最快的学习区块链的方式是自己创建一个,本文就跟随作者用Python...

40010

扫码关注云+社区