SativusCrocus/AletheiaProtocol
GitHub: SativusCrocus/AletheiaProtocol
一个基于 Base Sepolia 与智能合约的去中心化科学验证协议,通过经济抵押与 VRF 陪审团解决科学主张争议。
Stars: 1 | Forks: 0
Aletheia 协议
用于科学主张的有效性去中心化账本。
研究者发布带有 ETH 抵押的研究对象(Research Object)。任何人都可以抵押资金以尝试复现。
争议通过 VRF 抽样陪审团与提交-揭示投票机制解决。
没有期刊。没有编辑。没有管理员密钥。没有创始方信任。
## 存在的原因
同行评审依赖信任、缓慢且不可复现。期刊通过编辑把控可见性,而编辑拥有未披露的激励,“复制危机”并非偶然——它是系统中“无人真正承担风险”的均衡结果。
Aletheia 反转了激励机制:只有当有人将资金押注于主张且无人成功挑战时,该主张才被视为有效。
若 VRF 抽样陪审团判定无效,则主张无效。合约即为裁判。无需游说编辑,无需向期刊付费,也无需向创始方请求收录。
## 在线部署
| 合约 | 地址 | Basescan |
|---|---|---|
| **AletheiaLedger** | `0x7D763A1884C115E405EE18a47A9CD96ed722Ba70` | [查看](https://sepolia.basescan.org/address/0x7D763A1884C115E405EE18a47A9CD96ed722Ba70) |
| **DisputeArbiter** | `0x8516b6D00E69cE0c2Ad16d7244E64165Ab1FcDA9` | [查看](https://sepolia.basescan.org/address/0x8516b6D00E69cE0c2Ad16d7244E64165Ab1FcDA9) |
| **ReputationRegistry** | `0xC81AC0463D2495a5CDc1865d3b077f5fa430a01F` | [查看](https://sepolia.basescan.org/address/0xC81AC0463D2495a5CDc1865d3b077f5fa430a01F) |
| **StubZkVerifier** | `0x3A3e8603b3668ca0AFDc3402e7b1EC49501DE066` | [查看](https://sepolia.basescan.org/address/0x3A3e8603b3668ca0AFDc3402e7b1EC49501DE066) |
## 协议流程
```
NONE
│ submitClaimWithCID(cid) + 0.05 ETH bond
▼
PENDING ────── expirePending (3d, no replicator) ─────▶ FAILED
│
│ commitReplication(id, hash) + 0.05 ETH stake
▼
REPLICATION_COMMITTED
│ │
│ │ expireReplicationCommit (24h, no reveal — 50% slash)
│ └──────────────────────────────────────────────▶ PENDING
│
│ revealReplication(verdict, cid, salt) [min 1h, max 24h]
▼
UNDER_REVIEW
│ │
│ │ challenge(id) + 2× staker ETH
│ ▼
│ DISPUTED ── VRF → juror selection → commit → reveal → resolve
│ ▼
│ VALIDATED / FAILED / INVALIDATED ◀── terminal
│
│ finalizeReplication (2d, no challenge)
▼
VALIDATED / FAILED ◀── terminal
```
## 仓库结构
```
.
├── contracts/ Foundry project (Solidity 0.8.24)
│ ├── src/
│ │ ├── AletheiaLedger.sol Submit, commit-reveal replication, finalize
│ │ ├── DisputeArbiter.sol VRF juror selection + commit-reveal voting
│ │ ├── ReputationRegistry.sol Soulbound, monotonic reputation scores
│ │ ├── Errors.sol Custom errors
│ │ ├── libraries/Economics.sol Pure reward-split math
│ │ ├── verifiers/StubZkVerifier.sol
│ │ └── interfaces/ IAletheiaLedger, IDisputeArbiter, etc.
│ ├── test/ Unit + e2e + invariant tests
│ ├── script/ Deploy, FundSubscription, SeedClaims
│ └── deployments/ base-sepolia.json
├── frontend/ Next.js 16 + wagmi v2 + RainbowKit
│ ├── app/ Pages + /api/upload route
│ ├── components/ Action panels
│ ├── lib/ Hooks, ABIs, storage helpers
│ └── public/ Logo, favicon
├── seed-data/ 10 reproducible Research Object bundles
├── scripts/
│ └── bootstrap.sh One-command deploy + seed
├── LAUNCH.md Complete launch runbook
├── SECURITY.md Disclosure policy + bounty tiers
└── README.md
```
## 快速开始
### 先决条件
- [Foundry](https://getfoundry.sh)(`curl -L https://foundry.paradigm.xyz | bash && foundryup`)
- [Node.js 20+](https://nodejs.org) 和 npm
- Base Sepolia 测试网 ETH(可从任意水龙头获取)
### 运行测试
```
cd contracts
forge install
forge build
forge test -vvv
```
所有测试均在与真实 RPC 无关的内存分叉上运行,使用模拟的 VRF 协调器。
### 部署
```
# 配置环境
cp contracts/.env.example contracts/.env
# 填写 DEPLOYER_KEY, BASESCAN_API_KEY, VRF_SUBSCRIPTION_ID
# 一键部署
./scripts/bootstrap.sh
```
详见 [LAUNCH.md](LAUNCH.md) 获取完整操作步骤。
### 运行前端
```
cd frontend
cp .env.example .env.local
# 从 contracts/deployments/base-sepolia.json 填写合约地址
npm install
npm run dev
```
## 经济参数
| 参数 | 值 | 依据 |
|---|---|---|
| `MIN_CLAIM_BOND` | **0.05 ETH** | 防止垃圾信息,友好于水龙头 |
| `MIN_STAKER_BOND` | **0.05 ETH** | 与提交方对称 |
| `CHALLENGE_BOND_MULT` | **2x** | 固定 griefing 税 |
| `JUROR_BOND` | **0.005 ETH** | 降低参与门槛以促进池子增长 |
| `REVIEW_PERIOD` | **3 天** | 复制窗口 |
| `CHALLENGE_WINDOW` | **2 天** | 提交-揭示后争议宽限期 |
| `REPLICATION_REVEAL_MIN_DELAY` | **1 小时** | 防止前端跑马 |
| `REPLICATION_REVEAL_DEADLINE` | **24 小时** | 提交锁定时间上限 |
| `MIN_JUROR_POOL` | **8** | 挑战生效的硬性门槛 |
| `MAX_CLAIMS_PER_ADDR_PER_WINDOW` | **3 / 7 天** | 每地址速率限制 |
| `MAX_CLAIMS_PER_DAY_GLOBAL` | **50** | 全局 DoS 上限 |
### 争议解决时的奖励分配
奖池为 `submitterBond + stakerBond + challengerBond`:
- **胜者方:** 返还自身抵押 + 拿走对方抵押的 40%
- **每位陪审员**(已揭示且投票正确):获得对方抵押的 15%
- **销毁**(`0x000...dEaD`):对方抵押的 5%
- **未揭示的陪审员:** 抵押的 `JUROR_BOND` 被销毁
### 信誉值变动(单调递增,无衰减)
| 事件 | 变动值 |
|---|---|
| 验证通过的主张 | **+10** |
| 成功复制 | **+5** |
| 正确投票的陪审员 | **+2** |
## 用户流程
### 浏览器路径
1. 在 Base Sepolia 连接 MetaMask
2. `/submit` — 上传研究对象压缩包(ZIP),并使用 0.05 ETH 签名
3. 复制方提交承诺并揭示结果(至少等待 1 小时)
4. 在 2 天挑战窗口结束后,调用 `finalizeReplication` 以结算
5. 若存在争议:VRF 选取 3 名陪审员,通过提交-揭示投票机制裁决
### 直接路径(无前端)
```
# 上传你的 Research Object 到 IPFS
w3 up research-object.zip
# 将 CID 转换为 bytes32 摘要
node -e "import('multiformats/cid').then(({ CID }) => {
const cid = CID.parse('bafkreiabcdef…');
console.log('0x' + Buffer.from(cid.multihash.digest).toString('hex'));
});"
# 通过 cast 直接提交
cast send $LEDGER 'submitClaimWithCID(bytes32)' 0x
\
--value 0.05ether --rpc-url $RPC --private-key $KEY
```
### 加入陪审员池
```
cast send $ARBITER 'joinJurorPool()' \
--value 0.005ether --rpc-url $RPC --private-key $KEY
```
前 **8** 名加入者是关键引导路径——没有他们,任何挑战都无法开启。
## 安全
### 设计层面关闭的攻击向量
| # | 攻击向量 | 缓解措施 |
|---|---|---|
| 1 | **复制方前端跑马** | 承诺为 `keccak256(verdict ‖ cid ‖ salt ‖ sender)`,与地址绑定 |
| 2 | **承诺占用** | 未揭示则抵押 50% 被销毁,索赔状态返回 PENDING |
| 3 | **陪审员池信任** | 池初始为空,VRF 抽样,排除利益相关方 |
| 4 | **VRF 回调 Gas 不足** | 两阶段:回调存储单词,抽样独立运行 |
| 5 | **Sybil 速率限制绕过** | 每地址每周最多 3 次,全局每天最多 50 次,每次需 0.05 ETH |
| 6 | **重入攻击** | 使用 `nonReentrant` + CEI 模式 + 5,000 gas 推送 + pull 回调 |
| 7 | **重复 CID** | 通过 `cidToClaimId` 映射阻止 |
| 8 | **自我抵押** | 强制要求 `msg.sender != claim.submitter` |
### 已知权衡(为 MVP 接受)
1. **首次争议延迟**——直到至少 8 名陪审员自然加入后才可发起挑战
2. **有限的承诺占用伤害**——24 小时锁定,抵押 0.025 ETH
3. **3 名陪审员面板**——可能存在合谋;MVP 之后可扩大面板
4. **zkVM 存根**— `StubZkVerifier` 始终返回 true;需替换后重新部署
5. **无信誉衰减**— 仅通过 ETH 抵押进行惩罚
6. **单一复制方**— 每条主张先提交者获胜
7. **IPFS 持久性**— 依赖固定服务;Arweave 可作为 MVP 后的替换方案
8. **每地址速率限制**— 每个地址需消耗 N × 0.05 ETH 以进行 Sybil 攻击
9. **盐值丢失风险**— 清除本地存储 = 失去抵押;提交时 UI 会给出警告
完整披露策略与赏金等级:[SECURITY.md](<_URL_7/>)
## 贡献
MVP 在合并时故意保持最小与冻结。针对本仓库的 PR 仅应修复漏洞或加强安全性。功能开发请自行分叉并发布你的版本。
## 许可证
代码采用 MIT 许可。协议本身无许可、无版权、无维护者。你可以自由使用、分叉,但不对任何方(包括原始作者)提供信任以保障其持久性。标签:Base Sepolia, Chainlink VRF, Solidity, VRF 随机抽样, Web3 科研, ZK-proven, ZK证明, 争议解决, 以太坊科学, 区块链科学, 区块链科研平台, 去中心化存储, 去中心化科学, 反取证, 可重复性研究, 同行评审, 安全担保, 安全证明, 安全评估, 开源科学, 承诺揭示投票, 抽签陪审团, 无信任机制, 无管理员权限, 有效性账本, 沙箱, 科学可验证性, 科学声明, 科学激励机制, 科学透明度, 科学验证, 科研债券, 科研对象, 科研激励, 科研诚信, 自动化攻击, 质押复制, 镜像实例, 零知识证明