调度(Scheduling)(详情请参见:
波卡(Polkadot)通过引入Agile Coretime实现调度,从而能够高效利用波卡网络资源,并为开发者提供经济灵活性,使波卡超越了其白皮书(详情请参见:
https://polkadot.com/papers/Polkadot-whitepaper.pdf)最初提出和设想的范畴。Coretime的引入使得多线程得以实现。
多线程(Multi-threading)(详情请参见:
并发(Concurrency)(详情请参见:
https://en.wikipedia.org/wiki/Concurrency_(computer_science))并不意味着并行执行,而是使系统能够通过在多个进程间快速切换来进行管理。
波卡通过拆分和交织(详情请参见:
https://wiki.polkadot.network/docs/learn-agile-coretime#splitting-and-interlacing)Coretime来实现多线程处理。
Coretime市场:Coretime市场使用指南(详情请参见:
https://wiki.polkadot.network/docs/learn-guides-coretime-marketplaces)
平行链Coretime:从平行链角度看Agile Coretime(详情请参见:
https://wiki.polkadot.network/docs/learn-guides-coretime-parachains)
Agile Coretime介绍
在Polkadot 1.0中,平行链唯一能够通过波卡获得安全保障的方式是通过拍卖租用租赁期(详情请参见:
https://wiki.polkadot.network/docs/learn/learn-auction),该租赁期可保证平行链区块验证有效期长达两年。这需要锁定大量的DOT,导致中小型区块链项目的准入门槛较高。无论网络活动如何,平行链都以12秒的固定间隔产生区块。这就导致了资源分配效率低下和经济激励错位,在网络流量较小时几乎生成空区块,而当流量超过区块限制时又无法应对较大流量。Agile Coretime解决了所有这些弊端。
下图展示了Polkadot 1.0的核心使用情况,其中横轴表示时间,每一行代表一个核心。不同颜色表示不同的平行链,每个平行链使用一个核心(即一条平行链对应一个核心)。
Agile Coretime允许以“批量”方式购买Coretime(详情请参见:
https://wiki.polkadot.network/docs/learn-agile-coretime#coretime),分配周期为一个月。
对于那些需要每12秒(或通过Asynchronous Backing每6秒,详情请参见:
https://wiki.polkadot.network/docs/learn-async-backing)生成一个区块的高负载平行链而言,它们能够每月无缝“续订”核心(详情请参见:
购买的Coretime还可以拆分并部分出售,最小可细分到每月单个区块,从而促使二级市场蓬勃发展,提高了Coretime的分配效率。
此外,Agile Coretime还提供按需Coretime(详情请参见:
https://wiki.polkadot.network/docs/learn-agile-coretime#on-demand-coretime)功能,允许按需生成平行链区块。
Agile Coretime术语
Core(核心)
“Core”一词指的是中继链为确保平行链区块安全所提供的计算资源的虚拟抽象概念,这涉及一组随机的中继链验证人。
Coretime(核心时间)
分配给利用核心的时间,以中继链区块为单位进行计量。
Bulk Coretime(批量核心时间)
由NFT代表的固定时长的连续核心时间,可以拆分、共享或转售。目前,批量Coretime的时长设定为28天。
Region(区域)
代表批量Coretime单位的NFT。
On-demand Coretime(按需核心时间)
之前称为即时Coretime,按需Coretime指的是通过近乎实时竞价获得的Coretime,用于验证专门保留给按需订单的其中一个核心上的单个平行链区块。
Parathreads更名为on-demand parachains(按需平行链)。
按需平行链(之前称为Parathreads)是指购买按需Coretime并通过按需Coretime池访问中继链的平行链。
On-demand Coretime Pool(按需核心时间池)
一组可按需使用的核心。通过批量Coretime预留的核心也可以部分或全部放入按需Coretime池中。
Coretime Chain(核心时间链)
一条系统平行链,负责批量Coretime的销售、操作以及最终按需Coretime积分的购买。它还负责将中继链上的各个核心调度给平行链。
Timeslice(时间片)
时间片代表Coretime链在中继链上调度核心的粒度。Coretime链会提前宣布每个核心的调度计划,包括接下来的80个中继链区块。5040个时间片对应于28天的区域长度(这是为批量核心时间设置的初始配置)。
Task(任务)
“Task”一词指的是核心效用的抽象概念。核心上的任务不仅限于保障平行链的安全。
Agile Coretime Implementation(敏捷核心时间实施)
Coretime通过部署在Coretime链上的中介模块(详情请参见:
理论上,波卡中继链可以无缝支持大约一百个核心,并通过优化支持数百个以上的核心。
初步测试成功运行了80个核心,区块时间为12秒。核心时间销售收入将被销毁(详情请参见:
https://app.regionx.tech/?network=polkadot)。
Coretime Sales(核心时间销售)
Coretime链上的销售以[timeslice]长度为单位。这些销售分为两个主要时期:续订期和销售期。
- 续订期的长度为[interlude_length]个区块,在此期间可以对批量Coretime进行续订。
- 销售期也分为两个阶段:价格发现期(Price Discovery period)和固定价格期(Fixed Price period)。在续订期之后,Coretime链将设定一个新的[start_price],并启动一个为期[leadin_length]个区块的荷兰式拍卖,通过压低价格来找到合适的平衡点。此过程将确定[regular_price],该价格将在固定价格期内提供。
关于初始Coretime定价的讨论可在此处查看,详情请参见:
https://forum.polkadot.network/t/initial-coretime-pricing/5187。
Splitting and Interlacing(拆分和交织)
如拆分和交织是可以在一个区域内执行的操作。进行这两种操作中的任何一种都会使你失去价格上限续订的权利。
- 拆分:将一个区域划分为几个具有不同起始和结束时间片的区域的操作。
- 交织:将一个区域在一个时间片的每个区块内划分为执行不同任务的操作。结果区域将与父区域具有相同的起始和结束时间片,但在不同的块上执行不同的任务。
Elastic Scaling(弹性扩展)
通过Elastic Scaling(仍在开发中),项目可以无缝扩展,而不受之前分配资源的限制。
Elastic Scaling是为一个任务获取多个核心的过程。这使得平行链能够在单位时间内包含更多区块(在中继链一侧),并且在单位时间内生成更多区块(在平行链一侧进行Async Backing)。Elastic Scaling可以与按需Coretime相结合,以无缝地增加带宽。
原文出自Polkadot Wiki,详情可查看: