区块链数字金融:数字经济时代的新引擎
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 密码学、共识算法、分布式账本、智能合约

区块链技术最初是数字货币的一种底层技术,融合了密码学、共识算法、智能合约等多种技术。要理解区块链的工作原理,需明确几个概念,分别是密码学、共识算法、分布式账本和智能合约。

(1)密码学

密码学分为两部分:第一部分是编码学,应用于编制密码以保证通讯的私密性;第二部分是破译学,应用于破译密码以获取通信的内容。两部分合在一起总称为密码学。区块链上的区块是由两个哈希值和一个存储空间组成,每个区块只和它的前一个区块相关联,是通过哈希值关联起来的。目前可把哈希值理解为身份证号,一个是自己的,一个是跟自己关联的前一个区块的。哈希值是通过密码学中的哈希算法得到的,这就是我们重点要关注的。

在现代密码学中,需要面临信息传输中出现的机密性、完整性、可认证性和不可抵赖性等问题,因此诞生了大量相关的安全算法,被运用到了不同的场景之中,这些密码学的知识浩瀚丰富,论证过程精彩复杂。在区块链技术中,同样用到了大量的密码学知识来保障系统的相关特性,相关的算法主要包括哈希算法、对称加密算法、非对称加密算法、签名机制等。

非对称加密算法是相对于对称加密算法来说的。对称加密算法,在加密和解密时使用的是同一个秘钥;而非对称加密算法,需要两个密钥来进行加密和解密,这两个秘钥是公钥和私钥。公钥与私钥是一对,用公钥对数据进行加密,只有用对应的私钥才能解密;用私钥对数据进行加密,只有用对应的公钥才能解密。加密和解密使用的是两个完全不同的密钥,这种算法就叫非对称加密算法。

(2)共识算法

在区块链的应用过程中,共识算法需要解决两个问题:双花问题和拜占庭将军问题。双花问题是指货币在使用过程中重复使用的问题。传统的货币具有实体唯一性,可以通过防伪手段防止双花问题。当前的电子交易也能通过中心的信任机构来解决双花问题。区块链则是通过分布式的节点共同验证交易来解决双花问题。区块链中,一笔交易需要经过足够数量共识节点的验证,在确认无误时对交易进行记录并同步给网络中所有的共识节点。区块链中进行“双花”攻击需要付出足够的代价,通过选择共识算法,可以将这一代价扩展到足够大或者使得这一代价超过双花攻击获得的收益。

目前大家熟知的共识机制有PoW、PoS、DPoS、拜占庭共识等。

PoW即工作量证明,其共识简单来说就是:要想得到就得付出代价,付出代价的方式是解题,谁先解出来,奖励就归谁,一旦计算出来,要马上告诉大家,大家会帮你验证,大家都承认后你就可以拿到这个奖励,然后基于这道题目继续算下一个题目,如此反复。它有效解决了拜占庭将军问题,即在互相不信任的情况下,只要好人的数量大于坏人,就能保证系统正确运转,这也就是说,区块链具备去信任的能力。它的弊端在于,会造成巨大的能源浪费,同时由于利益的驱使,部分人想尽一切办法来增加自己的算力,从而形成相应的中心,这显然有悖于当初去中心化的构想。

PoS(Proof-of-Stake)即权益证明,在PoS机制下,一个账户的余额越多,持币时间越长,在同等算力下就越容易发现下一个区块,而不像PoW机制那样单纯拼算力。这有点复利的感觉,而且它能有效避免资源浪费,所以更能调动参与者的积极性。

DPoS与PoS原理相同,只是会选一些代表,由代理人进行验证和记账。表面看这似乎又重新把权力交给了那些持有数字货币较多的人,实际上,真正的决定权掌握在那些握有BTS选票的人手上。他们可以随时通过投票更换这些代表,试图用权益作恶者会立刻被愤怒的选民们踢出整个系统,而后备代表可以随时顶上。从某种角度来说,它有点像美国的议会制度,只不过不是四年一次选举,而是时刻都在选举中。

