主页 > 钱包imtoken > (张磊)没有货币的区块链有意义吗?

(张磊)没有货币的区块链有意义吗?

钱包imtoken 2023-03-12 06:24:45

随着比特币和区块链概念的炒作,越来越多的投资者、企业家、研发人员和政府机构进入这个领域,但每个人的关注点不同。

逐渐形成了两个圈子:“币圈”和“链圈”。

两个圈子之间存在长期争论:

没有原始货币的区块链有意义吗?

在这篇文章中,我从技术的角度来解释它。

首先,我有一个基本观点,即比特币区块链既是经济学的创新,也是计算机科学的创新。 (这里的创新含义很广,包括对现有技术的重组也是一种创新)。因此,区块链本身,即使没有原始货币,对计算机科学的发展也是有价值的,只是与比特币的金融价值不同。

我认为以上两点都是正确的。我想说区块链对于在组织内同步去中心化数据库非常有用。当然,区块链还有其他一些技术特性非常适合在不完全信任的机构之间创建某些类型的交易。

下面,为了说明我的观点,我先从比特币的交易模型,数据库的多版本并发控制(MVCC),多主数据库复制的冲突说起。我尽量用简单的语言来解释,但这是一个技术问题,难免比较晦涩。

1.比特币的交易模型

比特币的交易模型非常简单而强大。每个比特币交易都有一组输入和一组输出。每个输入都“链接”到前一个交易的输出。所有比特币都通过输入进入交易,并通过输出分散。这样一来,所有的交易形成一个“多叉”链,最终以“coinbase”交易结束,新的比特币在该交易中产生。

比特币有一堆额外的规则,网络中的每个节点都遵循:

交易中的每一个输入都必须证明它有权在一个交易的一个输出之前“链接”。该权利受到输出中固有编码的限制。在交易中,所有传入的比特币必须大于所有传出的比特币,唯一的例外是在“coinbase”交易中,因为它创建了一个新的货币单位。每个输出只能“链接”一次,即只能链接到后续交易的一个输入。例如,如果你的一个硬币给了 A,它就不能再给 B。

正是由于这条最后一条规则,比特币网络必须形成共识来决定哪些交易是有效的,哪些是无效的。这就是区块链的用武之地。需要说明的是:

如果两个交易的输入都试图链接前一个交易的相同输出,那么两个交易中只有一个最终被接受。区块链作为一种统一机制来检测和防止网络中的这些冲突。

区块链新币发行

区块链是线性链接的区块链。每个块包含一组交易。这些交易不会相互冲突,也不会与其他区块链接。交易冲突。理论上,比特币网络可以直接运行“多叉”交易链,但我们将多个交易组合成区块以提高效率和实用性。

那么区块链上的加密货币(比特币)的目的是什么?它的存在主要是为了解决谁有权决定每个区块何时生成的问题。因为比特币网络是一个去中心化的结构,没有所谓的管理员和绝对的权威,只有其他的方式来决策和达成共识。

我们或许可以使用“民主”模式,比特币网络中的每个节点都投票,多数人获胜。不幸的是,任何网络民主投票都可以被验证,因为网络伪装(也被称为女巫攻击),代议制民主无法在网络上实现,一个黑客可以控制数千台计算机并决定它们如何投票,从而操纵选举结果。投票,它甚至在我们感觉到之前就发生了。

为了解决这个问题,比特币网络故意通过“挖矿”的过程来增加出块的难度。要创建一个块,您需要首先计算一个无意义的数学难题,这意味着大量的计算能力(以及电费和其他费用)。同时,你也得有点运气,因为全世界还有很多其他矿工在和你竞争。就算你买了更高功率的电脑,也无法长期领先,因为比特币网络会频繁调整问题的难度,保证每10分钟稳定出块。

既然参与比特币网络既困难又昂贵,谁会愚蠢地做这样的苦差事?答案是比特币的“红利”:成功的矿工生成新区块,可以控制“coinbase”交易,获得25比特币奖励(每四年减半),当前市值13.5万元人民币 多元化,矿工支付电费及其他必要费用,并有一定利润。 (矿工也可以获得一定的交易手续费,但比例还是很小。)

这样,比特币利用“工作量证明”形成共识机制,这也是坚持“原生货币”观点的人的一致意见。硬币的概念不能激励矿工的工作,不能保护比特币网络的安全,不能防止伪造交易对比特币的攻击。因此,黑客可能控制比特币网络上的交易数据,使整个比特币网络变得不可能。一文不值。

我同意这一点。这就像一场选举投票。没有出纳员和出纳员(像矿工一样运作)的参与,选举结果肯定毫无意义。

2.多版本并发控制(MVCC)

下面讨论一些不相关的话题,继续分析。

