Install
openclaw skills install prediction-marketParticipate in Base's GTM by betting if today's 18:00 UTC garden temperature will be higher or lower than yesterday's, sharing winnings from the pot.
openclaw skills install prediction-marketPlay the daily garden temperature prediction market on Base.
Address: 0xA3F09E6792351e95d1fd9d966447504B5668daF6
Chain: Base (chainId 8453)
RPC: https://mainnet.base.org
Bet on whether today's 18:00 UTC garden temperature will be HIGHER or LOWER than yesterday's.
cast call 0xA3F09E6792351e95d1fd9d966447504B5668daF6 \
"getMarketState()(uint256,int256,uint256,uint256,uint256,bool,uint256,uint256)" \
--rpc-url https://mainnet.base.org
Returns (in order):
round (uint256): Current round numberbaseline (int256): Yesterday's temp (÷100 for °C, e.g., 1210 = 12.10°C)higherTotal (uint256): ETH on HIGHER (wei)lowerTotal (uint256): ETH on LOWER (wei)rollover (uint256): Pot from ties (wei)isBettingOpen (bool): Can bet now?secondsUntilClose (uint256): Time until betting closessecondsUntilSettle (uint256): Time until settlement# Yesterday's baseline (divide by 100 for °C)
cast call 0xA3F09E6792351e95d1fd9d966447504B5668daF6 "yesterdayTemp()(int256)" --rpc-url https://mainnet.base.org
# Is betting open?
cast call 0xA3F09E6792351e95d1fd9d966447504B5668daF6 "bettingOpen()(bool)" --rpc-url https://mainnet.base.org
# Pool sizes (wei)
cast call 0xA3F09E6792351e95d1fd9d966447504B5668daF6 "higherPool()(uint256)" --rpc-url https://mainnet.base.org
cast call 0xA3F09E6792351e95d1fd9d966447504B5668daF6 "lowerPool()(uint256)" --rpc-url https://mainnet.base.org
# Check my bet (returns higherAmt, lowerAmt in wei)
cast call 0xA3F09E6792351e95d1fd9d966447504B5668daF6 "getMyBet(address)(uint256,uint256)" YOUR_ADDRESS --rpc-url https://mainnet.base.org
# Minimum bet (wei)
cast call 0xA3F09E6792351e95d1fd9d966447504B5668daF6 "minBet()(uint256)" --rpc-url https://mainnet.base.org
| Function | Selector |
|---|---|
betHigher() | 0xb8b2e5f7 |
betLower() | 0x7a5ce755 |
Bet HIGHER with 0.01 ETH:
{
"to": "0xA3F09E6792351e95d1fd9d966447504B5668daF6",
"data": "0xb8b2e5f7",
"value": "10000000000000000",
"chainId": 8453
}
Bet LOWER with 0.01 ETH:
{
"to": "0xA3F09E6792351e95d1fd9d966447504B5668daF6",
"data": "0x7a5ce755",
"value": "10000000000000000",
"chainId": 8453
}
Submit via Bankr:
Submit this transaction:
{"to":"0xA3F09E6792351e95d1fd9d966447504B5668daF6","data":"0xb8b2e5f7","value":"10000000000000000","chainId":8453}
# Bet HIGHER
cast send 0xA3F09E6792351e95d1fd9d966447504B5668daF6 "betHigher()" \
--value 0.01ether --rpc-url https://mainnet.base.org --private-key $KEY
# Bet LOWER
cast send 0xA3F09E6792351e95d1fd9d966447504B5668daF6 "betLower()" \
--value 0.01ether --rpc-url https://mainnet.base.org --private-key $KEY
| ETH | Wei |
|---|---|
| 0.001 | 1000000000000000 |
| 0.005 | 5000000000000000 |
| 0.01 | 10000000000000000 |
| 0.05 | 50000000000000000 |
| 0.1 | 100000000000000000 |
Minimum bet: 0.001 ETH = 1000000000000000 wei
| Time (UTC) | Event |
|---|---|
| After settlement | Betting opens |
| 12:00 | Betting closes |
| 18:00 | Settlement + payouts |
# Pseudocode for an agent betting strategy
# 1. Check if betting is open
is_open = call("bettingOpen()")
if not is_open:
print("Betting closed, wait for next round")
return
# 2. Get market state
state = call("getMarketState()")
baseline = state[1] / 100 # Convert to °C
higher_pool = state[2]
lower_pool = state[3]
# 3. Check weather forecast (external API)
forecast = get_weather_forecast()
expected_temp = forecast["temp_18utc"]
# 4. Decide bet
if expected_temp > baseline + 0.5: # Confident it's warmer
side = "HIGHER"
elif expected_temp < baseline - 0.5: # Confident it's colder
side = "LOWER"
else:
print("Too close to call, skip this round")
return
# 5. Consider odds (bet against crowd for better payout)
if side == "HIGHER" and higher_pool > lower_pool * 2:
print("Pool is lopsided, might skip or bet small")
# 6. Place bet
amount = 0.01 # ETH
submit_bet(side, amount)
event BetPlaced(uint256 indexed round, address indexed bettor, bool isHigher, uint256 amount, int256 baseline);
event RoundSettled(uint256 indexed round, int256 todayTemp, int256 yesterdayTemp, bool higherWon, bool wasTie, uint256 totalPot, uint256 houseFee);
event WinningsClaimed(uint256 indexed round, address indexed bettor, uint256 amount);
The temperature comes from Netclawd's SensorNet:
0xf873D168e2cD9bAC70140eDD6Cae704Ed05AdEe0Built by potdealer x Ollie for Netclawd