banner
leaf

leaf

It is better to manage the army than to manage the people. And the enemy.

加密业务模型和防御能力

加密业务模型和防御能力
提出者
安德烈森・霍洛维茨・阿里・叶海亚

此内容仅供参考,不应作为法律、业务、投资或税务建议。

关于那些事情,你应该咨询你自己的顾问。对任何证券、数字资产、代币和 / 或加密货币的引用仅用于说明目的,并不构成对任何此类工具的投资建议,也不构成提供 投资咨询服务的要约。此外,本内容不针对任何投资者或潜在投资者,也不打算由任何投资者或潜在投资者使用,并且在决定投资 a16z 管理的任何基金时,在任何情况下都不得依赖本内容。(投资 a16z 基金的要约只能通过私 募备忘录、认购协议和任何此类基金的其他相关文件进行,并应完整阅读。)提及、提及或描述的任何投资或投资 组合公司并不代表ā16z 管理的投资工具的所有投资,也不能保证这些投资是盈利的,也不能保证将来进行的其他 投资会有类似的特征或结果。安德森・霍洛维茨基金管理的基金的投资清单(不包括发行人未允许 16z 公开披露的 投资,以及对公开交易的数字资产的未公布投资)可在 https:/al6z.com/investments/, 获得

image

image

image

image

image

image

image

筹资和交易结构:加密创业的考虑因素

image

image

image

image

image

这篇文章给大家造成很大的困扰,是因为大家都知道以太坊和 Hyperledger 当前都是基于账户模型的,没有任何 UXTO 的概念。而作者在文章中指出 Hyperledger 已切换到 UTXO,以太坊也在考虑增加,究竟是怎么回事。

首先说 Hyperledger fabric,fabric 里连代币都没有(比特币里有比特币,以太坊里有以太币),说什么 UTXO 就没头没脑了。遍查 fabric1.0 的整个代码,只在 chaincode example 里找到一些关于 UTXO 的内容,那只是用 chaincode 实现对比特币 UTXO 的一个存储功能,而且只是一个智能合约的示例。

那作者为什么说 fabric 已经切换到 UTXO 了呢?遍查网络,的确发现了相关的内容。一篇是 ConsenSys 的文章,开头第一句话就是:Recently there has been a proposal to have UTXO based architecture as the fabric of the Hyperledger project.(网址:https://medium.com/@ConsenSys/thoughts-on-utxo-by-vitalik-buterin-2bb782c67e53#.sttqvpfqe)。

另一篇是数字资产公司(Digital Asset Holdings)的文章,里面说到:We are also switching from our simplistic notion of accounts and balances to adopt to de facto standard of the Bitcoin UTXO model, lightly modified.(网址:https://digitalasset.com/press/hyperledger-beta-retired.html)

这些似乎印证了作者的观点。但实际不然,因为这两篇文章都是时间比较老(2016 年 3 月份),在那个时间点的确有那样的建议和讨论。并且很显然当前代码里没有任何 UTXO,所有的代码和工作模式仍然是账户模型。我们在网络上继续寻找,在 Reddit 的帖子上找到了关于这方面的讨论:Both Vitalik and ConsenSys do indeed believe that UTXO is unnecessarily complicated to serve as the Hyperledger fabric.

所以结论是:fabric 的 UTXO 只是曾经的一个讨论,目前并没有在 fabric 1.0 中实现。而且以后如果要增加的话首先得为 fabric 引进自己的代币。我个人的观点认为,fabric 为商用智能合约系统设计,基于账户模型更加合适。

下面我们说以太坊的 UTXO。以太坊的确是在考虑引进 UTXO,但是此 UTXO 非彼 UTXO。并不是像大家想象的那样,用 UTXO 来替换现有的账户模型。首先以太坊为智能合约而设计,其账户模型里除了有余额(balance),还有智能合约代码,还有 nonce(为防止重放攻击),以及自定义的存储。把这些换成 UTXO 显然不合适,因为 UTXO 胜任不了。比特币的 UTXO 里只有一个简单的属性:余额(balance)。

那么以太坊的 UTXO 是指什么呢?这就是以太坊的另一个话题了:分片(Sharding)。分片是扩展以太坊、增加 TPS 的有效方法,目前正在社区里被广泛讨论和研究。目前的以太坊的工作模式是所有节点(比如共 16 万个)同时验证所有交易,实际上这是极度低效和没有必要的一种模式。为了保证一致性,如果我们按照地址的前 4 位来分片,可以把所有地址分成 16 片。这样每个交易只需要其中 1 万台节点验证便可通过。如果一个交易涉及的账户都在同一片区并没有什么问题,但如果涉及到不同片区问题就来了。

为了解决不同片区之间的交易问题,以太坊设计出了称为收据(receipt)的工作模式。而这个收据的模式和 UTXO 类似,故而也称为以太坊的 UTXO。

既然此 UTXO 并不是指替换当前账户模型,变成比特币模式的 UTXO,那么是不是说明当前账户模型就没有问题呢?也不是!当前账户模型的确存在一些弊端。

以太坊中以太币的转移安全性不如比特币高。下面是一个真实的例子。一个网友请我帮忙,让我帮助从 Yobit.net 追讨 258 个 ETH。原因是他从 Yobit.net 转移币到云币网账户时,发生了 out of gas 错误。云币网给出的目标地址是一个合约地址,而 Yobit.net 以为是个外部地址,交易设置的 gasLimit 为 21000(这对于合约账户就不够了),因此发生了 out of gas 的异常。币的转移被取消,但是这个交易(Transaction)却是完成的。

所以结论是:fabric 的 UTXO 只是曾经的一个讨论,目前并没有在 fabric 1.0 中实现。而且以后如果要增加的话首先得为 fabric 引进自己的代币。我个人的观点认为,fabric 为商用智能合约系统设计,基于账户模型更加合适。

下面我们说以太坊的 UTXO。以太坊的确是在考虑引进 UTXO,但是此 UTXO 非彼 UTXO。并不是像大家想象的那样,用 UTXO 来替换现有的账户模型。首先以太坊为智能合约而设计,其账户模型里除了有余额(balance),还有智能合约代码,还有 nonce(为防止重放攻击),以及自定义的存储。把这些换成 UTXO 显然不合适,因为 UTXO 胜任不了。比特币的 UTXO 里只有一个简单的属性:余额(balance)。

那么以太坊的 UTXO 是指什么呢?这就是以太坊的另一个话题了:分片(Sharding)。分片是扩展以太坊、增加 TPS 的有效方法,目前正在社区里被广泛讨论和研究。目前的以太坊的工作模式是所有节点(比如共 16 万个)同时验证所有交易,实际上这是极度低效和没有必要的一种模式。为了保证一致性,如果我们按照地址的前 4 位来分片,可以把所有地址分成 16 片。这样每个交易只需要其中 1 万台节点验证便可通过。如果一个交易涉及的账户都在同一片区并没有什么问题,但如果涉及到不同片区问题就来了。

为了解决不同片区之间的交易问题,以太坊设计出了称为收据(receipt)的工作模式。而这个收据的模式和 UTXO 类似,故而也称为以太坊的 UTXO。

既然此 UTXO 并不是指替换当前账户模型,变成比特币模式的 UTXO,那么是不是说明当前账户模型就没有问题呢?也不是!当前账户模型的确存在一些弊端。

以太坊中以太币的转移安全性不如比特币高。下面是一个真实的例子。一个网友请我帮忙,让我帮助从 Yobit.net 追讨 258 个 ETH。原因是他从 Yobit.net 转移币到云币网账户时,发生了 out of gas 错误。云币网给出的目标地址是一个合约地址,而 Yobit.net 以为是个外部地址,交易设置的 gasLimit 为 21000(这对于合约账户就不够了),因此发生了 out of gas 的异常。币的转移被取消,但是这个交易(Transaction)却是完成的。

image

基本判断:

首先,你要对当前的情况有个基本的判断。当前(2017 年 3 月)是处于数字货币牛市的起步 + 前期阶段,这就是基本的判断,也是你进入市场的前提,如果这个结论被推翻,那么你就不应该参与进来。

准备活动:

当你要进入一个市场前,要有一定的准备活动,如果你不能满足以下的条件,请你立即离开:

一笔没有期限和压力的资金(如果有期限,至少是 5 年以上,即这笔钱投入市场在很长的一段时间内你不需要拿出去);

0 杠杆(经过前期整顿,目前数字货币交易所大部分都是 0 杠杆的);

长线持有,买卖只做一次(或者叫一段时间内建仓,一段时间内清仓)。

你做了这些准备活动,那么下面一个问题是,该买什么?

牛市来临时,基本上所有数字货币都会涨,即使是一些特别垃圾的。现在有十几种知名货币,还有上百种的二代币、山寨币。选择哪些品种成为投资的关键,笔者认为只能投资以下品种:

注意:以下是笔者的观点,不作为任何投资建议,任何看了此篇文章而进行相关投资的人,应该清楚任何风险和后果自负,笔者不会得到 1 分钱好处,只是进行技术和观点分享。

1、比特币(bitcoin)

比特币是区块链概念的发源地,也建立了最为广泛的信任。当前的比特币价格在场外 9000 元,场内 8000 元左右。笔者认为其合理价格应该在 3 万左右。现在越来越多的观点认为比特币将进一步建立信任,成为数字黄金。支持该类观点的人已经越来越多,其中也不乏大名鼎鼎的以太坊创始人:Vitalik(他的中文说得特别好)。

目前比特币的总市值约是黄金总市值的 0.3%(黄金总市值 8 万亿美金,比特币目前 125 亿美金),从这个角度,比特币还有广阔的上涨空间。

目前影响比特币价格进一步走高的主要是两个问题:

内因:比特币的扩容问题。比特币的网络已经超负荷运行了几年,而扩容问题迟迟得不到解决,比特币的支付需要高额手续费,且确认速度缓慢已成为影响其正常功能的重大问题。在扩容问题上 bitcoin core 的隔离见证方案和 bitcoin unlimited 的提升区块限制的方案迟迟不能达成一致,且有一定的分裂风险。笔者倾向于支持隔离见证,在此也期望和呼吁各方能以社区整体利益为重,早日达成一致!如果隔离见证成功激活,比特币价格将迎来一波上涨!

外因:政策打压和交易所限制提币。这点就不想多说了,政策问题在很长一段时间内都是影响币价的主要因素之一。

2、以太坊(ETH)

以太坊的上涨没有太多悬念。早在去年 12 月份的视频中预言过数字货币的牛市将以 eth 的上涨作为代表,并在 70 元左右的时候多次呼吁大家建仓 ETH,因为其价值被大大低估。未来 ETH 将毫无疑问成为千亿市值的平台(呼吁大家时市值才到百亿,而经过最近这轮上涨,市值已达 200 亿)。

ETH 天生没有政策的困扰,这是它的优势。目前来说影响 ETH 币价的因数多为积极因素,如:

企业版以太坊联盟的成立

ENS(以太坊域名系统)的上线

PoS 的预期

说到以太坊,很多人会问 ETC,我也多次说过我的观点,建议大家趁高清仓 ETC。个人完全不支持 ETC,认为其将逐渐衰亡,或沦为普通的二代币。

个人觉得 ETH 的合理价格应该 500-1000 之间。

3、ZEC(Zcash)

相对于比特币和以太坊,Z 币的风险会更大一些,其价值的体现也将需要更长的时间。但从长远来看其匿名的价值将是人类普遍追求的价值之一。当前来看,其缺点也很明显:

更加政府不友好;

技术尚不成熟,客户端支持较少,需要大内存,CPU,发送匿名交易需要近 1 分钟;

可能隐藏的 bug 和增发无从发现的问题;

尽管如此,笔者在币价 260 左右的时候呼吁过大家建仓,并看高价格至 3000 元,但需要更长时间(也许是 5 年以上)。

以上币种的选择也是被普遍认可的选择。实际上,大家认为比特币才是核心。只有为了解决比特币不能解决的问题而产生的新币才有生命力。比如,以太坊解决了比特币不能发布数字资产、写智能合约的问题;Z 币解决比特币隐私的问题。

如果你用长远的眼光看,你就知道不管是比特币、ETH 和 Z 币,现在都是买点,尽管它们已经距离底部上涨了很多倍。有的人想寻找黑马,想找到百倍甚至是千倍利润空间的币。我的观点是它是有的,但是被找到是极其难的。它应该符合以下的特征:

它有功能性的创新,解决了某个问题,或者引领未来的一种新的方式;

它的发明者或团队不被关注,因为只有这样它的初始价格才能很低;

如果你找到了,也麻烦通知笔者一声:)

最后,所有数字货币的投资,应该都转移至自己的本地钱包保存,并做好全面的安全备份。

说到区块链的企业级应用,大家首先想到是 IBM 主导的 hyperledger fabric 项目和有微软、intel、摩根等大企业参与的企业以太坊(Enterprise Ethererum)项目。

企业以太坊联盟刚刚成立,其产品发布还有待时日。hyperledger fabric 1.0 alpha 则已经发布。我有幸参与了国内最早一批应用 hyperledger 进行企业级区块链的设计和开发。不幸的是,我觉得它不好,非常的不好。我们似乎走在了一条错误的道路上,fabric 的设计者也似乎走在了一条错误的道路上。

问题一:不区分应用系统和区块链系统

 

fabric 的设计没有区分应用系统和区块链系统。fabric 试图在引导大家将应用系统区块链化,将原先可简单解决的问题复杂化。例如一个供应链系统,我们称之为应用系统,它已经存在,在区块链技术被应用之前已经大规模存在。我们现在来改造它,或者重新设计,让其具有区块链的特性。fabric 给我们的方案会引导我们将大部分业务逻辑放进 chaincode,使得整个系统变成一个区块链系统。这是非常错误的,原因有三:

区块链的运行效率很低;

区块链的存储消耗高,查询效果很差(尽管 fabric 1.0 支持结构化查询,如:CouchDB,但相比传统的,如:mysql,其效率低一个数量级);

系统过于复杂,且没有必要。

 

问题二:endorsement 的设计似是而非

 

fabric 1.0 的 endorsement policy 的设计只在理论上工作,实际情况下运行效果很差。例如,一个供应链区块链系统涉及到 3 家企业,我们分别部署 1 个 peer(同时是 endorse peer 和 commit peer)在各自的机房(或云系统),我们的 policy 定义为必须同时获得这 3 个 peer 的 endorsement。当一个交易发生时,我们的请求需要通过网络穿越公网进入各自的机房(或云系统),然后和各个 peer 进行交互,获取 endorsement。而这其中的延迟非常不确定,可能很大,会导致各种交易失败的情况发生。

 

问题三:channel 的设计让人又爱又恨

 

fabric 1.0 中的 channel 设计似乎是一个很棒的功能,可以让不同企业间的商业隐私得到极大的保护。但是它却是不完整的,或者很难使用的。因为不同 channel 间不能交互,很多数据需要在多个不同的 channel 间共享,我们要么将冗余数据写入不同的 channel,要么将系统设计成颗粒度很细,让不同的 peer 加入到多个 channel 中。无论何种方式都是在将简单问题复杂化。让系统变成更加复杂,和更加容易出错。

 

问题四:用 docker 执行 chaincode 设计粗糙

 

没有像以太坊里设计有 EVM,而只是用 docker 来执行 chaincode,其设计相当粗糙,而且会有很多运行过程中发生的问题。这点非常易于理解,不用多说。

以上说得都是 fabric 设计中的问题,那么如果用 enteth 会不会就没有问题了呢?很显然,我偏爱以太坊。企业级以太坊(enteth)会很大程度上解决以上的问题。但是并不全部,而且不能解决的是一个核心问题:我们为什么要用区块链?

区块链唯一的作用,是为了解决信任问题。提供一个防篡改、无抵赖、公开透明(这点在企业应用中不一定适用)的交易和商业环境。

在我们的供应链例子中涉及到三家企业 A、B、C。不管是 fabric 的方案还是 enteth 的方案,只能在 ABC 之间保证数据一致性。但是现在 A 篡改了数据,BC 因为手上有所有数据的副本,可以轻松地证明 A 的篡改行为。这时 A 请来了黑客,攻入了 BC 系统,将 BC 系统里的数据副本也一并篡改。攻入 BC 系统的难度远远小于劫持公有链中(如以太坊)51% 的算力的难度。

实际上,在现实的商业环境中,很多系统都是由强一方提供,如 A,帮助 BC 部署其区块链系统。在这样的环境中区块链的防篡改特性难以生效。

另外,基于 fabric 或 enteth 的区块链方案在部署和运行时也存在诸多问题。一般很难有多家企业共同开发一款区块链系统,通常由其中一家企业或者某个第三方软件公司提供。因为缺乏相应的知识,相关企业很容易被软件提供商留下后门,这点让区块链不可篡改的特性得不到安全的保障。

介于以上问题,笔者认为,基于共有链(如以太坊)的企业级应用解决方案将是未来的一个方向

(至少是个必要的补充)!

 

设计思路:

 

将企业级区块链应用中,需要用到区块链的地方抽离出来,逻辑上分成应用系统和区块链系统,而用公有链(如以太坊)实现其区块链功能。

这样设计的优点有很多,如:

应用系统、区块链系统分离,最大程度复用原有系统的功能和特性;

利用公有区块链的网络安全强大、不可篡改等特性保证区块链功能;

设计简单、费用极低;

公有链解决企业问题,也将面临很多挑战,主要的挑战有如下几点:

挑战一:企业级应用的隐私问题

企业级应用涉及到商业、用户数据,系统需要大量的保密安全措施,不可公开泄漏到网络上,解决这一问题有 2 个可选方案:

加密,只将加密数据存在在公有网络上;

两级分离,只将头部信息,数据 hash 值存储在公有网络上,将真实数据存储在安全的企业环境中。

挑战二:公有链网络费用的问题

使用公有网络,如以太坊存储企业区块链,将面临着较高的网络费用,尤其涉及到大量存储时。解决的方案有 2 个:

只存储企业区块链的头部信息(类似于比特币的 SPV),将区块内容放在非常便宜的企业数据环境中;

剪裁功能,对于历史无用数据可以实施备份存储和剪裁。

下面笔者给出两个方案建议:

方案一:基于以太坊的企业应用解决方案

在以太坊智能合约中维护企业区块链的头部信息; -〉网络安全、防篡改

企业区块链区块内容放在二级存储(安全的企业存储环境中);-〉企业信息隐私保护,省钱

对于历史头信息进行剪裁;-〉省钱

关联以太坊地址和企业身份;-〉不可抵赖

方案二:基于字节雪球(byteball)的企业应用解决方案

用字节雪球的存储功能,形成企业区块链;-〉网络安全、防篡改;

对于敏感信息加密存储,安全级别较高的放在二级存储;-〉隐私保护;

关联雪球地址和企业身份;-〉不可抵赖

雪球费用相对较低,存储空间大,未来将是以太坊方案的一个很好补充,也可和以太坊方案结合使用;

以上方案是笔者根据其经验和知识的总结和思考。我相信已经走在了绝大多数人的前面。也欢迎有兴趣的企业联系,尝试实现以上方案,以作为这块领域的实践探索!

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.