mirror of
https://github.com/logos-blockchain/logos-blockchain-pocs.git
synced 2026-01-04 06:03:08 +00:00
279 lines
45 KiB
Plaintext
279 lines
45 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "f443be50-1b6b-41e2-ad7c-5ac96a92d620",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"from dataclasses import dataclass"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "fb9d4f63-ec30-453f-bcd0-569bbec371dd",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Cryptarchia lottery function\n",
|
|
"def phi(f, alpha):\n",
|
|
" return 1 - (1-f)**alpha\n",
|
|
"\n",
|
|
"evaluations = 100\n",
|
|
"\n",
|
|
"# sim params\n",
|
|
"@dataclass\n",
|
|
"class Params:\n",
|
|
" epochs: int\n",
|
|
" sims: int\n",
|
|
" stake: np.array\n",
|
|
" T: int\n",
|
|
" f: float\n",
|
|
" beta: float\n",
|
|
" D_init: float\n",
|
|
"\n",
|
|
" @property\n",
|
|
" def h_at_fixpoint(self):\n",
|
|
" D_inf = gauss_field_mean(f=self.f, stake=self.stake)\n",
|
|
" return D_inf / np.log(1/(1-self.f)) * self.beta\n",
|
|
" \n",
|
|
" def __str__(self):\n",
|
|
" import dataclasses\n",
|
|
" \"\"\"Returns a string containing only the non-default field values.\"\"\"\n",
|
|
" s = ', '.join(f'{field.name}={getattr(self, field.name)!r}'\n",
|
|
" for field in dataclasses.fields(self)\n",
|
|
" if field.name != \"stake\")\n",
|
|
" s += f\", stake=(N={len(self.stake)}, mean={self.stake.mean():.2f}, var={self.stake.var():.2f})\"\n",
|
|
" return f'{type(self).__name__}({s})'"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "f48a89b1-4344-40e5-bf5a-daf62ec78c28",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Generate stake distribution\n",
|
|
"def make_params(i):\n",
|
|
" np.random.seed(0)\n",
|
|
" N = 100\n",
|
|
" stake = np.random.uniform(0, 1, N) ** (i*2+1)\n",
|
|
" return Params(\n",
|
|
" epochs=100,\n",
|
|
" sims=10,\n",
|
|
" stake = stake,\n",
|
|
" D_init = stake.sum(),\n",
|
|
" T=int(10 * 2160 / (1/30)),\n",
|
|
" f=(1/30),\n",
|
|
" beta=0.8,\n",
|
|
" )\n",
|
|
"\n",
|
|
"vary_stake_params = [make_params(i) for i in range(evaluations)]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "e0ec9157-b947-4c81-970e-44aaaab92690",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"1.0023676874989447\n",
|
|
"1.0021728136582488\n",
|
|
"0.9989441779606686\n",
|
|
"1.003955035311425\n",
|
|
"0.9979128359075979\n",
|
|
"0.9967952390649157\n",
|
|
"1.0001131994785077\n",
|
|
"0.99866810490959\n",
|
|
"0.9995305561970589\n",
|
|
"0.9997020400432076\n",
|
|
"1.0028640464671794\n",
|
|
"0.995343753465011\n",
|
|
"1.0036888790103764\n",
|
|
"1.0039446357780037\n",
|
|
"1.002557224168902\n",
|
|
"1.0003009698995637\n",
|
|
"0.9966325192773976\n",
|
|
"0.999436155646863\n",
|
|
"1.0011055293050062\n",
|
|
"1.0012279020800763\n",
|
|
"0.9990862424911157\n",
|
|
"0.997983883190692\n",
|
|
"1.0056627472828505\n",
|
|
"1.0006951489102047\n",
|
|
"1.001951867753856\n",
|
|
"0.9995214922046258\n",
|
|
"1.0013051452681387\n",
|
|
"1.0001817762795295\n",
|
|
"1.001608577673848\n",
|
|
"1.0038323848688284\n",
|
|
"1.0029932115677838\n",
|
|
"1.0003573361376639\n",
|
|
"1.003303592256525\n",
|
|
"1.0012569341316524\n",
|
|
"1.0018154781780149\n",
|
|
"1.0010950688825906\n",
|
|
"0.9996986603721826\n",
|
|
"1.000756095178297\n",
|
|
"0.9995523752140102\n",
|
|
"1.003774673701196\n",
|
|
"1.0003575532958902\n",
|
|
"1.0012981753073091\n",
|
|
"0.9978712655730252\n",
|
|
"1.003281264794399\n",
|
|
"0.9991788422690455\n",
|
|
"1.0011078223742378\n",
|
|
"1.0020954816178498\n",
|
|
"1.000739932296818\n",
|
|
"0.9988078306842825\n",
|
|
"0.9968900678807892\n",
|
|
"1.000864844322923\n",
|
|
"0.9998740756506\n",
|
|
"0.9980890735520648\n",
|
|
"1.002656619284327\n",
|
|
"0.9988414987618709\n",
|
|
"1.0004452231212286\n",
|
|
"0.9958673196051097\n",
|
|
"0.9991714022881629\n",
|
|
"1.0032095137702322\n",
|
|
"1.0008233557865724\n",
|
|
"1.0026222753306888\n",
|
|
"1.0013655476449954\n",
|
|
"0.9998654558692787\n",
|
|
"1.0033415367294272\n",
|
|
"0.9987153107971387\n",
|
|
"1.0012824835057033\n",
|
|
"0.9937233071014235\n",
|
|
"0.9997935494663815\n",
|
|
"1.0048485325144536\n",
|
|
"0.9991182204497144\n",
|
|
"1.0020339308569641\n",
|
|
"0.9963310368309534\n",
|
|
"1.0006471586251764\n",
|
|
"1.0003753817973977\n",
|
|
"0.9977052796136576\n",
|
|
"1.0016008233878853\n",
|
|
"0.9982784543024911\n",
|
|
"0.9989604814105922\n",
|
|
"1.0027289956627992\n",
|
|
"1.0013661585488796\n",
|
|
"1.0001146931055065\n",
|
|
"1.0039070420413319\n",
|
|
"0.998357365426491\n",
|
|
"0.9999655060178652\n",
|
|
"1.0012139475076505\n",
|
|
"0.9993777836068626\n",
|
|
"1.0030245480963764\n",
|
|
"0.9986899832582905\n",
|
|
"1.0043352357161304\n",
|
|
"0.9966449039639956\n",
|
|
"0.9969206081727975\n",
|
|
"0.9958884500230614\n",
|
|
"1.000974943095099\n",
|
|
"1.001983074962574\n",
|
|
"0.9973382580701099\n",
|
|
"0.9978631358338254\n",
|
|
"0.9996035309131692\n",
|
|
"1.0021079444554886\n",
|
|
"0.9990394538510513\n",
|
|
"1.001959060801767\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"ratios = []\n",
|
|
"for j in range(evaluations):\n",
|
|
" vsp = vary_stake_params[j]\n",
|
|
" D_values_j = []\n",
|
|
" \n",
|
|
" # Initial stake estimate \n",
|
|
" D_ell = vsp.D_init * 0.75\n",
|
|
" \n",
|
|
" for i in range(0, vsp.epochs):\n",
|
|
" \n",
|
|
" # Running one epoch of the cryptarchia lottery\n",
|
|
" alpha = vsp.stake / D_ell\n",
|
|
" p_lottery = phi(vsp.f, alpha)\n",
|
|
" wins = np.random.uniform(0, 1, (vsp.T, len(vsp.stake))) < p_lottery\n",
|
|
" \n",
|
|
" # Total Stake Inference\n",
|
|
" empirical_slot_activation_rate = (wins.sum(axis=1) != 0).sum() / vsp.T\n",
|
|
" error = vsp.f - empirical_slot_activation_rate\n",
|
|
" \n",
|
|
" # Learning coefficient\n",
|
|
" h = vsp.beta * (D_ell / vsp.f)\n",
|
|
" \n",
|
|
" # New total stake estimate\n",
|
|
" D_ell = D_ell - h * error\n",
|
|
" D_values_j.append(D_ell)\n",
|
|
" \n",
|
|
" ratios.append(np.mean(D_values_j[-10:] / np.full_like(range(0, 10), vsp.D_init, dtype=float)))\n",
|
|
" print(ratios[j])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "e993f286-400b-4338-84fe-b1ef00325056",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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hmZbXl6e8PT0FCNGjNB6naysLOHh4aG1PTY2VgAQkydP1ir7+++/CwBi1apVWtuTkpJKbJfKd0/t888/Fy4uLiI3N1cIIcTZs2cFALFhwwatcm3bthVubm7i0qVLOusixOPvmp2dnc7vqbqcoUESAJGUlFSivD6/9bt37wo3NzcREREh7t+/X2q9IyMjRUREhNbjP/30U6m/Byofu9vIKDp16oSUlBT07NkTJ06cwGeffYbo6Gj4+/vr3f3wZP98UVERbt26hfr168PT0xPHjh0rUf7q1ato164dioqKsGfPHtStW1fz2Nq1a9G4cWM0atQIN2/e1Pzr0KEDAGDnzp1l1iUkJATPP/88fvjhB822goICbN68Gd27d4e7u3uJOj948AA3b95Eq1atAEBnnUeOHKnPodDab05ODm7evIl27drh77//Rk5OTom6vvjii5q/vby80LBhQ/z999+abevXr0ezZs3Qp0+fEq+l7jKozDFTKBTo168ffvnlF+Tn52u2//jjj/D399d0Laq7Y3/++WcUFRXpdSzUli1bhgULFiAoKAgbNmzAu+++i8aNG6Njx47IyMjQax9PHte8vDzcvHkTL774Iu7du4fTp0+XKL969WoMGDAAb7zxBr7++mvY2T0+Zd6+fRs7duxA//79Nfu5efMmbt26hejoaJw7d07vOj1t2LBhcHJy0vyt/myf/Dx12b59O+7evYuYmBitz8/e3h4RERE6P78333xT6++1a9fCw8MDnTp10tpHWFgYXF1dS+xDCt89tVWrVqFbt25wc3MDADRo0ABhYWFaXW43btzAnj17EBcXhzp16uisi0qlwsaNG9GjRw+0aNGi1DobKigoCNHR0SW26/Nb3759O/Ly8jB58mQ4OzuXWp+hQ4fi4MGDuHDhgmbbqlWrEBAQIMmxWXLAIImMpmXLlvjpp59w584dHDp0CAkJCcjLy8O//vUvnDp1qtzn379/H1OnTkVAQACUSiVq1qwJLy8v3L17t0RgAABDhgzB9evXsXv3bvj7+2s9du7cOZw8eRJeXl5a/5555hkA+g0mHzRoENLT07F//34AwMaNG3Hv3j3N2A3g8cVy7Nix8Pb2houLC7y8vBAUFAQAOuusfqw8+/btQ1RUFKpWrQpPT094eXnhvffe07nfp0/2AFCtWjWtMSQXLlwoN+9PZY/ZgAED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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.scatter(range(0, evaluations), ratios)\n",
|
|
"plt.xlabel(\"Stake Variance\")\n",
|
|
"plt.ylabel(\"Avg(D/D_true)\")\n",
|
|
"plt.title(\"Stake Variance vs Stake Inference Accuracy\")\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "4e7536a7-f381-41a7-96fd-2cc5670f1085",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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.10.12"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|