PPIO 的状态通道设计

逍遥 9668 0

PPIO 的定位不只是是做存储,还有数据分发和数据传输。在数据传输的时分,怎样确保数据传输的流量也选用一种公平的,不可狡赖的办法来完毕的。这就是我这篇文章要说明的情况通道。PPIO 就是通过情况通道的机制来完毕数据传输的公平计量。


传统意义的情况通道机制


情况通道在区块链领域是个现已存在的姓名,首要运用于高频生意和微支付。由于在这两个场景下,生意吞吐量会非常大, 假定一切的操作都是在需求一同的去中心化的链上操作,功用低会成为重要问题。


情况通道的处理思路,实质是在生意高吞吐量和验证者的去中心化之间做一个平衡。具体来说,就是把两两生意的细节,放在链下去洽谈完毕,当多步生意完毕后,或许生意发作争议,再通过区块链技术进行“断定”。


为了说明情况通过,咱们先做个假定,两个人 Alice 和 Bob,后边也或许简称 A 和 B。假定 Alice 在一开始的资产是10,Bob 在一开始的资产也是10,他们之间即将发作一系列高频的微支付。咱们开始仿照这个情况通道。


157283348478964.jpg

图: Alice 和 Bob 运用情况通道生意的示意图

整个进程大约分为以下几步:


1. Alice 或许 Bob 创立于一个情况通道智能合约 Contract,后边会简称 C,此时情况通道处于 opening。这个进程是要上链的。


2. Alice 将10个资产打入到合约中,接着 Bob 也将10个资产打入到合约之中,此时情况通道就算是翻开,进入 open 情况。这个进程中也是要上链的。这时分的分配方案是【A:10, B:10】。(分配办法是指生意两头都可以在链下都认可的资产分配办法,总量是相同的的,要么 A 多,要么 B 多,假定这个时分合约连续,就会按照分配方案的资产打回到各自的账户上)


3. 此后,由于 A 和 B 之间的情况通道处于 Open 的情况,A和B之间可以开始生意。假定 A 向 B 转了1个资产,则分配方案为【A:9; B:11;N:1】,这时 B 拿到了 A 对分配情况的签名;而接着 B 又向 A 转了3个资产,这时的分配方案变为【A:12; B:8; N:2】,这时 A 拿到了 B 对分配情况。这儿 N 标明 Nonce。每次链下两头按照约好改动资产分配,则两头都要自增一次 Nonce 值。诚笃的生意者都会以 Nonce 最大的分配方案作为其时的分配方案,而 Nonce 值较小的分配方案都是失效的方案,可以随时丢掉。


4. 情况提交,在生意的进程中,生意两头,A 或许 B都可以随时向智能合约 C 主张情况提交,假定 A 主张了情况提交,C 会验证 B 的签名;反之假定 B 主张了情况的提交,C 会验证 A 的签名,一同也会验证 Nonce 值。智能合约 C 只接纳比前次链上分配的 nonce 值更大的方案,假定新提交的分配方案的 Nonce 和签名都合法,则 C 接纳新的分配方案,并更新合约中的 Nonce 值为新分配方案的 Nonce 值。两头持续生意,... … 直到终究的分配方案,假定是【A:1; B: 19; N:50】,下面称为终究情况。假定该方案已被提交到智能合约 C,且被智能合约所承受。


5. 关闭情况通道央求,这时分可由任一方主张关闭情况通道,即按照合约中的链上分配方案进行分配。一旦合约 C 接纳到关闭通道的央求,合约会进入 Closing 情况并坚持必定的有用期,在该情况下且在有用期内,另一方仍然可以提交新的有用的分配方案来将情况通道置回 Open 情况。假定在有用期内另一方未能将情况通道置回 Open 情况,则情况通道会在有用期往后,进入 Closed 情况。比方,在这个事例中,B 是获益方,一般来说,是由 B 在这时分主张关闭情况通道央求,然后情况通道进入 Closing 情况,并在必定有用期后按照链上终究的有用分配方案【A:1; B: 19; N:50】进行分配。此时,若B是一个作恶者,虽然现在链上的分配方案为【A:1; B: 19; N:50】,但其实链下最新的分配方案已是【A:4; B: 16; N:55】,但 B 尝试用老的分配方案来分配资产,使自己获益增大。此时由于合约在 Closing 情况,只需A及时发现 B 的链上关闭通道央求的生意,则 A 可以马大将更新的分配方案【A:4; B: 16; N:55】提交到合约,然后使得合约被置回到 Open 情况,避免 B 的恶意提款。之后 A 假定想关闭合约,则可从头向合约主张关闭情况通道的央求。之后只需 B 无法再给出比 N:55 更新的分配方案,那么情况通道终究将在有用期往后,进入 Close 情况。(注:具体完毕时也可以将”情况提交”和“关闭情况通道央求”合并成一步)


