文档
众筹共建
当没有人出售你需要的东西时,可以由许多出资人一起出资开发。开发者按交付物受聘,出资人投票决定是否放行每个里程碑,大家共同持有收益份额。成品之后每一笔付费销售,都会按份额分给持有人。
测试模式,以及法律提醒。众筹项目目前只在模拟通道上运行,没有任何真实资金流动。可以交易的收益份额,在许多国家很可能被视为证券。涉及真实资金或公开宣传之前,请先咨询法律意见。本页内容不构成法律、税务或投资建议。
目前仅限节点。众筹项目即将在托管应用中推出,应用里的相关页面和“发起众筹”的链接目前只是占位页。本页的命令和接口都针对自托管节点。链上的共建方案设计在 docs/PAYMENTS.md 里,尚未部署。
涉及哪些角色
| 角色 | 职责 |
|---|---|
| 发起人 | 创建项目,设定目标金额、交付物、开发者和里程碑;之后挂上完成的条目。 |
| 出资人 | 以美元认筹,按出资比例获得收益份额,并对里程碑投票。 |
| 开发者 | 事先指定,各自分得一部分预算和一部分份额;提交里程碑交付并附上证据。 |
| 托管方 | 确认认筹款项已到账。在自托管节点上就是节点运营者。 |
生命周期
| 状态 | 含义 | 下一步 |
|---|---|---|
OPEN 募集中 | 在达到目标或截止日期(默认 30 天)之前接受认筹。 | 已确认款项达到目标则进入 FUNDED;先到截止日期则为 FAILED。 |
FUNDED 已筹满 | 目标达成,份额已发行。开发者交付,出资人投票。 | 所有里程碑获批后进入 COMPLETED。 |
COMPLETED 已完成 | 所有里程碑均获批准。发起人可以挂上成品条目。 | 终态。之后的销售继续产生分红。 |
FAILED 已失败 | 截止日期已过,目标未达成。 | 终态。见目标未达成时。 |
认筹要等托管方确认款项到账后才计数。如果某笔认筹会使总额超过目标,它会被忽略,所以你最多只能认筹到剩余的金额。
创建项目
比例以基点(bps)表示:10,000 bps 即 100%。
| 字段 | 规则 |
|---|---|
title、spec | 标题最多 200 个字符;说明最多 4,000 个字符。 |
deliverables | 要开发的内容列表,至少一项。 |
goal_usd | 必须大于零。 |
deadline_days | 达成目标的天数,默认 30。 |
developers | {id, budget_bps, equity_bps} 的列表。每个 id 是开发者的公钥,且不能重复。各 budget_bps 之和必须恰好为 10,000,且每项都大于零;各 equity_bps 之和最多为 5,000。 |
milestones | {name, bps} 的列表。每项都大于零,总和恰好为 10,000。 |
curl -s -X POST http://127.0.0.1:8420/api/projects -d '{
"identity": "acme",
"title": "Invoice PDF skill",
"spec": "A skill that turns invoice PDFs into structured JSON.",
"deliverables": ["invoice-extractor skill"],
"goal_usd": 1000,
"deadline_days": 30,
"developers": [
{"id": "rb1...dev-one", "budget_bps": 7000, "equity_bps": 1500},
{"id": "rb1...dev-two", "budget_bps": 3000, "equity_bps": 500}
],
"milestones": [{"name": "Prototype", "bps": 4000}, {"name": "Release", "bps": 6000}]
}'如果违反了比例规则,节点会返回错误,不会创建任何东西。用 python -m repoblock projects 可以列出所有项目。
份额与 50% 上限
每个项目恰好有 1,000,000 份收益份额,在达成目标的那一刻一次性发行。
- 开发者获得的份额等于其
equity_bps。所有开发者合计最多持有 50%。这个上限在创建项目时就强制执行,所以突破它的项目根本不会存在。 - 其余份额按每位出资人已确认的金额比例分给出资人。四舍五入产生的零头归最大的出资人。
以上面的项目为例:开发者合计持有 15% + 5% = 200,000 份,出资人分享 800,000 份。假设 Ana 认筹 $600,Bo 认筹 $400:
| 持有人 | 认筹 | 份额 | 占比 |
|---|---|---|---|
| 开发者一 | 不适用 | 150,000 | 15.0% |
| 开发者二 | 不适用 | 50,000 | 5.0% |
| Ana | $600 | 480,000 | 48.0% |
| Bo | $400 | 320,000 | 32.0% |
通过 POST /api/projects/PROJECT_ID/back 并提交 {"identity":"ana","amount_usd":600} 为项目出资,也可以使用 MCP 工具 back_project。
里程碑与投票
- 开发者为某个里程碑提交交付,并附上一小段证据(最多 500 个字符),比如发布版本的链接和一次测试运行记录。
- 出资人投赞成或反对票,票重等于里程碑交付那一刻所持有的份额,之后转走的份额不会重复投票。开发者不参与投票。
- 当赞成票持有的份额超过全部出资人份额的一半时,里程碑获批。份额以交付那一刻的快照为准,基数是全体出资人,而不只是投了票的人,所以沉默等于不批准。
- 获批后,日志会记录每位开发者应得的金额:目标金额 × 该里程碑占比 × 该开发者的预算占比。
目标为 1,000 美元时,Prototype 里程碑价值 $400。开发者一的预算占比 70%,得 $280;开发者二占 30%,得 $120。在这个例子里,Ana 持有 800,000 份出资人份额中的 480,000 份,即 60%,所以她一个人就能批准里程碑。份额集中,意味着控制权也集中。同一里程碑如果有新的交付,之前的投票会被清空。所有里程碑都获批后,项目进入 COMPLETED。
curl -s -X POST $NODE/api/projects/$PID/deliver -d '{"identity":"dev-one","milestone":0,"evidence":"v0.1 release and CI run"}'
curl -s -X POST $NODE/api/projects/$PID/vote -d '{"identity":"ana","milestone":0,"approve":true}'销售分红
项目完成后,发起人把成品作为一条普通的上架信息发布,并把 project_id 设为该项目,再记录到项目上(用 POST /api/projects/PROJECT_ID/product 提交 block_id)。此后,针对该条目且已放款的订单,款项不再付给某一位卖家。扣除网络费用后,金额会按当前的份额持有人分配,精确到分,零头的一分钱归最大持有人。
一笔 $25 的销售,按默认 1% 的费用,剩下 $24.75:
| 持有人 | 份额 | 分红 |
|---|---|---|
| 开发者一 | 150,000 | $3.71 |
| 开发者二 | 50,000 | $1.23 |
| Ana | 480,000 | $11.89 |
| Bo | 320,000 | $7.92 |
每一份先向下取整到分:$3.7125 变成 $3.71,$1.2375 变成 $1.23,Ana 的 $11.88 恰好无零头。剩下的一分钱归最大持有人 Ana。每个项目的分红会累计记录在它的档案里。
转让份额
项目进入 FUNDED 或 COMPLETED 之后,持有人可以通过 POST /api/projects/PROJECT_ID/transfer 并提交 {"to":"rb1...","units":50000},把一部分份额转给另一个身份。分红跟随订单结算那一刻的份额。有两条规则保护开发者上限:授予开发者的份额,在项目 COMPLETED 之前只能留在开发者之间;会使开发者合计超过 50% 的转让会被忽略。正是这种可转让性,使份额很可能被认定为证券,请再读一遍上面的法律提醒。
你的投资组合
python -m repoblock portfolio --as ana 会按项目列出:你的投入、持有份额和占比、已收到的分红,以及净结果。同样的视图也可以通过 GET /api/portfolio/YOUR_PUBLIC_ID 和 MCP 工具 portfolio 获得。
目标未达成时
如果截止日期已过而目标尚未达成,项目会变为 FAILED,不发行任何份额。已确认的认筹款项应退还给出资人,托管方负责退还,并把每笔退款记为日志里的一条 project.refund 事件。节点目前没有对应的 HTTP 路由或命令,运营者需要在 Python 里调用(ProjectService.refund);在模拟通道上不会有真实资金流动。项目筹满之后,如果开发者停止交付,目前也没有机制把未使用的资金追回。出资人唯一的办法是不批准里程碑。请只投入你承受得起损失的金额。
最近更新: