From 688a23ecdab6afede502ef7bdcab14d55b01f9f9 Mon Sep 17 00:00:00 2001 From: gaetbout Date: Tue, 25 Jun 2024 18:05:41 +0200 Subject: [PATCH] failing entrypoint not found --- lib/claim.ts | 2 +- src/contracts/claim_account.cairo | 6 ++---- src/contracts/claim_account_impl.cairo | 8 ++------ src/contracts/interface.cairo | 2 +- 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/lib/claim.ts b/lib/claim.ts index ab3c4ac..e172a29 100644 --- a/lib/claim.ts +++ b/lib/claim.ts @@ -141,7 +141,7 @@ function executeActionOnAccount(functionName: string, accountAddress: string, ar return { contractAddress: accountAddress, entrypoint: "execute_action", - calldata: CallData.compile([[hash.getSelectorFromName(functionName), ...args]]), + calldata: { selector: hash.getSelectorFromName(functionName), calldata: args }, }; } diff --git a/src/contracts/claim_account.cairo b/src/contracts/claim_account.cairo index ede58ec..dd07429 100644 --- a/src/contracts/claim_account.cairo +++ b/src/contracts/claim_account.cairo @@ -114,14 +114,12 @@ mod ClaimAccount { #[abi(embed_v0)] impl GiftAccountImpl of IGiftAccount { - fn execute_action(ref self: ContractState, calldata: Array) -> Span { + fn execute_action(ref self: ContractState, selector: felt252, calldata: Array) -> Span { let mut calldata_span = calldata.span(); - let selector = *calldata_span.pop_front().expect('gift-acc/missing-selector'); let claim: ClaimData = Serde::deserialize(ref calldata_span).expect('gift-acc/invalid-claim'); let implementation_class_hash = get_validated_impl(claim); - IClaimAccountImplLibraryDispatcher { class_hash: implementation_class_hash } - .execute_action(implementation_class_hash, selector, claim, calldata_span) + .execute_action(implementation_class_hash, selector, calldata.span()) } } diff --git a/src/contracts/claim_account_impl.cairo b/src/contracts/claim_account_impl.cairo index a5bf575..6083bd1 100644 --- a/src/contracts/claim_account_impl.cairo +++ b/src/contracts/claim_account_impl.cairo @@ -7,7 +7,7 @@ pub trait IClaimAccountImpl { fn claim_internal(ref self: TContractState, claim: ClaimData, receiver: ContractAddress) -> Array>; fn execute_action( - ref self: TContractState, this_class_hash: ClassHash, selector: felt252, claim: ClaimData, args: Span + ref self: TContractState, this_class_hash: ClassHash, selector: felt252, args: Span ) -> Span; fn is_valid_account_signature( @@ -92,11 +92,7 @@ mod ClaimAccountImpl { } fn execute_action( - ref self: ContractState, - this_class_hash: ClassHash, - selector: felt252, - claim: ClaimData, - args: Span + ref self: ContractState, this_class_hash: ClassHash, selector: felt252, args: Span ) -> Span { let is_whitelisted = selector == selector!("claim_external") || selector == selector!("get_dust") diff --git a/src/contracts/interface.cairo b/src/contracts/interface.cairo index 7b2dff9..bf06526 100644 --- a/src/contracts/interface.cairo +++ b/src/contracts/interface.cairo @@ -63,7 +63,7 @@ pub trait IGiftFactory { #[starknet::interface] pub trait IGiftAccount { /// @notice delegates an action to the account implementation - fn execute_action(ref self: TContractState, calldata: Array) -> Span; + fn execute_action(ref self: TContractState, selector: felt252, calldata: Array) -> Span; } /// @notice As defined in SNIP-9 https://github.com/starknet-io/SNIPs/blob/main/SNIPS/snip-9.md