{ "cells": [ { "cell_type": "markdown", "id": "optimum-premiere", "metadata": {}, "source": [ "# Weight fee calculations\n", "\n", "## Functionality\n", "\n", "The main goal of this notebook is to be able to calculate the prices for different extrinsics given:\n", "* Weight coefficient: The coefficient that is used to calculate the token fee of an extrinsic given its weight\n", "* Length coefficient: The coefficient that is used to calculate the token fee of an extrinsic given its length\n", "* Max Market Cap: An estimation of the maximum possible initial market cap of the chain\n", "* Min Market Cap: An estimation of the minimum possible initial market cap of the chain\n", "* Issuance: The initial number of tokens in the chain\n", "\n", "We also define an **Attack Cost** the attack cost is just a measure of how much would it cost in cents to fully occupy every block for 24hrs.\n", "\n", "The formula used to calculate the token fee is:\n", "```\n", "fee = (extrinsic_weight + BASE_WEIGHT) * weight_coefficient + length_fee * fee_coefficient\n", "```\n", "(With the caveat of parameters and length assumed to be 0, explained further below)\n", "\n", "To calculate the price:\n", "```\n", "price = (MARKET_CAP / ISSUANCE) * fee \n", "```\n", "\n", "To calculate the **Attack Cost**:\n", "```\n", "attack_cost = (SECONDS_IN_DAY / BLOCK_DURATION(seconds) * MAX_BLOCK_LEGTH) * fee_coefficient\n", "```\n", "\n", "## How to use\n", "\n", "After running all cells in this notebook you will be presented with a dashboard.\n", "\n", "This dashboard has a table with the minimum price and maximum price for extrinsics for a given min and max market cap respectively.\n", "\n", "To chose what extrinsics are displayed modify the array `DISPLAY_EXTRINSICS` here(leave it empty to display every extrinsinc):\n", "\n", "**Note: that the extrinsic name is actually `::`**" ] }, { "cell_type": "code", "execution_count": 1, "id": "surrounded-husband", "metadata": {}, "outputs": [], "source": [ "RUNTIME_UPGRADE = \"pallet_codex::runtime_upgrade\"\n", "MIN_EXTRINSIC = \"min_extrinsic\"\n", "\n", "# This is an array of extrinsics to display if it is empty all extrinsics are displayed\n", "DISPLAY_EXTRINSICS = [\n", " \"pallet_balances::transfer\", \n", " RUNTIME_UPGRADE, \n", " \"working_group::add_worker\", \n", " \"referendum::vote\", \n", " \"proposals_discussion::add_post\",\n", " \"forum::add_post\",\n", " MIN_EXTRINSIC\n", "]" ] }, { "cell_type": "markdown", "id": "friendly-adoption", "metadata": {}, "source": [ "The extrinsic displayed in the dashboard by default are assumed to have a length of 0 and all the parameters set to 0.\n", "\n", "To change this you can set the `LENGTHS` dictionary here with key `` and value ``" ] }, { "cell_type": "code", "execution_count": 2, "id": "killing-glenn", "metadata": {}, "outputs": [], "source": [ "# Length is a dictionary with the lengths for the functions\n", "# if the length for a given extrinsic is not given 0 will be assumed\n", "LENGTHS = {\n", " RUNTIME_UPGRADE: 3_000_000\n", "}" ] }, { "cell_type": "markdown", "id": "conservative-transsexual", "metadata": {}, "source": [ "To set a value for a specific parameter use the `PARAMS` dictionary.\n", "\n", "each key is an `` name and the value is a dictionary with `: value`" ] }, { "cell_type": "code", "execution_count": 3, "id": "recognized-withdrawal", "metadata": {}, "outputs": [], "source": [ "# A dictionary with parameters for a given extrinsic if it's not given assumes 0\n", "# Note: if any param is provided all params must be provided\n", "PARAMS = {\n", " \"proposals_discussion::add_post\": {\n", " 'i': 3_000,\n", " }\n", "}" ] }, { "cell_type": "markdown", "id": "exact-psychiatry", "metadata": {}, "source": [ "Furthermore after the dashboard there is a dedicated section to customize the parameters/length for specific extrinsics that are worth looking at sparately." ] }, { "cell_type": "markdown", "id": "popular-relief", "metadata": {}, "source": [ "### Importing relevant modules" ] }, { "cell_type": "code", "execution_count": 4, "id": "grateful-iraqi", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import matplotlib as mpl\n", "from ipywidgets import *\n", "import numpy as np\n", "from math import ceil\n", "from scipy import optimize\n", "import pandas as pd\n", "%matplotlib notebook" ] }, { "cell_type": "markdown", "id": "powerful-church", "metadata": {}, "source": [ "### Parsing weight files\n", "\n", "This section parses the weight files in weights/ to have a dictionary with all possible extrinsic weight\n", "\n", "The dictionary have the following format\n", "\n", "```\n", "{\n", " extrinsic_name: {\n", " \"base_weight\": base_weight,\n", " \"db_reads\": {\n", " \"base\": base_weight,\n", " \"vars\": [db_vars]\n", " },\n", " \"db_writes\": {\n", " \"base\": base_weight,\n", " \"vars\": [db_vars]\n", " },\n", " \"vars\": vars\n", " }\n", "}\n", "```\n", "\n", "**Note:** the parsing is very specific for the generated weight files, this is very brittle. A future upgrade could be to use some kind of rust parser. " ] }, { "cell_type": "code", "execution_count": 5, "id": "imperial-headquarters", "metadata": {}, "outputs": [], "source": [ "import re\n", "from os import listdir\n", "\n", "import pathlib\n", "WEIGHTS_DIR = pathlib.Path().absolute().parent.parent / 'runtime' / 'src' / 'weights'\n", "\n", "BASE_WEIGHT = \"base_weight\"\n", "DB_READS = \"db_reads\"\n", "DB_WRITES = \"db_writes\"\n", "BASE_DB = \"base\"\n", "DB_VARS = \"vars\"\n", "TRANSFER = \"pallet_balances::transfer\"\n", "VARS = \"vars\"\n", "\n", "match_parenthesis = r'\\(.*'\n", "match_base_weight = r'\\(((\\d+_{0,1})+)'\n", "re_match_base_weight = re.compile(match_base_weight)\n", "match_db_ops_reads = r'DbWeight::get\\(\\).reads\\((\\d+) as Weight\\)'\n", "match_db_ops_writes = r'DbWeight::get\\(\\).writes\\((\\d+) as Weight\\)'\n", "re_match_db_ops_reads = re.compile(match_db_ops_reads)\n", "re_match_db_ops_writes = re.compile(match_db_ops_writes)\n", "match_scaling_var = r'\\((\\D) as Weight\\)'\n", "re_match_scaling_var = re.compile(match_scaling_var)\n", "\n", "weights = {}\n", "for file_name in listdir(WEIGHTS_DIR):\n", " with open(WEIGHTS_DIR / file_name) as f:\n", " start_reading = False\n", " reading_func = False\n", " function_name = \"\"\n", " weight = 0\n", " db_reads_base = 0\n", " db_reads = []\n", " db_writes_base = 0\n", " db_writes = []\n", " variables = []\n", " pallet_name = \"\"\n", " for line in f:\n", " words = line.strip().split(\" \")\n", " if words[0] == \"impl\":\n", " start_reading = True\n", " pallet_name = words[1].split(\"::\")[0]\n", "\n", " if reading_func:\n", " if reading_func and \"}\" in words:\n", " reading_func = False\n", " weights[function_name] = {\n", " BASE_WEIGHT: weight,\n", " DB_READS: {\n", " BASE_DB: db_reads_base,\n", " DB_VARS: db_reads\n", " },\n", " DB_WRITES: {\n", " BASE_DB: db_writes_base,\n", " DB_VARS: db_writes,\n", " },\n", " VARS: variables\n", " }\n", " weight = 0\n", " db_reads_base = 0\n", " db_writes_base = 0\n", " variables = []\n", " db_reads = []\n", " db_writes = []\n", "\n", " if \"DbWeight::get()\" in line:\n", " if \"reads\" in line:\n", " if re.search(re_match_scaling_var, line):\n", " var = re.search(\n", " re_match_scaling_var, line).group(1)\n", " weight_factor = re.search(\n", " re_match_base_weight, line).group(1)\n", " db_reads.append((var, int(weight_factor)))\n", " else:\n", " db_reads_base = int(\n", " re.search(re_match_db_ops_reads, line).group(1))\n", "\n", " if \"writes\" in line:\n", " if re.search(re_match_scaling_var, line):\n", " var = re.search(\n", " re_match_scaling_var, line).group(1)\n", " weight_factor = re.search(\n", " re_match_base_weight, line).group(1)\n", " db_writes.append((var, int(weight_factor)))\n", " else:\n", " db_writes_base = int(\n", " re.search(re_match_db_ops_writes, line).group(1))\n", " else:\n", " if re.match(re_match_base_weight, words[0]) is not None:\n", " match = re.match(re_match_base_weight, words[0])\n", " weight = int(match.group(1))\n", "\n", " if re.search(re_match_scaling_var, line):\n", " var = re.search(re_match_scaling_var, line).group(1)\n", " weight_factor = re.search(\n", " re_match_base_weight, line).group(1)\n", " variables.append((var, int(weight_factor)))\n", "\n", " if start_reading and words[0] == \"fn\":\n", " reading_func = True\n", " function_name = re.sub(match_parenthesis, '', words[1])\n", " function_name = pallet_name + \"::\" + function_name" ] }, { "cell_type": "markdown", "id": "certified-beauty", "metadata": {}, "source": [ "#### Additional weight dictionary configuration" ] }, { "cell_type": "code", "execution_count": 6, "id": "weird-trading", "metadata": {}, "outputs": [], "source": [ "# Constants for our runtime\n", "WEIGHT_PER_SECOND = 1_000_000_000_000;\n", "WEIGHT_PER_MILLIS = WEIGHT_PER_SECOND / 1000 # 1_000_000_000\n", "WEIGHT_PER_MICROS = WEIGHT_PER_MILLIS / 1000 # 1_000_000\n", "WEIGHT_PER_NANOS = WEIGHT_PER_MICROS / 1000 # 1_000\n", "MAX_BLOCK_LENGTH = 5 * 1024 * 1024\n", "MIN_EXTRINSIC_WEIGHT = 125 * WEIGHT_PER_MILLIS\n", "MAX_BLOCK_WEIGHT = 2 * 1_000_000_000_000\n", "\n", "\n", "weights[RUNTIME_UPGRADE] = {\n", " BASE_WEIGHT: MAX_BLOCK_WEIGHT,\n", " DB_READS: {\n", " BASE_DB: 0,\n", " DB_VARS: []\n", " },\n", " DB_WRITES: {\n", " BASE_DB: 0,\n", " DB_VARS: []\n", " },\n", " VARS: []\n", "}\n", "\n", "weights[MIN_EXTRINSIC] = {\n", " BASE_WEIGHT: 0,\n", " DB_READS: {\n", " BASE_DB: 0,\n", " DB_VARS: []\n", " },\n", " DB_WRITES: {\n", " BASE_DB: 0,\n", " DB_VARS: []\n", " },\n", " VARS: []\n", "}\n" ] }, { "cell_type": "markdown", "id": "strategic-ocean", "metadata": {}, "source": [ "### Constants & Defaults" ] }, { "cell_type": "code", "execution_count": 7, "id": "cultural-sunset", "metadata": {}, "outputs": [], "source": [ "# Weight of DB operations\n", "WRITE_WEIGHT = 100 * 1_000_000\n", "READ_WEIGHT = 25 * 1_000_000\n", "\n", "# Default values \n", "DEFAULT_ISSUANCE = 250_000_000\n", "DEFAULT_MIN_MARKET_CAP = 50 * 100 * 250 # cents\n", "DEFAULT_MAX_MARKET_CAP = 100 * 1_000_000_000\n", "\n", "# Constants for our runtime\n", "BLOCK_DURATION = 6\n", "SECONDS_IN_DAY = 24 * 60 * 60\n", "BLOCKS_PER_DAY = SECONDS_IN_DAY / BLOCK_DURATION\n", "EXTRINSIC_BASE_WEIGHT = 125 * WEIGHT_PER_MICROS\n", "\n", "# The targeted saturation for a block in the demand/price function\n", "TARGET_SATURATION = 0.25\n", "\n", "# Extrinsic used to adjust the price/demand function\n", "DEFAULT_TARGET_EXTRINSIC = TRANSFER" ] }, { "cell_type": "markdown", "id": "useful-costa", "metadata": {}, "source": [ "### Mapping functions" ] }, { "cell_type": "code", "execution_count": 8, "id": "ceramic-execution", "metadata": {}, "outputs": [], "source": [ "# Assume that weight to fee is proportional\n", "def weight_to_fee(weight, coeff):\n", " return coeff * weight\n", "\n", "def length_to_fee(length, coeff):\n", " return coeff * length\n", "\n", "def token_to_price(token, market_cap, issuance):\n", " return (market_cap / issuance) * token\n", "\n", "def price_to_token(price, market_cap, issuance):\n", " return (issuance / market_cap) * price\n", "\n", "def fee_to_coeff(fee, length):\n", " return fee / length\n", "\n", "def price_weight_function(x, weight_coefficient, market_cap, issuance): \n", " return token_to_price(weight_to_fee(x, weight_coefficient), market_cap, issuance)\n", "\n", "def price_length_function(x, length_coefficient, market_cap, issuance):\n", " return token_to_price(length_to_fee(x, length_coefficient), market_cap, issuance)" ] }, { "cell_type": "markdown", "id": "adopted-publicity", "metadata": {}, "source": [ "### Calculations" ] }, { "cell_type": "code", "execution_count": 9, "id": "loaded-toddler", "metadata": {}, "outputs": [], "source": [ "def print_var_err(var, extrn):\n", " print(\"WARNING: the parameter {} isn't defined in the calculation for extrinsic: {}\".format(var[0], extrn))\n", " \n", "def calc_vars_weight(weight, extrinsic, params):\n", " total = 0\n", " if extrinsic in params:\n", " for var in weight[VARS]:\n", " if var[0] in params[extrinsic]:\n", " total += params[extrinsic][var[0]] * var[1]\n", " else:\n", " print_var_err(var, extrinsic)\n", " for var in weight[DB_READS][DB_VARS]:\n", " if var[0] in params[extrinsic]:\n", " total += params[extrinsic][var[0]] * var[1] * READ_WEIGHT\n", " else:\n", " print_var_err(var, extrinsic)\n", " for var in weight[DB_WRITES][DB_VARS]:\n", " if var[0] in params[extrinsic]:\n", " total += params[extrinsic][var] * WRITE_WEIGHT\n", " else:\n", " print_var_err(var, extrinsic)\n", " return total\n", "\n", "def calc_weight(weight, extrinsic, params):\n", " vars_weight = calc_vars_weight(weight, extrinsic, params)\n", " return vars_weight + \\\n", " weight[BASE_WEIGHT] + \\\n", " weight[DB_READS][BASE_DB] * READ_WEIGHT + \\\n", " weight[DB_WRITES][BASE_DB] * WRITE_WEIGHT \n", "\n", "def calc_total_price_given_params(extrinsic, weight_coeff, market_cap, issuance, length_coeff, params, lengths):\n", " return price_weight_function(calc_weight(weights[extrinsic], extrinsic, params) \\\n", " + EXTRINSIC_BASE_WEIGHT, weight_coeff, market_cap, issuance) + \\\n", " price_length_function(lengths.get(extrinsic, 0), length_coeff, market_cap, issuance)\n", " \n", "def calc_total_fee(extrinsic, weight_coeff, length_coeff, params, lengths):\n", " return weight_to_fee(calc_weight(weights[extrinsic], extrinsic, params) + EXTRINSIC_BASE_WEIGHT, weight_coeff) + \\\n", " length_to_fee(lengths.get(extrinsic, 0), length_coeff)\n", "\n", "def calc_total_price(extrinsic, weight_coeff, market_cap, issuance, length_coeff):\n", " return calc_total_price_given_params(\n", " extrinsic, \n", " weight_coeff, \n", " market_cap, \n", " issuance, \n", " length_coeff, \n", " PARAMS, \n", " LENGTHS\n", " )\n", "\n", "def calc_attack_cost(length_coeff, market_cap, issuance):\n", " return token_to_price(\n", " length_to_fee(MAX_BLOCK_LENGTH, length_coeff) * BLOCKS_PER_DAY,\n", " market_cap,\n", " issuance\n", " )\n", "\n", "def calc_length_coeff(attack_cost, market_cap, issuance):\n", " tokens = price_to_token(attack_cost, market_cap, issuance)\n", " tokens_per_block = tokens / BLOCKS_PER_DAY\n", " return fee_to_coeff(tokens_per_block, MAX_BLOCK_LENGTH)\n", "\n", "def get_computed_values(\n", " extrinsic, \n", " weight_model, \n", " weight_coeff, \n", " min_market_cap, \n", " max_market_cap, \n", " issuance, \n", " length_coeff, \n", " params, \n", " lengths\n", "):\n", " weight = calc_weight(weight_model, extrinsic, params)\n", " tokens = calc_total_fee(extrinsic, weight_coeff, length_coeff, params, lengths)\n", " min_price = calc_total_price_given_params(\n", " extrinsic, \n", " weight_coeff, \n", " min_market_cap, \n", " issuance, \n", " length_coeff, \n", " params, \n", " lengths\n", " )\n", " max_price = calc_total_price_given_params(\n", " extrinsic, \n", " weight_coeff, \n", " max_market_cap, \n", " issuance, \n", " length_coeff, \n", " params, \n", " lengths\n", " )\n", " return weight, tokens, min_price, max_price \n", "\n", "def calc_all_price(weight_coeff, issuance, length_coeff, min_market_cap, max_market_cap):\n", " names = []\n", " computed_weights = []\n", " computed_tokens = []\n", " min_prices = []\n", " max_prices = []\n", " for (key, val) in weights.items():\n", " if not DISPLAY_EXTRINSICS or key in DISPLAY_EXTRINSICS:\n", " weight, tokens, min_price, max_price = get_computed_values(\n", " key, \n", " val, \n", " weight_coeff, \n", " min_market_cap, \n", " max_market_cap, \n", " issuance, \n", " length_coeff, \n", " PARAMS, \n", " LENGTHS\n", " )\n", " names.append(key)\n", " computed_weights.append(weight)\n", " min_prices.append(min_price / 100) # / 100 because we convert back to dollars\n", " max_prices.append(max_price / 100) # / 100 because we convert back to dollars\n", " computed_tokens.append(tokens)\n", " \n", " weight_table = {\n", " \"Extrinsic\": names, \n", " \"Weight\": computed_weights,\n", " \"Tokens(JOY)\": computed_tokens,\n", " \"Min Price(US$)\": min_prices,\n", " \"Max Price(US$)\": max_prices\n", " }\n", " df = pd.DataFrame(weight_table)\n", " \n", " return df, min_prices, max_prices" ] }, { "cell_type": "markdown", "id": "empirical-example", "metadata": {}, "source": [ "### Display functions" ] }, { "cell_type": "code", "execution_count": 10, "id": "involved-gateway", "metadata": {}, "outputs": [], "source": [ "def show_dashboard(extrinsic_name, params, length):\n", " def update(\n", " weight_coeff,\n", " min_market_cap,\n", " max_market_cap,\n", " issuance, \n", " length_coeff,\n", " ):\n", " params = { extrinsic_name: parameters }\n", " lengths = { extrinsic_name: length }\n", " weight, tokens, min_price, max_price = get_computed_values(\n", " extrinsic_name, \n", " weights[extrinsic_name], \n", " weight_coeff, \n", " min_market_cap, \n", " max_market_cap, \n", " issuance, \n", " length_coeff,\n", " params,\n", " lengths\n", " )\n", "\n", "\n", " weight_table = {\n", " \"Extrinsic\": [extrinsic_name], \n", " \"Weight\": [weight],\n", " \"Tokens(JOY)\": [tokens],\n", " \"Min Price(US$)\": [min_price / 100], # / 100 because we convert back to dollars\n", " \"Max Price(US$)\": [max_price / 100], # / 100 because we convert back to dollars\n", " }\n", "\n", " df = pd.DataFrame(weight_table)\n", " display(df.style.hide_index())\n", "\n", " w = interactive(\n", " update,\n", " weight_coeff=weight_coeff_widget,\n", " min_market_cap=min_market_cap_widget,\n", " max_market_cap=max_market_cap_widget,\n", " issuance=issuance_widget, \n", " length_coeff=length_coefficient_widget,\n", " watch_extrinsic=watch_extrinsic_widget\n", " )\n", "\n", " display(w)" ] }, { "cell_type": "markdown", "id": "martial-munich", "metadata": {}, "source": [ "### Widgets" ] }, { "cell_type": "code", "execution_count": 11, "id": "olive-relay", "metadata": {}, "outputs": [], "source": [ "weight_coeff_widget = FloatText(\n", " value=0.00001,\n", " step=0.00001,\n", " description='Weight Coefficient',\n", " disabled=False,\n", " layout=Layout(width='auto', max_width='500px')\n", ")\n", "\n", "attack_cost_widget = FloatText(\n", " value = calc_attack_cost(1, DEFAULT_MIN_MARKET_CAP, DEFAULT_ISSUANCE),\n", " description=\"Attack cost(¢)\",\n", ")\n", "\n", "min_market_cap_widget = IntText(\n", " value=DEFAULT_MIN_MARKET_CAP,\n", " description='Min Market Cap(¢)',\n", " disabled=False,\n", " layout=Layout(width='auto', max_width='500px')\n", ")\n", "\n", "max_market_cap_widget = IntText(\n", " value=DEFAULT_MAX_MARKET_CAP,\n", " description='Max Market Cap(¢)',\n", " disabled=False,\n", " layout=Layout(width='auto', max_width='500px')\n", ")\n", "\n", "issuance_widget = IntText(\n", " value=DEFAULT_ISSUANCE,\n", " description='Issuance',\n", " disabled=False,\n", " layout=Layout(width='auto', max_width='500px')\n", ")\n", "\n", "length_coefficient_widget = IntText(\n", " value=1,\n", " step=1,\n", " description='Length coefficient',\n", " disabled=False,\n", " layout=Layout(width='auto', max_width='500px')\n", ")\n", "\n", "target_extrinsic_widget = Dropdown(\n", " options=weights.keys(),\n", " value=DEFAULT_TARGET_EXTRINSIC,\n", " description='Target extrinsic',\n", " disabled=False,\n", " layout=Layout(width='auto', max_width='500px')\n", ")\n", "\n", "use_length_widget = Checkbox(\n", " value=False,\n", " description='Use length fee for coefficient calculation',\n", " disabled=False,\n", " layout=Layout(width='auto', max_width='500px')\n", ")\n", "\n", "watch_extrinsic_widget = Dropdown(\n", " options=weights.keys(),\n", " value=TRANSFER,\n", " description='Watching extrinsic',\n", " disabled=False,\n", " layout=Layout(width='auto', max_width='500px')\n", ")" ] }, { "cell_type": "markdown", "id": "supported-third", "metadata": {}, "source": [ "# Main functionality" ] }, { "cell_type": "markdown", "id": "collaborative-estimate", "metadata": {}, "source": [ "## Dashboard\n", "\n", "**Notes:**\n", "\n", "* Watch extrinsic is an extrinsic you want to obvserve the price particularly\n", "* If you manually set **Attack Cost** **Length coefficient** will change to comply if it is possible (In some cases it's not possible to comply exactly since length coefficient is an int, in that case closest value is used)\n", "* The histogram doesn't show the `runtime_upgrade` price because it's too high compared to all the rest" ] }, { "cell_type": "code", "execution_count": 12, "id": "random-nudist", "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pallet_balances::transfer min price: 0.15797450000000002 US$\n", "pallet_balances::transfer max price: 12637.96 US$\n" ] }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Extrinsic Weight Tokens(JOY) Min Price(US$) Max Price(US$)
forum::add_post96928700010942.8700000.54714443771.480000
pallet_balances::transfer1909490003159.4900000.15797512637.960000
proposals_discussion::add_post218518900023101.8900001.15509592407.560000
referendum::vote7182610008432.6100000.42163133730.440000
pallet_codex::runtime_upgrade200000000000023001250.0000001150.06250092005000.000000
min_extrinsic01250.0000000.0625005000.000000
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "138ef18bf6e742be9b1a53000989b841", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(HBox(children=(FloatText(value=1e-05, description='Weight Coefficient', layout=Layout(max_width…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plots setup\n", "plt.style.use('seaborn-whitegrid')\n", "fig, [min_plot_ax, max_plot_ax] = plt.subplots(1, 2, figsize=(9, 6))\n", "\n", "def update(\n", " weight_coeff,\n", " min_market_cap,\n", " max_market_cap,\n", " issuance, \n", " length_coeff,\n", " watch_extrinsic\n", "):\n", " # Clean the plots\n", " max_plot_ax.cla()\n", " min_plot_ax.cla()\n", " \n", " # Re-draw labels and titles\n", " min_plot_ax.set_title(\"Min Price histogram\")\n", " min_plot_ax.set_xlabel(\"Price(US$)\")\n", " min_plot_ax.set_ylabel(\"Ocurrences\")\n", " \n", " max_plot_ax.set_title(\"Max Price histogram\")\n", " max_plot_ax.set_xlabel(\"Price(US$)\")\n", " max_plot_ax.set_ylabel(\"Ocurrences\")\n", "\n", " \n", " watch_extrinsic_weight = calc_weight(weights[watch_extrinsic], watch_extrinsic, PARAMS)\n", " \n", " print(\n", " watch_extrinsic,\n", " \"min price: \",\n", " calc_total_price(watch_extrinsic, weight_coeff, min_market_cap, issuance, length_coeff) / 100,\n", " \"US$\"\n", " )\n", " \n", " print(\n", " watch_extrinsic,\n", " \"max price: \",\n", " calc_total_price(watch_extrinsic, weight_coeff, max_market_cap, issuance, length_coeff) / 100,\n", " \"US$\"\n", " )\n", " \n", " attack_cost_widget.value = calc_attack_cost(\n", " length_coeff, \n", " min_market_cap, \n", " issuance\n", " )\n", " \n", " df, min_prices, max_prices = calc_all_price(\n", " weight_coeff, \n", " issuance, \n", " length_coeff, \n", " min_market_cap, \n", " max_market_cap\n", " )\n", " \n", " # Display prices histogram\n", " # Note: we remove the max value because it hides any relevant statistics\n", " min_prices_hist = min_prices.copy()\n", " min_prices_hist.remove(max(min_prices_hist))\n", " min_plot_ax.hist(min_prices_hist, bins=100)\n", " \n", " max_prices_hist = max_prices.copy()\n", " max_prices_hist.remove(max(max_prices_hist))\n", " max_plot_ax.hist(max_prices_hist, bins=100)\n", " \n", " # Display weights for all extrinsics\n", " display(df.style.hide_index())\n", "\n", "# Widgets layout\n", " \n", "w = interactive(\n", " update,\n", " weight_coeff=weight_coeff_widget,\n", " min_market_cap=min_market_cap_widget,\n", " max_market_cap=max_market_cap_widget,\n", " issuance=issuance_widget, \n", " length_coeff=length_coefficient_widget,\n", " watch_extrinsic=watch_extrinsic_widget\n", ")\n", "\n", "w.update()\n", "\n", "def attack_cost_change_handler(change):\n", " if (abs(change.new - change.old) > 0.5):\n", " new_length_coeff = calc_length_coeff(\n", " int(change.new),\n", " min_market_cap_widget.value, \n", " issuance_widget.value\n", " )\n", " if (abs(new_length_coeff - length_coefficient_widget.value) > 1):\n", " length_coefficient_widget.value = new_length_coeff\n", "\n", "attack_cost_widget.observe(attack_cost_change_handler, names='value')\n", "\n", "VBox(\n", " [HBox([c for c in w.children[0:3]]),\n", " HBox([c for c in w.children[3:5]]), \n", " w.children[5], attack_cost_widget, \n", " w.children[-1]]\n", ")\n" ] }, { "cell_type": "markdown", "id": "polish-membership", "metadata": {}, "source": [ "# Specific extrinsic examination\n", "\n", "This section is reserved to explore the implication of different values for specific extrinsics after viewing the general trend in the dashboard abover.\n", "\n", "There is an example how to use it with `forum::add_post`, you just need to call `show_dashboard(extrinsic_name, params, lengths)` with:\n", "* `extrinsic_name`: The extrinsic name\n", "* `params`: a dict of `{: }`\n", "* `lengths`: an int representing the length of the whole extrinsic in bytes\n", "\n", "**Note:** To easily carry over the same values from the dashboard the widgets that `shod_dashboard` uses are the same as the one in the general dashboard, the values will therefore be the same." ] }, { "cell_type": "code", "execution_count": 13, "id": "aggregate-reasoning", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Extrinsic Weight Tokens(JOY) Min Price(US$) Max Price(US$)
forum::add_post38480741000386420.41000019.3210211545681.640000
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "EXTRINSIC_NAME = \"forum::add_post\"\n", "\n", "j = 20\n", "post = \"\"\"\n", " Lorem ipsum dolor sit amet, consectetur adipiscing elit. \n", " Sed sed lacus tellus. In est est, fermentum sed venenatis et, rutrum elementum ex. \n", " Nunc felis elit, vestibulum id nisl non, egestas porttitor ex. Quisque vel sagittis ligula. \n", " Sed consectetur pharetra mi, non luctus i cursus vitae. Morbi a ipsum at orci finibus.\n", " \"\"\"\n", "i = len(post)\n", "\n", "parameters = {\n", " \"j\": j,\n", " \"i\": i,\n", "}\n", "\n", "base_encoding_length = 20\n", "length = i + base_encoding_length\n", " \n", "show_dashboard(EXTRINSIC_NAME, parameters, length)" ] }, { "cell_type": "code", "execution_count": null, "id": "unlike-relay", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.1+" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "003eb9b6a5d54d8f83660bfab0f5ba1b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_0ca7156deb8440e2b6c231e106c950c7", "IPY_MODEL_1039dd7712f34ce1aaf9274a4917b80e" ], "layout": "IPY_MODEL_3afac2c3c8f44156b6e821f67a33a979" } }, "0847c849ec84488c9796789acd7b05d2": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "0956d6c4134648c4856d4bfea8c6b640": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "0ca7156deb8440e2b6c231e106c950c7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "bond", "bond_extra", "unbond", "withdraw_unbonded_update", "withdraw_unbonded_kill", "validate", "nominate", "chill", "set_payee", "set_controller", "set_validator_count", "force_no_eras", "force_new_era", "force_new_era_always", "set_invulnerables", "force_unstake", "cancel_deferred_slash", "payout_stakers_dead_controller", "payout_stakers_alive_staked", "rebond", "set_history_depth", "reap_stash", "new_era", "submit_solution_better", "create_category", "update_category_membership_of_moderator_new", "update_category_membership_of_moderator_old", "update_category_archival_status_lead", "update_category_archival_status_moderator", "delete_category_lead", "delete_category_moderator", "create_thread", "edit_thread_metadata", "update_thread_archival_status_lead", "update_thread_archival_status_moderator", "delete_thread_lead", "delete_thread_moderator", "move_thread_to_category_lead", "move_thread_to_category_moderator", "vote_on_poll", "moderate_thread_lead", "moderate_thread_moderator", "add_post", "react_post", "edit_post_text", "moderate_post_lead", "moderate_post_moderator", "set_stickied_threads_lead", "set_stickied_threads_moderator", "transfer", "transfer_keep_alive", "set_balance_creating", "set_balance_killing", "force_transfer", "remark", "set_heap_pages", "set_changes_trie_config", "set_storage", "kill_storage", "kill_prefix", "suicide", "buy_membership_without_referrer", "buy_membership_with_referrer", "update_profile", "update_accounts_none", "update_accounts_root", "update_accounts_controller", "update_accounts_both", "set_referral_cut", "transfer_invites", "invite_member", "set_membership_price", "update_profile_verification", "set_leader_invitation_quota", "set_initial_invitation_balance", "set_initial_invitation_count", "add_staking_account_candidate", "confirm_staking_account", "remove_staking_account", "update_post", "change_thread_mode", "execute_signal_proposal", "create_proposal_signal", "create_proposal_runtime_upgrade", "create_proposal_funding_request", "create_proposal_set_max_validator_count", "create_proposal_create_working_group_lead_opening", "create_proposal_fill_working_group_lead_opening", "create_proposal_update_working_group_budget", "create_proposal_decrease_working_group_lead_stake", "create_proposal_slash_working_group_lead", "create_proposal_set_working_group_lead_reward", "create_proposal_terminate_working_group_lead", "create_proposal_amend_constitution", "create_proposal_cancel_working_group_lead_opening", "create_proposal_set_membership_price", "create_proposal_set_council_budget_increment", "create_proposal_set_councilor_reward", "create_proposal_set_initial_invitation_balance", "create_proposal_set_initial_invitation_count", "create_proposal_set_membership_lead_invitation_quota", "create_proposal_set_referral_cut", "update_working_group_budget_positive_forum", "update_working_group_budget_negative_forum", "update_working_group_budget_positive_storage", "update_working_group_budget_negative_storage", "update_working_group_budget_positive_content", "update_working_group_budget_negative_content", "update_working_group_budget_positive_membership", "update_working_group_budget_negative_membership", "on_initialize_revealing", "on_initialize_voting", "vote", "reveal_vote_space_for_new_winner", "reveal_vote_space_not_in_winners", "reveal_vote_space_replace_last_winner", "reveal_vote_already_existing", "release_vote_stake", "amend_constitution", "set_keys", "purge_keys", "batch", "as_derivative", "cancel_proposal", "veto_proposal", "on_initialize_immediate_execution_decode_fails", "on_initialize_pending_execution_decode_fails", "on_initialize_approved_pending_constitutionality", "on_initialize_rejected", "on_initialize_slashed", "cancel_active_and_pending_proposals", "set_budget_increment", "set_councilor_reward", "funding_request", "try_process_budget", "try_progress_stage_idle", "try_progress_stage_announcing_start_election", "try_progress_stage_announcing_restart", "announce_candidacy", "release_candidacy_stake", "set_candidacy_note", "withdraw_candidacy", "set_budget", "plan_budget_refill", "on_initialize_leaving", "on_initialize_rewarding_with_missing_reward", "on_initialize_rewarding_with_missing_reward_cant_pay", "on_initialize_rewarding_without_missing_reward", "apply_on_opening", "fill_opening_lead", "fill_opening_worker", "update_role_account", "cancel_opening", "withdraw_application", "slash_stake", "terminate_role_worker", "terminate_role_lead", "increase_stake", "decrease_stake", "spend_from_budget", "update_reward_amount", "set_status_text", "update_reward_account", "add_opening", "leave_role_immediatly", "leave_role_later", "set", "on_finalize", "runtime_upgrade" ], "description": "Target extrinsic", "index": 49, "layout": "IPY_MODEL_1ebe89f30e4d4ae48fd119ef31525f35", "style": "IPY_MODEL_799504830ed54d758a0c52cd228cbf9a" } }, "0cbf052939c24862b9b4e178981e0a7e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "0cf0590a93434cd590eb7d5e8e1cf337": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_af1f17dcc75e45daa20abbc1537a70f4", "IPY_MODEL_9958b5ad666346bea8b170de1ae818ba", "IPY_MODEL_bce1dcd27f9843ac9e78c64b3d6fa0e2" ], "layout": "IPY_MODEL_cbcaec83731540d3a02373efeeba83c3" } }, "0e2cdb17e9394c19973ba71f4cd99022": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_af1f17dcc75e45daa20abbc1537a70f4", "IPY_MODEL_9958b5ad666346bea8b170de1ae818ba", "IPY_MODEL_bce1dcd27f9843ac9e78c64b3d6fa0e2", "IPY_MODEL_f2c5f8a79f05434d85d9ed7911823473", "IPY_MODEL_58f97a1f44bb4e04a1a6061559e5a034", "IPY_MODEL_729b7e208f9c49e985d85d97aadbe80f", "IPY_MODEL_f0150748376147c7a7f91cf93399fc8f", "IPY_MODEL_995aa93df1934a3ab5d1fec6afa16d48" ], "layout": "IPY_MODEL_65cde3d28d48481eb47897da8a88948e" } }, "1039dd7712f34ce1aaf9274a4917b80e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Length coefficient", "layout": "IPY_MODEL_8cfdbb097cd54d0886fd5b63c4c3b3ad", "max": 1000000, "style": "IPY_MODEL_5928eee1dad84f92b7826da5a4f0c8fd", "value": 5 } }, "13c37b5df6e445d3b1050d8c761e637c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedFloatTextModel", "state": { "description": "Demand coefficient", "layout": "IPY_MODEL_b939f297c8cf4a93a693dea2cab063de", "max": 1, "min": 0.0001, "step": 0.0001, "style": "IPY_MODEL_6e3307517116437988ab7598c4b41f69", "value": 0.0001 } }, "175d104e64d045e5a8a86dd22ef438dc": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "180b9d41753e4c848520b0426fa753f7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "1cdad32bceca45c9a845c1da93efd3d7": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "1d45272bd23f4862b37e5c4d70bb5b13": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "1ebe89f30e4d4ae48fd119ef31525f35": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "24fd8331de4946e1bf7703dc88a5acf6": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "262e5fd3502a4835816249948b832878": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "2bca6a7acec64d098829906e57ac2fa9": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "2c333fca6e0b456b99befaef2f87d0a6": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "2f900835b2954a4da6cfa0d8cb0bb3f7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "31bb90132ef3446da26b2e276f734e13": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "397a32069baa402bb0641bfdaa1c16d1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Issuance", "layout": "IPY_MODEL_8829ca7b65d44f91a0b545e1fc7b892c", "max": 250000000, "min": 1, "step": 250000, "style": "IPY_MODEL_8bbf982100d94efaaec8dda28eb0d311", "value": 250001 } }, "3a24ce1aef974db6a5086a96770d66a6": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "3afac2c3c8f44156b6e821f67a33a979": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "3b5bf91d06bb47cebddfa5021d66246d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Issuance", "layout": "IPY_MODEL_a6d7dac59c1c47a69cd12fccc146a840", "max": 250000000, "min": 1, "step": 250000, "style": "IPY_MODEL_45a11f4e495f4698a4ca19bafc8406d6", "value": 250001 } }, "3cbe6e58033f4837938fe5c13ed2bc6f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_f2c5f8a79f05434d85d9ed7911823473", "IPY_MODEL_58f97a1f44bb4e04a1a6061559e5a034" ], "layout": "IPY_MODEL_898065250ae844ad84954461122efde5" } }, "3d83562a972c4017a14f086288155e67": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "bond", "bond_extra", "unbond", "withdraw_unbonded_update", "withdraw_unbonded_kill", "validate", "nominate", "chill", "set_payee", "set_controller", "set_validator_count", "force_no_eras", "force_new_era", "force_new_era_always", "set_invulnerables", "force_unstake", "cancel_deferred_slash", "payout_stakers_dead_controller", "payout_stakers_alive_staked", "rebond", "set_history_depth", "reap_stash", "new_era", "submit_solution_better", "create_category", "update_category_membership_of_moderator_new", "update_category_membership_of_moderator_old", "update_category_archival_status_lead", "update_category_archival_status_moderator", "delete_category_lead", "delete_category_moderator", "create_thread", "edit_thread_metadata", "update_thread_archival_status_lead", "update_thread_archival_status_moderator", "delete_thread_lead", "delete_thread_moderator", "move_thread_to_category_lead", "move_thread_to_category_moderator", "vote_on_poll", "moderate_thread_lead", "moderate_thread_moderator", "add_post", "react_post", "edit_post_text", "moderate_post_lead", "moderate_post_moderator", "set_stickied_threads_lead", "set_stickied_threads_moderator", "transfer", "transfer_keep_alive", "set_balance_creating", "set_balance_killing", "force_transfer", "remark", "set_heap_pages", "set_changes_trie_config", "set_storage", "kill_storage", "kill_prefix", "suicide", "buy_membership_without_referrer", "buy_membership_with_referrer", "update_profile", "update_accounts_none", "update_accounts_root", "update_accounts_controller", "update_accounts_both", "set_referral_cut", "transfer_invites", "invite_member", "set_membership_price", "update_profile_verification", "set_leader_invitation_quota", "set_initial_invitation_balance", "set_initial_invitation_count", "add_staking_account_candidate", "confirm_staking_account", "remove_staking_account", "update_post", "change_thread_mode", "execute_signal_proposal", "create_proposal_signal", "create_proposal_runtime_upgrade", "create_proposal_funding_request", "create_proposal_set_max_validator_count", "create_proposal_create_working_group_lead_opening", "create_proposal_fill_working_group_lead_opening", "create_proposal_update_working_group_budget", "create_proposal_decrease_working_group_lead_stake", "create_proposal_slash_working_group_lead", "create_proposal_set_working_group_lead_reward", "create_proposal_terminate_working_group_lead", "create_proposal_amend_constitution", "create_proposal_cancel_working_group_lead_opening", "create_proposal_set_membership_price", "create_proposal_set_council_budget_increment", "create_proposal_set_councilor_reward", "create_proposal_set_initial_invitation_balance", "create_proposal_set_initial_invitation_count", "create_proposal_set_membership_lead_invitation_quota", "create_proposal_set_referral_cut", "update_working_group_budget_positive_forum", "update_working_group_budget_negative_forum", "update_working_group_budget_positive_storage", "update_working_group_budget_negative_storage", "update_working_group_budget_positive_content", "update_working_group_budget_negative_content", "update_working_group_budget_positive_membership", "update_working_group_budget_negative_membership", "on_initialize_revealing", "on_initialize_voting", "vote", "reveal_vote_space_for_new_winner", "reveal_vote_space_not_in_winners", "reveal_vote_space_replace_last_winner", "reveal_vote_already_existing", "release_vote_stake", "amend_constitution", "set_keys", "purge_keys", "batch", "as_derivative", "cancel_proposal", "veto_proposal", "on_initialize_immediate_execution_decode_fails", "on_initialize_pending_execution_decode_fails", "on_initialize_approved_pending_constitutionality", "on_initialize_rejected", "on_initialize_slashed", "cancel_active_and_pending_proposals", "set_budget_increment", "set_councilor_reward", "funding_request", "try_process_budget", "try_progress_stage_idle", "try_progress_stage_announcing_start_election", "try_progress_stage_announcing_restart", "announce_candidacy", "release_candidacy_stake", "set_candidacy_note", "withdraw_candidacy", "set_budget", "plan_budget_refill", "on_initialize_leaving", "on_initialize_rewarding_with_missing_reward", "on_initialize_rewarding_with_missing_reward_cant_pay", "on_initialize_rewarding_without_missing_reward", "apply_on_opening", "fill_opening_lead", "fill_opening_worker", "update_role_account", "cancel_opening", "withdraw_application", "slash_stake", "terminate_role_worker", "terminate_role_lead", "increase_stake", "decrease_stake", "spend_from_budget", "update_reward_amount", "set_status_text", "update_reward_account", "add_opening", "leave_role_immediatly", "leave_role_later", "set", "on_finalize", "runtime_upgrade" ], "description": "Target extrinsic", "index": 49, "layout": "IPY_MODEL_7ef23fd2f93440b9b59ddcec53f817c5", "style": "IPY_MODEL_cc1e1a78f683468a8fa626919b733700" } }, "3f12ee3f90214da78780cbdceb0fd942": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "40c76280ffcd4a56be8f2026452bc728": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "4139e5140ba84034a95f13dd88aa89f0": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "426c2c8907ab40cbbf149b4a69280acf": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Length coefficient", "layout": "IPY_MODEL_262e5fd3502a4835816249948b832878", "max": 1000000, "style": "IPY_MODEL_8d2fbd12672249959454cb23d2c02c39", "value": 1 } }, "440eadfe341b4feb9d7083eafa553ccc": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "443204cd2f6d40be8d4c059a399de8cb": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "451d01233317457899f18a255eadefd8": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "45699cebf36d4793b689944ef8d0277a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_3d83562a972c4017a14f086288155e67", "IPY_MODEL_4573a5c800df4af3b31febd4aa004e5f" ], "layout": "IPY_MODEL_753b815055ea4733b53a259a238e45cd" } }, "4573a5c800df4af3b31febd4aa004e5f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Length coefficient", "layout": "IPY_MODEL_451d01233317457899f18a255eadefd8", "max": 1000000, "style": "IPY_MODEL_e85dc68e925c4cdc90c521f8242f6ec3", "value": 1 } }, "45a11f4e495f4698a4ca19bafc8406d6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "4664eee52cb3489dae1fc008a7d0ca4d": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "470b6be2ac3e4ca78a56421bc8767ba8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "CheckboxModel", "state": { "description": "Use length fee for coefficient calculation", "disabled": false, "layout": "IPY_MODEL_fa120f4150b14da183ddfeedcfb3228d", "style": "IPY_MODEL_31bb90132ef3446da26b2e276f734e13", "value": false } }, "487ad53c560a4647bab31831da807ae0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_66ba302994c44f34ac8050647b184e36", "IPY_MODEL_bd7a55cdcb7748db82906246fff10026", "IPY_MODEL_3b5bf91d06bb47cebddfa5021d66246d", "IPY_MODEL_fdd94f47ebfa44fdac5f0d63f3ed4a1e", "IPY_MODEL_426c2c8907ab40cbbf149b4a69280acf", "IPY_MODEL_6197de8abd074d53a5a9f5d119c0acc1", "IPY_MODEL_92f1ea902d644c4385e67dd4786bac32", "IPY_MODEL_7e79364010f345c5baac4b0f972333fe" ], "layout": "IPY_MODEL_af65717dde89411ab5870d6e1b29c10e" } }, "48fba1f623df43e0a4efbb97c072ce44": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "4b84ff880b1b40a09242d47fd202430a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_620601bf77c84914a4ec7da3f9f51ca2", "IPY_MODEL_f83eccdf49a54bbf9de447f7b7b1a876", "IPY_MODEL_6197de8abd074d53a5a9f5d119c0acc1", "IPY_MODEL_92f1ea902d644c4385e67dd4786bac32", "IPY_MODEL_7e79364010f345c5baac4b0f972333fe" ], "layout": "IPY_MODEL_bd1f6400580841be930256616fb568d9" } }, "4f3e4c1ea4af4b4a9fbb2fa0117944b7": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "519d24c1a7b8408aa8da8a58d99ae0aa": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "51aaec4068a544098fbc91e200c7fee5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "bond", "bond_extra", "unbond", "withdraw_unbonded_update", "withdraw_unbonded_kill", "validate", "nominate", "chill", "set_payee", "set_controller", "set_validator_count", "force_no_eras", "force_new_era", "force_new_era_always", "set_invulnerables", "force_unstake", "cancel_deferred_slash", "payout_stakers_dead_controller", "payout_stakers_alive_staked", "rebond", "set_history_depth", "reap_stash", "new_era", "submit_solution_better", "create_category", "update_category_membership_of_moderator_new", "update_category_membership_of_moderator_old", "update_category_archival_status_lead", "update_category_archival_status_moderator", "delete_category_lead", "delete_category_moderator", "create_thread", "edit_thread_metadata", "update_thread_archival_status_lead", "update_thread_archival_status_moderator", "delete_thread_lead", "delete_thread_moderator", "move_thread_to_category_lead", "move_thread_to_category_moderator", "vote_on_poll", "moderate_thread_lead", "moderate_thread_moderator", "add_post", "react_post", "edit_post_text", "moderate_post_lead", "moderate_post_moderator", "set_stickied_threads_lead", "set_stickied_threads_moderator", "transfer", "transfer_keep_alive", "set_balance_creating", "set_balance_killing", "force_transfer", "remark", "set_heap_pages", "set_changes_trie_config", "set_storage", "kill_storage", "kill_prefix", "suicide", "buy_membership_without_referrer", "buy_membership_with_referrer", "update_profile", "update_accounts_none", "update_accounts_root", "update_accounts_controller", "update_accounts_both", "set_referral_cut", "transfer_invites", "invite_member", "set_membership_price", "update_profile_verification", "set_leader_invitation_quota", "set_initial_invitation_balance", "set_initial_invitation_count", "add_staking_account_candidate", "confirm_staking_account", "remove_staking_account", "update_post", "change_thread_mode", "execute_signal_proposal", "create_proposal_signal", "create_proposal_runtime_upgrade", "create_proposal_funding_request", "create_proposal_set_max_validator_count", "create_proposal_create_working_group_lead_opening", "create_proposal_fill_working_group_lead_opening", "create_proposal_update_working_group_budget", "create_proposal_decrease_working_group_lead_stake", "create_proposal_slash_working_group_lead", "create_proposal_set_working_group_lead_reward", "create_proposal_terminate_working_group_lead", "create_proposal_amend_constitution", "create_proposal_cancel_working_group_lead_opening", "create_proposal_set_membership_price", "create_proposal_set_council_budget_increment", "create_proposal_set_councilor_reward", "create_proposal_set_initial_invitation_balance", "create_proposal_set_initial_invitation_count", "create_proposal_set_membership_lead_invitation_quota", "create_proposal_set_referral_cut", "update_working_group_budget_positive_forum", "update_working_group_budget_negative_forum", "update_working_group_budget_positive_storage", "update_working_group_budget_negative_storage", "update_working_group_budget_positive_content", "update_working_group_budget_negative_content", "update_working_group_budget_positive_membership", "update_working_group_budget_negative_membership", "on_initialize_revealing", "on_initialize_voting", "vote", "reveal_vote_space_for_new_winner", "reveal_vote_space_not_in_winners", "reveal_vote_space_replace_last_winner", "reveal_vote_already_existing", "release_vote_stake", "amend_constitution", "set_keys", "purge_keys", "batch", "as_derivative", "cancel_proposal", "veto_proposal", "on_initialize_immediate_execution_decode_fails", "on_initialize_pending_execution_decode_fails", "on_initialize_approved_pending_constitutionality", "on_initialize_rejected", "on_initialize_slashed", "cancel_active_and_pending_proposals", "set_budget_increment", "set_councilor_reward", "funding_request", "try_process_budget", "try_progress_stage_idle", "try_progress_stage_announcing_start_election", "try_progress_stage_announcing_restart", "announce_candidacy", "release_candidacy_stake", "set_candidacy_note", "withdraw_candidacy", "set_budget", "plan_budget_refill", "on_initialize_leaving", "on_initialize_rewarding_with_missing_reward", "on_initialize_rewarding_with_missing_reward_cant_pay", "on_initialize_rewarding_without_missing_reward", "apply_on_opening", "fill_opening_lead", "fill_opening_worker", "update_role_account", "cancel_opening", "withdraw_application", "slash_stake", "terminate_role_worker", "terminate_role_lead", "increase_stake", "decrease_stake", "spend_from_budget", "update_reward_amount", "set_status_text", "update_reward_account", "add_opening", "leave_role_immediatly", "leave_role_later", "set", "on_finalize", "runtime_upgrade" ], "description": "Watching extrinsic", "index": 49, "layout": "IPY_MODEL_547ee8b571934e1f8036f14d91426f83", "style": "IPY_MODEL_92496737e04e49a6aa874ef2e6ee2852" } }, "547ee8b571934e1f8036f14d91426f83": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "5501998a18f141e89dad139f3e54056d": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "5782a0e5518145df87fe210e9e3fa5b9": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "58f97a1f44bb4e04a1a6061559e5a034": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Length coefficient", "layout": "IPY_MODEL_4f3e4c1ea4af4b4a9fbb2fa0117944b7", "max": 1000000, "style": "IPY_MODEL_902f5ff778e94fe49663dd0277da8615", "value": 1 } }, "5928eee1dad84f92b7826da5a4f0c8fd": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "596f2f1877f1468ca0416c9f19304fec": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "5ef2ea3359b547bca7bdf5997f7c6f90": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "5f59ede5aa6549c5afe0b96cf8617916": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedFloatTextModel", "state": { "description": "Demand coefficient", "layout": "IPY_MODEL_1cdad32bceca45c9a845c1da93efd3d7", "max": 1, "min": 0.0001, "step": 0.0001, "style": "IPY_MODEL_519d24c1a7b8408aa8da8a58d99ae0aa", "value": 0.0001 } }, "612b41e6b3cb400e86ae256b70f458c1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "614fa03dbe2146569ed5e33a95f308f2": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "6197de8abd074d53a5a9f5d119c0acc1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "CheckboxModel", "state": { "description": "Use length fee for coefficient calculation", "disabled": false, "layout": "IPY_MODEL_614fa03dbe2146569ed5e33a95f308f2", "style": "IPY_MODEL_84670891d07543aaba406021da5636c8", "value": false } }, "620601bf77c84914a4ec7da3f9f51ca2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_66ba302994c44f34ac8050647b184e36", "IPY_MODEL_bd7a55cdcb7748db82906246fff10026", "IPY_MODEL_3b5bf91d06bb47cebddfa5021d66246d" ], "layout": "IPY_MODEL_cf38de3de20a4d2e8c30cad231f31d98" } }, "642b040363cd4b5d8b1a20b45efa34c8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Market Cap(¢)", "layout": "IPY_MODEL_c23a3cc9dd564be7abe66ab89febff08", "max": 1250000, "min": 1, "step": 1250, "style": "IPY_MODEL_8a17db0ed8e64c0d9154c64493058e8e", "value": 1251 } }, "65cde3d28d48481eb47897da8a88948e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "66730c7dcc0249579453de10278ce7f6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "66ba302994c44f34ac8050647b184e36": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedFloatTextModel", "state": { "description": "Demand coefficient", "layout": "IPY_MODEL_f3e35e1d6419451e82d74772df14afab", "max": 1, "min": 0.0001, "step": 0.0001, "style": "IPY_MODEL_7caa3a84960e484db599ce796c864409", "value": 0.0001 } }, "6a1e7b5f3cdd451299d18abaf3b87a8f": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "6add2c4dc8ec4d478d81db8d0d51298a": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_4139e5140ba84034a95f13dd88aa89f0", "outputs": [ { "name": "stdout", "output_type": "stream", "text": "Weight coefficient: 9.819415131789119e-08\ntransfer weight: 190949000\ntransfer price: 0.09382500000000003 US$\ntransfer price: 0.09382500000000003 US$\n" }, { "data": { "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Extrinsic Weight Price(US$)
add_postadd_post0.010737
transfertransfer0.000938
votevote0.003859
runtime_upgraderuntime_upgrade159.946631
", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "6d96e85b0ab0453483261b4bef832d78": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "6ddb1d1959db4611a6f4fb639f6ba13a": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "6e3307517116437988ab7598c4b41f69": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "6fa2f570197f4a3bbb2c286faa1d61b8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "729b7e208f9c49e985d85d97aadbe80f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "CheckboxModel", "state": { "description": "Use length fee for coefficient calculation", "disabled": false, "layout": "IPY_MODEL_8acda987a90c4e3e9601146e3bc90ec5", "style": "IPY_MODEL_da664df26532430785a0064040515ddc", "value": false } }, "753b815055ea4733b53a259a238e45cd": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "7555b73bf58042b0b46e95f07c67d5fc": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "7754b63cdd394b9eb31c601b6c6a86e4": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "78c7fcbe58394e25aa39bbed156cfa4f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "79148d4d52364ab2bf1fd66e2f35634b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "799504830ed54d758a0c52cd228cbf9a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "79f90805fb4b44689d363205c99da8de": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "7caa3a84960e484db599ce796c864409": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "7cf969355394496da75b563083e8918b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "7e79364010f345c5baac4b0f972333fe": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_7754b63cdd394b9eb31c601b6c6a86e4", "outputs": [ { "ename": "NameError", "evalue": "name 'x' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m~/Repos/branches/olympia/fee-analysis/.venv-test/lib/python3.9/site-packages/ipywidgets/widgets/interaction.py\u001b[0m in \u001b[0;36mupdate\u001b[0;34m(self, *args)\u001b[0m\n\u001b[1;32m 254\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mwidget\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_interact_value\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 255\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mwidget\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_kwarg\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 256\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 257\u001b[0m \u001b[0mshow_inline_matplotlib_plots\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 258\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_display\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36mupdate\u001b[0;34m(demand_coeff, market_cap, issuance, target_extrinsic, length_coeff, use_length, watch_extrinsic)\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0mtarget_extrinsic_weight\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcalc_weight\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mweights\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtarget_extrinsic\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_extrinsic\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 30\u001b[0;31m weight_coeff = plot_price_to_demand(\n\u001b[0m\u001b[1;32m 31\u001b[0m \u001b[0mdemand_coeff\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 32\u001b[0m \u001b[0mmarket_cap\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36mplot_price_to_demand\u001b[0;34m(demand_coeff, market_cap, issuance, target_extrinsic_weight, fig, ax, length, length_coeff)\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mplot_price_to_demand\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdemand_coeff\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmarket_cap\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0missuance\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_extrinsic_weight\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlength\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlength_coeff\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0ml\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ml\u001b[0m \u001b[0;32min\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlines\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdemand_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdemand_coeff\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmarket_cap\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'C0'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mweight_coeff\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcalculate_weight_coeff\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdemand_coeff\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmarket_cap\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0missuance\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_extrinsic_weight\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlength\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlength_coeff\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mideal_price\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minvert_demand\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0.25\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdemand_coeff\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmarket_cap\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mNameError\u001b[0m: name 'x' is not defined" ] } ] } }, "7ef23fd2f93440b9b59ddcec53f817c5": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "8235c5b7b62f44c48d6702b631fae408": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "82421d9b1ab646beabe4ddb7b8dcf806": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "836b9af942b547d6855ac2af3f946c2d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "CheckboxModel", "state": { "description": "Use length fee for coefficient calculation", "disabled": false, "layout": "IPY_MODEL_fb5dc88c66f748799b212348808b9493", "style": "IPY_MODEL_cedea8d813584f2abfca5fb1e648a780", "value": false } }, "841f13e4ada64571914e1162c4bd39c2": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "84670891d07543aaba406021da5636c8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "84b3cc654e224484bfac3920fed8dda0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_5f59ede5aa6549c5afe0b96cf8617916", "IPY_MODEL_e5b7faf90fb748c7a5dcdbdefdc99d10", "IPY_MODEL_8e064d549fc4403088e955adeb1ffc0e" ], "layout": "IPY_MODEL_a9cf184c044a4acba0edeea5c70d062d" } }, "86d7831e1d0a42e78d43c605530b0778": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "bond", "bond_extra", "unbond", "withdraw_unbonded_update", "withdraw_unbonded_kill", "validate", "nominate", "chill", "set_payee", "set_controller", "set_validator_count", "force_no_eras", "force_new_era", "force_new_era_always", "set_invulnerables", "force_unstake", "cancel_deferred_slash", "payout_stakers_dead_controller", "payout_stakers_alive_staked", "rebond", "set_history_depth", "reap_stash", "new_era", "submit_solution_better", "create_category", "update_category_membership_of_moderator_new", "update_category_membership_of_moderator_old", "update_category_archival_status_lead", "update_category_archival_status_moderator", "delete_category_lead", "delete_category_moderator", "create_thread", "edit_thread_metadata", "update_thread_archival_status_lead", "update_thread_archival_status_moderator", "delete_thread_lead", "delete_thread_moderator", "move_thread_to_category_lead", "move_thread_to_category_moderator", "vote_on_poll", "moderate_thread_lead", "moderate_thread_moderator", "add_post", "react_post", "edit_post_text", "moderate_post_lead", "moderate_post_moderator", "set_stickied_threads_lead", "set_stickied_threads_moderator", "transfer", "transfer_keep_alive", "set_balance_creating", "set_balance_killing", "force_transfer", "remark", "set_heap_pages", "set_changes_trie_config", "set_storage", "kill_storage", "kill_prefix", "suicide", "buy_membership_without_referrer", "buy_membership_with_referrer", "update_profile", "update_accounts_none", "update_accounts_root", "update_accounts_controller", "update_accounts_both", "set_referral_cut", "transfer_invites", "invite_member", "set_membership_price", "update_profile_verification", "set_leader_invitation_quota", "set_initial_invitation_balance", "set_initial_invitation_count", "add_staking_account_candidate", "confirm_staking_account", "remove_staking_account", "update_post", "change_thread_mode", "execute_signal_proposal", "create_proposal_signal", "create_proposal_runtime_upgrade", "create_proposal_funding_request", "create_proposal_set_max_validator_count", "create_proposal_create_working_group_lead_opening", "create_proposal_fill_working_group_lead_opening", "create_proposal_update_working_group_budget", "create_proposal_decrease_working_group_lead_stake", "create_proposal_slash_working_group_lead", "create_proposal_set_working_group_lead_reward", "create_proposal_terminate_working_group_lead", "create_proposal_amend_constitution", "create_proposal_cancel_working_group_lead_opening", "create_proposal_set_membership_price", "create_proposal_set_council_budget_increment", "create_proposal_set_councilor_reward", "create_proposal_set_initial_invitation_balance", "create_proposal_set_initial_invitation_count", "create_proposal_set_membership_lead_invitation_quota", "create_proposal_set_referral_cut", "update_working_group_budget_positive_forum", "update_working_group_budget_negative_forum", "update_working_group_budget_positive_storage", "update_working_group_budget_negative_storage", "update_working_group_budget_positive_content", "update_working_group_budget_negative_content", "update_working_group_budget_positive_membership", "update_working_group_budget_negative_membership", "on_initialize_revealing", "on_initialize_voting", "vote", "reveal_vote_space_for_new_winner", "reveal_vote_space_not_in_winners", "reveal_vote_space_replace_last_winner", "reveal_vote_already_existing", "release_vote_stake", "amend_constitution", "set_keys", "purge_keys", "batch", "as_derivative", "cancel_proposal", "veto_proposal", "on_initialize_immediate_execution_decode_fails", "on_initialize_pending_execution_decode_fails", "on_initialize_approved_pending_constitutionality", "on_initialize_rejected", "on_initialize_slashed", "cancel_active_and_pending_proposals", "set_budget_increment", "set_councilor_reward", "funding_request", "try_process_budget", "try_progress_stage_idle", "try_progress_stage_announcing_start_election", "try_progress_stage_announcing_restart", "announce_candidacy", "release_candidacy_stake", "set_candidacy_note", "withdraw_candidacy", "set_budget", "plan_budget_refill", "on_initialize_leaving", "on_initialize_rewarding_with_missing_reward", "on_initialize_rewarding_with_missing_reward_cant_pay", "on_initialize_rewarding_without_missing_reward", "apply_on_opening", "fill_opening_lead", "fill_opening_worker", "update_role_account", "cancel_opening", "withdraw_application", "slash_stake", "terminate_role_worker", "terminate_role_lead", "increase_stake", "decrease_stake", "spend_from_budget", "update_reward_amount", "set_status_text", "update_reward_account", "add_opening", "leave_role_immediatly", "leave_role_later", "set", "on_finalize", "runtime_upgrade" ], "description": "Target extrinsic", "index": 49, "layout": "IPY_MODEL_7555b73bf58042b0b46e95f07c67d5fc", "style": "IPY_MODEL_7cf969355394496da75b563083e8918b" } }, "8829ca7b65d44f91a0b545e1fc7b892c": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "898065250ae844ad84954461122efde5": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "8a17db0ed8e64c0d9154c64493058e8e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "8acda987a90c4e3e9601146e3bc90ec5": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "8bbf982100d94efaaec8dda28eb0d311": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "8cfdbb097cd54d0886fd5b63c4c3b3ad": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "8d2fbd12672249959454cb23d2c02c39": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "8e064d549fc4403088e955adeb1ffc0e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Issuance", "layout": "IPY_MODEL_ce639043bc884b1c971bcc7ad30e4c03", "max": 250000000, "min": 1, "step": 250000, "style": "IPY_MODEL_40c76280ffcd4a56be8f2026452bc728", "value": 250001 } }, "902f5ff778e94fe49663dd0277da8615": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "909de0ae89de4f3db16ea8c21c8e9948": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_13c37b5df6e445d3b1050d8c761e637c", "IPY_MODEL_642b040363cd4b5d8b1a20b45efa34c8", "IPY_MODEL_95e1b3fb867a49ecb22aabc337d805e1", "IPY_MODEL_86d7831e1d0a42e78d43c605530b0778", "IPY_MODEL_e7c863aa0429418abd3c1b648762bf19", "IPY_MODEL_b3ecca3fe3f2478db2e5725238950a77", "IPY_MODEL_d9d6c7f6769747e09e7b31bee839373a", "IPY_MODEL_6add2c4dc8ec4d478d81db8d0d51298a" ], "layout": "IPY_MODEL_841f13e4ada64571914e1162c4bd39c2" } }, "92496737e04e49a6aa874ef2e6ee2852": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "92a6f2c863f345478f733fb3d70930b3": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "92f1ea902d644c4385e67dd4786bac32": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "bond", "bond_extra", "unbond", "withdraw_unbonded_update", "withdraw_unbonded_kill", "validate", "nominate", "chill", "set_payee", "set_controller", "set_validator_count", "force_no_eras", "force_new_era", "force_new_era_always", "set_invulnerables", "force_unstake", "cancel_deferred_slash", "payout_stakers_dead_controller", "payout_stakers_alive_staked", "rebond", "set_history_depth", "reap_stash", "new_era", "submit_solution_better", "create_category", "update_category_membership_of_moderator_new", "update_category_membership_of_moderator_old", "update_category_archival_status_lead", "update_category_archival_status_moderator", "delete_category_lead", "delete_category_moderator", "create_thread", "edit_thread_metadata", "update_thread_archival_status_lead", "update_thread_archival_status_moderator", "delete_thread_lead", "delete_thread_moderator", "move_thread_to_category_lead", "move_thread_to_category_moderator", "vote_on_poll", "moderate_thread_lead", "moderate_thread_moderator", "add_post", "react_post", "edit_post_text", "moderate_post_lead", "moderate_post_moderator", "set_stickied_threads_lead", "set_stickied_threads_moderator", "transfer", "transfer_keep_alive", "set_balance_creating", "set_balance_killing", "force_transfer", "remark", "set_heap_pages", "set_changes_trie_config", "set_storage", "kill_storage", "kill_prefix", "suicide", "buy_membership_without_referrer", "buy_membership_with_referrer", "update_profile", "update_accounts_none", "update_accounts_root", "update_accounts_controller", "update_accounts_both", "set_referral_cut", "transfer_invites", "invite_member", "set_membership_price", "update_profile_verification", "set_leader_invitation_quota", "set_initial_invitation_balance", "set_initial_invitation_count", "add_staking_account_candidate", "confirm_staking_account", "remove_staking_account", "update_post", "change_thread_mode", "execute_signal_proposal", "create_proposal_signal", "create_proposal_runtime_upgrade", "create_proposal_funding_request", "create_proposal_set_max_validator_count", "create_proposal_create_working_group_lead_opening", "create_proposal_fill_working_group_lead_opening", "create_proposal_update_working_group_budget", "create_proposal_decrease_working_group_lead_stake", "create_proposal_slash_working_group_lead", "create_proposal_set_working_group_lead_reward", "create_proposal_terminate_working_group_lead", "create_proposal_amend_constitution", "create_proposal_cancel_working_group_lead_opening", "create_proposal_set_membership_price", "create_proposal_set_council_budget_increment", "create_proposal_set_councilor_reward", "create_proposal_set_initial_invitation_balance", "create_proposal_set_initial_invitation_count", "create_proposal_set_membership_lead_invitation_quota", "create_proposal_set_referral_cut", "update_working_group_budget_positive_forum", "update_working_group_budget_negative_forum", "update_working_group_budget_positive_storage", "update_working_group_budget_negative_storage", "update_working_group_budget_positive_content", "update_working_group_budget_negative_content", "update_working_group_budget_positive_membership", "update_working_group_budget_negative_membership", "on_initialize_revealing", "on_initialize_voting", "vote", "reveal_vote_space_for_new_winner", "reveal_vote_space_not_in_winners", "reveal_vote_space_replace_last_winner", "reveal_vote_already_existing", "release_vote_stake", "amend_constitution", "set_keys", "purge_keys", "batch", "as_derivative", "cancel_proposal", "veto_proposal", "on_initialize_immediate_execution_decode_fails", "on_initialize_pending_execution_decode_fails", "on_initialize_approved_pending_constitutionality", "on_initialize_rejected", "on_initialize_slashed", "cancel_active_and_pending_proposals", "set_budget_increment", "set_councilor_reward", "funding_request", "try_process_budget", "try_progress_stage_idle", "try_progress_stage_announcing_start_election", "try_progress_stage_announcing_restart", "announce_candidacy", "release_candidacy_stake", "set_candidacy_note", "withdraw_candidacy", "set_budget", "plan_budget_refill", "on_initialize_leaving", "on_initialize_rewarding_with_missing_reward", "on_initialize_rewarding_with_missing_reward_cant_pay", "on_initialize_rewarding_without_missing_reward", "apply_on_opening", "fill_opening_lead", "fill_opening_worker", "update_role_account", "cancel_opening", "withdraw_application", "slash_stake", "terminate_role_worker", "terminate_role_lead", "increase_stake", "decrease_stake", "spend_from_budget", "update_reward_amount", "set_status_text", "update_reward_account", "add_opening", "leave_role_immediatly", "leave_role_later", "set", "on_finalize", "runtime_upgrade" ], "description": "Watching extrinsic", "index": 49, "layout": "IPY_MODEL_e6e59889f8174635961f198463942736", "style": "IPY_MODEL_78c7fcbe58394e25aa39bbed156cfa4f" } }, "95e1b3fb867a49ecb22aabc337d805e1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Issuance", "layout": "IPY_MODEL_79148d4d52364ab2bf1fd66e2f35634b", "max": 250000000, "min": 1, "step": 250000, "style": "IPY_MODEL_612b41e6b3cb400e86ae256b70f458c1", "value": 250001 } }, "9778f252258547d3a593cd1ba0b49bff": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_c21e66514b71471da83321677f1cf5c6", "IPY_MODEL_dbb41a1f217a4cc3a4e1863d5f93609a", "IPY_MODEL_397a32069baa402bb0641bfdaa1c16d1" ], "layout": "IPY_MODEL_d3e894316d914c4f873586066b3b6f2d" } }, "9958b5ad666346bea8b170de1ae818ba": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Market Cap(¢)", "layout": "IPY_MODEL_3a24ce1aef974db6a5086a96770d66a6", "max": 1250000, "min": 1, "step": 1250, "style": "IPY_MODEL_180b9d41753e4c848520b0426fa753f7", "value": 1251 } }, "995aa93df1934a3ab5d1fec6afa16d48": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_d85cdbc8c15446ac9ded364e05cbcb88", "outputs": [ { "name": "stdout", "output_type": "stream", "text": "Weight coefficient: 9.819415131789119e-08\ntransfer weight: 190949000\ntransfer price: 0.09382500000000003 US$\ntransfer price: 0.09382500000000003 US$\n" }, { "data": { "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Extrinsic Weight Price(US$)
add_postadd_post0.010737
transfertransfer0.000938
votevote0.003859
runtime_upgraderuntime_upgrade159.946631
", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "9f8ccd6c52db4cbd8830b231f0383769": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "a0d5564510854d948ccf693a950b4351": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "bond", "bond_extra", "unbond", "withdraw_unbonded_update", "withdraw_unbonded_kill", "validate", "nominate", "chill", "set_payee", "set_controller", "set_validator_count", "force_no_eras", "force_new_era", "force_new_era_always", "set_invulnerables", "force_unstake", "cancel_deferred_slash", "payout_stakers_dead_controller", "payout_stakers_alive_staked", "rebond", "set_history_depth", "reap_stash", "new_era", "submit_solution_better", "create_category", "update_category_membership_of_moderator_new", "update_category_membership_of_moderator_old", "update_category_archival_status_lead", "update_category_archival_status_moderator", "delete_category_lead", "delete_category_moderator", "create_thread", "edit_thread_metadata", "update_thread_archival_status_lead", "update_thread_archival_status_moderator", "delete_thread_lead", "delete_thread_moderator", "move_thread_to_category_lead", "move_thread_to_category_moderator", "vote_on_poll", "moderate_thread_lead", "moderate_thread_moderator", "add_post", "react_post", "edit_post_text", "moderate_post_lead", "moderate_post_moderator", "set_stickied_threads_lead", "set_stickied_threads_moderator", "transfer", "transfer_keep_alive", "set_balance_creating", "set_balance_killing", "force_transfer", "remark", "set_heap_pages", "set_changes_trie_config", "set_storage", "kill_storage", "kill_prefix", "suicide", "buy_membership_without_referrer", "buy_membership_with_referrer", "update_profile", "update_accounts_none", "update_accounts_root", "update_accounts_controller", "update_accounts_both", "set_referral_cut", "transfer_invites", "invite_member", "set_membership_price", "update_profile_verification", "set_leader_invitation_quota", "set_initial_invitation_balance", "set_initial_invitation_count", "add_staking_account_candidate", "confirm_staking_account", "remove_staking_account", "update_post", "change_thread_mode", "execute_signal_proposal", "create_proposal_signal", "create_proposal_runtime_upgrade", "create_proposal_funding_request", "create_proposal_set_max_validator_count", "create_proposal_create_working_group_lead_opening", "create_proposal_fill_working_group_lead_opening", "create_proposal_update_working_group_budget", "create_proposal_decrease_working_group_lead_stake", "create_proposal_slash_working_group_lead", "create_proposal_set_working_group_lead_reward", "create_proposal_terminate_working_group_lead", "create_proposal_amend_constitution", "create_proposal_cancel_working_group_lead_opening", "create_proposal_set_membership_price", "create_proposal_set_council_budget_increment", "create_proposal_set_councilor_reward", "create_proposal_set_initial_invitation_balance", "create_proposal_set_initial_invitation_count", "create_proposal_set_membership_lead_invitation_quota", "create_proposal_set_referral_cut", "update_working_group_budget_positive_forum", "update_working_group_budget_negative_forum", "update_working_group_budget_positive_storage", "update_working_group_budget_negative_storage", "update_working_group_budget_positive_content", "update_working_group_budget_negative_content", "update_working_group_budget_positive_membership", "update_working_group_budget_negative_membership", "on_initialize_revealing", "on_initialize_voting", "vote", "reveal_vote_space_for_new_winner", "reveal_vote_space_not_in_winners", "reveal_vote_space_replace_last_winner", "reveal_vote_already_existing", "release_vote_stake", "amend_constitution", "set_keys", "purge_keys", "batch", "as_derivative", "cancel_proposal", "veto_proposal", "on_initialize_immediate_execution_decode_fails", "on_initialize_pending_execution_decode_fails", "on_initialize_approved_pending_constitutionality", "on_initialize_rejected", "on_initialize_slashed", "cancel_active_and_pending_proposals", "set_budget_increment", "set_councilor_reward", "funding_request", "try_process_budget", "try_progress_stage_idle", "try_progress_stage_announcing_start_election", "try_progress_stage_announcing_restart", "announce_candidacy", "release_candidacy_stake", "set_candidacy_note", "withdraw_candidacy", "set_budget", "plan_budget_refill", "on_initialize_leaving", "on_initialize_rewarding_with_missing_reward", "on_initialize_rewarding_with_missing_reward_cant_pay", "on_initialize_rewarding_without_missing_reward", "apply_on_opening", "fill_opening_lead", "fill_opening_worker", "update_role_account", "cancel_opening", "withdraw_application", "slash_stake", "terminate_role_worker", "terminate_role_lead", "increase_stake", "decrease_stake", "spend_from_budget", "update_reward_amount", "set_status_text", "update_reward_account", "add_opening", "leave_role_immediatly", "leave_role_later", "set", "on_finalize", "runtime_upgrade" ], "description": "Watching extrinsic", "index": 49, "layout": "IPY_MODEL_92a6f2c863f345478f733fb3d70930b3", "style": "IPY_MODEL_0956d6c4134648c4856d4bfea8c6b640" } }, "a6322b2e954843d9bc126bc11ae56114": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "a6d7dac59c1c47a69cd12fccc146a840": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "a9cf184c044a4acba0edeea5c70d062d": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "adf3ebdf69dd4331a2007a657884137d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_0cf0590a93434cd590eb7d5e8e1cf337", "IPY_MODEL_3cbe6e58033f4837938fe5c13ed2bc6f", "IPY_MODEL_729b7e208f9c49e985d85d97aadbe80f", "IPY_MODEL_f0150748376147c7a7f91cf93399fc8f", "IPY_MODEL_995aa93df1934a3ab5d1fec6afa16d48" ], "layout": "IPY_MODEL_24fd8331de4946e1bf7703dc88a5acf6" } }, "af1f17dcc75e45daa20abbc1537a70f4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedFloatTextModel", "state": { "description": "Demand coefficient", "layout": "IPY_MODEL_cd4fca344ed74ab99abc003b99bde15a", "max": 1, "min": 0.0001, "step": 0.0001, "style": "IPY_MODEL_6fa2f570197f4a3bbb2c286faa1d61b8", "value": 0.0001 } }, "af65717dde89411ab5870d6e1b29c10e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "b3ecca3fe3f2478db2e5725238950a77": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "CheckboxModel", "state": { "description": "Use length fee for coefficient calculation", "disabled": false, "layout": "IPY_MODEL_4664eee52cb3489dae1fc008a7d0ca4d", "style": "IPY_MODEL_2f900835b2954a4da6cfa0d8cb0bb3f7", "value": false } }, "b8d427a59e9c4f3984119d29f3bc6be3": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "b939f297c8cf4a93a693dea2cab063de": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "bce1dcd27f9843ac9e78c64b3d6fa0e2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Issuance", "layout": "IPY_MODEL_443204cd2f6d40be8d4c059a399de8cb", "max": 250000000, "min": 1, "step": 250000, "style": "IPY_MODEL_0cbf052939c24862b9b4e178981e0a7e", "value": 250001 } }, "bd1f6400580841be930256616fb568d9": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "bd7a55cdcb7748db82906246fff10026": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Market Cap(¢)", "layout": "IPY_MODEL_5501998a18f141e89dad139f3e54056d", "max": 1250000, "min": 1, "step": 1250, "style": "IPY_MODEL_6d96e85b0ab0453483261b4bef832d78", "value": 1251 } }, "bec22f60e3ad4f6aa76669e3e9144e1a": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c21e66514b71471da83321677f1cf5c6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedFloatTextModel", "state": { "description": "Demand coefficient", "layout": "IPY_MODEL_a6322b2e954843d9bc126bc11ae56114", "max": 1, "min": 0.0001, "step": 0.0001, "style": "IPY_MODEL_ce2b11ec681f42178639259bedf7651c", "value": 0.0001 } }, "c23a3cc9dd564be7abe66ab89febff08": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "c62ee6d0205044c0bef61bfb78782b3e": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_5ef2ea3359b547bca7bdf5997f7c6f90", "outputs": [ { "name": "stdout", "output_type": "stream", "text": "Weight coefficient: 9.819415131789119e-08\ntransfer weight: 190949000\ntransfer price: 0.09382500000000003 US$\ntransfer price: 0.09382500000000003 US$\n" }, { "data": { "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Extrinsic Weight Price(US$)
add_postadd_post0.010737
transfertransfer0.000938
votevote0.003859
runtime_upgraderuntime_upgrade159.946631
", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "c6fa3e3f9d024bdc816f3ec8be53bb35": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_13c37b5df6e445d3b1050d8c761e637c", "IPY_MODEL_642b040363cd4b5d8b1a20b45efa34c8", "IPY_MODEL_95e1b3fb867a49ecb22aabc337d805e1" ], "layout": "IPY_MODEL_175d104e64d045e5a8a86dd22ef438dc" } }, "cbcaec83731540d3a02373efeeba83c3": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "cc1e1a78f683468a8fa626919b733700": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "cd4fca344ed74ab99abc003b99bde15a": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "ce2b11ec681f42178639259bedf7651c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "ce639043bc884b1c971bcc7ad30e4c03": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "cedea8d813584f2abfca5fb1e648a780": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "cf38de3de20a4d2e8c30cad231f31d98": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "d2b31e682b774a5f87bea2d088db155e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_86d7831e1d0a42e78d43c605530b0778", "IPY_MODEL_e7c863aa0429418abd3c1b648762bf19" ], "layout": "IPY_MODEL_5782a0e5518145df87fe210e9e3fa5b9" } }, "d3e894316d914c4f873586066b3b6f2d": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "d68084436ba640d4b78dd716fe7d0701": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_c6fa3e3f9d024bdc816f3ec8be53bb35", "IPY_MODEL_d2b31e682b774a5f87bea2d088db155e", "IPY_MODEL_b3ecca3fe3f2478db2e5725238950a77", "IPY_MODEL_d9d6c7f6769747e09e7b31bee839373a", "IPY_MODEL_6add2c4dc8ec4d478d81db8d0d51298a" ], "layout": "IPY_MODEL_440eadfe341b4feb9d7083eafa553ccc" } }, "d85cdbc8c15446ac9ded364e05cbcb88": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "d9d6c7f6769747e09e7b31bee839373a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "bond", "bond_extra", "unbond", "withdraw_unbonded_update", "withdraw_unbonded_kill", "validate", "nominate", "chill", "set_payee", "set_controller", "set_validator_count", "force_no_eras", "force_new_era", "force_new_era_always", "set_invulnerables", "force_unstake", "cancel_deferred_slash", "payout_stakers_dead_controller", "payout_stakers_alive_staked", "rebond", "set_history_depth", "reap_stash", "new_era", "submit_solution_better", "create_category", "update_category_membership_of_moderator_new", "update_category_membership_of_moderator_old", "update_category_archival_status_lead", "update_category_archival_status_moderator", "delete_category_lead", "delete_category_moderator", "create_thread", "edit_thread_metadata", "update_thread_archival_status_lead", "update_thread_archival_status_moderator", "delete_thread_lead", "delete_thread_moderator", "move_thread_to_category_lead", "move_thread_to_category_moderator", "vote_on_poll", "moderate_thread_lead", "moderate_thread_moderator", "add_post", "react_post", "edit_post_text", "moderate_post_lead", "moderate_post_moderator", "set_stickied_threads_lead", "set_stickied_threads_moderator", "transfer", "transfer_keep_alive", "set_balance_creating", "set_balance_killing", "force_transfer", "remark", "set_heap_pages", "set_changes_trie_config", "set_storage", "kill_storage", "kill_prefix", "suicide", "buy_membership_without_referrer", "buy_membership_with_referrer", "update_profile", "update_accounts_none", "update_accounts_root", "update_accounts_controller", "update_accounts_both", "set_referral_cut", "transfer_invites", "invite_member", "set_membership_price", "update_profile_verification", "set_leader_invitation_quota", "set_initial_invitation_balance", "set_initial_invitation_count", "add_staking_account_candidate", "confirm_staking_account", "remove_staking_account", "update_post", "change_thread_mode", "execute_signal_proposal", "create_proposal_signal", "create_proposal_runtime_upgrade", "create_proposal_funding_request", "create_proposal_set_max_validator_count", "create_proposal_create_working_group_lead_opening", "create_proposal_fill_working_group_lead_opening", "create_proposal_update_working_group_budget", "create_proposal_decrease_working_group_lead_stake", "create_proposal_slash_working_group_lead", "create_proposal_set_working_group_lead_reward", "create_proposal_terminate_working_group_lead", "create_proposal_amend_constitution", "create_proposal_cancel_working_group_lead_opening", "create_proposal_set_membership_price", "create_proposal_set_council_budget_increment", "create_proposal_set_councilor_reward", "create_proposal_set_initial_invitation_balance", "create_proposal_set_initial_invitation_count", "create_proposal_set_membership_lead_invitation_quota", "create_proposal_set_referral_cut", "update_working_group_budget_positive_forum", "update_working_group_budget_negative_forum", "update_working_group_budget_positive_storage", "update_working_group_budget_negative_storage", "update_working_group_budget_positive_content", "update_working_group_budget_negative_content", "update_working_group_budget_positive_membership", "update_working_group_budget_negative_membership", "on_initialize_revealing", "on_initialize_voting", "vote", "reveal_vote_space_for_new_winner", "reveal_vote_space_not_in_winners", "reveal_vote_space_replace_last_winner", "reveal_vote_already_existing", "release_vote_stake", "amend_constitution", "set_keys", "purge_keys", "batch", "as_derivative", "cancel_proposal", "veto_proposal", "on_initialize_immediate_execution_decode_fails", "on_initialize_pending_execution_decode_fails", "on_initialize_approved_pending_constitutionality", "on_initialize_rejected", "on_initialize_slashed", "cancel_active_and_pending_proposals", "set_budget_increment", "set_councilor_reward", "funding_request", "try_process_budget", "try_progress_stage_idle", "try_progress_stage_announcing_start_election", "try_progress_stage_announcing_restart", "announce_candidacy", "release_candidacy_stake", "set_candidacy_note", "withdraw_candidacy", "set_budget", "plan_budget_refill", "on_initialize_leaving", "on_initialize_rewarding_with_missing_reward", "on_initialize_rewarding_with_missing_reward_cant_pay", "on_initialize_rewarding_without_missing_reward", "apply_on_opening", "fill_opening_lead", "fill_opening_worker", "update_role_account", "cancel_opening", "withdraw_application", "slash_stake", "terminate_role_worker", "terminate_role_lead", "increase_stake", "decrease_stake", "spend_from_budget", "update_reward_amount", "set_status_text", "update_reward_account", "add_opening", "leave_role_immediatly", "leave_role_later", "set", "on_finalize", "runtime_upgrade" ], "description": "Watching extrinsic", "index": 49, "layout": "IPY_MODEL_48fba1f623df43e0a4efbb97c072ce44", "style": "IPY_MODEL_fb341bc8393a44279cf506bcc2842078" } }, "da664df26532430785a0064040515ddc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "dbb41a1f217a4cc3a4e1863d5f93609a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Market Cap(¢)", "layout": "IPY_MODEL_f0e47ae3cdff425eb76ae1344addccab", "max": 1250000, "min": 1, "step": 1250, "style": "IPY_MODEL_82421d9b1ab646beabe4ddb7b8dcf806", "value": 1251 } }, "e34e5569353c4d448549b64218ee2930": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "e52e2f6467414c3b8f30239d927d1485": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_bec22f60e3ad4f6aa76669e3e9144e1a", "outputs": [ { "name": "stdout", "output_type": "stream", "text": "Weight coefficient: 9.819415131789119e-08\ntransfer weight: 190949000\ntransfer price: 0.09382500000000003 US$\ntransfer price: 0.09382500000000003 US$\n" }, { "data": { "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Extrinsic Weight Price(US$)
add_postadd_post0.010737
transfertransfer0.000938
votevote0.003859
runtime_upgraderuntime_upgrade760.424229
", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "e5b7faf90fb748c7a5dcdbdefdc99d10": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Market Cap(¢)", "layout": "IPY_MODEL_6a1e7b5f3cdd451299d18abaf3b87a8f", "max": 1250000, "min": 1, "step": 1250, "style": "IPY_MODEL_596f2f1877f1468ca0416c9f19304fec", "value": 1251 } }, "e6e59889f8174635961f198463942736": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "e7c863aa0429418abd3c1b648762bf19": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "BoundedIntTextModel", "state": { "description": "Length coefficient", "layout": "IPY_MODEL_79f90805fb4b44689d363205c99da8de", "max": 1000000, "style": "IPY_MODEL_66730c7dcc0249579453de10278ce7f6", "value": 1 } }, "e85dc68e925c4cdc90c521f8242f6ec3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "e8fb7672af8a41e0b88abfe27b6a1fc3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_84b3cc654e224484bfac3920fed8dda0", "IPY_MODEL_003eb9b6a5d54d8f83660bfab0f5ba1b", "IPY_MODEL_836b9af942b547d6855ac2af3f946c2d", "IPY_MODEL_a0d5564510854d948ccf693a950b4351", "IPY_MODEL_e52e2f6467414c3b8f30239d927d1485" ], "layout": "IPY_MODEL_8235c5b7b62f44c48d6702b631fae408" } }, "f0150748376147c7a7f91cf93399fc8f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "bond", "bond_extra", "unbond", "withdraw_unbonded_update", "withdraw_unbonded_kill", "validate", "nominate", "chill", "set_payee", "set_controller", "set_validator_count", "force_no_eras", "force_new_era", "force_new_era_always", "set_invulnerables", "force_unstake", "cancel_deferred_slash", "payout_stakers_dead_controller", "payout_stakers_alive_staked", "rebond", "set_history_depth", "reap_stash", "new_era", "submit_solution_better", "create_category", "update_category_membership_of_moderator_new", "update_category_membership_of_moderator_old", "update_category_archival_status_lead", "update_category_archival_status_moderator", "delete_category_lead", "delete_category_moderator", "create_thread", "edit_thread_metadata", "update_thread_archival_status_lead", "update_thread_archival_status_moderator", "delete_thread_lead", "delete_thread_moderator", "move_thread_to_category_lead", "move_thread_to_category_moderator", "vote_on_poll", "moderate_thread_lead", "moderate_thread_moderator", "add_post", "react_post", "edit_post_text", "moderate_post_lead", "moderate_post_moderator", "set_stickied_threads_lead", "set_stickied_threads_moderator", "transfer", "transfer_keep_alive", "set_balance_creating", "set_balance_killing", "force_transfer", "remark", "set_heap_pages", "set_changes_trie_config", "set_storage", "kill_storage", "kill_prefix", "suicide", "buy_membership_without_referrer", "buy_membership_with_referrer", "update_profile", "update_accounts_none", "update_accounts_root", "update_accounts_controller", "update_accounts_both", "set_referral_cut", "transfer_invites", "invite_member", "set_membership_price", "update_profile_verification", "set_leader_invitation_quota", "set_initial_invitation_balance", "set_initial_invitation_count", "add_staking_account_candidate", "confirm_staking_account", "remove_staking_account", "update_post", "change_thread_mode", "execute_signal_proposal", "create_proposal_signal", "create_proposal_runtime_upgrade", "create_proposal_funding_request", "create_proposal_set_max_validator_count", "create_proposal_create_working_group_lead_opening", "create_proposal_fill_working_group_lead_opening", "create_proposal_update_working_group_budget", "create_proposal_decrease_working_group_lead_stake", "create_proposal_slash_working_group_lead", "create_proposal_set_working_group_lead_reward", "create_proposal_terminate_working_group_lead", "create_proposal_amend_constitution", "create_proposal_cancel_working_group_lead_opening", "create_proposal_set_membership_price", "create_proposal_set_council_budget_increment", "create_proposal_set_councilor_reward", "create_proposal_set_initial_invitation_balance", "create_proposal_set_initial_invitation_count", "create_proposal_set_membership_lead_invitation_quota", "create_proposal_set_referral_cut", "update_working_group_budget_positive_forum", "update_working_group_budget_negative_forum", "update_working_group_budget_positive_storage", "update_working_group_budget_negative_storage", "update_working_group_budget_positive_content", "update_working_group_budget_negative_content", "update_working_group_budget_positive_membership", "update_working_group_budget_negative_membership", "on_initialize_revealing", "on_initialize_voting", "vote", "reveal_vote_space_for_new_winner", "reveal_vote_space_not_in_winners", "reveal_vote_space_replace_last_winner", "reveal_vote_already_existing", "release_vote_stake", "amend_constitution", "set_keys", "purge_keys", "batch", "as_derivative", "cancel_proposal", "veto_proposal", "on_initialize_immediate_execution_decode_fails", "on_initialize_pending_execution_decode_fails", "on_initialize_approved_pending_constitutionality", "on_initialize_rejected", "on_initialize_slashed", "cancel_active_and_pending_proposals", "set_budget_increment", "set_councilor_reward", "funding_request", "try_process_budget", "try_progress_stage_idle", "try_progress_stage_announcing_start_election", "try_progress_stage_announcing_restart", "announce_candidacy", "release_candidacy_stake", "set_candidacy_note", "withdraw_candidacy", "set_budget", "plan_budget_refill", "on_initialize_leaving", "on_initialize_rewarding_with_missing_reward", "on_initialize_rewarding_with_missing_reward_cant_pay", "on_initialize_rewarding_without_missing_reward", "apply_on_opening", "fill_opening_lead", "fill_opening_worker", "update_role_account", "cancel_opening", "withdraw_application", "slash_stake", "terminate_role_worker", "terminate_role_lead", "increase_stake", "decrease_stake", "spend_from_budget", "update_reward_amount", "set_status_text", "update_reward_account", "add_opening", "leave_role_immediatly", "leave_role_later", "set", "on_finalize", "runtime_upgrade" ], "description": "Watching extrinsic", "index": 49, "layout": "IPY_MODEL_6ddb1d1959db4611a6f4fb639f6ba13a", "style": "IPY_MODEL_9f8ccd6c52db4cbd8830b231f0383769" } }, "f0e47ae3cdff425eb76ae1344addccab": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "f2c5f8a79f05434d85d9ed7911823473": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "bond", "bond_extra", "unbond", "withdraw_unbonded_update", "withdraw_unbonded_kill", "validate", "nominate", "chill", "set_payee", "set_controller", "set_validator_count", "force_no_eras", "force_new_era", "force_new_era_always", "set_invulnerables", "force_unstake", "cancel_deferred_slash", "payout_stakers_dead_controller", "payout_stakers_alive_staked", "rebond", "set_history_depth", "reap_stash", "new_era", "submit_solution_better", "create_category", "update_category_membership_of_moderator_new", "update_category_membership_of_moderator_old", "update_category_archival_status_lead", "update_category_archival_status_moderator", "delete_category_lead", "delete_category_moderator", "create_thread", "edit_thread_metadata", "update_thread_archival_status_lead", "update_thread_archival_status_moderator", "delete_thread_lead", "delete_thread_moderator", "move_thread_to_category_lead", "move_thread_to_category_moderator", "vote_on_poll", "moderate_thread_lead", "moderate_thread_moderator", "add_post", "react_post", "edit_post_text", "moderate_post_lead", "moderate_post_moderator", "set_stickied_threads_lead", "set_stickied_threads_moderator", "transfer", "transfer_keep_alive", "set_balance_creating", "set_balance_killing", "force_transfer", "remark", "set_heap_pages", "set_changes_trie_config", "set_storage", "kill_storage", "kill_prefix", "suicide", "buy_membership_without_referrer", "buy_membership_with_referrer", "update_profile", "update_accounts_none", "update_accounts_root", "update_accounts_controller", "update_accounts_both", "set_referral_cut", "transfer_invites", "invite_member", "set_membership_price", "update_profile_verification", "set_leader_invitation_quota", "set_initial_invitation_balance", "set_initial_invitation_count", "add_staking_account_candidate", "confirm_staking_account", "remove_staking_account", "update_post", "change_thread_mode", "execute_signal_proposal", "create_proposal_signal", "create_proposal_runtime_upgrade", "create_proposal_funding_request", "create_proposal_set_max_validator_count", "create_proposal_create_working_group_lead_opening", "create_proposal_fill_working_group_lead_opening", "create_proposal_update_working_group_budget", "create_proposal_decrease_working_group_lead_stake", "create_proposal_slash_working_group_lead", "create_proposal_set_working_group_lead_reward", "create_proposal_terminate_working_group_lead", "create_proposal_amend_constitution", "create_proposal_cancel_working_group_lead_opening", "create_proposal_set_membership_price", "create_proposal_set_council_budget_increment", "create_proposal_set_councilor_reward", "create_proposal_set_initial_invitation_balance", "create_proposal_set_initial_invitation_count", "create_proposal_set_membership_lead_invitation_quota", "create_proposal_set_referral_cut", "update_working_group_budget_positive_forum", "update_working_group_budget_negative_forum", "update_working_group_budget_positive_storage", "update_working_group_budget_negative_storage", "update_working_group_budget_positive_content", "update_working_group_budget_negative_content", "update_working_group_budget_positive_membership", "update_working_group_budget_negative_membership", "on_initialize_revealing", "on_initialize_voting", "vote", "reveal_vote_space_for_new_winner", "reveal_vote_space_not_in_winners", "reveal_vote_space_replace_last_winner", "reveal_vote_already_existing", "release_vote_stake", "amend_constitution", "set_keys", "purge_keys", "batch", "as_derivative", "cancel_proposal", "veto_proposal", "on_initialize_immediate_execution_decode_fails", "on_initialize_pending_execution_decode_fails", "on_initialize_approved_pending_constitutionality", "on_initialize_rejected", "on_initialize_slashed", "cancel_active_and_pending_proposals", "set_budget_increment", "set_councilor_reward", "funding_request", "try_process_budget", "try_progress_stage_idle", "try_progress_stage_announcing_start_election", "try_progress_stage_announcing_restart", "announce_candidacy", "release_candidacy_stake", "set_candidacy_note", "withdraw_candidacy", "set_budget", "plan_budget_refill", "on_initialize_leaving", "on_initialize_rewarding_with_missing_reward", "on_initialize_rewarding_with_missing_reward_cant_pay", "on_initialize_rewarding_without_missing_reward", "apply_on_opening", "fill_opening_lead", "fill_opening_worker", "update_role_account", "cancel_opening", "withdraw_application", "slash_stake", "terminate_role_worker", "terminate_role_lead", "increase_stake", "decrease_stake", "spend_from_budget", "update_reward_amount", "set_status_text", "update_reward_account", "add_opening", "leave_role_immediatly", "leave_role_later", "set", "on_finalize", "runtime_upgrade" ], "description": "Target extrinsic", "index": 49, "layout": "IPY_MODEL_0847c849ec84488c9796789acd7b05d2", "style": "IPY_MODEL_f84277694dc746d08788dac457602786" } }, "f3e35e1d6419451e82d74772df14afab": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "f83eccdf49a54bbf9de447f7b7b1a876": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_fdd94f47ebfa44fdac5f0d63f3ed4a1e", "IPY_MODEL_426c2c8907ab40cbbf149b4a69280acf" ], "layout": "IPY_MODEL_2bca6a7acec64d098829906e57ac2fa9" } }, "f84277694dc746d08788dac457602786": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "fa120f4150b14da183ddfeedcfb3228d": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "fb341bc8393a44279cf506bcc2842078": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "fb5dc88c66f748799b212348808b9493": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "max_width": "500px", "width": "auto" } }, "fc15311285b54cdc9d08f2520802b274": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_c21e66514b71471da83321677f1cf5c6", "IPY_MODEL_dbb41a1f217a4cc3a4e1863d5f93609a", "IPY_MODEL_397a32069baa402bb0641bfdaa1c16d1", "IPY_MODEL_3d83562a972c4017a14f086288155e67", "IPY_MODEL_4573a5c800df4af3b31febd4aa004e5f", "IPY_MODEL_470b6be2ac3e4ca78a56421bc8767ba8", "IPY_MODEL_51aaec4068a544098fbc91e200c7fee5", "IPY_MODEL_c62ee6d0205044c0bef61bfb78782b3e" ], "layout": "IPY_MODEL_1d45272bd23f4862b37e5c4d70bb5b13" } }, "fc4d2ccf07f34f0ebc5e8271b3f46e8d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_5f59ede5aa6549c5afe0b96cf8617916", "IPY_MODEL_e5b7faf90fb748c7a5dcdbdefdc99d10", "IPY_MODEL_8e064d549fc4403088e955adeb1ffc0e", "IPY_MODEL_0ca7156deb8440e2b6c231e106c950c7", "IPY_MODEL_1039dd7712f34ce1aaf9274a4917b80e", "IPY_MODEL_836b9af942b547d6855ac2af3f946c2d", "IPY_MODEL_a0d5564510854d948ccf693a950b4351", "IPY_MODEL_e52e2f6467414c3b8f30239d927d1485" ], "layout": "IPY_MODEL_e34e5569353c4d448549b64218ee2930" } }, "fdd94f47ebfa44fdac5f0d63f3ed4a1e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "bond", "bond_extra", "unbond", "withdraw_unbonded_update", "withdraw_unbonded_kill", "validate", "nominate", "chill", "set_payee", "set_controller", "set_validator_count", "force_no_eras", "force_new_era", "force_new_era_always", "set_invulnerables", "force_unstake", "cancel_deferred_slash", "payout_stakers_dead_controller", "payout_stakers_alive_staked", "rebond", "set_history_depth", "reap_stash", "new_era", "submit_solution_better", "create_category", "update_category_membership_of_moderator_new", "update_category_membership_of_moderator_old", "update_category_archival_status_lead", "update_category_archival_status_moderator", "delete_category_lead", "delete_category_moderator", "create_thread", "edit_thread_metadata", "update_thread_archival_status_lead", "update_thread_archival_status_moderator", "delete_thread_lead", "delete_thread_moderator", "move_thread_to_category_lead", "move_thread_to_category_moderator", "vote_on_poll", "moderate_thread_lead", "moderate_thread_moderator", "add_post", "react_post", "edit_post_text", "moderate_post_lead", "moderate_post_moderator", "set_stickied_threads_lead", "set_stickied_threads_moderator", "transfer", "transfer_keep_alive", "set_balance_creating", "set_balance_killing", "force_transfer", "remark", "set_heap_pages", "set_changes_trie_config", "set_storage", "kill_storage", "kill_prefix", "suicide", "buy_membership_without_referrer", "buy_membership_with_referrer", "update_profile", "update_accounts_none", "update_accounts_root", "update_accounts_controller", "update_accounts_both", "set_referral_cut", "transfer_invites", "invite_member", "set_membership_price", "update_profile_verification", "set_leader_invitation_quota", "set_initial_invitation_balance", "set_initial_invitation_count", "add_staking_account_candidate", "confirm_staking_account", "remove_staking_account", "update_post", "change_thread_mode", "execute_signal_proposal", "create_proposal_signal", "create_proposal_runtime_upgrade", "create_proposal_funding_request", "create_proposal_set_max_validator_count", "create_proposal_create_working_group_lead_opening", "create_proposal_fill_working_group_lead_opening", "create_proposal_update_working_group_budget", "create_proposal_decrease_working_group_lead_stake", "create_proposal_slash_working_group_lead", "create_proposal_set_working_group_lead_reward", "create_proposal_terminate_working_group_lead", "create_proposal_amend_constitution", "create_proposal_cancel_working_group_lead_opening", "create_proposal_set_membership_price", "create_proposal_set_council_budget_increment", "create_proposal_set_councilor_reward", "create_proposal_set_initial_invitation_balance", "create_proposal_set_initial_invitation_count", "create_proposal_set_membership_lead_invitation_quota", "create_proposal_set_referral_cut", "update_working_group_budget_positive_forum", "update_working_group_budget_negative_forum", "update_working_group_budget_positive_storage", "update_working_group_budget_negative_storage", "update_working_group_budget_positive_content", "update_working_group_budget_negative_content", "update_working_group_budget_positive_membership", "update_working_group_budget_negative_membership", "on_initialize_revealing", "on_initialize_voting", "vote", "reveal_vote_space_for_new_winner", "reveal_vote_space_not_in_winners", "reveal_vote_space_replace_last_winner", "reveal_vote_already_existing", "release_vote_stake", "amend_constitution", "set_keys", "purge_keys", "batch", "as_derivative", "cancel_proposal", "veto_proposal", "on_initialize_immediate_execution_decode_fails", "on_initialize_pending_execution_decode_fails", "on_initialize_approved_pending_constitutionality", "on_initialize_rejected", "on_initialize_slashed", "cancel_active_and_pending_proposals", "set_budget_increment", "set_councilor_reward", "funding_request", "try_process_budget", "try_progress_stage_idle", "try_progress_stage_announcing_start_election", "try_progress_stage_announcing_restart", "announce_candidacy", "release_candidacy_stake", "set_candidacy_note", "withdraw_candidacy", "set_budget", "plan_budget_refill", "on_initialize_leaving", "on_initialize_rewarding_with_missing_reward", "on_initialize_rewarding_with_missing_reward_cant_pay", "on_initialize_rewarding_without_missing_reward", "apply_on_opening", "fill_opening_lead", "fill_opening_worker", "update_role_account", "cancel_opening", "withdraw_application", "slash_stake", "terminate_role_worker", "terminate_role_lead", "increase_stake", "decrease_stake", "spend_from_budget", "update_reward_amount", "set_status_text", "update_reward_account", "add_opening", "leave_role_immediatly", "leave_role_later", "set", "on_finalize", "runtime_upgrade" ], "description": "Target extrinsic", "index": 49, "layout": "IPY_MODEL_b8d427a59e9c4f3984119d29f3bc6be3", "style": "IPY_MODEL_3f12ee3f90214da78780cbdceb0fd942" } }, "fdfd7ca5feea4a57b8b484b839f60dd3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_9778f252258547d3a593cd1ba0b49bff", "IPY_MODEL_45699cebf36d4793b689944ef8d0277a", "IPY_MODEL_470b6be2ac3e4ca78a56421bc8767ba8", "IPY_MODEL_51aaec4068a544098fbc91e200c7fee5", "IPY_MODEL_c62ee6d0205044c0bef61bfb78782b3e" ], "layout": "IPY_MODEL_2c333fca6e0b456b99befaef2f87d0a6" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }