区块链·理解分布式记账

Netkiller Blockchain 手札

本文作者最近在找工作,有意向致电 13113668890

Mr. Neo Chan, 陈景峯(BG7NYT)

中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com>

文档始创于2018-02-10

版权 © 2018 Netkiller(Neo Chan). All rights reserved.

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

内容摘要

这一部关于区块链开发及运维的电子书。

为什么会写区块链电子书?因为2018年是区块链年,区块链是一个风口,前几个风口我都错过了。例如web2.0, 云, 大数据等等,都从身旁擦肩而过。所以我要抓住这次。

这本电子书是否会出版(纸质图书)? 不会,因为互联网技术更迭太快,纸质书籍的内容无法实时更新,一本书动辄百元,很快就成为垃圾,你会发现目前市面的上区块链书籍至少是一年前写的,内容已经过时,很多例子无法正确运行。所以我不会出版,电子书的内容会追逐技术发展,及时跟进软件版本的升级,做到内容最新,至少是主流。

这本电子书与其他区块链书籍有什么不同?市面上大部分区块链书籍都是用2/3去讲区块链原理,只要不到 1/3 的干货,干货不够理论来凑,通篇将理论或是大谈特谈区块链行业,这些内容更多是头脑风暴,展望区块链,均无法落地实施。本书与那些书籍完全不同,不讲理论和原理,面向应用落地,注重例子,均是干货。

写作原则,无法落地的项目作者绝对不会写。凡是写入电子的内容均具备可操作,可落地。

电子书更新频率?每天都会有新内容加入,更新频率最迟不会超过一周,更新内容请关注 https://github.com/netkiller/netkiller.github.io/commits/master

本文采用碎片化写作,原文会不定期更新,请尽量阅读原文 http://www.netkiller.cn/blockchain/index.html

您的打赏是我的写作动力:http://www.netkiller.cn/blockchain/donations.html

接受 ETH 打赏:0x3e827461Cc53ed7c75A29187CfF39629FCAE3661

1.10. 理解分布式记账

首先说明区块链中提到的账本与记账等等词汇是与会计无关的词汇。

我们传统理解的账本是指二位表格,记录某年某月产生的费用。

时间        | 用途| 金额		
-----------+-----+-----
2018-05-02 | 借  | 500
2018-05-10 | 还  | 500
2018-05-15 | 借  | 500
2018-05-20 | 借  | 500

如果账目比较多,可以拆账,将不同分类的账目,放到特定账本中。另外二位表格可以通过时间索引或者分类索引等等,快速找到一笔账目。

区块链是怎么记账的?

    +----------------+     +----------------+     +----------------+     +----------------+
    | blockNumber 0  |     | blockNumber 1  |     | blockNumber 2  |     | blockNumber 3  |
    | hash: 0x1      |<--- | hash: 0x2      | <---| hash: 0x3      | <---| hash: 0x4      |
    | parent:0x0     |     | parent:0x1     |     | parent:0x2     |     | parent:0x3     |   
    +----------------+     +----------------+     +----------------+     +----------------+
    |时间:2018-05-02 |     |时间:2018-05-10 |     |时间:2018-05-15 |     |时间:2018-05-20 |
    |用途:借         |     |用途:借         |      |用途:借         |     |用途:借         |
    |金额:500        |     |金额:500        |     |金额:500        |     |金额:500        |
    +----------------+     +----------------+     +----------------+     +----------------+

区块链可以理解为是传统账本的行列矩阵做这转换,每个事件收尾相连指向上一个区块地址形成链状,区块链不能通过分类拆分账本,所有账目全部在一个链条上。

什么是分布式记账?上面链状的数据结构将保存在所有的区块链节点上,形成分布式集群,这就是分布式记账。

虽然区块链解决了分布式记账,但是也有很多弊端。我说过互联网上很多关于区块的文章都是臆想,纸上谈兵,他们根本没有实操经验。

