This repository has been archived by the owner on Nov 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Make automatic storage deposits resistant against changing deposit pr…
…ices (#12083) * Require `FixedPointOperand` for Balances * Delay deposit calculation * Make refunds pro rata of consumed storage * Add storage migration * Fix clippy * Add liquidity checks * Fixe delayed deposit limit enforcement * Defer charges * Import Vec * Add try-runtime hooks for migration * Fix warning * Adapt to new OnRuntimeUpgrade trait * Apply suggestions from code review Co-authored-by: Sasha Gryaznov <hi@agryaznov.com> * fmt * Apply suggestions from code review Co-authored-by: Sasha Gryaznov <hi@agryaznov.com> * More suggestions from code review Co-authored-by: Sasha Gryaznov <hi@agryaznov.com>
- Loading branch information
Showing
12 changed files
with
958 additions
and
313 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
;; This calls another contract as passed as its account id. It also creates some storage. | ||
(module | ||
(import "seal0" "seal_input" (func $seal_input (param i32 i32))) | ||
(import "seal0" "seal_set_storage" (func $seal_set_storage (param i32 i32 i32))) | ||
(import "seal1" "seal_call" (func $seal_call (param i32 i32 i64 i32 i32 i32 i32 i32) (result i32))) | ||
(import "env" "memory" (memory 1 1)) | ||
|
||
(func $assert (param i32) | ||
(block $ok | ||
(br_if $ok | ||
(get_local 0) | ||
) | ||
(unreachable) | ||
) | ||
) | ||
|
||
(func (export "deploy")) | ||
|
||
(func (export "call") | ||
;; store length of input buffer | ||
(i32.store (i32.const 0) (i32.const 512)) | ||
|
||
;; copy input at address 4 | ||
(call $seal_input (i32.const 4) (i32.const 0)) | ||
|
||
;; create 4 byte of storage before calling | ||
(call $seal_set_storage | ||
(i32.const 0) ;; Pointer to storage key | ||
(i32.const 0) ;; Pointer to value | ||
(i32.const 4) ;; Size of value | ||
) | ||
|
||
;; call passed contract | ||
(call $assert (i32.eqz | ||
(call $seal_call | ||
(i32.const 0) ;; No flags | ||
(i32.const 8) ;; Pointer to "callee" address. | ||
(i64.const 0) ;; How much gas to devote for the execution. 0 = all. | ||
(i32.const 512) ;; Pointer to the buffer with value to transfer | ||
(i32.const 4) ;; Pointer to input data buffer address | ||
(i32.const 4) ;; Length of input data buffer | ||
(i32.const 4294967295) ;; u32 max value is the sentinel value: do not copy output | ||
(i32.const 0) ;; Length is ignored in this case | ||
) | ||
)) | ||
|
||
;; create 8 byte of storage after calling | ||
;; item of 12 bytes because we override 4 bytes | ||
(call $seal_set_storage | ||
(i32.const 0) ;; Pointer to storage key | ||
(i32.const 0) ;; Pointer to value | ||
(i32.const 12) ;; Size of value | ||
) | ||
) | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.