新手指南Beginner's Guide

TapeKit

开源工具栈:四层名字别搞混、仓库目录与内核 API、路线图与进行中的 Issues。The open tool stack: the four layers, the repo layout and kernel API, the roadmap, and the open issues.

四个名字别搞混

层名字管什么
协议TapeOut晶体管、处理器、电路容器这一层
网址与规范tape://地址栏里输入的东西;规范就叫「tape:// 规范」
开源工具TapeKit所有读取 tape:// 的东西:内核、网关、扩展、命令行、桌面应用
商业服务HashPort由 HashPort 团队运营的托管控制台、域名绑定与收费

代码用 MIT 许可、规范用 CC0,任何人都能自己做网关、内核和浏览器——官方那份只是参考实现。

TapeKit 工具箱里有什么

仓库 github.com/TapeOutProtocol/TapeKit(维护方 TapeOut Labs)是整个开源栈的总目录:

目录是什么
kernel/内核 @tapekit/kernel:零依赖 ES 模块,负责名字解析、多节点一致、钉住区块、钉住实现、逐文件 SHA-256 校验、缓存
sw-gateway/Service Worker 网关:普通浏览器不装任何东西就能打开链上网站,每个网站一个独立来源
extension/浏览器扩展(Chrome MV3):地址栏关键词 tape,还能核对当前 https 页面是否与链上字节一致
viewer/网页查看器(预览模式):沙箱 iframe,没有扩展和网关时的兜底
send/TapeSend · DeWEB 消息层:合约、模块与设计文档
apps/tapesend/TapeSend 客户端:网页、桌面(Electron,内置 tape:// 浏览器)、iOS / Android
SPEC.mdtape:// 规范 v0.2(中英文)
GUIDE.md中文技术说明:怎么运行、测试、部署各组件,已知限制

在自己的代码里用内核,只要几行:

import { createKernel } from './kernel/src/index.js';

const kernel = createKernel();                   // 默认 4 个公共节点,2 个必须一致
const res = await kernel.resolve('4246.0.tape'); // res.status === 'ok' | 'unpaid' | …
const site = await kernel.openSite(res);         // 只读文件清单
const file = await site.get('index.html');       // 字节已与链上 SHA-256 核对

resolve 的状态码:ok(已开通)、unpaid(未开通或已到期)、not-opened(电路还没开容器)、no-such-cpu、no-such-token、not-tapeout、blocked、store-changed(仓库合约实现与钉住的不符,拒绝读取)。

「钉住实现」是什么? 网站仓库 SiteRegistry 和付费合约 DomainBinding 的「内芯」可以被管理员换掉,客户端每次都先看一眼内芯是不是自己认识的那一版(存在固定的 ERC-1967 实现槽)。不认识就先不读,等客户端更新名单。合约哪天被悄悄换芯,你的浏览器也不会跟着读到新逻辑。

还没做完的事

TapeKit README 的「状态与路线」列了下一步(2026-09):

  • 网关域名进入公共后缀列表(Public Suffix List);
  • @tapekit/kernel 发布到 npm,补齐 API 参考和类型定义;
  • 开源合约源码、发布命令行工具;
  • 注册 tape:// 协议的桌面应用;
  • web3://(ERC-4804 / ERC-6860)只读适配。

GitHub Issues(2026-09-25 查看)里正在推进的事:

  • #4:主网阻塞项——验证 DeWEB 中枢合约,并解决 MetaMask 对 publishKey 操作的弹窗警告。
  • #5:直接通过 ERC-6551 注册表创建的容器会静默变成「只收不发」,open() 可被绕过——别绕过官网用底层合约开容器。
  • #6:X Layer 是否部署 SiteRegistry / DomainBinding。提问者拿 BNB Chain 的地址去查没有代码,实际 TapeKit 内核给 X Layer 配的是另一组地址,那里有代码。
  • #7:tape:// 站点的请求 / 响应与 WebMCP 工具发现的标准化讨论——让 AI 工具能自动调用链上网站。提案人 Alphana(@0xAlphana)演示了 AI 通过网页自报工具打完一局链上塔防。创始人 9 月 25 日邀请评审,提案通过他个人奖励 50 BEM,有效建议每人 5 BEM。
创始人 2026-09-25 的「前端上链」呼吁:他举 Bitget、Bybit 被盗的例子,说问题多出在第三方工具或多签系统的前端被篡改,呼吁所有 DeFi 和第三方工具把前端部署到可验证的 DeWEB(tape://)上,并个人无偿赞助大型第三方工具(如 Safe 多签)的前端上链安全资金。前端上链能防网页被调包,防不了后台被控。

Four names, do not mix them up

LayerNameWhat it covers
ProtocolTapeOutthe on-chain layer: transistors, processors, circuit containers
URLs and spectape://what you type in the address bar; the spec is the "tape:// spec"
Open-source toolsTapeKiteverything that reads tape://: kernel, gateway, extension, CLI, desktop app
Commercial serviceHashPortthe hosted console, domain binding and fees run by the HashPort team

The code is MIT-licensed and the spec is CC0, so anyone can build their own gateway, kernel or browser — the official one is just a reference implementation.

What is in the TapeKit toolbox

The repo github.com/TapeOutProtocol/TapeKit (maintained by TapeOut Labs) is the master index of the open stack:

DirectoryWhat it is
kernel/Kernel @tapekit/kernel: a zero-dependency ES module handling name resolution, multi-node agreement, pinned block, pinned implementation, per-file SHA-256 checks and caching
sw-gateway/Service Worker gateway: open on-chain sites in an ordinary browser with nothing installed, one origin per site
extension/Browser extension (Chrome MV3): the tape address-bar keyword; also checks whether the current https page matches the on-chain bytes
viewer/Web viewer (preview mode): a sandboxed iframe fallback when there is no extension or gateway
send/TapeSend · DeWEB messaging layer: contracts, modules and design docs
apps/tapesend/TapeSend client: web, desktop (Electron with a built-in tape:// browser), iOS / Android
SPEC.mdtape:// spec v0.2 (Chinese and English)
GUIDE.mdChinese technical notes: how to run, test and deploy each part, plus known limits

Using the kernel in your own code takes a few lines:

import { createKernel } from './kernel/src/index.js';

const kernel = createKernel();                   // 4 public nodes by default, 2 must agree
const res = await kernel.resolve('4246.0.tape'); // res.status === 'ok' | 'unpaid' | …
const site = await kernel.openSite(res);         // read-only file manifest
const file = await site.get('index.html');       // bytes already checked against on-chain SHA-256

resolve status codes: ok (activated), unpaid (not activated or expired), not-opened (the circuit has no container yet), no-such-cpu, no-such-token, not-tapeout, blocked, and store-changed (the repository implementation does not match the pinned one, so reads are refused).

What does "pinned implementation" mean? The "core" of the SiteRegistry repository contract and the DomainBinding payment contract can be swapped by an admin, so each client first checks whether the core is the version it knows (kept in a fixed slot, the ERC-1967 implementation slot). If not, it reads nothing until the client updates its list. If a contract core is quietly swapped, your browser will not silently follow the new logic.

What is not finished yet

The TapeKit README "status and roadmap" lists the next steps (2026-09):

  • get the gateway domain into the Public Suffix List;
  • publish @tapekit/kernel to npm and fill in the API reference and types;
  • open-source the contracts and ship CLI tools;
  • a desktop app that registers the tape:// protocol;
  • read-only web3:// (ERC-4804 / ERC-6860) adapters.

Open GitHub issues (checked 2026-09-25) show work in progress:

  • #4: a mainnet blocker — verify the DeWEB Hub contract and fix the MetaMask warning on publishKey.
  • #5: containers created directly through the ERC-6551 registry silently become "receive-only" and open() can be bypassed — do not skip the official site and open containers via raw contracts.
  • #6: whether X Layer deploys SiteRegistry / DomainBinding. The asker looked up the BNB Chain addresses on X Layer and found no code; in fact the TapeKit kernel configures a different address set for X Layer, where code does exist.
  • #7: standardizing tape:// request/response and WebMCP tool discovery — letting AI tools call on-chain site features automatically. The proposer, Alphana (@0xAlphana), demoed an AI finishing an on-chain tower-defense game through tools a page self-declares. The founder invited review on Sep 25 and offered 50 BEM to the proposer plus 5 BEM each for accepted suggestions.
The founder's "put the frontend on-chain" call (2026-09-25): citing the Bitget and Bybit hacks, he said the trouble mostly came from frontends of third-party tools or multisig systems being tampered with, and called on all DeFi and third-party tools to deploy their frontends to verifiable DeWEB (tape://), offering to personally fund the frontend-on-chain security of large tools such as the Safe multisig. Putting a frontend on-chain stops it being swapped, though it cannot stop a compromised backend.