6. 终究资产分配:当合约 C 进入 Closed 情况后,任何一方都可以触发终究的资产分配,即按照链上已供认的终究有用的分配方案进行实践的资产分配。


回想整个进程,需求写入区块链的进程,只是和链上智能合约 C 相关的部分,分别是开始创立的时分和分配方案的提交以及终究情况的提交。其他都是在链下操作,所以在情况通道的规划中,项目一般规划为 只向区块链智能合约 C 提交一次,然后做到最高的功用。


PPIO 的情况通道机制的规划


· PPIO 支撑三个中心模块

POSS 是 P2P Object Storage Service,对标 AWS 的 S3 存储。

· PCDN 是 P2P Content Delivery Network,对标传统的 CDN,就像 AWS 的CloudFront。

· PRoute,是依据 P2P 的自适应网络智能路由,做到两个节点之间,以最合理途径抵达,然后速度最快,推延最低 。这是协议层的完毕,在 AWS 中没有对标的产品。


其间除掉 POSS 模块外,PCDN 和 PRoute 都是更多煽动带宽的贡献,其网络数据的传递非常再三且实时。假定每个 Piece 的传输,都要写入区块链,这将是非常大的浪费 。其实,网络数据高速传输煽动,实质上是高频生意和微支付,所以在规划 PPIO 的时分,咱们学习了传统的传统的情况通道机制,来完毕带宽的煽动。


1. U 创立了区块链上的智能合约 Contract(后边简称C)。然后 U 往 C 中转入资产,假定转入了10个资产。由于 PPIO 规划的是单向通道,只需 U 转入资产后,即可进入Open 情况,其分配方案是【U:10; M:0】


2. 开始进行数据传输,U 向 M 央求数据,M 向 U 回来正确的数据后,U 会给予 M 一个 Voucher,即带有 U 签名的新的情况分配方案。由于网络传输的实时性要求非常高,M 需求先给数据,再拿 Voucher。此时分配方案逐步变成 了【U:9; M:1】。


3. 持续传输数据,情况通道的分配方案,U 的资产越来越少,M 的资产越来越多。直到U 把之前存入情况通道的资产用完,即【U:0; M:10】; 


4. 终究情况提交:此时 M 用最新的 Voucher 去区块链上的智能合约用 Voucher 去提款。C 在验证 Voucher 中有 U 的正确签名后,承受了 M 的提款。之后情况通道关闭,符号为 Close 情况,之后该情况通道不能再进行生意。


5. 之后 U 在 M 央求数据,由于资产现已用完,M 将不再供应服务。除非 U 创立新的情况通道合约 C1,再转必定的资产进去,才调再次向 M 央求数据。

157283353342374.jpg

图:PPIO 的数据传输情况通道规划

这就是 PPIO 整个情况通道的进程。下面咱们做一下简略的攻防剖析。


1. 假定 User 作恶,作恶办法为 U 向 M 央求到了数据之后,不给 Voucher。处于网络功用的考虑,PPIO 的规划是 M 先给必定的数据,再要 Voucher。假定 U 不给 Voucher,M 给予必定量的数据发现收不到 Voucher,所以将不再对该 User 给予更多的数据了,而且符号为 U 为恶意用户,现已给予的部分数据作为自己有限的丢掉。


2. 假定 Miner 作恶,作恶办法是给予 User 过失的数据。User 收到必定量的数据后,就会发现数据失常,所以不给予 Voucher,并向区块链智能合约 C 主张关闭情况通道,并符号该 Miner 为恶意矿工。假定网络中存在 Verifier,U 还可以向 Verifier 点破 M,之后 Verfier 会对 M 要害验证,剖析 M 是否还存在其他作恶。

