区块链,你是什么?定义一个产业热词
Almost every discussion of blockchains starts with the Satoshi white paper, but it is this very foundation that starts us on a path to confusion. Neither the terms 'blockchain' or 'block chain' appear there; there are 67 uses of 'block' and 27 of 'chain', but zero of 'block chain' or 'blockchain'. This aside though, let's see where this origin leads us.
几乎所有关于区块链的讨论都缘起于中本聪的白皮书,但是正是这个基础导致了我们产生了混乱。不管应该叫“区块链”,还是“区块 链”,这本书中提到“区块”67次,“链”27次,但是“区块链”或“区块 链”的次数是零。先把这放在一边,我们看看这本书把我们引导了哪儿。
The white paper is short; it's just nine pages long. The first mention of 'block' and 'chain' starts at the bottom of page 2, section 3, where there is a discussion of a basic timestamp server. Prior to this the white paper describes a series of design goals associated with the bitcoin design, such as the ability to allow two parties to transact without needing to trust a third party.
这本白皮书很短,只有9页纸。第一次提及“区块”和“链”是指第2页下方,第3章节,那里讨论了时间戳服务器的原理。在这之前,作者在书中描述了与比特币相关联的一系列设计目标,例如两方在不需要信任和第三方的条件下,实现交易。
The statement of the design goals are fundamentally important. They set the scene for an implementation to meet those goals in which characteristics are layered upon each other, but it is informative to look at what each new layer does.
论述设计目标非常重要。它为之后介绍实现这些目标的应用做了铺垫。这种应用的特点为一层叠加在另一处之上,我们仅仅需要了解每一个新分层的作用是什么。
In our quest for the nature of a blockchain we need to be careful to look for things that are its attributes, rather than characteristics of this first implementation.
在我们寻求解答区块链本质的时候,我们必须仔细查看事物的属性,而不是这些事物第一次应用的特点。
Transactions
交易
Section 1 of the white paper is an introduction and it is with section 2 that we see anything really substantive. Section 2 sets a scene for a digital coin, but it is described as being a chain of transactions in which the 'coin' is assigned to new owners. The coin is really a metaphor for a transaction history of linked transactions.
白皮书的第1章节是整本书的介绍,与第2章节相同,那里没有任何有价值的东西。第2章为数字货币做了铺垫,但是作者描述到,在一个交易链中,“币”被分配给新的所有者。在这里“币”只是关联交易历史的一个比喻。
Interestingly, section 2 also describes how a centralized system doesn't actually need to do this.
有意思的是,第2章节同样描述了一个中心化的系统并不需要完成上述操作。
Blocks and chains
区块与链
With section 3 we see the essence of the design pattern that might best describe the basis of a blockchain. It is given as something that is constructed from a series of incremental blocks of data, each of which can be identified by a cryptographic hash over its contents. In addition, each block incorporates the cryptographic hash of its predecessor block to ensure the construction of a chain.
在第3章节中,我们看到了设计模式的精髓,我们可以将其视为区块链基础的最好的描述。 作者设计了一种可增编的数据块,每一块都有一个哈希加密代号,该代号与其内容相关。此外,每一块可以与其之前的数据块的加密哈希值合并,这样保证了整个链条的建设。
The block hashes are published as a form of widely witnessed evidence that demonstrate shows the existence of both the block data and the predecessor hash. Changing either the predecessor or the other data within the block would result in a different hash signature for the block that would not match the widely witnessed view.
公布的区块哈希值,可作为区块数据和其前一块区块哈希值存在的证据,在网上为众人公开。如果改变前一区块或者整个区块内的其他数据,系统将会生成一个不同的区块签名,该签名将无法与之前公众见证的哈希值相符。
These characteristics are all fundamental, and without them we cannot construct anything interesting. What is equally interesting though is what is not stated as necessary at this point. There are no mentions of coins, no mentions of peer-to-peer networks, no mentions of mining, etc. Instead the suggestion is that publishing hashes in any widely disseminated form would be sufficient, with the two examples being given as publication in a newspaper or publication via Usenet.
这些特点是整个设计的基础,如果没有它们,我们将不可能建造出任何有趣的东西。另外有趣的是这里没有提及的一些东西。这里没有提及“币”, 没有提及点对点网络,没有提及挖矿,等等。相反,作者认为以广泛的方式公布这些哈希值就已经足够了,他给出了两个例子,在报纸上或在用户网上公布。
While we see some explicit characteristics these lead to a few implicit ones:
但我们发现一些特点,引导我们推测隐含的意思:
Publication of the hashes is meaningless unless those same hashes can be independently recomputed by an external observer who is given just the data from the blocks in the chain. It is this characteristic that enables the observers to not have to trust the originator of the chain of blocks; instead they are able to compare historical hashes for themselves.
除非外部的观察者,获得链条中区块的数据后,独立的进行计算,得出相同的哈希值,那么这种哈希值得公布才有意义。外部的观察者不需要去信任区块链的创作者,他们仅仅需要自己对比历史哈希值即可。
Recomputing of the hashes requires that the algorithm by which the blocks is produced be deterministic and well specified. Without these our external observer cannot recompute the hashes.
重新计算哈希值要求一种特殊算法,而区块正是基于这种算法而生成的。如果没有这种算法,外部观察者是不可能重新计算哈希值的。
Enabling peer-to-peer operations
使点对点成为可能
The next section, 4, of the white paper talks about proof-of-work. The first line is interesting: "To implement a distributed timestamp server on a peer-to-peer (P2P) basis, we will need to use a proof-of-work system similar to Adam Back's Hashcash". Proof-of-work is not required to construct a blockchain, just to enable the peer-to-peer implementation of the timestamp server.
在下一章节,第4章节,白皮书论述了工作证明。第一行字非常有趣:“想要在点对点(P2P)基础上布置一个分布式的时间戳服务器,我们必须使用一种与Adam Back Hashcash相似的工作证明系统。建立区块链不需要工作证明,工作证明只是为了确保时间戳服务器的布置。
Subsequent cryptocurrency designs have shown there are potentially other approaches that can be taken here too (eg: forms of proof-of-stake, or hybrids of both), but if we are happy with a client-server approach then none of these are actually necessary.
随后的加密货币设计证明还有其他的方法可以使用(例如:权益证明,或者两者的混合),但是如果我们觉得客户-服务器模式已经符合要求,上述几种方法就没有任何必要了。
This is not to say that proof-of-work might not have some other uses with a blockchain design, but none seem fundamental to our quest.
我并不是说工作证明在区块链设计中没有其他的用处,但是似乎对我们的问题不是很重要。
Network and beyond
网络和之外的其他内容
Section 5 describes the implementation characteristics of the bitcoin network. Nothing here explicitly extends the concept of what a blockchain is, or might require. Indeed, neither sections 6, 7, 8, 9, 10, 11 or 12 (the final section) go on to explicitly offer any new ideas about what a blockchain might be.
第5章节描述了比特币网络的应用特征。这里并没有明确,或者要求扩展区块链的概念。此外之后的6,7,8,9,10,11或12章节(最后一章节)也没有对区块链提出任何新的想法。
Answers to our questions
回答我们的问题
If the Satoshi white paper is the origin of the blockchain design, we're left with a rather thin definition, but perhaps that is the most enlightening aspect. It is very explicit about particular design choices and their purpose, which tends to lead towards a realization that many of the claims about 'blockchains' may actually be a matter of implementation rather than architecture.
如果中本聪的白皮书是区块链设计的源头,他给我们留下了一个单薄的定义,也许这是最启迪人的方面。作者对特殊设计选择和它们的目的解释的很明确,我们似乎可以得出:区块链的各种论述可能仅仅是一个应用,而不是一个结构的问题。
Let's ask some specific questions then!
以下是一些具体的问题!
Must a blockchain have coins?
区块链必须要“币”的参与吗?
There is an interesting discussion in the white paper about the need to provide incentives to those providing security to the P2P network to remain honest and as a means to introduce 'coins' into the system, but the discussion is clearly in the context of the P2P network. The concept of coins themselves is noted as unnecessary with a trusted 'mint'.
为P2P网络提供安全的参与者,应怎样提供激励以确保他们诚实,是否在系统中引入“币”,白皮书中对此有一番精彩的讨论,但是很明显,讨论是在P2P网络的框架内。书中认为“币”的概念是不必要的可信任的“巨款”。
A trusted mint is not something desirable in a cryptocurrency, but there seems to be no requirement for coins if we wish to construct a chain of cryptographically-linked blocks. There is an interesting question to ask about trust, but we will return to that later.
可信任的巨款非加密货币所愿,但是如果我们想要建造一个加密链接的区块链,我们似乎不需要“币”。这是一个关于信任的问题,我们待会回来讨论。
Must a blockchain implement smart contracts?
区块链必须包含智能合约吗?
From the perspective of the white paper this seems unlikely. The word 'contract' does not appear anywhere.
从白皮书的角度,这不太可能。白皮书中未出现“合约”一词。
Might a blockchain enable smart contracts? Yes, of course it might, but it might enable many other things too.
区块链上可以运作智能合约吗?当然,区块链还可以运作其他的很多内容。
Must a blockchain be programmable?
区块链必须是可编程的?
Again the answer seems to be no. Neither the words 'program' or 'script' appear in the white paper.
同样,这个问题的答案似乎是不。 白皮书中既没有出现“程序” 也没有出现 “脚本”。
A blockchain does have a requirement to be interpretable by one or more independent observers, so it is clearly built from one or more well-defined data structures. The block data structure must contain a previous block hash, and the cryptographic hash of the block must be performed in a very specific way, but none of these require that the data structure carry any notion of executable code.
区块链的确对可解释性有要求,区块链必须能被一个或数个独立观察者所解读,所以区块链是建立在一个或多个定义明确的数据结构。本数据区块结构必须包括前一个区块哈希值,而且区块的加密哈希必须遵循一种特殊的方式,但是上述原则中没有任何一条要求数据结构含有可运行编码概念。
Can a blockchain contain some form of program code? This is an implementation question and the answer is yes. Bitcoin includes a limited scripting language, and other systems, such as Ethereum, have subsequently attempted to support more elaborate programming models.
区块链能够包含某些形式的程序编码吗?这是一个执行的问题,答案为是。比特币包括一种有限度的脚本语言,而其他系统,例如随后的以太坊,尝试着去支持更复杂的程序模式。
The choice to support such concepts seems more to be either expedience, or, more ambitious design goals, but it seems a blockchain need no more be 'programmable' than any other linked list data structure.
如果能设计区块链从而支持这些概念,那么这种设计非常有雄心。 但是区块链似乎需要更可程序化,而不是其他关联数据列表结构。
Is a blockchain a database?
区块链是数据库吗?
Once more the answer seems to be no. As before, the word 'database' does not appear in the white paper.
另外一个答案是否定的问题。如前文,“数据库”这个词没有在白皮书中出现。
At its core, a blockchain is a special type of data structure. The blocks within the chain contain data, but this does not make it a database; at best the blocks represent the transaction log of a specific database implementation.
区块链的核心是一种特殊类型的数据结构。链条内的区块包含数据,但是我们不能将其看做数据库;区块链最多是代表特殊数据应用的一种交易记录。
Similarly there are no semantics for querying a blockchain, any more than there are for querying a linked list. A specific implementation might allow for queries of either, but the implementation does not define the thing itself.
同样,不存在对区块链语义上的质询,也没有对关联列表的质疑。一种特殊的应用也许会允许质疑,但是应用不能定义事物本身。
As a point of comparison, the IP packets for the TCP packets carrying this article are defined as data structures in a series of IETF (Internet Engineering Task Force) RFC (Request For Comments) documents. The documents describe the form of the packets and their behaviour when they are transported. Recipients of those packets are able to make their own determinations of their validity without regard to any part of the network implementation between them and the originator.
作为一个比较点,TCP信息包的IP信息包中包含这种要求,我们定义它们是一连串IETF(互联网工程任务组)RFC (置评请求)中的数据结构。上述两个文件描述了信息包的形态和传输信息包时,信息包的行为。信息包接收方,可在没有任何他们与信息发起者之间网络参与的情况下,自己确定信息包是否有效。
An implementation of a router/firewall may offer a feature to capture those packets so that they can be analyzed later, and may offer database queries of those packets, but there is nothing in the nature of an IP packet that makes it a database, nor is there anything in the RFCs that would suggest otherwise. Implementation features and specification are very different things.
任何路由器、防火墙都可以接收这些信息包,然后稍后进行分析,这些仪器或提供信息表的数据质询,但是尽管IP信息包有上述特性,我们并不把它当做数据库,RFC中也没有任何内容可让我们推导到它是数据库的结论。应用特性和自我属性是完全不同的两码事。
Is a blockchain trustless?
区块链不需要人与人之间的信任?
The answer here is no too, but that's because the question is too broad. A blockchain does allow us to require less trust than many traditional systems, but any implementation still requires some level of trust.
这里的答案依然是否定的,但这个问题太宽泛了。借助区块链,与以往传统系统相比,我们的确需要的信任更少,但是区块链的任何应用的执行仍然需要某种程度的信任。
A recipient of block data must trust that it has been delivered without being compromised by some intermediary. The P2P distribution of blocks within the bitcoin and similar networks set out to try to minimize trust in peers, but even this model has potential failure points. Here are a few:
接收方必须信任,数据区块的传送过程中没有被任何中间方改变破坏。 建立比特币内的区块链P2P分布网络和其他网络,其目的是降低人与人之间的信任要求,但是即使是这种模型,依然有某些潜在失败点,举例如下:
We trust that the blockchain software that we are running has not been compromised to deliver falsified data
我们信任区块链软件,相信它在运行中不受破坏,而传输的是非伪造的数据。
We trust that the operating system under which our blockchain software is running has not been compromised to deliver falsified data
我们信任运行区块链软件的运行系统,它在运行中不受破坏,而传输的是非伪造的数据;
We trust that the network processors providing connectivity to our system have not been compromised to deliver falsified data.
我们信任为系统提供网络的中央处理机,相信它不受破坏,而传输的是非伪造的数据。
"In code we trust" makes for an interesting mantra, but 30-plus years of malware, spyware, etc, informs us that this is a highly debatable strategy.
“我们相信编码”是一个有趣的口号,但是恶毒软件,间谍软件等已有超过30年历史,我们依然需要对这种战略持有可疑态度。
A blockchain design does make falsifications harder for an adversary, and makes accidental errors dramatically less likely. We are able to "trust but verify" (within bounds), but this is still a significant improvement over blindly trusting. Most importantly, none of these trust minimizing characteristics are aspects of the P2P network design, but are instead intrinsic to the block encoding.
区块链设计不能加大伪造的难度,但是可疑大大降低偶然失误的可能性。我们可以“信任加证明”(在界限之内),这已经是对盲目信任的巨大改进。更为重要的是,这些消减信任的特点不是P2P网络设计的特征,但它们是区块编码的本质。
Must a blockchain be non-permissioned or can it be permission-less?
区块链不需要许可或需要少量许可?
A blockchain is just a data structure, so really the question makes no sense. Who has the ability to read or write a data structure is a totally different question.
区块链只是数据结构,所以实际上这个问题无意义。谁具有在数据结构上阅读或编写的能力完全是不同的问题。
Let's ignore this subtle distinction for a moment, though, and act as if the question might make sense. Consider the case of bitcoin; who writes the blockchain?
我们先放下这个微妙的区别,但是作为问题,似乎有意义。考虑比特币的例子,谁在编写区块链?
The answer is that miners (or more precisely, block makers such a mining pool operators, not those who just hash blocks) get to write new blocks. Transactors on the network can provide candidate transactions to be included in blocks, but this does not guarantee blocks will ever contain those transactions. With bitcoin we talk about this being 'non-permissioned' because no-one needs any explicit permission to become a block maker.
答案是那些矿工(或更明确些,区块创造者,例如矿池操作者,而不是那些制作哈希区块的人),他们在编写新的区块。网络上的处理工提供备选交易,以便编入区块,但是他们不保证区块中包含这些交易。在比特币中,我们将其称为“未经允许”,因为没有任何人需要明确的许可以成为区块创造者。
If we consider other potential uses of a blockchain design, though, there are is an often very well-defined set of participants who we would wish to be able to write block data. In many cases this may even be one single participant.
如果我们考虑区块链设计的其他潜在应用,其中有一伙明确的参与者,他们希望能够编写区块数据。但在很多情况下,甚至只有一个参与者。
A critique levelled at such potential uses of a blockchain are that this makes it no better than a database, but a conventional database is something in which blind trust must be placed. Its internal state is generally unknowable. Even in its simplest uses a blockchain can at least provide a means to verify the state of such a system, and to do so in a way that enables histories to be validated. This is only the start of the possibilities, however!
这种对区块链潜在用途的批评,让区块链比数据库好不到哪里去,但是传统的数据库中,必须有盲目信任的一席之地,但是区块链的内在状态一般不为人所知。甚至是区块链最简单的用途可以至少为系统提供一种验证方法,为了完成验证,必须确保历史能够被验证。但这只是多种可能的开始!
Is a blockchain the Internet of money (or the Internet of anything else)?
区块链是网络货币吗(或者是其他事物的网络吗?)
Realistically, no, or at least not on its own.
从实际上来说,不会,或者至少它自身不会。
When we looked at "not a database" we also touched on why this claim doesn't really make sense. Superficially the argument seems seductive. The thought is that we can build lots of technology on top of a blockchain in the way that a network stack is layered.
当我们看到“不是数据库”的表述时,我们同时也触及了为什么这个论断不对。从表面上看,论据比较吸引人。有一种看法是,我们可以在区块链之上建立很多技术,如此,一个网络叠加就是一个层。
There are many problems with this proposition, but the obvious one is that a blockchain is just a data structure. It makes a good candidate for being used to convey information across the Internet but doesn't enable anything in and of itself.
这种建议里有很多问题,但最明显的是区块链仅仅是一个数据结构。利用区块链,我们可以在互联网顺利地传递信息,但是区块链并不能生成其内在和外在的任何事物。
Separating the blockchain from any transport of a blockchain, however, does give some hope that blockchains may enable more reliable financial applications over the Internet. A clear separation also allows experimentation at each layer of the system design and this is a key characteristic that has enabled the Internet to be so successful.
将区块链与区块链的传送区分开来, 的确为区块链给出更多希望,即区块链可以帮助创造更有效的互联网金融应用。一个清晰的区分同样让设计系统上每个分层的试验变为可能,这个也是当年确保互联网成功的关键特点之一。
With the Internet, candidates for all layers of the network stack are able to be trialled, replaced or modified, allowing the best designs to win. Similarly the standards-based approach has enabled disparate implementations to work together without preventing commercial advantages from being sought and monetized.
利用互联网,网络堆叠的各层可以实现替换或更改,确保最好的设计胜出。与此相似,以标准为基础的方法,确保不同的应用能协同工作,而不丧失货币化的商业优势。
In the case of blockchains, we have already seen that there is a requirement to support external observers and this mandates a level of interoperability.
区块链的例子,我们已经发现已经存在对外部观察者的必要支持,这需要某种程度上的协同。
Last Thoughts
最后的几点想法
We have looked at what a blockchain might or might not be, and perhaps seen some hints of what it might enable. The technology that underpins bitcoin can be used to build many things, and bitcoin's legacy should not just be bitcoin itself – it has shown the viability of something far more fundamental.
我们已经研究了区块链可能是什么,或不是什么,区块链能实现什么,可能大家已经发现了一些线索。我们可以将支持比特币的技术用来做很多事情,比特币的遗产不能仅仅是它自己—它已经为我们展示出了一个更基础的性质。
The debate over what constitutes a blockchain won't end here, but we need to move the discussion forward and we need to resist the urge to allow it be just another marketing buzzword.
什么构成区块链的讨论不会就此结束,但是我们必须推进讨论,我们必须遏制它变成另外一个市场时髦语的冲动。
To make that happen we need both clear terminology, and well-reasoned usage. We need to avoid conflating many different ideas, and we need technology claims to be realistic and achievable. If we fail then, eventually, the term 'blockchain' will be meaningless and have to be replaced. This seems like the wrong outcome.
要实现上述目标,我们不仅需要明确的定义,还需要合理的使用。我们应避免混合很多不同想法,我们需要那些可行的和可以达到的技术。如果我们失败,“区块链”这个名词将没有任何意义,必须被取代。这将为一个错误的结果。
If we succeed then the idea of a blockchain will not be the end of the story. Instead it will take its place as a layer upon which better and ever-more useful systems can be built.
如果我们成功,那么区块链的想法将不是故事的结尾。区块链将会是一个分层,之后会有更好的,更有用的系统建立在它之上。
By Dave Hudson from DigitalGlobal