Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

[contracts] Implement transparent hashing for contract storage #11501

Merged
merged 78 commits into from
Jun 23, 2022

Conversation

agryaznov
Copy link
Contributor

@agryaznov agryaznov commented May 22, 2022

Resolve #11029

cumulus companion: paritytech/cumulus#1404

@agryaznov agryaznov added A0-please_review Pull request needs code review. B3-apinoteworthy C1-low PR touches the given topic and has a low impact on builders. D2-notlive 💤 PR contains changes in a runtime directory that is not deployed to a chain that requires an audit. labels May 22, 2022
@agryaznov agryaznov added this to In Progress in Smart Contracts via automation May 22, 2022
@github-actions github-actions bot added A3-in_progress Pull request is in progress. No review needed at this stage. and removed A0-please_review Pull request needs code review. labels May 22, 2022
@agryaznov
Copy link
Contributor Author

agryaznov commented May 22, 2022

Still WIP but mostly done so could get some feedback already.

frame/contracts/src/lib.rs Outdated Show resolved Hide resolved
frame/contracts/src/lib.rs Outdated Show resolved Hide resolved
frame/contracts/src/wasm/runtime.rs Outdated Show resolved Hide resolved
frame/contracts/src/wasm/runtime.rs Outdated Show resolved Hide resolved
frame/contracts/src/wasm/runtime.rs Outdated Show resolved Hide resolved
frame/contracts/src/exec.rs Outdated Show resolved Hide resolved
frame/contracts/src/exec.rs Outdated Show resolved Hide resolved
frame/contracts/src/exec.rs Show resolved Hide resolved
frame/contracts/src/exec.rs Show resolved Hide resolved
frame/contracts/src/wasm/runtime.rs Outdated Show resolved Hide resolved
@agryaznov
Copy link
Contributor Author

The CI job is weirdly failing, looks like it takes outdated crates from cache. This also happened before.

@agryaznov agryaznov requested a review from a team as a code owner June 22, 2022 13:41
@athei
Copy link
Member

athei commented Jun 22, 2022

/benchmark runtime pallet pallet_contracts

@parity-benchapp
Copy link

parity-benchapp bot commented Jun 22, 2022

Benchmark Runtime Pallet for branch "ag-transparent-hashing" with command cargo run --quiet --profile=production --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic="*" --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs

Toolchain: stable-x86_64-unknown-linux-gnu (default)
rustc 1.61.0 (fe5b13d68 2022-05-18)

Results
Pallet: "pallet_contracts", Extrinsic: "on_process_deletion_queue_batch", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Contracts DeletionQueue (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    1.654
              µs

Reads = 1
Writes = 0

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    1.654
              µs

Reads = 1
Writes = 0

Pallet: "pallet_contracts", Extrinsic: "on_initialize_per_trie_key", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Skipped Metadata (r:0 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    8.996
    + k    0.865
              µs

Reads = 1 + (0 * k)
Writes = 1 + (1 * k)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    k   mean µs  sigma µs       %
    0     9.286     0.083    0.8%
   20     29.81     0.138    0.4%
   40     47.79     0.179    0.3%
   60     63.16     0.291    0.4%
   80     77.87     0.271    0.3%
  100     95.55     0.467    0.4%
  120     109.5     0.727    0.6%
  140       127      0.29    0.2%
  160     143.8     0.509    0.3%
  180     161.5     0.299    0.1%
  200     179.8     2.376    1.3%
  220     195.1     0.833    0.4%
  240     213.2     0.466    0.2%
  260       230     1.144    0.4%
  280       248     0.976    0.3%
  300     264.3     1.108    0.4%
  320     285.1     1.391    0.4%
  340     303.1     1.132    0.3%
  360     320.4     1.474    0.4%
  380     336.3     0.569    0.1%
  400     356.8     2.029    0.5%
  420     375.1     3.227    0.8%
  440     395.7     6.968    1.7%
  460     407.9     1.409    0.3%
  480     425.2     2.132    0.5%
  500     446.9     6.846    1.5%
  520     461.2     3.079    0.6%
  540     479.7     3.443    0.7%
  560     496.1     2.428    0.4%
  580     519.3     6.919    1.3%
  600     531.7     2.333    0.4%
  620     547.2     4.406    0.8%
  640     570.2     9.063    1.5%
  660     582.5      3.77    0.6%
  680     598.2     2.032    0.3%
  700     616.1     2.985    0.4%
  720     632.2     3.386    0.5%
  740     658.4     10.98    1.6%
  760     667.1     4.176    0.6%
  780     682.4     1.742    0.2%
  800     700.7     2.395    0.3%
  820     721.3     7.152    0.9%
  840     753.6     11.93    1.5%
  860     752.5     2.366    0.3%
  880     774.2     4.688    0.6%
  900     785.6     2.616    0.3%
  920     800.1     2.419    0.3%
  940     822.8     8.839    1.0%
  960       832     3.138    0.3%
  980     858.2     10.35    1.2%
 1000     877.7     11.75    1.3%
 1020     887.2     5.114    0.5%

Quality and confidence:
param     error
k             0

Model:
Time ~=    8.564
    + k    0.868
              µs

Reads = 1 + (0 * k)
Writes = 1 + (1 * k)

Pallet: "pallet_contracts", Extrinsic: "on_initialize_per_queue_item", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Contracts DeletionQueue (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    9.098
    + q    1.915
              µs

Reads = 1 + (0 * q)
Writes = 1 + (0 * q)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    q   mean µs  sigma µs       %
    0     1.696     0.011    0.6%
   20     48.75     0.153    0.3%
   40     87.29     0.335    0.3%
   60     127.2      0.65    0.5%
   80     161.5     0.615    0.3%
  100     204.1     2.288    1.1%
  120     249.9     1.171    0.4%
  140     286.2     4.413    1.5%
  160     315.9     3.775    1.1%
  180     348.7     0.945    0.2%
  200     393.5     3.713    0.9%
  220     432.1      3.86    0.8%
  240     491.9     4.948    1.0%
  260     520.9     7.176    1.3%
  280     560.8     7.034    1.2%
  300     579.5     8.949    1.5%
  320     631.9     6.476    1.0%
  340     650.8     6.046    0.9%
  360     690.5     9.147    1.3%
  380     736.8     9.652    1.3%
  400     751.2     6.352    0.8%
  420     794.5     8.609    1.0%
  440     838.7     14.54    1.7%
  460     871.2      8.35    0.9%
  480     901.7     7.202    0.7%
  500     960.8        15    1.5%
  520     977.6     7.358    0.7%
  540      1009     9.442    0.9%
  560      1042     9.813    0.9%
  580      1071     10.45    0.9%
  600      1147     11.34    0.9%
  620      1183     11.77    0.9%
  640      1215      22.1    1.8%
  660      1206     14.86    1.2%
  680      1274     12.01    0.9%
  700      1352     19.82    1.4%
  720      1364     10.73    0.7%
  740      1415     18.13    1.2%
  760      1436     13.66    0.9%
  780      1481     18.04    1.2%
  800      1545     14.47    0.9%
  820      1574      28.1    1.7%
  840      1555     25.37    1.6%
  860      1635     18.65    1.1%
  880      1709     18.05    1.0%
  900      1829     13.24    0.7%
  920      1769     14.86    0.8%
  940      1909     22.83    1.1%
  960      1945     22.09    1.1%
  980      1965     11.67    0.5%
 1000      2013     39.05    1.9%
 1020      1988     21.44    1.0%

Quality and confidence:
param     error
q         0.005

Model:
Time ~=        0
    + q    1.944
              µs

Reads = 1 + (0 * q)
Writes = 1 + (0 * q)

Pallet: "pallet_contracts", Extrinsic: "reinstrument", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Contracts PristineCode (r:1 w:0)
Storage: Contracts CodeStorage (r:0 w:1)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=     22.6
    + c    0.048
              µs

Reads = 1 + (0 * c)
Writes = 1 + (0 * c)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    c   mean µs  sigma µs       %
    0     21.21     0.241    1.1%
 1284     85.12     0.141    0.1%
 2568     146.9     1.417    0.9%
 3852     207.9     0.276    0.1%
 5136     268.3     0.478    0.1%
 6420     346.5     12.89    3.7%
 7704     393.7     0.316    0.0%
 8988     451.3     0.759    0.1%
10272     513.8     5.884    1.1%
11556     582.4     12.61    2.1%
12840       644     4.139    0.6%
14124     712.2     10.84    1.5%
15408     769.2     8.269    1.0%
16692     843.1     9.706    1.1%
17976     905.3     12.08    1.3%
19260       942     7.697    0.8%
20544      1005     13.13    1.3%
21828      1079     13.89    1.2%
23112      1123     12.27    1.0%
24396      1190      13.4    1.1%
25680      1298     14.97    1.1%
26964      1320     2.786    0.2%
28248      1390     12.54    0.9%
29532      1457     14.84    1.0%
30816      1500     9.247    0.6%
32100      1572     15.35    0.9%
33384      1637     11.38    0.6%
34668      1715     13.41    0.7%
35952      1759     10.04    0.5%
37236      1841     19.18    1.0%
38520      1879     12.58    0.6%
39804      1930     16.93    0.8%
41088      1998     16.46    0.8%
42372      2066     12.93    0.6%
43656      2117     15.57    0.7%
44940      2182     18.46    0.8%
46224      2230     12.33    0.5%
47508      2297     22.84    0.9%
48792      2356     6.013    0.2%
50076      2507     26.15    1.0%
51360      2540     16.96    0.6%
52644      2598     8.776    0.3%
53928      2668     12.23    0.4%
55212      2724     12.32    0.4%
56496      2789     13.01    0.4%
57780      2821     6.976    0.2%
59064      2884      17.7    0.6%
60348      2966     16.01    0.5%
61632      3011     11.05    0.3%
62916      3055     6.732    0.2%
64200      3124      29.6    0.9%

Quality and confidence:
param     error
c             0

Model:
Time ~=    19.01
    + c    0.049
              µs

Reads = 1 + (0 * c)
Writes = 1 + (0 * c)

Pallet: "pallet_contracts", Extrinsic: "call_with_code_per_byte", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)
Storage: System Account (r:1 w:1)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    217.5
    + c    0.052
              µs

Reads = 4 + (0 * c)
Writes = 2 + (0 * c)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    c   mean µs  sigma µs       %
    0       221     0.178    0.0%
 2621     362.2     7.345    2.0%
 5242     492.4     2.589    0.5%
 7863     634.2     5.707    0.8%
10484     770.1     12.56    1.6%
13105       922     9.114    0.9%
15726      1063     11.18    1.0%
18347      1180     13.34    1.1%
20968      1299     2.243    0.1%
23589      1440     15.55    1.0%
26210      1625     14.01    0.8%
28831      1746     12.93    0.7%
31452      1876     12.88    0.6%
34073      2012     13.78    0.6%
36694      2166     17.93    0.8%
39315      2270     8.972    0.3%
41936      2409     4.221    0.1%
44557      2559     18.52    0.7%
47178      2667     9.759    0.3%
49799      2898     12.09    0.4%
52420      3044     17.36    0.5%
55041      3152     19.26    0.6%
57662      3245     10.42    0.3%
60283      3394     15.08    0.4%
62904      3547     20.98    0.5%
65525      3668     14.58    0.3%
68146      3820     24.54    0.6%
70767      3938     14.53    0.3%
73388      4088     13.03    0.3%
76009      4210     13.68    0.3%
78630      4331     15.64    0.3%
81251      4457     16.62    0.3%
83872      4598     16.66    0.3%
86493      4708     12.56    0.2%
89114      4858     24.59    0.5%
91735      4987     21.13    0.4%
94356      5097     23.55    0.4%
96977      5281     29.99    0.5%
99598      5603     31.23    0.5%
102219      5705     19.85    0.3%
104840      5866     22.37    0.3%
107461      5988      25.7    0.4%
110082      6090     22.07    0.3%
112703      6251     29.82    0.4%
115324      6351     21.67    0.3%
117945      6520     22.41    0.3%
120566      6635     19.27    0.2%
123187      6702     11.48    0.1%
125808      6884     9.025    0.1%
128429      7018     22.09    0.3%
131050      7132     13.27    0.1%

Quality and confidence:
param     error
c             0

Model:
Time ~=    205.1
    + c    0.053
              µs

Reads = 4 + (0 * c)
Writes = 2 + (0 * c)

Pallet: "pallet_contracts", Extrinsic: "instantiate_with_code", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Contracts CodeStorage (r:1 w:1)
Storage: Contracts Nonce (r:1 w:1)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Timestamp Now (r:1 w:0)
Storage: System Account (r:1 w:1)
Storage: Contracts PristineCode (r:0 w:1)
Storage: Contracts OwnerInfoOf (r:0 w:1)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    282.2
    + c    0.124
    + s    0.001
              µs

Reads = 5 + (0 * c) + (0 * s)
Writes = 6 + (0 * c) + (0 * s)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    c     s   mean µs  sigma µs       %
    0 1048576      2055     18.44    0.8%
 1284 1048576      2035     16.99    0.8%
 2568 1048576      2239     17.23    0.7%
 3852 1048576      2372     16.13    0.6%
 5136 1048576      2537     22.12    0.8%
 6420 1048576      2689     14.84    0.5%
 7704 1048576      2839     8.008    0.2%
 8988 1048576      3051     10.14    0.3%
10272 1048576      3167     13.19    0.4%
11556 1048576      3314     13.84    0.4%
12840 1048576      3506     22.58    0.6%
14124 1048576      3649     23.79    0.6%
15408 1048576      3791     21.88    0.5%
16692 1048576      3977     23.21    0.5%
17976 1048576      4150     32.16    0.7%
19260 1048576      4334     34.35    0.7%
20544 1048576      4445     17.62    0.3%
21828 1048576      4608     22.97    0.4%
23112 1048576      4758     33.13    0.6%
24396 1048576      4910      35.7    0.7%
25680 1048576      5120     19.86    0.3%
26964 1048576      5250      18.6    0.3%
28248 1048576      5415     13.89    0.2%
29532 1048576      5550     38.61    0.6%
30816 1048576      5704     12.18    0.2%
32100 1048576      5887     25.93    0.4%
33384 1048576      6081     15.54    0.2%
34668 1048576      6232      15.9    0.2%
35952 1048576      6392     19.42    0.3%
37236 1048576      6560     18.71    0.2%
38520 1048576      6750     36.35    0.5%
39804 1048576      6855     18.74    0.2%
41088 1048576      6997     32.95    0.4%
42372 1048576      7137     22.93    0.3%
43656 1048576      7276     31.08    0.4%
44940 1048576      7477     14.36    0.1%
46224 1048576      7616     29.31    0.3%
47508 1048576      7779     37.89    0.4%
48792 1048576      7896     27.65    0.3%
50076 1048576      8157     20.25    0.2%
51360 1048576      8332     33.93    0.4%
52644 1048576      8480     38.97    0.4%
53928 1048576      8623     30.23    0.3%
55212 1048576      8783     28.64    0.3%
56496 1048576      8930      17.5    0.1%
57780 1048576      9094     29.84    0.3%
59064 1048576      9254     50.35    0.5%
60348 1048576      9392      41.2    0.4%
61632 1048576      9533     36.49    0.3%
62916 1048576      9670     30.77    0.3%
64200 1048576      9850     36.54    0.3%
64226     0      8199     23.46    0.2%
64226 20971      8247     32.38    0.3%
64226 41942      8281     37.56    0.4%
64226 62913      8346     51.25    0.6%
64226 83884      8335     28.34    0.3%
64226 104855      8375     23.32    0.2%
64226 125826      8432     25.31    0.3%
64226 146797      8446     19.38    0.2%
64226 167768      8450     36.54    0.4%
64226 188739      8529      30.2    0.3%
64226 209710      8570      30.3    0.3%
64226 230681      8603     33.97    0.3%
64226 251652      8602     44.16    0.5%
64226 272623      8643     32.74    0.3%
64226 293594      9108     35.53    0.3%
64226 314565      8693     22.33    0.2%
64226 335536      8747     24.64    0.2%
64226 356507      8748     28.54    0.3%
64226 377478      8819     47.67    0.5%
64226 398449      8877     30.73    0.3%
64226 419420      8860     31.63    0.3%
64226 440391      8962     32.53    0.3%
64226 461362      8913     30.71    0.3%
64226 482333      8966     21.48    0.2%
64226 503304      8990     33.32    0.3%
64226 524275      9034     25.98    0.2%
64226 545246      9028     27.18    0.3%
64226 566217      9066     23.45    0.2%
64226 587188      9101     22.93    0.2%
64226 608159      9152     38.82    0.4%
64226 629130      9179     31.31    0.3%
64226 650101      9247     28.33    0.3%
64226 671072      9251      31.3    0.3%
64226 692043      9305      24.5    0.2%
64226 713014      9403     17.68    0.1%
64226 733985      9352     27.54    0.2%
64226 754956      9365     32.45    0.3%
64226 775927      9408     23.71    0.2%
64226 796898      9489      19.6    0.2%
64226 817869      9462     29.04    0.3%
64226 838840      9512     29.73    0.3%
64226 859811      9535     35.05    0.3%
64226 880782      9594     20.32    0.2%
64226 901753      9620     28.29    0.2%
64226 922724      9643      26.8    0.2%
64226 943695      9679     44.31    0.4%
64226 964666      9714      36.5    0.3%
64226 985637      9769     37.23    0.3%
64226 1006608      9779     28.09    0.2%
64226 1027579      9841     48.56    0.4%
64226 1048550      9891     25.72    0.2%

Quality and confidence:
param     error
c             0
s             0

Model:
Time ~=    288.4
    + c    0.124
    + s    0.002
              µs

Reads = 5 + (0 * c) + (0 * s)
Writes = 6 + (0 * c) + (0 * s)

Pallet: "pallet_contracts", Extrinsic: "instantiate", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Contracts CodeStorage (r:1 w:1)
Storage: Contracts Nonce (r:1 w:1)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Timestamp Now (r:1 w:0)
Storage: System Account (r:1 w:1)
Storage: Contracts OwnerInfoOf (r:1 w:1)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=      186
    + s    0.001
              µs

Reads = 6 + (0 * s)
Writes = 5 + (0 * s)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    s   mean µs  sigma µs       %
    0     182.9     0.474    0.2%
20971     219.4     1.709    0.7%
41942     256.8     7.819    3.0%
62913     291.9     5.332    1.8%
83884     323.5     0.778    0.2%
104855     360.6     7.924    2.1%
125826     400.6     12.47    3.1%
146797     426.3     0.487    0.1%
167768       477     4.895    1.0%
188739     509.7     11.74    2.3%
209710     533.1     6.099    1.1%
230681     568.9     8.864    1.5%
251652     605.3     8.713    1.4%
272623     641.7        12    1.8%
293594     692.1     15.19    2.1%
314565     721.4     16.59    2.3%
335536     746.5     14.49    1.9%
356507     772.7     2.028    0.2%
377478     825.6     16.86    2.0%
398449     853.9     13.43    1.5%
419420     887.2     14.31    1.6%
440391       922      14.4    1.5%
461362     958.8     11.09    1.1%
482333     981.1     8.028    0.8%
503304      1023     12.07    1.1%
524275      1069     15.21    1.4%
545246      1097     15.07    1.3%
566217      1135     18.47    1.6%
587188      1168      13.6    1.1%
608159      1202     12.94    1.0%
629130      1247     17.59    1.4%
650101      1268     16.51    1.3%
671072      1300     13.37    1.0%
692043      1343      14.3    1.0%
713014      1371     11.86    0.8%
733985      1404     14.36    1.0%
754956      1440     12.09    0.8%
775927      1471     11.54    0.7%
796898      1526     10.12    0.6%
817869      1547     17.45    1.1%
838840      1590     18.39    1.1%
859811      1628        16    0.9%
880782      1658     16.14    0.9%
901753      1700     20.32    1.1%
922724      1715     13.86    0.8%
943695      1764     15.23    0.8%
964666      1799     15.74    0.8%
985637      1851     21.04    1.1%
1006608      1875     4.496    0.2%
1027579      1899     13.25    0.6%
1048550      1955     6.319    0.3%

Quality and confidence:
param     error
s             0

Model:
Time ~=    186.1
    + s    0.002
              µs

Reads = 6 + (0 * s)
Writes = 5 + (0 * s)

Pallet: "pallet_contracts", Extrinsic: "call", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)
Storage: System Account (r:1 w:1)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    149.2
              µs

Reads = 4
Writes = 2

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    149.2
              µs

Reads = 4
Writes = 2

Pallet: "pallet_contracts", Extrinsic: "upload_code", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Contracts CodeStorage (r:1 w:1)
Storage: Contracts PristineCode (r:0 w:1)
Storage: Contracts OwnerInfoOf (r:0 w:1)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    53.15
    + c    0.048
              µs

Reads = 1 + (0 * c)
Writes = 3 + (0 * c)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    c   mean µs  sigma µs       %
    0     47.64     0.276    0.5%
 1284     114.2      0.29    0.2%
 2568     177.6     0.476    0.2%
 3852       237     0.854    0.3%
 5136     297.1     0.451    0.1%
 6420       368       8.1    2.2%
 7704     426.4     7.878    1.8%
 8988     489.4     13.94    2.8%
10272     545.2     9.015    1.6%
11556     602.8     11.08    1.8%
12840     690.5     14.54    2.1%
14124     746.2     14.08    1.8%
15408     800.9     12.12    1.5%
16692     852.9     6.113    0.7%
17976     922.4     16.08    1.7%
19260     980.6     12.74    1.2%
20544      1029     8.419    0.8%
21828      1092     12.34    1.1%
23112      1165     11.46    0.9%
24396      1230     5.311    0.4%
25680      1324     6.725    0.5%
26964      1390     18.08    1.3%
28248      1426     11.15    0.7%
29532      1488     14.21    0.9%
30816      1554     15.79    1.0%
32100      1614     10.24    0.6%
33384      1679     13.52    0.8%
34668      1732     13.17    0.7%
35952      1791     17.94    1.0%
37236      1854     22.31    1.2%
38520      1919     3.552    0.1%
39804      1988     16.84    0.8%
41088      2032     14.65    0.7%
42372      2096     7.378    0.3%
43656      2141     13.77    0.6%
44940      2199      16.4    0.7%
46224      2251     13.62    0.6%
47508      2310     14.35    0.6%
48792      2380     17.53    0.7%
50076      2515     16.59    0.6%
51360      2573     7.139    0.2%
52644      2609     16.61    0.6%
53928      2700     21.11    0.7%
55212      2728     13.46    0.4%
56496      2812      11.4    0.4%
57780      2855      16.2    0.5%
59064      2933     12.42    0.4%
60348      2980     17.74    0.5%
61632      3014     16.32    0.5%
62916      3114     17.99    0.5%
64200      3147     15.19    0.4%

Quality and confidence:
param     error
c             0

Model:
Time ~=    51.72
    + c    0.048
              µs

Reads = 1 + (0 * c)
Writes = 3 + (0 * c)

Pallet: "pallet_contracts", Extrinsic: "remove_code", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Contracts OwnerInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:0 w:1)
Storage: Contracts PristineCode (r:0 w:1)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    30.01
              µs

