Skip to content

Commit

Permalink
Custom MapperIds
Browse files Browse the repository at this point in the history
  • Loading branch information
fmkra committed Jun 3, 2024
1 parent 07927c5 commit 57efad8
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 8 deletions.
4 changes: 2 additions & 2 deletions src/remappers/interface.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use cairo_lib::utils::types::words64::Words64;
use herodotus_eth_starknet::core::common::{MmrId, MmrSize};

type Headers = Span<Words64>;
type MapperId = usize;
type MapperId = u128;

#[derive(Drop, Serde)]
struct OriginElement {
Expand Down Expand Up @@ -46,7 +46,7 @@ struct BinarySearchTree {
#[starknet::interface]
trait ITimestampRemappers<TContractState> {
// Creates a new mapper and returns its ID.
fn create_mapper(ref self: TContractState, start_block: u256) -> MapperId;
fn create_mapper(ref self: TContractState, start_block: u256, mapper_id: MapperId) -> MapperId;

// Adds elements from other trusted data sources to the given mapper.
fn reindex_batch(
Expand Down
10 changes: 4 additions & 6 deletions src/remappers/timestamp_remappers.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -66,15 +66,13 @@ mod TimestampRemappers {
struct Storage {
headers_store: ContractAddress,
mappers: LegacyMap::<MapperId, Mapper>,
mappers_count: MapperId,
mappers_mmrs: LegacyMap::<MapperId, MMR>,
mappers_mmrs_history: LegacyMap::<(MapperId, MmrSize), felt252>,
}

#[constructor]
fn constructor(ref self: ContractState, headers_store: ContractAddress) {
self.headers_store.write(headers_store);
self.mappers_count.write(0);
}

//
Expand All @@ -84,19 +82,18 @@ mod TimestampRemappers {
#[abi(embed_v0)]
impl TimestampRemappers of ITimestampRemappers<ContractState> {
// Creates a new mapper and returns its ID.
fn create_mapper(ref self: ContractState, start_block: u256) -> MapperId {
fn create_mapper(ref self: ContractState, start_block: u256, mapper_id: MapperId) -> MapperId {
let mmr: MMR = Default::default();

let mapper_id = self.mappers_count.read();
assert(start_block != 0, 'START_BLOCK_0_NOT_ALLOWED');
assert(self.mappers.read(mapper_id).start_block == 0, 'MAPPER_ID_ALREADY_EXISTS');

self.mappers_mmrs_history.write((mapper_id, 0), mmr.root);
self.mappers_mmrs.write(mapper_id, mmr);

let mapper = Mapper { start_block, elements_count: 0, last_timestamp: 0 };
self.mappers.write(mapper_id, mapper);

self.mappers_count.write(mapper_id + 1);

self.emit(Event::MapperCreated(MapperCreated { mapper_id, start_block }));

mapper_id
Expand All @@ -115,6 +112,7 @@ mod TimestampRemappers {
// Fetch from storage
let headers_store_addr = self.headers_store.read();
let mut mapper = self.mappers.read(mapper_id);
assert(mapper.start_block != 0, 'MAPPER_DOES_NOT_EXIST')
let mut mapper_mmr = self.mappers_mmrs.read(mapper_id);

// Determine the expected block number of the first element in the batch
Expand Down

0 comments on commit 57efad8

Please sign in to comment.