1
1
use crate :: {
2
- constants:: { DEFAULT_BYTES , TRIVIAL_RESOURCE_LOGIC_VK } ,
3
- merkle_path:: MerklePath ,
4
- nullifier_key:: NullifierKey ,
2
+ constants:: TRIVIAL_RESOURCE_LOGIC_VK , merkle_path:: MerklePath , nullifier_key:: NullifierKey ,
5
3
resource:: Resource ,
6
4
} ;
7
5
use k256:: {
8
- elliptic_curve:: { group:: GroupEncoding , Field } ,
9
- ProjectivePoint , Scalar ,
6
+ elliptic_curve:: {
7
+ sec1:: { FromEncodedPoint , ToEncodedPoint } ,
8
+ Field ,
9
+ } ,
10
+ EncodedPoint , ProjectivePoint , Scalar ,
10
11
} ;
11
12
use rand:: Rng ;
12
13
use risc0_zkvm:: sha:: { Digest , Impl , Sha256 } ;
@@ -17,7 +18,7 @@ pub struct ComplianceInstance {
17
18
pub nullifier : Digest ,
18
19
pub commitment : Digest ,
19
20
pub merkle_root : Digest ,
20
- pub delta : [ u8 ; DEFAULT_BYTES ] ,
21
+ pub delta : EncodedPoint ,
21
22
pub consumed_logic_ref : Digest ,
22
23
pub created_logic_ref : Digest ,
23
24
}
@@ -117,17 +118,26 @@ impl<const COMMITMENT_TREE_DEPTH: usize> ComplianceCircuit<COMMITMENT_TREE_DEPTH
117
118
MerklePath :: from_path ( self . compliance_witness . merkle_path ) . root ( cm)
118
119
}
119
120
120
- pub fn delta_commitment ( & self ) -> [ u8 ; DEFAULT_BYTES ] {
121
+ pub fn delta_commitment ( & self ) -> EncodedPoint {
121
122
// Compute delta and make delta commitment public
122
123
let delta = self . compliance_witness . consumed_resource . kind ( )
123
124
* self . compliance_witness . consumed_resource . quantity_scalar ( )
124
125
- self . compliance_witness . created_resource . kind ( )
125
126
* self . compliance_witness . created_resource . quantity_scalar ( )
126
127
+ ProjectivePoint :: GENERATOR * self . compliance_witness . rcv ;
127
128
128
- let delta_bytes: [ u8 ; DEFAULT_BYTES ] = delta. to_affine ( ) . to_bytes ( ) [ ..DEFAULT_BYTES ]
129
- . try_into ( )
130
- . expect ( "Slice length mismatch" ) ;
131
- delta_bytes
129
+ delta. to_encoded_point ( false )
130
+ }
131
+ }
132
+
133
+ impl ComplianceInstance {
134
+ pub fn delta_coordinates ( & self ) -> ( [ u8 ; 32 ] , [ u8 ; 32 ] ) {
135
+ let x = ( * self . delta . x ( ) . unwrap ( ) ) . into ( ) ;
136
+ let y = ( * self . delta . y ( ) . unwrap ( ) ) . into ( ) ;
137
+ ( x, y)
138
+ }
139
+
140
+ pub fn delta_projective ( & self ) -> ProjectivePoint {
141
+ ProjectivePoint :: from_encoded_point ( & self . delta ) . unwrap ( )
132
142
}
133
143
}
0 commit comments