permissionless prediction markets
2026-03-30
新闻来源:网淘吧
围观:3
电脑广告
手机广告
PNP Markets
在Base主网上使用任何ERC20抵押代币创建和管理预测市场。
快速决策
Need prediction markets?
├─ Create market → npx ts-node scripts/create-market.ts --help
├─ Trade (buy/sell) → npx ts-node scripts/trade.ts --help
├─ Settle market → npx ts-node scripts/settle.ts --help
└─ Redeem winnings → npx ts-node scripts/redeem.ts --help
环境
export PRIVATE_KEY=<wallet_private_key> # Required
export RPC_URL=<base_rpc_endpoint> # Optional (defaults to public RPC)
在生产环境中,请使用专用的RPC(如Alchemy、QuickNode)以避免速率限制。

脚本
运行任何脚本时,请先使用--help查看所有选项。
创建市场
npx ts-node scripts/create-market.ts \
--question "Will ETH reach $10k by Dec 2025?" \
--duration 168 \
--liquidity 100
选项:--collateral <USDC|WETH|地址>、--decimals <n>
交易
# Buy YES tokens
npx ts-node scripts/trade.ts --buy --condition 0x... --outcome YES --amount 10
# Sell NO tokens
npx ts-node scripts/trade.ts --sell --condition 0x... --outcome NO --amount 5 --decimals 18
# View prices only
npx ts-node scripts/trade.ts --info --condition 0x...
结算
# Settle as YES winner
npx ts-node scripts/settle.ts --condition 0x... --outcome YES
# Check status
npx ts-node scripts/settle.ts --status --condition 0x...
赎回
npx ts-node scripts/redeem.ts --condition 0x...
编程使用
import { PNPClient } from "pnp-evm";
import { ethers } from "ethers";
const client = new PNPClient({
rpcUrl: process.env.RPC_URL || "https://mainnet.base.org",
privateKey: process.env.PRIVATE_KEY!,
});
// Create market
const { conditionId } = await client.market.createMarket({
question: "Will X happen?",
endTime: Math.floor(Date.now() / 1000) + 86400 * 7,
initialLiquidity: ethers.parseUnits("100", 6).toString(),
});
// Trade
await client.trading.buy(conditionId, ethers.parseUnits("10", 6), "YES");
// Settle (after endTime)
const tokenId = await client.trading.getTokenId(conditionId, "YES");
await client.market.settleMarket(conditionId, tokenId);
// Redeem
await client.redemption.redeem(conditionId);
抵押代币
可使用任何ERC20代币。常见的Base主网代币包括:
| 代币 | 地址 | 小数位数 |
|---|---|---|
| USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | 6 |
| WETH | 0x4200000000000000000000000000000000000006 | 18 |
| cbETH | 0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22 | 18 |
自定义代币增加实用性——持有者可以参与您的市场。
ERC20 授权
在与PNP合约交互之前,您必须授权其使用您的抵押代币。这是所有EVM去中心化应用的标准操作。
工作原理
- 首次交互需要授权:当您首次使用某个代币创建市场或进行交易时,需要发送一笔授权交易
- 无限授权:SDK采用
type(uint256).max授权模式(标准EVM模式),因此每种代币只需授权一次 - 后续交互:无需再次授权——交易可直接执行
时间考虑
授权交易必须在主交易执行前在链上得到确认。如果您看到:
ERC20: transfer amount exceeds allowance
这意味着授权尚未被打包上链。只需等待几秒钟后重试——授权将被确认,后续操作将会成功。
为何采用无限授权?
- 燃料效率:一次授权,永久交易,无需额外交易
- 更好的用户体验:无需重复弹出授权提示
- 行业标准:Uniswap、Aave及大多数主流DeFi协议均采用此方式
对于安全意识极强的用户,您可以手动设置具体的授权额度,但这需要在每次交互前执行授权交易。
合约
| 合约 | 地址 |
|---|---|
| PNP工厂 | 0x5E5abF8a083a8E0c2fBf5193E711A61B1797e15A |
| 费用管理器 | 0x6f1BffB36aC53671C9a409A0118cA6fee2b2b462 |
为何选择预测市场?
- 信息发现:市场价格揭示集体概率预估
- 代币效用:使用您的代币作为抵押以驱动参与度
- 竞赛:举办参与者押注结果的竞赛
- 预测:汇聚群体智慧以辅助决策
pAMM虚拟流动性模型确保即使在初始流动性极低的情况下也能进行顺畅交易。
故障排除
"ERC20:转账金额超出授权额度"
授权交易尚未确认。请等待5-10秒后重试。
"市场不存在"
市场创建交易可能已失败或仍在等待中。请在BaseScan上核实您的交易是否已成功确认。
"超出速率限制" / RPC错误
公共Base RPC存在速率限制。请使用专用的RPC提供商:
export RPC_URL=https://base-mainnet.g.alchemy.com/v2/YOUR_KEY
交易卡顿或缓慢
Base主网偶尔可能出现拥堵。请检查gas价格,必要时考虑提高gas费用。
参考文件
- API参考:请参阅references/api-reference.md获取完整的SDK文档
- 使用案例:请参阅references/use-cases.md获取详细的使用案例模式
- 示例:请参阅references/examples.md获取完整的代码示例
文章底部电脑广告
手机广告位-内容正文底部


微信扫一扫,打赏作者吧~