Reads = 1
Writes = 3

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    30.01
              µs

Reads = 1
Writes = 3

Pallet: "pallet_contracts", Extrinsic: "set_code", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts OwnerInfoOf (r:2 w:2)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    27.19
              µs

Reads = 3
Writes = 3

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    27.19
              µs

Reads = 3
Writes = 3

Pallet: "pallet_contracts", Extrinsic: "seal_caller", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    207.5
    + r    40.49
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     204.7     0.157    0.0%
    1     249.8     2.003    0.8%
    2     289.2     0.472    0.1%
    3     329.3     0.345    0.1%
    4     372.5     4.998    1.3%
    5     411.6     2.761    0.6%
    6     451.8     5.312    1.1%
    7     495.8     7.702    1.5%
    8     528.2     0.613    0.1%
    9     584.2     14.81    2.5%
   10     611.7     0.782    0.1%
   11       658     10.39    1.5%
   12     699.8     12.65    1.8%
   13     738.2      10.4    1.4%
   14     770.3     1.426    0.1%
   15     813.1     4.329    0.5%
   16     861.5     8.679    1.0%
   17     901.2     11.44    1.2%
   18     948.6     12.15    1.2%
   19       993     14.78    1.4%
   20      1027     16.82    1.6%

Quality and confidence:
param     error
r         0.112

Model:
Time ~=    206.4
    + r    40.98
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_is_contract", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    122.1
    + r      306
              µs

