Testnet 水龙头
足够的 testnet 币,让你无需先挖出一个区块就能试一次发送、一次退款和一次归集。这些币是挖出来的;水龙头只是把其中一部分转交给你。它运行在区块浏览器里,并且无法在 mainnet 上运行。
水龙头是区块浏览器的一项功能,它 默认关闭,且无法为 mainnet 开启。本页说明它是什么、以及为什么这样 构建;按钮在那边。
它在哪里#
水龙头是 testnet 区块浏览器的功能,而不是本站的功能。索引链的是区块浏览器,所以已经知道自己身处哪个网络的也是区块浏览器 — 正是这一点让下面那条保证可以被核查,而不只是被承诺。
请准备一个持久(0x02)地址。
zcd wallet address --key yourkey.json 会打印一个。
为什么它不在本页上#
本站几乎完全是静态的:磁盘上的文件,由 nginx 提供,这里没有任何东西持有密钥。 而 faucet 必须持有一个。把它放在已经在读取链的地方,可以让支出密钥留在 唯一能够自行确认自己正在哪条链上支出的进程里。
那次核对正是重点。区块浏览器只有在从一组链参数重新算出 共识根、并发现它与节点所提供的那个相符之后,才会接受这组参数 — 而共识根正是两个节点在开口说话之前必须达成一致的那个摘要。 所以当水龙头问“我获准在这里运行吗?”时,答案来自一个 由网络本身钉定的值,而不是来自配置文件里的一行。
Mainnet 没有水龙头#
而且将来也不会有。Mainnet 没有预挖,也没有任何特权分配: 上面的每一枚币都来自挖矿。这项功能对 mainnet 被拒绝了三重,每一重单独都已足够:
- 它默认关闭。没有开关,没有密钥,没有路由。
- 开启它需要指名一个网络,而
mainnet这个名字会被拒绝 — mainnet 的链 id 也一样,该 id 是从内嵌参数集中读出的,而不是写成字面量,因此不会漂移。 - 所指名的网络会与区块浏览器正在服务的那条链进行核对。把 testnet 主机上的配置 复制到 mainnet 主机上,得到的进程将无法启动。
也没有任何币是为 testnet 水龙头铸造的。它持有一个普通的密钥,并通过命令行
所用的同一个 wallet/session 签署一次普通的
转账,所以它的花费会跑过 zcd wallet send 所跑的每一条规则,而它的余额就像
其他任何人的一样摆在区块浏览器里。
每个区块一次领取#
一份凭证携带着它读到的状态。两份基于同一次读取 水龙头存储单元而构建的凭证,就是对同一笔余额的两次领取 — 折叠会应用先到的那一份, 另一份则被跳过,并烧掉跳过费。所以水龙头 一次只支付一次领取,testnet 的出块目标是三十秒,而区块浏览器给你看的是队列, 而不是一个转圈的图标。
如果你需要币的速度快过一个队列能递出来的速度,那你要的不是水龙头。你要的是 一个矿工,它没有队列,也没有运营者。
没有验证码#
取而代之,你的浏览器会解一个小型工作量证明 — 一个核心一两秒的工作。验证码会在每位访客面前 插入一个第三方,并把他们各自即将充值的地址交给那个第三方;在一个币毫无价值的网络上,为了在 区分人类与机器人上略胜一筹而做这样的交换,并不划算。
这些币毫无价值#
这是刻意的设计,且永久如此。Testnet 可以从创世区块重置,这正是 testnet 的用途,而它的链 id 只分配一次、 永不重用 — 所以重置甚至不会把旧币留在某条有人能声称是真链的链上。任何提出买卖 它们的人都在行骗,这种骗局甚至不需要编个故事。