云平台上以太坊隐私和可扩展性解决方案的公开测试

区块链技术的发展势头持续强劲。越来越多的专家预测,这项技术将在不久的将来得到广泛应用。然而,仍有一些挑战亟待解决。

首先,现代区块链系统的可扩展性较差。例如,以太坊的吞吐量仅为每秒 20 笔交易,尽管它有很多优势,但并不适合大型企业。

与此同时,以太坊也因其强大的抗黑客攻击和网络故障能力而备受青睐。因此,不应轻视它。更实际的做法是解决以太坊的不足之处,并将其转化为优势。

云平台上以太坊隐私和可扩展性解决方案的公开测试

Plasma Cash 作为以太坊的隐私和可扩展性解决方案

Plasma 是以太坊项目联合创始人 Vitalik Buterin 在 2018 年巴黎 EthCC 大会上提出的技术。它由 Vitalik Buterin 与闪电网络联合创始人 Joseph Poon 共同开发,旨在提升以太坊区块链的计算能力。Plasma 的相关信息最早于 2017 年泄露给媒体。

该平台是一个外部智能合约层,可以与主区块链交互,从而减轻根链的负担,并降低智能合约和去中心化应用程序(DApp)的交易费用。

有关该开发项目的详细信息已在文件中列出。Plasma:可扩展的自治智能合约”,日期为 2017 年 8 月。

Buterin 承认 Plasma 存在固有的可扩展性问题:每个用户都必须下载并验证每个 Plasma 区块的真实性,这阻碍了指数级扩展。

为了解决这一缺陷,Plasma Cash应运而生——它是一条子链,由智能合约和基于Node.js的私有网络组成,定期向根链(以太坊)广播其状态。它确保了区块链的去中心化、安全性和可扩展性,从而解决了可扩展性三难困境。

Plasma Cash 相对于 Plasma 的一个主要优势在于,它只会将用户的注意力吸引到包含他们感兴趣的币种的区块上:

Buterin表示:“现在用户只需检查Plasma链上与他们想要花费、拥有和感兴趣的代币相关的特定指数的可用性和有效性即可。”

据开发者称,Plasma Cash 是以太坊的一种有效反黑客解决方案。每个 Plasma 代币都拥有唯一的持有者。未经用户许可,任何人均无法占有其他用户的代币。代币持有者可以通过“投诉”系统,在其代币历史记录中提交“证据数据”,从而防止潜在的欺诈性提现。

在 Mongo Atlas 中测试 Plasma Cash

由于 Plasma Cash 尚属新兴技术,目前对其研究尚不充分。区块链专家正在积极测试其与各种云服务和数据库的交互,以发现任何不足之处并寻找解决方案。具体而言,在 Mongo Atlas 中进行的测试表明,Plasma Cash 在与各种云服务和数据库交互时具有以下优势:

  1. 可靠的数据丢失防护因为集群中的多个副本会彼此同步。
  2. Быстрыйдоступ由于集群可以在三大主流云平台(Amazon、Google 和 Azure)上创建,因此 Plasma Cash 节点可以部署在靠近 Mongo Atlas 的多个数据中心。我们已经证明,即使 Plasma 节点部署在更远的数据中心,速度也不会显著下降。
  3. 以只读模式使用的 Plasma 节点可以连接到单个 MongoDB 集群,并且可以位于世界各地。 提高地理可扩展性 (节点距离用户更近)。
  4. 部署新节点很容易因为您无需重新同步所有内容。您可以直接连接到现有的 MongoDB 集群,或者快速创建一个副本并配置连接。
  5. 数据库扩展很容易随着时间的推移,数据量会增加,集群中节点的大小可以根据需要增加。

云平台上以太坊隐私和可扩展性解决方案的公开测试

我们使用以下服务器进行测试:

  • 三台 Azure 标准 E4s v3 虚拟服务器(4 个虚拟 CPU,32 GiB 内存)。每台服务器运行三个节点。其中一个节点可以向根链提交区块。
  • 每个节点都连接到自己的 Mongo Atlas M50 集群,该集群包含 3 个处于副本模式的节点。

测试 1

三个节点各接收 10 万笔交易。总共九个节点持有 30 万笔交易和代币。

播放视频

初始状态: 最后一个区块 #213;数据库中存储了 0 笔交易和代币。