Reads = 4 + (80 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     204.6     0.128    0.0%
    1     470.3     1.523    0.3%
    2     753.8     7.008    0.9%
    3      1045     12.29    1.1%
    4      1299     13.61    1.0%
    5      1620      8.85    0.5%
    6      1927     7.874    0.4%
    7      2270     15.78    0.6%
    8      2559     24.74    0.9%
    9      2837     14.64    0.5%
   10      3079     13.41    0.4%
   11      3408     14.97    0.4%
   12      3755     17.52    0.4%
   13      3993     15.85    0.3%
   14      4399      17.9    0.4%
   15      4772     21.17    0.4%
   16      5072     30.85    0.6%
   17      5338      23.3    0.4%
   18      5763     20.12    0.3%
   19      6017     31.16    0.5%
   20      6245     32.43    0.5%

Quality and confidence:
param     error
r          0.71

Model:
Time ~=    106.2
    + r    307.6
              µs

Reads = 4 + (80 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_code_hash", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    112.7
    + r      368
              µs

Reads = 4 + (80 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     205.9     0.207    0.1%
    1     532.5     2.187    0.4%
    2     867.3     10.87    1.2%
    3      1202     13.56    1.1%
    4      1541     7.107    0.4%
    5      1922     11.39    0.5%
    6      2278     16.52    0.7%
    7      2650     9.601    0.3%
    8      3025     16.03    0.5%
    9      3416     11.55    0.3%
   10      3776     20.58    0.5%
   11      4079     6.437    0.1%
   12      4501      14.6    0.3%
   13      4957     23.09    0.4%
   14      5167     27.02    0.5%
   15      5651     17.28    0.3%
   16      6037      50.1    0.8%
   17      6375     22.02    0.3%
   18      6849     25.95    0.3%
   19      7116     42.13    0.5%
   20      7507     17.16    0.2%

Quality and confidence:
param     error
r         0.633

Model:
Time ~=    104.4
    + r    368.9
              µs

Reads = 4 + (80 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_own_code_hash", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    208.4
    + r    44.08
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     205.3      0.35    0.1%
    1       252     1.726    0.6%
    2       303         2    0.6%
    3     340.3     0.584    0.1%
    4     384.8      0.98    0.2%
    5     439.2     13.08    2.9%
    6     474.3     3.351    0.7%
    7     516.4     1.256    0.2%
    8     558.8     0.851    0.1%
    9     610.9     5.696    0.9%
   10     657.4     9.728    1.4%
   11     691.7     1.569    0.2%
   12     750.2     14.54    1.9%
   13     783.2     7.606    0.9%
   14     829.4     9.659    1.1%
   15     880.5     5.322    0.6%
   16       913     7.883    0.8%
   17     959.5      9.58    0.9%
   18      1009     10.77    1.0%
   19      1058     11.41    1.0%
   20      1097     10.55    0.9%

Quality and confidence:
param     error
r         0.101

Model:
Time ~=    208.6
    + r    44.44
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_caller_is_origin", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    205.5
    + r       17
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     202.5     2.229    1.1%
    1     224.9     1.633    0.7%
    2     238.7      0.21    0.0%
    3     255.6     0.883    0.3%
    4     273.1     0.769    0.2%
    5     289.7     0.275    0.0%
    6     310.1     2.751    0.8%
    7     324.9     0.624    0.1%
    8     341.5     0.366    0.1%
    9       362     2.231    0.6%
   10     376.6     2.099    0.5%
   11     405.6     10.94    2.6%
   12     406.5     0.413    0.1%
   13     431.2      3.86    0.8%
   14     448.9     8.452    1.8%
   15     462.1     1.329    0.2%
   16     478.1     2.252    0.4%
   17       495     3.958    0.7%
   18     510.7     0.827    0.1%
   19     536.5     14.53    2.7%
   20     543.2      0.34    0.0%

Quality and confidence:
param     error
r         0.068

Model:
Time ~=    205.6
    + r    17.14
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_address", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    208.5
    + r    40.25
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     204.7     0.265    0.1%
    1     250.7     1.196    0.4%
    2     288.5     1.862    0.6%
    3     335.1     5.802    1.7%
    4     369.8      2.16    0.5%
    5     409.6     0.924    0.2%
    6     449.4     1.315    0.2%
    7     493.9     5.155    1.0%
    8     530.4     6.638    1.2%
    9     571.8      0.59    0.1%
   10     625.2     5.805    0.9%
   11     649.4     1.096    0.1%
   12     694.7     10.13    1.4%
   13     731.7     4.867    0.6%
   14       775     10.44    1.3%
   15     821.2     10.73    1.3%
   16     859.4     15.65    1.8%
   17     888.9     5.179    0.5%
   18     952.2     13.07    1.3%
   19     981.2     13.56    1.3%
   20      1027     13.67    1.3%

Quality and confidence:
param     error
r         0.107

Model:
Time ~=    206.9
    + r    40.78
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_gas_left", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    208.5
    + r    40.26
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     204.5     0.159    0.0%
    1     252.1     8.451    3.3%
    2       295     2.909    0.9%
    3     330.6     4.427    1.3%
    4     371.2     2.767    0.7%
    5     414.1     5.829    1.4%
    6       449      0.55    0.1%
    7     496.8     5.846    1.1%
    8     529.3     2.378    0.4%
    9     572.8     3.707    0.6%
   10     613.9     7.563    1.2%
   11     653.3     8.211    1.2%
   12     700.7     12.06    1.7%
   13       736     10.13    1.3%
   14     767.4     7.891    1.0%
   15       823     16.37    1.9%
   16     850.4     10.39    1.2%
   17     896.2     12.27    1.3%
   18     943.5     12.52    1.3%
   19     984.4     11.89    1.2%
   20      1023     10.64    1.0%

Quality and confidence:
param     error
r         0.109

Model:
Time ~=    208.6
    + r     40.6
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_balance", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    212.3
    + r    116.2
              µs

Reads = 5 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     207.2     1.701    0.8%
    1     331.1     3.848    1.1%
    2     444.2     1.557    0.3%
    3     560.9     9.332    1.6%
    4     683.5     13.11    1.9%
    5     792.5     2.426    0.3%
    6     914.1     10.45    1.1%
    7      1028     16.55    1.6%
    8      1138     13.83    1.2%
    9      1277     10.25    0.8%
   10      1388     13.47    0.9%
   11      1495     13.74    0.9%
   12      1599     14.83    0.9%
   13      1706     8.454    0.4%
   14      1835     11.68    0.6%
   15      1948     15.44    0.7%
   16      2061     9.766    0.4%
   17      2180     15.27    0.7%
   18      2354      17.9    0.7%
   19      2435     15.31    0.6%
   20      2556     15.37    0.6%

Quality and confidence:
param     error
r         0.208

Model:
Time ~=    209.8
    + r    116.8
              µs

Reads = 5 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_value_transferred", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    208.3
    + r    40.15
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     204.5     0.191    0.0%
    1       252      5.97    2.3%
    2     289.5     1.888    0.6%
    3     330.7     2.363    0.7%
    4     370.5     1.598    0.4%
    5     419.1     15.36    3.6%
    6     449.5     2.583    0.5%
    7     486.3      1.57    0.3%
    8     526.2     0.615    0.1%
    9     570.6     2.714    0.4%
   10     620.9      12.8    2.0%
   11     653.9     7.578    1.1%
   12     702.4     12.22    1.7%
   13       736     11.92    1.6%
   14     769.9     6.726    0.8%
   15     818.4     11.53    1.4%
   16     855.2     13.58    1.5%
   17     899.3     9.488    1.0%
   18     938.9     10.06    1.0%
   19     974.3     10.63    1.0%
   20      1033     14.22    1.3%

Quality and confidence:
param     error
r         0.117

Model:
Time ~=    207.4
    + r     40.7
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_minimum_balance", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    208.8
    + r    39.95
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     210.2     3.335    1.5%
    1     251.3     8.154    3.2%
    2     287.8      0.19    0.0%
    3     329.3     1.493    0.4%
    4     366.9     0.742    0.2%
    5     409.9     2.108    0.5%
    6     454.4     4.611    1.0%
    7     491.3     7.202    1.4%
    8     536.5     11.19    2.0%
    9     590.8     15.55    2.6%
   10     613.2     9.958    1.6%
   11     650.6     8.296    1.2%
   12     701.1     16.15    2.3%
   13     727.1      4.31    0.5%
   14     770.3     11.35    1.4%
   15       808     6.521    0.8%
   16     851.7     12.83    1.5%
   17     895.8     13.51    1.5%
   18     938.1     12.04    1.2%
   19     991.8     11.43    1.1%
   20      1018     13.11    1.2%

Quality and confidence:
param     error
r          0.13

Model:
Time ~=    209.2
    + r    40.47
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_block_number", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    207.3
    + r    39.74
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     208.8     3.659    1.7%
    1     246.3     0.208    0.0%
    2       287     0.536    0.1%
    3     327.4     1.955    0.5%
    4     366.7      2.36    0.6%
    5     406.3     0.896    0.2%
    6     447.4      5.29    1.1%
    7     484.2     2.838    0.5%
    8     524.5     2.743    0.5%
    9       564     0.862    0.1%
   10     612.6     8.257    1.3%
   11     647.7     3.795    0.5%
   12     687.3     7.953    1.1%
   13     733.3     10.62    1.4%
   14       769     10.17    1.3%
   15     811.4     12.06    1.4%
   16       846     11.49    1.3%
   17     878.6     3.481    0.3%
   18     930.2     10.49    1.1%
   19     978.8     15.07    1.5%
   20      1005     9.351    0.9%

Quality and confidence:
param     error
r         0.095

Model:
Time ~=    206.4
    + r    40.13
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_now", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    207.6
    + r    39.81
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     204.9     0.266    0.1%
    1     247.1     0.254    0.1%
    2     287.3     0.377    0.1%
    3     327.8     1.047    0.3%
    4     366.4     0.215    0.0%
    5     409.4     0.818    0.1%
    6     446.6     1.545    0.3%
    7     491.6     7.972    1.6%
    8     526.2      2.32    0.4%
    9     578.1     15.66    2.7%
   10     619.8     6.415    1.0%
   11     648.1     10.96    1.6%
   12     683.9     2.508    0.3%
   13     730.8     10.22    1.3%
   14     762.7      2.88    0.3%
   15     810.9     15.57    1.9%
   16     837.3     1.386    0.1%
   17     900.8     16.43    1.8%
   18     926.4      1.78    0.1%
   19     975.9     12.77    1.3%
   20      1016     16.16    1.5%

Quality and confidence:
param     error
r         0.116

Model:
Time ~=    206.9
    + r    40.25
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_weight_to_fee", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)
Storage: TransactionPayment NextFeeMultiplier (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    217.7
    + r    97.91
              µs

Reads = 5 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0       205     0.316    0.1%
    1     314.5      7.06    2.2%
    2     412.6      4.02    0.9%
    3     506.1      8.45    1.6%
    4     601.6     7.695    1.2%
    5     698.7      8.72    1.2%
    6     796.6     7.814    0.9%
    7     903.4     11.03    1.2%
    8      1010     16.75    1.6%
    9      1092     10.77    0.9%
   10      1205     14.41    1.1%
   11      1297     17.22    1.3%
   12      1392     16.47    1.1%
   13      1508     9.514    0.6%
   14      1592     17.82    1.1%
   15      1700     10.65    0.6%
   16      1789     11.16    0.6%
   17      1912     15.54    0.8%
   18      1975     17.37    0.8%
   19      2074     15.92    0.7%
   20      2173     13.83    0.6%

Quality and confidence:
param     error
r         0.175

Model:
Time ~=    211.6
    + r    98.67
              µs

Reads = 5 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_gas", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    134.6
    + r    19.22
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     131.7     0.226    0.1%
    1     153.3     0.218    0.1%
    2     176.2     0.433    0.2%
    3     196.4      0.46    0.2%
    4     216.4     0.161    0.0%
    5     230.7     1.729    0.7%
    6     248.4     0.177    0.0%
    7     269.4     0.182    0.0%
    8     288.8      1.88    0.6%
    9     307.6     0.594    0.1%
   10     325.5     0.963    0.2%
   11     343.8     0.778    0.2%
   12     364.4     0.941    0.2%
   13     384.5     0.505    0.1%
   14     405.1     0.337    0.0%
   15     423.9     0.512    0.1%
   16     443.3     2.628    0.5%
   17     464.6     6.559    1.4%
   18     481.1     2.453    0.5%
   19     497.1     0.408    0.0%
   20     530.1     16.84    3.1%

Quality and confidence:
param     error
r         0.057

Model:
Time ~=    134.4
    + r    19.32
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_input", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    208.5
    + r    39.83
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     207.7     1.546    0.7%
    1     246.9     0.406    0.1%
    2     287.1     0.429    0.1%
    3       328     1.486    0.4%
    4     371.2     6.282    1.6%
    5     420.5      11.5    2.7%
    6     460.1     11.93    2.5%
    7     486.7     0.876    0.1%
    8     530.7     10.21    1.9%
    9     580.1     16.01    2.7%
   10     606.7     1.444    0.2%
   11     650.6     10.95    1.6%
   12       687     3.905    0.5%
   13     724.5     1.874    0.2%
   14     772.4     11.46    1.4%
   15     801.8     2.143    0.2%
   16     850.7     13.65    1.6%
   17     886.7     9.826    1.1%
   18     947.2      10.3    1.0%
   19     980.2     10.96    1.1%
   20      1020     14.44    1.4%

Quality and confidence:
param     error
r         0.125

Model:
Time ~=    208.5
    + r    40.32
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_input_per_kb", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    268.2
    + n    9.622
              µs

Reads = 4 + (0 * n)
Writes = 1 + (0 * n)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    n   mean µs  sigma µs       %
    0     246.9     0.219    0.0%
   20     444.8     7.935    1.7%
   40     634.1      0.61    0.0%
   60     830.4     3.186    0.3%
   80      1033     16.64    1.6%
  100      1236      13.4    1.0%
  120      1425      17.2    1.2%
  140      1617     15.74    0.9%
  160      1823     11.06    0.6%
  180      2005     5.351    0.2%
  200      2213     11.48    0.5%
  220      2394     14.59    0.6%
  240      2584     10.05    0.3%
  260      2787      24.3    0.8%
  280      2970     15.01    0.5%
  300      3150     18.61    0.5%
  320      3373     17.49    0.5%
  340      3544     19.01    0.5%
  360      3729     12.53    0.3%
  380      3915     18.79    0.4%
  400      4128     14.52    0.3%
  420      4299     13.59    0.3%
  440      4517     15.41    0.3%
  460      4688        14    0.2%
  480      4886     8.234    0.1%
  500      5067     15.93    0.3%
  520      5296     22.08    0.4%
  540      5449     24.48    0.4%
  560      5669     19.07    0.3%
  580      5841     11.12    0.1%
  600      6077     24.02    0.3%
  620      6239     26.83    0.4%
  640      6453     29.85    0.4%
  660      6628     21.85    0.3%
  680      6787     31.47    0.4%
  700      7023     28.57    0.4%
  720      7252     33.51    0.4%
  740      7366      19.6    0.2%
  760      7582     22.81    0.3%
  780      7780     26.61    0.3%
  800      7960     17.13    0.2%
  820      8136     23.67    0.2%
  840      8362     30.44    0.3%
  860      8534     39.21    0.4%
  880      8722     38.76    0.4%
  900      8903     15.11    0.1%
  920      9127      32.3    0.3%
  940      9339     24.23    0.2%
  960      9517     21.83    0.2%
  980      9707     27.31    0.2%
 1000      9914     35.47    0.3%
 1020     10050     40.03    0.3%

Quality and confidence:
param     error
n         0.004

Model:
Time ~=    268.8
    + n    9.627
              µs

Reads = 4 + (0 * n)
Writes = 1 + (0 * n)

Pallet: "pallet_contracts", Extrinsic: "seal_return", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    202.3
    + r    0.777
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     203.5     1.961    0.9%
    1     203.1      0.17    0.0%

Quality and confidence:
param     error
r         0.656

Model:
Time ~=    203.5
    + r        0
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_return_per_kb", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    203.6
    + n    0.182
              µs

Reads = 4 + (0 * n)
Writes = 1 + (0 * n)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    n   mean µs  sigma µs       %
    0     204.8     2.283    1.1%
   20     209.3     4.302    2.0%
   40     210.9     0.184    0.0%
   60     219.2     8.438    3.8%
   80     218.4     0.346    0.1%
  100     223.5     4.873    2.1%
  120     225.5       0.4    0.1%
  140     228.9     0.193    0.0%
  160     232.6     0.341    0.1%
  180     236.6     0.292    0.1%
  200     239.9     0.381    0.1%
  220     243.5     0.135    0.0%
  240     247.6     0.303    0.1%
  260       251      0.59    0.2%
  280     256.8     2.595    1.0%
  300       258      0.27    0.1%
  320     263.2     2.632    0.9%
  340     273.7     8.261    3.0%
  360     269.1     0.197    0.0%
  380     272.6     0.187    0.0%
  400     276.7     0.188    0.0%
  420     279.8     0.286    0.1%
  440     283.7     0.263    0.0%
  460     287.2     0.288    0.1%
  480       291     0.159    0.0%
  500     294.5     0.269    0.0%
  520     297.6     0.203    0.0%
  540     304.9     4.483    1.4%
  560     306.8     4.208    1.3%
  580     310.4     2.383    0.7%
  600     314.4     2.658    0.8%
  620       319     6.104    1.9%
  640     320.4     0.842    0.2%
  660     325.9     7.402    2.2%
  680     327.2     0.301    0.0%
  700     330.3     0.187    0.0%
  720     334.6     0.362    0.1%
  740     339.7     4.743    1.3%
  760     349.7     1.048    0.2%
  780     345.9     0.361    0.1%
  800     350.2     1.064    0.3%
  820     353.1     0.593    0.1%
  840     355.8     0.303    0.0%
  860     360.4     0.693    0.1%
  880     367.7      6.07    1.6%
  900     367.1     0.257    0.0%
  920     371.1     0.824    0.2%
  940       377     2.624    0.6%
  960     386.4      9.78    2.5%
  980     385.1     1.099    0.2%
 1000     385.5     0.577    0.1%
 1020     391.5     1.899    0.4%

Quality and confidence:
param     error
n             0

Model:
Time ~=    204.2
    + n    0.183
              µs

Reads = 4 + (0 * n)
Writes = 1 + (0 * n)

Pallet: "pallet_contracts", Extrinsic: "seal_terminate", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)
Storage: Contracts DeletionQueue (r:1 w:1)
Storage: Contracts OwnerInfoOf (r:1 w:1)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    206.6
    + r    58.91
              µs

Reads = 4 + (4 * r)
Writes = 1 + (5 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     206.6     1.727    0.8%
    1       266      1.04    0.3%

Quality and confidence:
param     error
r         0.672

Model:
Time ~=    206.6
    + r    59.37
              µs

Reads = 4 + (4 * r)
Writes = 1 + (5 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_random", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)
Storage: RandomnessCollectiveFlip RandomMaterial (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    211.2
    + r    132.8
              µs

Reads = 5 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     206.6     1.914    0.9%
    1       344     4.537    1.3%
    2     472.9     1.154    0.2%
    3     620.6      11.6    1.8%
    4       738     3.589    0.4%
    5     874.5      13.2    1.5%
    6     999.6     9.658    0.9%
    7      1143     13.64    1.1%
    8      1271     14.87    1.1%
    9      1413     10.28    0.7%
   10      1541     11.39    0.7%
   11      1679     17.72    1.0%
   12      1828     9.607    0.5%
   13      1947     16.86    0.8%
   14      2063     12.77    0.6%
   15      2209     9.328    0.4%
   16      2342     15.16    0.6%
   17      2480     12.61    0.5%
   18      2624     13.95    0.5%
   19      2737     18.98    0.6%
   20      2869      13.6    0.4%

Quality and confidence:
param     error
r         0.164

Model:
Time ~=    208.8
    + r    133.4
              µs

Reads = 5 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_deposit_event", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    218.6
    + r    239.9
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     201.6     0.136    0.0%
    1     451.6     0.924    0.2%
    2     695.5      4.48    0.6%
    3     952.1     12.96    1.3%
    4      1180     10.34    0.8%
    5      1422     14.01    0.9%
    6      1668     9.263    0.5%
    7      1909     13.61    0.7%
    8      2142     10.61    0.4%
    9      2385     10.74    0.4%
   10      2620     8.641    0.3%
   11      2868     18.87    0.6%
   12      3103     17.36    0.5%
   13      3349     5.935    0.1%
   14      3565     12.49    0.3%
   15      3824     22.29    0.5%
   16      4061     14.76    0.3%
   17      4292     21.29    0.4%
   18      4560     25.13    0.5%
   19      4770     20.64    0.4%
   20      5000     26.71    0.5%

Quality and confidence:
param     error
r         0.209

Model:
Time ~=    220.8
    + r    239.9
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_deposit_event_per_topic_and_kb", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)
Storage: System EventTopics (r:80 w:80)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    453.2
    + t      267
    + n    66.77
              µs

Reads = 4 + (80 * t) + (0 * n)
Writes = 1 + (80 * t) + (0 * n)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    t     n   mean µs  sigma µs       %
    0    16      1484      14.6    0.9%
    1    16      1822     8.414    0.4%
    2    16      2055     16.48    0.8%
    3    16      2350     12.47    0.5%
    4     0      1506     11.41    0.7%
    4     1      1594     8.181    0.5%
    4     2      1632     15.62    0.9%
    4     3      1712     8.083    0.4%
    4     4      1768     10.33    0.5%
    4     5      1828     7.283    0.3%
    4     6      1898     7.449    0.3%
    4     7      1958     8.464    0.4%
    4     8      2015     12.71    0.6%
    4     9      2099     12.57    0.5%
    4    10      2169     22.07    1.0%
    4    11      2215     13.19    0.5%
    4    12      2307     17.02    0.7%
    4    13      2373     11.52    0.4%
    4    14      2463     24.65    1.0%
    4    15      2526     12.35    0.4%
    4    16      2573     17.53    0.6%

Quality and confidence:
param     error
t         1.643
n         0.323

Model:
Time ~=    439.7
    + t    264.6
    + n    67.63
              µs

Reads = 4 + (80 * t) + (0 * n)
Writes = 1 + (80 * t) + (0 * n)

Pallet: "pallet_contracts", Extrinsic: "seal_debug_message", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: System Account (r:1 w:0)
Storage: Contracts ContractInfoOf (r:1 w:1)
Storage: Contracts CodeStorage (r:1 w:0)
Storage: Timestamp Now (r:1 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    140.7
    + r    32.47
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     137.4     0.301    0.2%
    1     173.1     1.035    0.5%
    2     208.2     4.183    2.0%
    3       238     0.307    0.1%
    4     270.9      0.79    0.2%
    5     302.7     0.733    0.2%
    6     335.2     2.865    0.8%
    7     370.6     2.652    0.7%
    8     408.5     6.477    1.5%
    9       432     1.736    0.4%
   10     466.3     4.208    0.9%
   11     494.9     2.738    0.5%
   12     530.5     6.278    1.1%
   13     572.5     13.84    2.4%
   14     602.9     10.66    1.7%
   15     629.6      7.86    1.2%
   16     660.3     4.546    0.6%
   17     699.8     8.496    1.2%
   18     726.8     7.655    1.0%
   19     766.7     10.19    1.3%
   20     788.6     8.623    1.0%

Quality and confidence:
param     error
r         0.082

Model:
Time ~=    140.2
    + r    32.71
              µs

Reads = 4 + (0 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_set_storage", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Skipped Metadata (r:0 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    165.6
    + r    422.5
              µs

Reads = 4 + (80 * r)
Writes = 1 + (80 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     204.3     0.175    0.0%
    1     590.9     9.879    1.6%
    2       994     10.08    1.0%
    3      1418     15.02    1.0%
    4      1844     15.69    0.8%
    5      2233      11.6    0.5%
    6      2710     16.24    0.5%
    7      3133      13.3    0.4%
    8      3550     25.21    0.7%
    9      4005     23.24    0.5%
   10      4407     34.02    0.7%

Quality and confidence:
param     error
r         0.883

Model:
Time ~=    161.2
    + r    423.9
              µs

Reads = 4 + (80 * r)
Writes = 1 + (80 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_set_storage_per_new_kb", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Skipped Metadata (r:0 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    609.5
    + n    72.18
              µs

Reads = 85 + (0 * n)
Writes = 83 + (0 * n)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    n   mean µs  sigma µs       %
    0     374.1     3.951    1.0%
    1     685.8     2.947    0.4%
    2     763.3     8.624    1.1%
    3     835.7     8.098    0.9%
    4     900.8     4.624    0.5%
    5     971.8     12.57    1.2%
    6      1018     10.93    1.0%
    7      1108     11.46    1.0%
    8      1174     8.151    0.6%

Quality and confidence:
param     error
n         2.745

Model:
Time ~=    529.2
    + n    85.28
              µs

Reads = 55 + (5 * n)
Writes = 53 + (5 * n)

Pallet: "pallet_contracts", Extrinsic: "seal_set_storage_per_old_kb", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Skipped Metadata (r:0 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    598.6
    + n    62.23
              µs

Reads = 85 + (0 * n)
Writes = 83 + (0 * n)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    n   mean µs  sigma µs       %
    0     388.7      13.6    3.4%
    1     689.2     9.561    1.3%
    2     728.2     7.669    1.0%
    3     785.8     11.48    1.4%
    4       854     10.46    1.2%
    5     905.3     5.051    0.5%
    6     967.7     11.55    1.1%
    7      1034     9.463    0.9%
    8      1098      9.94    0.9%

Quality and confidence:
param     error
n         2.513

Model:
Time ~=    529.8
    + n    74.55
              µs

Reads = 55 + (5 * n)
Writes = 53 + (5 * n)

Pallet: "pallet_contracts", Extrinsic: "seal_clear_storage", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Skipped Metadata (r:0 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    194.4
    + r    403.6
              µs

Reads = 5 + (80 * r)
Writes = 3 + (80 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0       205     0.186    0.0%
    1     598.6     3.815    0.6%
    2       993     13.52    1.3%
    3      1383     12.36    0.8%
    4      1796     9.113    0.5%
    5      2162     12.91    0.5%
    6      2622     13.13    0.5%
    7      3036     17.95    0.5%
    8      3438     13.62    0.3%
    9      3848     17.31    0.4%
   10      4219     23.64    0.5%

Quality and confidence:
param     error
r         0.733

Model:
Time ~=    184.8
    + r    404.9
              µs

Reads = 5 + (80 * r)
Writes = 2 + (80 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_clear_storage_per_kb", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Skipped Metadata (r:0 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    587.2
    + n    60.49
              µs

Reads = 85 + (0 * n)
Writes = 83 + (0 * n)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    n   mean µs  sigma µs       %
    0     332.2     7.688    2.3%
    1     675.3     10.13    1.5%
    2     716.2     4.067    0.5%
    3     766.8     6.602    0.8%
    4     834.1     10.19    1.2%
    5     883.9     1.526    0.1%
    6     948.5     10.34    1.0%
    7      1016      11.8    1.1%
    8      1071     8.983    0.8%

Quality and confidence:
param     error
n          2.98

Model:
Time ~=    500.9
    + n    75.99
              µs

Reads = 55 + (5 * n)
Writes = 52 + (5 * n)

Pallet: "pallet_contracts", Extrinsic: "seal_get_storage", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Skipped Metadata (r:0 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    189.9
    + r    336.3
              µs

Reads = 4 + (80 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     206.9     0.342    0.1%
    1     528.4     8.739    1.6%
    2     849.8     9.351    1.1%
    3      1179     11.33    0.9%
    4      1500     11.82    0.7%
    5      1843     8.844    0.4%
    6      2205     24.76    1.1%
    7      2561     14.72    0.5%
    8      2867     22.73    0.7%
    9      3228     16.84    0.5%
   10      3581      25.5    0.7%

Quality and confidence:
param     error
r         0.743

Model:
Time ~=    177.6
    + r    338.1
              µs

Reads = 4 + (80 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_get_storage_per_kb", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Skipped Metadata (r:0 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    522.3
    + n    145.3
              µs

Reads = 84 + (0 * n)
Writes = 1 + (0 * n)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    n   mean µs  sigma µs       %
    0     322.4     2.871    0.8%
    1     716.5     8.497    1.1%
    2     825.4     11.71    1.4%
    3       946     4.682    0.4%
    4      1111     12.81    1.1%
    5      1261     4.819    0.3%
    6      1366     5.678    0.4%
    7      1538     12.48    0.8%
    8      1683     9.563    0.5%

Quality and confidence:
param     error
n         2.599

Model:
Time ~=    465.2
    + n    155.1
              µs

Reads = 55 + (5 * n)
Writes = 1 + (0 * n)

Pallet: "pallet_contracts", Extrinsic: "seal_contains_storage", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Skipped Metadata (r:0 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    183.8
    + r      310
              µs

Reads = 4 + (80 * r)
Writes = 1 + (0 * r)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    r   mean µs  sigma µs       %
    0     204.9      0.16    0.0%
    1     490.5     1.284    0.2%
    2     793.2     12.62    1.5%
    3      1090     7.139    0.6%
    4      1434     13.12    0.9%
    5      1716     9.775    0.5%
    6      2043     16.28    0.7%
    7      2346      11.8    0.5%
    8      2665     11.28    0.4%
    9      2997     19.42    0.6%
   10      3295     18.89    0.5%

Quality and confidence:
param     error
r         0.572

Model:
Time ~=    179.1
    + r      311
              µs

Reads = 4 + (80 * r)
Writes = 1 + (0 * r)

Pallet: "pallet_contracts", Extrinsic: "seal_contains_storage_per_kb", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Skipped Metadata (r:0 w:0)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    476.7
    + n    60.41
              µs

Reads = 84 + (0 * n)
Writes = 1 + (0 * n)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    n   mean µs  sigma µs       %
    0     308.4      0.64    0.2%
    1       564     12.66    2.2%
    2     603.1     2.717    0.4%
    3     651.9     2.825    0.4%
    4     722.2     3.794    0.5%
    5     782.3      2.77    0.3%
    6     827.5     3.859    0.4%
    7     896.4     2.251    0.2%
    8     959.2     6.545    0.6%

Quality and confidence:
param     error
n         2.037

Model:
Time ~=      423
    + n    69.66
              µs

Reads = 54 + (5 * n)
Writes = 1 + (0 * n)

Pallet: "pallet_contracts", Extrinsic: "seal_take_storage", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Skipped Metadata (r:0 w:0)

Median Slopes Analysis
==<truncated>...

@athei
Copy link
Member

athei commented Jun 22, 2022

I triggered the bot so we can have a look at the weights after fixing the benchmarks. This is the best way to catch bugs in benchmarks: Checking if the weights are plausible.

Copy link
Contributor

@ascjones ascjones left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

(Entry::Occupied(entry), true) => WriteOutcome::Taken(entry.remove()),
};
if let Some(value) = value {
self.storage.insert(key.to_vec(), value);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor optimization could call key.to_vec() just once at the top

…--manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs
@athei
Copy link
Member

athei commented Jun 23, 2022

I noticed that all changed *_per_kb benchmarks suddenly include a read/write component per n. We don't want this. I think in those benchmarks we need to whitelist the generated keys using: add_to_whitelist.

@TriplEight TriplEight self-requested a review June 23, 2022 11:39
@paritytech-ci paritytech-ci requested a review from a team June 23, 2022 11:39
@agryaznov
Copy link
Contributor Author

bot merge

@paritytech-processbot
Copy link

Error: "Check reviews" status is not passing for paritytech/cumulus#1404

@agryaznov
Copy link
Contributor Author

bot merge

@paritytech-processbot paritytech-processbot bot merged commit 622f532 into master Jun 23, 2022
Smart Contracts automation moved this from In Progress to Done Jun 23, 2022
@paritytech-processbot paritytech-processbot bot deleted the ag-transparent-hashing branch June 23, 2022 12:10
DaviRain-Su pushed a commit to octopus-network/substrate that referenced this pull request Aug 23, 2022
…ytech#11501)

* save

* builds and old tests pass

save:  temporary value dropped while borrowed

save: finally builds

test updated but still fails

* type names enhanced

* VarSizedKey bounded to new Config param

* improved wasm runtime updated funcs

* unstable-interface tests fixed

* benchmarks fixed

* Apply suggestions from code review

Co-authored-by: Alexander Theißen <alex.theissen@me.com>

* fixes on feedback

* fixes on feedback applied + make it build

* benchmarks build but fail (old)

* "Original code too large"

* seal_clear_storage bench fixed (code size workaround hack removal tbd)

* bench_seal_clear_storage pass

* bench_seal_take_storage ... ok

* added new seal_set_storage + updated benchmarks

* added new seal_get_storage + updated benchmarks

* added new seal_contains_storage + updated benchmarks

* added tests for _transparent exec functions

* wasm test for clear_storage

* wasm test for take_storage

* wasm test for new set_storage

* wasm test for new get_storage

* wasm test for new contains_storage

* CI fix

* ci fix

* ci fix

* ci fix

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* fixes according to the review feedback

* tests & benchmarks fixed

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* refactoring

* fix to runtime api

* ci fix

* ctx.get_storage() factored out

* ctx.contains_storage() factored out

* number of batches reduced for transparent hashing storage benchmarks

* contracts RPC & pallet::get_storage to use transparent hashing

* node and rpc updated to use get_storage with VarSizedKey

* refactored (more concize)

* refactored contains_storage (DRYed)

* refactored contains_storage (DRYed)

* fix rpc

* fmt fix

* more fixes in rpc

* rollback `Pallet:get_storage` to Vec<u8> and rpc and node parts related to it

* added `KeyDecodingFailed` error

* Revert weird "fmt fix"

This reverts commit c582cff.

* node-executor basic test update

* fix node-executor basic test

* benchmarks fix

* more benchmarks fix

* FixedSizedKey is hidden from pub, VarSizedKey is exported as StorageKey

* ci fix

* set_storage benchmark fix

* ci fix

* ci fix

* comments improved

* new error code to rpc: KEY_DECODING_FAILED

* Put `rusty-cachier` before PR merge into `master` for `cargo-check-benches` job

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* minor optimization

Co-authored-by: Alexander Theißen <alex.theissen@me.com>
Co-authored-by: Parity Bot <admin@parity.io>
Co-authored-by: Vladimir Istyufeev <vladimir@parity.io>
Co-authored-by: command-bot <>
en added a commit to octopus-network/substrate that referenced this pull request Oct 5, 2022
* generate_storage_alias: Rewrite as proc macro attribute (#11387)

* generate_storage_alias: Rewrite as proc macro attribute

This rewrites the `generate_storage_alias!` declarative macro as proc-macro attribute. While doing
this the name is changed to `storage_alias`. The prefix can now also be the name of a pallet. This
makes storage aliases work in migrations for all kind of chains and not just for the ones that use
predefined prefixes.

* Fix compilation and FMT

* Moare fixes

* :facepalm:

* ......

* Rework the syntax and support instancing

* FMT

* Prefix variants with `Storage`

* Make it compile

* Fix where clause on rust stable

* Prune some duplicated dependencies in the dep graph (#11433)

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* contracts: Get rid of `#[pallet::without_storage_info]` (#11414)

* Implement `MaxEncodeLen` for pallet-contracts storage

* Remove redundant debug println

* Move code len check to PrefabWasmModule::from_code

* Return a successful response on repeated small block request (#11429)

* [ci] Adjust job order in pipeline test stage with Gitlab DAG (#11442)

* [Do Not Merge] Test gitlab DAG in pipeline

* add jobs for pipeline cancel

* add check-tracing to cancel-pipeline

* Allow to set the max supply for collection (#11441)

* Allow to set the max supply for collection

* Update error

* Add weights info

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_uniques --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/uniques/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* Update frame/uniques/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

Co-authored-by: Parity Bot <admin@parity.io>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* disable check-dependent-cumulus (#11450)

* trie: Optimize `keys` function (#11457)

* trie: Optimize `keys` function

Instead of iterating the entire state and collecting all keys that match the given prefix, we can
directly use the optimized prefix iterator.

* Add a test

* add GHA support to dependabot (#11448)

* add GHA support to dependabot

* fix formatting

* add labels

* add label

* contracts: Add `set_code` root dispatchable (#11451)

* Add `set_code` dispatchable

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs

Co-authored-by: Parity Bot <admin@parity.io>

* Switch to pooling copy-on-write instantiation strategy for WASM (#11232)

* Switch to pooling copy-on-write instantiation strategy for WASM

* Fix benchmark compilation

* Fix `cargo fmt`

* Fix compilation of another benchmark I've missed

* Cleanups according to review comments

* Move `max_memory_size` to `Semantics`

* Set `memory_guaranteed_dense_image_size` to `max_memory_size`

* Rename `wasm_instantiation_strategy` to `wasmtime_instantiation_strategy`

* Update the doc-comments regarding the instantiation strategy

* Extend the integration tests to test every instantiation strategy

* Don't drop the temporary directory until the runtime is dropped in benchmarks

* Don't drop the temporary directory until the runtime is dropped in tests

* Make fields of `EraRewardPoints` public (#11422)

* add missing events to elections fallback (#11436)

* add missing events to elections fallback

* Update frame/election-provider-multi-phase/src/lib.rs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Update frame/election-provider-multi-phase/src/lib.rs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* add test

* fix

* fmt

* Update frame/support/src/storage/types/nmap.rs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Fix renaming artifacts (#11455)

* Add Score to Bags List (#11357)

* Add Score to Bags List

* fix ordering

* make compile

* in progress migration

* make migration compile

* remove old check

* remove runtime specific migration

* fix warning

* Apply suggestions from code review

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* improve migration

* fix

* fix merge

* fmt

* Update migrations.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* Stabilize ecdsa_ functions (#11486)

* Bump actions/checkout from 2 to 3 (#11463)

Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump gaurav-nelson/github-action-markdown-link-check from 1.0.9 to 1.0.14 (#11464)

* Bump gaurav-nelson/github-action-markdown-link-check

Bumps [gaurav-nelson/github-action-markdown-link-check](https://github.com/gaurav-nelson/github-action-markdown-link-check) from 1.0.9 to 1.0.14.
- [Release notes](https://github.com/gaurav-nelson/github-action-markdown-link-check/releases)
- [Commits](https://github.com/gaurav-nelson/github-action-markdown-link-check/compare/7481451f70251762f149d69596e3e276ebf2b236...58f84fd654812d0d8da4e4d4a559eda087daf8ce)

---
updated-dependencies:
- dependency-name: gaurav-nelson/github-action-markdown-link-check
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update .github/workflows/md-link-check.yml

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Denis Pisarev <denis.pisarev@parity.io>

* RPC: Mark storage methods as `blocking`  (#11459)

* client/api: Make `storage_keys` blocking

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

* client/api: Ensure `state_*` RPC methods are blocking

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

* client/rpc: Ensure `childstate_*` RPC methods are blocking

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

* client/rpc: `ChainApi` make RPC methods sync

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

* Remove unused async-traits

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

* client/rpc-api: Make chain RPC methods blocking

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

* Update client/rpc/src/state/state_full.rs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Add `blocking` to `state_getKeysPaged` RPC call

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

* Fix build and warning

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

* Remove `async_trait` tidyup

Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* InMemoryBackend: Make it generic over the key hasher (#11488)

* InMemoryBackend: Make it generic over the key hasher

* Update primitives/state-machine/src/in_memory_backend.rs

Co-authored-by: cheme <emericchevalier.pro@gmail.com>

* Update primitives/state-machine/src/in_memory_backend.rs

Co-authored-by: cheme <emericchevalier.pro@gmail.com>

* FMT

Co-authored-by: cheme <emericchevalier.pro@gmail.com>

* Unify rpc api and implementation name (#11469)

* Unify rpc api and implementation name

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* MauanlSeal ==> ManualSealRpc

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Remove extra Rpc naming in the structs

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Update doc

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* fix merge

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>

* rpc servers CLI: add `--max--subscriptions--per--connection` + fix a few bugs (#11461)

* cli: fix RPC CLI nits

* remove needless lines

* cargo fmt

* Update client/service/src/lib.rs

Co-authored-by: James Wilson <james@jsdw.me>

Co-authored-by: James Wilson <james@jsdw.me>

* Make `--dev` listen by default on `/ip4/0.0.0.0/tcp/30333` (#11492)

If `--validator` is passed we also listen on this address and as `--dev` is a shortcut for multiple
CLI args, including `--validator`, we should make it consistent.

* Fix State Trie Migration Benchmarks (#11502)

* enable signed migrations in benchmarks

* T instead of Test

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Remove 'mut'

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Use API for pr-custom-review (#11487)

* use API for pr-custom-review

* bump action tag

* temporary: disable draft skip

* temporary: use staging

* try it with the prod instance

* revert draft skip

* Introduce #[pallet::call_index] attribute to dispatchables (#11381)

* Introduce #[pallet::call_index] attribute to dispatchables

* cargo fmt

* Add more docs and prevent duplicates of call indices

* Add UI test for conflicting call indices

* cargo fmt

Co-authored-by: parity-processbot <>

* Create Script to Run All Benchmarks (#11493)

* Create run_all_benchmarks.sh

* Update run_all_benchmarks.sh

* Update run_all_benchmarks.sh

* Review fixes

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update scripts/run_all_benchmarks.sh

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* typo

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* add default for $1

* Typo

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update run_all_benchmarks.sh

* new weights on benchmarking machine

* prefer `--chain=dev`

* fix compile

* fix command

* fmt

* dont use square brackets

* Extend doc

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Remove +nightly

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Add error file an run execute everything optimistically

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Adjust maximum memory pages hard limit for the pooling instantiation strategy (#11482)

* Run `sc-executor-wasmtime` unit tests for all instantiation strategies

* Adjust maximum memory pages hard limit for the pooling instantiation strategy

* Optimize offchain worker memory usage a bit.  (#11454)

* add missing events to elections fallback

* Merged

* add some logs and stuff

* undo a bunch of things

* undo lock file

* remove unused err

* fix build

* add rule to the ci job (#11511)

* Contracts pallet: removal on idle (#11202)

* on_initialize -> on_idle

* use remaining_weight info

* no weight_limit for on_idle

* call on_idle in tests

* attempt to fix tests

* run on_initiaize when queue full

* add on_idle to weight info

* add on_idle weight info to on_idle hook

* add basic test for on_initialize with full queue

* disbale check for all keys gone in full queue, full block test

* queue_deth as usize, add comment

* comment was removed by accident

* Update frame/contracts/src/lib.rs

Co-authored-by: Alexander Theißen <alex.theissen@me.com>

* cargo +nightly fmt

* update lazy_removal_does_no_run_on_full_queue_and_full_block

* remove changes in weights.rs

* weights on_idle -> on_process_deletion_queue_batch

* use block number for on_idle

* use BlockNumber for on_initialize

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* Update frame/contracts/src/lib.rs

Co-authored-by: Alexander Theißen <alex.theissen@me.com>

* remove outcommented code

* add check that queue still full for test

* cargo fmt

* cargo +nightly fmt

* Update frame/contracts/src/benchmarking/mod.rs

Co-authored-by: Alexander Gryaznov <hi@agryaznov.com>

* fix weights.rs

* add lazy_removal_does_no_run_on_low_remaining_weight test

* Apply suggestions from code review

Co-authored-by: Alexander Gryaznov <hi@agryaznov.com>

Co-authored-by: Alexander Theißen <alex.theissen@me.com>
Co-authored-by: Parity Bot <admin@parity.io>
Co-authored-by: Alexander Gryaznov <hi@agryaznov.com>

* Fix Babe revert when last finalized block is a leaf (#11500)

* Fix Babe revert when a leaf is the last finalized block

Without this fix the last finalized block weight data is wrongly removed
on revert scenario where the last finalized block is a leaf.

* Remove redundant check

* Added test to exercise the fix

* Rename test

* Give variables better names

* Document benchmarking CLI (#11246)

* Decrese default repeats

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Add benchmarking READMEs

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update docs

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update docs

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update README

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Review fixes

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>

Co-authored-by: parity-processbot <>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>

* Introduce `WeightToFee` trait instead of `WeightToFeePolynomial` and make `WeightToFeePolynomial` implement it instead (#11415)

* Introduce `WeightToFee` trait instead of `WeightToFeePolynomial` and make `WeightToFeePolynomial` implement it instead

* Rename `WeightToFee::calc()` to `WeightToFee::wight_to_fee()`

* Fix typo

* Fix node lookup on fork-tree after a warp-sync (#11476)

* Fix node lookup on fork-tree after a warp-sync

After a warp-sync, the error condition was triggered by the absence
of the parent node of the first imported block.

The previous lookup implementation was traversing the tree using a
recursive **post-order** DFS, this technique doesn't trigger the issue.

In the last iterative implementation we were using a BFS instead.

* Added internal doc warning

* Small optimization

* Specify post-order DFS in the comment

* Test for the fork-tree post-order DFS traversal requirement (#11521)

* Test for the fork-tree post-order DFS traversal requirement

* Fixed typo

* Storage Layer for All FRAME Extrinsics (#11431)

* add new trait

* implement DispatchableWithStorageLayer

* at least one transactional

* all dispatch is at least transactional

* storage_layer api

* add test

* storage layer tests

* deprecate transactional tag

* i guess no reason to deprecate

* remove transactional from batch_all

* update tests

* extend trait

* cargo run --quiet --profile=production --features runtime-benchmarks --manifest-path bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_balances --extrinsic=* --execution=wasm --wasm-execution=compiled --output=./frame/balances/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* cargo run --quiet --profile=production --features runtime-benchmarks --manifest-path bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_balances --extrinsic=* --execution=wasm --wasm-execution=compiled --output=./frame/balances/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* cargo run --quiet --profile=production --features runtime-benchmarks --manifest-path bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_staking --extrinsic=* --execution=wasm --wasm-execution=compiled --output=./frame/staking/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* fix copy paste name

* cargo run --quiet --profile=production --features runtime-benchmarks --manifest-path bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_utility --extrinsic=* --execution=wasm --wasm-execution=compiled --output=./frame/utility/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* Create run_all_benchmarks.sh

* uncomment build

* update number of steps and repeats

* add skip build

* Update run_all_benchmarks.sh

* Update run_all_benchmarks.sh

* new benchmarks

* Update frame/support/src/traits/dispatch.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* Update frame/support/src/traits/dispatch.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* Update frame/support/test/tests/storage_layers.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* Update frame/support/test/tests/storage_layers.rs

* weights

* Update dispatch.rs

* doc link

* decl_macro support

Co-authored-by: Parity Bot <admin@parity.io>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* CI: github no longer checks whitelisted actions this way (#11507)

* CI: github no longer checks whitelisted actions this way

* CI: actually this one is needed and no one knows it's related to a Markdown Link Check

* Fork-Tree import requires post-order DFS traversal (#11531)

* Fork-tree insert requires post-order dfs traversal

* Add dedicated test for methods requireing post-order traversal

* Fixed pruning docs (#11519)

* fix broken links (#11536)

* Safe and sane multi-item storage removal (#11490)

* Fix overlay prefix removal result

* Second part of the overlay prefix removal fix.

* Report only items deleted from storage in clear_prefix

* Fix kill_prefix

* Formatting

* Remove unused code

* Fixes

* Fixes

* Introduce clear_prefix host function v3

* Formatting

* Use v2 for now

* Fixes

* Formatting

* Docs

* Child prefix removal should also hide v3 for now

* Fixes

* Fixes

* Formatting

* Fixes

* apply_to_keys_whle takes start_at

* apply_to_keys_whle takes start_at

* apply_to_keys_whle takes start_at

* Cursor API; force limits

* Use unsafe deprecated functions

* Formatting

* Fixes

* Grumbles

* Fixes

* Docs

* Some nitpicks :see_no_evil:

* Update primitives/externalities/src/lib.rs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Formatting

* Fixes

* cargo fmt

* Fixes

* Update primitives/io/src/lib.rs

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* Formatting

* Fixes

Co-authored-by: Bastian Köcher <info@kchr.de>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* Use `loops` rather than `backend` for compatibility. (#11542)

* Use `loops` rather than `backend` for compatibility.

* Move over other converters

* sp-core: impl serde for some offchain types (#11512)

* sp-core: impl serde for some offchain types

* Update primitives/core/src/offchain/mod.rs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* remove serde impls from OpaqueNetworkState/OpaqueMultiaddr

* derive default

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Several tweaks needed for Governance 2.0 (#11124)

* Add stepped curve for referenda

* Treasury SpendOrigin

* Add tests

* Better Origin Or-gating

* Reciprocal curve

* Tests for reciprical and rounding in PerThings

* Tweaks and new quad curve

* Const derivation of reciprocal curve parameters

* Remove some unneeded code

* Actually useful linear curve

* Fixes

* Provisional curves

* Rejig 'turnout' as 'support'

* Use TypedGet

* Fixes

* Enable curve's ceil to be configured

* Formatting

* Fixes

* Fixes

* Fixes

* Remove EnsureOneOf

* Fixes

* Fixes

* Fixes

* Formatting

* Fixes

* Update frame/support/src/traits/dispatch.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* Grumbles

* Formatting

* Fixes

* APIs of VoteTally should include class

* Fixes

* Fix overlay prefix removal result

* Second part of the overlay prefix removal fix.

* Formatting

* Fixes

* Add some tests and make clear rounding algo

* Fixes

* Formatting

* Revert questionable fix

* Introduce test for kill_prefix

* Fixes

* Formatting

* Fixes

* Fix possible overflow

* Docs

* Add benchmark test

* Formatting

* Update frame/referenda/src/types.rs

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* Docs

* Fixes

* Use latest API in tests

* Formatting

* Whitespace

* Use latest API in tests

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* change impl FnOnce() to generic type + trait bound (#11534)

* change impl FnOnce() to generic type + trait bound

with_transaction() function can not be used with explicit generic arguments because of this issue: https://github.com/rust-lang/rust/issues/83701

* make the same changes elsewhere

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>

* Introduce `rusty-cachier` (#11462)

* Introduce `rusty-cachier`

* Return LF at the end of file

* Use `entrypoint` to `unshare(1)` into a new mount namespace

* Use `rusty-cachier`-provided absolute path for `CARGO_TARGET_DIR` everywhere

* Debug single `build-rustdoc` job

* CI: debug

* CI: debug

* CI: debug

* `unshare(1)` is no longer needed

* CI: remove debug

* Revert "Debug single `build-rustdoc` job"

* Formatiing

* Update scripts/ci/gitlab/pipeline/build.yml

Co-authored-by: Denis Pisarev <denis.pisarev@parity.io>

* Clean up `#[transactional]` (#11546)

* Deprecate #[transactional] attribute

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Remove #[transactional] from nomination pools

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Review fix

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Fix NOOP test

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Suppress warnings

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Add `rusty-cachier notify` job (#11554)

* Add `rusty-cachier notify` job

* Add comments

* Fix CI after `rusty-cachier` introduction (#11556)

* Fix CI after `rusty-cachier` introduction

* Replace anchor with `extends`

* Introduce `EnsureOrigin::try_successul_origin` (#11558)

* Introduce `EnsureOrigin::try_successul_origin`

* Formatting

* Fixes

* Add Morph

* Fixes

* Formatting

* Sync: Improve major sync detection (#11547)

* Sync: Improve major sync detection

When we still have a full import queue, we should still report that we are in major sync mode,
otherwise validators may will already start producing blocks.

* Use median

* Review comments

* Fix clippy on master (#11559)

* Fix link in node-template README (#11529)

The lorri repository has moved from https://github.com/target/lorri to
https://github.com/nix-community/lorri.

* Fix minor typos (#11550)

* Fix minor typos

* FMT

Co-authored-by: Bastian Köcher <info@kchr.de>

* Short circuit Treasury::Spend benchmark for NeverEnsureOrigin (#11562)

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

Co-authored-by: parity-processbot <>

* Do not require Ord for pallet_offences::Config::IdentificationTuple (#11563)

* Ranked Collective pallet (#11548)

* Ranked Collective pallet

* Fixes

* benchmarks

* Weights

* Allow class voting in rank
Use bare ayes for calculating support.
Allow only promotion/demotion by one rank only.
Allow removal of member with rank zero only.
Use new Tally API

* Index by rank, still O(1).

* Custom vote weights

* Formatting

* Update frame/ranked-collective/src/lib.rs

* Broken :(

* origin guard; cleanup uses new API

* Formatting

* Promote/demote by rank

* Formatting

* Use new API

* Remove code in another PR

* Remove code in another PR

* Formatting

* Remove code in another PR

* Docs

* Docs

* Bump

* Fixes

* Formatting

* Fixes

* Introduce set function into storage maps (#11564)

* Introduce `SubmitOrigin` to Referenda pallet config (#11567)

* Don't limit `test-linux-stable-int` job output (#11560)

* Fix all warnings when building for wasm (#11569)

* Fix all warnings when building for wasm

Besides that it also enables warnings as errors for wasm builds in the CI.

* FMT

* Make clippy happy

* Helper macro for `Morph` impls (#11570)

* Helper macro for Morph impls

* No need to deprecate for now

* Improved macro

* Doc tests

* Grumbles

* `rusty-cachier` pipeline impovements and fixes (#11572)

* CI: fix `build-subkey-macos` build job (#11573)

* CI: fix `build-subkey-macos` build job

* CI: use full path for the `CARGO_TARGET_DIR` default value

* aura: export change_authorities and initialize_authorities (#11468)

* aura: export change_authorities and initialize_authorities

* add docs

* fix docs

* Reduce call size of Referenda pallet (#11578)

* Reduce call size of Referenda pallet

* Fixes

* Fixes

* Fixes

* Docs

* reactivate check-dependent-cumulus (#11506)

* re-enable check-dependent-cumulus

* temporary: use handle-extra-dependencies

* temporary: trim CI

* CI: include build stage

* CI: include test stage

* CI: include test stage

* Revert "temporary: trim CI"

This reverts commit dcf4ae8d842bc445a065c7ccdc3b6a603034faa4.

* CI: fix weird revert

* Revert "temporary: use handle-extra-dependencies"

This reverts commit bc0dc0f21f10284a23f66fdd8509ca6df89f2586.

* CI undebug

Co-authored-by: TriplEight <denis.pisarev@parity.io>

* wasm-builder: Rerun the build if the generated file changed (#11582)

* [ci] use cargo nextest instead cargo test in test-linux-stable (#11576)

* [DO NOT MERGE] Experimenting with nextest

* enable jobs

* enable stages

* add comment

* create test-frame-support job

* Expose ValidatedTransaction from transaction pool (#11588)

This is required to make a tx pool wrapper for some custom transaction validation, specificially
required to make a wrapper around the `LocalTransactionPool` implementation (https://github.com/subspace/subspace/blob/f54881a9b5/crates/subspace-service/src/pool.rs#L232-L269).

Related: https://github.com/paritytech/substrate/discussions/11520

* Tracable defensive errors (#11532)

* Tracable defensive errors

* small fixes

* fix

* refactored

* switched to defensive_ok_or

* Remove unnecessary type annotations and conversions

* cargo fmt

* Fixes

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* Remove `#[pallet::without_storage_info]` for pallet-remark (#11590)

* Add host info to weight templates (#11583)

* Add host info to weight templates

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=frame_system --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/system/src/weights.rs --template=./.maintain/frame-weight-template.hbs

Co-authored-by: Parity Bot <admin@parity.io>

* Expose Benchmarking Component Ranges (#11545)

* Add component ranges to benchmarking

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Adding component ranges to templates

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Fix tests

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=frame_system --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/system/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* tweak script to reduce diff

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_identity --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/identity/src/weights.rs --template=./.maintain/frame-weight-template.hbs

Co-authored-by: Parity Bot <admin@parity.io>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>

* make era public (#11575)

* MEL for Ranked Collective (#11602)

* Fix one-by-off in `BoundedSlice::try_from` (#11600)

* Remove a max supply record on collection's destruction (#11593)

* Remove a max supply record on collection's destruction

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_utility --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/utility/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_uniques --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/uniques/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_uniques --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/uniques/src/weights.rs --template=./.maintain/frame-weight-template.hbs

Co-authored-by: Parity Bot <admin@parity.io>

* Implement more IntoIter traits for bounded types (#11616)

* Remove `without_storage_info` for membership pallet (#11591)

* Improve docs on `--keep-blocks` CLI parameter and related data structures (#11611)

* Improve docs on `--keep-blocks` CLI parameter and related data structures

* Update client/db/src/lib.rs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Improve inspection and generation of node keys (#11525)

* Improve inspection and generation of node keys

* Lock stdout before write

* Fix typo

* Fix offset

* Remove useless code

* Set inspect-node-key 'network' option as obsolete

* Better transaction pool error (#11629)

* Better transaction pool error

* Do not use `Debug` when printing errors

* Use BoundedVec in aura pallet (#11617)

* Use BoundedVec in aura pallet

* cargo fmt

* pallet alliance (#11112)

* Add pallet-alliance

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Update multihash/cid and format

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Remove useless deps

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Add pallet-alliance into node runtime

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Fix has_identity

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Add TooMantBlacklist Error

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Add TooLongWebsiteUrlLength Error

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Add remove_announcement

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Derive pallet_identity::Config and Fix test/benchmarking

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Add part weight for call of pallet-alliance

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Remove pallet_identity Config trait

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Fix propose arguments

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Some nits

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* cargo fmt

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Fix benchmarking of add_blacklist/remove_blacklist

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Some nits

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Add benchmarking for init_members

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Add benchmarking for propose/vote/veto

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Fix benchmarking

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Remove some useless

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* fix some compile issue

* more fix

* all checks

* refactor

* refactor event

* refactor

* cleanup

* cleanup

* fix benchmarking

* fix warning

* fmt

* fix benchmarks

* with storage info

* fmt

* add new config

* fix benchmarks

* fix

* fmt

* Apply suggestions from code review

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* improvements

* fix

* update docs

* rename events, errors, and functions

* make kicking events clearer

* fix

* fix tests

* fix tests

* fix runtime

* fix build

* remove unneeded change

* remove Candidate role from Alliance

* fmt grumbles

* update lock

* update recursion limit

* benchmarks

* convert-try

* benchmark assertions

* fmt ,

* cargo lock

* Update frame/alliance/src/benchmarking.rs

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>

* add docs to public interfaces

* Apply suggestions from code review

Co-authored-by: Squirrel <gilescope@gmail.com>

* fix build (node)

* review

* use EitherOfDiverse

* update cargo toml

* make all dispatch class Normal

* change blacklist to unscrupulous

* formatting

* fmt oops

* rename benchmarking unscrupulous account creator

Co-authored-by: koushiro <koushiro.cqx@gmail.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
Co-authored-by: joepetrowski <joe@parity.io>
Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
Co-authored-by: Squirrel <gilescope@gmail.com>

* Add fixed u64 (#11555)

Co-authored-by: parity-processbot <>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Remove storage `MaxValues` limits (#11643)

* Remove limits

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Remove more

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Added an event for cancel_proposal (#11620)

* Added an event for cancel_proposal

* test

* pallet-grandpa: Improve/Clarify docs of `note_stalled` (#11623)

* Bump crossbeam-utils from 0.8.5 to 0.8.8 (#11605)

Bumps [crossbeam-utils](https://github.com/crossbeam-rs/crossbeam) from 0.8.5 to 0.8.8.
- [Release notes](https://github.com/crossbeam-rs/crossbeam/releases)
- [Changelog](https://github.com/crossbeam-rs/crossbeam/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-utils-0.8.5...crossbeam-utils-0.8.8)

---
updated-dependencies:
- dependency-name: crossbeam-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix pallet_uniques docs link (#11651)

* MEL bound `state-trie-migration` (#11639)

* MEL bound state-trie-migration

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* wip

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Add tests

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Use sp_std

Co-authored-by: cheme <emericchevalier.pro@gmail.com>

* Add doc

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Set MaxKeyLen default to 512

Just to be sure that it will work. There is also no real penalty
from over-estimating it.

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Add more doc

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* fmt

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Fix assert_err_with_weight macro

Looks like I'm the only one using it anyway...

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Fix tests that use env macro

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Fix test

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

Co-authored-by: cheme <emericchevalier.pro@gmail.com>

* Move bounded type definitions to sp-runtime (#11645)

* Move bounded type definitions to sp-runtime

* cargo fmt

* Fix compile error

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Move TryCollect to sp-runtime

* Write some docs

* Import missing types

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Implement MaxEncodedLen on pallet-beefy (#11584)

* Implement MaxEncodedLen on pallet-beefy

* Return Result in intialize_authorities

* Update docs

* Log error when authorities list gets truncated

* Update frame/beefy/src/lib.rs

Co-authored-by: Adrian Catangiu <adrian@parity.io>

* cargo fmt

Co-authored-by: Adrian Catangiu <adrian@parity.io>

* Implement PartialOrd and Ord on BoundedSlice and WeakBoundedVec (#11655)

* Implement PartialOrd and Ord on BoundedSlice and WeakBoundedVec

* More implementations of PartialEq and PartialOrd

* cargo fmt

* Fixes

* Allow nomination pools to chill + fix dismantle scenario (#11426)

* make pool roles optional

* undo lock file changes?

* add migration

* add the ability for pools to chill themselves

* boilerplate of tests

* somewhat stable, but I think I found another bug as well

* Fix it all

* Add more more sophisticated test + capture one more bug.

* Update frame/staking/src/lib.rs

* reduce the diff a little bit

* add some test for the slashing bug

* cleanup

* fix lock file?

* Fix

* fmt

* Update frame/nomination-pools/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update frame/nomination-pools/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update frame/nomination-pools/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update frame/nomination-pools/src/mock.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Fix build

* fix some fishy tests..

* add one last integrity check for MinCreateBond

* remove bad assertion -- needs to be dealt with later

* nits

* fix tests and add benchmarks for chill

* remove stuff

* fix benchmarks

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_nomination_pools --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/nomination-pools/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* remove defensive

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: Parity Bot <admin@parity.io>

* Properly implement Debug on bounded types (#11659)

* remove flaky rpc subscription tests (#11653)

* Add `TypeInfo` (#11599)

* wasm-builder: Fix constant re-running of `build.rs` scripts. (#11624)

Recently we added the wasm binaries to the `rerun-if-changed` list. The problem with that is that
they have a later mtime than the `invoked.timestamp` file and this file's mtime is used to determine
if the `build.rs` script needs to be re-run. The solution to this is that we copy the mtime of this
`invoked.timestamp` file and add it to the wasm binaries. Then cargo/rustc doesn't constantly wants
to rerun the `build.rs` script.

* Increment subkey version to 2.0.2 (#11656)

* Increment subkey version to 2.0.2

* Update Cargo.lock

Co-authored-by: Davide Galassi <davxy@datawok.net>

* Implement `Deref` for `BoundedSlice` (#11660)

* Impl Deref for BoundedSlice

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update primitives/runtime/src/bounded/bounded_vec.rs

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* grandpa: fix creation of justification with equivocating precommits in commit (#11302)

* grandpa: fix creation of justification ancestry

we would reject commits that have precommits targeting blocks lower than the
commit target. when there is an equivocation (or if it the commit is not
minimal) it is possible to have such precommits and we should assume that they
are the round base.

* grandpa: bump to 0.16.0

* grandpa: add test for justification with equivocation

* grandpa: fix failing test

* Make it possible to disable RocksDB completely (#11537)

* Make it possible to disable RocksDB completely

* Make ParityDB non-optional

* Address review comments

* rpc servers: update jsonrpsee to fix host filtering + WS server-side pings  (#11661)

* bump jsonrpsee to fix #11480

In addition it adds WebSocket server-side pings which is configured to
send out pings periodically every 30 seconds.

* use released crates.io version

* Update Cargo.toml

* Include the chain specs instead of trying to open them by path (#11625)

This makes it possible to run the tests manually, without them expecting to be run in a special
folder etc.

* Remove `without_storage_info` from pallet `transaction-storage` (#11668)

* Introduce BoundedVec

* Fix typos

* Add comments to the bounds

* Remove migration

* Improve bound value access syntax

* combine iteratons and tolerance in sp-npos-elections API (#11498)

* Initial implementation of mms

* Some more attempts at `mms`

* Functioning `MMS` algorithm implementation.
Adding some tests too

* More tests and typos fixed.

* Adding fuzzer for `mms`
(but could not test it on Mac M1)

* Missing imports

* Fixing rustdoc

* More accurate implementation of `mms`

* Removing the fuzzer `mms` implementation

* Implementing `NposSolver` for `MMS`
had to add the `Clone` trait, maybe I could see if I can get rid of it.

* Fixing rust docs by adding () to resolve ambiguity

* Amending `unwrap` to `expect`
removing unneeded `Clone` trait

* Removing redundant `mms3.rs`

* Implementing `BalancingConfig` and rustdoc changes

* Implementing `weight` for `MMS`

* Implementing `weight` for `MMS`

* Fixing post merge

* Initial implementation of mms

* Some more attempts at `mms`

* Functioning `MMS` algorithm implementation.
Adding some tests too

* More tests and typos fixed.

* Adding fuzzer for `mms`
(but could not test it on Mac M1)

* Missing imports

* Fixing rustdoc

* More accurate implementation of `mms`

* Removing the fuzzer `mms` implementation

* Implementing `NposSolver` for `MMS`
had to add the `Clone` trait, maybe I could see if I can get rid of it.

* Amending `unwrap` to `expect`
removing unneeded `Clone` trait

* Fixing rust docs by adding () to resolve ambiguity

* Removing redundant `mms3.rs`

* Implementing `BalancingConfig` and rustdoc changes

* Implementing `weight` for `MMS`

* Implementing `weight` for `MMS`

* Fixing post merge

* Removing left over from rebase

* Fixing tests

* Removing unneeded import

* Removing unneeded functions

* Removing useless imports

Co-authored-by: kianenigma <kian@parity.io>

* Add Event to Pallet Transaction Payment (#11618)

* add Event to Pallet Transaction Payment

* Fix tests in Pallet Balance

* Fix tests in Pallet Balance/Executive/Asset-tx-payment.

* Fix

* fmt

* Fix

* Fix

* Update Cargo.lock

* Fix tests in executor

* Update frame/transaction-payment/src/lib.rs

Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>

* update the name of the event and fmt.

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>

* Remove `without_storage_info` for the authorship pallet (#11610)

* Remove `without_storage_info` for the authorship pallet

* Tweak impl bounds style

* Use `defensive_proof` instead of `expect`

* MEL: Origin, Referenda, ConvictionVoting (#11631)

* Referenda & CV pallets ready

* Fix build

* Add mel_bound for Voting and Casting types

* Add mel_bound on Tally

* Add mel_bound on another Tally

* Add mel_bound for pallet_collective::RawOrigin

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* Remove multiply_by_rational  (#11598)

* Removed multiply_by_rational
Replaced with multiply_by_rational_with_rounding

* fixes

* Test Fixes

* nightly fmt

* Test Fix

* Fixed fuzzer.

* Upgrade to libp2p 0.45.1 (#11682)

* Upgrade to libp2p 0.45.1

* Limit max_negotiating_inbound_streams to 512

* Upgrade prost-build to 0.10

* Set max_negotiating_inbound_streams to 2048

Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>

* Fix authority discovery protobuf

* Fix comments in authority-discovery schema

Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>

* Add a comment about transport initialization

Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>

* chore: reducing codec times (#11688)

* chore: reduce uxt encode times (#11698)

* chore: reduce uxt encode times

* fmt

* Simplified code using existing APIs (#11702)

Signed-off-by: Emison Lu <lzh1633856298@gmail.com>

* `storage-alias`: Check that prefix is not an underscore (#11704)

Besides that it also adds some UI tests.

* Bump twox-hash from 1.6.2 to 1.6.3 (#11423)

Bumps [twox-hash](https://github.com/shepmaster/twox-hash) from 1.6.2 to 1.6.3.
- [Release notes](https://github.com/shepmaster/twox-hash/releases)
- [Commits](https://github.com/shepmaster/twox-hash/compare/v1.6.2...v1.6.3)

---
updated-dependencies:
- dependency-name: twox-hash
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update syn and fix compilation (#11707)

* Update syn and fix compilation

* Bump pin-project

* check-dependent-cumulus should only be executed for PRs (#11693)

the script executed by check-dependent-cumulus only works for PRs, as shown in https://gitlab.parity.io/parity/mirrors/substrate/-/jobs/1630771#L87, which comes from https://github.com/paritytech/pipeline-scripts/blob/3ad10ddc0d985ef5326974a1143229c6429befab/check_dependent_project.sh#L443

* Pump the gossip engine while waiting for the BEEFY runtime pallet (memory leak fix) (#11694)

* Pump the gossip engine while waiting for the BEEFY runtime pallet

This fixes a memory leak when the BEEFY gadget is turned on, but
the runtime doesn't actually use BEEFY.

* Implement `FusedFuture` for `GossipEngine`

* Fuse futures outside of loops

* Implement Serialize/Deserialize on WeakBoundedVec (#11713)

* Implement Serialize/Deserialize on WeakBoundedVec

* cargo fmt

* Warn when there are too many elements while deserializing WeakBoundedVec

* More robust grandpa revert procedure (#11719)

* More robust revert procedure

Return an error if revert is called in a node that is not actively
running grandpa, i.e. grandpa genesis data has not been initialized.
Previous implementation was just firing an `unreachable!` code exception.

Furthermore we skip revert hassle if there is nothing to revert.

* Nit

* Fix typo in weights.rs (#11724)

overriden -> overridden

* WrapperOpaque: Use `decode_all` to decode from the `Vec<u8>` (#11726)

This ensures that there isn't any extra data attached that isn't used.

* Respect cargo offline env variable in wasm builder (#11735)

* Support offline env variable in wasm builder

* Clean up

* Improve checks

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* Update crate docs

* Add docs to `lib.rs` and introduce helper method `offline_build`

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* contracts: Reduce size of deletion queue depth (#11696)

* contracts: Reduce size of deletion queue depth

* Remove unused import

* Put `rusty-cachier` before PR merge into `master` for `cargo-check-benches` job (#11737)

* epochs: don't use gap when there's at least one genesis epoch imported (#11725)

* epochs: don't use gap when there's at least one genesis epoch imported

* epochs: add test for genesis gap fix

* pallet-beefy-mmr: add API for BEEFY Authority Sets (#11406)

* pallet-beefy: add Config::OnNewValidatorSet type

Add a hook to pallet-beefy for doing specific work when
BEEFY validator set changes.

For example, this can be used by pallet-beefy-mmr to cache
a lightweight MMR root over validators and make it available
to light clients.

* pallet-beefy-mmr: implement OnNewValidatorSet

Implement pallet-beefy::OnNewValidatorSet to be notified of BEEFY
validator set changes. Use the notifications to compute and cache
a light weight 'BEEFY authority set' which is an MMR root over
BEEFY validator set plus some extra info.

Previously, pallet-beefy-mmr was interogating pallet-beefy about
validator set id on every block to find out when it needs to recompute
the authority set.
By using the event-driven approach in this commit, we also save one
extra state interogation per block.

* pallet-beefy-mmr: add new authority_set() API

Expose current and next BEEFY authority sets through runtime API.
These can be directly used by light clients to avoid having them
compute them themselves based on BEEFY validator sets.

Signed-off-by: acatangiu <adrian@parity.io>

* rename BeefyMmr exposed runtime api

* make pallet-tips & pallet-bounties instantiable (#11473)

* make pallet-tips & pallet-bounties instantiable

* update test

* add default instance

* update

* cargo fmt

* update

* update

* update

* update

* fix merge

* fix tests

* bounties benchmarking instantiable

* fix benchmarks

* make tips benchmarks instantible

Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>

* [contracts] Implement transparent hashing for contract storage (#11501)

* save

* builds and old tests pass

save:  temporary value dropped while borrowed

save: finally builds

test updated but still fails

* type names enhanced

* VarSizedKey bounded to new Config param

* improved wasm runtime updated funcs

* unstable-interface tests fixed

* benchmarks fixed

* Apply suggestions from code review

Co-authored-by: Alexander Theißen <alex.theissen@me.com>

* fixes on feedback

* fixes on feedback applied + make it build

* benchmarks build but fail (old)

* "Original code too large"

* seal_clear_storage bench fixed (code size workaround hack removal tbd)

* bench_seal_clear_storage pass

* bench_seal_take_storage ... ok

* added new seal_set_storage + updated benchmarks

* added new seal_get_storage + updated benchmarks

* added new seal_contains_storage + updated benchmarks

* added tests for _transparent exec functions

* wasm test for clear_storage

* wasm test for take_storage

* wasm test for new set_storage

* wasm test for new get_storage

* wasm test for new contains_storage

* CI fix

* ci fix

* ci fix

* ci fix

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* fixes according to the review feedback

* tests & benchmarks fixed

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* refactoring

* fix to runtime api

* ci fix

* ctx.get_storage() factored out

* ctx.contains_storage() factored out

* number of batches reduced for transparent hashing storage benchmarks

* contracts RPC & pallet::get_storage to use transparent hashing

* node and rpc updated to use get_storage with VarSizedKey

* refactored (more concize)

* refactored contains_storage (DRYed)

* refactored contains_storage (DRYed)

* fix rpc

* fmt fix

* more fixes in rpc

* rollback `Pallet:get_storage` to Vec<u8> and rpc and node parts related to it

* added `KeyDecodingFailed` error

* Revert weird "fmt fix"

This reverts commit c582cfff4b5cb2c9929fd5e3b45519bb24aeb657.

* node-executor basic test update

* fix node-executor basic test

* benchmarks fix

* more benchmarks fix

* FixedSizedKey is hidden from pub, VarSizedKey is exported as StorageKey

* ci fix

* set_storage benchmark fix

* ci fix

* ci fix

* comments improved

* new error code to rpc: KEY_DECODING_FAILED

* Put `rusty-cachier` before PR merge into `master` for `cargo-check-benches` job

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* minor optimization

Co-authored-by: Alexander Theißen <alex.theissen@me.com>
Co-authored-by: Parity Bot <admin@parity.io>
Co-authored-by: Vladimir Istyufeev <vladimir@parity.io>
Co-authored-by: command-bot <>

* Explain why `rusty-cachier` is put first (#11740)

* Bump `wasmtime` to 0.38.0 and `zstd` to 0.11.2 (#11720)

* Bump `wasmtime` to 0.37.0 and `zstd` to 0.11.2

* Bump `wasmtime` to 0.38.0

* Avoid a duplicate block request when syncing from a fork (#11094)

* Separate queueing blocks for import from removal

* Add regression tests

* Remove unnecessary log

* Clear queued blocks when processed

* Move check out of match block

* Track queued block ranges

* Update client/network/sync/src/blocks.rs

* Update client/network/sync/src/blocks.rs

* Update client/network/sync/src/blocks.rs

* Update client/network/sync/src/blocks.rs

* FMT

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Bastian Köcher <info@kchr.de>

* Democracy.fast_track not allowed with zero voting period (#11666)

* Democracy.fast_track not allowed with zero voting period

* revert static parameter alter line

* ensure voting period greater zero

* update doc for fast_track

* unit test: instant fast track to the next block referendum is backed

* fix typos in comments

* Prevent unsoundness in environments with broken `madvise(MADV_DONTNEED)` (#11722)

* Prevend unsoundness in environments with broken `madvise(MADV_DONTNEED)`

* Add the `std` feature to `rustix` dependency

Apparently not having this breaks compilation on non-nightly toolchains.

* Autodetect the page size when checking whether `madvise` works

* Only make sure that the madvice check doesn't return `Err`

* Refund weight in `system::fillBlock` (#11754)

* fix

* pushed

* node: fix fee multiplier test

Co-authored-by: André Silva <andrerfosilva@gmail.com>

* nomination-pools fix (#11748)

* Nomination pool fix

* fmt

* [ci] Remove polkadot-companion-labels GHA (#11774)

* [contracts] Fixed the bug with transfer value for delegate call (#11771)

* Fixed the bug with transfer value.

* Apply suggestions from code review

Co-authored-by: Alexander Theißen <alex.theissen@me.com>

* Moved check into `initial_transfer`

* Fmt

Co-authored-by: Alexander Theißen <alex.theissen@me.com>

* Fix clearing queued blocks in the sync module (#11763)

* pallet-mmr: handle forks without collisions in offchain storage (#11594)

* pallet-mmr: fix some typos

* pallet-mmr: make the MMR resilient to chain forks

* pallet-mmr: get hash for block that added node

* beefy-mmr: add debug logging

* add explanatory comment

* account for block offset of pallet activation

* add support for finding all nodes added by leaf

* minor improvements

* add helper to return all nodes added to mmr with a leaf append

* simplify leaf_node_index_to_leaf_index

summing the (shifted) differences in peak positions adds up to the (shifted) final position, so
don't need to fold over positions.

* dead fish: this also doesn't work

The idea was to keep a rolling window of `(parent_hash, pos)` leaf
entries in the offchain db, with the window matching the one
that provides `block_num -> block_hash` mappings in `frame_system`.

Once a leaf exits the window it would be "canonicalized" by switching
its offchain db key from `(parent_hash, pos)` to simple `pos`.

This doesn't work however because there's no way to get leaf contents
from offchain db while in runtime context.. so no way to get+clear+set
leaf to change its key in offchain db.

Ideas:
1. move the "canonicalization" logic to offchain worker
2. enhance IndexingApi with "offchain::move(old_key, new_key)"
   This is weird, but correct, deterministic and safe AFAICT, so
   it could be exposed to runtime.

* simplify rightmost_leaf_node_index_from_pos

* minor fix

* move leaf canonicalization to offchain worker

* move storage related code to storage.rs

* on offchain reads use canonic key for old leaves

* fix offchain worker write using canon key

* fix pallet-mmr tests

* add documentation and fix logging

* add offchain mmr canonicalization test

* test canon + generate + verify

* fix pallet-beefy-mmr tests

* implement review suggestions

* improve test

* pallet-mmr: add offchain pruning of forks

* pallet-mmr: improve offchain pruning

Instead of keeping pruning map as single blob in offchain db,
keep individual parent-hash lists with block-num identifier as part
of the offchain key.

Signed-off-by: acatangiu <adrian@parity.io>

* pallet-mmr: improve MMRStore<OffchainStorage>::get()

Do the math and retrieve node using correct (canon or non-canon)
offchain db key, instead of blindly looking in both canon and non-canon
offchain db locations for each node.

Still fallback on looking at both if for any reason it's not where
expected.

Signed-off-by: acatangiu <adrian@parity.io>

* pallet-mmr: storage: improve logs

* fix tests: correctly persist overlay

runtime indexing API works on overlay, whereas offchain context
bypasses overlay, so for loops > canon-window, canon would fail.

* pallet-mmr: fix numeric typo in test

* add comment around LeafData requirements

Signed-off-by: acatangiu <adrian@parity.io>

Co-authored-by: Robert Hambrock <roberthambrock@gmail.com>

* expose grandpa BeforeBestBlockBy voting rule (#11798)

* Un-deprecate Transactional Macro (#11807)

* un-deprecate transactional macro

* add transactional back to nomination pools

* sync: Fixed clearing subsequent ranges (#11815)

* sync: Fixed clearing subsequent ranges

* Warp sync fix

* Better documentation

* CLI flag to configure tx ban duration (#11786)

* add tx-ban-seconds

* fix

* trigger CI

* trigger CI

* remove test print

* Update client/cli/src/params/transaction_pool_params.rs

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>

Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com>

* Upgrade libp2p to 0.46.1 (#11787)

* Update libp2p to 0.46.0

* Update libp2p to 0.46.1

* Fix telemetry initialization

* Fix tests

* prep council election pallet for being dissolved (#11790)

* prep council election pallet for being dissolved + make it temporarily bounded

* fix tests

* fix

* Update frame/elections-phragmen/src/lib.rs

* fix bench?

* Network sync refactoring (part 4) (#11412)

* Remove direct dependency of `sc-network` on `sc-network-light`

* Move `WarpSyncProvider` trait and surrounding data structures into `sc-network-common`

* Move `WarpSyncProvider` trait and surrounding data structures into `sc-network-common`

* Create `sync` module in `sc-network-common`, create `ChainSync` trait there (not used yet), move a bunch of associated data structures from `sc-network-sync`

* Switch from concrete implementation to `ChainSync` trait from `sc-network-common`

* Introduce `OpaqueStateRequest`/`OpaqueStateResponse` to remove generics from `StateSync` trait

* Introduce `OpaqueBlockRequest`/`OpaqueBlockResponse`, make `scheme` module of `sc-network-sync` private

* Surface `sc-network-sync` into `sc-service` and make `sc-network` not depend on it anymore

* Remove now unnecessary dependency from `sc-network`

* Replace crate links with just text since dependencies are gone now

* Remove `warp_sync` re-export from `sc-network-common`

* Update copyright in network-related files

* Address review comments about documentation

* Apply review suggestion

* Rename `extra_requests` module to `metrics`

Co-authored-by: Bastian Köcher <info@kchr.de>

* Fix off by one error in proportional slashing (#11782)

* Fix proportional slashing logic

* Update frame/nomination-pools/test-staking/src/lib.rs

Co-authored-by: David <dvdplm@gmail.com>

* Update frame/staking/src/lib.rs

Co-authored-by: David <dvdplm@gmail.com>

* Update frame/staking/src/lib.rs

Co-authored-by: David <dvdplm@gmail.com>

* Update frame/staking/src/lib.rs

Co-authored-by: David <dvdplm@gmail.com>

* fmt

* Update frame/nomination-pools/test-staking/src/lib.rs

* clean

* fix

* last fixes

* doc

Co-authored-by: David <dvdplm@gmail.com>

* Buy&Sell methods for Uniques (#11398)

* Allow to set item's price

* Clean the state when we transfer/burn an item or destroy a collection

* Allow to buy an item

* Remove redundant checks

* Improve events

* Cover with tests

* Add comments

* Apply suggestions

* Fmt

* Improvements for price validation

* Improve validation

* Update to use the new terminology

* Remove multi-assets support

* Chore

* Weights + benchmarking

* Shield against human error

* Test when we pass the higher item's price

* fmt fix

* Chore

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_uniques --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/uniques/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* Remove is_frozen check when setting the price

* Try to fix benchmarking

* Fix benchmarking

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet…
ark0f pushed a commit to gear-tech/substrate that referenced this pull request Feb 27, 2023
…ytech#11501)

* save

* builds and old tests pass

save:  temporary value dropped while borrowed

save: finally builds

test updated but still fails

* type names enhanced

* VarSizedKey bounded to new Config param

* improved wasm runtime updated funcs

* unstable-interface tests fixed

* benchmarks fixed

* Apply suggestions from code review

Co-authored-by: Alexander Theißen <alex.theissen@me.com>

* fixes on feedback

* fixes on feedback applied + make it build

* benchmarks build but fail (old)

* "Original code too large"

* seal_clear_storage bench fixed (code size workaround hack removal tbd)

* bench_seal_clear_storage pass

* bench_seal_take_storage ... ok

* added new seal_set_storage + updated benchmarks

* added new seal_get_storage + updated benchmarks

* added new seal_contains_storage + updated benchmarks

* added tests for _transparent exec functions

* wasm test for clear_storage

* wasm test for take_storage

* wasm test for new set_storage

* wasm test for new get_storage

* wasm test for new contains_storage

* CI fix

* ci fix

* ci fix

* ci fix

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* fixes according to the review feedback

* tests & benchmarks fixed

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* refactoring

* fix to runtime api

* ci fix

* ctx.get_storage() factored out

* ctx.contains_storage() factored out

* number of batches reduced for transparent hashing storage benchmarks

* contracts RPC & pallet::get_storage to use transparent hashing

* node and rpc updated to use get_storage with VarSizedKey

* refactored (more concize)

* refactored contains_storage (DRYed)

* refactored contains_storage (DRYed)

* fix rpc

* fmt fix

* more fixes in rpc

* rollback `Pallet:get_storage` to Vec<u8> and rpc and node parts related to it

* added `KeyDecodingFailed` error

* Revert weird "fmt fix"

This reverts commit c582cff.

* node-executor basic test update

* fix node-executor basic test

* benchmarks fix

* more benchmarks fix

* FixedSizedKey is hidden from pub, VarSizedKey is exported as StorageKey

* ci fix

* set_storage benchmark fix

* ci fix

* ci fix

* comments improved

* new error code to rpc: KEY_DECODING_FAILED

* Put `rusty-cachier` before PR merge into `master` for `cargo-check-benches` job

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* minor optimization

Co-authored-by: Alexander Theißen <alex.theissen@me.com>
Co-authored-by: Parity Bot <admin@parity.io>
Co-authored-by: Vladimir Istyufeev <vladimir@parity.io>
Co-authored-by: command-bot <>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
A0-please_review Pull request needs code review. C1-low PR touches the given topic and has a low impact on builders. D2-notlive 💤 PR contains changes in a runtime directory that is not deployed to a chain that requires an audit.
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

Implement transparent hashing for contract storage
7 participants