@ dusk-网络/网络
Dusk应用需要了解的每个Dusk网络,在一个地方:端点,合同ID,桥道,标签和接收方块列表,每个网络一个JSON文件. 它还持有应用共享的规则:索祖的金额并读取,DuskEVM桥接号的功能,账户及其密钥,气体,奖励率估计,以及金额,时间和ID如何被写入.
网页钱包,钱包扩展,探险家和桥梁使用.
安装
从 npm :
npm i @dusk-network/networks
从JSR,在哪里 @dusk/networks数字 :
npx jsr add @dusk/networks
deno add jsr:@dusk/networks
每个登记册名称下的入境点相同: @dusk-network/networks/format 时间是 @dusk/networks/format 关于JSR.
入境点
| 导入 | 它给的是什么 |
|---|---|
@dusk-network/networks | networks, (中文(简体) ), networkFor(chainId), (中文(简体) ), labelFor(net, id), (中文(简体) ), isBlocked(net, account), (中文(简体) ), blockedReason(net, account), (中文(简体) ), routes(net), (中文(简体) ), routeForAccount(net, account, direction), (中文(简体) ), bridgeLink(net, { route, to }) |
@dusk-network/networks/sozu | 索祖的收费,stDUSK和最小规则,它的气体,枢纽的争论字节,解码器, readSozuStatus 财务报告和审定财务报表 isSozuCall |
@dusk-network/networks/rates | nativeRateEstimate 财务报告和审定财务报表 sozuRateEstimate作为年分数 |
@dusk-network/networks/duskevm | 给DuskEVM的桥打个电话能做什么decodeBridgeCall, (中文(简体) ), decodeWithdrawal, (中文(简体) ), duskRecipientOf, (中文(简体) ), bridgeEnvelopeOk),押金的论据(第1行)encodeDepositArgs, (中文(简体) ), depositCall合同duskEvmContracts, (中文(简体) ), isBridgeContract, (中文(简体) ), evmAddressOf),当可以要求撤回(claimFrom),是否现在可以要求(claimReadiness),游戏可以被证明为反对(isEligibleGame),合同的时钟,以及索赔日期(用字来说) |
@dusk-network/networks/account | isAccount, (中文(简体) ), accountToRawKey, (中文(简体) ), rawKeyToAccount, (中文(简体) ), encodeBase58, (中文(简体) ), decodeBase58 |
@dusk-network/networks/gas | 用于公共转让、DuskEVM矿床和提款的气体withdrawalGasLimit),和相子的相声 |
@dusk-network/networks/format | formatTime, (中文(简体) ), formatContractId, (中文(简体) ), shortAccount, (中文(简体) ), formatEvmAddress, (中文(简体) ), aboutTime, (中文(简体) ), aboutWords, (中文(简体) ), durationWords |
@dusk-network/networks/networks/<name>.json | mainnet, (中文(简体) ), testnet 或者说 devnet 作为数据 |
@dusk-network/networks/schema.json | 档案 JSON Schema |
@dusk-network/networks/fixtures/sozu-vectors.json | 索祖测试向量两个钱包运行 |
每个入境点都有 .d.ts。没有运行时间依赖关系.
用这个
- 刻入精确的版本, 并在构建时导入 。 扩展像其它模块一样捆绑它,所以运行时没有获取任何内容.
- 以链路 ID 来查找网络
/on/node/info(0个本地,1个主网,2个测试网,3个devnet),从未通过主机名. 一个自定义节点然后得到其网络的合同和标签.
import { labelFor, networkFor, routes } from "@dusk-network/networks";
import { formatTime } from "@dusk-network/networks/format";
const net = networkFor(info.chain_id); // null for a chain there's no file for
labelFor(net, contractId); // "Sozu relayer", or null
routes(net).filter((route) => route.running);
formatTime(blockTime); // "Today, 14:05 CET"
苏祖的读物是自己拿的 read(contractId, fnName, argBytes),因此每个应用程序都保留其多点调取器:
import { readSozuStatus, sozuStake } from "@dusk-network/networks/sozu";
const status = await readSozuStatus({ read, contracts: net.sozu, account });
sozuStake(amount, status.pool, status.fees?.deposit); // { fee, worth, stDusk, ok }
account 实值 balance_of'作为池中数据驱动器的参数将其编码;留出以读取无余额.
桩子或未取出从公共账户,按节点的天然气价格:
import { SOZU_FN, SOZU_GAS, sozuCall } from "@dusk-network/networks/sozu";
const call = sozuCall(status.contracts.pool, SOZU_FN.STAKE, amount); // { contractId, deposit, fnArgs, fnName }
const { limit, minimum } = SOZU_GAS[call.fnName]; // warn while typing under the minimum
一个 DuskEVM 撤回的索赔日期来自链条:应用程序读取其枢纽上的证明争议游戏,Portal的两个延迟和 Dusk的最新块,以及 /duskevm 确定门户网站检查索赔的日期:
import { claimFrom, claimReadiness } from "@dusk-network/networks/duskevm";
const claim = claimFrom({ provenAt, game, portal, tip }); // { at, exact, overdue }: "about" until the game resolves
claimReadiness({ claim, portalAccepts, tip }).ready; // the Portal's yes counts from the date only
给DuskEVM的桥的电话读作它所做的,只在网络的自有桥和线路上,并且同步,所以扩展的服务员可以显示:
import { bridgeEnvelopeOk, decodeBridgeCall } from "@dusk-network/networks/duskevm";
const call = decodeBridgeCall(net, { contractId, fnName, args }); // null for any other call
if (call?.kind === "deposit" && bridgeEnvelopeOk(call, { amount, deposit })) call.recipient; // the DuskEVM address
if (call?.kind === "claim") call.recipient; // { kind: "account", account } or { kind: "contract", contractId }
一个账户被检查为关键, Dusk 检查一个 /account 合同的原始形式如下:
import { accountToRawKey, isAccount } from "@dusk-network/networks/account";
isAccount(input); // false for a typo, not just for the wrong length
const raw = accountToRawKey(account); // 193 bytes, or null for anything but an account
Uint8Array.of(1, ...raw); // `Account::External`, as Sozu's stDUSK takes it
大桥采用通路,并设有接通道的"天花"接收站. bridgeLink 在网络桥没有公布地址的情况下
bridgeLink(net, { route: "migrate", to: account }); // "<bridge>/#/move/migrate?to=<account>", or null
在运行时阅读,不是从这里读
文件持有一个应用程序开始的ID 。 这些变化没有发布,所以应用程序读取他们现场:
- 索祖的合约 背后的枢纽(
hub.contract(name):监护人可以随时取出他人的名字. 档案中的"索祖ID"是回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回的回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回的回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回回. - 索祖的收费率和开关, 从它的底部.
- DuskEVM的争议游戏,以及门户的延迟和受人尊重的游戏类型.
- Dusk域名的合同,通过其镜头和发行出品. 档案只写在货单上 上面是Sha256.
格式
- Dusk合同ID是小写Hex,没有0x. EVM地址带有他们的EIP-55校验和.
- 时事以英语为主,有当地人时钟,区名而无秒,除非被问到:"今天,14:05 CET","10月26日,09:12 CET","Wed 28 October 2026",14:05:09 CET".
- 账户和合同ID每端被切为6个字符,EVM地址被切为0x和4,而后4则被切为".
- 以一览("~15分","~10小时","~7天")的尺度来进行估计;持续时间为整词,到分钟("3天12小时").
更新
- 编辑
networks/<name>.json。 。 。 .npm run validate检查它与计划,和npm test负责其他的. - DuskEVM的合同来自 黄昏起源数字 :
node scripts/gen-duskevm.mjs <checkout>写他们和他们的标签。 姓名,终点,预部署和驾驶员都照原样保留. node scripts/check-chain.mjs读取每个网络一次,通过多呼 Dusk:中枢必须取出"索祖倒背"的名称,文件中的所有其他合同都必须存在, Dusk域名表必须与其sha256相匹配. 它向链条询问一条路由是否支付其付款地址是寄出交易的账户. 它什么也没有发出.- 如下释出. 应用然后撞出他们的胸针.
CI运行版本检查,计划,测试,类型检查(Cnpm run typecheck),JSR的干线运行(npm run check:jsr对每个推力的起源比较 check-chain 每个星期.
释放
- 将新版本设置为两个版本
package.json财务报告和审定财务报表jsr.json,并给出一节CHANGELOG.md。 。 。 . - 标记承诺
vX.Y.Z并按下标签. - 其余的都是出版工作流程。 它对照两个版本检查标记,运行测试,并以出处发布给JSR和npm. 后从该版本的ChangGELOG部分创建出GitHub发行并生成了笔记. 再运行一次,它会跳过一个已经拥有版本的注册.
许可证
MPL -2.0 (英语).