mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-28 14:27:57 +00:00
330484bb19
* Move storage deposits to their own account * Take ed for contract's account from origin * Apply suggestions from code review Co-authored-by: Cyrill Leutwiler <bigcyrill@hotmail.com> Co-authored-by: Sasha Gryaznov <hi@agryaznov.com> * Update stale docs * Use 16 bytes prefix for address derivation * Update frame/contracts/src/address.rs Co-authored-by: Cyrill Leutwiler <bigcyrill@hotmail.com> * Fix merge * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts * Update frame/contracts/primitives/src/lib.rs Co-authored-by: Sasha Gryaznov <hi@agryaznov.com> --------- Co-authored-by: Cyrill Leutwiler <bigcyrill@hotmail.com> Co-authored-by: Sasha Gryaznov <hi@agryaznov.com> Co-authored-by: command-bot <>
51 lines
1.2 KiB
WebAssembly Text Format
51 lines
1.2 KiB
WebAssembly Text Format
(module
|
|
(import "seal0" "seal_balance" (func $seal_balance (param i32 i32)))
|
|
(import "seal0" "seal_transfer" (func $seal_transfer (param i32 i32 i32 i32) (result i32)))
|
|
(import "env" "memory" (memory 1 1))
|
|
|
|
;; [0, 8) reserved for $seal_balance output
|
|
|
|
;; [8, 16) length of the buffer
|
|
(data (i32.const 8) "\08")
|
|
|
|
;; [16, inf) zero initialized
|
|
|
|
(func $assert (param i32)
|
|
(block $ok
|
|
(br_if $ok
|
|
(get_local 0)
|
|
)
|
|
(unreachable)
|
|
)
|
|
)
|
|
|
|
(func (export "deploy"))
|
|
|
|
(func (export "call")
|
|
;; Send entire remaining balance to the 0 address.
|
|
(call $seal_balance (i32.const 0) (i32.const 8))
|
|
|
|
;; Balance should be encoded as a u64.
|
|
(call $assert
|
|
(i32.eq
|
|
(i32.load (i32.const 8))
|
|
(i32.const 8)
|
|
)
|
|
)
|
|
|
|
;; Try to self-destruct by sending full balance to the 0 address.
|
|
;; The call will fail because a contract transfer has a keep alive requirement
|
|
(call $assert
|
|
(i32.eq
|
|
(call $seal_transfer
|
|
(i32.const 16) ;; Pointer to destination address
|
|
(i32.const 32) ;; Length of destination address
|
|
(i32.const 0) ;; Pointer to the buffer with value to transfer
|
|
(i32.const 8) ;; Length of the buffer with value to transfer
|
|
)
|
|
(i32.const 5) ;; ReturnCode::TransferFailed
|
|
)
|
|
)
|
|
)
|
|
)
|