拜占庭共识即授权拜占庭容错算法,它源于古代的拜占庭将军问题。在古代,一些拜占庭的将军率领部队攻占敌人的城池时,每个将军只能控制自己的部队,并通过信使传递消息给其他将军。如果这些将军中有人是来自敌方的奸细,那么如何使忠诚的将军仍然可以达成行动协议而不受奸细的挑拨,便是拜占庭将军问题。分布式系统的每一个节点可以类比成将军,服务器之间的消息传递可以类比成信使,服务器可能会发生错误而产生错误的信息传达给其他服务器。在以前,这是无解的,授权拜占庭容错算法则是技术进步带来的解决方案。授权,意味着它拥有专业化的记账人;容错,是说它可以容忍任何类型的错误。此外,为提高算法的可靠性,需要有严格的数学证明。它的核心优势是可以确保系统的最终性,从而使得区块链能够适用于真正的金融应用场景。

(3)分布式账本

从字面意思理解,区块链就是一个有着不同节点的记账本。参与区块链的每一个节点没有地域和国界的限制,是全球性的。在我们的生活中,账本是集中管理的,每个人的账本都在银行里,当然你也可以每天记录自己银行卡的流水,但最终还是以银行的记录为准。我们每一个人的账本都由银行保存,这就是中心化记账或者说中心化账本。但在区块链上,每个人都有一本账本,记录着每个人的每一笔交易,而且这些账本上的内容是完全一致的,前提是通过共识机制协调,这就是多方参与的账本。

分布式账本是一种在网络成员之间共享、复制和同步的数据库。分布式账本记录网络参与者之间的交易,这种共享的账本降低了因调解不同账本所产生的时间和信用成本。网络中的参与者根据共识原则来制约和协商账本中记录的更新,没有中间的第三方机构参与。分布式账本中的每条记录都有一个时间戳和唯一的密码签名,这样的账本成为了网络中所有交易的可审计的历史记录。

分布式账本技术可以有效改善当前基础设施中出现的效率极低、成本高昂的问题,而导致当前市场基础设施成本高的原因可以分为三个:交易费用、维护资本的费用和投保风险费用。在某些情况下,特别是在有高水平的监管和成熟市场基础设施的地方,分布式账本技术更有可能形成一个新的构架,而不是完全代替当前的机构。

(4)智能合约

所谓智能合约,就是一个预先编辑好的“数字语言记录的条款”,一旦被触发,智能合约就执行相应的条款或记录条款是否被执行。简单来说,智能合约是将具体条款以计算机语言而非法律语言记录的智能化合同。智能合约属于区块链技术的进化,但其概念要早于区块链,可以说区块链技术为智能合约提供了一种可能。

举例说明,你好心借了一笔钱给某人,还款日期临近,此人却不打算还了,这时理性的办法就是跟他打官司,但你必须有相应的合约,不然你没法证明你曾经借过钱给他,他完全可以抵赖到底。智能合约的本质,则是用一串计算机可读取的代码代替法官,当某个预先编制好的条件被触发时,智能合约会自动执行相应的合同条款,无法反悔,绝不拖延。

智能合约在现实生活中已有普遍应用。最好的例子就是售货机,只要我们放相应金额的钞票或硬币进去,系统就会触发让我们选择商品的选项,选择完以后,售货机中的商品就会掉下来。另一个例子是股票交易所,只要设定好触发机制,价格涨跌到某个价位就会自动成交。但是,它们显然还只是智能合约应用的初级阶段,因为它的智能存在巨大局限性,无论是参与的人,还是参与的物。

智能合约是运行在计算机里面的、用于保证参与方执行承诺的代码。一般情况下,普通合约上记录了甲方与乙方各方面的关系条款,并通常是通过法律强制执行或保护的,而智能合约则是用密码或密钥来执行关系。从更加直接的角度来理解,智能合约的程序内容将按照一开始大家一起设定好的规则百分百执行,并且零差错。

那么,智能合约能做什么呢?

①“多签名”账户功能,只有在一定比例的人同意时才能使用资金。这个功能经常用在与众筹或募捐类似的活动中。

②管理用户之间签订的协议。例如,一方从另一方购买保险服务。

③为其他合同提供实用程序。

④存储有关应用程序的信息,如“域注册信息”或“会员信息记录”。

智能合约的出现使得基于区块链的两个人不只可以进行简单的价值转移,还可以设定复杂的规则,由智能合约自动、自治地执行,这极大地扩展了区块链的应用可能性。利用智能合约,我们可以进行复杂的数字资产交易。