@@ -5,79 +5,43 @@ pragma solidity ^0.8.17;
55
66import "../../IMultiLevelTournamentFactory.sol " ;
77import "../../TournamentParameters.sol " ;
8+ import "../../ITournamentParametersProvider.sol " ;
89
910import "./multilevel/TopTournamentFactory.sol " ;
1011import "./multilevel/MiddleTournamentFactory.sol " ;
1112import "./multilevel/BottomTournamentFactory.sol " ;
1213
13- struct CommitmentStructure {
14- uint64 log2step;
15- uint64 height;
16- }
17-
18- struct TimeConstants {
19- Time.Duration matchEffort;
20- Time.Duration maxAllowance;
21- }
22-
23- struct DisputeParameters {
24- TimeConstants timeConstants;
25- CommitmentStructure[] commitmentStructures;
26- }
27-
2814contract MultiLevelTournamentFactory is IMultiLevelTournamentFactory {
2915 TopTournamentFactory immutable topFactory;
3016 MiddleTournamentFactory immutable middleFactory;
3117 BottomTournamentFactory immutable bottomFactory;
32- uint64 immutable levels;
33- Time.Duration immutable matchEffort;
34- Time.Duration immutable maxAllowance;
35- uint64 immutable log2step0;
36- uint64 immutable height0;
37- CommitmentStructure[] commitmentStructures;
38-
39- error CommitmentStructuresArrayLengthTooSmall ();
40- error CommitmentStructuresArrayLengthTooLarge ();
18+ ITournamentParametersProvider immutable tournamentParametersProvider;
4119
4220 constructor (
4321 TopTournamentFactory _topFactory ,
4422 MiddleTournamentFactory _middleFactory ,
4523 BottomTournamentFactory _bottomFactory ,
46- DisputeParameters memory _disputeParameters
24+ ITournamentParametersProvider _tournamentParametersProvider
4725 ) {
4826 topFactory = _topFactory;
4927 middleFactory = _middleFactory;
5028 bottomFactory = _bottomFactory;
51-
52- require (
53- _disputeParameters.commitmentStructures.length >= 1 ,
54- CommitmentStructuresArrayLengthTooSmall ()
55- );
56- require (
57- _disputeParameters.commitmentStructures.length <= type (uint64 ).max,
58- CommitmentStructuresArrayLengthTooLarge ()
59- );
60-
61- levels = uint64 (_disputeParameters.commitmentStructures.length );
62- matchEffort = _disputeParameters.timeConstants.matchEffort;
63- maxAllowance = _disputeParameters.timeConstants.maxAllowance;
64- log2step0 = _disputeParameters.commitmentStructures[0 ].log2step;
65- height0 = _disputeParameters.commitmentStructures[0 ].height;
66- commitmentStructures = _disputeParameters.commitmentStructures;
29+ tournamentParametersProvider = _tournamentParametersProvider;
6730 }
6831
6932 function instantiate (Machine.Hash _initialHash , IDataProvider _provider )
7033 external
7134 override
7235 returns (ITournament)
7336 {
74- TopTournament _tournament = this . instantiateTop (_initialHash, _provider);
37+ TopTournament _tournament = instantiateTop (_initialHash, _provider);
7538 emit tournamentCreated (_tournament);
7639 return _tournament;
7740 }
7841
7942 function instantiateTop (Machine.Hash _initialHash , IDataProvider _provider )
80- external
43+ public
44+ override
8145 returns (TopTournament)
8246 {
8347 TopTournament _tournament = topFactory.instantiate (
@@ -96,7 +60,7 @@ contract MultiLevelTournamentFactory is IMultiLevelTournamentFactory {
9660 uint256 _startCycle ,
9761 uint64 _level ,
9862 IDataProvider _provider
99- ) external returns (MiddleTournament) {
63+ ) external override returns (MiddleTournament) {
10064 MiddleTournament _tournament = middleFactory.instantiate (
10165 _initialHash,
10266 _contestedCommitmentOne,
@@ -124,7 +88,7 @@ contract MultiLevelTournamentFactory is IMultiLevelTournamentFactory {
12488 uint256 _startCycle ,
12589 uint64 _level ,
12690 IDataProvider _provider
127- ) external returns (BottomTournament) {
91+ ) external override returns (BottomTournament) {
12892 BottomTournament _tournament = bottomFactory.instantiate (
12993 _initialHash,
13094 _contestedCommitmentOne,
@@ -146,26 +110,14 @@ contract MultiLevelTournamentFactory is IMultiLevelTournamentFactory {
146110 view
147111 returns (TournamentParameters memory )
148112 {
149- return TournamentParameters ({
150- levels: levels,
151- log2step: log2step0,
152- height: height0,
153- matchEffort: matchEffort,
154- maxAllowance: maxAllowance
155- });
113+ return _getTournamentParameters (0 );
156114 }
157115
158116 function _getTournamentParameters (uint64 _level )
159117 internal
160118 view
161119 returns (TournamentParameters memory )
162120 {
163- return TournamentParameters ({
164- levels: levels,
165- log2step: commitmentStructures[_level].log2step,
166- height: commitmentStructures[_level].height,
167- matchEffort: matchEffort,
168- maxAllowance: maxAllowance
169- });
121+ return tournamentParametersProvider.tournamentParameters (_level);
170122 }
171123}
0 commit comments