@@ -33,12 +33,18 @@ pub enum FeeToken {
33
33
}
34
34
35
35
#[ derive( Clone ) ]
36
- pub struct Account {
36
+ pub struct KeyPair {
37
37
pub public_key : Key ,
38
38
pub private_key : Key ,
39
+ }
40
+
41
+ #[ derive( Clone ) ]
42
+ pub struct Account {
43
+ pub keys : KeyPair ,
39
44
pub account_address : ContractAddress ,
40
45
pub initial_balance : Balance ,
41
46
pub class_hash : ClassHash ,
47
+ pub class_metadata : & ' static str ,
42
48
pub ( crate ) contract_class : ContractClass ,
43
49
pub ( crate ) eth_fee_token_address : ContractAddress ,
44
50
pub ( crate ) strk_fee_token_address : ContractAddress ,
@@ -49,20 +55,23 @@ impl Account {
49
55
eth_fee_token_address : ContractAddress ,
50
56
strk_fee_token_address : ContractAddress ,
51
57
) -> DevnetResult < Self > {
52
- let AccountClassWrapper { contract_class, class_hash } =
58
+ let AccountClassWrapper { contract_class, class_hash, class_metadata } =
53
59
AccountContractClassChoice :: Cairo1 . get_class_wrapper ( ) ?;
54
60
55
61
// very big number
56
62
let initial_balance = BigUint :: from ( u128:: MAX ) << 10 ;
57
63
58
64
Ok ( Self {
59
- public_key : Key :: from_hex ( CHARGEABLE_ACCOUNT_PUBLIC_KEY ) ?,
60
- private_key : Key :: from_hex ( CHARGEABLE_ACCOUNT_PRIVATE_KEY ) ?,
65
+ keys : KeyPair {
66
+ public_key : Key :: from_hex ( CHARGEABLE_ACCOUNT_PUBLIC_KEY ) ?,
67
+ private_key : Key :: from_hex ( CHARGEABLE_ACCOUNT_PRIVATE_KEY ) ?,
68
+ } ,
61
69
account_address : ContractAddress :: new ( felt_from_prefixed_hex (
62
70
CHARGEABLE_ACCOUNT_ADDRESS ,
63
71
) ?) ?,
64
72
initial_balance,
65
73
class_hash,
74
+ class_metadata,
66
75
contract_class,
67
76
eth_fee_token_address,
68
77
strk_fee_token_address,
@@ -71,20 +80,21 @@ impl Account {
71
80
72
81
pub ( crate ) fn new (
73
82
initial_balance : Balance ,
74
- public_key : Key ,
75
- private_key : Key ,
83
+ keys : KeyPair ,
76
84
class_hash : ClassHash ,
85
+ class_metadata : & ' static str ,
77
86
contract_class : ContractClass ,
78
87
eth_fee_token_address : ContractAddress ,
79
88
strk_fee_token_address : ContractAddress ,
80
89
) -> DevnetResult < Self > {
90
+ let account_address = Account :: compute_account_address ( & keys. public_key ) ?;
81
91
Ok ( Self {
82
92
initial_balance,
83
- public_key,
84
- private_key,
93
+ keys,
85
94
class_hash,
95
+ class_metadata,
86
96
contract_class,
87
- account_address : Account :: compute_account_address ( & public_key ) ? ,
97
+ account_address,
88
98
eth_fee_token_address,
89
99
strk_fee_token_address,
90
100
} )
@@ -123,7 +133,7 @@ impl Account {
123
133
state. state . state . set_storage_at (
124
134
core_address,
125
135
public_key_storage_var. try_into ( ) ?,
126
- self . public_key ,
136
+ self . keys . public_key ,
127
137
) ?;
128
138
129
139
Ok ( ( ) )
@@ -218,7 +228,7 @@ mod tests {
218
228
use starknet_types:: felt:: felt_from_prefixed_hex;
219
229
use starknet_types:: rpc:: state:: Balance ;
220
230
221
- use super :: Account ;
231
+ use super :: { Account , KeyPair } ;
222
232
use crate :: account:: FeeToken ;
223
233
use crate :: constants:: CAIRO_1_ERC20_CONTRACT_CLASS_HASH ;
224
234
use crate :: state:: { CustomState , StarknetState } ;
@@ -314,9 +324,9 @@ mod tests {
314
324
(
315
325
Account :: new (
316
326
Balance :: from ( 10_u8 ) ,
317
- Felt :: from ( 13431515 ) ,
318
- Felt :: from ( 11 ) ,
327
+ KeyPair { public_key : Felt :: from ( 13431515 ) , private_key : Felt :: from ( 11 ) } ,
319
328
dummy_felt ( ) ,
329
+ "Dummy account" ,
320
330
dummy_cairo_1_contract_class ( ) . into ( ) ,
321
331
fee_token_address,
322
332
fee_token_address,
0 commit comments