<100 subscribers

PredictX 是一个构建在 Solana 区块链上的去中心化预测市场(Prediction Market)协议。用户可以创建预测市场,对未来的事件进行下注,并在事件发生后获得相应奖励。通过智能合约保证透明公正,所有交易记录上链,无需信任中心化机构。

任何用户都可以创建预测市场:
提出问题:如"比特币会在2026年底达到20万美元吗?"
添加描述:详细说明结算标准和相关背景
设定结束时间:市场何时关闭(支持长期预测,甚至数年)
提供初始流动性:向 YES 和 NO 两个池各注入相同金额的 SOL(最低 0.01 SOL)
用户可以对自己看好的预测进行下注:
买 YES:认为事件会发生
买 NO:认为事件不会发生
下注金额:最低 0.01 SOL
赔率计算:根据池中资金动态计算,资金越少赔率越高
市场结束后,创建者根据真实结果进行结算:
选择 YES 或 NO 作为获胜方
结算后,获胜方的下注者可以领取奖励
重要:PredictX 目前采用中心化结算机制,即市场创建者拥有决定结果的唯一权限。创建者可获得 5% 的手续费作为诚实结算的激励。
获胜方按比例分享市场池:
奖励 = 下注金额 × (总池 - 创建者费) / 获胜方池
创建者费 = 获胜方池 × 5%
创建者可以在没有人下注的情况下取消市场,取回初始流动性。
保护机制:市场一旦有人下注,创建者就无法取消,保护早期下注者利益。

PredictX 目前第一版使用偏中心化结算机制,即市场创建者拥有决定结果的唯一权限。
市场创建:任何人都可以创建预测市场,需要提供初始流动性(最低 0.01 SOL)
下注阶段:用户可以选择 YES 或 NO 进行下注,SOL 会被锁定到市场账户中
市场结算:市场到期后,只有市场创建者可以决定结果
奖励分配:
获胜方的投注者按比例分配总池子
创建者获得 5% 的创建者手续费(从获胜池中扣除)
手续费机制旨在激励创建者诚实结算
信任依赖:用户需要信任市场创建者会诚实结算
无法撤销:一旦结算完成,结果无法更改
参与建议:只参与您信任的创建者所创建的市场
集成预言机(如 Pyth、Chainlink)实现去中心化结算
添加申诉/争议解决机制
引入创建者声誉系统
操作 | 费用 | 说明 |
|---|---|---|
创建市场 | Gas + 初始流动性 | 初始流动性最低 0.02 SOL,平均分配到 YES/NO 池 |
下注 | Gas + 下注金额 | 下注金额全部进入对应池子 |
领取奖励 | Gas + 5% 创建者费 | 从可用余额中扣除 5%,剩余按比例分配给获胜者 |
取消市场 | Gas | 退还初始流动性(仅限无下注时) |