下面我们讲讲区块链账本存在的问题

  • 区块链不能键索引,无法快速搜索快中的数据,必须一台区块链以外的中心化技术,例如搜索引擎,数据库。例如 etherscan.io 就是将以太坊上的区块重新入库,借助数据库实现数据检索。
  • 区块链只能顺序检索,中心化账本我们汇总账目只需做 sum 求和操作,而区块链必须从 blockNumber 0 开始一次向后读取,运算成本极高。
  • 所有账目均在一个链上,不同分类混在一起,彼此相连。 +----------------+ +----------------+ +----------------+ +----------------+ | blockNumber 0 | --> | blockNumber 1 | --> | blockNumber 2 | --> | blockNumber 3 | --> 时间轴 +----------------+ +----------------+ +----------------+ +----------------+ |时间:2018-05-02 | |时间:2018-05-10 | |时间:2018-05-15 | |时间:2018-05-20 | |分类:A | |分类:B | |分类:A | |分类:A | |金额:500 | |金额:500 | |金额:500 | |金额:500 | +----------------+ +----------------+ +----------------+ +----------------+
  • 无法归档 中心化数据库,可以归档一段时间内的数据,归档数据是冷数据,几乎不会再查询,这样一来中心数据库中的数据量减少,剩下的热数据处理起来非常快。我们有很多技术处理归档数据,将归档数据备份到存储介质上的解决方便有很多,也非常成熟。例如压缩,去重复等等,以减少存储成本开销。 而区块链从诞生之日起到今日所有数据必须放在热数据区。任何新增节点都必须从区块0开始同步,并且保持每日同步到最新区块,否则将无法交易。区块一直在膨胀,随时区块链的普及,交易量猛增,总有一天将不堪重负。 例如BTC(比特币) 安装钱包后,需要从92年的0区块开始同步,至少需要一周的时间,并且占用你硬盘203G的空间。 ETH(以太坊)采用 fast 模式也需要200G的磁盘空间同步一周左右。就算采用最新的 light 模式,同步过程中经常出现中断,没有peers节点,断断续续,体验极度不好。
  • 区块链没有事务处理 因为区块链是首尾相连的,只能在尾部添加新区块,区块无法修改,所以区块链无法做事务处理。 Block 0 -> Block 1 -> Block 2 -> Block 3 -> Block 4 试想一下上面的 Block 2 回滚会怎样?如果 Block 2 回滚,Hash 值产生变化,后面所有区块都作废。所以区块链无法实现事务处理。 超级账本(Hyperledger Fabric)记不了帐 Hyperledger Fabric 中文名称叫超级账本,这个翻译坑害了无数人。 Hyperledger Fabric 跟账本没有任何关系。 实际工作中我使用 Hyperledger Fabric 实现了类似以太坊ERC20代币的功能,发行一个代币后将发行金额写入一个总账,然后从总账中项其他账号转账,用户消费后将金额从用户转会总账。 问题来了,因为超级账本没有事务处理,也无法串行执行每一笔操作,当并发执行的时候,账目出现混乱。 区块链无法将一组业务逻辑放到事物中执行。这样在实际的开发中我们只能依赖应用层,只能在应用层上实现事物锁的功能。由于区块存储在多个节点上,共识时间无法预计,不知道 stub.PutState(异步写入)执行完成的具体时间,无法达到100%无误。对于财务数据来不得半点马虎,我还是决定放弃这个功能,专为传统数据库。 所以超级账本记不了
  • TPS:Transactions Per Second(每秒传输的事物处理个数) 1. 区块链是异步执行,你无法知道什么时候才能完成这笔交易,无法实现瞬间到账。 2. 交易阻塞
  • 蛋疼的 gas 费用

总结:用区块链记账很蛋疼。

您的打赏是我的写作动力:http://www.netkiller.cn/blockchain/donations.html

接受 ETH 打赏:0x3e827461Cc53ed7c75A29187CfF39629FCAE3661

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏jouypub

区块链共识算法

  依赖机器进行数学运算来获取记账权,资源消耗相比其它共识机制高、可监管性弱,同时每次达成共识需要全网共同参与运算,性能效率比较低,容错性方面允许全网50%节点...

1864
来自专栏IT派

比特币黑客攻击手段大揭秘

最近一段时间,比特币彻底火了。无论是新闻媒体、行业龙头还是资本市场都对其反映敏锐,可以看出比特币正站在风口浪尖,受到各方高度关注。然而,当涉及到安全方面时,比特...

1163
来自专栏区块链入门

第十七课 【ERC721实践】迷恋猫从玩耍到开发

玩迷恋猫游戏,玩家需要在以太坊区块链上下载到这款游戏的APP,游戏开始系统会赠送玩家一只喵。刚推出时是送猫的,现在只有活动时才赠送。它让你沉迷于吸猫,然后当你无...

1564
来自专栏区块链大本营

黑客攻击币安API完全调查:我们发现了比价值96比特币的SYS更有意思的信息

在 7 月 4 号的币安 API 被攻击本该是一件大事,当天,有 11 个名为 SYS 的 Token 在币安交易所内以 450 万人民币(96 个比特币)的价...

773
来自专栏区块链大本营

黑客来袭!手把手带你深挖区块链安全漏洞

以下为吴家志在CSDN主办,区块链大本营、柏链道捷、极客帮创投协办的「第 9 期 CSDN 区块链技术沙龙」上的发言内容,区块链大本营在不改变原意的情况下作了精...

1241
来自专栏信安之路

浅谈以太坊智能合约的安全漏洞

智能合约的安全是区块链安全中的热议话题,但其实 89% 的智能合约都存在漏洞,本文将浅谈以太坊智能合约出现过的一些安全漏洞。

1720
来自专栏月色的自留地

比特币核心概念及算法

1855
来自专栏智能计算时代

区块链概况:什么是区块链

定义 区块链技术自身仍然在飞速发展中,目前还缺乏统一的规范和标准。 wikipedia 给出的定义为: A blockchain —originally, bl...

4246
来自专栏FreeBuf

漏洞预警 | SMT智能合约整型溢出漏洞

SmartMesh Token是基于Ethereum的合约代币,简称SMT。Ethereum是一个开源的、公共的分布式计算平台,SmartMesh代币合约Sma...

793
来自专栏FreeBuf

区块链智能合约漏洞,想说补你不容易

攻击者可以通过发布包含恶意代码的“智能合约”,经过一系列的操作之后,控制区块链网络中的所有节点,从而为所欲为。从The DAO到BEC,SocialChain,...

1073

扫码关注云+社区

领取腾讯云代金券