{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Stationary behaviour of EIP 1559 agent-based model\n", "\n", "###### July 2020, [@barnabemonnot](https://twitter.com/barnabemonnot)\n", "###### [Robust Incentives Group](https://github.com/ethereum/rig), Ethereum Foundation\n", "\n", "---\n", "\n", "We introduce here the building blocks of agent-based simulations of EIP1559. This follows an [earlier notebook](https://nbviewer.jupyter.org/github/ethereum/rig/blob/master/eip1559/eip1559.ipynb) that merely looked at the dynamics of the EIP 1559 mechanism. In the present notebook, agents decide on transactions based on the current basefee and form their transactions based on internal evaluations of their values and costs.\n", "\n", "[Huberman et al., 2019](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3025604) introduced such a model and framework for the Bitcoin payment system. We adapt it here to study the dynamics of the basefee.\n", "\n", "All the code is available in [this repo](https://github.com/barnabemonnot/abm1559), with some preliminary documentation [here](https://barnabemonnot.com/abm1559/build/html/). You can also download the [`abm1559` package from PyPi](https://pypi.org/project/abm1559/) and reproduce all the analysis here yourself!\n", "\n", "## The broad lines\n", "\n", "We have several entities. _Users_ come in randomly (following a Poisson process) and create and send transactions. The transactions are received by a _transaction pool_, from which the $x$ best _valid_ transactions are included in a _block_ created at fixed intervals. $x$ depends on how many valid transactions exist in the pool (e.g., how many post a gasprice exceeding the prevailing basefee in 1559 paradigm) and the block gas limit. Once transactions are included in the block, and the block is included in the _chain_, transactions are removed from the transaction pool.\n", "\n", "How do users set their parameters? Users have their own internal ways of evaluating their _costs_. Users obtain a certain _value_ from having their transaction included, which we call $v$. $v$ is different for every user. This value is fixed but their overall _payoff_ decreases the longer they wait to be included. Some users have higher time preferences than others, and their payoff decreases faster than others the longer they wait. Put together, we have the following:\n", "\n", "$$ \\texttt{payoff} = \\texttt{value} - \\texttt{cost from waiting} - \\texttt{transaction fee} $$\n", "\n", "Users expect to wait for a certain amount of time. In this essay, we set this to a fixed value -- somewhat arbitrarily we choose 5. This can be readily understood in the following way. Users estimate what their payoff will be from getting included 5 blocks from now, assuming basefee remains constant. If this payoff is negative, they decide not to send the transaction to the pool (in queuing terminology, they _balk_). We'll play with this assumption later.\n", "\n", "The scenario is set up this way to study _stationarity_: assuming some demand comes in from a fixed distribution at regular intervals, we must expect basefee to reach some stationary value and stay there. It is then reasonable for users, at this stationary point, to consider that 5 blocks from now basefee will still be at the same level. In the nonstationary case, when for instance a systemic change in the demand happens (e.g., the rate of Poisson arrivals increases), a user may want to hedge their bets by estimating their future payoffs in a different way, taking into account that basefee might increase instead. This strategy would probably be a good idea during the _transition_ phase, when basefee shifts from one stationary point to a new one.\n", "\n", "We make the assumption here that users choose their 1559 parameters based on their value alone. We set the transaction `max_fee` parameter to the value of the user and set the `gas_premium` parameter to a residual value -- 1 Gwei per unit of gas.\n", "\n", "There is no loss of generality in assuming all users send the same transaction in (e.g., a simple transfer) and so all transactions have the same `gas_used` value (21,000). In 1559 paradigm, with a 20M gas limit per block, this allows at most 952 transactions to be included, although the mechanism will target half of that, around 475 here. The protocol adjusts the basefee to apply economic pressure, towards a target gas usage of 10M per block.\n", "\n", "## Simulation\n", "\n", "We import a few classes from our `abm1559` package." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os, sys\n", "sys.path.insert(1, os.path.realpath(os.path.pardir))\n", "# You may remove the two lines above if you have installed abm1559 from pypi\n", "\n", "from abm1559.utils import constants\n", "\n", "from abm1559.txpool import TxPool\n", "\n", "from abm1559.users import User1559\n", "\n", "from abm1559.userpool import UserPool\n", "\n", "from abm1559.chain import (\n", " Chain,\n", " Block1559,\n", ")\n", "\n", "from abm1559.simulator import (\n", " spawn_poisson_demand,\n", " update_basefee,\n", ")\n", "\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And define the main function used to simulate the fee market." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def simulate(demand_scenario, UserClass):\n", " # Instantiate a couple of things\n", " txpool = TxPool()\n", " basefee = constants[\"INITIAL_BASEFEE\"]\n", " chain = Chain()\n", " metrics = []\n", " user_pool = UserPool()\n", "\n", " for t in range(len(demand_scenario)):\n", " if t % 100 == 0: print(t)\n", "\n", " # `params` are the \"environment\" of the simulation\n", " params = {\n", " \"basefee\": basefee,\n", " \"current_block\": t,\n", " }\n", "\n", " # We return a demand drawn from a Poisson distribution.\n", " # The parameter is given by `demand_scenario[t]`, and can vary\n", " # over time.\n", " users = spawn_poisson_demand(t, demand_scenario[t], UserClass)\n", "\n", " # We query each new user with the current basefee value\n", " # Users either return a transaction or None if they prefer to balk\n", " decided_txs = user_pool.decide_transactions(users, params)\n", "\n", " # New transactions are added to the transaction pool\n", " txpool.add_txs(decided_txs)\n", "\n", " # The best valid transactions are taken out of the pool for inclusion\n", " selected_txs = txpool.select_transactions(params)\n", " txpool.remove_txs([tx.tx_hash for tx in selected_txs])\n", "\n", " # We create a block with these transactions\n", " block = Block1559(txs = selected_txs, parent_hash = chain.current_head, height = t, basefee = basefee)\n", "\n", " # The block is added to the chain\n", " chain.add_block(block)\n", "\n", " # A couple of metrics we will use to monitor the simulation\n", " row_metrics = {\n", " \"block\": t,\n", " \"basefee\": basefee / (10 ** 9),\n", " \"users\": len(users),\n", " \"decided_txs\": len(decided_txs),\n", " \"included_txs\": len(selected_txs),\n", " \"blk_avg_gas_price\": block.average_gas_price(),\n", " \"blk_avg_tip\": block.average_tip(),\n", " \"pool_length\": txpool.pool_length,\n", " }\n", " metrics.append(row_metrics)\n", "\n", " # Finally, basefee is updated and a new round starts\n", " basefee = update_basefee(block, basefee)\n", "\n", " return (pd.DataFrame(metrics), user_pool, chain)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, `simulate` takes in a `demand_scenario` array. Earlier we mentioned that each round, we draw the number of users wishing to send transactions from a Poisson distribution. [This distribution is parameterised by the expected number of arrivals, called _lambda_ $\\lambda$](https://en.wikipedia.org/wiki/Poisson_distribution). The `demand_scenario` array contains a sequence of such lambda's. We also provide in `UserClass` the type of user we would like to model (see the [docs](http://barnabemonnot.com/abm1559/build/html/#users) for more details).\n", "\n", "Our users draw their _value_ for the transaction (per unit of gas) from a uniform distribution, picking a random number between 0 and 20 (Gwei). Their cost for waiting one extra unit of time is drawn from a uniform distribution too, this time between 0 and 1 (Gwei). The closer their cost is to 1, the more impatient users are.\n", "\n", "Say for instance that I value each unit of gas at 15 Gwei, and my cost per round is 0.5 Gwei. If I wait for 6 blocks to be included at a gas price of 10 Gwei, my payoff is $15 - 6 \\times 0.5 - 10 = 2$.\n", "\n", "The numbers above sound arbitrary, and in a sense they are! They were chosen to respect the scales we are used to ([although gas prices are closer to 100 Gweis these days...](https://ethereum.github.io/rig/ethdata/notebooks/gas_weather_reports/exploreJuly21.html)). It also turns out that any distribution (uniform, Pareto, whatever floats your boat) leads to stationarity. The important part is that _some_ users have positive value for transacting in the first place, enough to fill a block to its target size at least. The choice of sample the cost from a uniform distribution, as opposed to having all users experience the same cost per round, allows for **simulating a scenario where some users are more in a hurry than others**." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "100\n" ] } ], "source": [ "demand_scenario = [2000 for i in range(200)]\n", "(df, user_pool, chain) = simulate(demand_scenario, User1559)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To study the stationary case, we create an array repeating $\\lambda$ for as many blocks as we wish to simulate the market for. We set $\\lambda$ to spawn on average 2000 users between two blocks." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Results\n", "\n", "Let's print the head and tail of the data frame holding our metrics. Each row corresponds to one round of our simulation, so one block." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "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", " \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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
blockbasefeeusersdecided_txsincluded_txsblk_avg_gas_priceblk_avg_tippool_length
001.000000209616469522.0000001.0694
111.124900201115759522.1249001.01317
221.265400199115569522.2654001.01921
331.423448196214649522.4234481.02433
441.601237207315559522.6012371.03036
...........................
19519511.728661199148548512.7286611.01937
19619611.755783193644944912.7557831.01937
19719711.671876198149749712.6718761.01937
19819811.735634203447747712.7356341.01937
19919911.738128204646046012.7381281.01937
\n", "

200 rows × 8 columns

\n", "
" ], "text/plain": [ " block basefee users decided_txs included_txs blk_avg_gas_price \\\n", "0 0 1.000000 2096 1646 952 2.000000 \n", "1 1 1.124900 2011 1575 952 2.124900 \n", "2 2 1.265400 1991 1556 952 2.265400 \n", "3 3 1.423448 1962 1464 952 2.423448 \n", "4 4 1.601237 2073 1555 952 2.601237 \n", ".. ... ... ... ... ... ... \n", "195 195 11.728661 1991 485 485 12.728661 \n", "196 196 11.755783 1936 449 449 12.755783 \n", "197 197 11.671876 1981 497 497 12.671876 \n", "198 198 11.735634 2034 477 477 12.735634 \n", "199 199 11.738128 2046 460 460 12.738128 \n", "\n", " blk_avg_tip pool_length \n", "0 1.0 694 \n", "1 1.0 1317 \n", "2 1.0 1921 \n", "3 1.0 2433 \n", "4 1.0 3036 \n", ".. ... ... \n", "195 1.0 1937 \n", "196 1.0 1937 \n", "197 1.0 1937 \n", "198 1.0 1937 \n", "199 1.0 1937 \n", "\n", "[200 rows x 8 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At the start of the simulation we clearly see in column `users` a demand close to 2000 users per round. Among these 2000 or so, around 1500 decide to send their transaction in (`decided_txs`). The 500 who don't might have a low value or high per-round costs, meaning it is unprofitable for them to even send their transaction in. Eventually 952 of them are included (`included_txs`), maxing out the block gas limit. The basefee starts at 1 Gwei but steadily increases from there, reaching around 11.8 Gwei by the end.\n", "\n", "By the end of the simulation, we note that `decided_txs` is always equal to `included_txs`. By this point, the basefee has risen enough to make it unprofitable for most users to send their transactions. This is exactly what we want! Users balk at the current prices.\n", "\n", "In the next chart we show the evolution of basefee and tips. We define _tip_ as the gas price minus the basefee, which is what _miners_ receive from the transaction.\n", "\n", "Note that [tip is in general **not** equal to the gas premium](https://twitter.com/barnabemonnot/status/1284271520311848960) that users set. This is particularly true when basefee plus gas premium exceeds the max fee of the user. In the graph below, the tip hovers around 1 Gwei (the premium), but is sometimes less than 1 too, especially when users see the prevailing basefee approach their posted max fees." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEGCAYAAABrQF4qAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAz8ElEQVR4nO3dd3gc1bnH8e+ruuqyVWzJkpFccLexLZtiY7ApNqa3GAKE4AQn1DSSm4RQLgn3BkJC4oTAJcEBEgIBHAdTTTOYjuXee1HvbSWttNKe+8euhCzv2pK2Sev38zx6tJqZnXk1Wv327JmZM2KMQSmlVOgKC3YBSiml/EuDXimlQpwGvVJKhTgNeqWUCnEa9EopFeIigl2AO6mpqSYnJyfYZSil1ICxbt26SmNMmrt5/TLoc3JyyM/PD3YZSik1YIjIIU/ztOtGKaVCnAa9UkqFOA16pZQKcf2yj14pNbDY7XYKCwux2WzBLiXkWSwWsrKyiIyM7PFzNOiVUl4rLCwkISGBnJwcRCTY5YQsYwxVVVUUFhaSm5vb4+dp141Syms2m42UlBQNeT8TEVJSUnr9yUmDXinlExrygdGX/axBHwBbi+pYf7gm2GUopU5Qxw16EVkmIuUisrXLtH+JyEbX10ER2ejhuQdFZItruRP2Cqj7V27jv1/dHuwylAppBw8eZOLEiX5b/7XXXsvkyZN59NFH/bYNf+nJwdingT8Bz3ZMMMYs6ngsIr8F6o7x/LnGmMq+FhgK9lc2kmjR495KDVSlpaWsXbuWvXv3BruUPjlui94YswaodjdPnJ1FXwOe93FdIaO2qZXqxlbqbW3BLkWpkNfW1sZ1113HuHHjuOqqq2hqauKBBx5gxowZTJw4kSVLltBxV72lS5cyfvx4Jk+ezDXXXANAY2MjixcvZubMmUydOpVXXnkFgPPPP5+ioiJOOeUUPvroI/bt28eCBQuYPn06Z555Jjt37gSgoqKCK6+8khkzZjBjxgw++eST4OyIbrxtZp4JlBlj9niYb4C3RcQA/2eMedLTikRkCbAEYPjw4V6W1X/sr2wEoMFmxxijB6xUyPvvV7exvbjep+scn5nIfRdPOO5yu3bt4qmnnmLWrFksXryYP//5z9x+++3ce++9ANxwww289tprXHzxxfz617/mwIEDREdHU1tbC8CDDz7IvHnzWLZsGbW1tcycOZNzzz2XlStXctFFF7Fx40YAzjnnHJ544glGjx7NF198wa233sr777/P9773PX7wgx8we/ZsDh8+zPz589mxY4dP90VfeBv013Ls1vxsY0yRiKQD74jITtcnhKO43gSeBMjLywuZG9keqHAGvb3dYLM7iIkKD3JFSoWu7OxsZs2aBcD111/P0qVLyc3N5eGHH6apqYnq6momTJjAxRdfzOTJk7nuuuu47LLLuOyyywB4++23WblyJY888gjgPG308OHDxMTEdG7DarXy6aefcvXVV3dOa2lpAeDdd99l+/avjsfV19djtVqJj4/3969+TH0OehGJAK4ApntaxhhT5PpeLiIrgJmA26APVQdcLXqAeptdg16FvJ60vP2l+ydmEeHWW28lPz+f7Oxs7r///s5z0F9//XXWrFnDq6++yoMPPsiWLVswxrB8+XLGjBlzxHoOHjzY+djhcJCcnNzZuu/K4XDw+eefY7FYfP67ecOb0yvPBXYaYwrdzRSROBFJ6HgMnA9sdbdsKNtfae183GCzB7ESpULf4cOH+eyzzwD45z//yezZswFITU3FarXy8ssvA85ALigoYO7cuTz00EPU1dVhtVqZP38+f/zjHzv78Tds2HDUNhITE8nNzeWll14CnFerbtq0CXD25f/xj3/sXNbdm0Ew9OT0yueBz4AxIlIoIt9yzbqGbt02IpIpIm+4fhwCfCwim4AvgdeNMW/5rvSBYX9FI9ERzt1c16wHZJXypzFjxvDYY48xbtw4ampquOWWW7j55puZOHEi8+fPZ8aMGQC0t7dz/fXXM2nSJKZOncqdd95JcnIy99xzD3a7ncmTJzNhwgTuuecet9t57rnneOqpp5gyZQoTJkzoPGi7dOlS8vPzmTx5MuPHj+eJJ54I2O9+LNLxztWf5OXlmVC48YjDYRh/31uMz0hk/eFa/nbTDOaOSQ92WUr53I4dOxg3blywyzhhuNvfIrLOGJPnbnm9MtaPSupt2OwOpmQnA9Cgp1gqpYJAg96PDlc1ATA5KwmA+mbto1dKBZ4GvR/VNLUCkJMSB2iLXikVHBr0flTb5GzBD02yEBku1OtZN0qpINCg96PaZmeLflBsFImWSO26UUoFhQa9H9U12YmOCMMSGU6CJUK7bpRSQaFB70e1TXaSY533dUyMidSuG6VUUGjQ+1FtcyvJMVEA2nWjlJ95Go/+7LPPpuO6nGCPOdPh97//PU1NTZ0/L1y4sHNgNX/QoPej2iY7Sa4WvXbdKKU6dA/6N954g+TkZL9tT++G4Ud1zXaGD44FXC167bpRJ4I3fwqlW3y7zqGT4IJfH3exjvHo169fz4QJE3j22WfdLldZWcnFF1/ML37xCy688MKj5lutVi699FJqamqw2+386le/4tJLL+WnP/0p2dnZ3HbbbQDcf//9xMfH88Mf/pDbb7+d999/n+zsbCIjI1m8eDFXXXXVUeteunQpxcXFzJ07l9TUVFavXk1OTg75+flYrdbOce67/g6xsbG93GFH0ha9Hx3ZRx9BvY51o5Rf7dq1i1tvvZUdO3aQmJjIn//856OWKSsr48ILL+SBBx5wG/IAFouFFStWsH79elavXs2PfvQjjDEsWrSIF198sXO5F198kUWLFvHvf/+bgwcPsn37dv7+9793Dqzmzp133klmZiarV69m9erVffodektb9H5U29xKcqyzjz7BEkmzvR17u4PIcH1/VSGsBy1vf3E3Hn1Xdrudc845h8cee4yzzjrL43qMMfz85z9nzZo1hIWFUVRURFlZGVOnTqW8vJzi4mIqKioYNGgQ2dnZ/Pa3v+Xqq68mLCyMoUOHMnfuXJ/+DnfddVef1wca9H5js7djsztIinG16F33jG2wtTE4LiqYpSkVstyNR99VREQE06dPZ9WqVccM+ueee46KigrWrVtHZGQkOTk5nePYX3311bz88suUlpayaNEij+vw1+/QF9q09JM61xk2XU+vBB2TXil/8jQefQcRYdmyZezcuZOHHnrI43rq6upIT08nMjKS1atXc+jQoc55ixYt4oUXXuDll1/uvMvUrFmzWL58OQ6Hg7KyMj744INj1pmQkEBDQ0Offoe+0KD3k45xbjpOr0ywOINe++mV8h9349F3Fx4ezvPPP8/777/vsf/7uuuuIz8/n0mTJvHss88yduzYznkTJkygoaGBYcOGkZGRAcCVV15JVlYW48eP5/rrr2fatGkkJSV5rHPJkiUsWLDAbRdPT36H3tKuGz/pGOdmUOyRXTd65o1S/pGTk8POnTuPmt61dW21Ou/4Fh0dzapVqzyuKzU19ZgHVLdsOfKsorCwMB555BHi4+Opqqpi5syZTJo0yePz77jjDu64447OnztuVWi1WomIiOAf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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.plot(\"block\", [\"basefee\", \"blk_avg_tip\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice the increase at the beginning followed by a short drop? At the very beginning, the pool fills up quickly with many users hopeful to get their transactions in with a positive resulting payoff. The basefee increases until users start balking **and** the pool is exhausted. Once exhausted, basefee starts decreasing again to settle at the stationary point where the pool only includes transactions that are invalid given the stationary basefee.\n", "\n", "We can see the pool length becoming stationary in the next plot, showing the length of the pool over time." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.plot(\"block\", \"pool_length\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The remaining transactions are likely from early users who did not balk even though basefee was increasing, and who were quickly outbid by others." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Demand shock\n", "\n", "We look at a stationary setting, where the new demand coming in each new round follows a fixed expected rate of arrival. Demand shocks may be of two kinds:\n", "\n", "- Same number of users, different values for transactions and costs for waiting.\n", "- Increased number of users, same values and costs.\n", "\n", "We'll consider the second scenario here, simply running the simulation again and increasing the $\\lambda$ parameter of our Poisson arrival process suddenly, from expecting 2000, to expecting 6000 users per round." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "100\n" ] } ], "source": [ "demand_scenario = [2000 for i in range(100)] + [6000 for i in range(100)]\n", "(df_jump, user_pool_jump, chain_jump) = simulate(demand_scenario, User1559)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The next plot shows the number of new users each round. We note at block 100 a sudden jump from around 2000 new users to 6000." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df_jump.plot(\"block\", \"users\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df_jump.plot(\"block\", [\"basefee\", \"blk_avg_tip\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see a jump around block 100, when the arrival rate of users switches from 2000 to 6000. The basefee increases in response. With a block limit of 20M gas, about 950 transactions fit into each block. Targeting half of this value, the basefee increases until more or less 475 transactions are included in each block.\n", "\n", "Since our users' values and costs are always drawn from the same distribution, when 2000 users show up, we expect to let in about 25% of them (~ 475 / 2000), the 25% with greatest expected payoff. When 6000 users come in, we now only expect the \"richest\" 8% (~ 475 / 6000) to get in, so we \"raise the bar\" for the basefee, since we need to discriminate more." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df_jump.plot(\"block\", [\"pool_length\", \"users\", \"decided_txs\", \"included_txs\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we see with the graph above, for a short while after block 100, blocks include more than the usual ~475 transactions. This is the transition between the old and the new stationary points.\n", "\n", "Since we have a lot more new users each round, more of them are willing and able to pay for their transactions above the current basefee, and so get included. This keeps happening until the basefee reaches a new stationary level." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Changing expected time\n", "\n", "Up until now, users decided whether to join the transaction pool or not based on the expectation that they would be included at least 5 blocks after they join. They evaluated their payoff assuming that basefee did not change (due to stationarity) for these 5 blocks. If their value for transacting minus the cost of waiting for 5 blocks minus the cost of transacting is positive, they sent their transactions in!\n", "\n", "$$ \\texttt{payoff} = \\texttt{value} - \\texttt{cost from waiting 5 blocks} - \\texttt{transaction fee} > 0 $$\n", "\n", "Under a stationary demand however, users can expect to be included in the next block. So let's decrease the time users expect to wait to 1 block only and see what happens. We do this by subclassing our `User1559` agent and overriding its `expected_time` method." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "100\n" ] } ], "source": [ "class OptimisticUser(User1559):\n", " def expected_time(self, params):\n", " return 1\n", " \n", "demand_scenario = [2000 for i in range(100)] + [6000 for i in range(100)]\n", "(df_opti, user_pool_opti, chain_opti) = simulate(demand_scenario, OptimisticUser)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df_opti.plot(\"block\", [\"basefee\", \"blk_avg_tip\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The plot looks the same as before. But let's look at the average basefee for the last 50 blocks in this scenario and the last." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "basefee 16.922888\n", "dtype: float64" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_opti[(df.block > 150)][[\"basefee\"]].mean()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "basefee 15.031673\n", "dtype: float64" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_jump[(df.block > 150)][[\"basefee\"]].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When users expect to be included in the next block rather than wait for at least 5, the basefee increases! This makes sense if we come back to our payoff definition:\n", "\n", "$$ \\texttt{payoff} = \\texttt{value} - \\texttt{cost from waiting} - \\texttt{transaction fee} $$\n", "\n", "The estimated cost for waiting is lower now since users estimate they'll wait for 1 block and not 5 to get in. Previously, some users with high values but high time preferences might have been discouraged to join the pool. Now these users don't expect to wait as much, and since their values are high, they don't mind bidding for a higher basefee either. We can check indeed that on average, users included in this last scenario have higher values than users included in the previous one.\n", "\n", "To do so, we export to pandas `DataFrame`s the user pool (to obtain their values and costs) and the chain (to obtain the addresses of included users in the last 50 blocks)." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "user_pool_opti_df = user_pool_opti.export().rename(columns={ \"pub_key\": \"sender\" })\n", "chain_opti_df = chain_opti.export()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's open these up and have a look at the data. `user_pool_opti_df` registers all users we spawned in our simulation." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
usersendervaluewakeup_blockuser_typecost_per_unit
7994171559 affine user with value 1391686415 and cos...7a9bd9a60269dfc21.391686199user_15590.358994
7994181559 affine user with value 5786055060 and cos...656cbbecc4ee12a55.786055199user_15590.724854
7994191559 affine user with value 7280999000 and cos...6690602ea0c4e2147.280999199user_15590.403332
7994201559 affine user with value 16312217520 and co...e1a3e97a609883c816.312218199user_15590.693216
7994211559 affine user with value 4441775677 and cos...e28992c763bbc4044.441776199user_15590.443161
\n", "
" ], "text/plain": [ " user sender \\\n", "799417 1559 affine user with value 1391686415 and cos... 7a9bd9a60269dfc2 \n", "799418 1559 affine user with value 5786055060 and cos... 656cbbecc4ee12a5 \n", "799419 1559 affine user with value 7280999000 and cos... 6690602ea0c4e214 \n", "799420 1559 affine user with value 16312217520 and co... e1a3e97a609883c8 \n", "799421 1559 affine user with value 4441775677 and cos... e28992c763bbc404 \n", "\n", " value wakeup_block user_type cost_per_unit \n", "799417 1.391686 199 user_1559 0.358994 \n", "799418 5.786055 199 user_1559 0.724854 \n", "799419 7.280999 199 user_1559 0.403332 \n", "799420 16.312218 199 user_1559 0.693216 \n", "799421 4.441776 199 user_1559 0.443161 " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "user_pool_opti_df.tail()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Meanwhile, `chain_opti_df` lists all the transactions included in the chain." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "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", " \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", " \n", " \n", " \n", " \n", " \n", "
block_heighttx_indexbasefeetxstart_blocksendergas_usedtx_hashgas_premiummax_feetip
10690219949916.8711241559 Transaction ffe1cc589e7320ad: max_fee 194...199b0fe32096630059021000ffe1cc589e7320ad1.019.4787931000000000
10690319950016.8711241559 Transaction 035879ebce883902: max_fee 184...199a3549b5e28cad6af21000035879ebce8839021.018.4397941000000000
10690419950116.8711241559 Transaction 703c6a75eb63ed18: max_fee 191...1999083376b49644dff21000703c6a75eb63ed181.019.1812821000000000
10690519950216.8711241559 Transaction 7a235076d7ccb660: max_fee 191...1992a70b8050808c9c9210007a235076d7ccb6601.019.1606511000000000
10690619950316.8711241559 Transaction 26973fabc2704314: max_fee 180...1996cd381d5ab7bf72f2100026973fabc27043141.018.0171121000000000
\n", "
" ], "text/plain": [ " block_height tx_index basefee \\\n", "106902 199 499 16.871124 \n", "106903 199 500 16.871124 \n", "106904 199 501 16.871124 \n", "106905 199 502 16.871124 \n", "106906 199 503 16.871124 \n", "\n", " tx start_block \\\n", "106902 1559 Transaction ffe1cc589e7320ad: max_fee 194... 199 \n", "106903 1559 Transaction 035879ebce883902: max_fee 184... 199 \n", "106904 1559 Transaction 703c6a75eb63ed18: max_fee 191... 199 \n", "106905 1559 Transaction 7a235076d7ccb660: max_fee 191... 199 \n", "106906 1559 Transaction 26973fabc2704314: max_fee 180... 199 \n", "\n", " sender gas_used tx_hash gas_premium max_fee \\\n", "106902 b0fe320966300590 21000 ffe1cc589e7320ad 1.0 19.478793 \n", "106903 a3549b5e28cad6af 21000 035879ebce883902 1.0 18.439794 \n", "106904 9083376b49644dff 21000 703c6a75eb63ed18 1.0 19.181282 \n", "106905 2a70b8050808c9c9 21000 7a235076d7ccb660 1.0 19.160651 \n", "106906 6cd381d5ab7bf72f 21000 26973fabc2704314 1.0 18.017112 \n", "\n", " tip \n", "106902 1000000000 \n", "106903 1000000000 \n", "106904 1000000000 \n", "106905 1000000000 \n", "106906 1000000000 " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chain_opti_df.tail()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With a simple join on the `sender` column we can associate each user with their included transaction. We look at the average value of included users after the second stationary point." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "value 19.17738\n", "dtype: float64" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chain_opti_df[(chain_opti_df.block_height >= 150)].join(\n", " user_pool_opti_df.set_index(\"sender\"), on=\"sender\"\n", ")[[\"value\"]].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When users expect to be included at least one block after they send their transaction, the average value of included users is around 19.2 Gwei." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "value 18.669904\n", "dtype: float64" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "user_pool_jump_df = user_pool_jump.export().rename(columns={ \"pub_key\": \"sender\" })\n", "chain_jump_df = chain_jump.export()\n", "chain_jump_df[(chain_jump_df.block_height >= 150)].join(\n", " user_pool_jump_df.set_index(\"sender\"), on=\"sender\"\n", ")[[\"value\"]].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But when users expect to be included at least _five_ blocks after, the average value of included users is around 18.7 Gwei, confirming that when users expect next block inclusion, higher value users get in and raise the basefee in the process." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion\n", "\n", "We've looked at 1559 when users with their own values and costs decide whether to join the pool or not based on the current basefee level. These users estimate their ultimate payoff by assuming _stationarity_: the demand between rounds follows the same arrival process and the same distribution of values and costs. In this stationary environment, basefee settles on some value and mostly stays there, allowing users to estimate their payoff should they wait for five or one blocks to be included.\n", "\n", "We've again left aside some important questions. Here all users simply leave a 1 Gwei premium in their transactions. In reality, we should expect users to attempt to \"game\" the system by leaving higher tips to get in first. We can suppose that in a stationary environment, \"gaming\" is only possible until basefee reaches its stationary point (during the transition period) and exhausts the feasible demand. We will leave this question for another notebook.\n", "\n", "(Temporary) non-stationarity is more interesting. The [5% meme](https://insights.deribit.com/market-research/analysis-of-eip-2593-escalator/) during which sudden demand shocks precipitate a large influx of new, high-valued transactions should also see users try to outcompete each other based on premiums alone, until basefee catches up. The question of whether 1559 offers anything in this case or whether the whole situation would look like a first price auction may be better settled empirically, but we can intuit that 1559 would smooth the process slightly by [offering a (laggy) price oracle](https://twitter.com/onurhsolmaz/status/1286068365812011009).\n", "\n", "And then we have the question of miner collusion, which rightfully agitates a lot of the ongoing conversation. In the simulations we do here, we instantiated one transaction pool only, which should tell you that we are looking at a \"centralised\", honest miner that includes transactions as much as possible, and not a collection or a cartel of miners cooperating. We can of course weaken this assumption and have several mining pools with their own behaviours and payoff evaluations, much like we modelled our users. We still would like to have a good theoretical understanding of the risks and applicability of miner collusion strategies. Onward!\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### (Bonus) Ex post individual rationality\n", "\n", "_Individual rationality_ is the idea that agents won't join a mechanism unless they hope to make some positive payoff out of it. I'd rather not transact if my value for transacting minus my costs is negative.\n", "\n", "In general, we like this property and we want to make the mechanism individually rational to as many agents as possible. Yet, some mechanisms fail to satisfy _ex post_ individual rationality: I might _expect_ to make a positive payoff from the mechanism, but some _realisation_ of the mechanism exists where my payoff is negative.\n", "\n", "Take an auction. As long as my bid is lower or equal to my value for the auctioned item, the mechanism is ex post individually rational for me: I can never \"overpay\". If I value the item for 10 ETH and decide to bid 11 ETH, in a first-price auction where I pay for my bid if I have the highest, there is a realisation of the mechanism where I am the winner and I am asked to pay 11 ETH. My payoff is -1 ETH then.\n", "\n", "In the transaction fee market, ex post individual rationality is not guaranteed unless I can cancel my transaction. In the simulations here, we do not offer this option to our agents. They expect to wait for inclusion for a certain amount of blocks, and evaluate whether their payoff after that wait is positive or not to decide whether to send their transaction or not. However, some agents might wait longer than their initial estimation, in particular before the mechanism reaches stationarity. Some realisations of the mechanism then yield a negative payoff for these agents, and the mechanism is not ex post individually rational.\n", "\n", "Let's look at the agents' payoff using the transcript of transactions included in the chain. For each transaction, we want to find out what was the ultimate payoff for the agent who sent it in. If the transaction was included much later than the agent's initial estimation, this payoff is negative, and the mechanism wasn't ex post individually rational to them." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "user_pool_df = user_pool.export().rename(columns={ \"pub_key\": \"sender\" })\n", "chain_df = chain.export()\n", "user_txs_df = chain_df.join(user_pool_df.set_index(\"sender\"), on=\"sender\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the next chunk we obtain the users' payoffs: their value minus the costs incurred from the transaction fee and the time they waited." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "user_txs_df[\"payoff\"] = user_txs_df.apply(\n", " lambda row: row.user.payoff({\n", " \"current_block\": row.block_height,\n", " \"gas_price\": row.tx.gas_price({\n", " \"basefee\": row.basefee * (10 ** 9) # we need basefee in wei\n", " })\n", " }) / (10 ** 9), # put payoff is in Gwei\n", " axis = 1\n", ")\n", "user_txs_df[\"epir\"] = user_txs_df.payoff.apply(\n", " lambda payoff: payoff >= 0\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we count the fraction of users in each block who received a positive payoff." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "epir_df = pd.concat([\n", " user_txs_df[[\"block_height\", \"tx_hash\"]].groupby([\"block_height\"]).agg([\"count\"]),\n", " user_txs_df[[\"block_height\", \"epir\"]][user_txs_df.epir == True].groupby([\"block_height\"]).agg([\"count\"])\n", "], axis = 1)\n", "epir_df[\"percent_epir\"] = epir_df.apply(\n", " lambda row: row.epir / row.tx_hash * 100,\n", " axis = 1\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's plot it!" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "epir_df.reset_index().plot(\"block_height\", [\"percent_epir\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At the very beginning, all users (100%) have positive payoff. They have only waited for 1 block to get included. This percentage steadily drops, as basefee increases: some high value users waiting in the pool get included much later than they expected, netting a negative payoff.\n", "\n", "Once we pass the initial instability (while basefee is looking for its stationary value), all users receive a positive payoff. This is somewhat expected: once basefee has increased enough to weed out excess demand, users are pretty much guaranteed to be included in the next block, and so the realised waiting time will always be less than their estimate." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "_Acknowledgements:_ [Sacha Saint-Leger](https://twitter.com/ssaintleger) for his comments, edits and corrections (all errors remain mine); [Dan Finlay](https://twitter.com/danfinlay) for prompting a live discussion of this notebook in a recent call (link TBD).\n", "\n", "_Check out also:_ A recent [ethresear.ch post](https://ethresear.ch/t/a-mechanism-for-daily-autonomous-gas-price-stabilization/7762) by [Onur Solmaz](https://twitter.com/onurhsolmaz), on a 1559-inspired mechanism for daily gas price stabilization, with simulations." ] } ], "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.8.2" } }, "nbformat": 4, "nbformat_minor": 4 }