语言:Rust
框架:Anchor Framework 0.32.1
Program ID:8Gox156KkxtCxTbURemn9aB1go8BGohVn5zm5k5jGFrp
网络:Solana Devnet
核心指令:
指令 | 功能 |
|---|---|
| 初始化程序 |
| 创建预测市场 |
| 下注 |
| 结算市场 |
| 领取奖励 |
| 取消市场 |
数据结构:
// 市场账户
pub struct Market {
pub authority: Pubkey, // 创建者
pub question: String, // 预测问题
pub description: String, // 详细描述
pub end_time: i64, // 结束时间
pub yes_pool: u64, // YES 池
pub no_pool: u64, // NO 池
pub total_bets: u64, // 总下注数
pub status: MarketStatus, // 状态
pub outcome: Option<bool>, // 结算结果
pub created_at: i64, // 创建时间
pub bump: u8, // PDA bump
}
// 用户下注账户
pub struct UserBet {
pub market: Pubkey, // 所属市场
pub user: Pubkey, // 用户
pub amount: u64, // 下注金额
pub prediction: bool, // 预测 (YES/NO)
pub claimed: bool, // 是否已领取
pub timestamp: i64, // 下注时间
pub bump: u8, // PDA bump
}
框架:React 18 + TypeScript
构建工具:Vite
UI 库:Tailwind CSS
钱包:Solana Wallet Adapter (仅支持 Phantom)
状态管理:React Context API
动画:Framer Motion
日期处理:Day.js + Ant Design DatePicker
通知:React Hot Toast
国际化:支持中英文切换
// 市场 PDA
market = derive_address([
"market",
authority.pubkey(),
question_bytes[0..8] // 问题前8字节作为种子
])
// 下注 PDA
bet = derive_address([
"bet",
market.pubkey(),
user.pubkey()
])
大多数预测市场平台限制了预测时间(通常30天),PredictX 允许创建长期预测市场,用户可以对数月甚至数年后的事件进行下注。
使用 Anchor 的 init_if_needed 约束,用户可以多次对同一市场下注,累计增加原有头寸。
响应式布局,完美支持手机端
底部弹出式模态框,符合移动端交互习惯
最小触摸区域 44px,确保良好的点击体验
内置中英文双语切换,方便不同地区用户使用。
监听链上账户变化,实时显示用户 SOL 余额。
使用恒定乘数公式计算赔率:
赔率 = (YES池 + NO池) / 选择池
下注的人越少,潜在收益越高。
市场一旦有人下注,创建者就无法取消,保护早期下注者利益。
每个市场卡片显示参与投注的唯一用户数量,帮助用户判断市场热度。
新增"我创建的"筛选标签,方便市场创建者管理自己发布的市场。
所有交易记录在 Solana 区块链上,可通过 Solscan 查询验证。
问题:Anchor PDA 单个种子最大 32 字节,问题字符串可能超过限制。
解决方案:只取问题字符串的前 8 字节作为种子,足够保证唯一性。
问题:用户本地时间与链上时间可能存在差异。
解决方案:
智能合约使用链上 Clock::get() 获取准确时间
前端添加 62 分钟缓冲期
问题:Anchor 返回的枚举类型是对象格式 { active: {} },而非字符串。
解决方案:编写 toMarketStatus 函数兼容多种格式转换。
问题:如何在结算时正确扣除并转移创建者费用。
解决方案:
在 claim_rewards 指令中添加 authority 账户
从市场账户的 lamports 中直接扣除 5% 费用
使用 try_borrow_mut_lamports 进行安全的转账操作
网络:Solana Devnet
Program ID:8Gox156KkxtCxTbURemn9aB1go8BGohVn5zm5k5jGFrp
支持更多钱包(Backpack、Solflare等)
支持更多网络(ETH、BSC、Polygon等)
添加预言机集成,自动结算市场
实现流动性挖矿奖励
支持多选答案预测(不仅是 YES/NO)
部署到 Solana Mainnet
PredictX 展示了在 Solana 高性能区块链上构建去中心化预测市场的完整流程。项目充分利用了 Solana 的高吞吐量和低手续费优势,为用户提供了流畅的预测交易体验。通过智能合约的透明执行和去中心化特性,PredictX 为预测市场领域提供了一个可信、公平的基础设施。
PredictX 是一个构建在 Solana 区块链上的去中心化预测市场(Prediction Market)协议。用户可以创建预测市场,对未来的事件进行下注,并在事件发生后获得相应奖励。通过智能合约保证透明公正,所有交易记录上链,无需信任中心化机构。

任何用户都可以创建预测市场:
提出问题:如"比特币会在2026年底达到20万美元吗?"
添加描述:详细说明结算标准和相关背景
设定结束时间:市场何时关闭(支持长期预测,甚至数年)
提供初始流动性:向 YES 和 NO 两个池各注入相同金额的 SOL(最低 0.01 SOL)
用户可以对自己看好的预测进行下注:
买 YES:认为事件会发生
买 NO:认为事件不会发生
下注金额:最低 0.01 SOL
赔率计算:根据池中资金动态计算,资金越少赔率越高
市场结束后,创建者根据真实结果进行结算:
选择 YES 或 NO 作为获胜方
结算后,获胜方的下注者可以领取奖励
重要:PredictX 目前采用中心化结算机制,即市场创建者拥有决定结果的唯一权限。创建者可获得 5% 的手续费作为诚实结算的激励。
获胜方按比例分享市场池:
奖励 = 下注金额 × (总池 - 创建者费) / 获胜方池
创建者费 = 获胜方池 × 5%
创建者可以在没有人下注的情况下取消市场,取回初始流动性。
保护机制:市场一旦有人下注,创建者就无法取消,保护早期下注者利益。

PredictX 目前第一版使用偏中心化结算机制,即市场创建者拥有决定结果的唯一权限。
市场创建:任何人都可以创建预测市场,需要提供初始流动性(最低 0.01 SOL)
下注阶段:用户可以选择 YES 或 NO 进行下注,SOL 会被锁定到市场账户中
市场结算:市场到期后,只有市场创建者可以决定结果
奖励分配:
获胜方的投注者按比例分配总池子
创建者获得 5% 的创建者手续费(从获胜池中扣除)
手续费机制旨在激励创建者诚实结算
信任依赖:用户需要信任市场创建者会诚实结算
无法撤销:一旦结算完成,结果无法更改
参与建议:只参与您信任的创建者所创建的市场
集成预言机(如 Pyth、Chainlink)实现去中心化结算
添加申诉/争议解决机制
引入创建者声誉系统
操作 | 费用 | 说明 |
|---|---|---|
创建市场 | Gas + 初始流动性 | 初始流动性最低 0.02 SOL,平均分配到 YES/NO 池 |
下注 | Gas + 下注金额 | 下注金额全部进入对应池子 |
领取奖励 | Gas + 5% 创建者费 | 从可用余额中扣除 5%,剩余按比例分配给获胜者 |
取消市场 | Gas | 退还初始流动性(仅限无下注时) |

