{"id":14958517,"url":"https://github.com/ethereum/abm1559","last_synced_at":"2025-10-07T11:30:51.168Z","repository":{"id":37217669,"uuid":"277769622","full_name":"ethereum/abm1559","owner":"ethereum","description":"Transaction markets in Python","archived":false,"fork":false,"pushed_at":"2022-12-08T08:23:51.000Z","size":18051,"stargazers_count":57,"open_issues_count":8,"forks_count":25,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-01-09T19:19:01.661Z","etag":null,"topics":["agent-based-model","ethereum","game-theory"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethereum.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-07T09:09:17.000Z","updated_at":"2025-01-04T05:14:10.000Z","dependencies_parsed_at":"2023-01-25T09:15:52.155Z","dependency_job_id":null,"html_url":"https://github.com/ethereum/abm1559","commit_stats":null,"previous_names":["barnabemonnot/abm1559"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fabm1559","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fabm1559/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fabm1559/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethereum%2Fabm1559/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethereum","download_url":"https://codeload.github.com/ethereum/abm1559/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235621547,"owners_count":19019520,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-based-model","ethereum","game-theory"],"created_at":"2024-09-24T13:17:16.653Z","updated_at":"2025-10-07T11:30:49.369Z","avatar_url":"https://github.com/ethereum.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"Agent-based simulation environment for EIP 1559.\n\n## Notebooks\n\nOpen research notebooks to present key ideas of EIP 1559 and fee markets.\n\n### [Introduction to EIP 1559](notebooks/eip1559.html)\n\nWe present a brief introduction to the rationale behind EIP 1559 as well as simulate the dynamics of the mechanism, including the basefee.\n\n### [Stationary behaviour of EIP 1559](notebooks/stationary1559.html)\n\nA good benchmark case to test fee market proposals is stationary demand. In this notebook, we simulate random waves of new users who have value and costs all drawn from the same distribution. Users decide whether to transact or not based on their values and costs. We show that in this environment, the basefee always settles to a stationary level that depends on the congestion of the chain, i.e., how large the demand is.\n\n### [Strategic users in EIP 1559](notebooks/strategicUser.html)\n\nBefore reaching stationarity, or when demand varies rapidly, the market endures transitionary periods where either too many users or too few decide to transact. When there are too few, the basefee naturally decreases. But when there are too many, users have an incentive to increase their premiums during this transitionary period, until sufficiently many users are discouraged by the basefee level, at which point being strategic is no longer helpful. We investigate this dynamics and briefly compare the efficiency in both strategic and non-strategic cases.\n\n### [The floating escalator: Combining 1559 and the escalator](notebooks/floatingEscalator.html)\n\nAs shown by the previous notebook, strategic users in 1559 sometimes have the incentive to enter tip auctions when demand increases rapidly. The escalator is a proposal to automate in protocol the \"transaction resubmission\" pattern where a strategic user increases their bid over time until inclusion. Combined with 1559 to obtain a good default starting bid, the escalator could help users with various time preferences optimise their resubmission during demand shifts. In this introductory notebook, we present the behaviour of various user strategies and discuss their efficiency.\n\n### [The stable road to EIP 1559: Transitioning out of first-price auctions](notebooks/transition1559.html)\n\n1559 will be introduced by a soft transition out of the legacy behaviour, with legacy transactions cast into 1559 format by setting their parameters from the declared gas price. This notebook investigates first the behaviour of legacy users in an environment where price references are provided by distributional oracles. We observe the inefficiencies of the legacy, first-price auction-based systems: sticky prices leading to overpayment and \"bubbles\" driven by high-value users. Meanwhile the introduction of the basefee and basefee-following users (explored in previous notebooks) \"cools\" the market, reducing the gap between transaction fees and true market-clearing price.\n\n## Publications\n\n- Reijsbergen, D., Sridhar, S., Monnot, B., Leonardos, S., Skoulakis, S., \u0026 Piliouras, G. (2021). Transaction Fees on a Honeymoon: Ethereum's EIP-1559 One Month Later. _arXiv preprint arXiv:2110.04753_. [arXiv link](https://arxiv.org/abs/2110.04753)\n\n- Leonardos, S., Monnot, B., Reijsbergen, D., Skoulakis, S., \u0026 Piliouras, G. (2021). Dynamical Analysis of the EIP-1559 Ethereum Fee Market. _arXiv preprint arXiv:2102.10567_. [arXiv link](https://arxiv.org/abs/2102.10567)\n\n## Running the notebooks\n\nYou can simply run the following commands in a terminal. If you prefer, use a virtual environment to install packages in a local folder.\n\n```shell\ngit clone https://github.com/ethereum/abm1559.git\ncd abm1559\n\n###\n# Optional: use a virtual environment\npython -m venv env\n\n# Unix\nsource env/bin/activate\n\n# Windows\n.\\env\\Scripts\\activate\n###\n\npip install -r requirements.txt\njupyter lab\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereum%2Fabm1559","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethereum%2Fabm1559","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethereum%2Fabm1559/lists"}