Skip to content

Commit 7c534f1

Browse files
committed
feat(coprocessor): host-listener, dependency_count for dependency_chain
1 parent 9ecf80c commit 7c534f1

File tree

4 files changed

+34
-22
lines changed

4 files changed

+34
-22
lines changed

coprocessor/fhevm-engine/.sqlx/query-04c918d1380072cbacde5fb7937e17c3b50874fe082a6761f25f4a9b1b082bf3.json

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

coprocessor/fhevm-engine/.sqlx/query-d1e5c42539bb901184fe1f4690e62c26850ba790fe0c8d6bdba3adfa18dce89b.json

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coprocessor/fhevm-engine/host-listener/src/database/dependence_chains.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -227,12 +227,16 @@ fn grouping_to_chains(ordered_txs: &mut [Transaction]) -> OrderedChains {
227227
let mut ordered_chains_hash = Vec::with_capacity(ordered_txs.len());
228228
for tx in ordered_txs.iter_mut() {
229229
let mut dependencies = Vec::with_capacity(tx.input_tx.len());
230+
let mut dependencies_seen = HashSet::with_capacity(tx.input_tx.len());
230231
for dep_hash in &tx.input_tx {
231232
let linear_chain = used_tx
232233
.get(dep_hash)
233234
.map(|tx| tx.linear_chain)
234235
.unwrap_or(*dep_hash); // if not in used_tx, it is a past chain
235-
dependencies.push(linear_chain);
236+
if !dependencies_seen.contains(&linear_chain) {
237+
dependencies.push(linear_chain);
238+
dependencies_seen.insert(linear_chain);
239+
}
236240
}
237241
let is_linear = tx.input_tx.len() == 1 && tx.output_tx.len() <= 1;
238242
if is_linear {
@@ -606,6 +610,9 @@ mod tests {
606610
assert_eq!(chains[0].before_size, 0);
607611
assert_eq!(chains[1].before_size, 0);
608612
assert_eq!(chains[2].before_size, 2);
613+
assert_eq!(chains[0].dependencies.len(), 0);
614+
assert_eq!(chains[1].dependencies.len(), 0);
615+
assert_eq!(chains[2].dependencies.len(), 2);
609616
}
610617

611618
fn past_chain(last_byte: u8) -> Chain {
@@ -705,7 +712,7 @@ mod tests {
705712
let va_1 = input_handle(&mut logs, tx1);
706713
let vb_1 = op1(va_1, &mut logs, tx1);
707714
let va_2 = input_shared_handle(&mut logs, va_1, tx2);
708-
let vb_2 = op2(vb_1, va_2, &mut logs, tx2);
715+
let _vb_2 = op2(vb_1, va_2, &mut logs, tx2);
709716
let chains = dependence_chains(&mut logs, &cache).await;
710717
assert_eq!(chains.len(), 1);
711718
}
@@ -745,11 +752,11 @@ mod tests {
745752
let past_chain = past_chain(chain);
746753
let past_chain_hash = past_chain.hash;
747754
cache.write().await.put(
748-
Handle::with_last_byte(100 + chain as u8),
755+
Handle::with_last_byte(100 + chain),
749756
past_chain_hash,
750757
);
751758
past_handles.push((
752-
Handle::with_last_byte(100 + chain as u8),
759+
Handle::with_last_byte(100 + chain),
753760
input_handle(&mut logs, tx_hash),
754761
));
755762
}

coprocessor/fhevm-engine/host-listener/src/database/tfhe_event_propagate.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -770,6 +770,8 @@ impl Database {
770770
}
771771
let chains_hash =
772772
chains.iter().map(|c| c.hash.to_vec()).collect::<Vec<_>>();
773+
let dependency_counts =
774+
chains.iter().map(|c| c.dependencies.len() as i64).collect::<Vec<_>>();
773775
let timestamps: Vec<PrimitiveDateTime> = chains
774776
.iter()
775777
.map(|c| {
@@ -783,10 +785,11 @@ impl Database {
783785
INSERT INTO dependence_chain(
784786
dependence_chain_id,
785787
status,
786-
last_updated_at
788+
last_updated_at,
789+
dependency_count
787790
)
788-
SELECT dcid, 'updated' AS status, ts as last_updated_at
789-
FROM unnest($1::bytea[], $2::timestamp[]) AS t(dcid, ts)
791+
SELECT dcid, 'updated' AS status, ts as last_updated_at, dependency_count
792+
FROM unnest($1::bytea[], $2::timestamp[], $3::bigint[]) AS t(dcid, ts, dependency_count)
790793
ON CONFLICT (dependence_chain_id) DO UPDATE
791794
SET status = 'updated',
792795
last_updated_at = GREATEST(
@@ -796,6 +799,7 @@ impl Database {
796799
"#,
797800
&chains_hash,
798801
&timestamps,
802+
&dependency_counts
799803
);
800804
query.execute(tx.deref_mut()).await?;
801805
Ok(())

0 commit comments

Comments
 (0)