Browse Source

fee-analysis: update readme

conectado 3 years ago
parent
commit
0d29f2fc70
1 changed files with 58 additions and 3 deletions
  1. 58 3
      analyses/fee-analysis/README.md

+ 58 - 3
analyses/fee-analysis/README.md

@@ -6,7 +6,7 @@ This directory has a CLI to output the analysis of weights into a `CSV` and a mo
 
 ## Requirements
 
-* python3
+* python >= 3.9
 * (virtualenv)[https://pypi.org/project/virtualenv/]
 
 ## Steps to run
@@ -17,15 +17,70 @@ This directory has a CLI to output the analysis of weights into a `CSV` and a mo
 * a browser tab should launch with the files in this directory
 
 ## To run the CLI
+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 help
 
 You 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 `config.json` file in the `analysis_cli` there is configuration for said analysis. Such as specializing the
-parametrs and length for a given extrinsics, the coefficients, issuance and marke caps.
+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:
+
+```json
+{
+    "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