数据库是一种成熟的计算机技术,用于存储结构化数据。数据库中的信息首先按内容分组,称为“数据表”,每个表有很多列,称为“数据项”。例如,我们的银行帐户是一个包含两个最重要列的表:帐号和金额。假设你的账户金额是2000元。今天,你的信用卡需要还1500元。银行会自动从您的账户中扣款。同时,您还想在ATM机上提取800元现金。很遗憾,您的账户资金不足,交易必将失败。

信用卡还款和ATM取现这两个操作是在不同的系统中进行的,但是都需要在你的银行账户上进行操作。我们把这个操作过程分为:读取账户金额、判断是否足够执行操作、完成具体操作(转账或提现)、验证操作是否成功、计算余额并写入数据库。

如果信用卡还款和 ATM 操作不重叠,则交易逻辑非常简单。第一个操作可以成功完成,第二个操作因余额不足而终止。根据实际操作顺序,可能会接到信用卡中心的催款电话,在ATM屏幕上看到余额不足提示。

区块链新币发行

如果这两个操作碰巧同时发生会怎样?在这种情况下,每个操作都必须读取账户金额,确定金额足够,然后完成自己的操作。信用卡转账后,重新计算余额500元并写入数据库; ATM取款后,重新计算余额1200元并写入数据库。写入数据库的余额之一会覆盖写入另一个数据库的余额。根据你的运气,你相当于从银行额外获得了1500或800元的福利。如果你知道了这个秘密,你一定会在信用卡还款的那天去ATM取钱,这样你就发财了。

当然,这在真实的银行交易中不会发生,因为数据库具有“并发控制”技术。并发控制使我们的数据(尤其是财务)保持健康和安全。它有多种形式。其基本思想是将多个数据库操作组合起来,形成一个数据库的“存储过程”,也就是说这些数据库操作必须作为一个整体来看待,要么全部成功,要么全部失败。当存储过程对数据进行操作时,并发控制会锁定数据库(或部分数据库),以防止其他存储过程对该信息的操作引起冲突。

如果我们不需要并行运行存储过程,我们可以在一个存储过程运行时锁定整个数据库,但这在实际运行环境中是不现实的。一个好的并发控制方案应该允许多个存储过程并行运行,锁定尽可能少的数据,并且锁定尽可能短的时间。在上面的例子中,最好的解决方案是只有你的账户被锁定,其他人的账户不被锁定;仅当账户最终校验结果与扣款金额冲突时锁定,其他时间不锁定。这样并行存储过程就不会等待太久的lock-unlock,可以提高效率。

一种更流行的并发控制技术称为多版本并发控制 (MVCC)。每个存储过程看到的是特定时间点的数据快照。快照隔离的属性保证。

在幕后,MVCC 通过维护多个数据版本来工作,每个版本都有一个代表上次修改时间的时间戳。修改 MVCC 中的一条数据,将当前版本标记为删除,并在更新了时间戳的新版本中执行修改操作。从数据存储的角度来看,不会发生数据修改。当每个存储过程启动时,它准确地知道最后一个时间戳标识的数据的版本。一旦没有存储过程可能使用这些数据版本,旧版本的快照就会从存储空间中删除。

我陈述这些关键点的目的是说 MVCC 有效地防止了写入之间的冲突。重要说明:

如果两个存储过程尝试删除相同版本的数据,则只有其中一个存储过程最终会被接受。 MVCC 作为一种统一机制来检测和防止数据库中的这些冲突。

3.多主数据库复制

现在我们讨论数据库的复制,即数据库需要多次备份。很多应用场景都需要数据库复制:

为了提高系统可靠性。当某个数据库丢失(数据意外删除或硬盘故障)时,我们可以立即切换到备份数据库;提升系统的吞吐量,尤其是在交易量过大超过单台服务器负载的情况下;减少延迟,对于所有全球或跨区域的业务,通过在多个位置部署数据库来减少系统延迟。

如果只涉及数据库“读取操作”,那么数据库复制是一个理想的解决方案,因为所有复制的数据库都包含相同的数据信息。但是当涉及到数据库的“写入”时,问题就变得非常棘手,因为我们需要决定应该在哪里执行写入以及如何同步到其他数据库。

区块链新币发行

最常见的解决方案是使用“主从”数据库复制模型(主从),其中一个数据库(主数据库)被认为是绝对权威的,对数据的任何修改都只能在主库上完成,然后通过事务日志的方式,可以将数据修改同步到所有其他从库。这使所有数据库同时保持同步。

问题是,如果主库修改非常频繁,那么主库就会成为瓶颈,而我们希望用主从模型解决的可靠性、吞吐量和延迟问题仍然无法解决。

更复杂的解决方案是多主复制,其中所有数据库都可以是主数据库,每个数据库都可以执行“写操作”。在这种模式下,每个数据都以点对点的方式保持同步。

