TapeAPI 持有人操作台TapeAPI holder console
请确认地址栏显示的是 https://tapeapi.fun/console/。不要在其他地址使用本页:它会请你的钱包签名。 Check that the address bar shows https://tapeapi.fun/console/. Never use this page from another address: it asks your wallet to sign.
在手机钱包的内置浏览器里打开本页。本页只会请求你的钱包确认签名和交易,从不索要私钥或助记词。它帮 TapeOut 电路的持有人把自己的容器发布成一个 TapeAPI 服务:读电路、生成服务密钥、签委托、把清单写上链。 Open this page in your wallet's in-app browser. It only asks your wallet to confirm signatures and transactions; it never asks for a key or a seed phrase. It helps the holder of a TapeOut circuit publish their container as a TapeAPI service: read the circuit, generate a service key, sign the delegation, publish the manifest on chain.
1. 连接钱包1. Connect your wallet
未连接Not connected
2. 你的电路2. Your circuit
两个框都填数字,不是地址。电路名字 <电路>.<处理器>.tape:例如 11.1013.tape,左边填处理器 1013,右边填电路 11(顺序和名字里相反)。页面从链上读出容器地址,并确认你连接的钱包就是当前持有人。
Both boxes take numbers, not addresses. A circuit is named <circuit>.<processor>.tape: for 11.1013.tape, enter processor 1013 on the left and circuit 11 on the right (the reverse of the name). The page reads the container address from the chain and checks that the connected wallet is the current holder.
3. 服务密钥与变量3. Service key and variables
服务用这把密钥给每个回答签名。它在你的手机上生成,本页不会把它发到任何地方,也不会保存;关掉页面就没了。复制后粘到 Cloudflare:
Workers 和 Pages → 这个服务的 Worker(例如公共服务 tapeapi-provider、中继 tapeapi-relay)→ 设置 →
“+ 添加变量”,名称 SIGNER_KEY,“密钥”方框打勾。先刷新 Cloudflare 页面再改,旧页面保存时会覆盖别的变量。
The service signs every answer with this key. It is generated on your phone; this page never sends it anywhere and does not keep it, so it is gone when you close the page. Copy it into Cloudflare:
Workers & Pages → your service's Worker (for example the public service tapeapi-provider or the relay tapeapi-relay) → Settings →
"+ Add variable", name SIGNER_KEY, with Encrypt / Secret ticked. Reload the Cloudflare page before editing: saving from a stale page overwrites the other variables.
4. 签委托4. Sign the delegation
设好 SIGNER_KEY 和上面的变量、服务重新部署后,本页从服务读出它的签名地址,你用钱包签一个委托(EIP-712,只授权这把服务密钥代表你的容器回答,不涉及任何资金,90 天后到期)。 Once SIGNER_KEY and the variables above are set and the service has redeployed, this page reads the service's signing address and you sign a delegation with your wallet (EIP-712: it only lets this service key answer for your container, moves no funds, and expires in 90 days).
续期(委托快到期或已到期,服务和密钥都不变):不用第 3 步。本页为第 2 步在链上清单里读到的签名地址重签委托。这样是安全的:链上那份委托是你自己签给这个地址的,本页先核对它确实恢复出你(当前持有人)、服务报出的也正是这个地址,才请你签名;新委托只延长期限,不授权任何新密钥。服务网址必须与链上的一致。如果你怀疑服务密钥泄露了,不要续期,改用第 3 步生成新密钥。 Renewal (the delegation is about to expire or has expired; same service, same key): skip step 3. This page re-signs the delegation for the signing address read from the manifest on chain in step 2. This is safe: the delegation on chain is one you signed for that address, and the page checks that it recovers to you, the current holder, and that the service reports exactly that address, before asking you to sign; the new delegation only extends the term and authorises no new key. The service URL must be the one on chain. If you think the service key has leaked, do not renew: generate a new key in step 3.
5. 把清单写上链5. Publish the manifest
把第 4 步的两个值设为变量、服务重新部署后,本页读取服务提供的清单,逐项核对它与你签的一致,再发一笔 SiteRegistry.putFile 交易把它写进容器站点。 Once the two values from step 4 are set as variables and the service has redeployed, this page reads the manifest the service serves, checks every field against what you signed, then sends one SiteRegistry.putFile transaction that writes it into your container's site.
高级:部署自己的 ChannelBus(可选)Advanced: deploy your own ChannelBus (optional)
公共 ChannelBus 已部署在 0x486110c35d9b90a9d6D85c8063A065f9e7b6b707,任何人都可以用;绝大多数人永远不需要这一节。
The public ChannelBus is already deployed at 0x486110c35d9b90a9d6D85c8063A065f9e7b6b707 and anyone can use it; most people never need this section.
A. 部署 ChannelBusA. Deploy ChannelBus
TAP-26 §3.7 的链上传输合约:没有管理员、没有状态、不能升级,只会发事件。部署一次,任何人都可以用。 The on-chain transport of TAP-26 §3.7: no owner, no state, no upgrade path; it only emits events. Deployed once, anyone can use it.
- 源码Source
- GitHub
B. 核对地址B. Verify an address
核对某个地址上的代码是否与测试过的构建逐字节一致,以及两个常量。部署后会自动核对;也可以输入地址手动核对。 Checks that the code at an address equals the tested build byte for byte, and the two constants. It runs by itself after a deployment; you can also enter an address.
页面源码:site/console。部署的字节来自 channelbus.json,合约测试 ConsoleBytecode.t.sol 保证它与测试过的合约完全一致。
Page source: site/console. The deployed bytes come from channelbus.json; the contract test ConsoleBytecode.t.sol keeps them identical to the tested contract.