语言:Rust
框架:Anchor Framework 0.32.1
Program ID:8Gox156KkxtCxTbURemn9aB1go8BGohVn5zm5k5jGFrp
网络:Solana Devnet
核心指令:
指令 | 功能 |
|---|---|
| 初始化程序 |
| 创建预测市场 |
| 下注 |
| 结算市场 |
| 领取奖励 |
| 取消市场 |
数据结构:
// 市场账户
pub struct Market {
pub authority: Pubkey, // 创建者
pub question: String, // 预测问题
pub description: String, // 详细描述
pub end_time: i64, // 结束时间
pub yes_pool: u64, // YES 池
pub no_pool: u64, // NO 池
pub total_bets: u64, // 总下注数
pub status: MarketStatus, // 状态
pub outcome: Option<bool>, // 结算结果
pub created_at: i64, // 创建时间
pub bump: u8, // PDA bump
}
// 用户下注账户
pub struct UserBet {
pub market: Pubkey, // 所属市场
pub user: Pubkey, // 用户
pub amount: u64, // 下注金额
pub prediction: bool, // 预测 (YES/NO)
pub claimed: bool, // 是否已领取
pub timestamp: i64, // 下注时间
pub bump: u8, // PDA bump
}
框架:React 18 + TypeScript
构建工具:Vite
UI 库:Tailwind CSS
钱包:Solana Wallet Adapter (仅支持 Phantom)
状态管理:React Context API
动画:Framer Motion
日期处理:Day.js + Ant Design DatePicker
通知:React Hot Toast
国际化:支持中英文切换
// 市场 PDA
market = derive_address([
"market",
authority.pubkey(),
question_bytes[0..8] // 问题前8字节作为种子
])
// 下注 PDA
bet = derive_address([
"bet",
market.pubkey(),
user.pubkey()
])
大多数预测市场平台限制了预测时间(通常30天),PredictX 允许创建长期预测市场,用户可以对数月甚至数年后的事件进行下注。
使用 Anchor 的 init_if_needed 约束,用户可以多次对同一市场下注,累计增加原有头寸。
响应式布局,完美支持手机端
底部弹出式模态框,符合移动端交互习惯
最小触摸区域 44px,确保良好的点击体验
内置中英文双语切换,方便不同地区用户使用。
监听链上账户变化,实时显示用户 SOL 余额。
使用恒定乘数公式计算赔率:
赔率 = (YES池 + NO池) / 选择池
下注的人越少,潜在收益越高。
市场一旦有人下注,创建者就无法取消,保护早期下注者利益。
每个市场卡片显示参与投注的唯一用户数量,帮助用户判断市场热度。
新增"我创建的"筛选标签,方便市场创建者管理自己发布的市场。
所有交易记录在 Solana 区块链上,可通过 Solscan 查询验证。
问题:Anchor PDA 单个种子最大 32 字节,问题字符串可能超过限制。
解决方案:只取问题字符串的前 8 字节作为种子,足够保证唯一性。
问题:用户本地时间与链上时间可能存在差异。
解决方案:
智能合约使用链上 Clock::get() 获取准确时间
前端添加 62 分钟缓冲期
问题:Anchor 返回的枚举类型是对象格式 { active: {} },而非字符串。
解决方案:编写 toMarketStatus 函数兼容多种格式转换。
问题:如何在结算时正确扣除并转移创建者费用。
解决方案:
在 claim_rewards 指令中添加 authority 账户
从市场账户的 lamports 中直接扣除 5% 费用
使用 try_borrow_mut_lamports 进行安全的转账操作
网络:Solana Devnet
Program ID:8Gox156KkxtCxTbURemn9aB1go8BGohVn5zm5k5jGFrp
支持更多钱包(Backpack、Solflare等)
支持更多网络(ETH、BSC、Polygon等)
添加预言机集成,自动结算市场
实现流动性挖矿奖励
支持多选答案预测(不仅是 YES/NO)
部署到 Solana Mainnet
PredictX 展示了在 Solana 高性能区块链上构建去中心化预测市场的完整流程。项目充分利用了 Solana 的高吞吐量和低手续费优势,为用户提供了流畅的预测交易体验。通过智能合约的透明执行和去中心化特性,PredictX 为预测市场领域提供了一个可信、公平的基础设施。
Share Dialog
Share Dialog
No comments yet