-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
Problem: -
Error while deploying contracts that contains methods that deletes storage states. That includes operation like Mapping.delete() that call env().clearContractStroage().
Temporary Fix: -
Commented out the new seal_clear_storage from __unstable__.ts, that overshadows the old seal_clear_storage from seal0.ts
ask/as-packages/as-contract-runtime/assembly/unstable.ts
Lines 34 to 35 in a1bd060
| @external("__unstable__", "seal_clear_storage") | |
| export declare function seal_clear_storage(keyPtr: Ptr): Size; |
Substrate Contracts Node Log
v0.22
DEBUG tokio-runtime-worker runtime::contracts: CodeRejected: module imports a non-existent function
v0.23
DEBUG tokio-runtime-worker runtime::contracts: failed to instantiate code: cannot find definition for import __unstable__::seal_clear_storage: Func(DedupFuncType(GuardedEntity { guard_idx: EngineIdx(2), entity_idx: DedupFuncTypeIdx(0) }))
Steps to reproduce: -
Build and deploy any contract that has delete() method. Below is the minimal reproduction contract.
import { HashKeccak256, AccountId, Mapping } from "ask-lang";
@contract()
export class Contract {
_map: Mapping<AccountId, u32, HashKeccak256> = new Mapping();
@constructor()
default(): void {}
@message({ mutates: true })
remove(k: AccountId): void {
return this._map.delete(k);
}
}Notes (Not related to this issue) :-
Cannot deploy any contract build with ark-lang v0.4.0 on latest substrate-contracts-node v0.23.
Always fails with below error.
DEBUG tokio-runtime-worker runtime::contracts: failed to instantiate code: found an unexpected start function with index 58
Maybe related to paritytech/substrate#207
Metadata
Metadata
Assignees
Labels
No labels