理论上听起来很简单,但是多主数据库模型的一个新问题是可能会出现冲突。如果两个数据库同时修改相同的信息,如何交换相互更新的信息?两个数据库都注意到即将发生更新冲突,它们必须就解决冲突的策略达成一致。这个东西比较复杂,可以参考MYSQL、SQL Server或者Oracle的一些冲突解决策略的案例。

这两个话题(MVCC 和 multi-master)给了我们新的灵感:

如果我们使用多版本并发控制 (MVCC) 来防止多主数据库,复制(多主)冲突不是很好吗?

嗯,我认为这会非常好。我相信这正是区块链技术正在做的事情。

区块链作为一种 MVCC

让我们比较一下我之前写的两段:

如果两个存储过程尝试删除相同版本的数据,最终将只接受其中一个存储过程。 MVCC 作为一种统一机制来检测和防止数据库中的这些冲突。

如果两个交易的输入试图链接相同的输出,那么最终只会接受其中一个交易。区块链作为一种统一机制来检测和防止网络中的这些冲突。

区块链新币发行

这两句话基本相同,所以我对区块链有了一个新的定义:(技术上)

区块链提供分布式版本并发控制机制。

当然,我并不是说区块链是解决分布式数据库同步问题的伟大通用技术,因为还有其他技术,如 Paxos、Raft 等。但我相信区块链作为一个应用系统有很多闪光点:

1)我们接受的交易之间有短暂的延迟,即交易的确认需要一定的时间(这应该以秒为单位,而不是比特币的10分钟);

2)如果系统正常运行,永远不会发生冲突事务;

3)每笔交易的容量是有限的(否则区块链交易会有大量的输入);

4)每个数据库的结构都不大(防止我们的区块链不断扩展)。

以上是金融(金融)系统普遍采用的标准。金融交易和最终结算通常会出现延迟(最多 3 天)。在预防冲突方面,它有合同和规定来发现后果可能很严重的欺诈行为。考虑到上面的银行账户示例,每笔交易涉及的数据量非常小。

到目前为止,我分析和演示的是区块链作为分布式数据库的另一种同步机制。让我们看看区块链的其他特性。

区块链超越 MVCC

比特币的交易模型不仅仅是一输入一输出,即使是最简单的比特币交易也有两个额外的目的。

区块链新币发行

首先,一个事务是否有效,判断规则包含了我们数据库的一些应用逻辑。一笔交易中输入比特币的总量必须大于输出的总量。转化为数据库应用程序的逻辑是不允许数据库交易(coinbases 除外)增加数据库中比特币的总量。这个约束超出了常规数据库存储过程的能力,因为它不能解决问题。

其次,回顾一下,每个比特币交易输出都包含一个代码,用于确定哪个输入可以连接到该输出。对于常规的比特币输出,编码是基于公钥加密的,即在输出“脚本”中嵌入了一个公共地址,只能使用与公共地址对应的私钥使用。如果我们将其视为数据库中的一行数据,那么我们所拥有的就是一个基于公钥加密的具有权限的数据库。此外,每笔交易都会进行公开审计,证明其创建者有权删除/修改。我相信这是一种真正新颖的数据库技术。

这两个函数对金融系统非常有用。

硬币去哪儿了?

比特币是一个美丽的P2P金融系统,但正如我们前面提到的,区块链的特性实际上并不是由“币”产生的。如果我们用交易中的数据信息来代表一种(或多种)资产,而不是区块链的原生货币,那么区块链就可以彻底摆脱“货币”的名义,实现任何资产的金融应用。安全和共识。

但是只有一个小问题,谁来挖掘这个共识?在比特币的网络中,匿名矿工必须执行昂贵的计算才能获得区块链本地货币(比特币)的奖励,我们还有其他选择吗?

我有一个解决办法,就是对矿工采取“雇佣制”,通过支付报酬的方式,授权部分矿工拥有挖矿的权利。只要矿工数量足够多,分布足够广区块链新币发行,就可以维持区块链的共识形成。同时,我们还会设计其他规则,防止挖矿被少数人控制,通过法律合同防止他们结伙。这在比特币网络中是不可能的,但在高度监管的金融体系中确实是非常真实的。

总结

希望我把我的观点说清楚,一个区块链即使不发行本币也是有价值的,尤其是在真实的金融应用系统中,价值会越来越明显,甚至超过比特币的地位,其实应该是参考研究企业级区块链的项目。

虽然它们有不同的权限模型和经济激励,但在“共享票据”中,它们在技术上是相同的区块链新币发行,都提供了由分布式数据库上的块形成的链的结构形成共识。

作者简介:**** 张磊

比特币和区块链研究员

“点币”创始人

目前从事区块链项目咨询、项目研发,并进行在线视频教学,在线视频课程《比特币与数字加密货币技术》正在招生中。