网淘吧来吧,欢迎您!

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)以避免速率限制。

permissionless prediction markets

脚本

运行任何脚本时,请先使用--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主网代币包括:

代币地址小数位数
USDC0x833589fCD6eDb6E08f4c7C32D4f71b54bdA029136
WETH0x420000000000000000000000000000000000000618
cbETH0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc2218

自定义代币增加实用性——持有者可以参与您的市场。

ERC20 授权

在与PNP合约交互之前,您必须授权其使用您的抵押代币。这是所有EVM去中心化应用的标准操作。

工作原理

  1. 首次交互需要授权:当您首次使用某个代币创建市场或进行交易时,需要发送一笔授权交易
  2. 无限授权:SDK采用type(uint256).max授权模式(标准EVM模式),因此每种代币只需授权一次
  3. 后续交互:无需再次授权——交易可直接执行

时间考虑

授权交易必须在主交易执行前在链上得到确认。如果您看到:

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费用。

参考文件

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第349338名访客 今日有175篇新文章/评论