@@ -2,13 +2,14 @@ use eyre::Result;
2
2
use iris_mpc_common:: {
3
3
iris_db:: { db:: IrisDB , iris:: IrisCode } ,
4
4
test:: { generate_full_test_db, SimpleAnonStatsTestGenerator } ,
5
- IrisSerialId as SerialId , IrisVectorId as VectorId ,
5
+ IrisVectorId as VectorId ,
6
6
} ;
7
7
use iris_mpc_cpu:: {
8
8
execution:: hawk_main:: { HawkActor , HawkArgs , HawkHandle } ,
9
9
hawkers:: {
10
- aby3:: aby3_store:: { Aby3Store , SharedIrises } ,
10
+ aby3:: aby3_store:: { Aby3SharedIrises , Aby3Store } ,
11
11
plaintext_store:: PlaintextStore ,
12
+ shared_irises:: SharedIrises ,
12
13
} ,
13
14
hnsw:: { graph:: layered_graph:: migrate, GraphMem , HnswParams , HnswSearcher } ,
14
15
protocol:: shared_iris:: GaloisRingSharedIris ,
@@ -47,29 +48,31 @@ async fn create_graph_from_plain_dbs(
47
48
left_db : & IrisDB ,
48
49
right_db : & IrisDB ,
49
50
params : & HnswParams ,
50
- ) -> Result < ( [ GraphMem < Aby3Store > ; 2 ] , [ SharedIrises ; 2 ] ) > {
51
+ ) -> Result < ( [ GraphMem < Aby3Store > ; 2 ] , [ Aby3SharedIrises ; 2 ] ) > {
51
52
let mut rng = StdRng :: seed_from_u64 ( db_seed) ;
52
- let left_points: HashMap < SerialId , IrisCode > = left_db
53
+ let left_points: HashMap < VectorId , Arc < IrisCode > > = left_db
53
54
. db
54
55
. iter ( )
55
56
. enumerate ( )
56
- . map ( |( idx, iris) | ( idx as u32 + 1 , iris. clone ( ) ) )
57
+ . map ( |( idx, iris) | ( VectorId :: from_0_index ( idx as u32 ) , Arc :: new ( iris. clone ( ) ) ) )
57
58
. collect ( ) ;
59
+ let left_storage = SharedIrises :: new ( left_points, Default :: default ( ) ) ;
58
60
59
- let right_points: HashMap < SerialId , IrisCode > = right_db
61
+ let right_points: HashMap < VectorId , Arc < IrisCode > > = right_db
60
62
. db
61
63
. iter ( )
62
64
. enumerate ( )
63
- . map ( |( idx, iris) | ( idx as u32 + 1 , iris. clone ( ) ) )
65
+ . map ( |( idx, iris) | ( VectorId :: from_0_index ( idx as u32 ) , Arc :: new ( iris. clone ( ) ) ) )
64
66
. collect ( ) ;
67
+ let right_storage = SharedIrises :: new ( right_points, Default :: default ( ) ) ;
68
+
65
69
let mut left_store = PlaintextStore {
66
- points : left_points,
67
- next_id : left_db. db . len ( ) as u32 + 1 ,
70
+ storage : left_storage,
68
71
} ;
69
72
let mut right_store = PlaintextStore {
70
- points : right_points,
71
- next_id : right_db. db . len ( ) as u32 + 1 ,
73
+ storage : right_storage,
72
74
} ;
75
+
73
76
let searcher = HnswSearcher {
74
77
params : params. clone ( ) ,
75
78
} ;
@@ -87,31 +90,31 @@ async fn create_graph_from_plain_dbs(
87
90
let mut right_shared_irises = HashMap :: new ( ) ;
88
91
89
92
// sort the points by serial id to ensure consistent ordering
90
- let mut left_points_sorted: Vec < _ > = left_store. points . keys ( ) . cloned ( ) . collect ( ) ;
93
+ let mut left_points_sorted: Vec < _ > = left_store. storage . points . keys ( ) . cloned ( ) . collect ( ) ;
91
94
left_points_sorted. sort ( ) ;
92
95
93
- let mut right_points_sorted: Vec < _ > = right_store. points . keys ( ) . cloned ( ) . collect ( ) ;
96
+ let mut right_points_sorted: Vec < _ > = right_store. storage . points . keys ( ) . cloned ( ) . collect ( ) ;
94
97
right_points_sorted. sort ( ) ;
95
98
96
99
for serial_id in left_points_sorted {
97
100
let vector_id: VectorId = VectorId :: from_serial_id ( serial_id) ;
98
101
let shares = GaloisRingSharedIris :: generate_shares_locally (
99
102
& mut rng,
100
- left_store. points . get ( & serial_id) . unwrap ( ) . clone ( ) ,
103
+ ( * left_store. storage . points . get ( & serial_id) . unwrap ( ) . 1 ) . clone ( ) ,
101
104
) ;
102
105
left_shared_irises. insert ( vector_id, Arc :: new ( shares[ player_index] . clone ( ) ) ) ;
103
106
}
104
107
for serial_id in right_points_sorted {
105
108
let vector_id: VectorId = VectorId :: from_serial_id ( serial_id) ;
106
109
let shares = GaloisRingSharedIris :: generate_shares_locally (
107
110
& mut rng,
108
- right_store. points . get ( & serial_id) . unwrap ( ) . clone ( ) ,
111
+ ( * right_store. storage . points . get ( & serial_id) . unwrap ( ) . 1 ) . clone ( ) ,
109
112
) ;
110
113
right_shared_irises. insert ( vector_id, Arc :: new ( shares[ player_index] . clone ( ) ) ) ;
111
114
}
112
115
113
- let left_iris_store = SharedIrises :: new ( left_shared_irises) ;
114
- let right_iris_store = SharedIrises :: new ( right_shared_irises) ;
116
+ let left_iris_store = Aby3Store :: new_storage ( Some ( left_shared_irises) ) ;
117
+ let right_iris_store = Aby3Store :: new_storage ( Some ( right_shared_irises) ) ;
115
118
116
119
Ok ( (
117
120
[ left_mpc_graph, right_mpc_graph] ,
0 commit comments