Onchain Madness
Factory
Description: Get the name of a team based on its ID
Arguments:
year:uint256- The year of the tournament_teamId:uint8- The ID of the team
Returns:
string- The name of the team
getTeamName
Description: Get the Final Four data
Arguments:
year:uint256- The year of the tournament
Returns:
OnchainMadness.FinalFour- The data of the Final Four
getFinalFour
Description: Get a match data based on its ID
Arguments:
year:uint256- The year of the tournament_matchId:uint8- The ID of the match
Returns:
OnchainMadness.Match- The data of the match
getMatch
Description: Get a Region data based on its name
Arguments:
year:uint256- The year of the tournament_regionName:bytes32- The name of the region
Returns:
OnchainMadness.Region- The data of the region
getRegion
Description: Get all the teams in a specific region
Arguments:
year:uint256- The year of the tournament_region:bytes32- The name of the region
Returns:
uint8[16]- The IDs of the teams in the region
getAllTeamIds
Description: Converts an array of team IDs to their corresponding team symbols/names
Arguments:
year:uint256- The year of the tournamentteamIds:uint8[63]- Array of team IDs to convert
Returns:
string[63]- Array of team symbols/names corresponding to the input IDs
getTeamSymbols
Description: Retrieves the final result array of winner IDs for all matches in a tournament
Arguments:
year:uint256- The year of the tournament
Returns:
uint8[63]- An array of 63 winner IDs representing all match results
getFinalResult
Description: Get the team names and IDs for all the regions in a specific year
Arguments:
year:uint256- The year of the tournament
Returns:
bytes[4]- The team names IDs for all the regions in bytes formatNotes: Teams (encoded): string[16] teams, uint8[16] teamsIds
getAllTeamsIdsNames
Description: Get if the last created tournament is finished
Arguments:
year:uint256- The year of the tournament
Returns:
bool- True if the tournament is finished, false otherwise
isFinished
Description: Get the round and game status for the current year
Arguments:
year:uint256- The year of the tournament
Returns:
bytes- The current round and game status in bytes formatNotes: Game Status (encoded): uint8 currentRound, uint8 status
getGameStatus
Description: Get the data for the Final Four
Arguments:
year:uint256- The year of the tournament
Returns:
bytes- The Final Four data in bytes formatNotes: Final Four Data (encoded): bytes[2] matchesRound1, bytes matchFinal, string winner
getFinalFourData
Description: Get the data for the First Four
Arguments:
year:uint256- The year of the tournament
Returns:
bytes[4]- The First Four data in bytes formatNotes: Match Data (encoded): string home, string away, uint256 home_points, uint256 away_points, string winner
getFirstFourData
Description: Get the data for all regions
Arguments:
year:uint256- The year of the tournament
Returns:
bytes[4]- The regions data in bytes formatNotes: Region Data (encoded): string[16] teams, bytes[8] matchesRound1, bytes[4] matchesRound2, bytes[2] matchesRound3, bytes matchRound4, string winner
getAllRegionsData
Description: Retrieves a contract address by its name from the contracts mapping
Arguments:
_name:string- The name identifier of the contract
Returns:
address- The address of the requested contract
contracts
Description: Sets a contract address for a given name in the contracts mapping
Arguments:
_name:string- The name identifier for the contract_contract:address- The address of the contract to set
Modifiers:
onlyOwner: Restricted to contract owner
setContract
Description: Records the result of the championship match and completes the tournament
Arguments:
year:uint256- The year of the tournamentwinner:string- The name of the winning teamhomePoints:uint256- Points scored by home teamawayPoints:uint256- Points scored by away team
Modifiers:
onlyExecutor: Restricted to authorized executor
determineChampion
Description: Records the result of a Final Four match and sets up championship match
Arguments:
year:uint256- The year of the tournamentgameIndex:uint8- Index of the Final Four match (0 or 1)winners:string- The name of the winning teamhomePoints:uint256- Points scored by home teamawayPoints:uint256- Points scored by away team
Modifiers:
onlyExecutor: Restricted to authorized executor
determineFinalFourWinner
Description: Records the result of a region's final match and sets up Final Four match
Arguments:
year:uint256- The year of the tournamentregionName:string- The name of the regionwinner:string- The name of the winning teamhomePoints:uint256- Points scored by home teamawayPoints:uint256- Points scored by away team
Modifiers:
onlyExecutor: Restricted to authorized executor
determineFinalRegionWinner
Description: Records the result of a match and sets up the next round match
Arguments:
year:uint256- The year of the tournamentregionName:string- The name of the regionwinner:string- The name of the winning teamround:uint8- Current round number (1-4)matchIndex:uint8- Index of the match in the current roundhomePoints:uint256- Points scored by home teamawayPoints:uint256- Points scored by away team
Modifiers:
onlyExecutor: Restricted to authorized executor
determineMatchWinner
Description: Advances the tournament to the next round
Arguments:
year:uint256- The year of the tournament
Modifiers:
onlyExecutor: Restricted to authorized executor
advanceRound
Description: Closes the betting period and starts the tournament
Arguments:
year:uint256- The year of the tournament
Modifiers:
onlyExecutor: Restricted to authorized executor
closeBets
Description: Records the result of a First Four match and sets the winner
Arguments:
year:uint256- The year of the tournamentmatchCode:string- The code of the First Four match (FFG1-FFG4)_homePoints:uint256- Points scored by the home team_awayPoints:uint256- Points scored by the away team_winner:uint8- Winner of the match (1 for home, 2 for away)
Modifiers:
onlyExecutor: Restricted to authorized executor
determineFirstFourWinner
Description: Initializes a region with 16 teams and sets up first round matches
Arguments:
year:uint256- The year of the tournament_regionName:string- The name of the region (SOUTH, WEST, MIDWEST, EAST)teamNames:string[16]- Array of 16 team names for the region, ordered by seeding
Modifiers:
onlyExecutor: Restricted to authorized executor
initRegion
Description: Initializes a First Four match with two teams
Arguments:
year:uint256- The year of the tournament_matchCode:string- The code identifying the First Four match (FFG1-FFG4)_home:string- The name of the home team_away:string- The name of the away team
Modifiers:
onlyExecutor: Restricted to authorized executor
initFirstFourMatch
Description: Pause or unpause the contract
Arguments:
_paused:bool- The new paused state
Modifiers:
onlyOwner: Restricted to contract owner
pause
Description: Resets the address of the OnchainMadness contract for a specific year
Arguments:
year:uint256- The year of the tournament
Modifiers:
onlyExecutor: Restricted to authorized executor
resetGame
Description: Sets a new executor address
Arguments:
_executor:address- The new executor address
Modifiers:
onlyOwner: Restricted to contract owner
setExecutor
Description: Creates a new OnchainMadness contract for a specific year using the clone pattern
Arguments:
year:uint256- The year of the tournament to create
Returns:
address- The address of the newly created OnchainMadness contractModifiers:
onlyExecutor: Restricted to authorized executor
createOnchainMadness
Description: Initializes the factory with implementation and executor addresses
Arguments:
_implementation:address- Address of the OnchainMadness implementation contract_executor:address- Address authorized to execute tournament operations
Constructor
Functions
onlyExecutor(): Restricts function access to the authorized executor
Modifiers
implementation:
address public immutable- Address of the OnchainMadness implementation contractexecutor:
address public- Address authorized to execute tournament operationslastCreatedTournament:
uint256 public- Last created tournament yearpaused:
bool public- Paused state of the contracttournaments:
mapping(uint256 => address) public- Mapping of tournament addresses by year
State Variables
Status: Represents the status of a tournament
Disabled: Tournament is disabledBetsOn: Betting period is activeOnGoing: Tournament is in progressFinished: Tournament is completed
Enums
BetsClosed: Emitted when the betting period is closed for a tournament year
year:uint256- The year of the tournament
FirstFourMatchDecided: Emitted when a First Four match is decided
year:uint256- The year of the tournamentmatchCode:string- The code of the First Four match (FFG1-FFG4)_winner:uint8- Winner of the match (1 for home, 2 for away)
MatchDecided: Emitted when a match is decided
year:uint256- The year of the tournamentregionName:string- The name of the regionmatchIndex:uint8- Index of the match in the current round_winner:string- Winner of the match
FinalRegionDecided: Emitted when the final region is decided
year:uint256- The year of the tournamentregionName:string- The name of the regionwinner:string- The winner of the final region
FinalFourMatchDecided: Emitted when a final four match is decided
year:uint256- The year of the tournamentgameIndex:uint8- Index of the game in the final fourwinners:string- The winners of the game
RoundAdvanced: Emitted when the tournament advances to the next round
year:uint256- The year of the tournamentround:uint8- The round number advanced to
TournamentFinished: Emitted when a tournament is marked as finished
year:uint256- The year of the tournamentwinner:string- The winner of the tournament
OnchainMadnessCreated: Emitted when a new OnchainMadness contract is created
proxy:address- The address of the newly created OnchainMadness contractyear:uint256- The year of the tournament
ExecutorChanged: Emitted when the executor address is changed
executor:address- The new executor address
TournamentReset: Emitted when a tournament is reset to its initial state
year:uint256- The year of the tournament
Paused: Emitted when the paused state of the contract is changed
paused:bool- The new paused state
Events
Base Testnet: https://sepolia.basescan.org/address/0x4d414ebeFBe0f9efd4076f8aa357bFB7e56fB45A
Factory contract for creating and managing NCAA Tournament bracket games. Uses the clone pattern to deploy new tournament instances for each year.
Last updated
Was this helpful?