我爱编程

讲解区块链和ICO及比特币

2017-07-29  本文已影响325人  诠科教

代币上百万美元的销售额已经随处可见,传统报纸也开始用头条新闻讨论以太坊、比特币、ICO(首次公开售币)、代币、硬分叉(hard fork)和其它技术话题。

甚至我十三岁的弟弟都让我给他解释这些词汇是什么!

我个人在这一领域投资一段时间了——最近是在Coinbase公司作为一名工程师——但即便如此我对加密货币领域过去六个月的快速发展仍然感到惊奇。

如果你想要明白为什么加密货币备受关注,你就必须理解这背后驱动市场发展的催化剂。如今,这个催化剂就是“代币销售”或者“首次公开售币(ICO)”现象。

ICO vs IPO:投资的蛮荒之地

ICO究竟是个什么东西?你或许听过“首次公开发行”(IPO)——指的是一家公司通过销售公司部分股份给机构投资者进行公开上市,而这些投资者最终将股份在证券交易所上销售给大众。广大群众对IPO格外感兴趣,因为IPO使每个拥有证券账户的人都能买下像Snapchat这样大公司的股票。

那么ICO是一样的道理吗?似是而非。IPO和ICO都是公司用于募集资金的方法。二者主要的区别在于监管(而这点相当重要)。IPO受美国证券交易委员会(SEC)监管,有一系列的法律规范和操作的正规流程。ICO目前未受到任何管制,更像是处于“荒蛮”开发阶段。

总体来说,提及ICO我们想到的更多的是疑惑和不确定性。有人说到ICO已经成为一场“不合常理的、不具有可持续性的凯恩斯式选美比赛”。支持者则对此持很乐观态度,并声称这是风险投资的新形式。

随着类似上述的强烈对立观点占主导地位,我们大多数人就只能在局外抓耳挠腮。

必要的背景知识

你不了解ICO售卖的标的数字资产,就无法理解ICO。如果你已经知道了加密的基本知识,你大可跳过这部分。但对于剩下的人……我们还是从头开始吧!

加密货币技术堆栈:

加密货币技术堆栈

比特币

比特币是一种使用P2P技术的去中心化数字货币。

P2P本质上是指没有一个中央权威发行新货币或追踪交易。相反的,这些运行都由网络共同管理。交易直接发生在用户之间,并记录于区块链中(下文有更多关于区块链的内容)。

网络上不乏比特币讲解者,故我在本文不再进行详述。

区块链

区块链是一种分布式公共数据库,它能永久保存数字交易的记录。

换言之,区块链是一种储存所有数字交易且不可更改的日志文件。这个分布式数据库并非由中心管理员控制,而是由重复数据库组成的网络控制的(意味着网络中每个节点都储存了区块链的一份重复项),该数据库在同一网络内可见可共享。

区块链中的每个“区块”包含了近期交易的一项纪录、该区块之前区块的一项引用、一个困难数学问题的回答以及其它东西。

一个区块链由“矿工”共同维护,“矿工”是指网络内成员,他们通过解决区块含有的复杂算法问题争相验证每一区块内的比特币交易。

他们通过购买或租借大量计算能力来运行这些复杂的算法问题。他们使用这些计算能力的动力来自于比特币回报。如果他们解决了问题并验证了一个比特币区块,便能获得比特币报酬。

这样一种去中心化网络的威力在于经济价值和管理权限分布于网络利益相关者之中(如矿工和消费者),而非集中于单一组织(如银行、政府部门和会计人员)。多亏了这样的设置,任何人都可以在没有第三方的介入的情况下通过数字化的方式拥有和转移个人资产。

区块链技术不局限于比特币。它可以用于创造任何其它加密货币,比如以太坊和莱特币,每种都有它们各自的区块链。

你可以在维基百科上获得更多关于比特币和区块链的知识。

协议层

接下来我们就来说说协议层。总的来说,协议就是节点在网络中传输信息时的一系列特殊规则。这些规则具体规定了通信实体间的交流。

电信行业使用的一个协议就是传输控制协议(TCP),该协议是指在网络信息包水平做信息交换的一系列规则。TCP保证了数据包会依照它们发送的顺序派送。另一个例子则是互联网协议(IP),该协议是在网络地址水平的一系列规则——它具体化了网络上的数据包和地址解析方案。

TCP/IP 协议

当讨论到区块链时,“协议”一词指的其实是“加密经济规则”。该规则是由区块链实施的,目的是为了维护区块链P2P网络的分布式系统共识。

加密经济规则是指监管去中心化数字经济的规则:

1. 使用公共密钥进行认证

2. 有确保规则被有效遵守的经济激励。

比如,在比特币区块链的案例中,它会提供给验证每笔交易的矿工经济激励,这样一来保证了网络的运作。

这些经济激励究竟是什么?

代币

开始讲代币的内容了。

矿工的经济激励来自位于比特币区块链上层的原生代币——比特币。这种币就像是软硬兼施的“胡萝卜加大棒政策”——那些使用计算能力得以验证交易的矿工能获得一定数量的币。