00:00 — 启动了三个脚本,每个脚本生成并发送了 100,000 笔交易。
00:29 — 已有 100 万笔交易开始发送到节点 #1 和 #2。
00:32 — 已有 100 万笔交易开始发送到 3 号节点。
00:32 — 节点 #1 从池中取出 11703 笔交易,形成区块 #214 (9fb)
00:34 — 节点 #2 从池中取出 27088 笔交易,并形成区块 #214 (ef4)
00:34 — 区块 #214 (9fb) 已签名并发送到其他节点进行验证。
00:36 — 节点 #3 从池中接收了 11900 笔交易,并形成了区块 #214 (983)
00:37 — 第 214 区块(9fb)已验证并推送至根链
00:38 — 区块 #214 (983) 已签名并发送到其他节点进行验证。
00:38 — 第 214 块 (ef4) 已签名并发送到其他节点进行验证
00:40 — 第 214 区块 (983) 已验证并发送至根链
00:41 — 所有节点都已收到来自根链的信息,区块 #214 (9fb) 已添加,并开始应用 11703 笔交易。
00:45 — 所有节点都已收到来自根链的信息,区块 #215 (983) 已添加,并开始应用 11900 笔交易。
00:51 — 区块 #214 (ef4) 已验证并发送至根链
00:52 — 节点 #1 从池中取出 51469 笔交易,并形成区块 #216 (ea0)
00:56 — 节点 #3 从池中取出 55102 笔交易,形成区块 #216 (f75)
00:58 — 演示脚本已完成对节点 #2 的操作。
00:58 — 区块 #216 (ea0) 已签名并发送到其他节点进行验证。
00:58 — 所有节点都已收到来自根链的信息,即区块 #216 (ef4) 已添加,并开始应用 27088 笔交易。
01:04 — 第 216 区块 (f75) 已签名并发送到其他节点进行验证
01:14 — 节点 #2 从池中取出 72912 笔交易,形成区块 #217 (f85)
01:15 — 演示脚本已完成对节点 #1 和 #2 的操作。
01:17 — 区块 #216 (f75) 和 #216 (ea0) 已验证并发送到根链
01:21 — 第 217 号区块 (f85) 已签名并发送到其他节点进行验证
01:26 — 区块 #217 (f75) 和 #218 (ea0) 被添加到根链,节点分别开始应用 51469 和 55102 笔交易。
01:27 — 区块 #217 (a85) 已验证并发送到根链
01:41 — 节点 #1 从池中取出 36828 笔交易,形成区块 #219 (46f)
01:41 — 节点 #3 从池中取出 32998 笔交易,形成区块 #219 (bb3)
01:43 — 所有节点都已收到来自根链的信息,区块 #219 (a85) 已添加,并开始应用 72912 笔交易。
01:46 — 第 219 区块 (46f) 已签名并发送到其他节点进行验证
01:46 — 区块 #219 (bb3) 已签名并发送到其他节点进行验证。
01:53 — 节点 #2 处理了池中的所有 100 笔交易。
02:37 — 第 219 区块 (bb3) 已验证并发送至根链
02:41 — 区块 #219 (46f) 已验证并发送到根链
02:48 — 区块 #220 (bb3) 和 #221 (46f) 被添加到根链,节点开始分别应用 32998 和 36828 笔交易。
02:54 — 节点 #1 处理了池中的所有 100 笔交易。
02:55 — 节点 #3 处理了池中的所有 100 笔交易。
04:12 — 所有节点包含 300 万笔交易和代币(最后一个区块 #221)

测试 2

三个节点各接收 100 万笔交易。总共九个节点包含 300 万笔交易和代币。

播放视频

初始状态: 最后一个区块 #213;数据库中存储了 0 笔交易和代币。

00:00 — 3 个脚本启动,每个脚本生成并发送 1 万笔交易。
02:29 — 1 万笔交易已开始发送到节点 #1 和 #2。
02:33 — 节点 #1 从池中接收了 11668 笔交易,并形成了区块 #222 (510)
02:35 — 区块 #222 (510) 已签名并发送到其他节点进行验证。
02:37 — 第 222 区块 (510) 已验证并发送至根链
02:38 — 节点 #2 从池中取出 46378 笔交易,形成区块 #222 (a9d)
02:38 — 1 万笔交易开始发送到节点 #3
02:41 — 节点 #3 从池中接收了 5504 笔交易,并形成了区块 #222 (387)
02:42 — 区块 #222 (387) 已签名并发送到其他节点进行验证。
02:44 — 区块 #222 (a9d) 已签名并发送到其他节点进行验证。
02:44 — 第 222 区块 (387) 已验证并发送至根链
02:49 — 区块 #222 (a9d) 已验证并发送到根链
02:56 — 区块 #222 (510)、#223 (387) 和 #224 (a9d) 被添加到根链,节点开始分别应用 11668、5504 和 46378 笔交易。
03:09 — 节点 #1 从池中取出 177170 笔交易,形成区块 #225 (e50)
03:09 — 节点 #3 从池中取出 119327 笔交易,并形成区块 #225 (ccc)
03:10 — 节点 #2 从池中接收了 149772 笔交易,并形成了区块 #225 (404)
03:26 — 区块 #225 (ccc) 已签名并发送到其他节点进行验证。
03:32 — 区块 #225 (404) 已签名并发送到其他节点进行验证。
03:33 — 区块 #225 (e50) 已签名并发送到其他节点进行验证。
03:53 — 第 225 区块 (ccc) 已验证并发送至根链
04:03 — 第 225 个区块 (e50) 已验证并发送到根链
04:04 — 第 225 区块 (404) 已验证并发送至根链
04:06 — 所有节点都已收到来自根链的信息,区块 #225 (ccc) 已添加,并开始应用 119327 笔交易。
04:14 — 所有节点都已收到来自根链的信息,区块 #226 (404) 已添加,并开始应用 149772 笔交易。
04:16 — 所有节点都已收到来自根链的信息,区块 #227 (e50) 已添加,并开始应用 177170 笔交易。
04:32 — 节点 #3 从池中取出 209436 笔交易,形成区块 #228 (1e9)
04:40 — 节点 #2 从池中取出 212669 笔交易,形成区块 #228 (e38)
04:40 — 节点 #1 从池中接收了 190144 笔交易,并形成了区块 #228 (861)
05:02 — 第 228 区块 (1e9) 已签名并发送到其他节点进行验证
05:08 — 区块 #228 (861) 已签名并发送到其他节点进行验证。
05:10 — 区块 #228 (e38) 已签名并发送到其他节点进行验证。
06:13 — 第 228 个区块 (1e9) 已验证并发送到根链
06:13 — 第 228 区块 (861) 已验证并发送至根链
06:13 — 第 228 个区块 (e38) 已验证并发送到根链
06:39 — 区块 #228 (861)、#229 (1e9) 和 #230 (e38) 被添加到根链,节点开始分别应用 190144、209436 和 212669 笔交易。
07:07 — 节点 #1 从池中取出 199770 笔交易,形成区块 #231 (e04)
07:09 — 节点 #2 从池中取出 190473 笔交易,形成区块 #231 (36e)
07:09 — 节点 #3 从池中取出 178807 笔交易,形成区块 #231 (f43)
07:34 — 区块 #231 (e04) 已签名并发送到其他节点进行验证。
07:37 — 第 231 区块 (36e) 已签名并发送到其他节点进行验证
07:37 — 第 231 区块 (f43) 已签名并发送到其他节点进行验证
08:49 — 第 231 个区块 (e04) 已验证并发送到根链
08:51 — 区块 #231 (f43) 已验证并发送到根链
08:52 — 区块 #231 (36e) 已验证并发送至根链
09:47 — 区块 #231 (e04)、#232 (f43) 和 #233 (36e) 被添加到根链,节点开始分别应用 199770、178807 和 190473 笔交易。
10:16 — 节点 #1 从池中取出 153075 笔交易,形成区块 #234 (e04)
10:16 — 节点 #2 从池中取出 168035 笔交易,形成区块 #234 (36e)
10:16 — 节点 #3 从池中取出 166685 笔交易,形成区块 #234 (f43)
10:42 — 区块 #234 (56d) 已签名并发送到其他节点进行验证。
11:59 — 第 234 个区块(1bb)已验证并发送到根链
12:02 — 区块 #234 (58a) 已验证并发送至根链
12:02 — 第 234 区块(56 天)已验证并推送至根链
12:48 — 区块 #234 (1bb)、#235 (58a) 和 #236 (56d) 被添加到根链,节点开始分别应用 153075、168035 和 166685 笔交易。
13:14 — 节点 #1 从池中取出 112226 笔交易,形成区块 #237 (5c0)
13:16 — 节点 #2 从池中取出 87550 笔交易,形成区块 #234 (58a)
13:16 — 节点 #3 从池中取出 99594 笔交易,形成区块 #234 (56d)
13:30 — 第 237 个区块 (5c0) 已签名并发送到其他节点进行验证
13:32 — 第 237 区块 (58a) 已签名并发送到其他节点进行验证
13:34 — 区块 #237 (56d) 已签名并发送到其他节点进行验证。
14:47 — 区块 #237 (58a) 已验证并发送至根链
14:53 - 区块 #237 (5c0) 未在规定时间内验证通过
14:53 - 所有节点都已收到来自根链的信息,区块 #237 (58a) 已添加,并开始应用 87550 笔交易。
14:54 — 第 237 区块(56 天)已验证并推送至根链
15:02 — 节点 #1 从池中取出 181206 笔交易,并形成区块 #238 (c5f)
15:06 — 所有节点都已收到来自根链的信息,区块 #238 (56d) 已添加,并开始应用 99594 笔交易。
15:12 — 节点 #2 从池中取出 51990 笔交易,形成区块 #239 (ad8)
15:20 — 区块 #239 (ad8) 已签名并发送到其他节点进行验证。
15:25 — 节点 #3 从池中接收了 46685 笔交易,并形成了区块 #239 (857)
15:30 — 第 238 块 (c5f) 已签名并发送到其他节点进行验证
15:34 — 区块 #239 (857) 已签名并发送到其他节点进行验证。
16:32 — 第 239 区块 (857) 已验证并发送至根链
16:42 — 所有节点都已收到来自根链的信息,区块 #239 (857) 已添加,并开始应用 46685 笔交易。
16:42 — 第 238 区块 (c5f) 已验证并发送到根链
16:42 - 区块 #239 (ad8) 未在规定时间内验证通过
16:54 — 节点 #2 从池中取出 96882 笔交易,形成区块 #240 (e6e)
16:56 — 节点 #3 从池中取出 39704 笔交易,形成区块 #240 (a47)
17:02 — 第 240 个区块 (a47) 已签名并发送到其他节点进行验证
17:02 — 区块 #240 (e6e) 已签名并发送到其他节点进行验证。
17:18 - 所有节点都已收到来自根链的信息,即区块 #240 (c5f) 已添加,并开始应用 181206 笔交易。
17:45 — 区块 #240 (a47) 已验证并推送至根链
17:47 — 节点 #1 从池中接收了 54956 笔交易,并形成了区块 #241 (170)
17:59 — 区块 #241 (170) 已签名并发送到其他节点进行验证。
18:09 — 所有节点都已收到来自根链的信息,区块 #241 (a47) 已添加,并开始应用 181206 笔交易。
18:20 — 节点 #3 从池中接收了 39104 笔交易,并形成了区块 #242 (955)
18:24 — 第 240 个区块 (e6e) 已验证并发送到根链
18:28 — 区块 #242 (955) 已签名并发送到其他节点进行验证。
18:09 — 所有节点都已收到来自根链的信息,区块 #242 (e6e) 已添加,并开始应用 96882 笔交易。
19:06 — 演示脚本已完成对节点 #1 的操作。
19:08 — 演示脚本已完成对节点 #2 的操作。
19:08 — 节点 #2 从池中取出 48241 笔交易,并形成区块 #243 (fde)
19:14 — 区块 #243 (fde) 已签名并发送到其他节点进行验证。
19:18 - 区块 #241 (170) 未在规定时间内验证通过
19:28 — 节点 #1 从池中取出 86967 笔交易,形成区块 #243 (37c)
19:35 — 第 242 区块 (955) 已验证并发送至根链
19:40 — 第 243 区块(37c)已签名并发送到其他节点进行验证
20:05 — 所有节点都已收到来自根链的信息,区块 #243 (955) 已添加,并开始应用 39104 笔交易。
20:15 — 区块 #243 (fde) 已验证并推送至根链
20:19 — 节点 #3 从池中取出 42981 笔交易,形成区块 #244 (9b5)
20:26 — 第 244 块 (9b5) 已签名并发送到其他节点进行验证
20:28 - 所有节点均收到来自根链的信息,确认区块 #244 (fde) 已添加,并开始应用 48241 笔交易。
20:32 — 节点 #2 处理了池中所有 1kk 笔交易
21:05 - 区块 #243 (37c) 未在规定时间内验证通过
21:15 — 节点 #1 从池中取出 86967 笔交易,形成区块 #245 (37c)
21:32 — 第 245 区块(37c)已签名并发送到其他节点进行验证
21:42 — 第 244 区块 (9b5) 已验证并发送至根链
21:50 — 所有节点都已收到来自根链的信息,区块 #245 (9b5) 已添加,并开始应用 42981 笔交易。
22:04 — 节点 #3 从池中取出 45361 笔交易,形成区块 #246 (3f9)
22:11 — 第 246 区块 (3f9) 已签名并发送到其他节点进行验证
22:51 - 区块 #245 (37c) 未在规定时间内验证通过
23:01 — 节点 #1 从池中取出 86967 笔交易,形成区块 #246 (37c)
23:08 — 演示脚本已完成对节点 #3 的操作。
23:15 — 第 246 区块(37c)已签名并发送到其他节点进行验证
23:32 - 区块 #246 (3f9) 未在规定时间内验证通过
23:42 — 节点 #3 从池中取出 52173 笔交易,形成区块 #246 (71d)
23:51 — 区块 #246 (71d) 已签名并发送到其他节点进行验证。
24:38 - 区块 #246 (37c) 未在规定时间内验证通过
25:01 — 节点 #1 从池中取出 86967 笔交易,形成区块 #246 (37c)
25:06 — 第 246 区块(71 天)已验证并推送至根链
25:12 — 第 246 区块(37c)已签名并发送到其他节点进行验证
25:14 — 所有节点都已收到来自根链的信息,区块 #246 (71d) 已添加,并开始应用 52173 笔交易。
25:29 — 节点 #3 处理了池中所有 1kk 笔交易
26:40 - 区块 #247 (37c) 未在规定时间内验证通过
26:47 — 节点 #1 从池中取出 86967 笔交易,形成区块 #247 (37c)
27:03 — 第 247 区块(37c)已签名并发送到其他节点进行验证
28:29 - 区块 #247 (37c) 未在规定时间内验证通过
28:35 — 节点 #1 从池中取出 86967 笔交易,形成区块 #247 (37c)
28:49 — 第 247 区块(37c)已签名并发送到其他节点进行验证
30:13 - 区块 #247 (37c) 未在规定时间内验证通过
30:23 — 节点 #1 从池中取出 86967 笔交易,形成区块 #247 (37c)
30:38 — 第 247 区块(37c)已签名并发送到其他节点进行验证
32:00 - 区块 #247 (37c) 未在规定时间内验证通过
32:11 — 节点 #1 从池中取出 86967 笔交易,形成区块 #247 (37c)
32:26 — 第 247 区块(37c)已签名并发送到其他节点进行验证
33:49 - 区块 #247 (37c) 未在规定时间内验证通过
33:59 — 节点 #1 从池中取出 86967 笔交易,形成区块 #247 (37c)
34:12 — 第 247 区块(37c)已签名并发送到其他节点进行验证
35:34 — 区块 #247 (37c) 已验证并发送到根链
35:54 — 所有节点都已收到来自根链的信息,区块 #247 (37c) 已添加,并开始应用 86967 笔交易。
36:11 — 节点 #1 处理了池中所有 1kk 笔交易
55:12 — 第一个节点处理了全部 3kk 笔交易。

云平台上以太坊隐私和可扩展性解决方案的公开测试

结果

经测试发现,Azure 虚拟服务器的处理能力不足以处理如此大量的事务。然而,该系统在主要测试目标——验证 Plasma Cash 与 MongoDB 的兼容性——方面表现良好。

我们邀请您参观 GitHub上 项目: https://github.com/opporty-com/Plasma-Cash/tree/new-version

这篇文章的共同作者是 亚历山大·纳西万, 高级开发人员 聪明解决方案公司.

之前是一个开发团队 Opporty 我已经测试过 Plasma Cash 的速度。结果如下所示。 这篇文章.

来源: habr.com

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster