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?