157283355944500.jpg

图:假定 User 发现 Miner 作恶的情况通道示意图

选用情况通道的办法,在生意两头存在作恶的情况下,或许存在一方有些纤细丢掉。但不影响全体的规划,因此,PPIO 中的带宽煽动是不需求 Miner 做任何典当的,这点和存储场景不太相同。


1. 存储场景具有长时性,使得 Miner 典当成为必要。一次存储少则几天,多则数月,甚至几年,假定在存储期间 Miner 作恶,User 或许面临文件的风险,作用很严重,因此在存储场景下,通过要求 Miner 典当这一经济手段还迫使 Miner 诚笃可靠的为 User 供应存储服务是必要的;


2. 存储数据具有供认性,使得验证存储的持久性变的可行。供认性的数据可用 Merkle树来组织,然后运用叶子节点到 Merkle 根的途径作为数据持有证明,而这种证明的验证,运用智能合约或许可信的第三方就可以完毕。


而带宽则不同,带宽具有瞬时性和不供认性。带宽传输相对于存储来说,生意时间很短,且传输什么数据在传输前一般都不可知。这两点导致了 User 很难在数学层面上绑缚 Miner 只传输正确的数据,也就很难通过证明来绑缚 Miner 使得 Miner 不作恶。一旦 Miner 作恶,可信的第三方或许智能合约也无法精确的判别出到底是 Miner 真的作恶,仍是 User 在栽赃 Miner,因此即使 Miner 做了典当,可信的第三方或许智能合约也不知在胶葛出现时怎样处置该典当。所以处理带宽场景的思路和存储场景不相同,带宽场景的思路是运用情况通道完毕“小步快跑”:每次都只做很小的生意,假定发现对方作恶,则立刻连续生意,转而寻找新的生意者。这样即使对方作恶,己方丢掉也不是很大。


讲到这儿,只是阐清楚 PPIO 里边运用情况通道的基本原理,在 PPIO 的一些场景规划中,情况通道还有更凌乱的用法,但基本原理是不变的。


Owner 人物的引进


PPIO 在规划的时分,咱们还规划了一个 Owner 的人物,Owner 不是一个 P2P 传输人物,而是一个支付和结算人物。在 PCDN 架构中,每个 Peer 都需求指定一个 Owner。这个 Peer 发作的花费由它的 Owner 来承当,而相同该 Peer 赚取的收入也由它的 Owner 来接纳。


如下图,同一个 Owner 可以对接多个 Peer。

157283363032864.jpg

图:Owner 和 Peer 的联络图

这个人物可以简略理解为,在需求端就是开发者,在供应端就是矿池;它实质就是 CoinPool。


由情况通道晋级后的数据分发合约如下图所示

157283367398148.jpg

图:PCDN 下最简略的下载流程图

关于引进 Owner 人物的分发智能合约的描绘。但其间 Peer 和 Peer,Peer 和 Miner 之间的通讯实质上仍是走得情况通道的机制。


这是最基本的 PPIO 情况通道逻辑,其他在具体运用场景中,如 PCDN 和 PRoute,还有更多的考虑。关于情况通道在 PCDN 场景下运用,具体可见文章《让智能合约在数据分发中更智能?PPIO 的规划小巧思》。其他,我后边还会介绍,PPIO 在具体场景中更深化的完毕,请咱们敬请期待。


功率行进与价值落地一直以来都是 PPIO 完毕技能不断创新行进的标尺。这一期文章,咱们同享了怎样依据传统的情况通道机制,完毕了 PPIO 的情况通道机制的规划 ,然后完毕数据传输的公平计量。咱们又通过一个实践事例,剖析了依据这样的规划, User 和 Miner 的两个人物怎样进行有用的数据传输,避免两头作恶带来的不必要的丢掉。一同也阐清楚,PPIO 中的带宽煽动是不需求 Miner 做任何典当的,这一点和存储场景有实质差异。不知看到这儿,是否让您对的 PPIO 的技能工程完毕有了更深化的了解呢?假定您想更进一步的和咱们一同学习根究,就快来注重 PPIO 大众号,参加 PPIO 开发者社区或 Discord 群组,和咱们一同创造精彩。


标签: 区块链技术

  • 评论列表 (0)

留言评论