1
1
use anyhow:: { anyhow, bail, Context , Result } ;
2
+ use bincode;
2
3
use bls12_381:: Scalar ;
3
- use borsh:: { from_slice, to_vec, BorshDeserialize , BorshSerialize } ;
4
4
use jmt:: {
5
5
proof:: { SparseMerkleProof , UpdateMerkleProof } ,
6
6
storage:: { NodeBatch , TreeReader , TreeUpdateBatch , TreeWriter } ,
@@ -22,9 +22,7 @@ pub fn hash(data: &[u8]) -> Digest {
22
22
Digest ( hasher. finalize ( ) )
23
23
}
24
24
25
- #[ derive(
26
- Debug , Clone , BorshSerialize , BorshDeserialize , Serialize , Deserialize , PartialEq , Eq , Copy ,
27
- ) ]
25
+ #[ derive( Debug , Clone , Serialize , Deserialize , PartialEq , Eq , Copy ) ]
28
26
pub struct Digest ( [ u8 ; 32 ] ) ;
29
27
30
28
impl Digest {
@@ -116,7 +114,7 @@ impl Serialize for Proof {
116
114
where
117
115
S : serde:: Serializer ,
118
116
{
119
- let bytes = borsh :: to_vec ( self ) . map_err ( serde:: ser:: Error :: custom) ?;
117
+ let bytes = bincode :: serialize ( self ) . map_err ( serde:: ser:: Error :: custom) ?;
120
118
serializer. serialize_bytes ( & bytes)
121
119
}
122
120
}
@@ -132,28 +130,28 @@ impl<'de> Deserialize<'de> for Proof {
132
130
type Value = Proof ;
133
131
134
132
fn expecting ( & self , formatter : & mut std:: fmt:: Formatter ) -> std:: fmt:: Result {
135
- formatter. write_str ( "a byte array containing Borsh- serialized Proof" )
133
+ formatter. write_str ( "a byte array containing serialized Proof" )
136
134
}
137
135
138
136
fn visit_bytes < E > ( self , v : & [ u8 ] ) -> Result < Self :: Value , E >
139
137
where
140
138
E : serde:: de:: Error ,
141
139
{
142
- Proof :: try_from_slice ( v) . map_err ( serde:: de:: Error :: custom)
140
+ bincode :: deserialize ( v) . map_err ( serde:: de:: Error :: custom)
143
141
}
144
142
}
145
143
146
144
deserializer. deserialize_bytes ( ProofVisitor )
147
145
}
148
146
}
149
147
150
- #[ derive( BorshSerialize , BorshDeserialize , Debug , Clone ) ]
148
+ #[ derive( Debug , Clone ) ]
151
149
pub enum Proof {
152
150
Update ( UpdateProof ) ,
153
151
Insert ( InsertProof ) ,
154
152
}
155
153
156
- #[ derive( Debug , Clone , BorshSerialize , BorshDeserialize ) ]
154
+ #[ derive( Debug , Clone ) ]
157
155
pub struct NonMembershipProof {
158
156
pub root : Digest ,
159
157
pub proof : SparseMerkleProof < Hasher > ,
@@ -166,7 +164,7 @@ impl NonMembershipProof {
166
164
}
167
165
}
168
166
169
- #[ derive( Debug , Clone , BorshSerialize , BorshDeserialize ) ]
167
+ #[ derive( Debug , Clone ) ]
170
168
pub struct InsertProof {
171
169
pub non_membership_proof : NonMembershipProof ,
172
170
@@ -181,7 +179,7 @@ impl InsertProof {
181
179
. verify ( )
182
180
. context ( "Invalid NonMembershipProof" ) ?;
183
181
184
- let value = to_vec ( & self . value ) . unwrap ( ) ;
182
+ let value = bincode :: serialize ( & self . value ) . unwrap ( ) ;
185
183
186
184
self . membership_proof . clone ( ) . verify_existence (
187
185
self . new_root . into ( ) ,
@@ -193,7 +191,7 @@ impl InsertProof {
193
191
}
194
192
}
195
193
196
- #[ derive( Debug , Clone , BorshSerialize , BorshDeserialize ) ]
194
+ #[ derive( Debug , Clone ) ]
197
195
pub struct UpdateProof {
198
196
pub old_root : RootHash ,
199
197
pub new_root : RootHash ,
@@ -206,7 +204,7 @@ pub struct UpdateProof {
206
204
207
205
impl UpdateProof {
208
206
pub fn verify ( & self ) -> Result < ( ) > {
209
- let new_value = to_vec ( & self . new_value ) . unwrap ( ) ;
207
+ let new_value = bincode :: serialize ( & self . new_value ) . unwrap ( ) ;
210
208
211
209
self . proof . clone ( ) . verify_update (
212
210
self . old_root ,
@@ -278,11 +276,12 @@ where
278
276
}
279
277
280
278
fn serialize_value ( value : & Hashchain ) -> Result < Vec < u8 > > {
281
- to_vec ( value) . map_err ( |e| anyhow ! ( "Failed to serialize value: {}" , e) )
279
+ bincode :: serialize ( value) . map_err ( |e| anyhow ! ( "Failed to serialize value: {}" , e) )
282
280
}
283
281
284
282
fn deserialize_value ( bytes : & [ u8 ] ) -> Result < Hashchain > {
285
- from_slice :: < Hashchain > ( bytes) . map_err ( |e| anyhow ! ( "Failed to deserialize value: {}" , e) )
283
+ bincode:: deserialize :: < Hashchain > ( bytes)
284
+ . map_err ( |e| anyhow ! ( "Failed to deserialize value: {}" , e) )
286
285
}
287
286
}
288
287
0 commit comments