
如果你最近打开 Paseo 测试网一定绕不开 Coretime 这个话题。Polkadot 2.0 之后原来插槽拍卖那套玩法退场取而代之的是可以按区块买卖的 Coretime分为 On-demand按需和 Bulk批量两种。我在测试网上折腾了一周把这两条购买路径都跑通了这篇就把完整流程、参数考量和踩坑记录都写出来给准备接入了平行链团队、还在研究 Coretime 经济模型的开发者和想提前把底层逻辑吃透的人做个参考。先说一个容易混淆的点Bulk 这个词很多人第一反应是文件操作里的 bulk rename utility——把一堆文件一次性批量改名。这里的思路确实有点像只是改名改的是区块加量不加价买下来的是一整段核心执行时间。而 On-demand 更接近单文件改名一次一把按次消费。搞懂这个类比后面的所有操作就不会晕。1. 为什么要去 Paseo 上跑 Coretime1.1 Paseo 测试网到底是什么Paseo 是社区驱动的 Polkadot 生态测试网定位上接替了 Rococo 的很多测试任务也承担了 Westend 之外的另一层验证职责。它跟生产环境共享同一套运行时框架有中继链有 Asset Hub、Coretime Chain、People Chain、Bridge Hub 等系统平行链有完整的余额转账、质押、治理模块。对开发者来说这已经不是一个“玩具网络”而是一个可以实打实部署平行链、测试 XCM 跨链流程、验证 Coretime 买卖逻辑的仿真环境。为什么它的优先级越来越高因为 Rococo 从 2024 年开始逐步退出很多项目方在找新的集成测试场地。Paseo 的优势在于它更新快、对齐最新 SDK而且社区参与度高你在生产环境遇到的问题在 Paseo 上通常能提前踩到。自己跑一条本地链当然也行但本地链没有复杂的跨链和中继环境很多 Coretime 相关的 XCM 调用根本复现不出来。1.2 Coretime 是 Polkadot 2.0 的核心资源Coretime全名是 Core Time指的是中继链上处理平行链区块所需的核心执行配额。老模型里平行链要参加插槽拍卖拍到一个租约通常就是 6 个月到 2 年租约期内按 6 秒一个区块的节奏出块。这个模型的痛点很明显长期锁定、成本高、对中小项目极不友好。Coretime 模型换了个思路不再拍卖整个插槽而是把一个核心在一个时间段内的执行权切成 Region。Region 可以是一整段长周期也可以拆成小段。你买了多少核心时间就实实在在拥有这段时间内中继链给你打包平行链区块的权利。这套机制让资源分配从“长期租约”变成了“现货交易”项目方可以根据自己的业务量随时扩缩容。在 Paseo 上跑 Coretime本质就是提前演练这套新模型。测试网上没有真实价值但经济逻辑和生产环境一致跑通一遍之后你再看主网的 Coretime 市场就不会是一头雾水。1.3 动手前需要准备的工具一个浏览器钱包推荐 polkadot.js Browser Extension好用也兼容性最好。一台能连上 WebSocket 的设备本地开发机即可。一个 Discord 账号Paseo 水龙头通常通过 Discord 机器人自动发放。少量测试币 PAS用于支付手续费和购买 Coretime后面会说怎么领。网络连接方面polkadot.js/apps 里面一般能直接找到 Paseo 公有节点。如果找不到就自己配一个自定义端点。现在社区维护的公共 RPC 地址变化比较频繁我建议以官方文档里的 endpoint 列表为准或者直接用 polkadot.js/apps 内置的托管节点省心。2. On-demand 与 Bulk两种买时间的思路2.1 On-demand 是“打车”按次付费、即买即用On-demand Coretime按需核心时间适合那种不需要稳定出块的场景。它的工作流程很直白你提交一个购买订单指定愿意支付的最高价格系统在区块被挖掘时从订单池里选择订单派给你对应的核心执行权。相当于你在高峰期叫了一辆车车来了就走车没来就一直等价格也是浮动的。实际使用中On-demand 通常解决以下问题平行链只在特定事件发生时需要更新状态比如每周生成一次证明。测试网的验证链不需要每 6 秒出一个块每天出几个块就够了。临时跑大批量任务算完就结束不需要持续保留核心。费用上On-demand 因为需要调度器做额外处理单区块成本通常比 Bulk 折算下来的单价高一些但胜在灵活不用锁资金玩完就跑。2.2 Bulk 是“月卡”批量买断一段核心时间Bulk Coretime批量核心时间思路和 bulk rename utility 很像一次性把一段连续区块的核心执行权买下来。它的核心单元叫 Region包含三个关键参数core核心编号形象地说就是“几号核心”。begin开始区块号。end结束区块号。比如你买下core 1从区块 1000000 到 1030000那这段时间内中继链就会持续为你的平行链安排执行。Bulk 的优势是性价比高而且买了之后的 Region 不是死的你还可以继续做拆分、转售、拼接再分配给不同的平行链。适合用 Bulk 的场景主网项目方需要稳定出块、保证用户交易连续性。计划长期运营的平行链比如资产链、游戏链、DeFi 协议链。需要把核心时间分配给多个测试环境的管理者。2.3 两种模式的经济对比与选型维度On-demandBulk购买单位单个/少量区块一个 Region号段成本单次较高批量优惠单位成本低灵活性极高中等但可分区、可转售适用场景低频、临时、验证性任务高频、稳定、长期运营操作复杂度低一个订单搞定稍高需要理解核心和区间资金占用极低较高一次性支付我的建议是如果你是刚启动的开发者先在 On-demand 上把功能跑通等确认业务量稳定了再转向 Bulk。不要一上来就买大量 Bulk测试网里还好主网上一旦买错 Region 调整成本会很肉疼。2.4 核心概念Region / core index / begin / end再仔细讲讲 Region这是 Bulk 购买绕不过去的概念。Region 就像一个时间段容器。你用它来定义一段核心使用权。购买时你指定了core、begin、end这三个值一旦确认Region 就确定了。系统靠这三个维度来识别一个 Region 的唯一性。你可以把 Region 看作一个可以切分的蛋糕买下一个大 Region 后用 partition 函数把它切成多个小份每份又可以单独分配、转售或者合并。还有一个重要概念是续期。Bulk 购买有一段有效期周期结束后需要续期。如果你忘记续期就会出现平行链无法出块的情况。生产环境里很多团队栽在这上面不是买不起是忘了续期。3. 实操前置连接 Paseo、领币、检查状态3.1 切换到 Paseo 网络并连接 Coretime 链打开 polkadot.js/apps在左上角的网络切换区域如果看到 Paseo 直接选上。没有的话选择“自定义网络”填入一个可用的 WebSocket 地址。社区 RPC 地址我这边就不直接写了因为节点会重启、地址会更新建议去 Paseo 官方 GitHub 仓库的 README 里找最新 endpoint。要注意的是Coretime 操作不是在中继链上做的而是要走 Coretime Chain。在 polkadot.js 的面积里切换网络时找到 Coretime Chain 对应的连接入口。有些版本的应用会在系统平行链列表里展示 Coretime选中之后界面显示的网络名会是类似“Paseo Coretime”的字样。很多新手第一次就卡在这里一直在中继链上找 broker pallet自然找不到。连接成功后可以在 Explorer 里看到 Coretime 链的区块和交易信息。建议先确认区块高度在正常增长说明节点同步正常。3.2 创建账户并领取测试币接下来创建账户。如果你有现成的 polkadot.js 扩展钱包直接在扩展里添加一个新账户或者把开发环境已有的测试账户导入。没有的话在 polkadot.js/apps 的 Accounts 页点击“在扩展中创建账户”保存好助记词和密码这个账户就是后面所有操作的主体。领币环节Paseo 提供多种方式最常见的是通过官方 Discord 的水龙头机器人。进入 Paseo 的 Discord 服务器找到 faucet 频道输入类似/drip 你的地址的命令机器人就会给你的地址转一小笔 PAS。注意有些水龙头有每日领取次数限制通常一天两三次够用就行。领到 PAS 之后如果你是接着要在 Coretime 链上购买可能需要通过 XCM 把一部分 PAS 从 Paseo 中继链转到 Coretime 链。千万别想当然认为中继链余额等于 Coretime 链余额系统链之间是独立账本。具体跨链转账操作我后面实操部分会一起讲。3.3 查询 Coretime 链的销售状态连接好 Coretime 链、账户里有余额后先别急着买。因为 Coretime 不是每个区块都在疯狂售卖它遵循一定的销售周期。先查当前销售状态。在 polkadot.js/apps 的 Developer 菜单下进入 Chain State选择 broker 模块的 status然后点击“”查询。返回结果一般会告诉你当前销售处于哪个阶段、当前销售周期内有多少个核在售、下次销售什么时候开始等信息。这一步的目的是踩准节奏。如果恰好赶上非销售窗口你提交的 purchase 交易很可能会被拒绝。测试网上经常有人急吼吼地提交交易结果发现 pending 半天最后看状态才发现当前根本不在销售期。4. 实操 On-demand一步步购买按需核心时间4.1 在 Broker pallet 中提交按需订单现在我们正式购买 On-demand Coretime。先确保当前账户连接的是 Coretime Chain。进入 Developer - Extrinsics提交方submit the following extrinsic选择你的账户下方选择brokerpallet再选择可调用函数。在较新的 broker pallet 版本里On-demand 购买的入口一般是onDemandPurchase具体函数名以你连接的链上版本为准但语义是“按需购买”。选中后参数区会让你填写一个最高可接受价格。这里的英文通常是max_amount或price_limit意思就是“我愿意为这次订单支付的最多代币数量”。填写完成点击 Submit Transaction在弹出的签名窗口确认费用后签名。提交后交易进入待处理状态等待区块确认。On-demand 不是即时成交需要等调度器在你的订单池里选中你的单子所以如果当前区块竞争激烈可能需要等几个区块甚至更久。有一点实操经验要共享交易状态不要只看一个区块就判断失败。On-demand 订单在智能调度器里有存活时间只要没被回收就可能在下个区块成交。我遇到过提交后等了大概 30 秒才成功的情况正好在处理一个高峰期订单。4.2 成本计算价格上限与手续费很多新手不知道max_amount怎么设。设低了订单容易被别人抢走设高了怕被宰。这里有个小技巧。测试网的 Coretime 单价不会太离谱你先在 Chain State 里查 broker 模块的on_demand_charge或者类似的费用查询函数看看当前单个按需核心的基准价是多少。基准价理解为“起步价”你在max_amount里填起步价的 1.5 到 2 倍通常就能获得较好的成交概率又不会花冤枉钱。另外别忽略手续费。br在 Substrate 系链上交易要支付链上手续费特别是跨系统链调用时还会涉及 XCM 费用。别把余额算得刚刚好建议预留出 10% 左右的余量用于手续费和可能的执行费用。如果你账户里只有刚好 1 个 PAS而你max_amount填了 0.98最后手续费不足就得不偿失。4.3 验证自己买到了 Coretime成交之后怎么确认最简单的方式是回到 Chain State查询 broker 模块下的workplan或regions用你的账户地址或区块参数去匹配。如果你买的是按需区块workplan里会有一个包含你账户标识的任务分配。也可以直接看平行链状态。如果你已经有一条平行链注册好并且出块逻辑正常那么在 On-demand 时间段内应该能看到新的平行链区块产生区块作者信息里会体现你的账户签名。我见过一个常见误区有人发现 On-demand 买了但平行链依然不出块急得不行。排查后发现购买成功后还需要确认平行链是否在合法时间窗口内被分配到了核心。测试网里网络状态偶尔波动Chain State 查询出来的结果和自己预期不完全一致时先同步最新头块再查很多时候是浏览器显示延迟。5. 实操 Bulk批量购买 Coretime 的完整路径5.1 查看当前销售批次和可用核心Bulk 购买的核心是先看市场里有什么货。回到 Developer - Chain State查询 broker 模块的status你会看到销售批次信息。再查询regions能看到当前已经售出或被保留的 Region 列表。如果某个 Region 的status是 Available 或类似标识说明这个核心区间可以下手。区块参数怎么定你需要确定自己想要的begin和end。测试网里你不需要精确到每一块只需要选一个大致时间段。常见做法是考虑当前区块高度往前取一个整齐的起点比如下一个千位高度。end减去begin就是你这个 Region 覆盖的区块数量也是实际获得的核心时间长度。比如当前高度在 10240你可以设置begin为 11000end为 14000这样覆盖 3000 个区块约等于测试网环境下的一段时间。当然具体长度取决于你的业务需求。5.2 提交批量购买交易在 Developer - Extrinsics 中选择broker.purchase。参数会让你填 Region 信息包括core、begin、end可能还有price_limit也就是可接受的最高售价。这里的price_limit和 On-demand 的一样是防御性参数。Bulk 交易看似是你主动买的但实际上核心市场可能存在竞争出价系统会尽量保证你不是无限加价。设置一个合理的上限比如当前市场基准价的 120%能有效保护你的资金。签名提交之前再次确认参数核心编号是不是你想用的时间段是否覆盖了你的业务活跃期。因为一旦购买成功这个 Region 就锁定在你名下了测试网可以重置数据无所谓但习惯一定要从测试网开始养成主网上再粗心就亏大了。提交之后等待区块确认。成功的话你现在持有了一段持续性的核心时间。它不会像 On-demand 那样随即释出而是会按照 Region 设定的区间在未来指定区块高度开始生效。5.3 购买成功后的进阶分区与分配持有 Bulk Region 之后的进阶操作是很多人忽略的重点。首先是分区partition。你可以将一个较大的 Region 切成多个小 Region。比如你买了一个 3000 块的 Region不想全部给自己用可以切成三个 1000 块的小 Region一个自用两个转售或者给测试伙伴。在 Broker pallet 里有对应的 partition 或类似函数传入原 Region 和分割点即可。其次是分配assign。Bulk Coretime 买回来不是自动给你的平行链出块你要明确告知中继链“这段时间我已经买下了请把这段核心时间分配到我的平行链 ID 上。”这个操作对应于 assign 相关函数。分配成功后你的平行链才会真的在相应时间段内拥有出块资格。分配这个步骤特别容易漏。我在测试网上买完 Bulk 后一度看不到平行链继续出块排查了半天才发现是忘了 assign。Bulk 不是像 On-demand 那样买完即服务它更像你租了一个房间还得自己把家具搬进去。6. 常见问题与排查技巧实录6.1 领不到测试币/水龙头没反应先检查地址是否正确Paseo 的地址格式是带对应链前缀的别拿 A 链的地址去 B 链领币。再看 Discord 频道名称和指令是否更新水龙头偶尔会改命令格式。如果还是不行可以换其他渠道社区里经常有热心人会转发测试币但这只是临时方案。6.2 余额显示正常但交易失败最常见的坑是网络连接错了。你在中继链上看到 10 PAS但实际操作的是 Coretime 链两条链的账本不互通。必须先把资产从 Paseo 中继链通过 XCM 转移到 Coretime 链或者在 Coretime 链上直接获取测试币才能开始购买。另外如果交易被立即拒绝看一下是不是当时的销售期已经结束或是max_amount低于系统最低要求。6.3 找不到 broker pallet 或函数名变了Paseo 测试网迭代速度快运行时升级频繁。我今天写的接口可能下一版本就调整了。解决办法是在 polkadot.js/apps 的 Chain State 或 Extrinsics 面板中展开 broker pallet 看一下当前支持哪些函数基本语义都能看出来。如果确实找不到去 Substrate 仓库的 pallet-broker 源码目录看一眼对照版本。6.4 网页应用连接超时/待确认交易一直 pending这多半是 RPC 节点的问题不是链的问题。可以换一个节点再试或者直接重连。测试网上的公共节点时常不稳定建议同时准备两到三个备用 RPC遇到长时间 pending 时切换不要无限等下去。6.5 Coretime 状态里没有待售核心可能是当前销售窗口还没打开或者核心已经被别人买走。你可以等到下一个销售周期开始或者试试购买二级市场上的 Region。测试网虽然没有真正的二级市场行情但生态内偶尔有项目方释出一些 Regions。查询 broker 模块里当前 Region 的拥有者状态找到可转让的 Region 做一次转移操作。我在实际测试中体会最深的一点Coretime 的整套逻辑动手跑一遍胜过读十篇文档。尤其是 Bulk 里的 Region、partition、assign 这几个环节光看概念很容易懂真正上手才发现每一步都有细节坑。你可以先在 Paseo 上买一个小额 Bulk Region切几段再分配给自己的一条测试平行链跑一个完整的出块周期整个过程背后你对 Polkadot 2.0 的资源模型会有一个特别踏实的理解。如果后面 Paseo 更新了 Coretime 相关接口你再回头来看这份指南只需要对照 pallet 函数名做调整就行。