Cover photo

加密业务模型和防御能力

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

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

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

post image
post image
post image
post image
post image
post image
post image

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

post image
post image
post image
post image
post 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)却是完成的。

post 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)的企业应用解决方案

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

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

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

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

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