总的来说,当你听到“加密代币”一词或仅仅“代币”一词时,他们指的代币是类似比特币这种建立于区块链之上的币,它代表了你拥有的资产且该资产能转移到别人身上。

有很多能在区块链之上创造代币的方法。比如,最易理解的代币是比特币这样的原生代币,它直接建立于比特币区块链之上。或者你可以将比特币区块链进行分叉然后再在它之上建立代币——这样的例子包括Z币、莱特币、门罗币等。或者你可以创作一个全新的区块链技术并在之上创造代币——以太坊就是这么来的。以太坊区块链上的代币即“以太币”。

你也可以在以太坊自身的区块链上创建代币。以太坊下的Gnosis代币项目和Augur代币项目就是成功的例子。可能你从“以太币”起就开始疑惑什么是创建在以太坊区块链上的原生代币了。我会在本文后面的内容提及。现在你只需理解在以太坊区块链原生代币旁边是可以创建其它代币的。

我们可以用传统货币来打个比方帮助你理解——你可以把代币理解为货币本身(如美元、欧元等),而将区块链协议理解为货币政策。

这里的关键点是每个代币都是基于一些底层区块链的——不论是比特币区块链亦或是以太坊区块链,或者其它的分叉/新的区块链。

且不谈加密货币的问题,代币也是很有价值的,因为区块链成为了资产控制的支柱,它是不可改变、去中心化且无法伪造的。

应用层

目前为止,我们已经了解了比特币和其背后的区块链。我们同时还了解了决定区块链规则的协议,以及建立在其之上的代币。

这些技术让我们开始重新思考金钱的定义:一种数字化的、易于转移的、安全的和去中心化的东西。

但要意识到的是资金仅仅是区块链的一层应用。除了资金之外,处于加密世界的我们不断探索区块链的原因是它揭示了未来:

1. 协议的发展潜力;

2. 总体应用的发展潜力。

1. 协议

加密货币开发者的最终梦想是能我们抓住区块链技术的优势,从头创建新的、优化的通信协议。因加密货币而发展起来的协议拥有解决中心化互联网所带来的问题的潜质,而这样的问题从拨号调制器投入使用起便开始困扰互联网了。

这些协议包括哪些呢?

他们包括支付、身份认证、域名四通、云计算、信誉等等协议。现如今很多系统都是高度中心化的(如Stripe、Paypal、谷歌和亚马逊),在网络上这些系统不存在所谓的默认或标准设置。

因此长远来看,我们希望区块链技术能让我们在加密货币之外建立去中心化、开放和安全的协议。

2. 应用

区块链使得我们所说的“去中心化应用”成为可能。

去中心化应用,或者“dApp”是建立在区块链之上的应用。它们是如何运作的呢?

我们一起来看一下比特币区块链这个例子。比特币用一种脚本系统为发生在比特币区块链上交易服务。脚本是含有操作指南的简单清单。因此比特币脚本语言让我们能够用脚本记录每笔交易。这个脚本的目的在于定义比特币接收者为实现比特币转移所需的要求。

对一次典型的比特币转移,脚本会定义付款人必须提供的内容:

1. 一个公钥,它能在哈希查找时匹配到脚本内的目的地址

2. 一个签名,能证实私钥和上述提供的公钥是相对应的。

但这其中极好的一方面是,我们在发送每笔交易时参数的设定是灵活的。比如,我们可以在脚本上写上“该笔交易仅在有两个私钥的情况下有效”。因此本质上来说,脚本语言使我们能够把规则编码,它能使我们无需再信任第三方而是通过我们真正关注的编码规则来转移资金,或者更通常是转移一则信息。我们只需信任这些代码,一切便相安无事。

因为比特币拥有该脚本语言,使用这些语言来构建基于区块链交易的不同应用是可行的。换言之,我们可以创建使用比特币交易进行通信的应用。

举个例子,如果我们想要创建一个基于区块链的众筹应用。你可能要建立一系列规则以规定募集的资金如何在不同方之间转移(或交流),而这些你都在脚本文件中编译好了。应用的使用者便可以在区块链的监管下组织一场众筹活动了。

这就是dApps背后的主要思想:一套定义具体应用的去中心化式规则。这套规则基于公开去中心化的区块链(而不是由一些如Facebook或亚马逊这样大型公司拥有的中心服务器控制)。这使得dApps能够自治监管且能弹性应对审核。

备受欢迎的杀手级应用都在哪?——进退两难

身处加密世界的许多人认为开发者会迅速赶上使用比特币脚本语言在区块链上层建立去中心化应用的潮流。

但经过八年来看(比特币在2009年发布),比特币已经不单单是价值的储存媒介和投机投资品了。

当然,我们见证了大量比特币钱包和交易中心的诞生(比如交易平台Coinbase、交易所Kraken、交易平台Poloniex和交易所GDAX这些)。

当然,我们也不能忘了丝绸之路这个数字化匿名毒品交易市场在两年半时间内促成了十亿美元的销量,直到2013年底被法律制裁关闭。

