Skip to content

Draft docs. The game is not on mainnet yet and contract addresses are TBD.

Booths · Game of Splits docs

Last Arrow

Each shot raises the price and adds time to the clock. When the clock runs out, the last shot wins half the Purse.

Rules

Opening clock
60 minutes
Each shot
Adds 10 minutes
Max time on clock
60 minutes
Price
Starts at 1 USDG and compounds +0.5% per shot. Resets each round.
Pass
Fair Pass needed
While paused
The clock stops, so a pause can’t end a round on a chosen shot

The price

Shot k costs 1.005^(k−1) USDG. A round of N shots takes in (1.005^N − 1) / 0.005 USDG.

ShotPrice (USDG)Round total so far
11.001.00
1001.64129.33
50112.112,233.48
1,000145.8529,115.13
1,5001,765.74354,713.59

Who wins

PrizeShare of the Purse
The last shot50%
The 10 shots before it, split by what each paid35%
The wallet with the most shots in the round15%

With fewer than 11 shots, the unused tenths of the 35% roll over to seed the next round. Rounding dust rolls over too. A tie for most shots stays with whoever got there first. Payouts are per shot, so a wallet holding several of the 10 gets the sum.

Worked example with 1,000 shots

ItemUSDG
Gross29,115.13
The Purse (60%)17,469.08
Last shot #1000 (50%)8,734.54
Shots #990–999 (35%)6,114.18
Most shots (15%)2,620.36
The Greenwood (40%)11,646.05

Fair-play rules

  • No back-to-back shots by the same player.
  • One shot per L2 block (the chain’s own block number, about 0.1 s).
  • Each shot passes maxPrice. If the price is higher when it lands, it reverts and you pay nothing but gas.

These rules only slow down automated play. Scripts and contracts can still play. The sequencer is first come first served, so the end of a round is a race on speed.

Paying for someone else

shoot(maxPrice, player) takes the USDG from the caller and credits the shot to player, who must hold a Fair Pass. Someone could pay to shoot as you, which counts as your last shot and blocks your next one. They pay full price and you get the credit.

Errors

ErrorWhenWhat to do
NoPassThe player has no Fair Pass.Lock a pass first.
BackToBackThe player fired the last shot.Wait for someone else to shoot.
SameBlockAnother shot already landed in this block.Try again.
PriceAboveMaxThe price rose past your maxPrice.Refresh the price and retry.
PriceCeilingThe price passed the safety ceiling (about shot 5,540).Wait for the round to end.
NotEndedSettling a round whose clock is still running.Wait.
AlreadySettledThe round is already settled.Claim from your Satchel.
NoRoundNo round with that id.