BrowserCoin
独挖:https://browsercoin.org/app 矿池:https://brcpool.cryptec.tech/
一种完全存在于你浏览器中的真实加密货币。打开页面,自动获取钱包,在CPU上挖矿,向其他浏览器发送币——全部在一个标签页里完成。没有安装,没有扩展,没有原生二进制文件。
状态:v0.2 — 完整的端到端实现,界面全新。记忆较差的Argon2id战俘,ASERT难度重定目标,没有集中检查点。
怎么了?
BrowserCoin 是一种从零开始的账户模型加密货币,唯一的客户端是网页浏览器。同一页是钱包、矿工、区块浏览器和完整节点。互联网上的两个标签页可以通过一个微小的PeerJS信令服务器、WebRTC上的八卦块,形成一个网络——没有Docker,没有Electron。geth
链规则故意模仿比特币(固定最大供应量、减半奖励、最长链PoW),只是为一个用JS引擎挖矿的笔记本电脑网络重新调校了。
代币经济学——比特币的货币政策,快4×
| 参数 | BrowserCoin | 比特币 |
|---|---|---|
| 目标阻挡时间 | 2.5分钟(150秒) | 10分钟 |
| 难度重新定位 | 每个区块通过ASERT(锚点指数,半衰期10分钟)+地板+两间隔紧急投放 | 每隔2016个街区 |
| 初始区块奖励 | 50 BRC | 50 BTC |
| 减半区间 | 每210,000个方块(~1年) | 210,000块(~4年) |
| 最大供应 | 21,000,000 BRC | 21,000,000 BTC |
| 最小单位 | 10⁻⁸ BRC | 10⁻⁸ 比特币 |
每块ASERT重定向让链条自我校准到“当前打开的浏览器标签页数量”那个极其波动的总算力。ASERT(绝对定时指数上升目标算法,比特币现金于2020年采用)计算每个区块的目标为——均衡是任意算力下可证明的不动点,且无基于窗口的聚类病态。10分钟半衰期(4个目标块时间)跟踪细微尺度的摆动,单块噪声不抖动。在创始难度下,链条保持近零算力,且两区间紧急投放规则(候选和父节点都必须超过6×目标才能触发)为防止单块操作提供安全网。anchor_target × 2^((Δt − n × T) / halflife)
特色
- 首次访问自动生成的钱包,Ed25519 密钥对存储在 。导出/导入为一个统一的JSON文件。
localStorage - 在浏览器内的 Web Worker 上运行的挖矿器,带有油门滑块——挖矿时界面从不卡死。
- 通过 PeerJS 实现 WebRTC 上的真实 P2P,配备一个微小的引导信令服务器用于对等发现。
- 区块浏览器 + 内存池视图 + 发送币流,全部捆绑在同一个SPA中。
- IndexedDB 在本地持久化整个链;localStorage 存储钱包密钥对。
- 顶部栏显示实时网络统计:高度、节点、内存池深度、当前难度(比特单位)。
建筑
- 账户模型(以太坊风格:按地址计算)——州比UTXO小,浏览器友好。
{balance, nonce} - Ed25519签名()——快速、确定性、审计。
@noble/ed25519 - Argon2id PoW(32 MB,1 次迭代,内存硬)在 Web Worker 中挖掘,保持界面流畅。内存带宽瓶颈——最接近ASIC抵抗的浏览器友好类比。
- PeerJS / WebRTC 点对点。辅助服务分为两类:(链备份 + 对等发现)和(信令)作为独立进程运行,因此它们可以独立失败。这两个列表都可以在应用内配置;客户端还可以从缓存、同源、API 助手和节点中学习签名的辅助记录。
server/api.tsserver/peerjs.ts.well-known - 链状态用 IndexedDB,钱包密钥对用 localStorage。
- Vanilla TypeScript + Vite — no React, no Framework runtime.微小的捆绑包,哈希路由的SPA shell。
快速入门
# install once
npm install
# terminal 1 — HTTP API helper (chain backup, /peers, /heartbeat, /tip, …)
npm run server:api # → http://localhost:9000
# terminal 2 — WebRTC signaling helper
npm run server:peerjs # → http://localhost:9001
# terminal 3 — the browser app
npm run dev # → http://localhost:5173
打开网址。你会获得自动生成的钱包,点击“矿井”标签的“开始挖矿”,然后出现观看方块。在第二个浏览器(或无痕)打开同一个网址,他们会通过辅助服务器互相发现,开始八卦。
这两个助手作为独立进程运行——杀死一个,另一个继续工作。两者皆可有可无:一旦两个浏览器建立了直接的WebRTC连接,即使两个辅助者都坏了,它们仍会持续八卦。辅助发现像比特币的缓存节点、种子发现和地址八卦一样分层:引导源帮助找到网络,但本地验证决定链的有效性。
剧本
| 剧本 | 描述 |
|---|---|
npm run dev |
带有HMR的Vite开发服务器 |
npm run build |
生产版本(排版检查+捆绑包) |
npm run preview |
服务于生产版本 |
npm test |
运行vitest单元测试 |
npm run server:api |
HTTP API 助手(链式备份,,,,……)/peers/heartbeat/tip |
npm run server:peerjs |
WebRTC 信令辅助器(WebSocket)/peerjs |
项目布局
src/
brand.ts user-visible brand constants (name, ticker)
main.ts app bootstrap + router wiring
node.ts the in-browser "full node"
crypto/ Ed25519 + memory-hard PoW primitives
chain/ block, tx, state, mempool, blockchain, consensus, genesis
storage/ IndexedDB + localStorage wallet + migration
miner/ Web Worker nonce grinder + throttle slider
net/ PeerJS gossip protocol + multi-server fan-out + sync
ui/ vanilla-TS UI views + hash router + info-popovers
util/ binary / merkle helpers
server/
api.ts HTTP API helper (chain backup, /peers, /heartbeat, /tip, …)
peerjs.ts WebRTC signaling helper (PeerJS WebSocket)
lib/cli.ts shared --port parser
public/ static assets (logo, styles.css)
安全性
处理情况:
- 双重消费 / 重放 — 账户 nonce + 链 ID 嵌入签名的预像中
- Tx 可塑性 — Ed25519 确定性签名
- Spam — 按字节最小费,内存池上限,签名验证后再中继
- 时间戳扭曲 — 中位数-过去时间规则 + 10分钟未来上限
- 块大小攻击 — 256 KB 上限
- 算力操作难度算法——ASERT指数响应在任何算力下都可证明稳定,且无基于窗口的聚类病态;单块时间戳操作受半衰期/未来封顶比(≤恶意块1位,下一个诚实块还原);难度底线阻挡了“细链”廉价重组攻击;两次间隔的紧急投放可以抓住长时间的停滞,而不会给单独攻击者带来按需折扣
51%——这是刻意的设计决策
理论上,外部浏览器的哈希力能攻击51%是可能的。BrowserCoin不会通过集中软检查点或其他任何联合签名方案来防御它, 因为那样就失去了构建完全去中心化、浏览器内的初衷 加密货币。BrowserCoin所使用的防御正是比特币实际依赖的 实践——使攻击成本足够高以威慑理性攻击者——并适应了 没有ASIC护城河,也没有法币价格。
纵深防守:
- 内存硬Argon2id(32 MB,1次迭代)。RAM带宽主导了每哈希的成本,而非原始计算。服务器攻击者无法像扩展核心那样廉价地扩展内存带宽——云内存已超额订阅;裸机DDR5通道需要真钱。一台价值2万美元的服务器每美元算力与笔记本电脑的算力差距是~5–20×(而SHA-256 + ASIC则是~10,000×)。
- 网络尺度就是实际的护城河。当有足够多的参与浏览器时,总算力超过攻击者在裸机内存带宽中可承受的匹配。每增加一个新参与者,攻击者所需的投资会线性增加。
- 强化的重定向(见上文)使得算力游戏变得不切实际,甚至在原始超越变得不可行之前。
自力更生窗口——当网络较小时——才是真正的脆弱阶段,也就是 有记录,诚实。在网络足够大可以防守之前,不要给链子上加值 就是它自己。没有法定货币市场,没有交易所上市,也没有经济利益可吸引 复杂的攻击者;这是一个实验,旨在看看真正去中心化的程度 浏览器原生共识可以被淘汰。
开发者
在任何BrowserCoin辅助服务器上构建钱包、区块浏览器或机器人。HTTP API 是完全开放的(CORS,无认证),线路格式有端到端文档。*
- 📘
docs/developers.md— REST 端点、块/传输二进制格式、PoW 参数、签名规则、点对点协议。 - 📜
docs/scripting.md— 脚本语言:执行模型、完整的操作码引用,以及常见模板(哈希锁、HTLC 原子交换、多重签名、时间锁定保险库)。 - 🛠️
examples/send-tx.mjs— 可运行的节点脚本,生成密钥、签署事务并提交。
注意事项
- 这是一个实验,而非金融工具。不要给链条赋予真正的价值。
- BRC没有法定货币市场。2100万供应上限存在,是因为规则是比特币式的,而不是因为代币在经济上稀缺。
- 辅助服务器是可插拔且复数的。HTTP API 和 PeerJS 信令都是独立服务,每个服务在“帮助者服务器设置”→下都有自己的 URL 列表。阅读时,按健康顺序尝试每个服务器;给他们所有人写信给粉丝。只要有哪种浏览器能被联系,新的浏览器就可以加入。任何人都可以自己运行,同时发布签名的辅助记录,或者手动添加URL。
npm run server:apinpm run server:peerjs
国内不清退