在某种程度上,比特币可以被当作区块链技术诞生以来的第一个去中心化应用,它完全开源、无需中央部门监管。

但认真地说,我们许多人依旧在寻找和思考“备受欢迎的杀手级应用在哪?”

令人伤心的是,我认识的人里面几乎没有一个在日常生活中使用基于区块链的应用。

以下是这类应用程序没有流行起来的原因(注:有很多是个人观点):

1. 缺乏开发友好性和开发工具

使用比特币脚本语言来编程不是一件容易的事情,为什么呢?

一方面,脚本语言太具有限制性。脚本语言是指一种编程语言,可以用来编写代码执行命令。现如今网络上广泛使用的脚本语言是JavaScript。

const greeting = (name) => "Hello, " + name + "!"

const add = (a, b) => a + b

const subtract = (a, b) => a - b

你把它和比特币脚本语言相比较一下:

OP_DUP OP_HASH160 62e907b15cbf27d5425399ebf6f0fb50ebb88f18 OP_EQUALVERIFY OP_CHECKSIG

上面的JavaScript读起来很像英语。比特币脚本语言则像是机器代码。很多开发者都已经习惯了使用像JavaScript、Ruby和Python这样生动的语言……而不是机器代码。比特币脚本语言让大多数开发者望而生畏。

第二,开发工具和开发者文档在开发者群体中很久才流行起来。举个例子,React是现在最流行的前端图书馆之一。React能流行起来的一个重要原因是它们在创建一套强大的开发者工具、开发者文档和开发教程上下了很大功夫(如编译开发工具IDEs、语法编译器Babel、模块打包机Webpack、web开发前端模版boilerplates、开发应用Create React App等)。比特币的生态系统相比之下就对用户一点都不友好了。

最后,比特币脚本语言并非图灵完备的。图灵完备编程语言是指能用于模仿任何单磁带图灵机的语言。换言之,只要图灵机被给予足够的时间和空间,它能被用于解决任何计算问题(想要了解更多关于这方面的内容,可以看看Stack Overflow上的相关讨论)。正因比特币脚本语言是非图灵完备的,它也就限制了你的行动。

总体来说,比特币脚本语言一直都存在缺陷,使用起来困难又缺乏开发工具和开发者文档。因此它没能在开发者社区中发展起来,也就失去了造就杀手级应用的先决条件。

2. 创建一个拥有强大网络效应的去中心化应用程序并不容易

我们日常使用的许多应用(电商、交易所、社交网络等)的价值都来源于强大的网络效应。网络效应是指随着越来越多用户使用一项产品或服务,它们的价值也随之增加。

一个典型的例子就是Facebook。Facebook上每个新用户连接到平台其他用户时,都非线性地增加了连接用户的数量。类似的,小额支付软件Venmo平台要是只有一名用户它也会是无用的。该平台每增加一名用户,它的价值就会增加,因为这样一来你就可以支付资金给这个朋友或者向这个朋友借钱了。

网络效应帮我们创建了更好的产品及服务。然而,构建这个网络也是构建一个成功产品最难的一部分,这就是著名的“先有鸡还是先有蛋”的问题。

即便是开发者打算在比特币区块链上层创建一个去中心化的众筹平台,从平台的两端获取用户(如投资者和产品生产者),也是一个巨大的挑战。

区块链为创建去中心化应用提供了技术基础,但却没有提供驱动网络效应的必要框架及工具。

3. 仅去中心化本身并不会提供10倍的进步

当我们谈及区块链上层的去中心化应用时,我们可能会想到基于交易的平台,如众筹、汇款、支付、优惠券等。要是有这些服务平台的去中心化版本那就会是很棒的功能了,但事实上我们已经有这样的应用程序存在了,它们和每个场景都能完美配合。

众筹平台我们有Kickstarter,汇款平台我们可以使用TransferWise,支付平台可以用信用卡、Paypal、Venmo、Square等。

Paypal的创始人之一Peter Thiel的10倍法则在我们思考如何让用户用去中心化解决方法来代替原有的解决方法时十分重要。至今我们也不清楚这10倍优势来自于哪些层面,至少对用户来说是这样的。

拿开源众筹平台WeiFund来说,它是个去中心化众筹平台。从用户角度来看,WeiFund和Kickstarter或GoFundMe这样的传统众筹平台很相似。二者主要的区别在于WeiFund成本更低且使用智能合约来进行众筹,这样一来可以使更复杂的条款成为可能。这样是否足够让用户转而使用WeiFund呢(尤其是在它成本还不是那么低的情况下)?

我并不是说无论在任何情况下去中心化应用都是没有好处的。事实上,我预见到未来的应用将会比现在的应用安全10倍、便宜10倍、有效10倍或是维度大10倍。

不过关键在于这些好处都还没被证实,所以现在用户没有选择使用去中心化应用的理由。

区块链有意者来学习北邮在线区块链EMBA国际总裁研修班

上一篇下一篇

猜你喜欢

热点阅读