Skip to content

Commit 102cebf

Browse files
committed
Add more debug log
1 parent ef3f5c0 commit 102cebf

File tree

4 files changed

+60
-21
lines changed

4 files changed

+60
-21
lines changed

packages/account-wasm/pkg/account_wasm_bg.js

+17-17
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,11 @@ export function __wbindgen_object_drop_ref(arg0) {
443443
takeObject(arg0);
444444
};
445445

446+
export function __wbindgen_string_new(arg0, arg1) {
447+
const ret = getStringFromWasm0(arg0, arg1);
448+
return addHeapObject(ret);
449+
};
450+
446451
export function __wbindgen_error_new(arg0, arg1) {
447452
const ret = new Error(getStringFromWasm0(arg0, arg1));
448453
return addHeapObject(ret);
@@ -477,6 +482,16 @@ export function __wbindgen_jsval_eq(arg0, arg1) {
477482
return ret;
478483
};
479484

485+
export function __wbindgen_cb_drop(arg0) {
486+
const obj = takeObject(arg0).original;
487+
if (obj.cnt-- == 1) {
488+
obj.a = 0;
489+
return true;
490+
}
491+
const ret = false;
492+
return ret;
493+
};
494+
480495
export function __wbindgen_boolean_get(arg0) {
481496
const v = getObject(arg0);
482497
const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;
@@ -511,16 +526,6 @@ export function __wbindgen_is_undefined(arg0) {
511526
return ret;
512527
};
513528

514-
export function __wbindgen_cb_drop(arg0) {
515-
const obj = takeObject(arg0).original;
516-
if (obj.cnt-- == 1) {
517-
obj.a = 0;
518-
return true;
519-
}
520-
const ret = false;
521-
return ret;
522-
};
523-
524529
export function __wbindgen_jsval_loose_eq(arg0, arg1) {
525530
const ret = getObject(arg0) == getObject(arg1);
526531
return ret;
@@ -531,11 +536,6 @@ export function __wbindgen_number_new(arg0) {
531536
return addHeapObject(ret);
532537
};
533538

534-
export function __wbindgen_string_new(arg0, arg1) {
535-
const ret = getStringFromWasm0(arg0, arg1);
536-
return addHeapObject(ret);
537-
};
538-
539539
export function __wbg_getwithrefkey_edc2c8960f0f1191(arg0, arg1) {
540540
const ret = getObject(arg0)[getObject(arg1)];
541541
return addHeapObject(ret);
@@ -1002,8 +1002,8 @@ export function __wbindgen_memory() {
10021002
return addHeapObject(ret);
10031003
};
10041004

1005-
export function __wbindgen_closure_wrapper1519(arg0, arg1, arg2) {
1006-
const ret = makeMutClosure(arg0, arg1, 512, __wbg_adapter_48);
1005+
export function __wbindgen_closure_wrapper1521(arg0, arg1, arg2) {
1006+
const ret = makeMutClosure(arg0, arg1, 516, __wbg_adapter_48);
10071007
return addHeapObject(ret);
10081008
};
10091009

5.21 KB
Binary file not shown.

packages/account-wasm/src/lib.rs

+15-3
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ use paymaster::PaymasterRequest;
3434
use serde_wasm_bindgen::{from_value, to_value};
3535
use starknet::accounts::{Account, ConnectedAccount};
3636
use starknet::core::types::{BlockId, BlockTag, FunctionCall};
37-
use starknet::core::utils as starknetutils;
37+
use starknet::core::utils::{self as starknetutils};
3838
use starknet::macros::{selector, short_string};
3939
use starknet::providers::Provider;
4040
use starknet::signers::SigningKey;
@@ -48,8 +48,9 @@ use types::invocation::JsInvocationsDetails;
4848
use types::outside_execution::JsOutsideExecution;
4949
use types::session::{JsCredentials, JsSession};
5050
use url::Url;
51-
use utils::{policies_match, set_panic_hook};
51+
use utils::{policies_match, set_panic_hook, calculate_contract_address};
5252
use wasm_bindgen::prelude::*;
53+
use web_sys::console;
5354

5455
use crate::types::TryFromJsValue;
5556

@@ -61,6 +62,8 @@ pub struct CartridgeAccount {
6162
device_signer: DeviceSigner,
6263
username: String,
6364
rpc_url: Url,
65+
rp_id: String,
66+
origin: String,
6467
}
6568

6669
#[wasm_bindgen]
@@ -99,7 +102,7 @@ impl CartridgeAccount {
99102
let cose_bytes = general_purpose::URL_SAFE_NO_PAD.decode(public_key)?;
100103
let cose = CoseKey::from_slice(&cose_bytes)?;
101104

102-
let device_signer = DeviceSigner::new(rp_id, origin, credential_id, cose);
105+
let device_signer = DeviceSigner::new(rp_id.clone(), origin.clone(), credential_id, cose);
103106

104107
let dummy_guardian = SigningKey::from_secret_scalar(short_string!("CARTRIDGE_GUARDIAN"));
105108
let address = Felt::from_str(&address)?;
@@ -118,6 +121,8 @@ impl CartridgeAccount {
118121
device_signer,
119122
username,
120123
rpc_url,
124+
rp_id,
125+
origin,
121126
})
122127
}
123128

@@ -315,6 +320,13 @@ impl CartridgeAccount {
315320
constructor_calldata[0] = Felt::TWO; // incorrect signer enum from serialization
316321
constructor_calldata.push(Felt::ONE); // no guardian
317322

323+
let address = calculate_contract_address(starknetutils::cairo_short_string_to_felt(&self.username)?, Felt::from_str(ACCOUNT_CLASS_HASH)?, &constructor_calldata);
324+
console::log_1(&format!("constructor {:#?}", constructor_calldata).into());
325+
console::log_1(&format!("deployment address: {:#x}", address).into());
326+
console::log_1(&format!("backend address: {:#x}", self.account.address()).into());
327+
console::log_1(&format!("rp_id: {}", self.rp_id).into());
328+
console::log_1(&format!("origin: {}", self.origin).into());
329+
318330
let factory = CartridgeAccountFactory::new(
319331
Felt::from_str(ACCOUNT_CLASS_HASH)?,
320332
self.account.chain_id(),

packages/account-wasm/src/utils.rs

+28-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,27 @@
11
use std::collections::HashMap;
22

33
use starknet::accounts::Call;
4-
use starknet::core::types::Felt;
4+
use starknet::core::crypto::compute_hash_on_elements;
5+
use starknet::core::types::{Felt, NonZeroFelt};
56
use starknet::core::utils::get_selector_from_name;
67

78
use crate::types::policy::JsPolicy;
89

10+
const PREFIX_CONTRACT_ADDRESS: Felt = Felt::from_raw([
11+
533439743893157637,
12+
8635008616843941496,
13+
17289941567720117366,
14+
3829237882463328880,
15+
]);
16+
17+
const ADDR_BOUND: NonZeroFelt = NonZeroFelt::from_raw([
18+
576459263475590224,
19+
18446744073709255680,
20+
160989183,
21+
18446743986131443745,
22+
]);
23+
24+
925
pub fn set_panic_hook() {
1026
// When the `console_error_panic_hook` feature is enabled, we can call the
1127
// `set_panic_hook` function at least once during initialization, and then
@@ -32,3 +48,14 @@ pub fn policies_match(calls: &[Call], policies: &[JsPolicy]) -> bool {
3248
.iter()
3349
.all(|call| policy_map.contains_key(&call.selector))
3450
}
51+
52+
pub fn calculate_contract_address(salt: Felt, class_hash: Felt, constructor_calldata: &[Felt]) -> Felt {
53+
compute_hash_on_elements(&[
54+
PREFIX_CONTRACT_ADDRESS,
55+
Felt::ZERO,
56+
salt,
57+
class_hash,
58+
compute_hash_on_elements(constructor_calldata),
59+
])
60+
.mod_floor(&ADDR_BOUND)
61+
}

0 commit comments

Comments
 (0)