[email protected]:~$

  • 区块链的偏见

    刷知乎看到一句话,引以为戒。 世人患作文字少,又懒读书,每一篇出,即求过人,如此少有至者。 - 欧阳修 本想写一写对于状态通道的看法,动笔时又看到了知乎上的一个问题 区块链是否是骗局?它是否有弊端? 最近关于区块链被网上各种炒热,虽然一些国外企业尝试使用区块链技术,但是无论怎么看都感觉很有争议性,区块链是否本身是个骗局?它的本身是否有弊端? 还是因为受国内区块链炒作的影响? 没忍住写了回答,反驳对区块链常见的误解,修改了下凑一篇博客。 一部分人没有思考跟着老师们去当韭菜,一部分人经过肤浅的思考然后认定区块链是个骗局 高票答案充满技术性错误,能看出答主没有看过任何的加密经济文章(我怀疑是不是只从知乎上了解过区块链),凭借自己的理解把区块链生搬硬套到不适合的场景再去否认。然后举出愚蠢的区块链应用例子加以反驳,看似合理,实则毫无逻辑。我能用 P2P 诈骗和神奇百货这些东西来否认掉互联网么? 但是大家都喜欢。因为给群众讲技术是听不懂的。所以谁讲的好就听谁的,李笑来讲得好就买山寨币,另一方讲得好就否认掉区块链。 我不想在答案中包括太多技术细节,所以涉及到了也不会展开解释 否认几个最浅显的谬论 1, 区块链上存的数据是否无法保证真伪?(比如追踪鸡蛋这类农作物的安全) 链上的数据可以使用智能合约来验证(所以不是随便存数据这么简单),现实中的事物则需要有机构作为接口提供验证。 看到这里是不是兴奋了?需要机构不是打了区块链的脸了么?不是去中心化么?吹这么厉害居然不能自动检查鸡蛋是哪只鸡生的? 那么分析下这是不是打了脸了? 有链上的数据验证(合约),链下的接口(不属于区块链的中心化认证机构),这两个机制再加上区块链的去中心化机制的成果,就是任何人可以完全的追踪链上信息,并且这些信息都是开放的有接口获取(可用来编程)。 那么区块链不是也无法保证中心化的认证机构作假么?我们来看看区块链能保证什么: 认证机构发布的所有信息都被记录(有私钥保证是该机构签发,所以不可伪造) 所有人都可以看到区块链上的信息且不可篡改 区块链无法帮鸡接生,但是所有信息公开并不可伪造、不可篡改。所有人的眼睛都能盯着公开的信息,能让监管和检举不诚信的检验机构的成本大幅下降 作为反例,想一想最近的热门事件。中心化机构是否可信?(在没有信息公开和来自群众监督的情况下) 有人反驳,分布式数据库就能做到,那么再思考下分布式数据库能否做到不可篡改和所有人都可见,并且有无动机这样做?最好请把这个已经用来存鸡蛋信息的数据库服务告诉我 2,数据爆炸,区块链不可能保存所有数据 实际上,区块链可以不用保存所有数据。 链上可以只保存摘要和默克尔树的根哈希。可以理解成只保存数据的摘要,具体数据放在链外,并通过默克尔证明来证明数据是共识的一部分(交易发送者,执行了哪些合约,所以和数据在链上并无大区别) 3,区块链浪费资源 从两点来考虑 浪费资源是否是个伪命题?电不用也算是被浪费了 区块链是可以使用 POS 等不消耗大量能源的共识算法的 那为什么十多年了没有见到 POS 的区块链? POS 有理论上的难点,但不代表无法解决,需要时间。而且考虑电能是否被浪费的问题,许多链换成 POS 的动机并没有这么强烈。 再讲下我对区块链落地和场景的看法 为什么几年过去了区块链仍难以落地?(为什么几十年了人类还没登上火星?) 缺少基础设施 缺少链外接口(现实世界资产上链、链上身份验证等),最近已经有多种和法币挂钩的稳定币,也有些机构开始尝试提供链上身份验证的服务 还没有可以让一般人轻松使用的钱包,浏览器等基础软件 资本炒作导致区块链的项目看上去都不靠谱...

  • 实现以太坊第三月

    系列第三篇文章。转眼之间三个月过去了,还是没有实现以太坊。两个月实现以太坊是不可能的了,黄皮书又不想看,只能写写文章装逼度日。 不过的确是学到了非常丰富的知识,并且对以太坊核心组件的内外有了整体概念。 我在这段时间从黄皮书实现了 EVM 和 Chain (后来几个命令实在看不下去参考了 py-evm),有时会想是不是 Gavin wood 故意把黄皮书写的如此晦涩,来根据智商过滤实现者?为什么简单的规则非要用到这么多符号?公示的解释还是层层递归?耗尽了我的调用栈。 以太坊的规范化的确不是很好,Trie 等规则只有黄皮书上晦涩的公式,和 Ethereum Wiki 上并不完整的解释。唯一用来保证以太坊规范并且值得赞扬的是 Ethereum tests 项目,通过了这个项目的所有测试,就可以认为你基本实现了以太坊协议。 Ciri 项目 3 个月的工作成果转化成了在 Ethereum tests 上通过的八千多个测试(VMTest, VMStateTest, RLPTest, 常跑的有 5726 个测试,其余的测试耗时长跳过)。主要的测试部分还剩下 BlockChainTest 没有通过,这部分包含了以太坊大量的 Fork 规则,和各种区块运行状态的判断,通过了这个测试可以说算是完整的实现了以太坊的核心。(更新:现在 Ciri Ethereum 已经通过了 Constantinople 分叉之前的所有测试!) 同时还输出了 ciri-rlp ,实现了以太坊的 RLP 编码(还是要吐槽下官方 Wiki 给的 RLP python 代码示例都是错的,而且...

  • 实现以太坊第二周 RLPX 子协议、Actor 模型

    根据上篇继续: 实现以太坊第一周 DEVP2P::RLPX 握手协议 本周比较懒,字写的尽量少一点。 上周实现了以太坊的网络协议 DevP2P 中的握手部分。DevP2P 还包括了节点发现功能,子协议传输功能,还有整合了所有以上逻辑的 Server。 下一步我打算优先实现以太坊子协议,而不是继续实现 DevP2P 的其他功能。 以太坊子协议定义了一整套以太坊节点间的消息格式:同步区块,获取交易信息,获取区块头等等。实现了以太坊子协议,就可以接着实现区块同步,挖矿,还有相关的 web 3 接口。这部分功能触及了区块链、以太坊的核心机制,实现起来很有意思。比起单纯的 DevP2P 协议更有趣,所以我们采用深度优先的方式来实现以太坊,先做个能部分使用的客户端。 以太坊子协议是通过 DevP2P 中『RLPX 子协议』功能实现。上周我们实现了 RLPX 握手,握手之后就可以通过 RLPX 传输数据。RLPX 使用子协议的概念进行数据传输。 RLPX 子协议 RLPX 包包含了 code, size, payload 三个字段。 RLPX 包(message): code | size | payload payload 中用来保存二进制信息。(经过以太坊使用的 RLP 编码后的内容) 『RLPX 子协议』是在 RLPX...