专栏名称: 雷峰网
中国智能硬件第一媒体
目录
相关文章推荐
新浪科技  ·  【#日本央行将准备金水平提高至100%#】市 ... ·  21 小时前  
新浪科技  ·  【#多家车企反对内卷式恶性竞争# ... ·  2 天前  
51好读  ›  专栏  ›  雷峰网

FTCon2017|微软亚洲研究院闫莺:以太坊的性能与隐私保护如何兼得?

雷峰网  · 公众号  · 科技媒体  · 2017-03-26 22:15

正文

请到「今天看啥」查看全文


数据结构

首先,数据结构是比较基础的部分,正如它的名字一样,区块链是一块一块的交易连在一起。这种数据结构的特点是:如果你改了其中一块数据的内容,很容易会被发现。

那以太坊怎么实现的呢?大家看到这个架构图觉得特别复杂。是的,它就是这么复杂,以太坊到现在已经有七千多个结点,来自不同国家,不同目的的人。节点和节点之间彼此完全是不信任的。这些复杂的设计就是考虑到安全性和性能。存储层面上,是每个结点高冗余的存储数据。

一致性协议

如果存在不同的结点,那如何保证数据的一致性呢?这就是我们经常谈的一致性协议,每时每刻我们都需要选一个节点负责决定哪些交易属于下一块,然后广播给大家记录下来。这个 lead 节点的选取和激励机制是一致性协议研究的重点。

智能合约

我再谈谈智能合约,什么是智能合约呢?就是一段代码。解决什么问题呢?刚才讲到用比特币转钱。那我们能不能把这个做的更灵活?我们举一个例子。

假设即将举办一场球赛,我和 Edwin 打赌,如果 A 赢了,他给我 100 元,如果 B 赢了,我给他 100 元。这种场景在线下怎么做呢?我们每个人先把钱给一个第三方,等结果出来之后,谁赢了把钱发给谁,第三方在其中收取一些手续费。智能合约就可以取代这个第三方,它是一段代码定义了上面描述的逻辑。它有自己的账户,可以把钱转给它,足球比赛结果出来之后,结果注入到区块链,我们可以触发这个合约,它就自动把钱转到赢的人手里。智能合约自己的存储空间,智能合约在区块链上的运行时,输入是区块链上的数据,经过处理之后,结果再写回区块链。

有人可能有这样的疑问,如果有的人写的代码运行时间特别长,区块链系统会拥堵住吗?

以太坊也有解决方案,它的运行不是免费的,要收燃料费,具体怎么收呢?按照你所消耗的资源,比如 CPU 资源、存储资源来收,如果你想不停的运行的话,没有巨额资金也运行不起来,用这样的方式,可以降低 黑客 攻击的成功率。

基于区块链的交易过程到底是怎样的?

讲完区块链的几要素之后,我们再深入一点,在以太坊中,我转了一笔钱,交易过程到底是怎样的?

假设我要给一个人转 50 元,我在客户端提示转 50 块钱给他,就会生成一个交易,网络上所有人都可以看到,从谁到谁转多少钱。这个交易就存在整个网络当中,其它结点收到了我的转账,这个帐本就更改了。于是我就有了两个状态,我现在的余额再生成一个新的结点。所有的交易组织成一个 Merkel 树,根结点也计算出来,我们就把整个值都放到块的头部,最后把这个块跟前面的块连在一起。

实际上我的交易被存成什么样的结构呢?上面所有的信息都是以 KV 对的形式存储在 LevelDB 中,key hash 值,Value 是内容。Merkel 树中间结点的内容就是它的孩子节点。如同下面表显示,我们都可以通过它们的信息可以找到对应数值。







请到「今天看啥」查看全文