Skip to content

Commit f734050

Browse files
committed
refactor(prt-contracts): merge (non)rootTournament into Tournament
1 parent 1f1249a commit f734050

13 files changed

Lines changed: 211 additions & 183 deletions

File tree

prt/client-lua/player/reader.lua

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -360,13 +360,17 @@ function Reader:read_match(address, match_id_hash)
360360
end
361361

362362
function Reader:inner_tournament_winner(address)
363-
local sig = "innerTournamentWinner()(bool,bytes32,bytes32)"
363+
-- innerTournamentWinner() returns (bool, Tree.Node, Tree.Node, Clock.State)
364+
-- Clock.State is (uint64, uint64) for (allowance, startInstant)
365+
local sig = "innerTournamentWinner()(bool,bytes32,bytes32,(uint64,uint64))"
364366
local ret = self:_call(address, sig, {})
367+
assert(#ret >= 3, "innerTournamentWinner returned insufficient values")
365368

366369
local winner = {
367370
has_winner = helper.str_to_bool(ret[1]),
368-
commitment = Hash:from_digest_hex(ret[2]),
369-
dangling = Hash:from_digest_hex(ret[3]),
371+
parent_commitment = Hash:from_digest_hex(ret[2]),
372+
dangling_commitment = Hash:from_digest_hex(ret[3]),
373+
-- ret[4] contains Clock.State struct (allowance, startInstant) if needed
370374
}
371375

372376
return winner

prt/client-rs/core/src/tournament/reader.rs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ use crate::tournament::{
1616
TournamentWinner,
1717
};
1818
use cartesi_dave_merkle::Digest;
19-
use cartesi_prt_contracts::{
20-
non_leaf_tournament, non_root_tournament, root_tournament, tournament,
21-
};
19+
use cartesi_prt_contracts::{non_leaf_tournament, tournament};
2220

2321
#[derive(Clone)]
2422
pub struct StateReader {
@@ -202,8 +200,7 @@ impl StateReader {
202200
assert!(state.level < state.max_level, "level out of bounds");
203201

204202
if state.level > 0 {
205-
let tournament =
206-
non_root_tournament::NonRootTournament::new(tournament_address, &self.client);
203+
let tournament = tournament::Tournament::new(tournament_address, &self.client);
207204
state.can_be_eliminated = tournament.canBeEliminated().call().await?;
208205
}
209206

@@ -276,8 +273,7 @@ impl StateReader {
276273
&self,
277274
root_tournament_address: Address,
278275
) -> Result<Option<TournamentWinner>> {
279-
let root_tournament =
280-
root_tournament::RootTournament::new(root_tournament_address, &self.client);
276+
let root_tournament = tournament::Tournament::new(root_tournament_address, &self.client);
281277
let arbitration_result_return = root_tournament.arbitrationResult().call().await?;
282278
let (finished, commitment, state) = (
283279
arbitration_result_return._0,
@@ -299,8 +295,7 @@ impl StateReader {
299295
&self,
300296
tournament_address: Address,
301297
) -> Result<Option<TournamentWinner>> {
302-
let tournament =
303-
non_root_tournament::NonRootTournament::new(tournament_address, &self.client);
298+
let tournament = tournament::Tournament::new(tournament_address, &self.client);
304299
let inner_tournament_winner_return = tournament.innerTournamentWinner().call().await?;
305300
let (finished, parent_commitment, dangling_commitment) = (
306301
inner_tournament_winner_return._0,

prt/contracts/justfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
BINDINGS_DIR := "./bindings-rs/src/contract"
22
DEPLOYMENTS_DIR := "./deployments"
33
SRC_DIR := "."
4-
BINDINGS_FILTER := "^[^I].+TournamentFactory|LeafTournament|RootTournament|^Tournament$"
4+
BINDINGS_FILTER := "^[^I].+TournamentFactory|LeafTournament|^Tournament$"
55

66
default: build
77

prt/contracts/src/ITournament.sol

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ interface ITournament {
4141
IDataProvider provider;
4242
}
4343

44+
/// @notice Arguments for non-root tournaments (level > 0)
45+
/// @dev Non-root tournaments are inner tournaments created by parent tournaments.
46+
/// They need to track which two final states are being contested.
47+
/// Root tournaments (level == 0) don't need these arguments.
48+
struct NonRootArguments {
49+
Tree.Node contestedCommitmentOne;
50+
Machine.Hash contestedFinalStateOne;
51+
Tree.Node contestedCommitmentTwo;
52+
Machine.Hash contestedFinalStateTwo;
53+
}
54+
4455
/// @notice Match deletion reason
4556
/// @param STEP The match was deleted because one of the
4657
/// commitments was proven wrong through an on-chain

prt/contracts/src/tournament/abstracts/NonRootTournament.sol

Lines changed: 0 additions & 104 deletions
This file was deleted.

prt/contracts/src/tournament/abstracts/RootTournament.sol

Lines changed: 0 additions & 35 deletions
This file was deleted.

0 commit comments

Comments
 (0)