用于 人工大脑 的 PoW 模块。
采用 Rust + wasm,简单,体积小(40K before gzip),比较快,不过可能并非很快。
适用于简单低成本的验证场景。
leading_zero_bits(blake2s(challenge + padding)) >= difficulty
其中:
challenge
: 服务端输入的挑战,小于等于 42 字节difficulty
: 难度leading_zero_bits
: 计算出来的 hash 从最高位开始按位检查有多少位是0
PoW 模块通过暴力搜索,计算出满足条件的 8 字节 padding
,返回 challenge + padding
作为 response。
cargo install wasm-pack
wasm-pack build --release --target web
客户端实现参考 resolver.js 和 worker.js。
服务端需要自行实现。
因为大家的 bundler 都不一样,很难在 npm 包里提供好用的 wasm 模块和 worker。
考虑到一共也不需要几个文件,按自己的打包器习惯,复制代码到自己仓库里更好维护。