Leszek Wiesner 0ebede74df Forum: runtime changes to support thread labels/tags | 3 éve | |
---|---|---|
.. | ||
analysis_cli | 3 éve | |
.gitignore | 3 éve | |
README.md | 3 éve | |
main_notebook.ipynb | 3 éve | |
requirements.txt | 3 éve |
This directory has a CLI to output the analysis of weights into a CSV
and a more interactive notebook
virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt
jupyter notebook
This CLI will output a CSV with the weights of the extrinsics given a file or directory with files that are output by the FRAME benchmarks. Furthermore, given the parameters in a configuration file it will calculate the token fees for the given weights.
Moreover, it can optionally try to estimate the price in fiat currency of the extrinsics given the total issuance of tokens in the system and the market cap.
python analysis_cli --help
will output the helpYou will need to provide a path to a directory containing the weight files or the path to a single weight file.
By default the output will be in output.csv
where the cli is run, to change this use the -o
option.
For the CSV to include an analysis pass the parameter -p
(Meaning the calculated price in tokens and prices)
The parameter configurations is found in config.json
in the analysis_cli
directory, you can change the file using
the -c
option.
The config file has the following form:
{
"weight_coefficient": Number,
"issuance": Number,
"length_coefficient": Number,
"min_market_cap": Number,
"max_market_cap": Number,
"lengths": {
"<extrinsic_name>": Number
},
"params": {
"<extrinsic_name>": {
"i": Number,
"j": Number,
"k": Number,
...
}
}
}
Where:
weight_coefficient
: is the coefficient for converting a weight to a token fee, this can be found in
runtime/src/constants.rs
as part of the WeightToFeePolynomial
implementation by WeightToFee
.issuance
: The total number of tokens available in the system, this is found in runtime/src/constants.rs
as JOYS
.length_coefficient
: This is how much a byte of an extrinsic cost in number of tokens, this is found in
runtime/src/constants.rs
as TransactionByteFee
.min_market_cap
: This is the estimated minimum market cap of the token. This is only used when the dollar price of a
extrinsics is calculated.max_market_cap
: This is the estimated maximum market cap of the token. This is only used when the dollar price of a
extrinsics is calculated.lengths
: This is a dictionary containing <extrinsic_name>
. This entries maps to a length in bytes for a given
extrinsic. When calculating the token fee of an extrinsic this will be added over its weight fee using
length_coefficient
for the convertion. (It's specially important to set a length for runtime_upgrade
since this
extrinsic can easily take up to 3MB in size which will make a considerable part of its cost.params
: This is a dictionary of dictionaries, each entry on the first level represent a different extrinsic with
<extrinsic_name>
. Each of these entries are a dictionary with <parameter>
that represent a value of a parameter
that will be used when calculating the weight of the extrinsic with its corresponding function.Note that the <extrinsic_name>
need its fully qualified path, e.g. proposals_discussion::add_post
.
Currently the weight_coefficient
and the length_coefficient
is set to the same as the runtime.
Note: The output csv file already sums the EXTRINSIC_BASE_WEIGHT
to the weight column
main_notebook.ipynb