方刚 SDK
Fangorn是用于发布数据。 你发表 还原 记录,你可以使任何字段支付。 每一个雷波的脑袋都扎根于链条上,它的历史生活在IPFS中. 任何人都可以读取,校验,diff,订阅,或从你的回购中购买,而无需向您询问索引器或平台.
npm i @fangorn-network/sdk
模型
- 出版社. 钱包地址 出版商拥有他们的回扣,没有人承认或批准它们.
- 复问. 已按键
publisher : repo它的状态是一张地图 记录{ id, type, payload },存储为内容地址的默克勒搜索树. - 承诺. 每一方在母体和一个CAR文件中承诺点数,并持有它引入的块. 历史可以单从头上走走并传播.
- 推来推去. 将上链头移动到母体上的比较和擦拭,如 git ref 更新. 登记处只储存人头.
- 付费田地. 出版商在记录中封印出场并签出价. 买家通过和解注册支付,一个密钥服务器释放出密钥.
- 应用程序只是重置. 应用程序是出版商的唱片 引用 其他出版商的唱片 在命名的头。 它会选择和安排数据,但是它从不持有数据或打开数据. 当被引用导致发售时,该应用软件的出版商地址会收到推荐份额.
Fangorn不是:它不是一个数据库。 它没有查询语言,也没有索引器. 你在上面盖的 subscribe (见 西马赫) (中文(简体) ).
快速启动 (SDK)
import { Fangorn } from "@fangorn-network/sdk";
const fangorn = Fangorn.create({
privateKey: "0x...",
storage: { signedUrl: {} }, // hosted uploads on Base Sepolia; or { pinata: { jwt, gateway } }
});
await fangorn.initRepo("rusty-anchor");
await fangorn.uploadBatch("rusty-anchor", [
{ id: "t1", type: "track", payload: { title: "Locura", artist: "Alice" } },
]);
// Anyone, from the head alone:
const { contents } = await fangorn.readRepo(
fangorn.getAddress(),
"rusty-anchor",
);
for await (const change of fangorn.subscribe({
repo: "rusty-anchor",
owner: fangorn.getAddress(),
})) {
console.log(change.puts, change.deletes);
}
快速启动( CLI)
npm i -g @fangorn-network/sdk
fangorn init # wallet key, storage → ~/.fangorn/config.json
fangorn repo init rusty-anchor # create on chain, track in ./.fangorn
fangorn add . # stage files: csv/json rows → records, text files → one record each
fangorn commit # local commit (IPFS only)
fangorn push # move the on-chain head
fangorn subscribe --owner 0x... rusty-anchor # stream diffs as JSON lines
这个 指南 覆盖全部流量: 承诺 vs 推取, 时代, 历史, 签名, 代理卡, 存储, 以及被封和付费的字段 .
网络
Fangorn 运行在 塞波利亚基地 (默认)和 塞波利亚角。每个系统都有自己的数据注册、结算注册、托管上传工作人员和密钥服务器。 地址在 src/config.ts (单位:千美元)BaseSepoliaConfig, (中文(简体) ), ArbitrumSepoliaConfig) (中文(简体) ). CLI要求网络在 fangorn init,以及 CHAIN_NAME=arbitrumSepolia 超过它。 使用本地的阴道或私人部署,通过自己的 NetworkConfig 改为 Fangorn.create,或设置 FANGORN_* 超接 CLI( 见 指南) (中文(简体) ). 合同来源在 粉丝网络/合同。 。 。 .
发展
pnpm i
pnpm test # unit tests + the SDK suite in memory
pnpm test:e2e # the same suite against the contracts on a fresh anvil
pnpm abis # regenerate ABIs from the contracts repo
E2e测试需要 anvil, (中文(简体) ), forge,还有兄弟会的离职 fangorn-network/contracts (一组) FANGORN_CONTRACTS_DIR 以使用另一个位置)。 没有他们,测试就会在本地跳过,在CI中失败. E2E_STORAGE=pinata 对Pinata进行测试(PINATA_JWT, (中文(简体) ), PINATA_GATEWAY) (中文(简体) ). pnpm test:live 对塞波利亚基地进行只读检查.
许可证
麻省理工学院