区块链记账原理

区块链(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 条评论
登录 后参与评论

相关文章

来自专栏友弟技术工作室

通过一个App Demo的演示深入理解区块链运行原理

从字面上看:区块链是由一个个记录着各种信息的小区块链接起来组成的一个链条,类似于我们将一块块砖头叠起来,而且叠起来后是没办法拆掉的,每个砖头上面还写着各种信息,...

3115
来自专栏区块链大本营

最全!写给技术小白的以太坊完整工作原理和运行机制!

2194
来自专栏服务端技术杂谈

比特币脚本

在比特币区块链中,交易不是这么简单,交易实际是通过脚本来完成,以承载更多的功能个,这也是为什么比特币被称为是一种“可编程的货币”。 比特币交易是首先要通过私钥解...

37210
来自专栏liuchengxu

用 Go 构建一个区块链 -- Part 6: 交易(2)

翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行...

1031
来自专栏区块链大本营

20分钟,我用简单的Python代码创建了一个完整的区块链!想学吗?

这是篇技术文,我们会用Python一步步搭建一个完整的区块链。不过,在此之前,咱们还是先说说你什么你该学习如何从零搭建一个区块链。

1041
来自专栏PPV课数据科学社区

区块链技术详解和Python实现案例

区块链可以说是互联网成立以来最重要和最具颠覆性的技术之一。它是比特币和其他加密货币背后的核心技术,在过去几年引起大家广泛的关注。 区块链的核心是一个分布式数据库...

3295
来自专栏区块链入门

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

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

1382
来自专栏极客编程

.netcore如何开发以太坊区块链示例 原

本文描述了在dotNet核心中使用像以太坊这样的区块链平台的过程。目标受众是其他想要从以太坊开始的dotNet开发者。需要了解区块链。在本文中,我们构建了一个完...

1312
来自专栏PPV课数据科学社区

如何用 Python 从 0 开始创建一个区块链?

关键词:区块链、python、 正文如下: 在数字货币盛行的档口,比特币,这币那币到底值不值得信赖呢?也许你像很多人一样感到新奇,想接近它,但只因背后的区块链...

3796
来自专栏java达人

分分钟了解区块链和挖矿

可能比较难懂,这次发一个简版的图文并茂的视频,方便大家理解。里面有数字签名方面的内容,不了解的可以先看这里:数字签名是什么?

980

扫码关注云+社区