2k txs
9.3k calls
constructor
constructor(uint256 _subscriptionId, uint256 _minBet, uint256[] _horseEndRanges, uint256[] _multipliers, uint256 _maxBet, uint256 _maxWinPotential, address _vrfCoordinator)
functions
activeBetting
viewfunction activeBetting() view returns (bool activeBets)
currentWinPotential
viewfunction currentWinPotential(uint256) view returns (uint256)
horses
viewfunction horses(uint256) view returns (uint128 endRngRange, uint128 multiplier)
maxBet
viewfunction maxBet() view returns (uint256)
maxWinPotential
viewfunction maxWinPotential() view returns (uint256)
minBet
viewfunction minBet() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
requestRounds
viewfunction requestRounds(uint256) view returns (uint256)
roundWinner
viewfunction roundWinner(uint256) view returns (uint256)
s_vrfCoordinator
viewfunction s_vrfCoordinator() view returns (address)
settlementRequested
viewfunction settlementRequested(uint256) view returns (bool)
userBets
viewfunction userBets(address, uint256) view returns (uint48 roundId, uint48 horseId, bool settled, uint256 betAmount)
winnings
viewfunction winnings(address _user) view returns (uint256 _unpaidWinnings)
acceptOwnership
nonpayablefunction acceptOwnership()
adjustBets
nonpayablefunction adjustBets(uint256 _minBet, uint256 _maxBet, uint256 _maxWinPotential)
adjustHorses
nonpayablefunction adjustHorses(uint256[] _horseEndRanges, uint256[] _multipliers)
ownerWithdraw
nonpayablefunction ownerWithdraw(uint256 _amount)
placeBet
payablefunction placeBet(uint256 _horseId) payable
rawFulfillRandomWords
nonpayablefunction rawFulfillRandomWords(uint256 requestId, uint256[] randomWords)
setCoordinator
nonpayablefunction setCoordinator(address _vrfCoordinator)
settle
nonpayablefunction settle()
togglePause
nonpayablefunction togglePause()
transferOwnership
nonpayablefunction transferOwnership(address to)
withdraw
nonpayablefunction withdraw(address _user) returns (uint256 owedWinnings)
events
BetSubmitted
event BetSubmitted(uint256 indexed roundId, address indexed user, uint256 indexed horseId, uint256 amount)
CoordinatorSet
event CoordinatorSet(address vrfCoordinator)
OwnershipTransferred
event OwnershipTransferred(address indexed from, address indexed to)
OwnershipTransferRequested
event OwnershipTransferRequested(address indexed from, address indexed to)
RoundResult
event RoundResult(uint256 indexed roundId, uint256 indexed winner, uint256 timestamp)
errors
OnlyCoordinatorCanFulfill
error OnlyCoordinatorCanFulfill(address have, address want)
OnlyOwnerOrCoordinator
error OnlyOwnerOrCoordinator(address have, address owner, address coordinator)
ZeroAddress
error ZeroAddress()
creation bytecode
0x600580546001600160501b031916680186a00001000000011790557fdc2f87677b01473c763cb0aee938ed3341512f6057324a584e5944e786144d7060065560a06040525f6080908152600790610056908261061a565b50348015610062575f80fd5b5060405161229e38038061229e83398101604081905261008191610770565b8033805f816100d75760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b5f80546001600160a01b0319166001600160a01b0384811691909117909155811615610106576101068161017f565b5050506001600160a01b0381166101305760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b039092166001600160a01b0319928316179055600380549091163317905560048790556101688585610227565b6101738684846104c1565b50505050505050610893565b336001600160a01b038216036101d75760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016100ce565b600180546001600160a01b0319166001600160a01b038381169182179092555f8054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b61022f6104f2565b80518251146102715760405162461bcd60e51b815260206004820152600e60248201526d2ab732b8bab0b61036b0ba31b41760911b60448201526064016100ce565b81600183516102809190610830565b8151811061029057610290610849565b6020026020010151612710146102dc5760405162461bcd60e51b815260206004820152601160248201527024b731b7b93932b1ba1032b73234b7339760791b60448201526064016100ce565b6102e760195f61054d565b604080518082019091525f8082526127106020830190815260198054600181018255908352925190516001600160801b03908116600160801b029116177f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969590920191909155805b83518110156104bb575f84828151811061036a5761036a610849565b602002602001015190505f84838151811061038757610387610849565b602002602001015190505f848361039e9190610830565b90505f61271080836103b0828061085d565b6103ba9190610874565b6103c4919061085d565b6103ce9190610874565b90505f6127106103e08361232861085d565b6103ea9190610874565b90508084101580156103fc5750818411155b6104485760405162461bcd60e51b815260206004820152601e60248201527f4d756c7469706c69657220646f65736e2774206d616b652073656e73652e000060448201526064016100ce565b5050604080518082019091526001600160801b0380851682529283166020820190815260198054600181810183555f92909252925191518516600160801b0291909416177f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969590910155509092500161034e565b50505050565b6104c96104f2565b82156104d557600a8390555b81156104e157600b8290555b80156104ed5760098190555b505050565b5f546001600160a01b0316331461054b5760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016100ce565b565b5080545f8255905f5260205f2090810190610568919061056b565b50565b5b8082111561057f575f815560010161056c565b5090565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806105ab57607f821691505b6020821081036105c957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156104ed57805f5260205f20601f840160051c810160208510156105f45750805b601f840160051c820191505b81811015610613575f8155600101610600565b5050505050565b81516001600160401b0381111561063357610633610583565b610647816106418454610597565b846105cf565b6020601f821160018114610679575f83156106625750848201515b5f19600385901b1c1916600184901b178455610613565b5f84815260208120601f198516915b828110156106a85787850151825560209485019460019092019101610688565b50848210156106c557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82601f8301126106e3575f80fd5b81516001600160401b038111156106fc576106fc610583565b604051600582901b90603f8201601f191681016001600160401b038111828210171561072a5761072a610583565b604052918252602081850181019290810186841115610747575f80fd5b6020860192505b8383101561076657825181526020928301920161074e565b5095945050505050565b5f805f805f805f60e0888a031215610786575f80fd5b8751602089015160408a015191985096506001600160401b038111156107aa575f80fd5b6107b68a828b016106d4565b60608a015190965090506001600160401b038111156107d3575f80fd5b6107df8a828b016106d4565b60808a015160a08b015160c08c0151929750909550935090506001600160a01b038116811461080c575f80fd5b8091505092959891949750929550565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108435761084361081c565b92915050565b634e487b7160e01b5f52603260045260245ffd5b80820281158282048414176108435761084361081c565b5f8261088e57634e487b7160e01b5f52601260045260245ffd5b500490565b6119fe806108a05f395ff3fe608060405260043610610164575f3560e01c80638068aa68116100cd5780639eccacf611610087578063d9e6a0ee11610062578063d9e6a0ee1461043c578063e07336181461046a578063ea3a149914610489578063f2fde38b146104a8575f80fd5b80639eccacf6146103f5578063b459175b14610414578063c4ae316814610428575f80fd5b80638068aa68146102ee5780638da5cb5b1461033d5780638ea981171461036d5780638f8b5cde1461038c57806394ba4940146103cb5780639619367d146103e0575f80fd5b806351cff8d91161011e57806351cff8d91461022957806352e9a640146102485780635c975abb1461027357806367d3bdef1461029c57806371db9c9d146102bb57806379ba5097146102da575f80fd5b806310fe7c481461016f57806311da60b4146101845780631fe543e3146101985780632e5b2168146101b757806333f707d1146101df57806351a78c9f146101fe575f80fd5b3661016b57005b5f80fd5b61018261017d366004611642565b6104c7565b005b34801561018f575f80fd5b506101826107b9565b3480156101a3575f80fd5b506101826101b2366004611659565b6109e4565b3480156101c2575f80fd5b506101cc600b5481565b6040519081526020015b60405180910390f35b3480156101ea575f80fd5b506101826101f9366004611642565b610a34565b348015610209575f80fd5b506101cc610218366004611642565b60156020525f908152604090205481565b348015610234575f80fd5b506101cc6102433660046116ee565b610a6a565b348015610253575f80fd5b506101cc610262366004611642565b60166020525f908152604090205481565b34801561027e575f80fd5b5060085461028c9060ff1681565b60405190151581526020016101d6565b3480156102a7575f80fd5b506101cc6102b6366004611642565b610c5d565b3480156102c6575f80fd5b506101826102d536600461170e565b610c73565b3480156102e5575f80fd5b50610182610ca0565b3480156102f9575f80fd5b5061030d610308366004611737565b610d49565b6040805165ffffffffffff95861681529490931660208501529015159183019190915260608201526080016101d6565b348015610348575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016101d6565b348015610378575f80fd5b506101826103873660046116ee565b610d9e565b348015610397575f80fd5b506103ab6103a6366004611642565b610e8e565b604080516001600160801b039384168152929091166020830152016101d6565b3480156103d6575f80fd5b506101cc60095481565b3480156103eb575f80fd5b506101cc600a5481565b348015610400575f80fd5b50600254610355906001600160a01b031681565b34801561041f575f80fd5b5061028c610ec1565b348015610433575f80fd5b50610182610efa565b348015610447575f80fd5b5061028c610456366004611642565b60176020525f908152604090205460ff1681565b348015610475575f80fd5b5061018261048436600461180f565b610f16565b348015610494575f80fd5b506101cc6104a33660046116ee565b6111b0565b3480156104b3575f80fd5b506101826104c23660046116ee565b611397565b601d6104d4603c43611888565b111580156104e5575060085460ff16155b6105365760405162461bcd60e51b815260206004820152601c60248201527f42657474696e67207068617365206973206e6f74206163746976652e0000000060448201526064015b60405180910390fd5b345f610543603c436118af565b905060018310158015610557575060195483105b6105985760405162461bcd60e51b81526020600482015260126024820152712737ba1030903b30b634b2103437b939b29760711b604482015260640161052d565b600a5482101580156105ac5750600b548211155b6105f85760405162461bcd60e51b815260206004820152601760248201527f426574206e6f7420612076616c696420616d6f756e742e000000000000000000604482015260640161052d565b61060133610a6a565b505f60198481548110610616576106166118c2565b5f918252602082200154600160801b90046001600160801b0316915061271061063f83866118d6565b61064991906118af565b905080600c866009811061065f5761065f6118c2565b015f82825461066e91906118f3565b92505081905550600954600c866009811061068b5761068b6118c2565b015411156106db5760405162461bcd60e51b815260206004820152601c60248201527f546f6f206d616e792062657473206f6e207468697320686f7273652e00000000604482015260640161052d565b335f818152601860209081526040808320815160808101835265ffffffffffff808a1682528b8116828601908152828501878152606084018d8152855460018181018855968a5297909820935160029097029093018054915193511515600160601b0260ff60601b19948416600160301b026bffffffffffffffffffffffff1990931697909316969096171791909116178355925191909201555186919085907f1fa7e20b42a19809ccb92ded5163bc7fe7b7757ca805518ad958a653855b5bb6906107aa9089815260200190565b60405180910390a45050505050565b601d6107c6603c43611888565b10156108145760405162461bcd60e51b815260206004820152601c60248201527f42657474696e67207068617365206973206e6f74206163746976652e00000000604482015260640161052d565b5f610820603c436118af565b5f818152601660205260409020549091501561087e5760405162461bcd60e51b815260206004820152601a60248201527f57696e6e657220616c72656164792064657465726d696e65642e000000000000604482015260640161052d565b5f8181526017602052604090205460ff16156108f15760405162461bcd60e51b815260206004820152602c60248201527f536574746c656d656e7420616c72656164792072657175657374656420666f7260448201526b103a3434b9903937bab7321760a11b606482015260840161052d565b5f818152601760209081526040808320805460ff19166001179055805160c0810182526006548152600480548285015260055461ffff6401000000008204168385015263ffffffff600160301b8204811660608501521660808301528251938401835284845260a08201939093526002549151634d8e1c2f60e11b81529093926001600160a01b0390921691639b1c385e9161098f91869101611906565b6020604051808303815f875af11580156109ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cf9190611989565b5f908152601560205260409020929092555050565b6002546001600160a01b03163314610a245760025460405163073e64fd60e21b81523360048201526001600160a01b03909116602482015260440161052d565b610a2f8383836113ab565b505050565b610a3c61150c565b604051339082156108fc029083905f818181858888f19350505050158015610a66573d5f803e3d5ffd5b5050565b6001600160a01b0381165f90815260186020526040812080545b8015610c1b575f610a966001836119a0565b90505f838281548110610aab57610aab6118c2565b5f91825260209182902060408051608081018252600293909302909101805465ffffffffffff8082168552600160301b82041694840194909452600160601b90930460ff161580159183019190915260019092015460608201529150610b12575050610c1b565b805165ffffffffffff9081165f908152601660205260409020548251909116610b3c603c436118af565b148015610b47575080155b15610b5457505050610c09565b80826020015165ffffffffffff161480610b6c575080155b15610bc85761271060198281548110610b8757610b876118c2565b5f918252602090912001546060840151610bb191600160801b90046001600160801b0316906118d6565b610bbb91906118af565b610bc590876118f3565b95505b6001858481548110610bdc57610bdc6118c2565b5f91825260209091206002909102018054911515600160601b0260ff60601b199092169190911790555050505b80610c13816119b3565b915050610a84565b508115610c57576040516001600160a01b0384169083156108fc029084905f818181858888f19350505050158015610c55573d5f803e3d5ffd5b505b50919050565b600c8160098110610c6c575f80fd5b0154905081565b610c7b61150c565b8215610c8757600a8390555b8115610c9357600b8290555b8015610a2f576009555050565b6001546001600160a01b03163314610cf35760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b604482015260640161052d565b5f8054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6018602052815f5260405f208181548110610d62575f80fd5b5f9182526020909120600290910201805460019091015465ffffffffffff8083169450600160301b8304169250600160601b90910460ff169084565b5f546001600160a01b03163314801590610dc357506002546001600160a01b03163314155b15610e135733610dda5f546001600160a01b031690565b60025460405163061db9c160e01b81526001600160a01b039384166004820152918316602483015291909116604482015260640161052d565b6001600160a01b038116610e3a5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be69060200160405180910390a150565b60198181548110610e9d575f80fd5b5f918252602090912001546001600160801b038082169250600160801b9091041682565b5f805b6009811015610ef6575f600c8260098110610ee157610ee16118c2565b01541115610eee57600191505b600101610ec4565b5090565b610f0261150c565b6008805460ff19811660ff90911615179055565b610f1e61150c565b8051825114610f605760405162461bcd60e51b815260206004820152600e60248201526d2ab732b8bab0b61036b0ba31b41760911b604482015260640161052d565b8160018351610f6f91906119a0565b81518110610f7f57610f7f6118c2565b602002602001015161271014610fcb5760405162461bcd60e51b815260206004820152601160248201527024b731b7b93932b1ba1032b73234b7339760791b604482015260640161052d565b610fd660195f611608565b604080518082019091525f8082526127106020830190815260198054600181018255908352925190516001600160801b03908116600160801b029116177f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969590920191909155805b83518110156111aa575f848281518110611059576110596118c2565b602002602001015190505f848381518110611076576110766118c2565b602002602001015190505f848361108d91906119a0565b90505f612710808361109f82806118d6565b6110a991906118af565b6110b391906118d6565b6110bd91906118af565b90505f6127106110cf836123286118d6565b6110d991906118af565b90508084101580156110eb5750818411155b6111375760405162461bcd60e51b815260206004820152601e60248201527f4d756c7469706c69657220646f65736e2774206d616b652073656e73652e0000604482015260640161052d565b5050604080518082019091526001600160801b0380851682529283166020820190815260198054600181810183555f92909252925191518516600160801b0291909416177f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969590910155509092500161103d565b50505050565b6001600160a01b0381165f90815260186020908152604080832080548251818502810185019093528083528493849084015b8282101561124a575f8481526020908190206040805160808101825260028602909201805465ffffffffffff8082168552600160301b82041684860152600160601b900460ff16151591830191909152600190810154606083015290835290920191016111e2565b5050505090505f603c4361125e91906118af565b82519091505b801561138f575f6112766001836119a0565b90505f84828151811061128b5761128b6118c2565b602002602001015190508060400151156112a657505061138f565b806020015165ffffffffffff1660165f835f015165ffffffffffff1681526020019081526020015f205414806113055750805165ffffffffffff165f908152601660205260409020541580156113055750805165ffffffffffff168414155b1561137a57805165ffffffffffff165f908152601660205260409020546019805461271092908110611339576113396118c2565b5f91825260209091200154606083015161136391600160801b90046001600160801b0316906118d6565b61136d91906118af565b61137790876118f3565b95505b50508080611387906119b3565b915050611264565b505050919050565b61139f61150c565b6113a881611560565b50565b5f838152601560205260409020546113c4603c436118af565b81146113d05750505050565b5f81815260166020526040902054156114375760405162461bcd60e51b815260206004820152602360248201527f57696e6e65722068617320616c7265616479206265656e2064657465726d696e60448201526232b21760e91b606482015260840161052d565b5f61271084845f81811061144d5761144d6118c2565b9050602002013561145e9190611888565b90505f60015b6019548110156114ac5760198181548110611481576114816118c2565b5f918252602090912001546001600160801b03168310156114a4578091506114ac565b600101611464565b505f8381526016602052604081208290556114c990600c90611623565b80837feb4067f80c00f680ec00f711c4427a897809673766ab2ce6abc3a97c4f120bdf426040516114fc91815260200190565b60405180910390a3505050505050565b5f546001600160a01b0316331461155e5760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b604482015260640161052d565b565b336001600160a01b038216036115b85760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640161052d565b600180546001600160a01b0319166001600160a01b038381169182179092555f8054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b5080545f8255905f5260205f20908101906113a8919061162e565b506113a89060098101905b5b80821115610ef6575f815560010161162f565b5f60208284031215611652575f80fd5b5035919050565b5f805f6040848603121561166b575f80fd5b83359250602084013567ffffffffffffffff811115611688575f80fd5b8401601f81018613611698575f80fd5b803567ffffffffffffffff8111156116ae575f80fd5b8660208260051b84010111156116c2575f80fd5b939660209190910195509293505050565b80356001600160a01b03811681146116e9575f80fd5b919050565b5f602082840312156116fe575f80fd5b611707826116d3565b9392505050565b5f805f60608486031215611720575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611748575f80fd5b611751836116d3565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611782575f80fd5b813567ffffffffffffffff81111561179c5761179c61175f565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156117c9576117c961175f565b6040529182526020818501810192908101868411156117e6575f80fd5b6020860192505b838310156118055782358152602092830192016117ed565b5095945050505050565b5f8060408385031215611820575f80fd5b823567ffffffffffffffff811115611836575f80fd5b61184285828601611773565b925050602083013567ffffffffffffffff81111561185e575f80fd5b61186a85828601611773565b9150509250929050565b634e487b7160e01b5f52601260045260245ffd5b5f8261189657611896611874565b500690565b634e487b7160e01b5f52601160045260245ffd5b5f826118bd576118bd611874565b500490565b634e487b7160e01b5f52603260045260245ffd5b80820281158282048414176118ed576118ed61189b565b92915050565b808201808211156118ed576118ed61189b565b60208152815160208201526020820151604082015261ffff604083015116606082015263ffffffff606083015116608082015263ffffffff60808301511660a08201525f60a083015160c08084015280518060e0850152806020830161010086015e5f6101008286010152610100601f19601f8301168501019250505092915050565b5f60208284031215611999575f80fd5b5051919050565b818103818111156118ed576118ed61189b565b5f816119c1576119c161189b565b505f19019056fea2646970667358221220dcd37fcab487381d79223374995181f5ab6cf5b6b8238ee0b10470bbc684e95064736f6c634300081a00334807897fb2e2e2785c62a5736d5864754773013d84039c34a2509f2bd940f070000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000d5d517abe5cf79b7e95ec98db0f0277788aff6340000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002700000000000000000000000000000000000000000000000000000000000000890000000000000000000000000000000000000000000000000000000000000212000000000000000000000000000000000000000000000000000000000000052400000000000000000000000000000000000000000000000000000000000008fb00000000000000000000000000000000000000000000000000000000000010aa0000000000000000000000000000000000000000000000000000000000001a430000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000002625a000000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000003d090000000000000000000000000000000000000000000000000000000000001e84800000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000c3500000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000007530