-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Argument passing and returning values when invoking sandboxed funcs #189
Conversation
substrate/primitives/src/sandbox.rs
Outdated
/// 1 byte for encoding unit/value variant | ||
/// 1 byte for encoding value type | ||
/// 8 bytes for encoding the biggest value types: f64, i64. | ||
pub const ENCODED_MAX_SIZE: usize = 10; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not entirely sure about this. On the one hand, this doesn't look too reliable. On the other hand, dynamic approach (i.e when runtime allocates memory for the return status and value, and returns it) seems more complex and less performant.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i128
is now the biggest (primitive) value type...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clarified the comment, I hope it's better now!
a581574
to
eb1294b
Compare
53a267b
to
c1f9c93
Compare
looks ok to me. some resolving to do. |
# Conflicts: # demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm # demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm # polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm # polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm # substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm # substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm # substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm # substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm
c1f9c93
to
6d5ef75
Compare
* Merge remote-tracking branch 'origin/master' into gav-xts-dont-panic * Update wasm. * consensus, session and staking all panic-safe. * Democracy doesn't panic in apply. * Fix tests. * Extra helper macro, council depanicked. * Fix one test. * Fix up all council tests. No panics! * Council voting depanicked. * Dispatch returns result. * session & staking tests updated * Fix democracy tests. * Fix council tests. * Fix up polkadot parachains in runtime * Fix borked merge * More Slicable support Support general `Option` and array types. * Basic storage types. * Existential deposit for contract creation * Basic implemnetation along with removals * Fix tests. * externalities builder fix. * Tests. * Fix up the runtime. * Fix tests. * Add generic `Address` type. * Initial function integration of Address into Extrinsic. * Fix build * All tests compile. * Fix (some) tests. * Fix signing. * Push error. * transfer can accept Address * Make Address generic over AccountIndex * Fix test * Make Council use Address for dispatch. * Fix build * Bend over backwards to support braindead derive. * Repot some files. * Fix tests. * Fix grumbles * Remove Default bound * Fix build for new nightly. * Make `apply_extrinsic` never panic, return useful Result. * More merge hell * Doesn't build, but might do soon * Serde woes * get substrate-runtime-staking compiling * Polkadot builds again! * Fix all build. * Fix tests & binaries. * Reserve some extra initial byte values of address for future format changes * Make semantic of `ReservedBalance` clear. * Fix panic handler. * Integrate other balance transformations into the new model Fix up staking tests. * Fix runtime tests. * Fix panic build. * Tests for demonstrating interaction between balance types. * Repot some runtime code * Fix checkedblock in non-std builds * Get rid of `DoLookup` phantom. * Attempt to make transaction_pool work with lookups. * Remove vscode settings * New attempt at making transaction pool work. * It builds again! * --all builds * Fix tests. * New build. * Test account nonce reset. * polkadot transaction pool tests/framework. * Initial draft (working). * Address grumbles. * Revert bad `map_or` * Rebuild binaries, workaround. * Avoid checking in vscode * reconnecting, shared, slog * CLI options for name and telemetry url * ensure telemetry url imples enabled * Avoid casting to usize early. * Provide on-connect event for session message * Better port * heartbeat and some renaming * transaction pool stuff * minor renaming. * report telemetry * cleanups. * Fix for previous cleanup * dump genesis, dev mode, renaming * Rework chain spec/config &c. to allow for genesis file loading. * Avoid producing genesis storage when unneeded * Allow reading JSON genesis state dumps * tests work again * better logging. * Fix wasm build. * Introduce PoC-1 spec * Made block message compatible with poc-1 * Squashed changes for dumping genesis block. * Binaries. * Made block message compatible with poc-1 * Remove dead code. * Fix bad merge. * Argument passing and returning values when invoking sandboxed funcs (#189) * Fixed block download sequence (#223) * Trie-based execution proof (#177) * TrieBasedBackend * trie tests * redunant return_value removed * use Trie::get_with to record trie proofs * Relaying tx/blocks by light clients (#190) * do not import external transactions into light tx pool * do not announce blocks on light clients * blocks_are_not_announced_by_light_nodes
Document Limiting Resources for Docker Containers
* rename CandidateState to Validator and redefine to match Exposure * feat multiple nominations * clean * unit test multiple nominations * add stakers as separate field to chainspec with fmt that matches stake genesis config * verify nominations are returned when validator exits * candidate bond more less * nominator bond more less * fmt * switch nominatiion * clean * cannot switch to same nomination * remove BlockNumber generic from ValidatorStatus * more payout distribution unit tests * fmt * pay validators before nominators * remove hidden default fee from genesis config and create no fee validator registration path * bump impl version to 11 * fix genesis config * improve test env naming and organization * clean * fix merge into master * tests cover all decl error variants
change fee calc use xassets
* update runtime to rc5 * update rpc to rc5 * fix compile for node * fix test errror
Make `Solution` generic over public key
Signed-off-by: Gregory Hill <gregorydhill@outlook.com>
Also, sweep some todos, e.g don't
panic
when sandboxed module tries to import global variable or table.