radixdlt-scrypto
radixdlt-scrypto copied to clipboard
[ON HOLD] `declare_native_blueprint_state` extensions
Summary
DRAFT PR.
Replaces / rebases the key parts of #1318 - some of this still needs to go.
Still to come:
- Remove the partition-related stuff and flashing-related stuff.
- Implement Typed API, MutableTypedField etc
- Trial
XStateInit
, and the typed API in new native blueprints - ... and when we next create a V2 of a native blueprint, consider moving it across to the nicer APIs.
Details
INSTRUCTIONS:
Provide further details about the changes, or how they fit into the roadmap.
You can delete this section if it's not useful.
Testing
INSTRUCTIONS:
Further details about the tests you've added or manually performed.
You can delete this section if it's not useful.
Update Recommendations
INSTRUCTIONS:
This section is to provide recommendations to consumers of this repo about how they
should handle breaking changes, or integrate new features. The two key stakeholder
groups are dApp Developers and Internal Integrators, and there are separate sections
for each.
In order to allow us to compile aggregated update instructions across PRs, please tag the PR
with 0+ of the relevant labels:
* scrypto-lib - Any change to the scrypto library
* sbor - Any breaking change to SBOR encoding/decoding
* manifest - Any change to manifest display, compilation/decompilation
* transaction - Any change which affects the compiled manifest, or transaction semantics
* substate - Any change to substates, the state model, or what's stored in the DB
* native-blueprint-interface - Any change to the interface of native blueprints
* files-moved - Any change to where engine types have moved, which will require
internal integrators to update their imports
If you have a breaking change which doesn't fix into a category above, then tag it with
the closest label, and discuss in slack/discord.
If your PR contains no breaking changes or new features or hasn't been tagged, this whole
section can be deleted.
For dApp Developers
INSTRUCTIONS:
Migration recommendations for a dApp developer to update their dApp/integrations
due to to the change/s in this PR.
These will be aggregated by the Developer Ecosystem team and included in the next Scrypto migration guide
(eg https://docs-babylon.radixdlt.com/main/scrypto/release_notes/migrating_from_0.7_to_0.8.html )
For Internal Integrators
INSTRUCTIONS:
Instructions to any internal integrations (eg Node, Toolkit, Gateway, Ledger App) for how the changes may affect
them and recommendations for how they should update to support this change.
Docker tags docker.io/radixdlt/private-scrypto-builder:bbba81e7e5
Benchmark for bbba81e
Click to view benchmark
Test | Base | PR | % |
---|---|---|---|
costing::bench_prepare_wasm | 65.6±0.19ms | 66.5±0.13ms | +1.37% |
costing::decode_sbor | 10.7±0.06µs | 10.9±0.04µs | +1.87% |
costing::decode_sbor_bytes | 29.8±0.25µs | 29.9±0.30µs | +0.34% |
costing::deserialize_wasm | 1281.0±4.75µs | 1306.7±3.28µs | +2.01% |
costing::instantiate_flash_loan | 3.9±0.69ms | 3.9±0.73ms | 0.00% |
costing::instantiate_radiswap | 5.8±0.07ms | 5.7±0.07ms | -1.72% |
costing::spin_loop | 21.9±0.15ms | 21.6±0.06ms | -1.37% |
costing::validate_sbor_payload | 27.4±0.09µs | 27.3±0.05µs | -0.36% |
costing::validate_sbor_payload_bytes | 219.7±2.44ns | 234.4±0.97ns | +6.69% |
costing::validate_secp256k1 | 76.2±0.34µs | 76.2±0.26µs | 0.00% |
costing::validate_wasm | 36.5±0.03ms | 36.9±0.03ms | +1.10% |
decimal::add/0 | 8.4±0.00ns | 8.4±0.01ns | 0.00% |
decimal::add/rust-native | 9.8±0.01ns | 9.8±0.02ns | 0.00% |
decimal::add/wasmer | 111.3±0.07ns | 117.5±0.17ns | +5.57% |
decimal::add/wasmer-call-native | 429.2±0.49ns | 433.0±0.48ns | +0.89% |
decimal::add/wasmi | 628.6±1.54ns | 656.9±3.81ns | +4.50% |
decimal::add/wasmi-call-native | 4.6±0.01µs | 4.9±0.01µs | +6.52% |
decimal::div/0 | 181.0±0.19ns | 179.6±0.23ns | -0.77% |
decimal::from_string/0 | 151.1±0.21ns | 150.2±0.24ns | -0.60% |
decimal::mul/0 | 141.6±0.14ns | 139.3±0.23ns | -1.62% |
decimal::mul/rust-native | 136.8±0.22ns | 142.6±0.03ns | +4.24% |
decimal::mul/wasmer | 1515.3±0.97ns | 1510.8±1.06ns | -0.30% |
decimal::mul/wasmer-call-native | 573.8±0.68ns | 561.6±0.35ns | -2.13% |
decimal::mul/wasmi | 41.5±0.17µs | 43.1±0.08µs | +3.86% |
decimal::mul/wasmi-call-native | 4.8±0.00µs | 5.0±0.01µs | +4.17% |
decimal::pow/0 | 654.3±0.53ns | 657.0±0.59ns | +0.41% |
decimal::pow/rust-native | 628.4±0.30ns | 633.3±0.51ns | +0.78% |
decimal::pow/wasmer | 6.6±0.00µs | 6.6±0.01µs | 0.00% |
decimal::pow/wasmer-call-native | 996.6±0.66ns | 1014.6±1.65ns | +1.81% |
decimal::pow/wasmi | 196.4±0.44µs | 204.0±0.38µs | +3.87% |
decimal::pow/wasmi-call-native | 4.7±0.01µs | 4.9±0.00µs | +4.26% |
decimal::root/0 | 8.0±0.01µs | 8.1±0.02µs | +1.25% |
decimal::sub/0 | 8.5±0.01ns | 8.5±0.01ns | 0.00% |
decimal::to_string/0 | 441.7±0.41ns | 440.5±0.16ns | -0.27% |
precise_decimal::add/0 | 9.5±0.00ns | 9.4±0.01ns | -1.05% |
precise_decimal::add/rust-native | 11.4±0.00ns | 11.4±0.00ns | 0.00% |
precise_decimal::add/wasmer | 115.7±0.12ns | 122.6±0.23ns | +5.96% |
precise_decimal::add/wasmer-call-native | 434.8±0.89ns | 442.9±0.85ns | +1.86% |
precise_decimal::add/wasmi | 786.5±1.45ns | 828.2±0.78ns | +5.30% |
precise_decimal::add/wasmi-call-native | 5.0±0.01µs | 5.3±0.01µs | +6.00% |
precise_decimal::div/0 | 295.4±0.38ns | 303.2±0.39ns | +2.64% |
precise_decimal::from_string/0 | 194.4±0.26ns | 201.4±0.94ns | +3.60% |
precise_decimal::mul/0 | 313.5±0.84ns | 315.8±2.22ns | +0.73% |
precise_decimal::mul/rust-native | 294.0±0.75ns | 311.8±2.19ns | +6.05% |
precise_decimal::mul/wasmer | 3.4±0.00µs | 3.5±0.00µs | +2.94% |
precise_decimal::mul/wasmer-call-native | 756.0±5.51ns | 828.2±1.61ns | +9.55% |
precise_decimal::mul/wasmi | 105.2±0.18µs | 110.4±0.20µs | +4.94% |
precise_decimal::mul/wasmi-call-native | 5.4±0.01µs | 5.7±0.01µs | +5.56% |
precise_decimal::pow/0 | 1760.8±7.68ns | 1774.1±4.95ns | +0.76% |
precise_decimal::pow/rust-native | 1424.0±5.08ns | 1404.0±3.31ns | -1.40% |
precise_decimal::pow/wasmer | 16.3±0.01µs | 16.6±0.01µs | +1.84% |
precise_decimal::pow/wasmer-call-native | 2.0±0.00µs | 2.1±0.00µs | +5.00% |
precise_decimal::pow/wasmi | 509.3±3.11µs | 529.1±0.89µs | +3.89% |
precise_decimal::pow/wasmi-call-native | 10.6±0.02µs | 11.4±0.02µs | +7.55% |
precise_decimal::root/0 | 56.4±0.01µs | 56.6±0.03µs | +0.35% |
precise_decimal::sub/0 | 9.5±0.00ns | 9.5±0.01ns | 0.00% |
precise_decimal::to_string/0 | 707.7±1.13ns | 724.2±1.24ns | +2.33% |
schema::validate_payload | 344.5±0.45µs | 377.4±0.79µs | +9.55% |
transaction::radiswap | 5.3±0.02ms | 5.3±0.02ms | 0.00% |
transaction::transfer | 1736.9±8.08µs | 1742.6±12.52µs | +0.33% |
transaction_processing::prepare | 2.2±0.00ms | 2.2±0.01ms | 0.00% |
transaction_processing::prepare_and_decompile | 6.0±0.05ms | 6.0±0.04ms | 0.00% |
transaction_processing::prepare_and_decompile_and_recompile | 27.2±2.52ms | 29.8±1.93ms | +9.56% |
transaction_validation::validate_manifest | 42.1±0.03µs | 42.0±0.20µs | -0.24% |
transaction_validation::verify_bls_2KB | 1024.6±39.37µs | 1006.4±27.68µs | -1.78% |
transaction_validation::verify_bls_32B | 1021.2±29.67µs | 1027.7±43.42µs | +0.64% |
transaction_validation::verify_ecdsa | 74.3±0.06µs | 74.2±0.10µs | -0.13% |
transaction_validation::verify_ed25519 | 54.8±0.72µs | 54.7±0.06µs | -0.18% |