diff --git a/examples/computation/computation.ipynb b/examples/computation/computation.ipynb index f8dbcae..7224c50 100644 --- a/examples/computation/computation.ipynb +++ b/examples/computation/computation.ipynb @@ -9,39 +9,39 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: ezkl==7.0.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 1)) (7.0.0)\n", - "Requirement already satisfied: torch in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", - "Requirement already satisfied: requests in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", - "Requirement already satisfied: scipy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", - "Requirement already satisfied: numpy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 5)) (1.26.3)\n", - "Requirement already satisfied: matplotlib in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 6)) (3.8.2)\n", - "Requirement already satisfied: statistics in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 7)) (1.0.3.5)\n", - "Requirement already satisfied: onnx in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 8)) (1.15.0)\n", - "Requirement already satisfied: filelock in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.13.1)\n", - "Requirement already satisfied: typing-extensions>=4.8.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (4.9.0)\n", - "Requirement already satisfied: sympy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (1.12)\n", - "Requirement already satisfied: networkx in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.2.1)\n", - "Requirement already satisfied: jinja2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.1.3)\n", - "Requirement already satisfied: fsspec in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (2023.12.2)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.3.2)\n", - "Requirement already satisfied: idna<4,>=2.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.6)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (2.2.0)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (2024.2.2)\n", - "Requirement already satisfied: contourpy>=1.0.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.2.0)\n", - "Requirement already satisfied: cycler>=0.10 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (4.47.2)\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.4.5)\n", - "Requirement already satisfied: packaging>=20.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (23.2)\n", - "Requirement already satisfied: pillow>=8 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (10.2.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (3.1.1)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (2.8.2)\n", - "Requirement already satisfied: docutils>=0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from statistics->-r ../../requirements.txt (line 7)) (0.20.1)\n", - "Requirement already satisfied: protobuf>=3.20.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from onnx->-r ../../requirements.txt (line 8)) (4.25.2)\n", - "Requirement already satisfied: six>=1.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib->-r ../../requirements.txt (line 6)) (1.16.0)\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from jinja2->torch->-r ../../requirements.txt (line 2)) (2.1.4)\n", - "Requirement already satisfied: mpmath>=0.19 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from sympy->torch->-r ../../requirements.txt (line 2)) (1.3.0)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (9.1.0)\n", + "Requirement already satisfied: torch in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", + "Requirement already satisfied: requests in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", + "Requirement already satisfied: scipy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", + "Requirement already satisfied: numpy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 5)) (1.26.3)\n", + "Requirement already satisfied: matplotlib in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 6)) (3.8.2)\n", + "Requirement already satisfied: statistics in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 7)) (1.0.3.5)\n", + "Requirement already satisfied: onnx in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 8)) (1.15.0)\n", + "Requirement already satisfied: filelock in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.13.1)\n", + "Requirement already satisfied: typing-extensions>=4.8.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (4.9.0)\n", + "Requirement already satisfied: sympy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (1.12)\n", + "Requirement already satisfied: networkx in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.2.1)\n", + "Requirement already satisfied: jinja2 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.1.3)\n", + "Requirement already satisfied: fsspec in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (2023.12.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (2.2.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (2024.2.2)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.2.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (4.47.2)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.4.5)\n", + "Requirement already satisfied: packaging>=20.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (23.2)\n", + "Requirement already satisfied: pillow>=8 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (10.2.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (3.1.1)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (2.8.2)\n", + "Requirement already satisfied: docutils>=0.3 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from statistics->-r ../../requirements.txt (line 7)) (0.20.1)\n", + "Requirement already satisfied: protobuf>=3.20.2 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from onnx->-r ../../requirements.txt (line 8)) (4.25.2)\n", + "Requirement already satisfied: six>=1.5 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib->-r ../../requirements.txt (line 6)) (1.16.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from jinja2->torch->-r ../../requirements.txt (line 2)) (2.1.4)\n", + "Requirement already satisfied: mpmath>=0.19 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from sympy->torch->-r ../../requirements.txt (line 2)) (1.3.0)\n", "\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m23.3.2\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.2.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", "Note: you may need to restart the kernel to use updated packages.\n" ] @@ -168,14 +168,25 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/t3/5psrvr1x0w1_6n9kx2n7d9700000gn/T/ipykernel_37051/4262130413.py:7: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", + "/var/folders/89/y9dw12v976ngdmqz4l7wbsnr0000gn/T/ipykernel_43530/4262130413.py:7: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", " return state.mean(torch.tensor([out_0, out_1]).reshape(1,-1,1))\n", - "/var/folders/t3/5psrvr1x0w1_6n9kx2n7d9700000gn/T/ipykernel_37051/4262130413.py:7: TracerWarning: Converting a tensor to a Python float might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!\n", + "/var/folders/89/y9dw12v976ngdmqz4l7wbsnr0000gn/T/ipykernel_43530/4262130413.py:7: TracerWarning: Converting a tensor to a Python float might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!\n", " return state.mean(torch.tensor([out_0, out_1]).reshape(1,-1,1))\n", - "/Users/mhchia/projects/work/pse/zk-stats-lib/zkstats/computation.py:75: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", + "/Users/jernkun/Desktop/zk-stats-lib/zkstats/computation.py:166: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", " is_precise_aggregated = torch.tensor(1.0)\n", - "/Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages/torch/onnx/symbolic_opset9.py:2174: FutureWarning: 'torch.onnx.symbolic_opset9._cast_Bool' is deprecated in version 2.0 and will be removed in the future. Please Avoid using this function and create a Cast node instead.\n", - " return fn(g, to_cast_func(g, input, False), to_cast_func(g, other, False))\n" + "/Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages/torch/onnx/symbolic_opset9.py:2174: FutureWarning: 'torch.onnx.symbolic_opset9._cast_Bool' is deprecated in version 2.0 and will be removed in the future. Please Avoid using this function and create a Cast node instead.\n", + " return fn(g, to_cast_func(g, input, False), to_cast_func(g, other, False))\n", + "\n", + "\n", + " <------------- Numerical Fidelity Report (input_scale: 2, param_scale: 2, scale_input_multiplier: 10) ------------->\n", + "\n", + "+-------------+--------------+------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| mean_error | median_error | max_error | min_error | mean_abs_error | median_abs_error | max_abs_error | min_abs_error | mean_squared_error | mean_percent_error | mean_abs_percent_error |\n", + "+-------------+--------------+------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| 0.025000095 | 0.05000019 | 0.05000019 | 0 | 0.025000095 | 0.05000019 | 0.05000019 | 0 | 0.0012500095 | 0.0019531325 | 0.0019531325 |\n", + "+-------------+--------------+------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "\n", + "\n" ] }, { @@ -184,7 +195,7 @@ "text": [ "==== Generate & Calibrate Setting ====\n", "scale: [2]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":2,\"param_scale\":2,\"scale_rebase_multiplier\":10,\"lookup_range\":[-194,338],\"logrows\":12,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":2624,\"total_assignments\":370,\"total_const_size\":74,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,2],\"model_input_scales\":[2,2],\"module_sizes\":{\"kzg\":[],\"poseidon\":[2624,[2]],\"elgamal\":[0,[0]]},\"required_lookups\":[\"Abs\",{\"GreaterThan\":{\"a\":0.0}},\"KroneckerDelta\"],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" + "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":2,\"param_scale\":2,\"scale_rebase_multiplier\":10,\"lookup_range\":[-192,338],\"logrows\":12,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\",\"div_rebasing\":false,\"rebase_frac_zero_constants\":false,\"check_mode\":\"UNSAFE\"},\"num_rows\":2624,\"total_assignments\":302,\"total_const_size\":46,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,2],\"model_input_scales\":[2,2],\"module_sizes\":{\"kzg\":[],\"poseidon\":[2624,[2]]},\"required_lookups\":[{\"GreaterThan\":{\"a\":0.0}}],\"required_range_checks\":[],\"check_mode\":\"UNSAFE\",\"version\":\"9.1.0\",\"num_blinding_factors\":null,\"timestamp\":1709450403352}\n" ] } ], @@ -220,55 +231,19 @@ "execution_count": 8, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "==== setting up ezkl ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n", - "spawning module 0\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Time setup: 0.8651909828186035 seconds\n", + "==== setting up ezkl ====\n", + "Time setup: 0.45028138160705566 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", "witness result 1 : 12.75\n", - "==== Generating Proof ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "proof: {'instances': [[[3403910923874899465, 10189271995497415241, 320534846571637606, 100697469688841817], [13248845538017813727, 14468596293127334607, 8656550560197473959, 2161239339877761890], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [12362648763242643187, 13940026059969050459, 6027715406760125980, 2781413989188023337]]], 'proof': '1ece89bb01f80c0829026081ae5558d4d6fbb7347311be4b21b8b89e7e42bfb7078a69191dbfc31e1873d596b492a5ae9a599349e8cba18db69ff91a76dc59a41527fb20a6b65bc4ea7687e3a2df3307eb6c3134121c7ff624c92292d86171751d7496d8be004190b11a393f4ad05c3d2de6d1aae53d5210dbc16048f350f9cf2ce86cc113c462e83d2b0608a9b88aa28a6b5de96ef0c151bec1cbf0618405770471913d8efd53d6212bb1ffce224221b343a0a81b1f0eee91905e71a6dbf1210f62d553b5d61772c4c80eb5a19bcaf6b5337248975fffe83598fcf08ae432b3272188c85b274937b54c77f81124b28c9e7024e7deb1d8ee3bfd3bbceef4f00028195ff5ea5711e0871410610bc3f53b0ca2397958aeb119b1169c7d6096422e0aa17a4859ad681733e6bebbbb023c99d53b270e134215f3c4c8523f5330e60919acef5e89b7466cb100ef4f5422a1178691c241923a533c4843d5443e4fdf9b0b9784601fdedc8e30df0c84defec5c7478ad4080467bb5387e87b581f18751100b17c2e9825d5a0bfaa14a49d6da29fbbc3bb322ecd8f1705454401d34060f32c10c6c3b20ed3ede4c86fbe2d084270c165d862e407a2050c6fab3cb6ebd4140b69bd5635263ac0c92baa05f2d6d32e239713d6552a04a7de0775856e28a12917bab7243e9a5fcc466606618d83e21694b910dbd62465549971e5ac987b00021d0143cba8756a8bb0e71a15e37b5cf048ba5318b53fd67176c9a37d9ef09fee056732c36c46114cbaa03d10747f16454b8adb77d97e62df6ebbe32847716b93085b51671d3c1f036ded2a70bdcf8f5bb5035d17d7bbb0b3dbcb1d76ab567aea0ae4e37d1e9b0c79c0c92df767e0ed5bac5dfecf3ae3206cee2a025bf360d0a20fe03847173a7f908c1e0937126820f0a2522bf28bb1b9d603233bb0399efb8d2e83b0f0b8f8da12eb0ff6340bcc50fb635433b3d537b44c2fac508d61a0fbf40849d8bcbf2c21549a612d449c85a3c2996a654f05f9071aa3b01547624475642316e2aba3a2d1d26d33457ab1b3a6bcefe6a4d80305c538142b7c39f4e670c516ded3691d3cd14369e93f5f4ccd2941a39ae529b193e2a89c398d6eb589661014935337b8b7a8dee134f3419424453974742038de6026d64ae163b8e5e56c0518e1c210ed08a17d8c9834d6c933ec350cd052e49569dfeb3e4ff63d01664da72735323e7b62dbb195ac8eb2c16223c4a6a1afb22e8383f4acaa5f1a233d4406161377416d8cbb451075147c682ef3ceb7dd50cb874f4d3cecd973e4434b60d512106651494e9a0f64c81b849c2dba84b44cd19fb74299d861c8ff68c2fbbcd5286cfbbefbb21d994f9f9276220b507b46ed321036fe886e89a68e291048d7fc0d14fd51b216f80e10a16c4366633fa020035bc8f306a6ce252bf4f5f32f5b4c17b613d3c0bcb66b728873b65cf01ad1ca97846f6eb6732ef8247a10959f8e2808e8945a94c94fb9be82c2874d17f72fb120352151823391fdc8140eaadb9a952affcd3b601cf21c9aec0866cc6afdeba5cecd916983784911d087372f1272f01940eb61e014de0b7f8895beb973f7f9db4f76ea8b7ddbe85541cc0788231cd31e1ce9a7463dc08f9e6ab6f5b69ad1d732ca55dfdc15f0caeb8c457ecdcb841b256c286c71ed44aab9a240bbdf42fda8ed7e18d3b5074ce99b6eaaef6a2b972b079ea567b22007be2e01cd1afcfe1606c7cccb0b7824288dd0aced3b5dee359a0b0bac0e6c884b74ececed91c1f10e94a9dd83280db53fe7008d3f311265212204841ab74038fb42e92aa9d5767754f104ad1278efb6528e377d58053eaee8fe006ba7e09807a317d022480542967933be4604ad22c6f337bf3552e70f72692c2f381bdd20855a40a30c5b80a8835861bd035ea6402322c9156549fe04131a3b19b3bbd4cbc9123f290461e22b26361dbc83f7b75b5f8d54a03e985593564c672e454e18e7a10f97416c866de820db8fa45a7ea8fb3e7a1eaa82118e7b78f9c80cf6bd21c6465b22438ae19f3b5299ae7bd1df370035501683fc40b27aa94a3427ca3c3857676e6bdf93bef8d3638d802dea6e85b48b7fda37b4739ff539625c066363dae71b1d36b653e7573d48cff2c0b932a95f5b24d046e614732e279e9d2cee2b6aac3674f2bf6f656216b6cc16e7f6b9e21abab7ae52d0d11616d5a0c51d02aaf6812cb3dc887c93cf475e44350f5d58d93e4f562530346a36fb7bd5f2188e6eb3633e75323bba8e30fce2f9590ce9f49158f856ca42b3f37cfb14f07221940b8e881297f450fc990ad7b3e46556314b0fb64af4266fd42fe9c79baa63064bc004e360744e84bae394842bdacdcd0bfb3c3f9b27ea740267edca608a2f0ccee91252780f697291240892d748a70cd0611d0ba620b8a66677705ff0f1a2225a69f301769c390b119a6a51423e1404858b1c96669a4cfeaf4365817205920dbbf318c8cb857013e4815cbc957e11bbd3d2912fead5ba999ecbb3a6c2aab52d28af56f02a97cd52b61aebf064328e8625b299de1788973f1814b4a89a077901ebc9b47961a2300db7017904ed7b64b66554df7ce0d0854e65a9a0c81732fb26071d3cdb8e50ab38297e8c1fce9f0a330a6a850402ee2eed1d83f9d1f923c00d5ed1a1f7b3fdfe90fd65237a0842de3b272470a49256e9e6d26e17fa13cb4d083d6749cab53ac7f5421cc351832dc7267528b7dfdfd32d80ed401d926b55080c50401ca78c59a4f04c447f657862084b472d15455fe9845303d39d8111b8e21536003f6c0af96af30f39b4c9ef590df8f38882f9428ab6e04446e8f8aeeb8d17d504e0f1e7069ec38a56209fb88008bde75d8cdafe8cb4098718da3b76a93815c95d75e33c33cceb00787cbcb62fa2f826043fe050ce43847bc8c61e21fbd826fe23a5b98181ff580e024039cc71bf3c7365ac57761956a80c8d6d794cdd9e2904425522242181b0143ffb8ee862ae52d8d4dd8d21dcde392c13d98233b713303fe1d509168267c9d48e358e53271cc98c84a3cbfe29b7373bae694348c16f22bf3799a13a882ccbfab2b88e9a35eef3929dbc0b9ec3a1c0804a2b59e165b90b733134c446dba5ea36bcf0b00d52b758c4c8f354e9ea4d52c51dc176f4c8640e523d6d6713b61d79a1467d82c25c473fe9f3361af7936c5beea4278fdf5fca06bb845fd533a72244df47857c301ee4620b725d83f374900aafaa332b7d30fe0d3205363dd57ad3d1eaa74625c07430253f23c588beff666b5bed38e1630cb80c5b5bf281b55b3fd60d8a12e24eaf4caa6f70c1e4361bbd304294f9e5656b50139541e6de46e591b33d8c9ef0007d4fec692e50535e5baafde1f404afa3f3b72bc9d99022be1467164ccf2b262344172850eeadf0f119cbd343b0b9a878850c058be9297e1a21e979f1b2229b4fda3d864a397b5fcefc32c55025d4aec074a12fa643cd3c54e3f217f34c3aa0c2bbc77efb7b618b71c5e80c1533337b6f55942a3e83d2dd302401ea4215547cdfa1458fc1e34eafcddea05e55ca7a0f29fa9d130d5a6efa31477716cd068879c25f7d2f5e92bc11398eb612d97d3a6949eb462b1f11885f60092f146fe2a5e8dffbf576db73cb804df19220efbad56efd535412974be77f803cfbbcb582f2737542c30e5c9b9497f8152e717a284f4fbc6dea1a192c72fc07b29ae888350a182df4849ecf356bd7b9fd39b07a0fa5caf0b6bd1947c4a03e0a8ab0128f7fcf2eec4780636f12144269527f835e55279de732b62559c5a7c1c6c57cb6118b8d221df76744b9a9195db7ab0b8533872ebbd957bb1b606436a9618ebcc2e78df93307634882942c997334f158bc877b3fba6c1e1e23065de9c4c1204765a80507fcfca1933d6194d3915990a93172282cc0bfc0fc0e3166600fbad46c0b840a1dd381270de25f85b0345f70edeace91fd352d253000000000000000000000000000000000000000000000000000000000000000000da56cfb290469c365a3361f31b086a6e6c9138dbbf7e4a21b87c20b75c640d510d1dfe5ac9d43871bed9229c78e2b990b10003f82a6173419c98fd175d0adbf29f7dc301f72a85f050b012b7334f8ccccfb4fd207de3a135bc7dff8d2a81b3c1d3ea64556457c6479e0aac9adbba1ed1f58db4af39bfd4e409648d17b552cec15f86f4a6f2c134e66eed943df463909126546aa963186e4f06c3a4be3a524a72a9805899141c0ea5729b20799b5948128bcb61900572c67489bd8fbbff23cdb000000000000000000000000000000000000000000000000000000000000000008eadeba03d209585c8fb24bcfb740e4e6bf060e0e3ae634fa92f96ed709db1c0db75a0008eddb8a168bb048be304926e2ff6c11ca11dfcec838ff46cecaace918f3aff6df2dd6e12cb369fb75bb3f273afb12366012acc8bd75d14fa6fc2db20e56c885b0bc996c4622f1934960d0767ebad2534d2ab3df5a451f2b7c929b001ed707704a7cc5cd52c5a7993690e667d2ab9debfe868808df6fb96df7d515e11d032981b12115715de970d60a966b6247c414a2f734e4c9eacdd96cc56b5e3e0dd8c4a42e4d049eb1dfdd384ca3addba3c5ca1d686a41b2f16e7b6e5f68e2a0041cf7feeeeb48d2d154820f54c3e785851f3166371a66a968aa3dcf6dd1a48717137415d8e8505a2d710042840b9f4041c8329a580ecd602ce3a09baf80f449171c33467189cd4f9e8c0100f10a3ca71e57174e9a7616c04faf40c88cf4bfb62e33ac2632c39eeee64666d6e38668350bb82a7973b0d28bd67f20ea9533d0690c5949e2147f681cb01e1259f09e89bbec5eb26e70eb76a03de2d13b8768b885189e8bcb8503b3c759ebd86d9335eaf48f3a52e1edf53027cc38c55046d691221ec88286a8909a63a069e5da6742655e3f35ef20029d92015beb39838f32863430202acad94f6f52b29acda8df1232e9f1bb22c0e3b51f4a0ccbe378f35b11702c338f04d632244f8be600481549c40faa6174956e67de96c465178bba3ab39728c53cfe30ae0a17ebc52980bbafb7f4f3cefac4bf66c3ee43d15313bd7c301a093265845c82c0f25f0d29d7a5404c711e0224693241d313b0e3d2cff026c83e016cf4e62c017bfc8dbb0536e7990b56011490f7bc6152aca638c6b8d67013380633c1271cf9c1ba8bbe9354dc036801f2094e01592715a08be7f1941a77a5cd0ef27b481413e6f0e1978257ba87917052b42f048e868cf632a00d9ac9c9b4b917f2b38462be7ae5990ee0f05e2b7e3d7bd87f71669040cbd4112485e000f40c0880845b0ef79c873bccbe094b22f48bcee8e92291fbf06608e64929b2c837180963e14e6519fb7cb664eab40040635be4d060a8ca81364bad5e92d2641e5df728742a052b3126d2447c3198e6e7bccb03fabe7752841ccdb6186b433b1e64670bc28c08138d636b448198ba408148466eef6c752b45350f36dacedc46dad806154740362784b561e66f34daee5ba6c4499701275b9360dbc57454e8d51094e507caec7acfe21713dfcbc46e90603304d0a252824bd835198f54ef9ba04bce872a17a95527ff6145bc9c6c02c9f1fa4613385e6becc634530267fbd3797d03610efa1b176aa234b7eedb079adef9f8d9ae5792eec3744534f2865a0bb6f23b4f0a0090c9f6b9f78313c86a6a2b8ced696c59bad06bfe7a881424e355bdf4405d167a784e39b828e0049e34556e94f5f94d4b81414017dd7fcd64372eaf1aa1370e0c9d732106748aa845ab28b773e1f4e6a557004218086f7b41fd65c5599fc5072d013e5f34f25c0866dd5194ba5cba9622f413716e7a9b7054d366f2662b5f19cbb1ee142b8499c44db9e0cde6d31c28851d34a75246b735c36db7b9c483390944fb4c848eeaf1860e162fb66810d58acfbc81a3c65c34c64aeb59b57e622c26f746786ad077b29fa13c2fb521162b2374f2078709cc8808f6e1fe3d72080026df16d2cf414571dff77b5000386703c911de1c64cdba3b3d9de7f565ff760708451d0f4e53f76fd5b218bbb97d25589288591d9d51d2930ee88754b83ce8ae0afdfcb60b4ae98dd83e42f37626e75df17ef3701a2c7a7bbcb756d499c99af50410f27040fe030bab897feb6cc7bbf2594f63f08771197ed3ac2e65b1f1aa0418002090625ca12b163bb8bc0a1ab1213c4b8d4b7a9d13b01a3277b93f8d24db1b498506b99c926684858641a521dbbcd08b45f840d8de4ea3c82376739edd7f102344846006fe1601907294e7cde5852524769571894a0d914d9e2aec4494d5', 'transcript_type': 'EVM'}\n", - "Time gen prf: 1.2174098491668701 seconds\n" + "==== Generating Proof ====\n", + "proof: {'instances': [['43aef79b2c02e756f80f1c9c237be69f1b7497caef637e58f03450a15b654b21', 'f1a01cfac5286cb0b9c26b8dcd3e1437756456e3e433a5571d64d0781222490e', '0100000000000000000000000000000000000000000000000000000000000000', '3300000000000000000000000000000000000000000000000000000000000000']], 'proof': '0x2c1a90d0c1cad26bbf06847e40f7d806f74630aac569cdf49ac990cfdf2e976d17c3b61ba6db3e2c40845d3dc9c802d300d079031cab38e49a7be7d7dae7b0be1d5113f5ad3b6e339b76f3a6844651853f7df28acd053d1871609e6aac4e603916eca9ffe1b8fe0e1be093737236a333e8e8e719db87a16648b7b806556bc1052fac3d927d5c7d3d883d8f45aa31724be2c1fb34822d82b236dfb7c831c479220132f381eeff7b747831fe2eae3a74c9fee5af6ff669297d1e09672e406c64360f71f25f53c0f24bdd2e74308925f1545350d122a8f396da0ab422694ae948012fb1d9040ec7856b913396b176d86284de29a783d65c6608b9f49bdb17aa5ed91d7e6e0c70e71972dd4c525d196acd247f669a77605c0cb7c40f762a1eca3f0823370021951ba5ed15ac0ee2e5ccfa4f425e0502c7fc0a848ff3766e292bdf411e6f04d3b455305bf0284af3ed169cc60439ed412b5dd643768c7835b0fd07850d42addafbbbd1ae4ecc7b37ae2b74e50967c4c3da68e816416b262f2c76e2052e1799e9690c7dafacbd01f7f03bf0e24bd168e2a929b8ba8e71a6ec9f833aab1e97d6340a5781a50eb29c2dd11bac1a30d029d0f3474785cdf18d0d7bf0dae40ae476746980d31332ac069ce06d14cf8fb86eaa45d04c7ad1f2d6ebbeaf8e9f09ea37e845a0cd57cedfbf0a8e225bb01da278a27923d3c5c45499f5dd6aacdc1849413753eaf4c2319c84c7e1c2b8b2199b9b57caad98387625ea0333952e50299fb462db83f80599606ed472d88225f49e8eeb0dd6dab3dd355eae4012ae6a258eea4cf7fd383761a59e76476f76e7f45f10974f6dab6dcff8e5f88b6bc601145dd98a4daa98b6e63e2ff4f4e49f1f6d6520cecb2fe15371715a88d8c6cb411efd10dd473ec1c1c12485cbd68fa4ea35d315914d0d08c3b72c7f13f2ad6b9b218503b34403e6d7715028d550e9da9982c33a4de075483528dbb227c0daa8372fa2cc294a8306c5c188c20b442ce9285c13c87ba3f015e2371c421867d470c30b9dddab1a4742c66561b0082040e8e8d024ca98de0ca0d5449354375653909a0de60e1efe0b7e1c0aab3aaf0b2bbd82e3550364a98bebf0526ddb70d5ff847c1a09c68f401dc22582349965424f79671728f507cc8272170deed3e0f85b0c9f053aa05ca70b44af10da718c06dd8a288131934b9822c14d6e78537fd929a563199dbf8a35a7d2d32bd2a9052e0c46619dfb1a71e0439773deadb490f4f410fc2280148dd0096e23e8befa2de046d0187c6aa9e0d2465310c3e397a51337f34627f69d836a8ad7de749981a841282f25e99ef6034ae6711fc455a5ef59dffc403006f3d032a17e79389e565818129f5d2d82b8f2b197af9c3ba20d5ef8a39fc5268c4fd067ae704bfca1e6b5a6710388374c9003410150cee623930f53dda0692c2c85a2fb4bf0f1d1f62f9f1bce83410d361af0e3db4fc14a2d8e21218f6a942b441169a2cdc3303a5ea54b81b0e6a0e2b342a6db8f22d79f71f4113f331e99249fdb00a37817741de26cf2abae3b42b1038d7c2ceb1030bc7a30e19e28ac0c09063af2f52a752ee7ccf395ba8be6097fbc02504a3893c6974c15d299605c7b1bf432d7aff9012792fd208f4fe6b70e0396c8b0d93e845e12cd22fe223ce3db200c71649858d7350076f7a1e5559a4f1b10c749a07daacbc4a41bfeee259a52037c480efb07f842127c20128e339fa6496c07698af0e1cfdd942feb6cc705550efd161340d546946233343f5ef3e35958ccee7ac811ba55021ea39c59f52c0306aa756134a43361576c0bb751772ea2e5d6b8f7e48aad3ef6c2f1b280e88ec6151483b8cd22afda1e4578718b57617af1dbdf53e26444c99e13d948f0eb768902fe748d5cda9d8d8e995a2de9f73b235c609878743ec15ce215fb90ec2629872e9da3e7fbce38cbb771ccc0e12588af35469d479ff511ead55fa473f1dbc01f149e0022ae8e945e3fa816fe7589f456edb7427a9a08406d3a52b1056da2ec600ded185fb4bd115108e03296a1b011ec6a31459aef42e49fd4927f8c5ca76f5726af7bc7e8abe57afd335b6841d73776325575d4051efdc6ebce3a242f85ca12016b57c0bf5e4f7ccc17a92208500c30f7659ee6f8404992a9e17436cd2903472be9f519fa9b0f207730c1b65d952a77f1df4e5a15478bf43cc0a8c8f8c857a22f3d428ad7cdd2bf4a95e7714eeb394d49ca5d0bd5fae1900ee5297500cfc6fb2905f4b3efeee2e31734a3997e6dba918f4aaf78dac258f422f16a39c8a0cdee164adfc127bf7b4dfdd6a1f42bda3ead5ffa819034e842445754ea119648a50f2555be65405dfa7e2c879ba7f722b27b1a2d9dd24aaaabec74bac2a09a9eeb2d078e9ec3f794c2d8373d2992dde6d4971f3691fe5ed6c0bf4c37c9c97809ef8c2305171d264d43c904efae36b215a898e39161ecec8cd9a28f3514e041413100105628503b766d51945659970f7f1984e3e2fd8e21aeb4c44941b7a72bd060b32dd2666798d7bef868ff4c94fd60336841124e65487839d2f8b4a370375ed9860ab684f6be02156a64588315c911f997e116102e315badd5ddbcf59a53f853c52da1dfecc3a0d92e71f2cd2e6090cde3ea8de35a2d42dab478884a6dd0297e942f5cef1c885b2c7ffd088709ee2d22fdc14904e8cc658e8a7fe1f031426ada6e29ace11853e9e19a7af5cb76b9c7c13dac7c79c0cbf6ef1d34e0e39861753bad29c82ed3e6bc156be56ea10640e4d5159be2746f77b7479c5bd4cc4eb7f7ab7f06ae5b3a5be55c7257f6bd4fe5ae47a13229b49cfa07e6e9244d6dee414a51b10062016109ef36b62edaeea6a1a8559250c553b6eb4fc39d045d8b88933e6c38221669105bbdb62d29cca4c5ed2ca7ce81c0b51709981495864c66de401418890d9316d97c47da13f31f233515388308cef0ecc6690c2173325d71b14288fb6323fd2bae3e78ebe463b04830faf4a72ee28f16db3aa87173c06151e02054325c0f7f8bbb3a340f791697cfccb4e70957b6c3f200c80b244dc680e237f09ae508000000000000000000000000000000000000000000000000000000000000000029effe59b9e9cbdd22bcf9ac346b87192415de686a8baca1f30889258147af9a00000000000000000000000000000000000000000000000000000000000000000b16e15505fc9351ec710658d070dc6830ff596d8f5a67e3f203ff0c4305826c0a004bf66dd17f2ce46d8029e62d00fd4f8c8d7121e037da334b947595fd1bbf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e37c89afca8d3c9cdad398e1f574800109d2ef7b2576db5788cdc9c410b20de14a81b6aecc7f75833b27d7b9ab6ea1806ef1ba66062baf00d6055c5e190503c00000000000000000000000000000000000000000000000000000000000000002cd5da48760f3cbaa3b61f252b672e12caa8aac31e00be3dd59d7b305ab9417e12f69923b8ba53add5c25b29cb6998cc582f242dac00644f5ac17cd1c800a90900000000000000000000000000000000000000000000000000000000000000001753438a7f04cd214cd48d3b045285da6d16485316e8c635da38619cbdf2df3d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000227280c8596a9a421d4751fd8c5978c3c3e061294cd78bfb0f355f3cf1042da614d24d8614db7efb69df41e024905219b17ecc6f34d4184bd7205a4bd547e8be2a12cb3fc2df769427d65e0559d1b9aaeff510d5a63b0df43bffad706d7c0d6d01c886fe9ddaea3a40aaf926fbb92f8dbd7507b18c32718d7ab6cadbc10765c80be5dd45662d8513408a7ab827307ab7216c9b12623b26ee8d8d0913caf9d21b1877d3c612b6d4eb327644cefe443a87dc8f05f70a0ef745a4975d7fa766ab8422993a879111e496b91031bdb8cf1ae10f703163adb4a5e813e61f5b35f06af42ad767a8cc4cc41da6269dd9bce678ec8f888382e92a5b32c53ab9a80026f379202f060afe6b3e56dc9d2a9b66da9a2320ee564cff1b561c4cfd2577640995432f63654a8513aed05aab2216b350661bda71f699588c4a5e4b65ef6d087f8cd71f57114313a350d8b5459b60c8b9dc66325a8b5118504add646dcc39ce67eb912e43bbfa21cd73e3fc62a38e14fe0e38078bdc5001576ad6f827fefc88c877b52f64d05c5f1f61f9f543bdfb35e4e9400560d8fb72e666af39b9e0d7fc4a35e806ca1569fc2545716e1a8f6ed1fe4b4f58ec981b63b3fcb226679f34b4f0f35f1ca0cc4b436d301846315e465acae8ec27b6925557d8c3ef0906d1f4075c66a61a6f3ee5bef2644d64373a0338cd1a3774bd484bdaf2be508c2ad56be2e98c1c2b678a4daa80ff664508f291ae4a39ad0c87c432a9043353bd9bcdfe360a9b8600825cc250e246fe1b35b987069b90673e076e40cbad9209f6ee26d27af4aaf3273947ddf3ae4dbbf225db54bd0fcd4ebc8e1b798d86844789d5dfcc520e81ce2d1dbb5f65bb15569ca8e0890525c42915fef3d3ad45139212c4da4a5b4bb6e712a286062114142af71407e172eaf0f101e6579cbfac65fa619918d52e355d7827b9d9648fff2e29586fcd7bdfbb35ec6d624127e5de7886a9c3028cf3942e71112d7830b97eec129cd644bea8943166a497825fe15907c37c00992fb95c691d2c99ce42fd97dcdefa970bbe2bfd49d22b91a007a9d92292329e3d5e47f966aa05fc1f73444744037535f2a2c8ccf74a2ff0e3a06a904d21c953f2a2bcb3cd2401239265faeda6881ff905d9b9fbd4b43a87884f13013e162cfedf62bc728999055f81a7aec7e576c050657a1daa59ca2b553ad7f1b7c7a0c97e14cbd100fd6f17d2b786e4ffd3ded24c318bdf519c77332d0777fc0c3f216f90d63d3af46caa1e35af92f3ff84ad6ebc7c0efcbc934a7f635594381d549a8a465aeebc0ae05d1b1c30930d14513ddaba79783bff354e6123baa8799f22f59f47cf2e9bef15740abf6f55c92909a0c205ca1049d86c3c7a4f54c6a5058ee7b1021f218bc967d72a33c0f52db4ca95ca7d67ab050596bcecf3cde4e21fa1c30553bf4acadc346b2aad683443dc85c2419771dc94dff33c24885958b5a291b1f73315f824cf5a2a1ce3af04723d5de0f00e0464f9bb81b05edf1cc3a2ef85c6b77dae8eb0a11d4804ce13ffb445a00b315cf8c1ec558edf0583ed1850c069dd7a2b88bacdd4bfee', 'transcript_type': 'EVM'}\n", + "Time gen prf: 0.4699513912200928 seconds\n" ] } ], @@ -291,7 +266,7 @@ { "data": { "text/plain": [ - "12.75" + "[12.75]" ] }, "execution_count": 9, @@ -303,6 +278,13 @@ "# Verifier verifies\n", "verifier_verify(proof_path, settings_path, vk_path, selected_columns, commitment_maps)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -321,7 +303,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.1" + "version": "3.11.4" }, "orig_nbformat": 4 }, diff --git a/examples/correlation/correlation.ipynb b/examples/correlation/correlation.ipynb index c706b71..1678317 100644 --- a/examples/correlation/correlation.ipynb +++ b/examples/correlation/correlation.ipynb @@ -9,7 +9,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: ezkl==7.0.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (7.0.0)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (9.1.0)\n", "Requirement already satisfied: torch in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", "Requirement already satisfied: requests in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", "Requirement already satisfied: scipy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", @@ -142,31 +142,20 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ - "scales = [3]\n", + "scales = [5]\n", "selected_columns = ['x', 'y']\n", "commitment_maps = get_data_commitment_maps(data_path, scales)" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 13, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jernkun/Desktop/zk-stats-lib/zkstats/computation.py:166: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", - " is_precise_aggregated = torch.tensor(1.0)\n", - "/Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages/torch/onnx/symbolic_opset9.py:2174: FutureWarning: 'torch.onnx.symbolic_opset9._cast_Bool' is deprecated in version 2.0 and will be removed in the future. Please Avoid using this function and create a Cast node instead.\n", - " return fn(g, to_cast_func(g, input, False), to_cast_func(g, other, False))\n" - ] - } - ], + "outputs": [], "source": [ "# Verifier/ data consumer side: send desired calculation\n", "from zkstats.computation import computation_to_model, State\n", @@ -184,16 +173,33 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 14, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\n", + " <------------- Numerical Fidelity Report (input_scale: 5, param_scale: 5, scale_input_multiplier: 1) ------------->\n", + "\n", + "+------------+--------------+------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| mean_error | median_error | max_error | min_error | mean_abs_error | median_abs_error | max_abs_error | min_abs_error | mean_squared_error | mean_percent_error | mean_abs_percent_error |\n", + "+------------+--------------+------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| 0.00537169 | 0.01074338 | 0.01074338 | 0 | 0.00537169 | 0.01074338 | 0.01074338 | 0 | 0.000057710102 | 0.0073635895 | 0.0073635895 |\n", + "+------------+--------------+------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "\n", + "\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "==== Generate & Calibrate Setting ====\n", - "scale: [3]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":3,\"param_scale\":3,\"scale_rebase_multiplier\":10,\"lookup_range\":[-64240,14942],\"logrows\":17,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":7872,\"total_assignments\":647,\"total_const_size\":16,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,3],\"model_input_scales\":[3,3],\"module_sizes\":{\"kzg\":[],\"poseidon\":[7872,[2]],\"elgamal\":[0,[0]]},\"required_lookups\":[\"Abs\",{\"GreaterThan\":{\"a\":0.0}}],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" + "scale: [5]\n", + "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":5,\"param_scale\":5,\"scale_rebase_multiplier\":1,\"lookup_range\":[-32398,7566],\"logrows\":16,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\",\"div_rebasing\":false,\"rebase_frac_zero_constants\":false,\"check_mode\":\"UNSAFE\"},\"num_rows\":7872,\"total_assignments\":1250,\"total_const_size\":169,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,5],\"model_input_scales\":[5,5],\"module_sizes\":{\"kzg\":[],\"poseidon\":[7872,[2]]},\"required_lookups\":[{\"GreaterThan\":{\"a\":0.0}},\"Abs\"],\"required_range_checks\":[[-16,16]],\"check_mode\":\"UNSAFE\",\"version\":\"9.1.0\",\"num_blinding_factors\":null,\"timestamp\":1709450442648}\n" ] } ], @@ -206,58 +212,22 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 15, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "==== setting up ezkl ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Time setup: 11.341283798217773 seconds\n", + "==== setting up ezkl ====\n", + "Time setup: 6.017360210418701 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", - "witness result 1 : 0.75\n", - "==== Generating Proof ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "proof: {'instances': [[[4361588021930202802, 11452771843424695699, 17406203981540687110, 449645176536645986], [17475259421703607016, 4715985628661660007, 18118935885768207713, 749760773435915941], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [14385415396251402209, 2429374486035521128, 12558163205804149944, 2583518171365219058]]], 'proof': '06ad4a01d9f6986174ae8d21b7cb17398124a680dd4f4e6d491038f50b54517a0d490c96c5cbae0175a73da188c1c3f0ebadf27495e75b0b188827e6898e9df91799fa82ce0078621cf1fd4a9f20b64bf0136bef3a7325b11eb4f50dd5ad62ff027a157c59f8395a9534d15cb067a62ca9d24b5f548cb66427f11309e03cf81f00ec900039dc99a1951cafc5bb99d76e30fd096bfc06aed61008441f1de5ce79074fc05edd6f090baa856b3733bba3d20170c36a23a8982b3bf4e079d2c8c51b0f9dbc3894394af531bb710fcd666c9385731479f30c858fac92cd9ba011bd96042e29a61d81780e0dbfdeae0b0e21b3919a1ba619a78a6fed879e5ce19dcb400510e136c28946ff006979ec4a5561b0fdeb3c1352a35e46545f3839a68221031b8039be1719bff2f5b29437d31c7ae7391db3faf43b9be86f2e3dd9b064862b180109edb647327342f74c74449308108e8753086d73f06304b0fc384a9b13c1044ff9fbf2c863a411f9d12485304626644bc67f07a6d98133cf860914e5c5b01b2b5bfdf300c0271566aa1108d744127783d7a1d06132c787fe98326d43985b2ca74b3bc4df9bfe3ae24d649628a235f9f33ac065b0b37682ce54e43857413c1863a28a4847c6bc48ca03f67733d98c810d17360d7ccc756ec72ed0e128ae1f2b43142a9769ec5eff3767806c15e01d60c9163823610e47226f1030a02a6ab72612ed844a2721a8a7a0a11b6eca948da31bb520288a1ae2161f6d6a0d38e2802129a4a46f8f0124b499df1815b4b2e811ad9df2ed3293990ea1b2e35d5584311efe61e76ba18f81867e524093084dce151b53f82c4f931753d3978cbdaa35191f31d46738d333142c225f5325273b6a22ead726b44ee175b2b0ddd45072efc41cedfee362ba9ce48ab512a7c06e98f983c954df100d70f2bd13a2f441bb90da05b3fbdc2d9818bdd8e695c38e10a492ef69742bdbacc8981f5d6334e826b6e01efe61e76ba18f81867e524093084dce151b53f82c4f931753d3978cbdaa35191f31d46738d333142c225f5325273b6a22ead726b44ee175b2b0ddd45072efc42c1472cc7f153f359adb9bb03352e1ce296abaaa568cdb8c6f8c485e9ccec60d0e59287ee6c69c17cdb932f6bec9066e14f6551b5dd2d3fa6a5b6ab083e5e28a088f04428f4cc3f2d5f71690a89ae467af2e58bdd352b77b40a6c158555c869524e3fb0ebfe9dc27c535f57f84c512c3cbdf8264d3783142d1b131d2bd037df017c2d42a7cb858194f0d172b125437c587980960c3a35e46b2f1570a6b7df1a92727b54804d25f7fd6c9d76ecc653c59ed4e3bd2808d3cece2e97536d48f16ba28983cf5bb8ab240c54a95a83c9768f7ebfb4e4776b2b3e94759417401ae4f7b18b3ba7bfae0e61697c9bdd46f3736c69584952e78ccbd73b4aa19a0950b52bd2f0fa5a6879f45e7fbbb25a13a338fd3e6deaeea7360488d5e82d54ea82e5f1d186b909149dc26308719d533f6a4dacc84824371853c33397fcbf13bc7afe4e92c83fb576223deaf98791fa4c02c29177bdad451285f4c3fae85837f5e9fd40a29563849c2a59446bb8d9a80eb3e2ae56872c56747f7759dd3c164320e5a4c871abb32e5c5a936b17a34976e057818c38d7cabd6ec8e81e604e9581748c36dc40a0c1f117026fa5a77ac88b1210747b061954de79cbe245c62e03959f38905930c17e819540a226f4ddadd75364b9a9119fa387cd9de0e37afaa1eb653522b44218830ca2c7bd66b3ada45b613c658a43621de415018cfbd23f972fa9eff112d2a3f875a029f720537adaea62b40b8cc2fffe85b72d788cc69d45a7d76241f581e92cfa0bda31c6624ecde533fed0d5f00c0e04760a9407d1d2191efd5a9f8672851f88a0b57fd0ec1aa1e172c7085f03472dbfe1bbd5566c52bbee3893f0e24203aed1903f263deb1e97902aed35e1c2255a9b677ff9506b0c9e9548bffe5ee0735ea11a108aaabc68fd49abe85bea6e35dd471a329930fc24d3b05188e181800d8b52d62265cb60bda5b9eddbd242afd19e65998de4e77861f725aaeb732371fa0b5a4d0745a0892a61ae57bf4e569acbd221a47e44a6c942fb66ecde6e1521c8c076682a6552cd9d2d9b6a3a469b5fdb7248805930c7da23bb821b5f587cf0f791872943493151d598f1eb01204f1fcebc22c4408a791bcab33b2b8c16cb512f38ba7660cf3b5b7a3ece533ea5f45b4bc7f4f4710874d2b8ef8ae8cba698f00e28f4a873d61f6523de9230ebd3947310179ec740a93df5b7a07787396e6171345ed09f74368ad53ed0af349f79ec18dfc12745290ae281c941ec418eb4d0c1af0bddcbae19a5eb2fc170a737849094054bbbe12e3f6941ba0df1f2b8859141f481b85211808113b9adea6bfa58eb39817ca9ddfefb25c3b48ef1c4e20443b27597e5919df5c331680af628250fadfaf433f021101b78cf82ddb72266767770640a3bb2ffdbcb14baab915887795da9cb0e6604ca08becb8ecbb4bd8d5ad420e82813c8ed428734ef5ebd16146dee6e7a95efe509ee29dfda57e2e1e3400be08437dafb5ccc01b0d06899e3bc35a2c4cd87d293698a338bc79ff94fa7fc96c221f6fe6d7d42bc2d2768eb9ea783d9b144185bcdada685298ee5858a3a520e32192192ccbd8db72c1fcfb0dd74015b4bbd85a9987ba28af88536191fed74940032d759adec0fecb48d167cd490e7d1c7cffef6e2404baef492c891431a3578d301ef14cb5cbca52025bad98eaf35e2609702a89740603d2be2490bfddae454614075bdef5fc2aff77623065d596ffc27e1fdcec72a97d1e6294271ae7f23a6f14a36d05904abf9c115a421b42df6accf4d252211b91f58a6507c2086e39baa30be99f53ab2eec748e17abe05a7fb8c8847e4f4e771a7507e60775168a698ea92d103dc1f2bf3bc9af9d6f6830e5f53f0aeddda98ade9fec192d76833b1a37df18f7e04d54d3a9561511f07255d0c3b1b6bcefd3b549d9f6f33a2b56bb3ec1171d5bd09fde0b87310cb6782bcd94207ce3e1d176dbcf8f73e92f329628027cec04929f0c7499a8c4ab14e863662e3de93ab49f3bf6e2fd010b91293b35691a58029def2c46a5b57d37018425877e07bb8a36975460c0642c5350ece085a7d0ea1a3033817ecb6eefc9e0597b3f33344b49c0c0808237f07ae2bbfdf3913b263d1f2abcbc0bdf758dd2a78e6a8c7a1b9b2ece4ab088af4df78b8718b551a71df72bb100c6784b1bb3b61213ea3c5645e555829cf2c7ff78f0588cf075120b46ad2fc3a9b6fd50e39b98ad1dd0bd41cb1e6f4354bbff4b20949f04a5474ea3cb7e000000000000000000000000000000000000000000000000000000000000000024bac590af8e103bb18aa3d5caede94f53d57edd8e11252eec6ea6485de6e7c4000000000000000000000000000000000000000000000000000000000000000002250cded7cb9048b14b375661ebcb8c4f72ff62ce1654b3b09197f17f4f8456000876797ea62e439d8c1a3492449344edcec77c2abb1a5eb29bc93265eabcf52a64809ef1553d74e69012ad93a00906d2f8c14ddd47a74eba7f5857c9f12e1014ea7395745142086016392bbe5045527d65d097ca6f864f627a09b27f4b649e165bbe7244c608c7230185819453bc31108c87057ca8c03012487131ef626f0c2bb374623ae00496fba3de93e4826578350c0d71bebda959e33e66e2045cde1d2f1428923d781b464adeebc7e8c5d3c4db44ab0f0b57a7434ac54b1b7d4f04e7150dacb1cf1370e16cbab96dbe7c83927deda11b027295a30b16e5d068f4c47619f8d0566a8f40efeac361e3603e45126bdc05f80898840afc13c18de5f735e117921ffc1b6209525b5bb85de89efea3a52c6d3de84777ff7bffca36e67898f10aff8896661ed1e31f51efe029a4759cc17ef7a8ac50878f89da435c02ebcb4d13e70dc49c8fd6cc84eda7817982721a44699641467f83ee7fa4ce1cdd19570f03f7b0597afab9cfdc188975cde2a78f61ff707fe3c24d4fb4c3c4ca9fa017b10241f76b3b08301d918978207074c86202ab044e5a811c667e88df9cba7cef4211236f545876a0f76609942faca141aab2bd55290992654ccfbc353a462d09c721bb0b7730c2332cd3c1fe1f661c821ccc9322c6e9781a18606da7e97a36077119b538860fe58db2ad049286e875eacfe80a301f7291f5476a580ef5b66d2e61152ebedac56b15fcaf552e2cc1ad960cf2e9af6a2857575ac781d6baac0376f12725bc4ff4200ffeb9ef3d3473c27d1590333e7934f83dd32faa5844e63ef336202d1322dcf2edc7484209f2d83dabe4b174ab6f091dc44fab0966d334736b921d9b7df828251bbf00282a412d9c2e8dedf10aec59733214091206949c4ccb7929c4612e6e0628575401d2fb8a29f0f766348e8bc3c83a1607bc081695d599ef1607201ee1fb37812b4477e07e76f0f64baa811462345794247e1b6cd49edaf0162c418a478ca96e0eb29328a2ba7d2e3a7dcd49c8d57bd59b544362fda8e3d6247ee7b4cc7ae804b1804740efd81dfff15e88377104e7f6b454200137f220a420969a512647a20bb99094b74dbfa261a3a236ab31c4b9822f8d1120d420bc100802d29f490e2867c3424c6580c9d65b4570ac30cbecb4cb2ff0020715782d9e28a9ac9183af1e10883fc3445d5cf217f7dbd2d2ea4de9d5e0f4d9867418386a2699aa2a59d30e06b8c469295bb887fc0bf27961781c8b021ea4749b640312252b61f253b5d05b3378aca8142ed97594ef805168d36f4c4980c4626f82f77d611bccf0be4ea19e04d30547311e8a613ec484989b1205eff10e65517ce92226ba0991e540acb3993ec988a326e3b50d054dcc1ec01de5b82b8bc5a332098fd91c11aa5fd881db36de6c6cafda8e11ea756fb3130e95b1db68eb5af86f94c1440f2eecaf89ddd0a9473303d8ef666508ed39740627380c84fbca1539fe7152ef441748655cc6d0d4203e649db8865ef4adc162f072c929111ee8fa3f5fdfdb2d590f4def6fc342fd7f49f300aeb5d83210ae91ee65c54afca08f3f44eacadc35da101775e09e0796a3aca164d877e249e67fcd7e96795e7ec624ab862d51cbf2da0722a5eba66a967a784d432e2f2fb7abf9bfeab16407b2bdb517029b5ccf1ad811aa5fd881db36de6c6cafda8e11ea756fb3130e95b1db68eb5af86f94c1440f1c8ef4aa07aec53d8efff719fc8c8d695495e49a531894bb55d8da7c59fd28ce19d32b3172961cd8389479320b57591f6ac3fb4a991b107e898665f1de74db781e87cdea9dd0c36222056b22e49d675c98c435028798effb097a893f9c02e4ae26460737515349baca347f2cb12f1dae34087a2a717c1c75daedfd37225fb773165f245cd5c2ec4c45565c49f31a8d766390e632cae2f5f7a98cb03f3b1a658f2fee6c5c53db5b92d1ec04bacaf229374f7c6f7d29bbbdb33784331bf2d0d8fc04fc73205640d2a841843082df2fdb30c4f53a498d844cc8b9e2acc80963a017', 'transcript_type': 'EVM'}\n", - "Time gen prf: 14.648373126983643 seconds\n" + "witness result 1 : 0.71875\n", + "==== Generating Proof ====\n", + "proof: {'instances': [['7469705c7b45875730aac31b009e8f9e9f9e57031bba148110877f78e4518c22', 'c1f946e3fd2b2229bfcc2dc9ff7f4dfc1fddad53635becb58d130bcae5504712', '0100000000000000000000000000000000000000000000000000000000000000', '1700000000000000000000000000000000000000000000000000000000000000']], 'proof': '0x129fc9190be4bd89491477f1d610b0df57db6207db7622e3499b29b0526b7fde04ba713964b0f077421f98b36f8825b35bdf48aa966de7b13e525cb66435dcb51ff2fac415de8e4730b36682da9fa0fb4f6d7aea42d6931bbf9116554f9ea8f900019846562ac1c18a85a9d8520f2ee4ed1960b51a51e59cae1e439bc2c53a961bdf798b01322bc925a47a09944baee64ded964b88be194f7e12ea7af0fced5a11cd22e545c4ccb2e1359572e197c2c857f6b45899bfcb3aaaed6dca741126e9118e3b88e6bb3194e0e16dc54c9bb339f35f03fa65e735dc1a497b8794df2ac929901e945306c5739558e0e886a9b8cb31a020864b8bc1afee0e830abcb7c41028a0ffde9be513c56d711d9b824f96ddd544c2273707cc18b77728ba6301596a075f776c4267a98b167d42ddd9eb8498ff8b64123de0f1fafb8df078e72a4f101b0a93180a675ae142e107b20285447c77faed712b9368930a366af67028ee4820e218e8de0b0b2a336fae58bb1e9fe96772f21c42d000f5514161a58d0cd3c71098912ab6c2d03bca8add2cbe4e7db230cc0ec31dae50a7ceb3bc519f7a7bd7133c45c65521d0174f6acec0dc00c314b2e6300e609bf6041ff756a5e24f9339134e302b21bb0c617a1280fac108c659f992d66da1eac59b11ddb4ac9674381f2fdfed4ae4bee374d7a889bf331bb702b1550d8712e46945685520f6b6bd62f610b595d7b414cf4ce1da39fe372a485a40d5cb79bfc6dde0637de41bf72c8d8b113eba810c19b62eecb03df03929aabc735c4fb9c9014e8d313086141b5cb9c910923fc17f250f67ea7d803fbab9e04874f72097b6846c22a3c3f63e8991af6e29fc13f6d413264d51b687e311ca85a42d45c84aa11ae401a823f20ff9c6ec4100ffa32aa6211a719c0c28ad02333ae95b3d63ce2bbe04407e525247ee90cbc018d8ae44bcd3e71627f46d0abdbf41bfbd887d15c1897354abab1142dc1d6cf210923fc17f250f67ea7d803fbab9e04874f72097b6846c22a3c3f63e8991af6e29fc13f6d413264d51b687e311ca85a42d45c84aa11ae401a823f20ff9c6ec412aa0e646f9ab4bffe68eeebc96a43ee9ab3e0e6abc98cb5ccfbfe49171ee10da0dae56d9e4ae73683891bc49e1960571d56bac1a6366424950a66c8deb1ae4991fcc861afa31fbec96293bdcb453ef12cc823ce79ecdbbdcae553fdfce3217fe13b32d4290f8899d47e673ac6bb819c960106fb04f6180286960b2e160d1b12f2b0edc999ebd216b8b6fee53ea696228da7cd4de06249c9644114afdcb27933924c2896be5a287cc099e437c1129621edc726e4866d70d09b330e34c4281b9f60cb9d038d33db9bffd641db516b54b0ba81cfc05951b17b6b3ebcd3d3ed1649e2d225ff4b68e43c5d412c694ea8e3a654e9c738743ead709a89a56ab8e27d3771c72b8352df3ac10b7fa1e1851aef8473bcaf70d83e4059096aae43eca2d282e2747dbd913d9592d8583a0a99b7a73fe6f8d1a7538895b7fee0a161470528c040a2e1feb305acae60a56994162a03a6478f9d0581166ad2fa9106b880192b46428c30496f257e086c335ba31235ad9b3fb627d0e9f6f9f7d1fc76d950f9e7a050da0496460626a87bdba9ae27917509423e514a2d12fe976d6221aa8c420505a2a627d401645bb590aaa3890ce594499e27af314cd5ea8de3795a9260ce585e718a431b5e55402cf75f59f840dce188e222f0720ed5847812c0557bf70efa1b700f541ae441a5f2c4b69dad9f46d23a456c0ae08bfcbf48e8adb3a58d8fa79a82da2bf822d67d015ff22e6e9248f964ce432e00bb1cdf7aa6a0c3a352c8b554e1eca7e2d31cef42a64a0561986627d0ca6fecdeddd204360b54778164b1834b50e4be112b6b80eee6a914adce6c3f80e9f433de9a872db0cf377327dd7e16f2c0583127e6098d86fec6ef178c521b2edc0cd69e6f673a37c0cb06f70d9e7a29712afdac0d6a92befcb84e5ac88165a2909889d3213635faef466657b2f2dc6fd2b1987ba31536b2e10317fd87c31eee9fd4bf5f223eb5c6012fb82f24767aa2b0c5ab3be113fd9e1dbb280fa1c4361d8f73e3060b2b2acc482096d7a0a3680bd2d80df8b7a2837877cdbf9cd6bbe6d4fb888f63ac3e6ed943416e346f0281afb1e1ac046da99c50c4739a1cb13b0b62bfbf347e4f578d07c871592eb8d869ee4105e24fbc38dd12124320e630d17b07ca2592c4d14a8687a1411fcf587d73e561c0d68cf7adb62a0bb237f8f7f6d1f3894031545b059ef06d10e5647127584e203cc91f28aa66d80e23c9e4beced3f149e9e4a6a8572fb197197928be3aa0da30fce6b9db0c121f590c00d1c84016faf2ef078379537ec3c691497051ab65f6b0d9e3c7f49ea07fd7c41990b5831b35007c9e514e0cd0b7fc0f0f4c2f83cd81611531a97bccf7d75a6299252500a1df84678af40bea8520515c4047c473687a21c15405b79061df53cca044ad373e2bf5eda02e52466fc346bb1955dd7d136e71c144f15a839c713d72d1cd1a04f3f72020053f30f3cf0646c780185a12478e4122bab1fa4ce34a69f7039f3631d8fb8a89b7b7fe410c0dc1a184bc46702599c0348052d4c6578daeba5e311b68660002c0f847433d69d872d4af4071fc4bdd5300a8e6b47e47a7151a91327896752b92d6c5a4a32e2d614ad30e5342414e3f1011359a99e8bc14879af77b92304181ea1e087c1e52e8309a894cb540afd0e5607f071286608ce796b10ed39986b00141f334044f3384fc33e5b3a30ec2658261d75e66a7114930b32e1d661236f8bc37b531f2045033168bd3405a0c30532ff23d7ed44917460f1b79dc6f40e5ea8529627fd199dcd8bb9b4dbf37abce23f390310b6a7a82900f1dc24c4db35356f15d036dd2621c562ce671eca43558173611bb460dd528040cfe0a3aa96ae4b19923eb4d9eebc963ce409533a52d7fb6e3616e0d1a67a6d108d6bbdc75fbc78bfb335aa0e16228dfdaa6d842e0b4a98c6b00bf6a6842a2389ee7294122409e9538977582bfb15b082691d353ef5b9c2b3ea0f3cd0d4ded3301f0c97c044c3c2a5b955753969ea68ff5506b57cf7ec8838102b6cbf375b7b6d8b933a7e16f37e5dfcd2897fb23c30721d259cba8dab7fb6180c10972778377a0ebc852bcc46474dae780d1cf91e8d3c0baa21ebb9ac7f5d2a1d637cdc7c2ed6c5746019681137701587ad592c4072081f311534eda4217f8a0adfccb255f4c905270d37a7479d7bf5da46ecf2be4206101240c9c1082ccd8e06462f258d3839aeeb51e61bfa8410b1b03ca2a5ec4f6a5254c275eb4ccffe950b1228e9abff0cea07465c510107ee0c9f6e8a98be2b03351c56ef2b388c3f440e8a26efc8a3c2a2d80220591395dd60ff2ef2f97fa83219e28056f2a55b4193272d84027df7f6c0a611dd90d602e2eea66bbd7848c85cdde66c5af9275fd056048fa6f88f510884f6e8a8fb1f9c3be25365540076b5a460b22ac8a386313c0a05ae0035b5205e81e1b4a64594eeaee70f005a5fee3995f96e0732a5402bb34d12a1e5f52efeeb78d1bceaed142f910819a0bf8a73dd2f532707cf0203f7589b10a134c538b0ebecbd13e6166798938a16ca3830aab58d40e38f3b6057e9e2bb00e6e6044a70a8f3ace6f133b8b016b68ff1f39081acb09a825cc76ae06ec4b0221989d2b00df357297a6355b22ea8247c31e74a4c34ae5c09bc386c3b4d3a960b225871d8fecd35c524e2dbfdb93cd1825e5e091707222b1d18d2090b37131c199c2a3ba33c643ef821f0a90a80df74e9fbc141619a0fe703a38b74dc51a3fe276b2e7c0e2f16395e0b7face90984f634de3e7e995effc0f571b8f6992458f100000000000000000000000000000000000000000000000000000000000000002cdd04a896f435d4584eaec37c59f5a781374bca25aa935ff351ad30b360d7ce000000000000000000000000000000000000000000000000000000000000000020f4cc692152af8a31091c201f44434165628db232e142db981015ef573eb24300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f02005ee934580df950a212ae43d8a15ee68647cfd61351f57d31ffa3a070b80000000000000000000000000000000000000000000000000000000000000000265f1da0a8b0f51309f658c330954b09a750bed54adea076cbf4db3df1d1aa9b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a2599026ef4af2cf606cd6e1e77ad1e22eafc0ef8edefd07e2b7784a7a4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b36cd2215eeac91faecf60e0fe8daff4a1f0e74483c2e932204f835ae476160d24b7bcc50b81590c80c162f34af8207c10ea713c808291d06d64cdba98667e0000000000000000000000000000000000000000000000000000000000000000140f11d3333b8970cc11200ad06d27f64e59a0d47365b42e857b97a5eeb4f0b100000000000000000000000000000000000000000000000000000000000000002dd3a20ce98a05a78aea2020ff5723416ec11153bfe3c70cae6021f4cb729a6c2293344f1f189eb9dd2b53338fd62b116febae24c6bb1494cda024724943a6051739afcd7fde4a1dcbdac5a454fdfa01bba8ab8ba61ca085b3d14b23337dadc0083312e7c032ada6e00562ada811fd04b9e3f88b8ece143b51ecc7f3913a288a1974a7a13921a2ccc0055f4ebbd412285d3c200cb77e9597e44b2cc8427c663403d4f310c3646b1214f3c654235da7a9df33e70045430dd7bd359b28b17320011cc356ba0e5862fefefbf1b3ef26cf3fe9f97051b5964d6e81ffc90876758ec203920a6983b0af06ceef64ec2a2cd4aaa430c7be3d63b764e5f771c61284c55e29625ca4b886840be661d7d36ac355d7137a46105c1048e33f4aa3ae186b0b280ba35efe55d2fb542b4c5aeb9c17edfb286e71cbb05d3f0c886838a5d6bb3b48241f8cc34b0ae001f7cc3b924bd106f2119e84b0a5ab45ad6f9d0f54c562bc722677996202cedf1b906aa2be40ec2d5fc1982a2eedcbf66cacb84dc177f1ab13020bfd53a9f6061a2af870460e8a9464f26b9f88f6f7c2c79b960abce133d2a7133a4c0d0c3b7a1325325c69548c76207a23ff6748444219b76551b358341091242d5c5aad4f60a768cad65c1d10613257941dc0e0bf4d90639d82c9a70bcf29303bbeb67f093b0ff01290c343ebeb5d823c8d046769628a0225a1e9906b665f2bd3d2e96b143fdfe42dcacda484582293652a51a3d2bfe25892e5bb6dff5b411ab11b0a0b97474a987b4a708e751631743bc2917f371734c023ca0a82df7dc2037515b37e629f177aff6d8817cdf6716ea9b2ef73763e2b176dc742e048a5ad1feb682ab1f2876cf664aeccd0e5ec1fc2db883651aa6ad9f9bd6cc69d58c0370ea7c85b1f9b02168abca2a7a7322dd4a0d13cac0e48105d3edd96d325c4e0bc2a42932cd9502e1bc89b379c0a2c94ef14921df1df8a6fc1e88987187346f8f301679389577589fd983f9fa0feab4f45d66f31e8f02521bf270624d7c2cc1c9407d2e3b6a89aca318ba8f027eb161c163fcdb98f1a459a217975b1e06b5613aa11788ad10e22dd94a8218e7802b4f1684c94fe5013cea3a0e27102ef44bea2722ee8b8ed4afe05f5afdcc4092082ebac63f8399e393c1ad8194f5e8a3fe58f840fdf5281465675f8664e71cba16b659a9ae8fe6dea8985e96cc8bfd78590ec23085d9ec68169fb2cb34e2b17d9dad23a3b6533c2c2de12ba1f08943a4b3db64a04ba835be643db5d3ab108fe99fe8eb318bedb4ab3c665799082201a14cfa3e921552fe1a734fff27c1c5f4fbcbbf39a5f68e22aa561c4aac85c17045ce4e0e9113211dbe28edd0a26dc91bd93ac34685784914314d8e7514e3a2071cccc3372148f838d8a9217101d7727c9d8b5ed3629bfd7ced6f9d6fdabb72613593b49870fdf5281465675f8664e71cba16b659a9ae8fe6dea8985e96cc8bfd78590ec23133f84f29b02643576d788bd0459b43f72b6c567b909e7e17ffd21113afa9537055d2a4eb0aac67f2156525d55bb7d5327572856bd56b9e52c0b242e6d67d0da191326c7f64b8d762f6daf452af1c80d529af49362ab42d9dc789457816dea1c18d05c13edd9a88440b23897ba53cf492d106507c533973cae3bde0bdc3feb8012b9559a871fc26269f3450a643753bb30b33122db813f450d55e5f63b3427ef0c723b925ea6c9f31e52b8f367df4fdffb07c4795af4542cc95cf051296c05000c8eb34929abfa5fbdd751eea3c99525708d771e11276a04ef804556111751c7254ccbc8fe15c0b9e79f6a28db84fa17d7a707d357c072dabb4b0837e6b7fb9413afe6f7d842acbd9a8627b6bc89f2355b05131d09344d84e919825fded3660709858f9a148bcf16571fb7fb4b792370eaaffa0f009cb0d1b9181f1745a42c0915a25bd2dac801527acb0c0eb9c565dc6fdf46cb2ae36e85544313d848aecbc923b4c96832008f3a57d71eafa648cf7c4febf84177ab8387a55be3e862bd3bf111059093e6c8f9c9197fb9c2ff9ff1003a4d7d3d5de3f2b269847c48429fe26d', 'transcript_type': 'EVM'}\n", + "Time gen prf: 7.439970970153809 seconds\n" ] } ], @@ -273,14 +243,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Verifier gets result: 0.75\n" + "Verifier gets result: [0.71875]\n" ] } ], diff --git a/examples/covariance/covariance.ipynb b/examples/covariance/covariance.ipynb index 1991d4e..5b06c39 100644 --- a/examples/covariance/covariance.ipynb +++ b/examples/covariance/covariance.ipynb @@ -219,15 +219,14 @@ "output_type": "stream", "text": [ "spawning module 0\n", - "spawning module 2\n", - "spawning module 0\n" + "spawning module 2\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Time setup: 1.6888682842254639 seconds\n", + "Time setup: 3.4178340435028076 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", @@ -239,6 +238,7 @@ "name": "stderr", "output_type": "stream", "text": [ + "spawning module 0\n", "spawning module 2\n" ] }, @@ -246,8 +246,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "proof: {'instances': [[[14955570959218682635, 4667139652385906200, 12836539004462631467, 1774684518626433649], [4224417983558473805, 851357164555783563, 5363851773531956453, 1448631618362554917], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [5743885005642251665, 3430503978676436355, 7149667244725939006, 2902673458086333540]]], 'proof': '1a81aaf79158c50ebeebed55138a95d333ecf5ff9269e8a39dfd5de95ebb1a932b8eecf3866230046eff9aa4842dd321700c02559d1e801a1d13edb7818987201458b356e857c778fa1809591127fb41d66e32217be9d71324d88756aaed9f3507641dbb900fbbfd82704d6310c3e1e52fc3d83fa6d0989744d44fd1f6e5a06d16183d98511cd09f2fda12e51b705825bee5fb35d105524658374a9f1d7daf90019ebfb844c1b5247aa36579517a791dead762447b2c754d925ea9c666462fce1d305a82dd67010fcc85bcb814d942918089fb336c43c8362e5253dc370361d624cb6f2e575964babbf3d0ccf79b5c27bd9ff2190f5403a4eefab938c87e4f122df3705e50c1c7c9f0f98c7a32ce8cd1672bc87f8fbb697408593806c69f36752ed243ed617a21f6b7f63c348d7f1651a0150acb11c4b7c778f1df7c209cab6f19809c41ff2b562817c859ee052691765d59768721af90f2b0b0a0a77b6179a017ac9ff8f516a0baf7d79159f5b47e62d2325ac8b6464b7185cf25901099a57c0f0d885fe8cf1d00cf683966d8438b1a2df00fec0673da6e217e3c0cd629183a27280d5b795e83d1834dd4d42d8463512b098105b97fe95d88937a10e8e09cea0ef061864954dfa81e23663994ed95b3116c88ebf51d8bb690d8dd5ed398844a02347e1fbda2ce01f6cbfaa93d21c2fafa6dffcb91ec192059dc2f14feef514f00bbb4eb1d43e2cb51d0d8d3cb46ca0534beef9f14ef95197f23dc8e35ae1f1d02e680261874774ab47e0daa037d2e34058064a3fcd4ba0c25e67d1a358e8520105dade3188d564c2098eec6848b2bb72cc74b2de6f4966517af714da24f2cca2e415654867b72c619f9d6e70bfb58fccd62b25b201f8d4bff39a0921a024bf7123fcfedf2f8de0e89f1bd7b0c9542c1401b3a7c22ffc74f50b0edc74e84c9ff12ddfbfc264b4dd8575d555ba392b120f00d6259947268d08b3c1dad512e03cb105dade3188d564c2098eec6848b2bb72cc74b2de6f4966517af714da24f2cca2e415654867b72c619f9d6e70bfb58fccd62b25b201f8d4bff39a0921a024bf726755fdf8425e36069f280491c626203d2df775b1ef47eca8be60efdb05ddb84284d74ad55a6ff524b72e03701bdf084fcdd5bbb0184c8b807bb6f4197822d9a1c67e689758adbe2f1fc0168c4cc145cb4eb4fdc9f52b7279605ed8e5c35fc5e2090d6f9c34959128728f194a23633fbb4b883f17ad7e9b4217fbba96b68de371b69f897078859475105369d313a2912b04b7ea8c3e31a36f75f4dd4363e6ec302772cb31149cbfe109985c74f729e6f361b608740100cfcdeb8d8825aa332bc231c317fda84d3df6280a37f76f8055e7207431fa7de5b1d2dc30d168c6e0a2b16b91e307cbfeffba791439cb7f9b1fe2319e35f3537974e0ed6842083966e7e29d540f3cc943eda66f6516826d4d750bc01b28fc4edfc4506e36f9b6dc6037300c510f14f312a661e53ce3474d13dabddad3c03bc6aca08392a17f67c8ac51c2ee0a14f9bc9614cc4ddc3b25cacbcbf55a2ddcb1acefd74627464ba68e85eab1e89ca29e51b685c98cb6b14c58449254c80b5c398cf9a8871ab2d2500a42ae82e7154579ca2661dcd9359cf6372ee07a1482b7169d2ff79cfd5f2c1bfecbae317c1d47bcf56aaa4a0b97c29b25e97996163dbe429c5fc433cdad5ee35df2b032f9edb78f9302e4d86ed16ea96b5ddaa70053a94a47ed3af1a1641025a579a5b2f4ea084e56e75a89c91d2d1e641b440c370d5c83025f0dbf09de104ecc692e71dd2299cef93d32e0e4c851e7ec32e29d133f7445b104ec347179a90b15d0fcd0649a82296eef16354f3e4bde9dafdaa9feeb2aff8e6c99f371dbd9a8a1bf998077ff23997727c724b193d0813548497823dad46c834cb923ba8fea10c2a0bf92124659c0dcf76b7c3da0a3aa6e7efc13ab25e30046cb9e504da7529c04d31ac05d5922981446106ba747d491298e9da28be7a4d61840c65b7d569a69606248512d5edaea3fb104eca45febc23644b34e12707fcb96581e57a2de05455c00f1a0e0c55ecfe9c816b9a760eff14714209b787bbb3a24f2e7d5b6d310956518b8304adfa0b85085fd55827c6cceb373f65a3b011aa7cac93bb20a4c91d94899b6718cc35648f975b70cb9a8467788ffa0b594c6742f9460eb61a6c6d33c8309208287eb112aa3e82543c608a58906a2a7ab3db037ffbbb4e328ac1c301c23f4e0e1f910d1e00ed90dbd928b5b19bd72b1163d156f564f4d95cde64ec9991e38a1e2d26a1a64f8755b8b1042093b7a7dcb333cfbfb7d6fe406df9fce88bac45899822b8a7c0c89bbdbf476f2b3162ffecd8f9068ec70eabf1412e41670a78ff2f8e1e1721edc2bacfd976e2e26f5c26ed1d12e39daf3c22047063b6034e35d5f15f2f2fbd0a6a6442fbae7b55238316393f604783410aa94a66b854991434b9c4fe2a8c7cfbd58904a969352068291799af1ef7490805a6fceb830b46328af252b605ea55b2f2bfd4986d38b0834c49f735fe3a42c10c8b811c0992ffb5b8c75d2a218bad7f32b94ea195de89beef4a534da3b761d6166428bd24ecb0e01f5615e2232b7b3e70fa6482799f7c2f96e16d84f5a9cac8f899c51e8459f8f1d551d4710491969f9b223d20f286a19886c83d4b321f6380eea03019a1e2f2036f60e37f214871bc4a4b937c583aeaf9de043ae5a3d78544055463a472106cc25601448a09b613069e3286f50e622ccd45caf8dcf5a32076b677b744da17cb0a7b7aedc827eae0461aead971797c0e2cc686aea43f8dd69ff3223e91fed21f4aa7841c181d907565626b1d9c754e89e38df863651cb79be053e58c276b7175e3ebead08b24a4e262d4e9888a0ee4878ccd1cd5c23522756badc5e957177d4e2b7e427ba50c09a84b36d0dac0ec7d77ec28fffec53a4bba1fcf02561bc87ae31a7b327fe0261a0e5cd70949c21fde02cb40326fbb2397460f1701e7ce433e4e5897a5e73527c7f37de117d27dbd56ba39101f6b5230879227a86edc3b77f74d23443d0d3b1fce71879e2dbdfef59daddf5d1ebd0260c5a4bacd471ba19b4af253b7fd59142d12755b1960ff027cc535b5074a9b7d0a2f0af4f6afba039833b430ce5e53952ae4ad015fff9cd3bcd6ff580439e228946d653b8a70118cac1f71af0c3ff21c0765b9a5ed72483808ffdb3b1e23a92755d0fe3c63b09393df3617e32b8e06410451bbb503d721029e9b456de1c3605ab94f0b50d9e31dbf30eaae9cb863d45124cd00cedae453d35dd131ea934acd3e74da61a5ed36159890d6efebf6cc67e00000000000000000000000000000000000000000000000000000000000000000262a49844ab2c610dc6851b6cb0a3518c2fab7ecca70347f8d378970ba7e7dcd00000000000000000000000000000000000000000000000000000000000000001367595b7ea146ba2b5e00bebabd9e9b389ee0fa0e7ad8593b7f8a22c019d2881e6138b6713b554f6d3998feb19c842c7a7a182152137d91d7cb650c9948590c2544389e32af37052ca6495ee14a404f14df4db656cc78ce51efb703c63d76de074bd0daf2a416c5f4527c6bb72d6b77c997f38a7d58ee94edb5522d5c339ac32f76de902ddd8880e2052ff9141991f4bc5a102c304451cd9832a064f5f2219d29a56db249789e9aa4df512aef110d38b536288599b88c4a0dffdf3c65389dcf06c7f215627be3fc77b1b84dfc160c385e9c0527b3c91efe56fe65d0b82001fc272dafd55fe7c869d94f9e18e8b9ecf79052330556ad059407df7dfde43d13ad044daeadc8d949c81b2f1bca2ae12498797af57457d7130501ce872dcaa36fae1eb0b8a41d9defbbed2b38f443cf6e76c41fbbb6ec6b819369c7a1a2cc6076990204243e9654643af359994cfedd17b895c21333972a029e2e4e13276b33787a0f0bd32a8046cab69adefb8a63fee9fda20a5493d680860c790cbd11a8e67a3a24a2bedd4cabd1d6e33bfc2b3dae4f99efe7058bd5fd2fdf6e4e196c070597281e32a77586979cb627de4b5c703220af0069681e7c434dca1f2103c5f81996800474140bd342d05c4e299077a76ce127a26fa9dbe79606abc0e924f0216c0a6f0edd165ee19642d287700d1a5d3922530210542f0c3cacd90db2a6bb4190349d0ebf87d8d623ed9416bd6e6c15d018dcbd76b092ebc93c5da910f65299df08fc0810894ee8fb0b2cd4c51f9f6e04ad8dad1ec8f2f75cada332ee52539968edb201e8773e011e772a10c13c6090352fedd5d34bafb54e14a9611db98309bcaa3512a9c677e4005443c08fdf720f670f2d8017e4c7c9365792ed747bbb919f402200cae33a52d31a87c0844a81ac2b232e3ce0edf46bdd2131cc6e123e19c420ec2c31115216f6d388de26d3b1bafea093e4228b6d19eb747ba38d9716886650302242767682c60f1c76e905ae0e897a3584aa2d3bed93cad987f6b3e6bd8b1523192ca6f032e5dd98a772f5dd24a0fc8ca58e3c2504c03366a91bd7139e7894901eaaa89c77b4fd0d91e9f6b262ee8c1f94f76bd22056c8f1a23f11f9e56b85d717b72682351a03ea9f4046e6845b3aa7a1b03b6f5a2870d1d0ebceb8c7344e6b2cf7124313ecb5a2367cafeff760e1476cd683c13a600dbbf53a03018d55be422a39844369b7542a0ffefe6691e61be6d9277828295b46203e7262afe2c0bfdb0646a66e1c32a78fb36192a516ec307fec32723508b0cf8c7ae26274730018812e787dc11b8007e85600b6c6a6937400b77808bd2b5cca8e4c40e8c2e9da096c23a25f09de7bff23ddcdc54898c264d629c5af1ede79f50c901ac146f16d1f4c277a7c802f52e6b787f172d2641b309ec9be56fc5bd1255f9651dd78dc24bbac05388cd90c0b3c502b074c6d5b18d4616f5194a3276fc53d788b456fda5f7043108e060fd5f6277f4045bdf7f5eddbe7e7baff787d2d76c3313742decc499dee09d11e36527ae721db904afa52c18b9c2e3748faf78192a5bea60bea168d5e9f015f516ddf2059ec4857577c1f4d1f610f33d0ce8ea319317cf726718ce45a7e01c2680960d991669a78f80c63cff669add05ee2679cd74b3fa899197d7b9b9c055c16912b9c7419d1859dbe8db1b0bc1ea0be3e1351cda5d3212cad87f4c38f05388cd90c0b3c502b074c6d5b18d4616f5194a3276fc53d788b456fda5f7043097ee0e9056fc3e317d0546ab845624b67a409e006384f1223c3c0cfad15b2430a6cae2bc836fb8f76b40dcec22d89d38f3d0e2dc478723de73fe20ac63b7d6e0b3652ebfd13c13964e111087b4b9e9f7e792f97a93b17ca116756ceef508f351db4d04b2641583dea62d0fafc2fd13e18a702b3fc6fb3094163a58f94f200071e3af932f4ca1a5d84e71929cc4cafee2df5b984d9d0e6cddf6f6d0a156c39b9163e14262a94fc82c85e33e8824bc96e0fc9e0f1f1b12d74fdf3d393af6e5b22141d72a51822338f1ab866b137935f0eedbf27203059e68af6c4f8ee294b0295', 'transcript_type': 'EVM'}\n", - "Time gen prf: 2.4402859210968018 seconds\n" + "proof: {'instances': [[[14955570959218682635, 4667139652385906200, 12836539004462631467, 1774684518626433649], [4224417983558473805, 851357164555783563, 5363851773531956453, 1448631618362554917], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [5743885005642251665, 3430503978676436355, 7149667244725939006, 2902673458086333540]]], 'proof': '244e8813d8d36db7f4a09827891ae218e6ea378c905a209177d5b103ca7242903029877927960516e93221211bd008454799df5dbf923e49755f424f500348270333819eaac3f03b25eeeb6d533769036712641df0ebdf63519c3be5eac5a49605c6e3b0ece32c87dd7b5ce02accc0015e4e7181339d6cc4ad5f51325ef6143806e8d8578347e5897ca6ab7926f0ed76a727a7cad81553b7972da369af3ef23826e6d2cc5179706d652ddbc46f3a25797129860d6635181cb6e9d6653326b8900f7c83818bf2782e32b816355a3bdfb77fcdf3c1428a5f17ff1c8edb601828ae169f3a239348a3ccde70382d57d68702634ea9bd1d27d3fe05dc41e442b563b9139768f9f6a2e6e6147b2a49da23ac858e8f1fea27ab7a1a4731f6ef44b5c73219fbc41fb5dc496c1327fdd5f50dcb14d14669d40305f5414b39b35963aa264312905b5067bad9fede930cf78585e94a208a89a13ba55306896685e27b8eef90162cb19067af9b4854e7e273e40f590aced64bbb0a4913534bc94c8d8256d4800b6cc22d4f073825e5401426f45e5d3510e5a8801732271e71fede0a5097bdd2227c8c578bdb683d1db6ccdad229f3719029562b11d03df9d0bf2b89abe47e3d081fc3af4d5d1b986d9de98dbe8d96909e6cfba45481171e6c49ab3c1abd59be0d6f45979af7adce00c1bc294413c6c73f661fee05ac52bec1bea67a4992ea38235821c709c9768c801a165395ce68ad0f5c12eb0fa8e210508108bde3e7c8111e9905c197a5ee811be274148e2bd377b1d9a1fb69753dd907e924723f558023105dade3188d564c2098eec6848b2bb72cc74b2de6f4966517af714da24f2cca2e415654867b72c619f9d6e70bfb58fccd62b25b201f8d4bff39a0921a024bf7123fcfedf2f8de0e89f1bd7b0c9542c1401b3a7c22ffc74f50b0edc74e84c9ff12ddfbfc264b4dd8575d555ba392b120f00d6259947268d08b3c1dad512e03cb105dade3188d564c2098eec6848b2bb72cc74b2de6f4966517af714da24f2cca2e415654867b72c619f9d6e70bfb58fccd62b25b201f8d4bff39a0921a024bf726755fdf8425e36069f280491c626203d2df775b1ef47eca8be60efdb05ddb84284d74ad55a6ff524b72e03701bdf084fcdd5bbb0184c8b807bb6f4197822d9a24d47ecc350844b3f2ee602b03c2c51959c7330c8e896758c2009a59cab6417c20ca77d7f846b3182c4f58e204c82a9cbae84993a52f6d0e778bca6558e3bd6a1321d2fae6e5c8df2d5259bd780fbb3239ef89e36107d188582861556ffb6d0d1d18ed4212cbb46bfb5c7990d60c89250e60f2ce59128cd4313adbcc29e57e602d52a79a7f7c2357801906f65d8479eb37a7a50a0184cb1b07efdca7e6f582b108fe8bcb3a168f88483e3ea9bc7bb3800ca4ed9a84af4db58d8070837c6fa2e706837acc345cee996199f0a43453bd77c192452d793471e0af47bda5d755f9ee1c485037a0919c65efa60b4e726bb7052cee40beedfe0f42fde7cf702887482109bbea19074f6df8c3fa0d8d4754e500c59e327f12e3a815c3a672ae1370e3f32564810d324d8892663c2f23b6d847f2252ea85b2a467a4e5444d38336b287541828673db9b755bbd7ac5ee5efc882102deb22aa9a916bdf3fdcae79b0d9b98028e2f843189a0e6329d18f2037bd39dd1794a54d459d9e8f8c84e83ac15be9220c11e532580f3bea02eef1ab518295c7839d3d2db5bf27ce29cc1cabbb59e01a177c19fda81d156cda38c163b1be8a9f200849bedfd7224f8de5e9b07b2b5544125cfc94c8c1d1ac4e3a3b6cecc329bc2dd944568c41aea6db53c2aee419839f2018d74bee5d9a4e34290b00444f86dedb1697343431122b635782da2aae8df728523696971a1b36926134c469f1b940819dc8ba6cc70c47f796a23e9175232d1b5ebc147f79ef61b0377e4bf7cefcb9fe1eb8c9f4cd7df798e1c07e4e4dda99135df59c37c327fc895ca7c7d7227f460737f5437a74b7024e9173e7eaa0a2e210ece1df3667fc14f478e994e2322fe18d4d48fa0f0a92dd1c099b961348b0ce1a64dcde132562e4d8e6839868b03ac0578d9e56e62fbafa6b1b9a2a5269f5612c59561dbcddf247729897183c7298b83ecc3e54defe1dbda762e82b46ae2c5601bc12f91fcc21ddc5c1ded49fb3578671295a9471a3801d434d4bad8bcfffb60d1c6d45f2648a9240e0b1983931b7c0e303f5a2ca07f4361fc1520ac9e3c4ce0b3ff1a3a04aabc39d3a7ef9208503a71e4492e8249a10897ab1ea132e1004ab0f659fcad8a4577a6fa4e0dfaa659c1038885bd941cc0fd4d00a7a14a56019d123a249ff20b24b95f3a2d669390f003c56a62a5ecdc0648de664400265d5d19f2c01328ae2257189f3d2c2212df1527a4bd8adf13b4bd832a242e0d38d0af5e913e76044aa30542e3b16b888160303ade448b1019b0d4d128df90458ec3a646d1b4e5baa5a3a76b897e7f969cbd2eaea00d658eef26df8977c9f76e9e4a4271701837ae3028801f3f99629ab649d6d8c3f1cfafe6b0c032051cf05a27954075b2411e7c74fcde035bdc951b8798299c48df9fab70443d23b70f7b4511f725cf22bf572a2a431a0b6ba852bc548df2e4aadc5dc8f1bcb323473106d6d6b586bc528e28d40df5a339a0cd9825fb501c44904350a19af2a0b7939520ca4cbf99edf1e935dbfbd55b5dea72db2319384861299803ed7a31818acda8d11be93fe7d0422c592ba3bc76cd3aa71171626e161ec52f473c18bf4a84cedd73b1c5dba5b362f885b52af08953275ec54df20eb1be2c952b5d890999fc379b39dd20c24d6830ace3616f400be2f432aa5d738a83b3914f4a6d0ce159a6d7ab5b5813ebc3d45244be3e95e9d7482a305e6c3296d36895bd7dca23865853b321a92669e499d7b206ecfce22962228b8d00dd69730e14d0d2b2f8d8ccec83645083f7369d7405424e082295fa2e571126478d2912210e521007c50e9f5abac5dc5ff907c025ce81acb91a1ec8d2a7f11a5fe6d6ee144f6afe8caedf88c4dfa8fbacbe80f51f239182d42a22f22740edda5cf3726a932f3fba54cbb61eaeb9f92407899a412d3590228231764c9ff87c7594e3ab93d15f78f01aa7948fc3d22db4287a43d066ec90f9b9c33c1d4f6435cc2fb06784f8a25f5a463f03488b11e654d243d3ec7c7ea090ec8f516565c817c3076c069afb0c0a0d7040fb80be54a0ca1f3e2753ef94b2b3849aa3e9a4cc20e5aa54fbc9b21695fcd40925ef7cefe390fa250678ac9e51d77550ae87dc0de3833b0910c45eff25d6a790e0d7f3ebc8cb6cc648f16721d0000000000000000000000000000000000000000000000000000000000000000189e30194eba1431b83808eb097df33df9007860c68c36de5363483e24d0ca410000000000000000000000000000000000000000000000000000000000000000137d99acfaa0200f28df7aa2b4ca99247c0d97422c1d5f0cbe2c686a275bb6560f21e2eaf5b72ca86e72a04e590fafc5aa8449ac6274c47f7df9e006f3bd3bc62e755351b1d61feb0ce7ca89d39d1c4eee0b20966e70367e54d27ccb1efa7ab023d6ddef3b1194518eed011010db2f6f268ced2876dfebb436bfb94ed4c1fe311ffc311d71a859b91923cd5f87572358860ed3a198608d01aa684c792c6dc7281a42335ebcb13a354d425a8a82789d754f5d3982784eb38810020b45ba6d54ed04e310469fc31d81a39e515839ca4e3c6b874873650252185a12a6ecb76829042cef66164cdde28ba3aa4890b98169d9cb9f7874c04b6413e9ce2bd857b7ed1b0a7d3986e24cb9cd86a28e5db1ea487610660de42a8527a85d2023f9fc89aa2c273682ec13144456d708d8ccfd57a04752044e3bf8d7575952b0fea92933cbe4214aa56351a1e3fe6c258bbe8d9e25c738496ba80e90a42ccf78e176776062d009d050a59b4293d74d508719827f37cbe5e26a1f13c86e97f7df36b965053ab513ca6c19e7c2d0e814c6acccd4af3d7caa1bdef0ab7a1f77bed8e0d1776cf0d42c7f2f760e04be4aa793cad2d9ec70c19a6b6d90885416fb4c32e680ca13495905998d52a3cf0929f1eebfedd024b446f7dbc7412ed9af5df951a6e20e71c8f512a64b316661755c06c949225310ca75b7c97e6e423cfdca4fef34829fcb42312975bdafbf66cf3b153dd4a90bbc99161168e5ce93d9e4975cf78520111b51e60aa147c49616f4cd15c22126a7e86e6905d2f857d836408125fc10cf813a1f0f16e4d2692b481d6a716448cbaa9f158e31c590d750a13719ff96bf81c255636b04874d02349b7410e312aee0c3e300a60a0af19ff3be9df56b1a3f86e635cd232b819973ca6884f2cc307c4b17afafd1b515c52e2b465e85cb021dde4480abb20178cc69e1bfba3006a7dc1046d9ab5ff9918795355fe98f9739a6fa0659f7ea161b1c39b28e4450226cb79da65b2948c7195f5b82625eb08efb454fe8bd54a02a6ff09a8a17fd7a3e93b486389c509113d98a0f16edea0bf75d2a26033500f424b7cc858a2d57f7e5c58b1b5921a9f35a69c1b9a516b82195d7520c09658a18181cb1bf943b8238197a390efe588af3c262e2ae997235bcf5ce8f29c179831e15b16152b81a31083b848476b10569f314a7f2d29dfca00940c6e0050b3921a2214109161742377b6fe97fabe848ca123b34d38e5dd721b4874c780b9a1e2fbb089923f29701c32684401d9135def396c05419ddc5d00cfc1d1a4f98a5acc8b9207fce0fbbec465dc1f7915f09109376819af81be7dc5393da91eb325aec8b6a26828c0d2e26aa9ce15fe5a125a12a90467758d90e11a786bcec318c581954711ba4833bc4c877dcbf3ae8fb2d5d7f1d51cf025a4faa2195e6e2d1668465ed5823ccffce077b68cf3e6d4a982bf81046ad99ee3d04dd757e05fe9d678834ca2f1acbdd4a6a73088b01fc203e13e460621c5d1cfde8b2c4d9098660aba0dd1ad0281bd8c20e6dff9a5884e2437c38354032503aba4640ae20af7967b9ef057ef500383193139cba84197c436a682cb4545915e385cf8214ad3464800accce733423c2eafb47d31f0ed1a8228fd447d73f0482f681b98658f5ac4aff0c9fad790a1b83a2b05396e24219f62e9e7d35b8f4fb118751b8ee4d67c8efdf8755edf55b23ccffce077b68cf3e6d4a982bf81046ad99ee3d04dd757e05fe9d678834ca2f24b477a72818331d8d544df3ef57b3fb339e0a4f5e92e5a5c79e7dcbe786583e1eaf09c99dc5984a5cf9a20a516a1dd2a9414e05a3bb7b0bb2acb56d550e2d5a2a7377ca0da099c3018a9c958ed8e7c2ed631a73c450a6db2d0f224a2751a6e018544e4c66328dcfe99383dd109979b005a8b9b69990e820d9875487bb8833b80bffa3cf0716798fefffdba3e90f456811a69fb24bb8bd11d9c3a65f34ae59a303cfc9b40752f00427ccbcfe8f70de65a976eea5671f11c62785be5c7f6ceda82534bf1b441c28c542a6877a735721450acb6bb25467a52db069b81e6665f25f', 'transcript_type': 'EVM'}\n", + "Time gen prf: 2.8889949321746826 seconds\n" ] } ], @@ -263,14 +263,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Verifier gets result: 3215.0\n" + "Verifier gets result: [3215.0]\n" ] } ], diff --git a/examples/geomean/geomean.ipynb b/examples/geomean/geomean.ipynb index a908965..71d63e9 100644 --- a/examples/geomean/geomean.ipynb +++ b/examples/geomean/geomean.ipynb @@ -2,46 +2,46 @@ "cells": [ { "cell_type": "code", - "execution_count": 8, + "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: ezkl==7.0.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 1)) (7.0.0)\n", - "Requirement already satisfied: torch in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", - "Requirement already satisfied: requests in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", - "Requirement already satisfied: scipy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", - "Requirement already satisfied: numpy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 5)) (1.26.3)\n", - "Requirement already satisfied: matplotlib in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 6)) (3.8.2)\n", - "Requirement already satisfied: statistics in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 7)) (1.0.3.5)\n", - "Requirement already satisfied: onnx in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 8)) (1.15.0)\n", - "Requirement already satisfied: filelock in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.13.1)\n", - "Requirement already satisfied: typing-extensions>=4.8.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (4.9.0)\n", - "Requirement already satisfied: sympy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (1.12)\n", - "Requirement already satisfied: networkx in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.2.1)\n", - "Requirement already satisfied: jinja2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.1.3)\n", - "Requirement already satisfied: fsspec in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (2023.12.2)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.3.2)\n", - "Requirement already satisfied: idna<4,>=2.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.6)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (2.2.0)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (2024.2.2)\n", - "Requirement already satisfied: contourpy>=1.0.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.2.0)\n", - "Requirement already satisfied: cycler>=0.10 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (4.47.2)\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.4.5)\n", - "Requirement already satisfied: packaging>=20.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (23.2)\n", - "Requirement already satisfied: pillow>=8 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (10.2.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (3.1.1)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (2.8.2)\n", - "Requirement already satisfied: docutils>=0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from statistics->-r ../../requirements.txt (line 7)) (0.20.1)\n", - "Requirement already satisfied: protobuf>=3.20.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from onnx->-r ../../requirements.txt (line 8)) (4.25.2)\n", - "Requirement already satisfied: six>=1.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib->-r ../../requirements.txt (line 6)) (1.16.0)\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from jinja2->torch->-r ../../requirements.txt (line 2)) (2.1.4)\n", - "Requirement already satisfied: mpmath>=0.19 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from sympy->torch->-r ../../requirements.txt (line 2)) (1.3.0)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (9.1.0)\n", + "Requirement already satisfied: torch in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", + "Requirement already satisfied: requests in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", + "Requirement already satisfied: scipy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", + "Requirement already satisfied: numpy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 5)) (1.26.3)\n", + "Requirement already satisfied: matplotlib in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 6)) (3.8.2)\n", + "Requirement already satisfied: statistics in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 7)) (1.0.3.5)\n", + "Requirement already satisfied: onnx in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 8)) (1.15.0)\n", + "Requirement already satisfied: filelock in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.13.1)\n", + "Requirement already satisfied: typing-extensions>=4.8.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (4.9.0)\n", + "Requirement already satisfied: sympy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (1.12)\n", + "Requirement already satisfied: networkx in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.2.1)\n", + "Requirement already satisfied: jinja2 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.1.3)\n", + "Requirement already satisfied: fsspec in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (2023.12.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (2.2.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (2024.2.2)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.2.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (4.47.2)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.4.5)\n", + "Requirement already satisfied: packaging>=20.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (23.2)\n", + "Requirement already satisfied: pillow>=8 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (10.2.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (3.1.1)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (2.8.2)\n", + "Requirement already satisfied: docutils>=0.3 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from statistics->-r ../../requirements.txt (line 7)) (0.20.1)\n", + "Requirement already satisfied: protobuf>=3.20.2 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from onnx->-r ../../requirements.txt (line 8)) (4.25.2)\n", + "Requirement already satisfied: six>=1.5 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib->-r ../../requirements.txt (line 6)) (1.16.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from jinja2->torch->-r ../../requirements.txt (line 2)) (2.1.4)\n", + "Requirement already satisfied: mpmath>=0.19 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from sympy->torch->-r ../../requirements.txt (line 2)) (1.3.0)\n", "\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.2.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", "Note: you may need to restart the kernel to use updated packages.\n" ] @@ -53,7 +53,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -72,7 +72,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -87,7 +87,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -120,7 +120,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -132,7 +132,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -143,18 +143,18 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/Users/mhchia/projects/work/pse/zk-stats-lib/zkstats/computation.py:166: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", + "/Users/jernkun/Desktop/zk-stats-lib/zkstats/computation.py:166: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", " is_precise_aggregated = torch.tensor(1.0)\n", - "/Users/mhchia/projects/work/pse/zk-stats-lib/zkstats/ops.py:102: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", + "/Users/jernkun/Desktop/zk-stats-lib/zkstats/ops.py:100: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", " return torch.abs((torch.log(self.result)*size)-torch.sum(torch.log(x)))<=size*torch.log(torch.tensor(1+self.error))\n", - "/Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages/torch/onnx/symbolic_opset9.py:2174: FutureWarning: 'torch.onnx.symbolic_opset9._cast_Bool' is deprecated in version 2.0 and will be removed in the future. Please Avoid using this function and create a Cast node instead.\n", + "/Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages/torch/onnx/symbolic_opset9.py:2174: FutureWarning: 'torch.onnx.symbolic_opset9._cast_Bool' is deprecated in version 2.0 and will be removed in the future. Please Avoid using this function and create a Cast node instead.\n", " return fn(g, to_cast_func(g, input, False), to_cast_func(g, other, False))\n" ] } @@ -176,16 +176,33 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 8, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\n", + " <------------- Numerical Fidelity Report (input_scale: 8, param_scale: 8, scale_input_multiplier: 10) ------------->\n", + "\n", + "+----------------+---------------+-----------+---------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| mean_error | median_error | max_error | min_error | mean_abs_error | median_abs_error | max_abs_error | min_abs_error | mean_squared_error | mean_percent_error | mean_abs_percent_error |\n", + "+----------------+---------------+-----------+---------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| -0.00054359436 | -0.0010871887 | 0 | -0.0010871887 | 0.00054359436 | 0.0010871887 | 0.0010871887 | 0 | 0.00000059098966 | -0.000011396554 | 0.000011396554 |\n", + "+----------------+---------------+-----------+---------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "\n", + "\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "==== Generate & Calibrate Setting ====\n", "scale: [8]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":8,\"param_scale\":8,\"scale_rebase_multiplier\":10,\"lookup_range\":[-1522,45056],\"logrows\":16,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":14432,\"total_assignments\":911,\"total_const_size\":4,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,8],\"model_input_scales\":[8],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]],\"elgamal\":[0,[0]]},\"required_lookups\":[\"Abs\",{\"Ln\":{\"scale\":256.0}},{\"GreaterThan\":{\"a\":0.0}}],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" + "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":8,\"param_scale\":8,\"scale_rebase_multiplier\":10,\"lookup_range\":[-1522,45056],\"logrows\":16,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\",\"div_rebasing\":false,\"rebase_frac_zero_constants\":false,\"check_mode\":\"UNSAFE\"},\"num_rows\":14432,\"total_assignments\":911,\"total_const_size\":4,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,8],\"model_input_scales\":[8],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]]},\"required_lookups\":[{\"Ln\":{\"scale\":256.0}},\"Abs\",{\"GreaterThan\":{\"a\":0.0}}],\"required_range_checks\":[],\"check_mode\":\"UNSAFE\",\"version\":\"9.1.0\",\"num_blinding_factors\":null,\"timestamp\":1709450475706}\n" ] } ], @@ -198,58 +215,22 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 9, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "==== setting up ezkl ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 2\n", - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Time setup: 12.893370866775513 seconds\n", + "==== setting up ezkl ====\n", + "Time setup: 6.470684289932251 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", "witness result 1 : 47.69921875\n", - "==== Generating Proof ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "proof: {'instances': [[[12773529019820117503, 7223165032241168505, 6388811546753741567, 1325363978837834469], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [14148586052410868650, 7343294927740416096, 1182455714804702497, 77845129035718797]]], 'proof': '06286a11b2b68c621711a6ca88263007748edd8e3ea0708c1919eb3d25e880bc0975a8738faccc1e492de1985ddf735aeb1f94034465674aa491bbeef83023d80a7661eca2ea77c0b8e5c7aee1169595adf2e72051a723918f519da13436179014bd3d593cc0b436821b7d4ab67c9e5790ebce78e8006df21302b89f483f184b0d2ab761f1e86c7ac8784cf836242149907ed4f51646c76ac9f7020b96eadac32b6c815c981fec4c4c8c518e7f34dc14828243c7cd5c07b131671829a40bb0be231454dd3012c4633a5eee1c562da21233946f8be21a1f68c3b321fdb23334fa0256cd83f4e24a958409187bc5641cbe3471817132c1d030e4778050d133075e2f4cc5900b342d14db09cda65070785e6e99a9b3ab8c383355d9f2bf99a82d7a21f48319dfb553c3651bd050d29f3e30a4a9eb9fc7caa46a7d6426069ae90735214490d8da1beef81c30cb3a107ff08573c3f521b2ed3f915eb98434819af8e02b263abb5ed818c8ded6b0ddfd9ab6a1c399d5c2f501fa1552775a92affb3cb10d654dbc5582b431e965c17cb73a85cc06c4ef39186af6d6bc4263e12394b8f32bc65be9d8916b1b92d6c27f53afceef4a25c19e37baee82b53f4c8de9895e0c10e46fd42e01f7035a346bfe5939ee36681c2f71dc3306980210752d9cd01c0018b4419c28219e960c014cab908567ff35702da4e3dafcd87eb9ee294f1282a7280fd1b3d81934811021d39af2b31028a4edb2e4c314938849d47e30b4cfcf072525bed6d08bdb982bb94a83f5b836887b7b7d6b04d7ddf9a1f68cd6d32ef32010923fc17f250f67ea7d803fbab9e04874f72097b6846c22a3c3f63e8991af6e29fc13f6d413264d51b687e311ca85a42d45c84aa11ae401a823f20ff9c6ec4122c720986f0e8a457d7e911ce31821a17a84e189f1214e65fc658afc020e2606044e8554fd5dad102a724a6e015ae6f1e0e2168fce619290b5754c6e8c9fb3932b1b2db222fe7afe2c0c9de9ef0aa7eff6705f4e0dc8f7c0f271127834ea49fa2aaf6564d92fe931a4bb88379c256c8a392b3e2869583b840677bba0388d2f0c266ce06c1fb8e1947baece02497317a849561976deae07c12b5bde47574c974505a2c06ff719600474ce38b47e171cad8970f41909cc57033b1c3ed929f27be910923fc17f250f67ea7d803fbab9e04874f72097b6846c22a3c3f63e8991af6e29fc13f6d413264d51b687e311ca85a42d45c84aa11ae401a823f20ff9c6ec410f0df20d8bce531f1953d24d0673d55d5abd02add076346475c163bfab4759ac24c0b8485714b1e9ca1f0e2a934e6dfa097b5125ed781c99aeb137655e4d66921acce1c4b2d2362397860814d019e2d18fe6e7d4f2eb7be6b4e2d28d0d2721db0b104856a58d3b4093ad2431988b03d3e2720770614592b3c07cf562a53f66381bdd397fc48dbc3b1be9741036efaf002afe78b9a9859863169f6cb14162d8f4211b55959ec38572f375c3d6b0b754a5f445cdcecaa6ada269f3760039c2acb3082533d1fbd98fb50da80721c7d66419b1409877c98c81d17fff44459b402eba1b0c6402f7e856aeb551cae9d3810bd0e2976de29a1a872d951a6e2ef91fbd5829a856744193e6dfc4b8cc8bbe05c83a7f22eafe48de84d937d52f0ed1a29b72068e7391bae420d0f841601f54e06e5ad968574cbdbb8a5bda0096d381ed4b001ce94e4ee7f30bae9b9c1be7262787e6a029972b0a15338d46b7a2fd0cc9d5322616cdb3e7f667aee1716af3d7129ed954d412361be0aef73b1123ebdf9468220610c4afa09ba13ec7147e5259db1c4b36094d22182831be9796349dfa1ecaef0b7a7430bf4085f870ced5684efc8f47fd11db4388a7a2976185debd40cf3ef2240c5059a7cb64134aeaaf0e06d46fe5c369e91e7ee56673a2227fea2621e4790c303167c995d75e2632c9ba712ac725574876ed34248608c1af5150515dc18822813ad2edbe6a82d71b7e5999533edc560e90d32f4b02578153b02b880901ad1754e75d50e78a1f76a6582da878a422bf330811a5495c1f171599177e223058256525d01d5223b28e412951587c55bb3b90e6f2208aa86ba75c866afa369c4014d640764556a20a1aa5134e4e022d204f8a3ccd92b5b78f907b08a65f1bb75e21d6f3ac64ae4a20ed6961320ce14ca35c486d5b801bc0195daa79da664959922caca9ba5a0fb1ec5a2d522e3c574694e5904739bf0f63805438380d4cc8240c227104072e5b40dcb1a0b04aac404b9bbf665a7e81504633c2d4afbaa496f8d7000859b08557fbe77c2f71428eb1c41e251f41a42db8bd2382159feda3ca89e801c0af6949c41e48ad1d89bb57822939bec1aac0e6b54e2b17a4ec2b2583663b09e2b59df6f5ab689576fefddac42a831a465ae0fbb763f2a71198fbddfa5d6f21e892f2ca5aa5ed00c9fb4f941cafb37462134a71bce95320ddaec4c6d3d5fe1362fda584f62cde1ac08536fe7683001be364446a5b7bd671f8ab6bba723b0227615145ba159fdf3dfc72f8949bac95e2b13d5e4715004b08027ba730238ce62be2ad8880cd64aa7d93d3d1ff4ec95505c969235ce999377cd901c684e1b73c23c86551bde0a845f37b807cf3b32f046c0f870f91747595147b49d8d00c6c3b190995b8e890a446dde6383b4d56f1e2a03d006e8f3020222cf961dceb13c50003604ff8a8577e1a5faa51c3493fd043fa8e094674ecc8328cfc0788564e744b171a95f3c8814a9ebd73012c10057cafe2fe1501716c80f363656f35a5f61a6a020473b6ec8da726a6d402ae915cc9f665321685d3e2e52091c16f970f1d6f522ecb5ed2f2ddcd237aa031e76f81ce35931e4db06ca23c9864c03f22bcf20a061f22d5de7fff93269144d09a4d8df98d5c2fc349c6713e13faa1896f6d393bd00b5cedaea251bbe72c33654906a65edff8ec34cb73541248c48da52346a0a5af079f2feda9453307463720ccdde353667392ac6bafbcbd22c42ae2b8b2e797d4160bef7e19151a920d75cd1d53ebc03ae27b7b5b1355c62949a6af60e62afa1c1003e153bdddb8f2f08f2a89bde0573555d440ceae5ebcd85882c64a45ded69729161645f62b4cf72ae4d9b3506e2c634f366053c03a7a62037bfd52daf8ac88276d70d517c9ac71d6c56bc30bc91c0f0eaff3749c79b0628809591541b6445a287d043ed1f42687adb031c149b11b757e76b8851381a52d8bd6554c009e50492df95d85ef54cf5c6e0d8def9f0c7e312c0776c18bcbbb68d9051c657ba08f6d26407252f5755ae5be8ec916ffb3ffc9e8d47ac282b5d4af7f9667d8484e2ae1116c4b8340feba41b105f4186940b2aae0b6dd1fcaf5bbb5693867be897095102390eb1cbd119ceaca6856182790035814a52db73cc70147dda18c369083d59606eeacafa1353f8fb89637e055e893ecc58b2441cb741dfce7d5e1fde21cff140e436f6c3fb55108aa6b34eb8c868014ed3a6626d7a442e7edf5cda59b28b61f0e959aa6148e5108ba9bf55ee0bb7eb9ccc82fea997f331656786d154ffe2091282f27175d00378f6ba3ffc42d143dfba3d6ed606da761113572fa2fc89bf2c72a48e91ac11db6518d9ef28fb095e0cc022359cb3524a0a272077b97c2aa26d21ea1c946e23a4044418b126e954874eecba31b38b4ada60706492b4190676c400747ff82893dec1dcc17c147f34e619f094991829e31ca68b0158a038fd50bc7000000000000000000000000000000000000000000000000000000000000000003389dea3c26743dd6d4b2894e9bce249b4687e2b6bacadd46f40c755857a44700a5a43346c20c95ecc49db8f1b4739bc1180d184bd8c07a149c99f2aa01afdd00a5a43346c20c95ecc49db8f1b4739bc1180d184bd8c07a149c99f2aa01afdd0000000000000000000000000000000000000000000000000000000000000000100e6cf1f33c952d321f4b5a3b2e937197790ac6c7eb08c5b2760d7b2fdf7ae02de955be9de8a73e7f00954ba584377db5f673c7ff20c69e3b3c32a1ea27eca400842eb75fdbf464f91e9db0d02ce783f47b28fd37b3889afb2c0cd616b9bded081c3b477bf336c512779fa227f03d56022c309b2be0cd4a9bff1b020c5f1962265d69c7f0b3b2434930317b2a8f4e15f58d9fa7cf8a77832253e21739b270c31ba747adb1bb62ab4231e92fded4ff6f3128d25da69bbfdf8d3903ead05fe4b910aa026e020c0cd8e534e95522922b4945269f07f16e4a32ea20ad1160c7834b274ceb3068fc83b29bd67fb9dc27172d5bc77bf90ccb4f83b635627b292b8262265588aba8f1aff6c9edeadfaf63416eb85f364ee8b296485846fb2870c02fba0fcc4c7b32894eb125c5a036a5341f0e38ff80c9180de197a37317aca06624461fafe68e880afe9df11b4d9e47018bfb6fede5cae12ea705417d38a21de0b59f1c0c1076d0dae1a42cabf6c2c3330bc326b7e1e513c09e2577c940492d8ce87d2a13e8b14ea2c5956a8f1db62cfde4c9c2084083e9fe151ead45cc01c308e10923f42a2c84ad594d00dc71b8f986e616aae1df1489808942ce3749e3278636a90a467bd60f3242cfebaa2c3baf85785862cf4bc80ed8861cadbc510b3b2166250411b03e75a1058363a81e8c9bf608d55554fe6b0af017433a9ef366b640292a08f45bb14f82d399010e307f8ccb2d53a680aed592fa3a71c13abea6da24b444217b512c359ebb6c13a291b9ab632f29d9e4ccba50675c2c3e3490ef9cb4cde923124082e8264dcfb5114b6fb95a01cd7ce9f5987652214bec6d0251f2131e3801c2f0ddf552561a7c6c8dfeb00d3a9dda7a48b66d3a0849d2c993fb24ceda961cc6e6a182aea795cb0c6e2259744267cf77fcd59c0ed5401549a10c36027d0804b7da6e6899a541c4294fe503d873610c7adffad0233597bb6309bc341bd3c309c927c88cc157a3f731066570844b7ff171404a77f76c4b185988e8a923c02b0a51b21bf6dc938568b063266a02c507ff32b177b9e11e07abddd7a0341f8c69105e927444b63e57bba28c2b4a5ae3fd8218ea86bf2f33bdbec2bdba7bc71db9015a70dd7f514b0c16c93a5b36071f5c5c66102f56fa1298e3cb0dcc735a07b7015c840a52e4bc53b924b414201891e9cbf44cf3ad128e81c3919407459ae56924d25d601fc2ff531de7533f60513cbab309afaa724e9d3f618458e7253a20700c849b0b061202a0294ff180a00c7c0c296f5ebdd0c84f7803f451519772bc911cd5bb8fabd47101ae7d9c72f1d105639a66f91223de6b48440514adb7268d591892b12c8f49ffe4d9599be1dcf975e0fc715f90f3132ae61f0c7dce9e48068c05476d223f31c1ddbf87b83820be627b507d99b7c1c9c1d687fa272a3e10d881301795a8fae5a623f31c2d8e31bda0bff5b8fe995e84265acae4af600d26c2c0002a1f018c37050e6d5622d784ff5735d7e1f9970989c8a7cafbe1f58401d7401043b4526b1655fb462ee42f88534731bc532789a6228353c0b85bd9b3cfd37121b9e94421245f14f07d912f20c6f131bae093ca86dab96c8886e4ac1b8e785412c89590e2605beddc33b3add19d37b7211773e09506e098f637c928244ef27811b8e98453337f0524504653e0c3752fd13f79c4d47e8a4ac83d11bd4b09e1ac2766d36c2f80e8e873da50eb4161577358246146179e2fef473776a549255e1f289b006d2ddd0d189a38f7a708b6b5e7957f4354a8cf7a01423cdd9edb74ebe514d371df2a438d2b484631396cbcde889fb6e6d5c6e74d5c45d8d3cbdeb4370925e72ba3bb49ded3c7d97e7ffddf64a0f3367202a31f2fe4bdff3a2aa647c74727059efb34e5bb930da10935570b02e82b883bda9101941809f2757b586655bd272002de2fd6ad00ae1bbec8f23f423d70681b1c45a471fb61e8d8c22098fcac301795a8fae5a623f31c2d8e31bda0bff5b8fe995e84265acae4af600d26c2c002469e82a5c65e65f963b8aa356a6cdc440a6ac3192603b305585d43c3d6472a1517a751b1a5754ba9df6ad825a36390a994b780dedd6550cb407a4343022be121e30cddd1a7d028371252d3fc1efcd237109b985ff822a125b39fec586d605303689739b0e71a25b044923fd1c3ed4bff7ecbc3c34bff48923b53fe8c515d360d201ee84b8394d9ba73d6f215dcc3dd9b43b5c57463cabcca1c2aace4cddb1d07747dbb659a789c2088aefcd65d7c28d3e0a7633fee7607a924e03d6857cc1628f292f32c7e79d0c6b788533ab5b938add38db6a2b7290667ab76c6d3ac01c2', 'transcript_type': 'EVM'}\n", - "Time gen prf: 17.02580213546753 seconds\n" + "==== Generating Proof ====\n", + "proof: {'instances': [['ad297b8184503f0131009e1b94795f879c4560a1c673ff814dc0228dafd72103', '0100000000000000000000000000000000000000000000000000000000000000', 'b32f000000000000000000000000000000000000000000000000000000000000']], 'proof': '0x1b29a401415f313cd1a192de746e883aa30b0dcdf1d6d43e4793c83a77283eb20df5d3e057e791d9169a0a4e6e77d9118d0c4258a6a8eb454cecf0091def82662c4e795df31205970227eae5e05b042ab37f0ae586b6d3dc2d0dddaa5d6d478b277831974ad8452f7d1c350f3f45d6e5718a489dc8a85bc0ae4d74226dca030f0cda2584c9d98f90cd758374438aba6b8e8fb254b3fdc88e1c71c91df384f9101924000fe99b749551ff75cc7ab4eabc3784e6aa8d8bb1199be37b2939da9fdd03af6e95b6fe786651ed0c4d4ff6469a5281f43b22993240b1a889f9639df2390f7da73c2fa05c583234966a96803de6463cf147dfbc7a4eef0d413c3480fc34132633b05b7444104beb444b0440d2b46181a3d1bd38666b59b542604fb468552a5aaaaae2380690bb699d5c1edfe3610546618dd92a7fe56000bbbd5793870915cc93b6378442ea9973a74a64c7e766e11975140aa5758360d27d86cbb209130df6b5951c36fcb73f79396664713f6bb0604d94697829e159f6b37d86dc3a2f26c2b215e467ce1e0a97aa66e62279df995f7adef7b9c5af963752c0c09c0ae2067d6ddadddf90f70d9574123e4c7368b67596f7240730ac3c8a7d9d8be308cb0e17f06f738ac5577e15112ba31c352a5bb53ce61117d2cd06f727c060fb9ddd27147f9b209885c19eadb7112024ee9f6b6fab06ed826b219270735022c331192a2f0936fb35a2798f2a7d21adf3c5f3939bcec69164ae39cc85a9e349248b9c10bfe6d54edf613561ed0e26409490f33ee51ef5f9d044b24c042215094202e42b1b2db222fe7afe2c0c9de9ef0aa7eff6705f4e0dc8f7c0f271127834ea49fa2aaf6564d92fe931a4bb88379c256c8a392b3e2869583b840677bba0388d2f0c266ce06c1fb8e1947baece02497317a849561976deae07c12b5bde47574c974505a2c06ff719600474ce38b47e171cad8970f41909cc57033b1c3ed929f27be910923fc17f250f67ea7d803fbab9e04874f72097b6846c22a3c3f63e8991af6e29fc13f6d413264d51b687e311ca85a42d45c84aa11ae401a823f20ff9c6ec4122c720986f0e8a457d7e911ce31821a17a84e189f1214e65fc658afc020e2606044e8554fd5dad102a724a6e015ae6f1e0e2168fce619290b5754c6e8c9fb39310923fc17f250f67ea7d803fbab9e04874f72097b6846c22a3c3f63e8991af6e29fc13f6d413264d51b687e311ca85a42d45c84aa11ae401a823f20ff9c6ec410f0df20d8bce531f1953d24d0673d55d5abd02add076346475c163bfab4759ac24c0b8485714b1e9ca1f0e2a934e6dfa097b5125ed781c99aeb137655e4d66921e1b1abd143db174636694c8c65763cce09941c851da670ea18e2a187ab7bfff1875a0215d7e23f7d1952a1ac4d7685d28ff3d7462bf941c12a74f6c284848c81c8098e932758c2f6d581a9bf87fd4cd54a8c9b987cdfd952f77be1044b7e3840c7ad81a67fc9a0438425df16d86f6966c21859b1f17cd4c971141e7f1be41251cba32d5bd2f2d04cffefb31d0471188916fd9a41c7fa1cb65b0da390f6e6f5916e695bad3d2f246c11af5e30093179a465d3f4e135cfa573dbaf5992e59643404ffd573f83e383c27a8f847730a586b2cf8e12dbe92b7600a85aeb265b69de7231ce8e34f706b7885fd8b62dd5f96570177f2a075ac2077fd266408a5dd354e2829187b8860994b6ce9e0a5ab1473ef1a68eec678f38e6fb825e14c019abb730f4e3040c5b49ebf6334b648cd43aad485c87b500c1daab458a32fc398ffd369197fbc09419174e9bb885ccb0e319decaed5397ef15ec3bf49bbf9ffc8ccecd72160850deb48ee8ed3fb6cb822915a356070b9ad672006d86d481638ae2efb1108afce943393e083c7c157fc2e985f8d40ea2c39dbe7bf5f4e5d6f0b33e3f6e412d368c5781cb2715abcad92db69fe5a0c691292992b855206a4cbd59657d7a90ec90a8ee992ad06e69d150e9edc3c802309b0a21be9d1134579265d96dd8904140162c7a3d10cd4c4c9cf83cb16f03c284934e61a3e9afa4927885d0444acae05af399c9f9b0b6f056eed4244a05bdb0f39c2e07214d8ee820132c8ee5ccadf093a1d811705d90e044667d982bb5e09511a2ae5f48c4fe739d0b8b2438b63be157f665ec14c4c67922f75ffa717b4294d8eceb24c05c4ee5cd265dd35b1345b2f3bc6ec4e3d3a2399ee808e633edb4af986f5f55287cf95c59584633b3caf0d2f126f60499024a57c822aa22f7fa15c702f35d7624573ee14a8654445c9d6ae0fb3641ecf2b20b7d730a69be204fe7f6b5016a7e373f10d0a18f0eddacc486613c1f9967592e54696d2dd273388b982b48d68858dded457d1667ce13aaab3e717bbd753eeaf32c66a0b6bc67bd425496cd654c7c589061d726288f0e5de0fb712550fa363ae90ef4f81c54cdf214a67f958331853cf1d529cd9a5b40a72c742271ebeb14a918c8d0ec315a111731db0262f89cd798214baeb1b0e49162b0a2d0ea6e91df6ab228d903cae56e2082049cd187c1bb025791e6d7d4414182c1e820885711e903603a1932e1cc01068150277f23c8066f365ab8be2f8519b9e48d125c54a1d99445167dde61f93a47d38a28adabb40a1781d1d990b909f45f691f0102fdf67651d805741c0b58f51a90b4733569790871519f08b5a83529c94a9ba0f4ca0db134268aa74f58eb276ce9794508453827503394bc1d7b99ed1ebf97005cca46a6f75af0eaab4a875e30eea7a61de30d84e20fdddb28cba95edc97ebe1a088825bea0bca131d308f9118ec1b33d591fcb86d8a0b815299f14b12f348311c01a5017708164d161436d1da4dbd8f53b0df3b09f1420a15bfa8d4c15aed60521708ccc6a1e79b81c51e1a3723ffe2662d6d8811597cef215a6cd08614d0d196d28d66950e9fa704ba0c32baa535cc6e70ba0aace0f1df954bceb10825eb202054a2f981c4a69c4035319d8dad66a87966763d67411235fb5e334ef5eaf70087bba0db471775bc664f2b20dab12315cf9dfb285f713f2f03ae93713f6e93d0c71b87f489c6152084ba42752c989b4ae805b5b3b3bd1aa473be63f2cb1cb4c2d888fae53c1711213b494da503a017d141f861cd7ecaa76dac1f2ae25e5b519284edd9b424b48cf29b5a1e5b44133e6c218575e3ea2b4f4c22b075a86b9254b112fac73a96018f5737f888cfaa78b7dbb58e1c0110e57ee4b2f5259226ca70d1a61b5bf55fc53df53a2077c66e7cdd2f53155086d2fe9ff1fd1fcdbcbd10a6d134f2738bb6a4e731855dc4aca705f9333dc5c944c5c27136118e2d184fa346f1bf8585b29aff272710836423d2c90ae2a0b9f181227adb63cc7d84170bca7e21247e1c5c7561ac144548b2a584f57dba386a11fef6f83dd8624a9894bc2b2d72b6a2ccf36552be47acadf481d2a514c58e90dde7c7b176449929d0a546ec41b144da392b70da139741e0647168180c8f35d43f955677510b5cd651b2c60c7d32c9fd219b1cb703799fffc89503773cd6e2d9fef7b393b97c2ef6541abf60b7e0eb49231c8e8dd93332afdcbd72257e2f32f7b50b1f727df6a9afb7efdab33b1248c83db2572c92fdb2b2f6e5c6665c64c345995615bfc31cb9fdc37a27ce8b10916ba9627785dde65acd7c68b5a967d687241fb868a996532551d7923f02f102a0c8ef33e9adf28b7434dfa5fbae17e9362040c6b997030f005982cd9b65f4d14bf3ff2fec7a762779f1b3655fc57a43d0688159cb4679781f679506b090821175db1d0717be5005daee9297dcace6ef756295118e907fbbf41704caf92b5480e97a934ac6bab58ef10708c5a8ee0959edc8c169f75f882c9f488327d914f8000000000000000000000000000000000000000000000000000000000000000002981d29ba891ab60996f31d8708db5f8a1190d0d827e038a8614a62804223484000000000000000000000000000000000000000000000000000000000000000007ba39473e76250c5d40fa530d20e0c1fb90cc636dcb56c8e97d76d7bb895e980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e8dd4d3b23f8f9a862485231b03b3f94c4c6a8ae3b7675a1167b547f670fb2d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000295db6035ff0a82d88f31f3cbb1c4429bc4b8faded6dffd5dfde0d9bc643da3b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d2496a027c15707678c9a878be7f3b050e828ec799b06314911cb51c92abd34084b1e2d485e1dfcea5e743c187f4ddb70b8876abb24ffd6e976badc9feda67409c35321063fd4e05ac8823cf933c6e8cfb5a0451067533cd29c255cc0c01ad509c35321063fd4e05ac8823cf933c6e8cfb5a0451067533cd29c255cc0c01ad500000000000000000000000000000000000000000000000000000000000000002b4ea795e26ed222afcdd4d35bc5235e2e2db75189b985a391aff8c58fa9862e00000000000000000000000000000000000000000000000000000000000000001009a4a4f514e9cd1bcd1d987b4636fe4ed2d3798ec6871e26deedae6e07b32a0795f55dd96f74734166876559331fa88d47beb268df8f6713f3eb3afa8612be070f2990487a554e1d5adb1fe9137b8401dbf54113222077843b2f36caacdb612b917d13c79f49697f50fcbf2eac75fc6ca34b8c5c61e92fdd8410142782b3c605d9d19a6c67cdcdcd658e4c4a36e6583024e117a601fe0e7de563e813152ccd1ce629ff0215627196d3cf782b0edf4485ae799f5dfb4552868d62256c3455c411dec0a1d6990e34fb398d4692af17ddc595338593612b91a6e442ae68fd34b41e45773de92f7be6a676a8d4475db389c0ed04d18f999a9b4614f812dfdf9688076fa38c76ef166520d9c6c52cc0988d779f715073d7d5f05d0e9b15dcad41690ebea4a43a2021cb0b31314d36a8147b4f087ffb7079d37e0d0b26e2c0d9a2861a63612262ae679a0deb9ff584c46c4f7c42148eba1af9fc719ba6fb4cd1ccd9050c07b8ace5f298294381449141fd2c84dc20e50e62f686ef8390710e2cb879091e2ff35c68cd3d00d790ee6a2e10bd481130be5c50d517058d62ede0d5367d05b9a9460a752d36f257334fe74fd26e9552275fa8025332e26a4086f92ab3fe1c26f597636d11be264875ad503b29c09df59e8786df8e05816d0634f81b8c6b2e1c48e97f9ce468e38d0750b55baefa8b2c28ee11d315f0e06cd5fca405f22504288c3b3f9ec03c5942f1834c4f40e548d9206725bc6dbab34de7520cc2c7ce058c1e5368c93798964efb8f528b0762640a5e6ab893a18ed2c970a79895ea832f77128c06606519695064c4e4ca208f5e56ccf3fb5bc0030d039aa4af7548e9120f270138f2fc72b3d140c99806aa4f92207efe5712a905f7c89ce88fd36f472ec8b0d25330c748f804218ed42d9a3c7fa29bc51e2acee405f9c5a783efa5902151603a6b95e873e95f79de6763eb805c0af6022e8c0a5d6559ff4d477395421a89f2f33ea570f95c85a7f3fe237591ae6aecd280e07ff8adbf75cde4269b711484400a94dd8609566e7c3ab31f2ea38a9c58410f4a11580ac4d93b118b45182820fb43223175782dd9cc7943afabdaf04ff64b48a69d9809bd33537852fab7269507581040b952f53e113fe42ab78c8d5eb3ba0f16acfaf426f1234cba53801889a31464f812b04be0f6e2569b756209a538ada8246f4a7f3715125131bd160d220856852b85873c3b81a7711b5d8ce0e09ed03904bdf2f525533d94fb7d6a302ba809e1364686db23842dbf06346507cac5c23d2e315dde1f35cd1cd2d2391dbc977dcc5d1a37f28adecb18f76c17c6ef2138f73d008d8a559cd7affe913e204b0233e4058e0e1a27efd703e8e19a91eb321c90d48b5c7e849a1e4b2faf20178ad842bb838d30c33c41b54691641580ca4cdf38f092dd09540fad3a83ed8a0bae845b458f57f255f44d6e9fbbe67fe136bff3865c5498e8a1a269dd494d7d279528f577f6dbbee776a1878b874f6ec58978f5a5adee7fe6527a173bfc57732f4b8d50b39c915108c2a4ca4f78c5a75220e5ebb23a9cb1b59cdc71f41b84dc2208a1cebe58fbbf3bf7371aa145054372a21774daa1a7c59ae89965f09eb4e2204b0233e4058e0e1a27efd703e8e19a91eb321c90d48b5c7e849a1e4b2faf201e5beb03419bacbdcca2e083970e9d601a3a20f79807587c5ff261ad341b5f3d0c815e92535aede9aa0674bfc39d4650545835b6e2a1443cdcae5356264fd11a17b51030f99f9a5380d34fbf32d4e14f1617478fb73ff51ad0dfbb3b5f457e300b6d491fc5a56473c66c9cc41f7b047448aca8d8b734fc66ae40aaf60c918d1f1b372cd02c673887abd954a6913cbde3fdbc9240a967a128c64ed5119c80ea6611ccaeb93b387c1f0693fb1128e30dee2b5f415bd4a1b927fb90db6b1f5ad92e1ba1badfe4a114f332d2dbf75751abace832a6c1b7989bef65fbe761d5aad6b2', 'transcript_type': 'EVM'}\n", + "Time gen prf: 8.045958280563354 seconds\n" ] } ], @@ -265,14 +246,14 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Verifier gets result: 47.69921875\n" + "Verifier gets result: [47.69921875]\n" ] } ], @@ -281,6 +262,13 @@ "res = verifier_verify(proof_path, settings_path, vk_path, selected_columns, commitment_maps)\n", "print(\"Verifier gets result:\", res)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/examples/harmomean/harmomean.ipynb b/examples/harmomean/harmomean.ipynb index 3b00cfe..115eaf7 100644 --- a/examples/harmomean/harmomean.ipynb +++ b/examples/harmomean/harmomean.ipynb @@ -2,46 +2,53 @@ "cells": [ { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "python(43647) MallocStackLogging: can't turn off malloc stack logging because it was not enabled.\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: ezkl==7.0.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 1)) (7.0.0)\n", - "Requirement already satisfied: torch in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", - "Requirement already satisfied: requests in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", - "Requirement already satisfied: scipy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", - "Requirement already satisfied: numpy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 5)) (1.26.3)\n", - "Requirement already satisfied: matplotlib in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 6)) (3.8.2)\n", - "Requirement already satisfied: statistics in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 7)) (1.0.3.5)\n", - "Requirement already satisfied: onnx in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 8)) (1.15.0)\n", - "Requirement already satisfied: filelock in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.13.1)\n", - "Requirement already satisfied: typing-extensions>=4.8.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (4.9.0)\n", - "Requirement already satisfied: sympy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (1.12)\n", - "Requirement already satisfied: networkx in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.2.1)\n", - "Requirement already satisfied: jinja2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.1.3)\n", - "Requirement already satisfied: fsspec in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (2023.12.2)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.3.2)\n", - "Requirement already satisfied: idna<4,>=2.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.6)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (2.2.0)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (2024.2.2)\n", - "Requirement already satisfied: contourpy>=1.0.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.2.0)\n", - "Requirement already satisfied: cycler>=0.10 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (4.47.2)\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.4.5)\n", - "Requirement already satisfied: packaging>=20.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (23.2)\n", - "Requirement already satisfied: pillow>=8 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (10.2.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (3.1.1)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (2.8.2)\n", - "Requirement already satisfied: docutils>=0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from statistics->-r ../../requirements.txt (line 7)) (0.20.1)\n", - "Requirement already satisfied: protobuf>=3.20.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from onnx->-r ../../requirements.txt (line 8)) (4.25.2)\n", - "Requirement already satisfied: six>=1.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib->-r ../../requirements.txt (line 6)) (1.16.0)\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from jinja2->torch->-r ../../requirements.txt (line 2)) (2.1.4)\n", - "Requirement already satisfied: mpmath>=0.19 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from sympy->torch->-r ../../requirements.txt (line 2)) (1.3.0)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (9.1.0)\n", + "Requirement already satisfied: torch in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", + "Requirement already satisfied: requests in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", + "Requirement already satisfied: scipy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", + "Requirement already satisfied: numpy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 5)) (1.26.3)\n", + "Requirement already satisfied: matplotlib in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 6)) (3.8.2)\n", + "Requirement already satisfied: statistics in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 7)) (1.0.3.5)\n", + "Requirement already satisfied: onnx in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 8)) (1.15.0)\n", + "Requirement already satisfied: filelock in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.13.1)\n", + "Requirement already satisfied: typing-extensions>=4.8.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (4.9.0)\n", + "Requirement already satisfied: sympy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (1.12)\n", + "Requirement already satisfied: networkx in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.2.1)\n", + "Requirement already satisfied: jinja2 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.1.3)\n", + "Requirement already satisfied: fsspec in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (2023.12.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (2.2.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (2024.2.2)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.2.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (4.47.2)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.4.5)\n", + "Requirement already satisfied: packaging>=20.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (23.2)\n", + "Requirement already satisfied: pillow>=8 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (10.2.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (3.1.1)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (2.8.2)\n", + "Requirement already satisfied: docutils>=0.3 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from statistics->-r ../../requirements.txt (line 7)) (0.20.1)\n", + "Requirement already satisfied: protobuf>=3.20.2 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from onnx->-r ../../requirements.txt (line 8)) (4.25.2)\n", + "Requirement already satisfied: six>=1.5 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib->-r ../../requirements.txt (line 6)) (1.16.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from jinja2->torch->-r ../../requirements.txt (line 2)) (2.1.4)\n", + "Requirement already satisfied: mpmath>=0.19 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from sympy->torch->-r ../../requirements.txt (line 2)) (1.3.0)\n", "\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.2.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", "Note: you may need to restart the kernel to use updated packages.\n" ] @@ -53,7 +60,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -72,7 +79,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -81,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -114,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -126,7 +133,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -137,20 +144,9 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 18, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/mhchia/projects/work/pse/zk-stats-lib/zkstats/computation.py:166: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", - " is_precise_aggregated = torch.tensor(1.0)\n", - "/Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages/torch/onnx/symbolic_opset9.py:2174: FutureWarning: 'torch.onnx.symbolic_opset9._cast_Bool' is deprecated in version 2.0 and will be removed in the future. Please Avoid using this function and create a Cast node instead.\n", - " return fn(g, to_cast_func(g, input, False), to_cast_func(g, other, False))\n" - ] - } - ], + "outputs": [], "source": [ "# Verifier/ data consumer side:\n", "# since have division, scale must be very LARGE, cant use just 0\n", @@ -170,7 +166,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -179,7 +175,7 @@ "text": [ "==== Generate & Calibrate Setting ====\n", "scale: [6]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":6,\"param_scale\":6,\"scale_rebase_multiplier\":10,\"lookup_range\":[-184392,11264],\"logrows\":18,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":14432,\"total_assignments\":912,\"total_const_size\":4,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,6],\"model_input_scales\":[6],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]],\"elgamal\":[0,[0]]},\"required_lookups\":[\"Abs\",{\"Recip\":{\"scale\":4096.0}},{\"GreaterThan\":{\"a\":0.0}}],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" + "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":6,\"param_scale\":6,\"scale_rebase_multiplier\":10,\"lookup_range\":[-184392,11264],\"logrows\":18,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":14432,\"total_assignments\":911,\"total_const_size\":4,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,6],\"model_input_scales\":[6],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]],\"elgamal\":[0,[0]]},\"required_lookups\":[\"Abs\",{\"Recip\":{\"scale\":4096.0}},{\"GreaterThan\":{\"a\":0.0}}],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" ] } ], @@ -192,14 +188,15 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "spawning module 0\n" + "spawning module 0\n", + "spawning module 2\n" ] }, { @@ -213,7 +210,6 @@ "name": "stderr", "output_type": "stream", "text": [ - "spawning module 2\n", "spawning module 0\n", "spawning module 2\n" ] @@ -222,7 +218,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time setup: 46.1549072265625 seconds\n", + "Time setup: 25.911302089691162 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", @@ -242,8 +238,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "proof: {'instances': [[[11712583131456230033, 7998639690917952521, 17628064685104548320, 3364894255067083796], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [10409296726488761395, 15557203226960814343, 16692342436085548322, 2420882828764455196]]], 'proof': '1cf8b61368ed906916c88eebd055a9f53e3357380cb2215fcf3d5bcfb331f1d4288a00110e17f3fb3efa02da9adf4a7067c83a634cc53044bdf187a952a89cf10905dd7331b4578968d113dd68012c32740dab9c22a2e33a79e6d574152fb44920e26fe4d0a674a1927d60dddeabec7f3d88f254492fa1151e6ffc16a3217a0d1a29386288bfcf7f8c2a5c89de8e2132413a2bfbbfc68b5cbe2dc27ac23619d427b80400e49a23bcf24f04c801028894b9da35845e8ede0726545128f7849d6200dceb7c7da486945aed19fae35e8d933d6772958ade9e01631ab53607541b662cc182f21071264786b7f915930adf3a14486e5d69a733b4927e773c4e701d801db991c5fc8a4bd1d6aad578927fa03af55829de211da849b908bcc268d4b8dc144dd4d0a03ff24ad3590c97b7e9e578528e600f18f036301b6f2deca397e0ae27366ce2fbd2c81db0d6675d4ae59c01942e8563655ee034cafe367e7637c3ae01619b3336fbeaee7fe157f3afb124c81fa162848d7e8577a42b8ad23454fba30959b6ffe4ba3ecd17a254edc65feb96a6e21be3d013b920581321365a30dc2728e1b116f758e362069fdbef6bad3f76fc8fe5193c46b6fe45e9e87126ccac6006cf19ccad64519b8c1621fb6b6762e95673d864f0d7470fe2a29e2b792ab8ac1681ba589cb0fba4ba895dc2cb13af891e53378ebe246670792e4dcd1059435608760b2a0a8d7dcdaeb5b9ac55a90f8bc972a5227b02dfbde28f8a64223399e10e7fcb263518602c1db73ab24428a2969f73236978c28e2d1301e8539c1363a22e4a925ac8b888bda477f1a0bec17c60f7fd9deff90ef5b5da42cd19e5242dd02994f7111e94254d0fb69ca7112f8df35093369740610ec3f3ffa0c4df7206700cbe6555dd663344a4cc8e9b21dc734a78f6b239dcb1390b9aa9f246023b23110b1772e571d06ef1fb46273007ff93f1ca51e2332cbb9838a1e5f1040fe9ee9112163c42b0dd51bedce73f85af391ae3f0b1009bb1f1068005f7d6b2d3336c4d11681f239fff806f28f7963123414727b5ea6eee5891263e73d16afe74af381502013e1d1f540e44d404230c3fc863f04db52683e5c3e5b46132f6269d29ba382c61bcef4397f1cc9304199f71408b068fef11763af91d203049893d984010b326a2ff9adc91c0cd928e6304a2519792034df055833af03767bb2944e410d8f01d5d36d43d7876918cacb5f1f07c75f06490b47b6e07631f727574444e064e540cbe6555dd663344a4cc8e9b21dc734a78f6b239dcb1390b9aa9f246023b23110b1772e571d06ef1fb46273007ff93f1ca51e2332cbb9838a1e5f1040fe9ee9122fea3681898d62e1c2b10f0aa3f4444dba0c923949d554e107427829a262a8018224d2b4f98cb307a2e56ce75d32417610e72590432a0303eeaab8d9d1e4b060739d4c0656990d8a1483e2d807f9d50b711e1405d59fc1d4193c7fa4e51863119308083b6710e7f0d3b5eb180392dd7c10f9cc0c684b2a332c0fb8738131b800d2668c818f9b7c17b80ffd8abc2c72ec3864549741dd2148b36188e6722785822ff0c2fcd59ca9316dd7ca30fdde766c9f76c1396cfcac97299df2277af010c00d1566204fa0d95895be77d5669acf1b08eb293de2073eef328c83e833d0cc31aa3ccfff98955160316e92cedbb03e59d345e0940e137997cb4e6f87ba3589800cd425140e31fc849d51d47865556e13d84eec83afbfa7c3004a1490f6af41f1378f72239b87a7a5ef7d0563f6cb8906cf3f6ad98c145f1d4649467de78cbfc1b7f8f8c0b68886c3d260f738f866af4e9b368b4d61fbacae3236bbc879bb0f604920931d27b0f2a9d474ae0718390fd962fb3deecbae1d9ce17fb52a59ad72c0694b742ef8e5a67763b1a411eada1e8f1e2d81efe48ad1c248ef5e0fa8aba1505b5e5390cd32c2d615ea3d27898bf625dec802119a392d92ada5dd7ea39bf9702e57c2e84a7382d301674d621e1543be61c5d7943e020b62c0c766babaedd16302242186e87f12d39631e7017131a306b843e742e043e09f6e01874b049c8151f2bb934abff253a3e35546d3cc2c91cf98ca067a9f9220c6b57954ede7806562b5d1cb7367e99520a008b60d867c7efbdf822533ad6f8f60329a6e8574b287a1ae3011326e9a021207fb0f8d8a2decfd8df18d37858bf86ff92a55103c5e859095bb977540d371033740c4853e2b7d9fba63fe2136ddc186f1825bf8598adee2f2a26ce6df42ca0881a773178dc41c570fa3a45022cdaa3e3d93e128dfa6dbd0bbb0876ae742d955b17f14e015d077e922a8a94267e95ddd53619e0d36f707321c2b6b388225f9313680481e24a7367c8e5fd7797f3246669706fefe9dff3851a478bc0f95a5f740d27052451de776617ceead731d2b361003ac5c4d829f1260125123160f9838cbaf5af7d5914df1104c7628811cdcfaa601b8d348b503aed30420eb23be57dc10031c036bc38d1f3e4e151335b7f3a236f24a3f2a5f7ce472037dec1987d7f379fac142bcf928aace3a3f917bb2bb009d790e44f9b9ebefc051f602a054bc2131163708d7b18c779c7560c26d7f73d7a78f3d8242660b59b1139778b277f3cec69d5e016996772137b9714c58f69f5da1a605c4b8cbf07202c133ae4950a5fabff9c7c6b229289ffd05e113b049b92c73e19b33650a3e04b26c3ddb0e86c12b33a874df8386a1d87cb4c636dbf261ad826a990fc48c0ac1b1c7c140f601bf728590039b9f88e00b8c7da74425f256a47588653ef0f970afc2291584e1ddcdec917530aa3030900be4dd83347f3db1f782d08e6b9ec058bd1141b0de24013336caa8f429f881b138d23945e37f22743e9458651251a23079c13fbf2a9f706c518112826bbe8d22a4d6ea5ab27af429c4558485c912c59023910c1224a7ccddeb25986bd5cb1975128f8d5ac8b3df102efee3448b57e6d6f732efb2c6da999e9092ca01d31af5e9a9ae4953b452eaf32f62eb14c03264cb47527c91fba5d3aebe6dc8159400e30efdd39d7c54cf60d814ab506ac9dfb440fef222d5972075fcf138acfcd3eb0c643ffea9b01208d7e78152687b41e86348491015d34bbd7121db0ddd24279a6f7525dd2cb52d35bd4ca909f9fd610f1a29c801c1f8ab510c412025364356b0b0edb623417f409e75e23a3c5bf5e33d421162603c79694b7d28bb4b64b536001c5dbbb645e78638a3cc702af4e62deb600fd690b198705a18c7a02a47e30218bda55a81c1885ae2844d80e39b408f7e939085100020cc5f3bc1d7b8e06b14a68f5036ac237af8fe5ca2666ef49e6ff6cbf49aa2e1824a9b259fdad1df46d89e2024f7aab993a1758859d47f2f603ca4776fff32a66589e38c9941f511c1175c8558a8e3c3ea9c19c7b566e65c5bcb8e9e3610e1787457c5acd205e71a5d520c343fd51ef9b66ac5ccfae69501f023a5de2f47b00e29004ed4c2b243c2252565d953584719d1bd8fc5531025dec15de76ae66df22d2f1b879bfea4c1190cc3ca573e2a4957977b6075abde949df9dc3fc3a2f500525a7e803505c075e0c8c4b0e7ce0c4485e87b6d9256222337e9bdba62fc6870525128c67a3feab2f6094697375a0f8f8f2484c12aab2f12b4014aa8e48d2f82272c2c4acf127bd50a92a74ef2cd8a17e8062ffa3d2819c5b5456aa95f07f45070c982cad58cd7f3684275f47655dea35b2102d61591d128986f1f0c1044c76304b6e65e5fcdb5f116ef3df3923a8a57a603780c80b47f12fcb46e795e8950000000000000000000000000000000000000000000000000000000000000000000001c85e82804d2adde9c6fd0645d1247acefcf5a872c138ea19101c3e7528d40001c85e82804d2adde9c6fd0645d1247acefcf5a872c138ea19101c3e7528d425dcd25524c6d7df81a2cca9a278015d0ef061306a3793e65d2d9659107aca3b000000000000000000000000000000000000000000000000000000000000000008feaa26f31c4bc77ed79902421f60b44cf20b6d4a22ecdd195b861b2747811c143cac6ed5564dae74af3407a5ebbc93d227f10a9a1aa11adcc01f99594a31580f0c406a9f2bcfecfdbdf0556361d92a4d9a303db2b0846a12019105f5cc484b1947a8aff692463ba106a35e30840371d512ef48db7bcd9c7282aded8c3c333b1128ea13d06a33b53c8472db7a4efa7f8e0ea320372f00a7d544f67fa27d039000000000000000000000000000000000000000000000000000000000000000000060875d8dd19b7a587371a83fba59e41a018a6b8f35f63a1dfa8ac8c9594d6611a1e2094ea3f873988d097895b01141f0d02a7480b0d74be5a4872f02de95992d1da0242f27d38557595521bd389247ed35273a8906c9749158efd35ee6342a1ba6cff5227a3122cfc97a0240407f42aba1f3a107314dc94395ea63993e37f81bd44a09d6e55a028aab89531a109a0768a157370ab4d0b959b1eeae7c9f34a429281220c0d83986cf5f5de8870a6499b39ff4357f9c80e85715a63416970b4e0853525684c46e97445c47523fdf1e55d6d276efe84942c89c94fa4917eb78d91ebe149e3a8cc85e09019116e8fe5a003a7997063f80e8bef9b1b7fc0580a2f0214dc40402aaf1f1164f74cadce36b88a3dbe0bd795a3d6c51b6aaba82023af416dbc7d6e11f532b782e61c6921af650a738857c25666b34f6bb97fc1e8613a924809ef7f0a034db50d99b6ad443252ee3d21194012c5062f5e25ae29b67ab5a1f6edb0d07f8ef93c2f49121a61650e8754cef052fdf1c7bd895751e39edc3882b54e84e3bea726db1438d2891c2cb0187f3500dc8501512587878b448a669c62bfa6dd6281d9d51594455954e3eb63fd7ad8409b2fbacc770efde92608f8c1c2c21e8e0fab32841a0c4ee1f0bd877bed3d148fe82011a93490b1c1e899ff33e12f8a81d6c1b72a6015878e9f13dfabf8b5e70c7c36e70e4062e24158ce23fde1eb5be3d4f1e74101d826df4175953bcbc49689d6ff6601e407ced018d1cabc708c67a04b8de86ee35f8766d0b3795fd395c078e13ca29056cc9eb73329ee3640f9ba7de1c5d964f2571f9fa42f79625052003ce415a7b4ac330ba23412c676918341187bb8ad7756eb07819723b68c5002db1be728dd390407ea0e3d54345840f2abd6b133556c12bddc5ff1e641ee7c153770910cc4532abee800b9ed298df0bf9c666afc97e7f0b033969996f45565a000102aa0cc784212d4bebf1c93523051f3aceaa67eb012ec5fa96c8de2bd4193e1e5c05d0c96ca80174a3795ca9eb0876f731076dbe33aca0f2c7abfe58225d5b394e0ba70e146f5c66df136f35a12f03fa4e27d68e68c16f6767d5a3432a0f74524861a5aa1405b48e38e286343b262b4d3d53c5d716a7021a3e9d74595dab96d58aa95455e9c4993c08feabe26711b3de665907f09633e31baba1e8a1181fbdd35ecefbd474e14745106c16d1c5171a2a1963928485882400be12439762ba1ea2bfb1c67269043ce72597fb02091b28576136f76b267af71d85227880266f228a30b0f77f9a8ce5d8187d05e79717fe84d433b36b66704d0648f27256d1db768571f7747ef37e0f17ebec7cc4eb2513da9a2e82c75a2247de8996ab93cf5ffdacba8cc582144f3b820c910f96ae2328577197bd4949f7738bafe04ad22ae104eb01a11bdbbda8c4a4da557e00712f63166417557a9088e7933b152db9f8e4b3ff5907c8e9da101f808296a018571f74941c456270415346db3b5d05f8759fcf37da995263a998623133a8e5abe91b0b7dadd776f8eb78eb9ed28e01e0aac1e4e62c41030bc2b2b2540f23849dd00b366ba4c07ebfcc6ad03f127431d3ffe79fef6b8587c7a1f51d25b5bcf235b321afc4418fae326ff2608edfe5cf7f4e80125ed4511a0ebcc01ba9d69ee6d22809a0665e741ae8e24d7c81ee90bd841593aaf255d6866bd280c752e764e2e19808d464c4f487042b9747d62f395bd936ebbc8cf12dd4fa3e20d73114065864a829762b6018b8d6df56b628365051c95a853dd3b3a75cb8c7a1f378e67a70b83a1b28576136f76b267af71d85227880266f228a30b0f77f9a8ce5d8187d05e7970b9e4c2dc4e984d8e19fb2415b368e32f814c92c837e2688547a7c06ae02facc0d93cd4a392894f0661341be9bf489ae6f625522e76000c68c8c10388bc35d7613f634b5dcf46e523c100750ed99958d0e32a99e2bac6f235b068c52bc3c64770b9245c7b8be34df6f39d7508a3a470328dcf94a0c331b6d68971f74a6b33935', 'transcript_type': 'EVM'}\n", - "Time gen prf: 61.2234320640564 seconds\n" + "proof: {'instances': [[[11712583131456230033, 7998639690917952521, 17628064685104548320, 3364894255067083796], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [10409296726488761395, 15557203226960814343, 16692342436085548322, 2420882828764455196]]], 'proof': '2deccea5835cd138662b01fc5d10a983847f69015420993499d62bff137dec7b1e177255ff696c06524172ee1716ede8089af624975f894e21580ad4560b8e8225a316b072f7a939d24a007b31c15b6c2fbac7da2d2638083186f8a5716e7e4024f1ae907c216cad86ba0efdb467ee5883464227d979b87894b7f50b64b9dc7319fc4b8947ee68fe3c00d64012380f6c8f5f8cdccddd1532ddba660ee6633d0e19bac10b8485d21f612aaec0ec3c79133a15c45e4d46708a06dc507af065b6891a51e15d7095073a6131ca2a7389e9804eb2c82ebe57dc5bb1dcc720e5d8a4d028d29bd40913b577bfb9a523e3f8b9c6e08ddb7fd2d9e9fdcae0e0d5f742a49b0194530171682c571738837043aa6802def5e52e7a2d7a8606db2993badc7eb5031eff3ad8a2a4f19724621e6f7cca94bc454b6b84e0d36c651a61c4b8e0086719725982afb11367f81e4f13126cbbd25a845865cf3d820aa04246b16c24fc232816c44b1e00803f51a7df4fa5bb6d7c0ed4696ec6d2aa670db6ae138eecb2121f59679166a1b9591e2893f7da24be0be52b695d787745272facd811fe293af72dc23998d4a2e529ae526d7652765ab2a935b8db5516fbb6332ed87602e988ae2670e80602d9225f658aad1092ae4b8b0e68d96efbadba4e539c6a974cba86920551e2528b35d91a81d3c4f4d6642c30802d429f44a5f936dd170ea8dc62fd922648f3fda01d1d3a59bc666693020b071bf4804e63561e49fbd6df96352f85d92bf1072c8dfd1ad7d3bfb80cd9232769528f7368661dbf1bc2e106dd4bd2c5512e4a925ac8b888bda477f1a0bec17c60f7fd9deff90ef5b5da42cd19e5242dd02994f7111e94254d0fb69ca7112f8df35093369740610ec3f3ffa0c4df7206700cbe6555dd663344a4cc8e9b21dc734a78f6b239dcb1390b9aa9f246023b23110b1772e571d06ef1fb46273007ff93f1ca51e2332cbb9838a1e5f1040fe9ee9112163c42b0dd51bedce73f85af391ae3f0b1009bb1f1068005f7d6b2d3336c4d11681f239fff806f28f7963123414727b5ea6eee5891263e73d16afe74af381502013e1d1f540e44d404230c3fc863f04db52683e5c3e5b46132f6269d29ba382c61bcef4397f1cc9304199f71408b068fef11763af91d203049893d984010b326a2ff9adc91c0cd928e6304a2519792034df055833af03767bb2944e410d8f01d5d36d43d7876918cacb5f1f07c75f06490b47b6e07631f727574444e064e540cbe6555dd663344a4cc8e9b21dc734a78f6b239dcb1390b9aa9f246023b23110b1772e571d06ef1fb46273007ff93f1ca51e2332cbb9838a1e5f1040fe9ee9117530a0ce970b887a019093d149d1887f0a084d417011795e790738a44676bcb0bbb736368bd1e7f3132fa60039a56104cb5a36ab80b4f57c60e42a2282df3b415eb30322318e7a7aff59a5a4cad8d665b804b9ef255f7767836f6c7819cb79c0fedb80afbf6dbf521e14bad92f85fd3d0e6cca604add7df9180ec82567fe5ec089fcbe68ca83b9a362e5dc27c3f4aade87f03debf6a2f673793290e096105b425063e66a01bc136b8f51ab8cea4a44a4ab49e9e98839e859b17f678b937b6e704614c68bdb375e50adb79ff248925425307d1fc822176585dccb5475160297e120df6adfb87949bce7e6177bd59f387be73a5cb773b8f29fd5755daac59456515885787c4dfd6ed574388dd47b8c1b5ecbed08f48f8838377f1aab27c76af1d2725031ed2d7d40c6bebd756c2681f37bda05e6a172eb4a0a792946c4753892c061329fa93a7d564a361c40b955f1da898b7b751a58cff41b42c975e0b84664018b1ce5a0243f1a4ebaf31d54e1f5cfaf10121973606cc22940db9e57bf0ae4b146ccbbb6b7668e52b4d6111b39f64b302d7c4787c9ecfcbae5317b710ea2f08119d69659e617f2c49f7d134599b66bfcdeb1fc73bf60fc849418152bf638a8126e3971f8ee0ff20dcf55c74c4d2ca3383e53de3a9a598b2081470612488fa9d0044345fcd5e3de8ed8fcbe25c7ac2910c8d91a57979ea283fccb237f498f0bb248c2c756eb1e7e697e6860d501e04c7fa2321a09ac3f4278857035647f2ce9e2e0d9f9a9d41f6c89b8a205c43711bc889bc1c8afa9907c5fc2e0b32ffd7c88a2daddffa48fe9be57d66eecaa6165a5f3f544d445ede5af6f67383a647072e181b4f7336e72cc20e64d5c276231c2c85d4989aaddc32bd65e77054d0e19f977c06e0486dfb6f2d06daa7ace1e32090365a5b071319b288139c9eab7bcb13759507c2c9d95b2ccbb8bdea9b6177ac1dfffdb8a91876f8a538754b3fef417a906317c473abfd3de8a2ce40f495c39a9be300559b899e39e9ff1b25eb24ed61456509c0e7629ea568c117f6381ad30d269ad8fa2262b008fa9a0e4696db848afcf8078c568b691d737dd64bf8bb95c3d7b7a90084bfc84dc2aa3e1891a3401db9bb20e99245d60e14764c76a524615569de20f5c2b91833c67cfdbe89288bb8ee1e209e63647cfc88bf24e2f33f5ee923e7c059e3ba56041d6d2861c52a0d6097fe059882ba2f998df75f84c5a504cad86bedcfbb7a4b326f3effce4ce9d78954751943805b11e5dc80ca91d4e70648354625d64d3cd4af1e64e3fc9ec2948ece6107e423ffac67339b54dc23b289d41fcc5caadc357c5d6975c8980aa0cdbcd1232aefa3bfa05c93d3025667d166d5113f42bfd0bab6f11ad0471683eb00685861101d9e93353223ead7b858c8f039e7870752397f6746f36880310521fc204385224d7dd8de644c7e806a37f601e4a1788416d3bf793483a6ba36b53ef57c1f1d2691bfac1bec14d909177276fef45cb7b1175c228faa9f49a79bed27c7e8556e1501e517f831d696555051d245330b5c76a7e9c1bde8b59345aab59ee6f09f851f1c70b29994dde0907cdb12a3818cd4e9bd4bc4f61cfed63ac64d42de45ce912fba73bbc7750ed46188493594117ba2e0d9bac4435e443b3120941d1bd9805e25cae5c313bb9225f70cae407f1ceaa79aa9727142f3d771be0f3f428aee39611a7104346211e0d67c0678aba61a70b7d47cc96107c037c6158c8e8026c8f25618b2b30589b949e220122ea5c08dfc4680a6240cab40a91c6a97fe7b8716a27a09a2b228041ab8c73ff92803b374728ad7b5d25c4995e9942e046eefae5ede611051fe0eaa937118faf0de507b6f88e8ea2f0df83183736fa7a3cdf0ebfada0f26e501edbcc37459b6796c8492b93462306447f692699beaa9154c7a633abbb21e47a3b74609d2a71e4ddb438369848d0b190b0abfa1f87504cc54082c0486d9071da505b1666a5b2869a13092e7c3365e84d6d8a1e89893660e1b425d6ab039151b50f0d913cb266f4032231b90af4eaa391a10a5947b301894e2d2ec40aba0035eb4086a1276cbf424a0c883a0b329d5e5ae89610536e60002e78187f6e75c2cf71e0d0f304882218e690638aee1041ccfa4336a680d7ed748467cfa46e38f1197ba18ba27fe6311383144a3efbfc139df1592ad51ba13b48c35f2e550e2f51f2b2074c7e8abc05847b507d5be821a185f19e18e3b26bf38d55803ee1633552f2a6d9ae72ec8cd10794e2980a25fd0467946e086a91365420db289f8abef091725b44261fefdecd87db9406ef87349eb35f50bd31e4a668f3c2990b1f581bf23c23acef4ef1f43bdf1d73fd2776335aed215227b30c7bd3ab5c7c91b989c000a8bb04c71f0557b84a2d420cb4195edfbd3edf1451847e7e542b286605b38c60000000000000000000000000000000000000000000000000000000000000000254d495e1bd50f8f0a45966e20f14d59f13c7cacac89c87bef388da05e53fe24254d495e1bd50f8f0a45966e20f14d59f13c7cacac89c87bef388da05e53fe2409acd86716f73c79f85788416d975b2e58e0dc0babfd591dbbfe7d1ac246fd4500000000000000000000000000000000000000000000000000000000000000002954ce4b06ef7ba2dcf31b50db69c1a8146362bc8cbcd65c4cd47d6f9c5c58421967a1f314ea5e5a3fd2aedf0208412154a6e92c2f040499e33c7ac7c80ee3f2216b50958c696f27e5ac0dfd77b2258b86d06aa3eb6d49948d7448d5a2052bc91a00f9793731135a7f7532a057db4851665be1c6c747d7f2efecd6dc45b541780063ab5db50c83482b6874d334f37d0648f6b508435766df5aa4477e4d1caa02000000000000000000000000000000000000000000000000000000000000000000b01a6bdb99ab229f402992a710870bc5474a81f076804e0776efc3b291d4ff278078f3209f0709f97cdc5abc5d02ce2d9e7cbd2c3ef6c40c845e28f27580a81387e515dbdb5f8ce36f8f2eb6392320e64c4ccd5c41d76aede24603d534e29a2484891a932433fbd7610b5b234fa34c19296e5313bdff9a6e3d31b63f2f1b2917bb6b3e7d194feac7738b94d3e90212190c4d5c503c5dcbaa748202c1c2fbb93025981810ba09bae70e7a4b1fb751a8924e390f077dde93d2766624dea6d4d30282f76cde2fa67d12b4b62ad7b52da9227d68d8b93da621431b774da51068a12292116fcdaa0fc0424c91575168aa87ab5c3a5551e22118bd5bfbb288b335851fc22a02ac06cc4e331af5d3236c1fdab0da6d84dddf83bb5aa8486f442effdb2ff0d439cac29160a119ece3d296a6d0bfc646bd1a17db6c17e7327a4e1e0f6c2e7cb6b08ae297d0f1fe144f844054fbcf08511b6483d1cc06508bb0670b753c16db608b959c088e58cb56e1aafa2cfac83643163ce25a75713a8e7141591b9d28dc90ca38885ea9b110c91b6603491e1533bf466f859e265e9a059cf3ea56632ad0d042acb01dc078b42f9ab88321929a99de3170180e7e7f2384c87ffe8994088e9ee775253d3d0f02536ee0b1cb1896f2735575a786d0ce3c2fde365819140fa5a356ebb9698b6cda918ac2aad0501a3eb4e6e559d567d06f6870821bc792283f736b2f825104f134c8d5ea4ba0123cb836f2bda0369607f18f4dc1d607ff0b919860728814f27e26a2fa15b77be73ea2246a8fd7474e139b2d5ce23c628c164abd8294735575052d39b6e21ad009eb3bde17acf4b9ab88e9cd0293a3f07b14f725d70f3b3996400d131ff698dcb058a59489fb2b84d313f9991f8553e6042e79849daa0e1bb7c4f34f55746b8e7e14f07cdc38c927d6e52f6a265b5b61f50e9cab7d2ab9551580fc072cf40c8a6d002e237f1837c1f771571cf573ec135518e0649aed241b7f8fd8fca1b1512c6ff1ac709210c68c61d6b1e821cdf2583f04bdac993b223f628c85da505c411f0d898d6abe3a131d34bcbf9e56135b826a0bfdd9ebef22987e932fc2ef3b6072cb857c6a59f4096f9fcf2f1bd3635997220c2e236f8d3fea99508343558da0eaa12e6e1c3eababa6709e1cd7eaa99585f701ef4dcfe5c10d3fbe10020e9dbfffcdc5afa389d7ca806e66a98326525bb28307e8fd95495cd94ba8d99733e3b957ab4119a3a8901ec24ade7ce2a53afe547927c32756b8ec87a0137280d7a1e14ac60ca75d78cd3ecc3e44478964547c9d181c41d0184ca46ff12b9f52a1752d93a0944ede3a8f0c8750f29d4d8fa1d2efd92edc7142760b8a1308c3d1f0746d3fa1866dc8bc698297da7634ea4ab65f0d9e1bbf02d2ad05dfff1e2322b3a0aa0b9947840d433aa3b57c36220155b33f96d3084cfeab2f0bbd1b5152fc8bea811c4b7cd74e7bff411c9cb74b8d6dde5bfab41477a5b73b752851c70a14843bf1ce0f6ee73bd0cd812a5a4ef5f12d38eaef3c030ff2a7e273614e1431172e3bd23860e32cc8fdc2b92f0f25bc6ad9dbe591551643db433787bd2873bbf2e9ef4fc7d8e66662f9802ab2befbda6d0166a677ff2d1f7b1a1265e2db300d2883a9f40395b8cae84078ff4b19c94ec3e60a6b941a20fd36c86b0e9f9f34235284358e23379ca278b049f2c9b40fb17c63753bd36700a43b62b6459d3ffc2f4e2f70286fea689e54683b369baa9054e7a4529dd1100eff760b4b081aede6e81b2350cb9ac200bc16aaef47cde3dff5f08c7d4f341f27c32756b8ec87a0137280d7a1e14ac60ca75d78cd3ecc3e44478964547c9d1827ae3692cf4ef40183c9fb9694bddbfee41b5947f06544e6644d771e22592d8929887f553420173a703fe1cf201c5cae50a54111031c500301c21bbad8dc0d7827d877bfed070d6dc152d938f3105c11fec951fec525bec531409b9694fe45301cce2afaa3aecc6891c403102c621007ae01d5cbf99f1049b889aef4bc1bfd25', 'transcript_type': 'EVM'}\n", + "Time gen prf: 35.821518898010254 seconds\n" ] } ], @@ -259,14 +255,14 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Verifier gets result: 45.21875\n" + "Verifier gets result: [45.21875]\n" ] } ], @@ -275,6 +271,13 @@ "res = verifier_verify(proof_path, settings_path, vk_path, selected_columns, commitment_maps)\n", "print(\"Verifier gets result:\", res)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/examples/mean+median/mean+median.ipynb b/examples/mean+median/mean+median.ipynb index c9bb5e9..56e529f 100644 --- a/examples/mean+median/mean+median.ipynb +++ b/examples/mean+median/mean+median.ipynb @@ -9,7 +9,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: ezkl==7.0.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (7.0.0)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (9.1.0)\n", "Requirement already satisfied: torch in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", "Requirement already satisfied: requests in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", "Requirement already satisfied: scipy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", @@ -158,9 +158,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/89/y9dw12v976ngdmqz4l7wbsnr0000gn/T/ipykernel_36701/589984064.py:9: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", + "/var/folders/89/y9dw12v976ngdmqz4l7wbsnr0000gn/T/ipykernel_43756/589984064.py:9: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", " return s.mean(torch.tensor([out_0, out_1]).reshape(1,-1,1))\n", - "/var/folders/89/y9dw12v976ngdmqz4l7wbsnr0000gn/T/ipykernel_36701/589984064.py:9: TracerWarning: Converting a tensor to a Python float might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!\n", + "/var/folders/89/y9dw12v976ngdmqz4l7wbsnr0000gn/T/ipykernel_43756/589984064.py:9: TracerWarning: Converting a tensor to a Python float might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!\n", " return s.mean(torch.tensor([out_0, out_1]).reshape(1,-1,1))\n", "/Users/jernkun/Desktop/zk-stats-lib/zkstats/computation.py:166: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", " is_precise_aggregated = torch.tensor(1.0)\n", @@ -195,9 +195,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/89/y9dw12v976ngdmqz4l7wbsnr0000gn/T/ipykernel_36701/589984064.py:9: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", + "/var/folders/89/y9dw12v976ngdmqz4l7wbsnr0000gn/T/ipykernel_43756/589984064.py:9: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", " return s.mean(torch.tensor([out_0, out_1]).reshape(1,-1,1))\n", - "/var/folders/89/y9dw12v976ngdmqz4l7wbsnr0000gn/T/ipykernel_36701/589984064.py:9: TracerWarning: Converting a tensor to a Python float might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!\n", + "/var/folders/89/y9dw12v976ngdmqz4l7wbsnr0000gn/T/ipykernel_43756/589984064.py:9: TracerWarning: Converting a tensor to a Python float might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!\n", " return s.mean(torch.tensor([out_0, out_1]).reshape(1,-1,1))\n" ] }, @@ -205,9 +205,32 @@ "name": "stdout", "output_type": "stream", "text": [ - "==== Generate & Calibrate Setting ====\n", + "==== Generate & Calibrate Setting ====\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\n", + " <------------- Numerical Fidelity Report (input_scale: 8, param_scale: 8, scale_input_multiplier: 10) ------------->\n", + "\n", + "+----------------+---------------+-----------+---------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| mean_error | median_error | max_error | min_error | mean_abs_error | median_abs_error | max_abs_error | min_abs_error | mean_squared_error | mean_percent_error | mean_abs_percent_error |\n", + "+----------------+---------------+-----------+---------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| -0.00078201294 | -0.0015640259 | 0 | -0.0015640259 | 0.00078201294 | 0.0015640259 | 0.0015640259 | 0 | 0.0000012230885 | -0.00001584626 | 0.00001584626 |\n", + "+----------------+---------------+-----------+---------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "scale: [8]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":8,\"param_scale\":8,\"scale_rebase_multiplier\":10,\"lookup_range\":[-25754,25754],\"logrows\":16,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":20992,\"total_assignments\":10073,\"total_const_size\":14,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,8],\"model_input_scales\":[8,8],\"module_sizes\":{\"kzg\":[],\"poseidon\":[20992,[2]],\"elgamal\":[0,[0]]},\"required_lookups\":[{\"GreaterThan\":{\"a\":0.0}},\"KroneckerDelta\"],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" + "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":8,\"param_scale\":8,\"scale_rebase_multiplier\":10,\"lookup_range\":[-25268,25754],\"logrows\":16,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\",\"div_rebasing\":false,\"rebase_frac_zero_constants\":false,\"check_mode\":\"UNSAFE\"},\"num_rows\":20992,\"total_assignments\":12490,\"total_const_size\":1222,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,8],\"model_input_scales\":[8,8],\"module_sizes\":{\"kzg\":[],\"poseidon\":[20992,[2]]},\"required_lookups\":[{\"GreaterThan\":{\"a\":0.0}}],\"required_range_checks\":[],\"check_mode\":\"UNSAFE\",\"version\":\"9.1.0\",\"num_blinding_factors\":null,\"timestamp\":1709450741807}\n" ] } ], @@ -223,55 +246,19 @@ "execution_count": 9, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "==== setting up ezkl ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Time setup: 6.3793909549713135 seconds\n", + "==== setting up ezkl ====\n", + "Time setup: 5.530666828155518 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", "witness result 1 : 49.3515625\n", - "==== Generating Proof ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "proof: {'instances': [[[3042937791208075219, 8157070662846698822, 3804781648660056856, 172406108020799675], [15295097400487804665, 12861486368330479023, 3350118022201779210, 343142782800691716], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [10870267098303494893, 1752989342377741058, 8860763459400202009, 2635465469930673149]]], 'proof': '01017184353e695aced6d13780734e00fadcb43c7ee8131caae1cac20b8184741c7a2e011a6cc9b8ad0a16b82b652215f1cbf4b9d23d39893fbd5ca3350aa6b925e9c8af2592dec9cb4ee60abc3aff54e4779b665686d08547e0614492575a9922d62f6df72af149659230e804f5e3943c51d670bd65c272766f198140035f25026e0807afbf2b18f11517427f908e534cf4567ac61996d1c1a8b83e790e659721f1a44f7e6bd5942228c14a6e72ea6e51ce6b540606139c5abc66039100941517f66d072251b99aed84dd8b9a43065bbf4b1ddfb00d07868cb68448d4d7ee9f16730cee66adbaa816108da226f713aa1a167f587bd88d14ddee2fcef8ccc7490b11856885436ddf8c77c28ba0c6a7258953c7de6012c40c7fc5540f66b462a5108d65c44b3772f4bf0427978be3cc2d6892779023c11c634a9a7773636224a70a0c02f2e8e46c933191c01e01608373ca7a6955744e22c9bda074affc6c3fc21f10dee9c347490c68b11bf2606a65e0b150a73f61a2b34a7e44f14a405516c700ad82a254376237e0f6d2507a81401051ed348d7dca95c8e5eda67a5992f4cc16298f9a0a45f396b5e8d378d06e0924fa6decb999f571651079b254de9b618d2c06954dd0aa599d848807ab9bcd731c8952d0e52adddd83b4d4200544b27c75281d9136ef36154323688aecc5c196130370af15a57ba5d01398976d708545d901ad0fa9f7cbc14b76a2ae2d2a4721ae1df24677d74045e144197cca5696bd7110a59d03de4534c2afb93c5faa18f57ed6c26121cac9b8e81a320a50cbed7f5b2d723d8c87ea3759a380ec98fc5edcd67829800bafa8de1767615e46548d4b742e2ea51ecbf90925df59fed4b5ece685dac116e76c31b66acae1880df4ce7c9b03e8c4db9a7afdad70788ee82735dc73a15371d2d574ae7304b6bccde4993e4f074e0ae88447a0afd6f89335175108d59ffb8c9db78554fbf880fb2f239b933a0d911844e494606f5828a4c285b8fd7d82ba9d2d610f55b4bae553e34e26eb5802da0116aed170ee78733fe63bb52459e32f103c729021c56750bc5261ac5570024c9b3cbb817536f80706a967e0dfba1fa29ae7e2a4e45defc969655829cbbd13b9c8a84bfb42284f770b5904a2f263dc737948f44ccdc0e38320cde97a7f1e08e6a7e15ae3385757eee4c7c4f241ff3f36c8b270901b5263403dcc2cc85e3908ae2673d32ee477f10d0ec9e20d896fd4eedeb773a84ad311ddb885e01421b31bc523d10fc40b8c7a8a46253456b81ab0f9de6b685f1fc2f037f5c120ee2fc522a30165a1d8fe9f676c8bebcc42719f75df152b174379cb2daeb89294c481241d6b6737af05e17ddf8813cbd207b67d28aad3291e6223ee3fd988610fb618a70bf2a13dddc908a6e56337f883c6934716d9b2b2ee0ad23184cb097c9d8be7800ac99e1a13ffcb716d86422b583209c17428517c48991278a57ae9e08093a7fe0af9b4d117dc84403e28e4806946d06151da3113c2e32259aa1ad38c93d459880a2d2a82246721c8861a78ba939535dd6e6d94b6987b26abb647f9f4f77bca942ace54f73f4dd2e3c643d881de2e9894936e7f2b30bf9f0e332558bffc4bf38723f0a29c93d3c5653b8033e95ee4f83915019b9a4851d338515a113ce1c4986b1732eb6b30b121daa89b216ee2c3a47c57aa4fceb0e787f238eea12455cd186c241add4edc1ce1436f847d457b14f46151fda5a5ccc67ddb508ce096300a845416ed166ec272304ae4665834295f8e49bdbee6d20766e3e20d00906b0aef9cce1c975f9bbfaa8e07111b335af1304efafa5696b8e6ba78b93cb4259c7b1b402c0998a0d2693b4d42ce31a200cc51b82a26d8c007ae3fbacdf2e35e87f20ec3c12df0fc43c3a12c1386b3334b6ca465ac0456e1e63ab32bdec7d010add9d1c29725de10946d0ea6bd0ae05fc2eb6ad2452a189d9d40711ad2aa4790682ff3922d05203479bc7912ef033595f100ab9b4456fd51fb14b4a64f4ec9071445a58a201220b3b7ba4a88fb37c282ea37d8174aa33e459197dbf6eff3b7333c8aa3869b0520f2a03fb21d1107b3558a6431de7251f335a2ca06cdfb755288c4c14b33771f7ff4fb340f005b35e0e63e6c1ea996113881d3861840d093efcd8b65aef6df1dfc27ceb06cf0af1ac530abf76b7d456e2ad3e88310e47b868af6bc7df474e628841f348b045f51dd97e1ca50942897e1e8077d2a0233ae0470e411ef2e43c22724362426903b55aec0e89215f2943b90091978d9cabed72b8ea9d805d6a1ce07e3f36f6a6082408e96f65418dd5f05848fb1d0609a01ae7dfd203a22ec99091ec645909fd88b04dcccdeb74510f2d0292a485b5f318ba4375c355689f31bac2a12277b2f7c8633fd0f7ffc3c10e45a1997f3564f76d37bd66731993cad39dd2690eb4f8bfe840037b186e1e68e1fae01cb5a8274dce52b703085d3d60d60f2247db96bea8116571a65963286e4db0506e397eb0aaaf7328242d72b14770ae1108d41fc638f51e73587d62621eba477b32e6bf1532a0e47249c9c799cc72eb2211dcab1cdb5ca010ea3a8b02a168129ffa045f0ac3d2f82bf6fecc94a39f82c2c6c14b8528996b224b0163a03b5eac4d532c21165138b33ac1f404d8d0646ec07dc911765610032bdcf3134ec24e0e7ec053245ac5f65fbc85cdd966a5305b72ad42512fa1daff8d0e6b4e8996773f1c57320d93c1beba2f2c8af5edd34fcd72422d2105106a454ac37936e333e0f557ceff4693b2471b834b8da2a14a2de3b1caf72dbff6072088232cd89d612f10bcfed7b3634265702e63b9594995ee53221ef3a1186864e622bf6db90f02da4f8e4390fd64a134ebcdca06041fa21f8d70e7655f2ad178e260923999c8aa67b878d004d77e2068a5282d67bc992cc8b7c30484c5642707ecc7dac4da535f227c9b96c1601d41e457a6f2e597a14fb853b19720f2c2153e550b8cbe93dc3561bcd6a3603106dd678314fd172391c77420906b0459f500ad19dbb6a04c1cf3501b712964c5352ea2ad441797d2297c29ba929a0c09d14c133360b3339c58d8232f077febccaf51fd994abf41850f940e6430ea3944f3ee96f50859077004cbf786bad054d8cb8239a846d2e68bf2c0ce656117e2fabf5b971259421d20b11b59bac603b0d6f42a32f52edbbe2a55f4e45fd0872aad22db2781c99d185d79e059370cc2daa3053bfd7ca6fddbef1989e3b4823746fc1b8e3e95f6020aba1de53585c25ae4f3620df6b2c1af0a11a4889e7382bd99a6b919d99aad6c5909cde085edec24a7749e057533457ae87dda36daa6f0e9fe5474be92adbd92218f78636404be86500392fccaa3bcde848eaa9d9a418152db014f1dd37122923c8b5cd31396c1e54c8fa5cc80c94c32a49bd8ec425f214e21c4e89b4d633dac00de1d6319d2be1799ff4476ce749046bf64e67f353752be67d34b5abeced6bf904b8fd7a470309ba43311c0f6a30ecf362538a7d8cd12eac12e2f17b4e80a42fd585225ecd8e6bb8b29f2a2649f2a4210d5277910c702ef57594ecae82d0a3b415e9067ed7e1c4f63da30adebb56f3c2e6060f79c19215f79629c84eee8bf310028800441959774f1ac04ea2189e69b6e767c4e098970ba3629799c8bea11d0c3fcced816b9339f763832bbcc6c0b797a7353a6d34ab1038765d568f5e9e859e9426657ec4427ad836f92aac3740b667a3710aee8e012b44e0015077745d9fe8cb05a2b4d900dc087551088d25b34662f9c6ee090bc4123209366c19cf11ee9716feefcf23da6c98d18042e7f7306eed8b5fbeb32d052fc401a8fe6e5def69202c3b1dc57102cd22c812239800f337ab5ce659c787570b3c2fb042e123d48d6c88c5d095182e8db24a194f1b21b9241236870d6b1f1d04f24432d41dacab5e75eb4dd35f02065b6d4e10b34a6328dd2449c55044c80f0857bd225a7774127b39d3d21ce591d1b597a6f006e895a70fc45ba21ed2e67a132939281c3c95228866efc9f44c7ae4c647d698d81aa979012a073c49c1b54e2f933c186c384829537b2334262d7ed67601c9413ffc9541d2f0d13b9e5aa0341135b858901360360e91ac4a5be81cb3be308f8ced53a705c47690938af426ea1ec65bc85b936ab376dd548f94df32bf3653d1070666a673589c689a4f55e6f40bd9a42410151ee857ae43f28cabfa69c0e9f7940d15a025034151c2c389fbfa185086226a17da42fa27b211739117bd326a6420352800530899ecb5a0f604452d5acbb6c449e9bbd68b025ed5ed3ae5750daf043bafd5d3437323ea9898e60a28c18d1873150e8c88d4ae49021f1452b781fbd8e467f13cf496bbbcf23de5761d2e148cf0bc8c35162ad5c7c6c41937513783c9e7daea81a9aac49cd4a7759012bbb72c328c7a71b19a174a15c88e7540954958512818175374e6b7be6dfaef228be505fd32c81c3afc847d25c58f3990116562a0e73a003429c338425c59d604c348269e9bf7d21921b223a88f4a3718767bbea35fc83ba383e67b369e56ea265a2c382daa2ad8eee667bb61e6697546e043dd402b442eb1d0e44913b20d99102573f7bc7aad8f2ac3eaae61938e3d3a9a1eb3cba6ca0fe3d26fec7f1ad01120e848225ed73a83d2d0d3a79ec8db939f9c2612b42eba547f5f9c4cb112b66c0e876e49f08caac538d8facb5a78632900921830db95b557cb54e3445971d34c2ec308d37e4cd9aff1496e628428cf751ab5341ead88453dbddfa7c91227735b0c02dcaa1620430a5ae0f93a0387f07e03917ecc4c7d651608311c8edeb5477f001f87c97a15f6dcbf948dab27828e71215cc86146f1bfb3008a761bfb6b8769216e79758e0f820bb6e6c397caabbb49249100b7d584c8f13ce489f5d666b5b2053b75c172045a41f735cde5523492a1bce85a2c32344847e361559b569ce972239ed0c3168f75efeaa06fed2e7646d2bd94f81273e67e9fb2a573b874f71a8b2985da63ed6613609b5907915e85023e6cd47c5ca9d05dfbc79208190e5ae367075357df70cdb46a1b0388476e3b8984df5467ed3cc67bf258465a8ba275a35203ebc9c4e77bfff97575cddb8788b784aaf7615f0e17ebac66f15c88c56ea6610afb8404efb555a85b9bac9f31faa67f03497e09d657ee42d73e5f6aaa50f0571bdb78fd5e64cde64033c9acb9a0ca797fee9efc8b958bca3acc8962a3c1790d0827db82e151fbc4f67e7309112dc43e1d6df52580740e03db56064d8f4613412e9adc6dfde5745573feb4450728b05ff1df64268c0c3bc86d3a5fcc0a329a0319d49a2bf7eaecd1dd6fd4d7b1c61ee8a2b18c10928e46eae3874bc67aec671728114f3fc509f9d3ac6ee98e718b31f3ae836dc5f4c3da3ba2439209d7f28d4d03f05633ef883c8417f8fb936217ef006da42dc482598154bd0f4a1072de6f3e1c3a13671e7a5efda5b6354951c8323bedd2334f58a97750370596f81856937a0b1b8f31cd79112572cfe0bf9f5eda5da02fc6d491bfaf45118c4074cc08e664', 'transcript_type': 'EVM'}\n", - "Time gen prf: 8.371242046356201 seconds\n" + "==== Generating Proof ====\n", + "proof: {'instances': [['c2b6968dfce66ece687a00d15dea969a5dab54b503c9ac9d0ad01308cedbb32e', 'dfb9f22d8e9142be6a825acd931b1e936e0f99940f77141cdc735127c1c44016', '0100000000000000000000000000000000000000000000000000000000000000', '5a31000000000000000000000000000000000000000000000000000000000000']], 'proof': '0x21906659bad4d0bd1f21c493dd16dc615fe51ce0ad39f73b32c680b4ff7dcf17099dfaa9ded6e9281e79ecf93612f100cc3ac175f9ad79a2e17dee5e523bb6a4097d2c8960e34e36a7b229113d4e0dbe7893fa1064063298e0af499186f0f165128e6901be7a964d76324498ebd51c5513243b0f6abeda7326f674d41c5999e12cd739ac2d52481d28d0bd89699f9ea2b23e6722173458ac285120f0a72ece012dadd5b316451ee9b4e8e5bf7719b870564594369b522df202f1c4900092e4252ee16339d9058db1a5b8b3ae344d935ec6458267cc736fe4163442c4595677d51eb402d0e767e2c2a32ed5bb4edd1ee1ac306f499783c6010ee50fa0d86353191287b573d579683eb411ff75ed14a43099ae684924bb08b7f1df08ec556bdafc23f397f813e6b2d2cc85ea4f1cd78178ddb9376784f254ce26922fa421b5a55203126348b7816617e6d1015c0d05e5a9a902108ec2c14d5c6ee4ccaab902f6d306aa50863ef79d01783498bcb9e8b1603b2de1d126d6ad42d726fc07913775152005a7b37e3376c6532b5301e99c133044506ef27f5fb40c283d5d14bd9494122a95817efc251bf01144380a1de3b71e62fed45c93ea6c3c06424827861b25f61f1b471c4df0277e2cb0d4b003744891b5b83882eba764ffc4d3e9752c823e012b4748427b339dea293847385e189756722f957099585044808ae3b15a0bba552a83a9b3a0768a17d6e8d430294edc490487e998847f095fc2625716557c966f22fc80306b36dd4b3018f102f4d70e6d9bb6bec39cada87c9e9538cfbeefe7080ede027763754ff1c18a8b182d650de0f862704a410544f74cfc10a4d298526f1daca5a5c4f8a09a40e0474bc248346a19f28bc508b84c3ec58ce5f7076cc04c0ac21bde38b34eee8138f734ab05edf0fbb83501a7f182baa0978134f9584a8922c537808eaba567c1894ede4351fdac9ce41fccb5a443d7674ca2c867bfdd4a2a18f62d28660b14454bf512404f3838b0c44828a13eb4b689bab01a9c9a585706f357c88856c7bfd19aed5bca4e410bf343f7664e4d5a3a33db37d28c95a0391e4f0c6b3b2bc356875ec9280b0f0893c089a551caac558ad0b54cafa696b2e3002b1e6e51ac929b56a1b314dcdc488ff87cd3c4afba8e5046b557985daa1f40170cc523f9e971adf103fa5118e230f4f730317ec5e17abd2c2b2dba89721f8e2066f36cc7ac26a370d14187d36a2c9dbc3a66e8124f9d65c25991ce31ef6f3422cc26ffb779e29fd21b0e7eada225dfaedb617fa28f0aafabe72601a8ef2578172f75ca1fda704584c423eff71c46a753bfe1c4952a8d9920633197cc636a282d26490496b8bae39101950d6a9350dbb45110e14278b638b4aac2511777c0140e5a6c61307ae055cfaf8f5fa40903e47ff7469f97296bf72ffc6b9d7bfef85c0ff9ed0643ed030fa6b579aa37ea7697bfa3f946949febaf052245c7c2b55f300c09856379c3aebdc56de9e29b49bd780471e9c68144181dd3db2008267aa2fb1bc17309373408ab69d06bad349b3d06e2e4f418f92882afb58593a33f825a5604a9fae540513bc69654f3ef2fee34b69b317291a31585e5f129719b12912d0f24a2ffda5c7951d1ea08cc476e8164f50a9109407ec33841fb4fa16ecbd6d87a16e605b837c185ecf15581674bdc07a5bfdc06c4c59195e6e5486396151ffc22292c990d84b1bb170d920326a1a9da43c426aefbe3bc9315f1881ab9417a3b7f1f537eca74f1e85ee380945493f62be84a370d95bd08f30e5bf5e78c05df8ca709267b8dc3767fbc24c0d9f11d555702a6f8d2bffd932acc30a04c88a50316bf01643a065525fb4438aed2e481a3e14c72615951f341e88700a417981d335ba406be670a56275962ee5c0a7fcdaf498af4c28ec11f45621822f14d6d69f69374250a2e59c53ed6a0c9483da75d274a8c8a58e87000334bea5b3843e3ef4907602ca2c23394358a05e1c379a8f283b7a38e2127b04a29ea14c48fd7d2d08c060316da71c15b62a2861af9e5b74c2dee181cfcf5d68a5c5d3fba20b01235d64b8c07950317f26b80ed2529257ce978e7b615e31b231da4f141844036130bd159e3101cadd9838f2c42983c184e1121e0d70f531bc205205c30370be3383ae4e3a122438069fe593bc53b6dd716ce4c98d67070420ef70d2e9618c277a4139b67a80248d7f082127119c329ce238f7889cd60194f8b04fdb5cc045cf80b7f2b7d940656160fb25bb5ddc49b88c1e3092309608709bd6acdde58ffef03fd10e35784082eb4cba46f57a59479b59d201d140b79f93a08e1bb3a9110ba69a8ffc2ea7911a7e70d1ced49ab0e2224b3f8a756afc49d19497da838b1791a6c919f580d8304cc2012713d0727c24c0bc87ca6a9760a37a8f0eae4e2ab14eaf0f8348ada0914d41e9279cb0388845e9912aef00c04eb0efc9460774e6b53430307597a546f24004c23f054a20886e79db5dfb327d2928900b871b96bf2e6bd04bb813535a122415a10b7907c8c13e3029e4ea07e2a8e04fd0124b0b8f6e04dbc12880330d315bd2ad4904ee1a36660f7781eaa76257639e4ea92413529f4cae16f498401be205718859c0dd70ba26451c365db9c1742922e02e643090fb02e0e96ae4eab6010ed3b9c8133bcda26e136ec356f70dcc62ae3a40e3c0d0f8e4456ee7e1caecf07ca4bb561bd5f144e536924eff60ab01d7fc5f0a0091f29eeeacc026761abfa123bf736d473b815675e78ed6c0fd874ae914cc4981576a52bdf52886ffc4ddd285e00cad0112f5634ffa06cb491c8a33c23a7f896c49d893fa9f4e93f26f3711c800da7e6b447997d1b84038e82de3ea4b6da1fa3cdd7c80c76bc53b7b91b4f03c1d15148947d3642d4048cc3d22d2a8ca5c29d538bfbddf51c25a15e89a6a925a4f28c6431030532b5567ac55643ceeaf8a17b9fb15c69671ddfb6c81a4e2a151a5c58c5e4d00708df6a8ec827d27aa905ff6a804896bdc943b705db953dc92401ca1ee52b955b49ce03e9b2e1a2168448f389dd7dc75648b6512da949ab9500000000000000000000000000000000000000000000000000000000000000002f12c2d64396dd21fc0ef454398eefc3e2a0a50513b2cb7593d2e139fe0fac19000000000000000000000000000000000000000000000000000000000000000020922ac36b83363487b4f475944aa85af3b18b5d68e212ec22f5830d397d1a2829d44ad255026af08f6987966e95c67cdd9bc99db9a46fbfa39b416455497286000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ca51212b4833edcc657301cb894d56fe7ae96ecc980d5dc72000585dfb7383f1b19eca7b15edeb0dca00c8fdfad8e243fed1766613b39b2e56575f783b37c79000000000000000000000000000000000000000000000000000000000000000023fffc963ea151cb965c64d208e39d142b11002c1460d85e7f3023443c8064e415aed6eb2d57a95b3ad3e6a3ce0d15e7043814f6174cb8610140c0c4407142b0000000000000000000000000000000000000000000000000000000000000000005716602ace15a281d2af4b3d78a56cc40ffad3331db9537b138d0e86f4394300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037001caa6cec335ba59f9ab24d6802e6f2ea8767cdd3beeb0a4d36f7ffa09de2956383bdbb081412e20cb58bbb8ba806b6e197e1ae5145c2376f8e0ab25c277147ff0b1a8fbf49ed9c3c9acee4c0342587a31e36e8f0520a6d83d6fd09a5c3b091695f7e16a0d452c3c86df150dbe4f64a321dd57f8d3b0dbf757c26fd85d341bd134d4f92343322893db9a9db3d5915c06f306c0eddf1c104969564f942dfa1034147569543db232706100b931e3e96fa96fae61c73e535962bdf14346aaa21e027e557d31fa5bf9db9b637160e4db9eae74f4ec40313f70cb2d6f0d960bff0085b167be602277e1fdbbe1b6bb8cd2c67effb063b6807deadae7321d2c926c1f3465f80d3a99b04bbffefae1f8fc58898c5791e68bf621fbbbe5429c9bebaa018b3b65b603eb9b49d54c46e687fc65cd98ec47ab57426e1d83c247298ff99615ac7cb7bf5f72d87603bd2200ae991173255cf6d224bb04df6c6d5628b8f8cb28d60cd451de3b03a282c274b1227e2bc2e1c76c17615117f4487661744fc3f41b6ed825b84c20c46918a57188c995f93f767c4c6c3a20827c4915e4baec191c055a8bfb5577cb7fb2e93418300d91811143c1d701834ec1796a87f3ffaeea7e20b14acfde1d241134a9d7981858287b6ef3901742d1ba6042794fefa427073519e24222d28ed130589c243e495446f995a7dcbcfa2e097c9bb36d124b09b6762715d33856a2a4ef5b498f225550b5917778969f108835895bab695436c78ce80490d0d5a0df46f2b47c2f7ef5ec5889395764f6224997072d3e96ba918e506d29813b3cd9ceb52b43369bfb7162818a1854518791c8ae617db013936a3fdfa72d355a49db749b958bb11545ae033000762731f5e6c294c851bcabedf02d881000e65acdf72d3616f939eb47f050432ccb81dc589a586ddcdf4b3a0d1d6618680832e486fce3d582c332e7ec7a00e1d2ed1f481c727ab6469e440d0366e4bc8d21e1e82a0e650c76d6fc96a3134c80a196098572d90ce1fd6cecedf4fce1c240022836eb8b6d830c75ddd14950a7fa57d81836d52e818ab718b1bcf23e82c35b11ef3e17a7913ec7b7d227e8d9d02a461947b85cdeac20575164924e69b425ad2448fbc05e82bf88fdc43367b474b777d4e67e99a3592c4b4da974f2c9c7658a19de9b0d3552d105bee1e4989d65c5d7680a9e2ea0c2fea194778ba7e1eff6212a0e21f4624cf9193e85415e10a4087a9e80ade37c1d5c4db1213291030192d0164906d11cff588e2978717b35b915df6bcaa6266f07d3489fb31daabff6f0912d7c846b89f8f032812a1b35034ecaf762a2a0d210418460bed0e753d50276a720103b1e125b1ff126707af0900944838946aef4d9dac4589af6597d23767f1429e8dd467929bd69a8e19845387eb504586dd3f00dbeaf67b09c5c528528effb2757351d6b685144c7145353aa19bff54cd78622224352b614085e4e268129e80eb0ded1c31ef95efc97811a51fcc86547138fefbfe0b753315f0489e7ff815210c9f7c5cb16fcd702e1b4ce9c3ea2a75d6b87d62045674b61d28adf3c2bbe19', 'transcript_type': 'EVM'}\n", + "Time gen prf: 5.668032169342041 seconds\n" ] } ], @@ -294,7 +281,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Verifier gets result: 49.3515625\n" + "Verifier gets result: [49.3515625]\n" ] } ], diff --git a/examples/mean/mean.ipynb b/examples/mean/mean.ipynb index 87fad9b..d706104 100644 --- a/examples/mean/mean.ipynb +++ b/examples/mean/mean.ipynb @@ -9,7 +9,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: ezkl==7.0.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (7.0.0)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (9.1.0)\n", "Requirement already satisfied: torch in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", "Requirement already satisfied: requests in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", "Requirement already satisfied: scipy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", @@ -200,13 +200,30 @@ "execution_count": 8, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\n", + " <------------- Numerical Fidelity Report (input_scale: 5, param_scale: 5, scale_input_multiplier: 10) ------------->\n", + "\n", + "+--------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| mean_error | median_error | max_error | min_error | mean_abs_error | median_abs_error | max_abs_error | min_abs_error | mean_squared_error | mean_percent_error | mean_abs_percent_error |\n", + "+--------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| 0.0044994354 | 0.008998871 | 0.008998871 | 0 | 0.0044994354 | 0.008998871 | 0.008998871 | 0 | 0.00004048984 | 0.00010678871 | 0.00010678871 |\n", + "+--------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "\n", + "\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "==== Generate & Calibrate Setting ====\n", "scale: [5]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":5,\"param_scale\":5,\"scale_rebase_multiplier\":10,\"lookup_range\":[-1344,0],\"logrows\":12,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":3936,\"total_assignments\":110,\"total_const_size\":4,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,5],\"model_input_scales\":[5],\"module_sizes\":{\"kzg\":[],\"poseidon\":[3936,[1]],\"elgamal\":[0,[0]]},\"required_lookups\":[\"Abs\",{\"GreaterThan\":{\"a\":0.0}}],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" + "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":5,\"param_scale\":5,\"scale_rebase_multiplier\":10,\"lookup_range\":[-1344,0],\"logrows\":12,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\",\"div_rebasing\":false,\"rebase_frac_zero_constants\":false,\"check_mode\":\"UNSAFE\"},\"num_rows\":3936,\"total_assignments\":111,\"total_const_size\":4,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,5],\"model_input_scales\":[5],\"module_sizes\":{\"kzg\":[],\"poseidon\":[3936,[1]]},\"required_lookups\":[{\"GreaterThan\":{\"a\":0.0}},\"Abs\"],\"required_range_checks\":[],\"check_mode\":\"UNSAFE\",\"version\":\"9.1.0\",\"num_blinding_factors\":null,\"timestamp\":1709450364929}\n" ] } ], @@ -236,43 +253,19 @@ "execution_count": 9, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "==== setting up ezkl ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n", - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Time setup: 0.5652117729187012 seconds\n", + "==== setting up ezkl ====\n", + "Time setup: 0.5032918453216553 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", "witness result 1 : 42.125\n", "==== Generating Proof ====\n", - "proof: {'instances': [[[13487293430113784910, 12778393823498462323, 6887806571578554205, 1244238496825937973], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [1786891257776170021, 2456895193576464786, 15851013958699291921, 426370788491761118]]], 'proof': '15017dd41114ad9893179907ce2e6baa6172730e55269c5f60beac8e5658049628764b458d3601b6d7a13a0618f7fca70106490998c51688de825b4cc94b77412d6bf82e1c8dc6789ba697429ebfcd70eec978b748afc1e1cdfd2fefbdc7d5652c3fc562bab5a25107524d933deb334f9f89d52a7af4e0dbdd0be4027f6056751ddca7e65f6fe12c4c0bb732385c09fdf73a777206235da42da1b8067051d62e08f5d577d4c2f1ba2269cca41538a5c10586b37ac601698d7044614421c0f21507afaff9b833985e85f39da6f6f8e0b8834e25554ab964518f18cdb529f5f4990b62f0d7ecf3b6131999083aa5993ed2e5716f109471818ad7b536c2e2a7ebed2f8e7c99953793fac4f8c236cdd54eaa6162bfb4610a33ee9be75b8269f9723a1f1cf2d6bb1e66ce587851b36b261ea104b1e634f87a611a33261e334ae18d5c289ec0282f86bca597f321a5b6756a00a47d53f12b005f2c10b6ff3728ca80d10c02b75b8f53d1171df5c4ce62c24c4f2b987e72bfb4f209c4d174d08a4075171bf56c27ec9498b4846ed36479606f9741ab7aafb99e57826de6e8e66f403e3d26dfab8b8906a09bc1bb71d85b09b47f77b92fcc2ebb22ffc8d0239cbc1967312501ea627367bfc141a12aaf343a788dc7804020b0d6b718bb16cfb812d6101027ab1a9369550b50431f434fce7224bf3c92dd8de68bf25ec0365c76174a5e140d729e77c54b82e491f5a7d18d53f095f38577650111801897bd5c6789a614571f5a48d6a9d3f9208df23438e0cc8cbf4b40d8eff5fac8d497953c341fc6f9e9161377416d8cbb451075147c682ef3ceb7dd50cb874f4d3cecd973e4434b60d512106651494e9a0f64c81b849c2dba84b44cd19fb74299d861c8ff68c2fbbcd5067a76319d9c91e9cbfc89409c37b04a851a5c5eebd3563cd9a0e168a0227e6f20c899f5d46a69e47ee0a8b6f06bfd9dc411ab1030a9bb2872c67ed10d9cfdee161377416d8cbb451075147c682ef3ceb7dd50cb874f4d3cecd973e4434b60d512106651494e9a0f64c81b849c2dba84b44cd19fb74299d861c8ff68c2fbbcd52d0564bc3f875b2e3b2b0e738f56212f7adba7b3870f32c27a083d08b449b9372b6a03a885603559343df78a5c40f3d82edc90082b6055ba2f420a8137d129aa252bbcffa8e1bccc04da82479cb1cdf3443ea6537d1a4084641fba5f486b886924cd9f53a80dc7a5ae9c7124ce45946a6441f10e612e6b4f90f4a75cf1bb075604666608c18214da7883e4625c10cfcb76427ab231e57269ef853a806537fbc80f9038a00b02985e07809a7d661a016fc8e04bc191f6ea7b6031f0610cadceef26b723b05c3633bb944f94625a87cca07ced9822ae0536872d80f8f746cbf11814b4e1a04f12ece1b457910e0e1ca3b2ad1760ff31f5f3bde27958349ffc538513806cf378fc214ea105c9ff6f069834b013ea1242344de41844a79916cb6f3f09d00fb47f525487ccf2d2bae11bebccff660333a332929baeb9bc2f3ccee3000842529c1935e942a8c2172fdac86aa7cfd4867ebd1d71c476c8f2f37e694b052da80723207d1333f04d2c785c5d2ac54b1ccc150f3795a08dbcf4ae762bddc71fa07e3e20ed345e15fc7d137513dbbc3e940e62d793ea611d2892c96b2e41ba0cff8fd5b65f2cd2778cfb711bfbee97f403c33c8b5deaeb19e196438c8bb69b26457d894353722f2693c846d910135be23ad7ee1d6957893af15003a1489d542d174d1207476943ad10f774af1565cd3a0c92ef1bf1630b296c49a3297ce895003cdc628d07d999f2bdc4861f8f9b1c0ffc317aa8589b98084809daa628919b2246e32429295b03caa151d716e692358f7d8d9f34711577379f759d126cb2ce151e32321e6671d70eae5250f5ecd0a503c3b39bf7443fa9a8b14b4d4ceb96450817749a2c580fd027feaf3247311ae3ebb4d397d9fd212a5fb13cbba42d2f791a5ce49fdbc86b41dcadd28050946f2d49f555a1c21760e1146192a602eea89c19b08abbb320a2f36b65455fa5b31944574c36a2a5b3ea1a5ecd8b18afe122f42c00bd78ec36656ea7f9d68dff45cc825e67c0fd5425d971f203aab65c0138f200379bcbba9297055c7bf7d152e1ad187cc333dca2297e5224b910da518ec2732d60023f15d6c681801fe95cf03832e40826e6bc44fc01c2d394fac6fbb762420f992fa668df67cbcf50a4c0fe22ed0e90068740660f23e57cdd1ddec1cc23d41238ff3c1a0e826d63d3af303afe45bed135f1149377d49ae4c28ac111e7ecbe2dbde8a629d64f40c919a2edafca2446c5bccf32c5dca3f74be464e524ed37e30a9aa618b5c32996a433a2248f2eabc7713702f9a3f5a2165b15c5599a851ae6175103e7a1fc56439c600571b80baa1bae90014abf5009d9dc7ef59c901a18180008811cd8d43899e1299aa5901b0d76281a4e525796b2156b825d630c8996581e569116a7bd77a6f320faf04341cc775c018149ab82c59ad4d88afad4d2142b1249a0e57e92f520b41b734a183e56196d0f5bc8e26d52ec5dba69967d95df5023726f80e8dc4f3892e7f00a5fe86d226055598d3e28f516aea0a2624a44efdf277709476fb487160d06d67d217ce3b48f233a02d98b418899743b5bf5e9dadb04eb04a91dc944673b43ce9df5020856d6bfe491c2d402aa900653bf5348fd2801aebdefaa1ca73b7c9b2da1d4846f6c196b05c708eb9fd484d765fce35deb1b20cfaefe1ab298e562f6e6be134fa69d528f8974d95f96b2814a78a216dd40e604309e02f5ebc86d55b53b430fefc802b90515afd4abb402f4fdfc5a1790b7b520828999e3f89bdb1de0d714a5c713c8f913968d90111aac71f7fd3e790b41dd234c3574e689a489206f5e72238b543658c687c450d313b222bafa21f0d9ca3e1e40105cfdf9125da87bba52353d97eda87aeef5441b143a8711b46f51e298c51c5f42e16a799f964bb349a8e4c39d9980a8d35c78c35de913835127467b8e971b356f05ae1bc2fd9b56c42eaa65b9e35648744b9fd6ff552e47ac6619dc6bdd10b2c1d8e0101af99a1295414f9a6ef393fb9fcfa3ff5a14b5c7f6ef058dc3c92caa33abb24dbdb521a8464179f8d7379fb536c89bdcf47b8ad39277ec4801ab1abc7f984fdf831574051f5a0e0068518b635703c80c1b7cd0b5f0d7a832763d1c663ca26e827899c85707b0fc014f6bf9a13e195710e3ae573d54421d9d24bb13fe11d072af278feff93e05858008f12e92aa2f22a88ce2eca4a151d262db460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017b33d0ce1dcfedc872e96af54c1acd11ffb2af897e365e9780957728e80be500000000000000000000000000000000000000000000000000000000000000000123dde1352e19bac0c974f3ffd03d4cda635f801266872231c84d1347b32eba500420b3df57b3325704cf78617d045de9dfec34d73c82618ad0bfd14b9da8bc7303c2d7e63d21921dc9d8425b9137600bcac2f304db94829c7c0bd174b179c711889349fcaa55313ea360078336d0611c239d918a1713bca3072eaa2b8f99b1a26ccac531c5ee27d4fa24e20582375171e12ea59bce94d0950d1c028610ecb390be986464f858f9f4b00b844f4cea0319c27bb28dfa8ff551599c7ad400ce6fe0cfa069662b5cd7b0674ed7d4d83388932f7202568dae0b02d469e86ac46b609304c3718e4304bec5860369035355887d541f51bdcab0a4ebc0b4ea2cf4045e8214c3ead4f8b5b3411723a73dd973ad8cf1fbb031b1ad7f6a7f234b1bcced3d02484431ec689889f391dc2d5bbd1867bd3a20cd4cb8350da31ae9b7364d94a880add4635daa524f63ffbddad4f50665e29bb9c4a98a707a419afd64ed595de2e2928f8b484d24370f803f77ab7a7a3e10aaa2922cb3dc825651170d6f74a0a640210793a0c0880b75aaafaf1a9b709f1196deff8031ec11c20bb8be1021013262a1a8c8706b70d09df1b62a1bd87edfb73a5935e4e3da412658a54aac842d08713a004bf568375b4a0ca8aced457c7eda0ec0b5ac270d2421d096052afd8ce311717f665d32b1bdc6e2bf16cdd254ab172188fcccc2679888456223c47f7ee4013c38d3be1b95491177b58e089c07115037ae7cf3c9ff0ea131ace2b3c3365d40c25dad1eb8a8237457dd74596186e8749d7e711bc6d2c8dd342b0a0139d14812de97356ebefdcf6812b43698d584df8522146329b617f9bd66534a6b0dc84f70158bbf9cb761ff63a8e4214fd2dde6f7722a7b65e6591f31a907f7e76a65b62150383f755bed114a95d4f12ad437db78756970a9a92996b6f4fd4b78c03a4431d3ae3e60fdf4a81d70e00999c2f3be0ba58ea893314cd1fb29036c3d349361b24fcbb721375eb37967607295fd672ef910cbb810c43316b72a8c5bd06826bfa04a3a6ca892e360bf9cc8f2a436915563ea012509cfba9f47aeaf9c75b4349922542814ba635a9a4329417169a3d0343f1f504bfa382ade0710362bb0c0d68b706fc641cbcefb073ce872f589c420b1e903ed30c684ba55cba7668f8ffbac88025838c3e4bd4e49a65f54c61f7cf70a1e0673f3307087d088c6e5cb6e20b2761057e20d762b833856ceccaa40f8a3e5d5d8cdc8141f130f7cb9497c59bacd5c8215894addcd6db2c5f512ad10ad941a2353c9290c6e73f02da12c4401bfe55f41376280a684017697b5a23dd50d8c76704dd365e079eb2fa3636550012ac5dc501fd8a8117a0e2981338d72023d0bfcb3bc1f6c7fa10c7ff4cd7210867f2dcb50a22ceca36698afd72bd2d302111a561e937cac807ff1d67746bb9b10aef4b8b2019d785674aa7ceba7cf004b50eb6804b43162bebcdcb4bbd9f5ea52a58b82d2616fc51de3d306061c3c80aec47da33f6a5abe73e09c65060ab7eef7d2a93031bf4707998a67993ef74f8488c62035a50018928bfe4c15165dfd925d266be952d883f101b3151ce47ea1fb6e776c3c5d2b0ab088958f0f5068d17f2388445502bbba34e9d6190be4a9ae283fdea25d6c00929a5e98450f8709c1681489ccdd22303739a3516614bb6c82d201006cc8328e0489d5c29396e17483125b08631c02019d785674aa7ceba7cf004b50eb6804b43162bebcdcb4bbd9f5ea52a58b82d04e02ec5c2d5cc828f5eeae6faf6360c86e0127dec62bf141317a19556dbdad00840353dfa2995e706e7aa22d809bf3faf1047db96b0169ee87f2511f352176606ee0fca3cc03cfa06383595a73eacdc2edf9f2665516911becd5d591386be53265eccfff9659b3c0ca0b438f0d58d3467c6ec5093de5f66b2b3b892d1ae9d0c0da2016269a66f50a9b0f539d0f05392b2a91aa1dc68891f9e78581dbed91e900fbbb6d60ab63a6a2107f62c012514e45b5b24db20d235191abc6c25632f442f238b04485c625f1ef53cb05f300a2524697e5a6a7359e2ba1b638689c2ca670e', 'transcript_type': 'EVM'}\n", - "Time gen prf: 0.7567589282989502 seconds\n" + "proof: {'instances': [['cde4916bd205742cffb14e51076823185ef1d3df4377d71dddd8ab4fd1be1002', '0100000000000000000000000000000000000000000000000000000000000000', '4405000000000000000000000000000000000000000000000000000000000000']], 'proof': '0x2c94236c6b78b974218280e6bdc3bc6db9b5d8b8d83a6e5892e469940861cd0300cb738f042c2a4cc44ffd1dd5af23e628473fc0555b1312942de1720c02f8f22b3dc30224e08e599a2d30235caff819a069e32f902adb97fc578a8bd69e6e2d0fb30cf56c55d6ac290bcf99adf571be0c02320cc576bcaff57ae028251c7a342de13cc02efcc28f52100d8566fb5f986d34df8150abe26ee7d2c175a461833d2d97092c6ef6426ed3f4ec4a3470d0717e9af7f91ac44eda87ff6987ca939f5e25d12d2b7f8ef08a375f714e90d800eae30b656fad73df23869ef8d271e974bd18ef6b947dab0b760a6eec58665f8997b89d870d9ac5e14c62e7f89f8fcac22e11c229fa0212f9561fff93d18cbb1a0c98ae31b39334043ef4fcaa56360a4eab2f3d3214d5196058a37646a7ac880b1a86f7c678319906e939c7d20449cb475a25c7f5d1b2df7618a86d1b7e22228a9e9ba4bb974032be61c46641cb1e1455d23009cc49fdb9b7b2fa5e10c8efb9441756c1fa1b327264c2da1e9f16d1e8c25310e1d08c14ec354c4cdecdd0c6eebb094e220a9a6693fc602c498ce544249158040fcafea869728fc5efc3707272039d4ca09eaf545ed98f322a77befc72e82c22bb1fd90c3a3caa9b62661c753520cd5da22f502ce576552034d758a301c1411a68577a68947e6b3f9209f381d36caefda1f9301bc68e9e2174e894afd11d8722e3431ea5461472a104c66521fe0123d0b31ff88ee1c581ac3c0f000701637f10cec3ff92ddd1b7059e2ae5c064720e1e1021d1682be6cdcbe753007361f062161377416d8cbb451075147c682ef3ceb7dd50cb874f4d3cecd973e4434b60d512106651494e9a0f64c81b849c2dba84b44cd19fb74299d861c8ff68c2fbbcd52d0564bc3f875b2e3b2b0e738f56212f7adba7b3870f32c27a083d08b449b9372b6a03a885603559343df78a5c40f3d82edc90082b6055ba2f420a8137d129aa161377416d8cbb451075147c682ef3ceb7dd50cb874f4d3cecd973e4434b60d512106651494e9a0f64c81b849c2dba84b44cd19fb74299d861c8ff68c2fbbcd5067a76319d9c91e9cbfc89409c37b04a851a5c5eebd3563cd9a0e168a0227e6f20c899f5d46a69e47ee0a8b6f06bfd9dc411ab1030a9bb2872c67ed10d9cfdee293ea9c8dcd3c3486e8003179e5685de13f7766095bcc11bce134295b26b67b92c1f989fc2137f36df86b440f9602b061b3674d7e17301520e5a72f59d6ab5c10c60a81aac36e145d7166d7f4590fa2e0b3a0d81a630c50c35e8e72aca04526f2c8c5cf62bc561b8d555958f4ef3febf64a9439e52c1dda4b15156d1ef2c03e20f313048d1b0372dd4f9d9a623de5bcdaee9be66368bb6427e3f1d41d3dfb5bc09d2be17c939c6c823338b40f9402daf06884eaeca96b1db38a171f3824c8b212f3bc773d142981c0f42206bc9f74a93ca8522de775a91c604481f467b77150a1c20a6e0dc9dadc5ad8f092a10f938f73079d4816da473242497f379e26e70b80503d7aa99cec3117ba11eeb19e31215af25165d6e8861497bd62687d00b72511e771e1169bc39873d378c21d19d31176c7994566440e60174556c5da96247f90876c1f97cc7ebf85b08fa933ae447dd09ea43c12afbfe171f39a85798f9f8072a854802d557627695e17a30bf6d5a64ec130f85f0c4f3b1695d0f757b98936a0069309daa08e271067017e54481ccbc0b98b872e72bd8a3dfef4b7bda33425c0d966befdf53145c526405c6e3d8d2ed3a8f5d3afd2e00867af01d2247cb36f918c85f42cced98b7d3f56fdd79d68c0c143f4b03fc6989604c7dd16c2470bce31992ad806477a61997d6571a4f3716d0da035f1a7c4d7201f09b7e2843e2e6df1b74ccef6ceaa27394cf88cd5cfc8529fd5739620d7f4c4112844080a286a947122538e92e0dbedf53b8a193552ab95c88d315e9e34c110e154fec1b03367f600bcd3d0602717ab4f73b4f822dfbe8a0a2506438fdaf75474057055f774c004d04101bac052a02add0e4a5c0381b841985721ee568d0031d190b8c0080115bd62f2e7d2ef5ce24d0a906075dbda4f5c58c9fdd9e295cdfa612637e6d89cfb6632208799dca9f13db2c9b469b34bcc76492e4df7572eef79126d003cffe8cea1806746eb0d6a96452be3cc3f5b25087a75a26c3ca96c23d72eb285bb908c69f1c16228dc5b7c196bda345d79811e9705b515f564eb9ddbfcd44ab4235febbbccf01fcf7f6176d271bd8a535506cd1dae4c7c51f7fee6294c5236888068d1c97c92429d5ab79dc0a8b7f07474d50623ede06fe25bae740c32e91f6422eef96920c01b7c21b6432158312ebd2f0cea0f6b1e7698f3e7015619777b22f264aab5d8c288d4f086748722495faa60309cb3059ff1159f59ee9c33d711060c001e5d63b22cf50d1d71f93b550a4d8708da81b1b8cd111da40c88a68cfad4bc39b44c0a911c192c3f4d996488389578c67ede96d881655bdb1297be3a912cb5ab04304612e4356dcb2d467f3b027833106fd99f479a3b7a54bc9416b9962a597bf7e76f527fea37e51fae9b3281459ddf0028e6c1e2f5a8880330196051dd76e18a209e91c418ad17b891d6a52975e1ef27043bc779e72093b301ed5bc6b9fe248632763094c33f01064f1d3f49aae5197aa04aa905e4a10f0ef1ff483e7a1181a457a691cb163d70891b05df3d660ebf91920b4e17f4f02e0fc6404f15f688cdb59823a2f94aadefc05d5aab045c4a10964ef366f739480a42ad7feb50857f4500dd3170fcd3fbe48301d493079c2f3bb889498a276df3717703034dc6e1a45853345510bb38e434cc3a6b997198e1ff3ebaef011c8f07a0c752ec73917353d4b62b42f2a06d699693982670ebfaf332c5ca60cbf2164420d3a23220fef0c83adc1855d16518e72c7e5b46da0e723ab7b6c5ac14af77e8c3fc26a8f7c417c4c1965ec23177a7a3a852a9876c7e7352814f48ef12d84c5047933f9da8088b4b6d10f985f252f5838e898b737275661809c3f17693eb4008eb7d9036b19b652212240441328d4305c3ed0fd2a2f6e327dc7d0b2175929bff8bacf41452a3cd8de3a84644e276d297eb276c8cedf1231784dac26688d75d2ef86a3ceb8514f49c87ccc2c4e11319c8c8134c9dc88027a09027a8951215eea3c9278d2fd30a65c6f57665fdd06e1256a16019766463b990f8f2fae9ac54c84efd500d402e6d1f341179e4576000000000000000000000000000000000000000000000000000000000000000029832908cb3008c37214aca6f251a9c262e76358a4b89c8e5d100252d861ba8b2b6848a0c2b4cc3095b17d78b4e75b99b368d6c5a89115bf3f6c511f0c9ead84064832da44f2f88cf8470f25174c50bee14ece3c329b8d1e51e20aab2490bcd12adebe87f2769940e52049e2e6f63473b6ee92581d4668a270e484f100e562e400000000000000000000000000000000000000000000000000000000000000000c7b982902bb61895e57d036c352445201b1f810749342ed277b4362694b70e000000000000000000000000000000000000000000000000000000000000000001962a3a1950658f5c98bb46fc8a57b55efb4e03e78424ab4c9056c2aa34bdc7e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000167a9a10e719a7fe4c8dda018c1c43d73c64fae7aa3eeb29f9cd79b6f4a1bff4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b0d0bcfd57f78cad1f40c7fccdcf5e6c71724bd6d3669b2093bb67c3a11817600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001bf6c4e4551a96b495474d36624e521178fc84ef8e2d617e7390589a0bccec22051ae1e631755769b29ecf3bc30e4a9d60d405e6e5a2c07c1feff2569d31ad29000000000000000000000000000000000000000000000000000000000000000011c3523acbf67363b21a221d0f7cb26d66b63c7bf06017a2ccc47bda1317a06b000000000000000000000000000000000000000000000000000000000000000014a1fa5030dce651180019cea93aa66a86caa8f553adb0b1a4cb4365519210822bb4e7c51bfbeb193a1bc73464a880f0bc1eac54513bb77404f8a098c7d92f932a5dffc78ac4bd919d1b78d74edeed4af7f2b197a39a810b36fef7f4fc9c8b9f1223c390dcecc0bb9378436e2ed712ed59cf260280a78a5ff76957091a47425821138841065eda0152b92b99bc0b1d397f0564b3686da224f8f775e369b7e9c60897b9acaf2ff63467149ce814e4213be0a7c599c7f4f8a7aa4df096fb695b741657549a4183070552ba4e8acd0a4a76a0686ca258bafc9544e039a9fbf41add23d37f69eabc12c5f40f60bc63fa2bad2db44c8639028648a3ca4b8b3a4f21a324011b410939d94f9d7a99811eb7ead4698d7b0fe6b1832dcff74a9ba449588e0af380a808791505ef66e3db0e9665f987c70e96a0daa3bebfd9d23cb8cd44102ddec57487ca6ab9505d794010159368681b40366ca327fe279b67b787858fd31fa407aa4854254b316aba7b5892ac7791bc16f46b38e2e0a3b9c2a506340e251f62393850503ffa777b92e41fea1e7cbd52a59d5d8769d343df61791e19cd3f0c553b361cc56ed77044b082d8a8d03f3acbc6fc0cefc3f6cc45e4611e58d2110c82c13f1be13dddb8631aedb0cf6b2dc3c66030dbf80420780b638f31c5bee62c206993c7aa1d8f3e0c7f1de73f68010808ffbedc61589550634cd4aab496ab1488c4b6755520db91919aa00ddc69f525a1683bc424667e8ac3b8d296b799ce0fee0c957679d1066c055e3aea7d646437c80f1c1c2193042feb0df57c5147fb1363f5bc253c9b7c2ba4bae998ea7996d50d05ad616c60ea6edbfa2ed5055ace24adbff3536376fea8a733679ea33e5f6e129b3e927c2ca66606e7e802bfd8fb2c542ebda1faf432e877f73303503c1a62c0a34540e0b4953d2ee3bc28ced6e01bcb6d2d4fc74a9924329a48823d6eb1bd3f8c339d66982a2dd1f008d59a22702be0f1ed60b179cfd1ee6f58449862bd09e177bdd3e6d11dc98a7a4d8b7c482b1890f36e72fb4db4523cd4e95d57b772b148af48a9582aa0305e41e5d1e5b37e123a561fe982034d3ad3f3fdcc32cf4b0d549a98aa0ada530239d3361c3cdea308a2679f4b9abc443d381c8a52b7f4aca0ebc0ff5a05dc005b3119de8df5f0ea17d67ca7fd81857b0ed4de96f649ded6124cf4cfbc91d26cb3e2c6e856ab75c7235c09df61434cc7eb1f07e574c937ce4fdaf00b55e2d8b7baf4986c6cad1ee32784a04cb3075b41f6c7d9a536c78f361d1e401fea760ea9da9401c4ec5b9ffa112bc9e2d365727be38394816f37eb66a7d26983998ddbb6c50b28b84629f7cc123a561fe982034d3ad3f3fdcc32cf4b0d549a98aa0ada530239d3361c3cdea32db59d6fe0c69d327169090cf47d45c08c02640753ee1277123a07412e9321c40a930f0f38008d40d71eb49fe2005da480e0bcfb74f51fb57f33b04993bc30402342e77b269b378c4c8a8ff819672c9360237c26c2d3c0ec3c7353e19218617214e29e12186b8c521e5025447d638bc595a1e1a1f7d158e398ebde23204ebd142411ee868ee05e3aee7c56ea7bb48b486c156a5c1f80c76669813a77991f7da02e15b4d8c9cfc94aa9d024f0a8e19a253e98fbe9dae640872acb39718b74ef221b5270e54969b11e49aa751c7a6a65ecfa08bc207beb73904da128dfb7292c11', 'transcript_type': 'EVM'}\n", + "Time gen prf: 0.6178569793701172 seconds\n" ] } ], @@ -295,7 +288,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Verifier gets result: 42.125\n" + "Verifier gets result: [42.125]\n" ] } ], diff --git a/examples/median/median.ipynb b/examples/median/median.ipynb index 9a8b16b..aaa87cc 100644 --- a/examples/median/median.ipynb +++ b/examples/median/median.ipynb @@ -9,7 +9,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: ezkl==7.0.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (7.0.0)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (9.1.0)\n", "Requirement already satisfied: torch in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", "Requirement already satisfied: requests in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", "Requirement already satisfied: scipy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", @@ -131,7 +131,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -145,7 +145,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -177,16 +177,39 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "==== Generate & Calibrate Setting ====\n", + "==== Generate & Calibrate Setting ====\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\n", + " <------------- Numerical Fidelity Report (input_scale: 7, param_scale: 7, scale_input_multiplier: 10) ------------->\n", + "\n", + "+--------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| mean_error | median_error | max_error | min_error | mean_abs_error | median_abs_error | max_abs_error | min_abs_error | mean_squared_error | mean_percent_error | mean_abs_percent_error |\n", + "+--------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| 0.0015621185 | 0.003124237 | 0.003124237 | 0 | 0.0015621185 | 0.003124237 | 0.003124237 | 0 | 0.0000048804286 | 0.000031526106 | 0.000031526106 |\n", + "+--------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "scale: [7]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":7,\"param_scale\":7,\"scale_rebase_multiplier\":10,\"lookup_range\":[-12494,12494],\"logrows\":15,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":14432,\"total_assignments\":7536,\"total_const_size\":7,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,7],\"model_input_scales\":[7],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]],\"elgamal\":[0,[0]]},\"required_lookups\":[{\"GreaterThan\":{\"a\":0.0}},\"KroneckerDelta\"],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" + "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":7,\"param_scale\":7,\"scale_rebase_multiplier\":10,\"lookup_range\":[-12430,12494],\"logrows\":15,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\",\"div_rebasing\":false,\"rebase_frac_zero_constants\":false,\"check_mode\":\"UNSAFE\"},\"num_rows\":14432,\"total_assignments\":9345,\"total_const_size\":911,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,7],\"model_input_scales\":[7],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]]},\"required_lookups\":[{\"GreaterThan\":{\"a\":0.0}}],\"required_range_checks\":[],\"check_mode\":\"UNSAFE\",\"version\":\"9.1.0\",\"num_blinding_factors\":null,\"timestamp\":1709450871188}\n" ] } ], @@ -199,58 +222,22 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 9, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "==== setting up ezkl ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Time setup: 3.290968894958496 seconds\n", + "==== setting up ezkl ====\n", + "Time setup: 2.8171370029449463 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", "witness result 1 : 49.546875\n", - "==== Generating Proof ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "proof: {'instances': [[[12448964500226922122, 1569304359747940647, 1012944616373047521, 396517790474193570], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [12176007265991490802, 4416964430932312657, 15559879261920001877, 459064226310513766]]], 'proof': '21a7e6c14aeb411b44e2b37711400a2e74b94dc92189b445576b2b2ce4bb6b672c0f6ad955e52f26957b7516f462f5827f3824b0ce31453d15141a5dbc7607fb2b5d66316d6100f49b6060cc180c3a6ef226177e07c0825346093c5c3955339808e13868eb7b7108b0822c96317c538186fefa5653841feda935e8a76d5284d8118811eab3ec6354124e9465e3d3e7318826b7495977ee09ac60685c043a30af155b39990a3d38f668de0a9dcc3d6b3e90a31bede58ded3b3589c91045a489082d92f7b87ece917c52eb8a7077351ddd504b743b4768854d8ad6ae72cacaff0a1661247575220575456332b6b85429d2e07672f51bb171c69a681db8a384395e0799e6d49692e30fd40eb79cdf852dc5762f0f6458456901c7b72c25ea05f6390b8c5dd135fac0e61ae4713ec141d6a432a14ac1b360db10308d6babf1843e081d79b02eef2012e16f16e279355644d6dc3afbe0e9ec17f41c8c699d19cfbab70e76b5450e8c4c989d635f9d219b755caa0b4c08a75f43f6a098da67b0afa7fe18a79d985958634f44bdd07849da69b4b90c9591d4b90e79bcdb464de1c9591a0378d8a7a9902457d9886cfe1dc5efe37725fe655270b078c4f1c2d2159aaafa175c3862d44a734a459859a7b174b9df2210f17b74a008b6989a0101d68ad3ed1d25b0874bda0226331f5c115397ad4281d4280bdc2ad1f05b201f3b5569ff721532caa1cdfa5c67fadcbd62aa21ae7e2f169aacad9ec96620cb85672553e53b2d8889d85c9e6831fab14267a8db41984202bb0745e44cebb2ea1e630ea13cf0250900c3559c88e080532d6d4130f40ea6726406c0671d799c97ed514f12f7e70779881a86fcce5b712b143bdb36819985b6924ae1040ad3d07e0d818cadd5f72caf95983fa7866fa28e2c5e92620247a34cff9ff7d1ed53ea6ef3419b6328931efbe9d38a182fabadda939e5af95783c56195e0c83c72b1dee041c80778b0d41bd68227837fc900254a059bdba5199aa15de94fcc0a1718a5d3a175e249d02b1f2de517959f4ab2d1ee0617a0b31b24eaf30647afa32bbcbf877d0d6bb481682faef3c7809102dd1a5e158beb3c659409f4e78f126429e0cb9c43fb908b54bb18a4c656a6db221470887d9f30ec37990af3e7cccfd1ff4974456e5e87c2bf2a28d36b909d6b419d56a645fefe8ad165d883e58c34e6512e90e4f8d4c10e83c22859ef953ad2b5bca114a4be6f2b9e40af065f5568f51b263bfac9a12c635f742bb7cac19eada22fe160f3f2015ef2ea55e3a54db4ae113ee3570eef7cabe73619899003f85e8fa743e8678ba736af87cb0ae8c48bd9f319ab65cfc23db5b3bf04e3172c3d0600b7dbd730ff24682508860ca5390a13df7e58be7b962e903eae05e1d2d94dd739c1e4263befa8db1ec4f11a28b7652c79fca6e27643ba0162cc0b2c8256359453922f89c8f6a48f8a8a4b8c5c72e87181dbcb38bfa44af85b1c244a332d07f2d942c4eb793569615fd410534ff03dab7aebde065cce5611f0df10357dff08c7a1166b8f5c1207396c3aae65f2ae9d42838da357c37fe537cb5f183ff3445c66462ca34b58f5285f18aeb600b8d562266d84ad82490a4906f0982028a1815f3dc885db7d37a6a819844eb4b26772c1c8f045c9921993667fa2a301264a6e2599fc7280ee0dae23d0d80dd5a938af47b779d1fff55e6862cd49ac18681ffc01962642b5b7ec8db66dc2d396d29425b2af7762a4968b1076ef8df602266ca11755dc45b3c45216eb1de790e05d774434f0fc0892b13d937f8299ad0716aaa09138ec4fe5e402d631cc8a1be5f8854fa20f580cb1ee952a6d8a3d5b0703f5d275360a4541fa1b02e54450ae5a6019ef8491414c290ec1ffe13cad5b293969bd04d9e79363ce0fa312252ec55ad2c06b60bfabaf12b8e476aa6d6b950f76ed49b6e10264590d2ecaca0d82998f245fe97b4d4b81b2aa1b594326de1625e51d60e1acfbc9fcca9b65cbc85fb3842fafb113d532c42d28e0697363dce907e5dc43cbca027270a8d6c972c818b6aa98277a908568a286bd78da2309817d23aca1f170e154ee9e800c2d06d57ed43a1b2f84dfd01000da5aca855592f913101d5c15dd8dc34dd88fd965822b8aa691ed6b5148448a5f24a8900d7d2535f82f6cbc1bef6155bfb5e56bdf494591deae7e12d39c3279539b8dcbb2c08987b3181fa06aa02c3ccfd68d10d7d0ff69f21b5919121e03e063ae9010ea1707c72b1daa766d3e7794a55d6d00f0d32b21901078a5a418a9ecf7231832555340c33f14c1adf5a4e6ad27c089ee921b324146538d748db79685d00aed93bdfaee83ca2667ef5f0d05b81f7761c2ba88278566bd29e77d5a477c8780f09bc8f55e6fef1d61c4ad27fca34b9c1c9ca6dd9d3d61953885d3fbb0650d73403af29032052e2b83f207820e62860dacee0f0afef13288c083f905a699f1be8adddb6b3c470d029204e2c12f5ef0c7a9efa7d01101d958ae510e133dec07699ba197c87198681a52b3303f9ec623e8b28219a8b6064f1e9a9347234ebd3561fd832ecd222f0616a7e787dafc185c6fe8cd32cf05f002ba90c91c767d2aad9468a7b4a740ff720049b2e25c91b5d11ba2dcd66fa4a3d567fed86967103a0ec7b1f837b338594111de8b9fab08cc7957d7368710b006bbde8cf7da29c9caac00a4273e02cd0dd1010b7ed304cee6c78c32733d867c478e8e5581ed3d67e2f5a8c51691f22f445729d0eff668fdc4f24bed30c070ed8683305ff43bff368630e32f09264ea3b0350c6601801ce9b28983640568f551c491dc7f6067239b8e924f9debcd210581f92d4290823c0ce87dcb848b2ccba2fe892023967310077f1de7c7de96b3b1526e287fbd61ffd8929195026da1705aaeca28422dde95813ba0faf8b491a310c43512d4c8db51fbb2ff65ddae9417aed43ee71a047193e0ce7fe83c903f50a069a20f7c9206033b3880eadb8e914446326e737d292dcf340239da8e0864cb7b18ea141d89f5789ebcdc505ac4736ef7eabe7594f10d1a818bff8ef37fe4b48b77871dfd1c7b6b143aae54072cffc64f4deabd73bf68816f58486548cda425a56ca402c380ea14e240864b4fe1772c6ae7c6c9de8b2e5ffcb83e5907998e13cee7401dbc6b21cb8f1dd75302496476a664ed8f34e33c42e1f000efc3b1cbdfcf135a0b818569daac33e8bd7c13fa75d746407e79bc5c455d6e185aba49b52405076f2826e8bcd98764426114938216ce2eca140b80dcc4bbbe42912097051b87f8b82618c9bd4a1d54980b8c52fba305c59adad51ecf13c9435e95acea88d8bc279e17b60711a9a6401ecddeff432f07e18a45a443f5df932b9e3ec6b5130e492e381cd0827b4ed7c748c6c75d0305d0dba91e61218599b305427731b552350e1de804bd83037e19fdc926b6a8c7b5d3ded5fb60d674a12d44a96b408056f0da37da0b78c6f903a12f750515393fdc3a36156c08b6caa4973e40b7ec14692799ba1d18ca7e3b27ded55df691977ba2ce7a991b769fca023cf55b74c9a2a35b74ce970eaceaeee805aa8b73b8eb81074e477cb89ece5951ee80962fd0f9ceca9b3dbd1c0de8893f58941069008a16b9c6559c257fe26df19568e5edfee934cf28a53926265f80805c719379b750cfb9b0064f07bba8617e8ec5bb9c2631074232b7a50b476d9cb5f3722e03c17008f410de0c298ea5442affaa09aa787c0f67c438fd03ebbca5e8f70683bed6d28ef25f2fb3d6bfa8a2f20998ff6f7733adaf84789510fb05827035a1f449269220f164426567b898572f57b1887f3a378ced0cc7cc0ce40dcdcc4bd604518546e878c00c94e8e88ddedf2aa949482dae832d13051801752fa8988a2bab460f40371a07bc3ba95500003e07d09224c4d9c8c1d4b6711ddc1e518a5989092ec0320568ccee24a5dc592afa1fc2d8db985e83ade16ec30d6c71e3e9f8388988daf3645a4ec53a39348fe0c4926c89e8a6720a721a305d23fb2c4e7a405b032991283ebd495683adb0a972149188099a59f026c2590e1b23f0c723cddcf495b3eb5a1cfee63d7220e175e88df1dd1fcd5babd33b787e7e0f8f43c5c30dfb567f940c38ba77fa7893551836b3870a5d59f53161eef09f9e2a8ea12b65f89dcac125462adfa5fd0ce2e8e33a21cb00779e9f67244db3a7390be9efc556b21ee5e69407f267c81838e110ed9a500bd633fddd52012a70cc07130d0bcb6f0850fe78665d747de2ef09b13ea8ba56a63db61e0d91a5004bc65816e0c0c363e17bc02db968c65f9ba4df6d8215d10dc768a47403471a62db0f642d630978c3556d7aa7954263418199328e6e9b8af9907a569e5872234d96a298270320ea3a53c6d912df87481f8779878f5c5a3abcc106e4a7c87fec3a6ce73014776d5a36d6ace287e5f2c8f27015a3abbbd2ba2a451593a58db3ad244b5bc708b5e1c9bfa7ebe7ae82a78d8f6bfbc05b0f4b7d2dcca6c292cb99f7077ec79c04758df1a847c0315c8a03adffbda1ef97687d5e598b5bc2699297357688609616d7c65821708943afbdcf2a5c8f17461a664a767dc1bb774ab5c5c8e37d851e2f396c7219aa15eb48b9723c0892ba11304b9a9a18c71434ffe1591b56e875290a945e47632e3496fc53a5785360746064b51066ee9476d153d3c5095428683111dfee78c891ea4e2c8e070d2d381940ea4cb593542ad10bb3343ddeac7764db0b9cf5b7bc537027c0138e5f618ddc91eaf766b8312400ca0be95094549c26e00f67a5a654d84276cfaece4693455fadeb797685a05cc3daa70183b033e836a40d703656209198dadf27219b152a18477acd8ebab0c848c1f0f30bcc7ccac70e00a5d65325d0d2fdb290fe4df1d18b707f9a32c8c99661b263b18a8f3803f1ce14915e903afe966b6821cac8f5f28070d0c156402f8a52a929d9f21c7c8d6a5e2aa89b89f32954aaba9be8870d2247e0c04225c6f0ee90cc0cee819908c40efa1334086f0bbadb98eb36f46973b1ed2cd6c30681a24d97079ac2126069565cd3243651d8647e5d540e9d0d4d97ce9ecb63e6221ac15d36ea0a452fcde4bf19b41d104e97b4b6db54332f5b02670d32bef63a451812e7d6da6fe832964e7a279f1abbf744d05fc384e38ba20c299b5bb681038fd363ab746dc0adf61a4956dd510ffc9f89c77f9d4b94b33585c2ea943f10543f5fcdb1e4092ee057d7fed39f1a053a83c485f023da7951b0ffba28af3605e269ac06dad982a6588616e27bd29e20f19eb91fac9c83b64416e390ed0635361ef168d4418c84f1a3b43d89adbf7125347c421a9bb72a303432cc90459f50ce91aece177b693247367c6609e9e6242fd200a2f107010b700b414a83096026479aa6dfcde55be528c231b6833bdcdd04ffa68231d1e31edce72044360da00ba9e78761198b6a444c29d4801d515c0c23dde23a31db8be7bc6f49fb7b6f610e5c8ca8d97333d5595ae482cf0d31907c1b1629ad600946d57412db286fc1fe1ec0b9358e94e41545aa2bf17a30f4019e', 'transcript_type': 'EVM'}\n", - "Time gen prf: 4.551930904388428 seconds\n" + "==== Generating Proof ====\n", + "proof: {'instances': [['13613be83876b1d6edaa4022f0037a4a0dd2bca4e9a736c5ced55f1d1ec6fb29', '0100000000000000000000000000000000000000000000000000000000000000', 'c618000000000000000000000000000000000000000000000000000000000000']], 'proof': '0x0ce9af8b45cb5b7663b33f5d7508ce0fc409fe85a07a800c32ebead92ebb5a811cc1eb032647d2cb0606ec5e750efdb3336af791b298c998699e51e491e86f2b17ca3c83287393091853a7ecf57ef462460cc39a958b5c7af1beb73fff68764e0e33276478397a787903d7351b01a9a37d393d3bea9fe129a28493ef9c8bbe3c1f7ef49e431f512f55fd0c00d44f16e0c70eefdd006db3a7c51e87a6b16f530b16727a7e54c313b2d326ef1ad870163f2a5ec496ed0a5cefcfc289998e54694016f90bf228871e107559a80762f32d25930e333e29a5ffeab5468c53891cc1952256417ded297a332d121d41c0094c9b83c534adf749405a96d531c115d1302a1c707ba4c6bc46fcb79665fd53a65629bd02d2f89f1c412775fe428d436b80bd16735a4532863b6fd1b5439f97bfa4503f086b9d07403c49e66926797b4fff651890131f5b5304be61bd1f956cb22d31b64056377fd5f2300a8e8bd63f24c31424af2a121c087de49663a61af2e9e22da81dad8256d33bacc3778123aec428701995fc8695b4cdea5ec6bc741ce6da57b8649e7caf786df4e04299a1a1dd651f1c2cfb1bf13ca9596798dc5075ff1f4ffae580ee2d6446e7778bed861f3e2c39025ae084095f93aba123fa322a16d08696125de910cd5163cfc86553edeb2b0a284347813232f7cb49d5ac507638c122308821abcaca62ba1efd9d062f5dabab211c1ee0bfbdce7bd4b8a026bb9ed3e61eba100c92db308389bda11536d3b7e116816a0dc66ee6112cee69a3998b11f29c937e3bf87005db9e9d62036ab07041081aaa03a3e6774ad5098d23afe60fc9f0b9aaa16a625331cce4f85db3ae8c0b02b332e6447f99595ebdab1887948e333fee15093e019e38c0c72e7df6d281451ff8764943db4bf1144b54d7cf7f78aea4397fd9cd103c9a789b66bc8c589c371a23fd809e0fbbd40272c7d7430401db4b091157ec0b19e9da8aeaf7253ad3e8132eb456c55181c33ca955414462223e8facb632916c3c819a40ef47b640d5cf0b89ed82ff701077af30ad6995899687c3dfba7edaa73b0972460bb3176bd359137176a2e13934309375d36ae7b89d9eafc5087576facc9b672a7830355b7d8b0c650bb39f3886cd44b7ffbd95f84dea2d4655f1285cf7098c0da8909134e9ba03e267e86ab86db2ec5fa3cde12f126ddad606254754107707a6cc00cdb5dc122dd226a6a8e348e63b9ff709ddb50d0e94f011936f4809d7a8d4ed47579d1aab1fa8767544691f35d471c3d0998fa01e262e8e3f6fb9e50a992c8706824a3e5121af62c381423338d6e6cdf3c95790d6aa98f0bf1ea2dca2a365e2e2456e97c312e2ba94ea8399093df9714d324574a777495964309bcbca3dc0b08016e8c556088a915b8e82de1afaa5bdd7b57d12c17f196f427a4cbee3001c67047395439801b94e10f3f4cd58b6845dcf3fd405a11e88f88f2a3fc9fbf87625968eb9bbb1293d0d354e1c9d720d00a77394550f4106289a6adebe2b6f7f546e6456e6e775003016edfcf9b6e681c52717682b0a7f72e1acc9613e48ec18d93285908693de20289173d148a6ae77657a2f04ba4e71425db3dddffe976a340d4134bf57be0f08c7d2d78860d60ab95da8684a55a4deb3e36a62a421214166f5eebe2596cf1a2c7096d987db209d214f58c97fe56bb8be4149c44729b7f88222b09b65301dbd23e23ac047ec5b3a7ce9fc0fccc373de817b36336565b4d15a0f2d1b42d65fa102e37520fb3d92e75d2e67139c65076d152fadaa6c12564a3a6c0c35606027c429baf567ce5b4cdb2dfb84249848e653f856ac75f105d50e4cc2a6856273e1b30c8b14af8100b7e65c57063c838317337d6354ef8e092f14ae6b523cb84abf5720e0979327e90ba6ab41a4e73fdad4867272dae0a670a30422db150a7168d9a02de2da065f55daec7763c8cb108535d9d55640f0556d1a70bc37cb523077a2dd04cdc0193beea33e6a38e9c616f15ce72ef57c55521a55917686c5312bd94c2b1385f59f9bd1517825d3d1b0173c667d555e8384212012f2f7c07858ca8e85120849c6232ccd1b6b7054ac1a821fd5d8c687df121f64b29b372c6e3eea664dc21b07fd08a45ad8d719ac851c7ca31e42492f2d60891bd8ad7e156a68e796ca82304126f654a0b0b195f62dafd2269f29cd69613e53f3c0e9253117f573def77c26d4aee2f7eeeeb92de7e0321c1c1542e9752e68092c81bdd9af83e9a14c6628086a2b4cd32f7bc1e6cb08dc08e8e6fbdcd76d37e4410ebb0bbbf33c132a859d1ad6a2d0d163c9357a460dc4c724086d76bca6eadde1ae87417b029dfc290be41f7f67b6ef064549638dc4f2289bc5bc6135328fb0127a79eb303e6c69efac2f16e0f2d60b4279ab6a404fafa39c3ea3d32d1597aed6575775dea244be5498d60ada6d975338204b0a555569133521c5669ed1a5c6912887e6099da4fb33c623124aaaf8380ae708eca6bb97996a99a8d4f03fd164b3593cf471d3c1359f5802035b1c28f8af9ecc17da8023e6e516bc57b1643273350d5018ccc723d2f235d21f4334ae62b9f7f849a7bf60e014ad18f784bffc15ce29632f981f3ebd5243a504ce158d667d40dbdfa5cd8238960e9c2b29ff21dcad47570f5095f46bedec04045d8e1f269635e2addb19f6a7071fa9254cb78ccf0b2ff526f3da91afb1bdb918b78dae336cf0b58f75a5beea946c6c06c75668dce38ddaa7dbbfc64bb86bff20ea748302b3f43dd1d50677742019b28015bc202cfd31b5cbb7c274c19c8f7520d1be56304e5ae5c90dc26649e91f511a73ae4440b40cd66ecf2113adae9662186efd163ab5f3e3c1e1fc474578b484f3a63ae43c94fe36d474835ed5f03a6512cc7709bc996bb7af41b09aafb5144901086a1f727a26181d6b7111c22540fe26e72cd8571ff6a47f84f7d81818a1696634aac15e1770ea8fb7b5d5f9ff647021bee8d74ba74bb4f651bbaf9c308f7bd75aaa954937fce0868b31acc2897069305d34c5b9c40dadf657305ef2d29af32f89d5ec6d084eb2c2b668fd896d596900000000000000000000000000000000000000000000000000000000000000000d2225b937193ccd3e4ae31534abd1d0e9aea3e8e2e6fee0c36b9c009ce6503a00000000000000000000000000000000000000000000000000000000000000002d7569c7235f6c5603bf96d10e73ea4c7df2b14a7719288c6c88706b7a30a0482baa079c453acf02f61ed501a4a4ff71ea250f9f98e3d1ca2608765f07f3910c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305f3af42bc5cb7974062cf32ad47bca96944cba900e4ff80707b38da2d273e225f7e8e799213e6eebf6b2ddd3e470ce71795c4edb2edd48cac2fb8fc4713fb5000000000000000000000000000000000000000000000000000000000000000018714888b638f394adcb8452330242a08ba957a0e5341065658df0b99426846018bb4ab5e25304ba680be1b24a3c0b886160ff752394d7d27db6353940ce5aae00000000000000000000000000000000000000000000000000000000000000001f667aec6177d820ca01c317fdd6b5573c842bfe79fcea6a54b9d78ec4f843dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020422422927313523cb418bd92d2efc5136b785c6e389c5f182d51f4d9c4511f199e33f4fffce35329e69113698981ff2a476bfb7e7ca5ab81b119cc1166fa8523e9e5c641624fdaab52d9966c282accd0566e523e0d6f8c44b08c45b9127f8207a93a0642fc3d81401d4f76711699509ebf41233319b113e3107628556d44511f915a5379aa94689a619b1a78499eb09169213019167744992b35ded8442e470dbcaf4f17df29a7ea385f0c18eb73bdbc3c70fbfd40a64319c01cd37d70d89819013b6fa2058e67b08a0fe0f2f2f56e99d8003e9edc664eb146f8331ce30d802de0f1dcddb4ea3635a79a9e26a580531d7350f0579852dfbd9f67bdbbed0ad30ed9802cc9c1664bfb38f676965a44221f7818770b035289708122a465f1789b17939344aa52b6b1762a0eba73b4e9f79c9a7f4f6620c2bb4859a843526e07192017f29cc1d1d9a75cc77cbec1f4d32dfd955ce6463a1dc223d703e77e4bc549021f2a8b4b2bd6cd3670890e2006a5c8cee80b04c31d1ae0fcb76d04e371aa65212f7548229c9961e24ee5768a5dfded891e041334fcc665e9305fdb792147af128ba073eeb481f813acad75944ebda72596a3196b80944eedc9dcb51e38864f0678dc6602a58d49f04346462dc821566f0afa6314ed7b36e30738950fcd41951c7f825bfb0f2cf592aa2d512d22aa4e7ceb5dc8e63ae005c2060dad2eb5043818900fdcb43aaa802b999adac7a508b336485960056c574703291ced741f71432d0c7084ee65ef42ce282a04033ca334289687574bcee3db1f143b9c817128ae0240a01a713addc8c7197afead8f4fb50a10a24e9793767c31fa1370976bbef425d2a86dc31df39632ddd2c67b4dca6b55b2be02a8eb198d414d139541f408be197d11f1e40a36c8d33325738e6f21c68dfec98a9d989ac376da6d12010d606a3019bf1fbe908418fb581af7ca748204dd37ae1668df80aa457b34f97632a2b2105b75f6658992d17af90dd705549567c37107b3d572ef0973c84ce9d2f7238d1a68468c302c6b5032e2e883c27408e2fc587d3473dfb92ed5bfec26a040dc912c7b41b198b2ace9b9118b9a27dbd35ea8275774a7fb377d1b88ac15aa694d1624aabd3c255b009e4a8590a777de8088f890b428e312e7d9ed2fda2b1bce4bbe2cb99e73fcbf8753afc9cf832f7280f6e31736b5f61411835826c6ac3f084bb3135989bae796fb966eb864937368b2af4d6d826a0ec0f300986a1558253811d410d4ee89676ba54c22c8384180bc6b500156970943d9f0598c42622cfeca264b2e03ae3957d64793bd227a8099025cbbd162927c2ff5147619c1d17132e5114f16ffbd49226c7869984bbbd0db863693f2a79d534e9ec70b9ef4df90923182d9259be61f4426a6c4bf10eb477123633cbfc8eb9e78d52590ab6b422146f7f6b9100ebe8ccbaec2f2d5f0aab2162f416611222f23c001a6e569d5bdc45af219f71579529b707dc7010a9a3d243faf493177696537d41dea208e120704bfacb1ce0264d84a20f9965364969950f9219ba4807d63babaec888b3f964c95d56dada1', 'transcript_type': 'EVM'}\n", + "Time gen prf: 3.016767978668213 seconds\n" ] } ], @@ -266,14 +253,14 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Verifier gets result: 49.546875\n" + "Verifier gets result: [49.546875]\n" ] } ], diff --git a/examples/mode/mode.ipynb b/examples/mode/mode.ipynb index 93e365a..1e309b3 100644 --- a/examples/mode/mode.ipynb +++ b/examples/mode/mode.ipynb @@ -9,7 +9,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: ezkl==7.0.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (7.0.0)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (9.1.0)\n", "Requirement already satisfied: torch in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", "Requirement already satisfied: requests in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", "Requirement already satisfied: scipy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", @@ -131,7 +131,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -144,9 +144,28 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jernkun/Desktop/zk-stats-lib/zkstats/ops.py:146: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + " result = torch.tensor(mode_within(x_1d, error))\n", + "/Users/jernkun/Desktop/zk-stats-lib/zkstats/computation.py:166: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", + " is_precise_aggregated = torch.tensor(1.0)\n", + "/Users/jernkun/Desktop/zk-stats-lib/zkstats/ops.py:154: TracerWarning: Iterating over a tensor might cause the trace to be incorrect. Passing a tensor of different shape won't change the number of iterations executed (and might lead to errors or silently give incorrect results).\n", + " _result = torch.tensor([\n", + "/Users/jernkun/Desktop/zk-stats-lib/zkstats/ops.py:154: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", + " _result = torch.tensor([\n", + "/Users/jernkun/Desktop/zk-stats-lib/zkstats/ops.py:154: TracerWarning: Converting a tensor to a Python float might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!\n", + " _result = torch.tensor([\n", + "/Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages/torch/onnx/symbolic_opset9.py:2174: FutureWarning: 'torch.onnx.symbolic_opset9._cast_Bool' is deprecated in version 2.0 and will be removed in the future. Please Avoid using this function and create a Cast node instead.\n", + " return fn(g, to_cast_func(g, input, False), to_cast_func(g, other, False))\n" + ] + } + ], "source": [ "# Verifier/ data consumer side: send desired calculation\n", "from zkstats.computation import computation_to_model, State\n", @@ -163,16 +182,33 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 8, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\n", + " <------------- Numerical Fidelity Report (input_scale: 8, param_scale: 8, scale_input_multiplier: 10) ------------->\n", + "\n", + "+----------------+---------------+-----------+---------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| mean_error | median_error | max_error | min_error | mean_abs_error | median_abs_error | max_abs_error | min_abs_error | mean_squared_error | mean_percent_error | mean_abs_percent_error |\n", + "+----------------+---------------+-----------+---------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| -0.00078201294 | -0.0015640259 | 0 | -0.0015640259 | 0.00078201294 | 0.0015640259 | 0.0015640259 | 0 | 0.0000012230885 | -0.000010077487 | 0.000010077487 |\n", + "+----------------+---------------+-----------+---------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "\n", + "\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "==== Generate & Calibrate Setting ====\n", "scale: [8]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":8,\"param_scale\":8,\"scale_rebase_multiplier\":10,\"lookup_range\":[0,0],\"logrows\":14,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":14432,\"total_assignments\":300,\"total_const_size\":0,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,8],\"model_input_scales\":[8],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]],\"elgamal\":[0,[0]]},\"required_lookups\":[],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" + "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":8,\"param_scale\":8,\"scale_rebase_multiplier\":10,\"lookup_range\":[0,0],\"logrows\":14,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\",\"div_rebasing\":false,\"rebase_frac_zero_constants\":false,\"check_mode\":\"UNSAFE\"},\"num_rows\":14432,\"total_assignments\":302,\"total_const_size\":0,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,8],\"model_input_scales\":[8],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]]},\"required_lookups\":[],\"required_range_checks\":[],\"check_mode\":\"UNSAFE\",\"version\":\"9.1.0\",\"num_blinding_factors\":null,\"timestamp\":1709450905160}\n" ] } ], @@ -185,58 +221,22 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 9, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "==== setting up ezkl ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n", - "spawning module 0\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Time setup: 1.386570930480957 seconds\n", + "==== setting up ezkl ====\n", + "Time setup: 1.3435120582580566 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", "witness result 1 : 77.6015625\n", - "==== Generating Proof ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "proof: {'instances': [[[3042937791208075219, 8157070662846698822, 3804781648660056856, 172406108020799675], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [10694507807471723898, 15190737326438772030, 17750154044162608345, 421916922553260280]]], 'proof': '019e8a20063406f049746fa9014ee3ccda33f028ffa7cf3c79d8ba979bf84bca2cf1c58080cb7edc3beab05496555b87a926330342fbe0da600652b68f67c9b722e9688a2b02a86cd5849fadb34446dc0e6567a6b504876dc19df81f05adeda81b9f5bfbbb2ccd436d9ba70bc6ed94ac4aff4282e3fc64b31e1e2726a16b4ce81441981cf3497729e9fb7db664ec776d0d5478bdb0f8775ce2d39be1e51e973b2e2d59d4b10a26bf8ff40083b4b65d76cc49268fcb39ddab93355bb2e9938d57301cdf88c4b848ad238c6e4bc74fbdf4117a9d1d60f30708bfe346d7f23050b02b3cd8d3c9af19cec11e4597ad8c5d192b9972806b421db98f0e040b6ebca5b70c7bc02a37168e4dfb917f01057a7294e5825deeec6e1d5fe1f852c7fd8dac150a6605dfdf4d5b69ff1356c54a3a45bf243354f6d57dfe0c2d088dd9343cdb7b242cd798f2ecb5efa9329ebec3ab5d238a8d62c46b6337d22e31b50884f074470238872f26289f92b2738975d81db07375fbb657110729c9c0ee4e8ef8533c900a5a0556020f7b22c583bf5653c9244148c5196d76555e883bbb691ca9e1556d2bba7e8ef28f96cfbfe707f6f3f246f876cc90989a1c9a3c0e3eb660e03ad8990030600e6a2fdc8dbe426d12f52b0a034598bee911c935bb185a74a339717dc10a7abc843bf076464cc40bb81f6269ca70b7779c0fa1a4daf255e7fc542eb50d1a5b809cc068e8e2e6ee580f1c70c04c9d28a7c85aa656874c12465993724b792ebb11d87d1d38a18acd9f2bff5e4d48f17fa3b58afaff353dc7c3d94f078eea26c7b9cd3b41c94ea776b527a47fdd892fdf4d721be5f41706f6cfb96c1739c8243fefd8b8ff2918aea73291ac76ea66327bcf3fb69d648823ceb8ef815472d40e0d55783539e03dab1477624a84738584783b3403ce2598f8f3831b8731f38e122a1e776e516f45fb6cb218b2368c662b4215e3178d4663ee5fe8f11aea451e1a7dde57a4c21a1005a91d472bf8763f6a17838efac375eb05945b37749e2cdd1bc89a63056947ea1565aca6ea0db6ba54892f15ae292bca36cb470015e8771e1486d7f952e2c9ef8174fa73bdcbee4677700e96e2fbead03c2a6ca849d5216a1f13f74378144be0f6643bf6a4071538a7909f7a3bb9cd16c7c94ea33dc97e231878a59c4ce59bea6317b514fe2e25159474e051d6f7d590e5265c6bfc1b9fc912e0eb1e412ec722058e729600c8e808085888286376c88968b1662e58a19abd25e6743f8db031fb9a8ad2e1991352870dd88b551377967057fd8c245bb2c9a30d16ffa0285df26032ab106974ed68edbe3b2c3b74e237845bf2106c25d99f80196f53919d9585da73dc1fe1efaff0f3e0c67aede08844fc468431e2f4f6fa371ba3eceed458613434161182496c1d2941eaf5c71ea185ab7d312049601859790d9bb3e32620674216e42797304fa138144be6e61af663f4d73d7b3d645c36e60929fd8b30789a60d1d684b1acf1a7002d234f0f58b29f9e86caae2c2fa37a4a2df5a8630f00edfcf3bb450b13e4aa36c845baf85c3efd0b2f3d14eca57ec3060476a0e4e20c26eb71ef30d5bdc2c07192d8743ceefbc188edd245ff77d6213e2c9a873d60e333d92671e36f8a7b4dba9a6615e48b3cc8e56b09c74a466175d01f42614bfef89a04e7918ea01619cb14520c9b83a453a8b3a4232d39b9f28ff20a7b490c62cce477fcb09c8496b801e5438b9b3d47e42b21ccd3cca7989c44fa16868c54ae9ef799b760f9456632b64c76fdb65200b4249462fc26f97a10344509a9321dcaa834106c3e7af74a1074e2c19e05b763d15bffdd4ca1b8078720eb2c26afd3ceecf3b02abf4c910dbf5194684ecfca351cc0b6b301c73d3710664e2e639eb500dba8718ba214d4de6972a3a7288da0f60db40231fa10b112c0e7631312c1baae52b934096350a60b663aadf18e3f57b730cf364b9c8187093b1685014716a97c61130b6f1230835cdf4667e1cd31636cdb896c2289fdc405f543e30e84adfdc1473b198e7c7abe5246b228688ce61e73f1fb62ac80a883d71dbc82099d0c82686870fdf00ec61a65df5a4371530d6b82f2047619595811630ef93a0570ce2d171a8aa0c6a02fde68e3b6b39e2f9943bbd6f5d44b2a688f3f7a36ab017165d531222370e05c8f335f8e84839b22ed1b504d176006b6a99d98510a1627b26c6df1bf65c0604ad84bf258a8f10dbfeeb3d7197838e83d5f36ed04020c0429d8a7016efcfb8de554e327bed9663d7f71bf74abc0599f9fe3e9c073d9f9122836f0ac3c79a5c64b079f70814ae4818a2eb413607bafc85eaf4cd98c14e219ad8672ff8c3538eb47b2c9f63923f7dc6a1c34f98af755ab52c264d466b0d001aea75b31d06202d658b20178cb5e130155bd8305d09ee359ca0a0685422477087bebdb43d998b1883e4d2104d4644ea283c005a3a482ead10a55a1254dfbbd074c69d35557df5fdd0d986e5e5b0a4b6d608f5f261e36c92cf879eb5722b8fc0f94b960388a7eacf88c9e3f5693fa32feaa0ef7b5a609ebb420eb932853f4780fe383d23a2dd9ca389bfbbfe901fec8e6d2880f714fa6b6da24795cc340278000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075cceea8577233ec74253e1c8c3b34f7ab35b860ad8891df89bdd71910fca2c0f0148063ecc03d928d6eb17c9edd66da3ffddd364d8f85e2eaeb48a581cb9841713aa6de968d29db1b7b90f7e6a7e9c91a9c99b84ccf0dbb6b13f12be5bb570089e8346bfb14ad3e7e7b00387b66c413d95bce3c19d9ce688050c03a3d8d1861ce8cbdd4e7d355c59bb4fc454a24581b198627e6571f2ae32af5ae9af154eef248d38c4b8b4aeded260c732258077d62ede9f0398ae300686b5372ed848731d2e1cd0227ef12f41afdf1f327fa54df31f050eb9c17b6d27a644056200b616980338ef23336acb006cd3d17e24df045f09a40b66aea5661de95b3fc043e1441d0b36a5ffb9b509ec8bda1746684ae9c155c5706ac341ce5c1b20165fc2888bf31f9ded22f9363e470585e90a817876ff120e36d235d977623ab0aa3d1fb7d900029493170ee2de4a3c7910870194919263003af01aef315e97acfef56f7f53dc0a7f43d90aab93ed7f6a5aad4846d5cf55eea6b1b59e31ec866908f08eb6d8140b2664fe8345c38a28234f4fa16b26aef9e6f460bb68ea36490beda4bb6c62ad2af5d274c7b1b06f119d80aba3d520cbdf0f6156f13fa5b9be4e6c4159b3495a2d67efe7cf9290e6ea2477b1e75c14c0327137ec3f0e6fe430a994226e51ad7705f3bbb224512e8fc00cd71d31cbaa56fdd5c1a8b68c3fd2da0916159dfc3fa70e09fe63ac18478d9e221356863425f142a641208b8a0ba7025168e54813f3cf01d7819057e60216ba9a298bfe9fc01d691ee9ca39ce7d1e46af569b59293d420885a264d9349904873736c6e76fc4ecbc5ea3fd8e6a65da464dc120e17b35091a996be3576525e4dfb19b7947f81f0cb469dfcdc3f613e23c2b7abe2813a0310005a37d1bf7184aa2030f53e79811438a1d55271ae81c4c46d5164f70a04b4f2154921d6d055c558d8a3512e0164569c6105d5ecf6fea6ea33cf4b9ea7792d5086b03ab281deb8d85e0f4605fde95cd05cf9864da0ae3de8bdd31441b8ca71a2baaa0d87169536c721f82f9594343026fce0cfb929fc018fb8ecb9bb6c93f60296e10715156c3326ed8b84bfb14d9d2ab218e3bc058d9f77c0cb84e307d7855', 'transcript_type': 'EVM'}\n", - "Time gen prf: 1.7840330600738525 seconds\n" + "==== Generating Proof ====\n", + "proof: {'instances': [['c2b6968dfce66ece687a00d15dea969a5dab54b503c9ac9d0ad01308cedbb32e', '0100000000000000000000000000000000000000000000000000000000000000', '9a4d000000000000000000000000000000000000000000000000000000000000']], 'proof': '0x1f713c2f390ccdf470b70ef0d5bd294259dcbab6a934f4c50e4c4641fe162c3f22d93e9a70ed64863805ff6723e1a7a686a9239ac95b4a8013851847c49e37ae1299500b597b333dac21c146157d9ea78bbdd5c47b589387cf5c7894eb1bc28f2c765776aa4bc947ef6ef201ded78abf8f82953844746c43d799392504812c552d71cc0ee5c7710bcc5abdf671eac4458c918c7e1c6824c2e93f092e8e545266081f167faa659047fe437babbe238ddc189a3558e7e6447cca823f9860f472221e7768a1227c3a4cc969577b9a3f25679bad5bd35d8cbb0c3b9958a83409698c229ce3714e7b34729e754bdc488f9c7745ce8705936d42ec4da3cbc822a0917d212f7083e6e1d0b8424c45ceb4f4e68e4525a10c2378f7bf4e83b11398e8a29b108c8c6019a29a981b308e3834486a3b9a922e63c13b4035c40c07dce81e3e501e82208350d6d15522cf546b00f76069f13e99cf0bca7bbcd69389faadda4971064b524f1e7beca866fe77e17ae4ed2763b00b3024ce47a8a709a4249e55a1481323e1360f477f45277ffe1a11a64311bfd2ba03f0a0cab00d2910c05cac1a7824898fd213649d3f1824f8df031f16cb4cd8c438195ec7952c7a202e36e64376301721832e89cae3dd771de252afd7f52ad96689bfaa34ab49c4a5e72242252926290cdb9ad3ca5bd7633d252abe805faac733df375e49eaaeefa08195e885700b3e86d2271fda7c4018b0d2447d7251ea888d436611f293fead2a350ab4a8e420763a1f0792bb6147c1a7ad5997aea0f8eed90c829a9e589e354fe219c7a1c41e6c34a077af6e715a1b6347286afbe2d2f754f54fc5b638b55bb32d3dec3ddc12d1cf848aeaa7b1e87f778d3fde2740407b15491a1cf906f42d7dff22f15bc41c6a785076af3b06a5971cc41e7f3a06ec18f85b3c893519a6817d6be005f55913958a122ea47ddedb301327ac160c93093f5d4cf2efb061101f01a6a29e82e419b49e7e28bd84284781376a22d8b21ecb52d57dd1c81a001280d9895b27a80b123267675570f180f6c91c101e2e5fb60bd81335440cd68e7966816a72ed5fd121df7e7938b630ba34b618fe7ea67d94321b998489afeb3f90f17ac3d639be002445e69a2a8c9a26b8e4bb91d62c8285598600373ae71c8a7ddcdf462d7005732c08f89ebd686ad9ecc8c94b13b3016a058849b0c2d6385d769ddb9c3478d69e0663f02188cc4047472f98520253c6d5b15d22b6f35069eeec8fc3c16a1504a916cdbbce45da127cab167a3239a48c61730f7e8fe200033fa25c6f85571fa6962c64f673bd339dd9eec933cdf67c2fcf53f6fc5d33666bb2826fb4eb5a295c561744660e49b984cbe8878dde9af152ca797ebf29460c837bfa8ae7dba8908a5e25879e732054b74c86eb82a9f952aa1ebaaf95b1b173d8d3a7d9e87e857ed04c0a4a9dc3fa6cac5953093c7fd0b05d9e55e2922ff22f95c35e57be1be0f0d9582e0f23ec3875a4d05540fc794e5ad3bc0db18a7b10fe754e83a797f9f0e152450e9b00e4742ee95e78471a49ae982685d5fa6017e07186320130736c0ad911a62943b00a0114e07c1568e6be09533fd2a52ea47b498d50285a121a8893c9c13406fa1c8e37066bcc13cd057053e5fc89efed545766d6afeef07c195f9fe5755e193c39b1b525d3c388716d4f7d2515a56e9d5f1c3b17e55ebb78a399b54e63f013c755578ffc729146ace876a87bec40abe2008bfdf843af2fb144839bd72982142aa26b5ffd15dd2ce80d4068cab83c4a5b59b2cc155fac55024c9ee51e2bd60d435936746bba086a1c3b4e50fc835d18be9820a4af4641d9b86e07407666a42f27f11c2e74120b779756affd04cd30d79fce66f53c88238d0a97775f7592790e9b034912908d529bbfd45d57924d104b6e891bdae7feb5c45ab8875f07a8af30183b0f2ad057272d080fdd4c84290a2ff3cdc4d6f502f44763cdcdec3569ab2977a1fe6e89b1a11aacbb0bd668e57a94fb8539e50ceb09ca313d700d05115403d4a2a8097104dfe971d94e0cfad5d264436548726e4eb3cdd4bd8a2f1fc70a0729d0e52a942d54e68644369ee3add58f344cf179908711649c752da2d48a9b26043d3c3b189de44dc61e9a27d5493e91e3434d51d8c2ee8b5b7289d98ecfc82fe37cac7cf080fdfdc77527b9b3b549c77ea3ae84879bf674f439540e6c92d8094ca40a00c30cdb9bf23f3c74ca1b8cb8625b02d45d520ad41b8bdf91ce1cf21ade85e355b3128ec3e15699f22bfaf043ab5d72924a2dab6571a60aaf69480118a7c71f7e2e55307b00986c12e3d3ff8a189e6ecfb9889047bc3a529e3ea4d80acf37fa23885160cd22ed44bb0770fd9eb360e068a3db75c57ef42acba4e36d0047491ef5f9fa7ae4d7a48db63c6f763c440f583d449f6586693acb7f31834b0e20c05fc8ae9250f12b289440ba9b510928864d9b39470ae443c3f7a63b00272cfd16b1a2ffec672d4dd55af5761714421762a5d6c00819f7593f1956566ab727ae724965af3d8a35ba8e3813bd8e56e6d773f52acbd5b31e7f92225bfe9d2d2c6ae68d945944a4830836d6925a30119c462d795a34c0bcb050e76b0291d69d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014cd590f1334a38375c53f4311d1427bc56b9802a7364ecca4fd76b13d745663243fabbbb3b3ee429cf0555d47c983a0c42d2b04d7f59fea5f8e18d025ba7dcd1db77f74257321c2b44b14289cabddef5cd39c7f1dbd0b313fc1e060d0718488225e363bba8d2d95efa8ad0b92ce4184b11e4fff47946edaeae167c297dc0a3d0867b59bb3ea2b613e89e7b82c5a407b4a27700586d8bc0ef70986d5c9a37da50e2206d221afdbbefdced70a5a893f5c4d5dfe74e2fc52cffb9b1684f7ecc07116fd268f3b5efb238137d451eebd5c6d707b86316ca9e3cc45c3e8981c9e69141f83ea0d48c16a34b53a13a90c424fbe890f225e41bc48ed0787fc01f3c92ed50db3c392e4cbcf1ac631ead14c177fcb50241467981eb5746e8d5e877e5ddc74173bc4a11511bb6ee035ee49e2f38223990eeb5d4816e65eb4323c74b9106d3f1c4a821a72e5dee49e145e7fd3e77b59b65f2c02e78175592b741c1a4ebd18ad22ff193c187e9e14b85340eaff664bb8432f9a5e23776c803bb62e3e303d9f1b1a2ad83b7269a45346c56c578646fc11202d0f627c7f8bb24e49eebdcc4fafc0054b261921491f0e0747c298487884102a2fad30690b54a3d720f5f2066142eb0b676809584ba30f010376935fddde6f7cf9ab76e4615eebb95a0d6797c8a67203bed046e85163148d0f5f9f75833426ea60d10ae65c7ffcb605b6b27ba935ca0d139860646e26e639a1a21bb8f7e08a0992d120efb486d7e5ea04cc69e638381d8ce2bdba595e13c79a7e219e582eaffbab0c9db9cb59ac42199c18562171461307eabc1e35f53303b4fe71664a95a8f01e3d0e53e393d3c34a59c3091a3b4a022984e64980b4ff1fdd1eb580d68c17f301604c1d887996b1170c8fc9ed5fd029ea240948f38b9492910bb6e859b4725bbe7dcef8948407a93cdc52b3855740229b26d08264b5af0d2e937884b4f81ac79eafcad40c2a6d4bf22f1cb98c530613d2ca8d10415a97b414735c5db2f11fbe4a82238a001544ba88aeb0b59de5492d61fd38d04fb9e192a1f57d179d9e5deaaa339aa281de543473808d8a9167322103f55b21b68cffdee7080b6bb04dba786656a9d7acfa8852757229643cd14c', 'transcript_type': 'EVM'}\n", + "Time gen prf: 1.5122041702270508 seconds\n" ] } ], @@ -252,14 +252,14 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Verifier gets result: 77.6015625\n" + "Verifier gets result: [77.6015625]\n" ] } ], diff --git a/examples/pstdev/pstdev.ipynb b/examples/pstdev/pstdev.ipynb index 7a2fa2e..0ede233 100644 --- a/examples/pstdev/pstdev.ipynb +++ b/examples/pstdev/pstdev.ipynb @@ -9,7 +9,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: ezkl==7.0.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (7.0.0)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (9.1.0)\n", "Requirement already satisfied: torch in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", "Requirement already satisfied: requests in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", "Requirement already satisfied: scipy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", @@ -174,9 +174,32 @@ "name": "stdout", "output_type": "stream", "text": [ - "==== Generate & Calibrate Setting ====\n", + "==== Generate & Calibrate Setting ====\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\n", + " <------------- Numerical Fidelity Report (input_scale: 3, param_scale: 3, scale_input_multiplier: 1) ------------->\n", + "\n", + "+-------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| mean_error | median_error | max_error | min_error | mean_abs_error | median_abs_error | max_abs_error | min_abs_error | mean_squared_error | mean_percent_error | mean_abs_percent_error |\n", + "+-------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| 0.027862072 | 0.055724144 | 0.055724144 | 0 | 0.027862072 | 0.055724144 | 0.055724144 | 0 | 0.0015525902 | 0.001914166 | 0.001914166 |\n", + "+-------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "scale: [3]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":3,\"param_scale\":3,\"scale_rebase_multiplier\":10,\"lookup_range\":[-162682,34],\"logrows\":18,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":14432,\"total_assignments\":1519,\"total_const_size\":8,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,3],\"model_input_scales\":[3],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]],\"elgamal\":[0,[0]]},\"required_lookups\":[\"Abs\",{\"GreaterThan\":{\"a\":0.0}}],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" + "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":3,\"param_scale\":3,\"scale_rebase_multiplier\":1,\"lookup_range\":[-20336,4],\"logrows\":15,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\",\"div_rebasing\":false,\"rebase_frac_zero_constants\":false,\"check_mode\":\"UNSAFE\"},\"num_rows\":14432,\"total_assignments\":2722,\"total_const_size\":309,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,3],\"model_input_scales\":[3],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]]},\"required_lookups\":[\"Abs\",{\"GreaterThan\":{\"a\":0.0}}],\"required_range_checks\":[[-4,4]],\"check_mode\":\"UNSAFE\",\"version\":\"9.1.0\",\"num_blinding_factors\":null,\"timestamp\":1709450967707}\n" ] } ], @@ -192,55 +215,19 @@ "execution_count": 9, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n", - "spawning module 0\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "==== setting up ezkl ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Time setup: 23.130786180496216 seconds\n", + "==== setting up ezkl ====\n", + "Time setup: 5.9353179931640625 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", "witness result 1 : 14.5\n", - "==== Generating Proof ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "proof: {'instances': [[[2220140900277941808, 6087627386785158829, 13612075262281438935, 1146358877253972239], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [8353883474221858203, 13525658182729692200, 12090214448233933038, 2292375000086969369]]], 'proof': '1bfd4615a43e5f5b1d9901979daa353af7b2a72ea33f3dc84b4ea02f4e4786b10e5187e76253a3d8765645959744e235aae140f5ddd01a93cb1a0b383328ef6d0b29cffbdef390b254520625eb2d0b2e9b534a8c038e7a04c7c4bd2143aa7e562f4aa96e857adc58a9194fb7b1df1016619d7af52c493bbedea1eb4fdbe790721d04724daee78620b578881d4a3ad889603d2e2d30b4924fe6530fddebfb46b0031722d54db63b1a564b37c817f6e9d274c87e4f952139317260881dbff55cce2e2b3ab11685f808c8465a5595669da5d12922f19a6a8e6414467956d9c9419e2d80f529678e314afbe6b81f8a56e4ad4dad7cbb122d460c00c5b936daef606a255c499392ef48e58ff3019140787497dea3b8c255a50726b3eb588c9430bfee29705fcaa377ba68cc7e7b73d5c008e665700fb71d3a2080f18ce394292de25e04f6cf1ad6e2595c9a098da75c2b66957978e6771b21e625e217a6699c0f7f0619a326003ce3b86d7d487d1452708e74c123e7a44e5aecf88433488417604faf1ce8bbb1800c9c0765a10457b763f7b27a91af08f80a12e57a95043d8ae0103b2ca90638ba65426d01884eb17d53e53c826cf61f7783c46d112410ad83366a0a17bec06eccf7f5aecbde6d1563b537c36b66a44bfdb9e55c96be102288b4202e0d7a9b73e65eeb2238b29c2320e2d320108783321df64e98c1e44672774bb4ab0a25f46b3ede97acdcf15adee725e49e8a88888492465a1f243d73f77bb67b221109173a611e1c77c83669104768d797ee81b0573d1f9a47aa49cb35fe2316110cbe6555dd663344a4cc8e9b21dc734a78f6b239dcb1390b9aa9f246023b23110b1772e571d06ef1fb46273007ff93f1ca51e2332cbb9838a1e5f1040fe9ee91071170dea58b0a5963629549ccb7c1f43b1c0829d4ab9b551693c0be011ebdca1c4f5674d75d6b76ca31f676f83ea5a8407f9569ef27093143be22378b67ca8b0cbe6555dd663344a4cc8e9b21dc734a78f6b239dcb1390b9aa9f246023b23110b1772e571d06ef1fb46273007ff93f1ca51e2332cbb9838a1e5f1040fe9ee910a48c375adc56a1fb8b6ce0be2cde574b005f7ed1b93e0dd0b41ddb5808d0be32da9bdaea6ba9317298a4b060343ec253a9cda7b03d54a5d10a1ed40658607011b2f69b768a7a2909c6f93cb6cfe966198eb7a645aad925bd6676661819170670a9e08c83dded7f2791086ee3f410434d599c512ee8945934a6ac86f21f326c90308bcac02a60bdf169f78bf6d3801a1b44fba4fcefd6ff943615de0c0031bc508971dac84897a9d6d450a8dbddc7926fb502995cb46b4d7b6ce8d9d538b62f210771089b3f1f35deffffc2df141a5bec732727902271a775f79b23b41b054721158ec76c1abb05fe754f004c4e0d9378d08617f6200fc435c77818f383294822113c7799e50a34327d1be5a60cc79ab67b6a1c5581e77189b51f1706ddb01c91ac5144315258ac41e39dea223feb8c2888c8b8480ec86a675a5dc05825c13da1e8c2e72c7ff23962dfd3b4e2de6edc3c0ae25497359a952b02ed217faa4cfcc083e95d29dda009ff6cf59a4a15cc45714a52757f7ce42657eef84933ff27b302e0ba1ec4ee361f2f069d1d663e83fc9f0d6253507621c2a409a7a0d594bd873066a55725792263ec7540b2e3b3c10cb69829afc0fcb312886e77fd010dc5d7d21f1cca716d914e275feefb19ae1b02bd8f2a9aea3888d89ca5d2b45f0a960dd2257cf6a12d41d3e30df02d6882d34419786d4738b3e69a6b40e4cef353dc8da0f70159057923fe126ecda13739e9dc7e6b014b84a5e8a376d8d55d9052996b320f7e4b50ddcde8a6032b69fb7a8f0a8d916f16ad527cef2a12e35860e1ef9460c84f3059d530ff8dde5a5f417e400a78b3cadf363333c167a476fe47ffb517022c94da99610308ec1a9af5aa70ea13c5022ac669902f1df18060b03aa94db1829d26d1aecea05812b47c09d48c8119b061f1b7a5fd2899d052e9698fd70817f14b9e1026a7a6e479a74a5c40153e3b73bdf139083cc312be1904f8abff0070b305206975d0edc637e4c02655e02ad6a8db5de47a51691f746948b3fd32e793f0e6a64f19f75bbb3c6dd6ff4967e5222335fdc0383d1bb0e26935f25c49a01132709faac5bab2a5288fe77eb821af180af241ec7ab0f47c57ea03014d0d0b3400336e14784e22d317d26bcd7f23007bc0c6798ed3c6afb85c26cbe1e759685962ea1cd8f481b53a99ec36a92e0b784d458c09c7961c523adbaf129dc3c9be56c2d138205849f51976e6a9a89b6aeaf6a48e0e80959b6568d90a475ade340f32624cb3bc8e626dbaa92416ed8e43a3bfc252ca5cfa4697e55986fd0b805e86f1009efe551e67d06aa80a7a84551a942b77c39595925ffb2646e9b6241413c1d1719c38b4b974c811f8689296e854cea85463a69d4f2516e2b4e43888bc19f161a2de78a9519a2f500b29102c9cd35ca891cf44b22872f19458caeb40c763302c313fc3e12d71eda23545af6503cb6e9a1a8aaf23f6572e10959eb935e5c5f5c2321ca56ccd5ca9786369595f14a99ec9a75f5581f43708a3cdd7ee314e8348a721a1f5e169f60e774434226d2987c46bf375db328a567243c2ef4d27d72b607282d7bcad1f140807dd56a5d42870ceec7b4e475342b587d68c5b841415440296d2e23fa0c3078563f500f1c602982865c5aa1ffe6b0185834a4129787116c91d800e03c89780c20d99da5f52580663eb7bc75a8be662df0e03d2b779f3d73d08417dd8cb707e44cbeb3366f9a53eaae81533749e233eaed9b470a2e66ec70acf22a75524929b530ec8851e0f06b4807b9541fc8525f2a2fe05f95f104ceaa23d21bfce97bffba1ef63fc1a5eb9a2f448207680fab9379cf44743c52c03293818107361d3e69fddab49a855ef4203b2cc4be452ea82639c76e42b0846fd94abd6c291e6e12f0780014652ef4108909458319744223585f5894209b8df47b374b54273a522c85f86f97d686f60cca1e244e39ca041e4ecd415cc29cceca82c09c8c0fd26c165386764c9095da41ed5cd1e05fb136b70bda16772932687af8bfe6470e4fce7760ac00b360813a63c3810eecbbe9f70ff9597b65f94e36e6e1957feb03ffd3c4ad8bd15b56f656b353ac48c9c5ec8356097e48df07293181db36a2c5000dec0184519bdbd326055e30d49a7fbf7ecc2c0ba63c70ec337113b3bf358d104e02d954ae4ea5060fc0f9be47a1324c5de9736217694846e6e0ad7bcc77a7012d48cfa389298f57dd0bce80b33c6b841ae3672d5b09c9a45ae7638d426a2700000000000000000000000000000000000000000000000000000000000000001caabc209cce19036fff9895db3210905559d96b0933694adee816717d8269c00000000000000000000000000000000000000000000000000000000000000000297c003908a7b3dd1f9277f4acd9e315d9b2ca5546a233786d820086899b91f22632c43bdafbea8542e9328b0cda8889fe6e2bdb40b4154f1bc749862545faa12740ad58278b8b57ce694585c5ab7632e280e4ee7e17047e11881955527f5dfc0f50db76f97ad4927641d0c375147d2aa5822ae2500213ccd5540591d2c6029211b5d53faaf806cc2c58a58f55d43ea16cce6c3108213c48b726ae339d8247022fda1f8847b278127a0f051f9964ccc43480d6faf470206f685b75114d86281e012db2c0f1d54b6cbb3ae812d67b3d97408e7d821ffd57bc70106c30ea67cd172b086e7ea62f1fd4138b98edf4009c0540b383c1565dd35f9f031351886e744e22b84bba26893e2ff6f8d9a6e5aa99ced26192c3b779646f16d290f3b5b7bb36066e163d55b0a61a733cad236337a21bffad8e8924050e9b50464c379682d7090e0921a7da8cbc4d3b6119f502cc7992d3ea421bf271bc414ed60d7be30b905b1be722cc154adc769b30ba750d6c67671c002a29b005a96f25992fdb09ec1e1e27ddb20308981f1a80dcfa822b8b0b18e704c1316f606aa1a30e0d689ff4e4fd2ae51ab0287e55c8d311875b2109ee55005993f53f0f81537fb1da5953daae8116feb29700b4251889ef7219ca5779ed49139cea6cd17653102da0133f6dfca60a7617f316891ebfdc4ad2ab97e24cdc05a6a990cc387492504c5ae057a6b52f19ed459b65f3589226afe774b52cf1ffb07c563adfe1e3fd613f3a0153f1653929a98e2cc01b4664e1cd1550b433c09398d730dd5dbf8fc5ec99e72096cb59bd0afe8e661b3fe290a788367f914a6dd4878d553e41da70af7c397b5f188f54c32922609cee6d1f58c276b9cbbede426dd5418a91536a34ffe2d1a34456a3a2a300adf52d6701eb8e787e48db568e0c4686d7363879227e92185958d2b47847a021256135bab9fa53e859141fbf85f8d76eaf30eb9d7c4568a0fe12b6325fa7ae2d6a6294f4b916cf2820f9eee6a7c40cd117f98718aca327d4a33f4e3c82fb462cb88400804af296e4d3b22e4c835e8e060acc23c8fe66bc4588f27c7fac9b392649de724980540b15e8fd15f298c452374422c0ba06b6d4038a91b6805bb8fc0b9963c2a8c72b793ce9704394aa44becafad3eb97442397ea3cc3bda67751a81f54985ccd5182ce15d0e5603cb77ddeb804def8eae207ef86accb7fbcbdf51b26775d4bdd522118d5250e00429bf7d3de186e19acd4815afbda4274fa586af11fc819d04bde6770a7e9b9a2f2ef8f69025d681dfc2856496b7272a7991810782a42ec915c712ec7abb76530ef05f7cefb7995ca396ccf77a24dc9cbf4b97254063d08f8d03d37e190dee97ee760f23396f91b93209eb08ecea7b5d98e71a13320ed06a7d2d8b7dbe9402012a14a7555c02642f98e252de8c7cf43b59d099cfb27105c90a0f0d5dbbf1b193891564e047eb2be78021cb784484af506449e402020b57d6e90d7a52c735e99a9283613e510467d2262ee6e8afd7b3d7569f148eb28ee5021354a0b44732b8f7771de1d390918d9b89ff009611bc789fea032a22e0c4c1abc66ce5e69380ce5d5ee166196f5567050cbf4452fe63e1193140709c924d4562dcaa1885a0fcabd07274e739ec27e7d55d875b1b4e7e7a9e1dc8371321bec3079f1619212f6872f53728cbc51d68e5899593a6366e04650b1ab5e35f527105c90a0f0d5dbbf1b193891564e047eb2be78021cb784484af506449e4020125cb8d4f9ed00349fbcd587e12702f32ac8e64b26d264c72f7ab96487221d1d100150d065b416a1a2a1c13f72cea1ebd5f747b525085efd6ecd2ddf7b651e5e07d50a166dc64d52ff6765f5fc98e7aa58224247807f59c66b4c278246b9f1b4001d9c8715c4280d1d676208b3199043bd6f92f1f178ce8d1336992d81994e290d667b7ff8e6c437b0a62b8618e2fc035adc0b4a370e9b40176c63a31a5cad3a1bc2e9a08ede6fc14402dbd3be7bbdd510a4032eac5d20f9293a6444c489a2ca09bf9a062c3a34a6ceeea2faa099632a3ec467bf4fd94ebed6be8bc775da0574', 'transcript_type': 'EVM'}\n", - "Time gen prf: 29.44297170639038 seconds\n" + "==== Generating Proof ====\n", + "proof: {'instances': [['d57f47950cdabf2cb79306e0f33e75726a2c2960806e902b0fc88d3ff949a108', '0100000000000000000000000000000000000000000000000000000000000000', '7400000000000000000000000000000000000000000000000000000000000000']], 'proof': '0x11cb77c7722108be5953ca6860f3d54a1d29fc803afb763b4035e1d19c1deb5a088bd83ef7471824b53a6bb594b53338bf74a2e6c23ed96398ce0ae948efc4f111178421bd4b9cef52f49f1334428843cf754066550d7425f281dbce5be35d731f2f20e170c0c6ed65092c6bb6ec72ce8f144f54b08d9d45740cf0e8cfd8f9b32cbe22b735e899fa4d6ad2f0235ce02438df8d09b130113dd22bc7bb050c319703c21a7204d46288c4d1605cacf2b86d83f8ae33e8c43a2d9e78b4192262c6511c95e93e8d23237c4db27d6537c27ee22188414fcf4f8d3292ace2e7a0bc938d21dd83b9a003f979e018dfdde5dba0f0442863159e86988bc676c7760e04bbd716a95401e3d58af0e20ea614c5bb16104a0a4925ae5de30058fa81642399cf311e231b2a6673b5a8917350c80c190cf8bcc3fa4823257f3b89f208a5a160f53a01e12cd90a8e025aea2791d19bb77d4bd40740cb2afd5f93b5e209c71caa43a915c67013248f2346fc8d014737de7c419819f644156933aa551f4275e3472cc825d734560283ac3fe43a163d3fff823db98b59ebca4fab93416a4b2bb87ba14f0b745fad58c922db3a781b0388bde6f6f50c7bb5830df67819d81c22c27f3e6826635726fdabd30d30970d9a77e52e0638018bec04c3e23aacca49b0b7dca54d2adfd271ef4a9b4df049e3c66ff5075b7750a9d0d56a878a6e533f4f1f79dd8e2c9b90d78bcf17ddd2df6655b92ebdfd4ebdc2fc9a018e747a9dc9fa2e6ae91f13cd0026093154fd6f99eaf87248d0db021410f56b57c84b0010b9b894389bd100577c5dc7510b687fd03b40c8718ca1b8a1330daa170d56349c5a79de6d10f90593096b71407e34ff579ee7b86792ea873f58f24933247328a34c3e0d1f911809b4ed29928819ba29f18b7354730bbc961d4207ed82d183ad439242b748c31c12e7983bbddc896649ec62ff24b698915f9110edb90a7b23e26796e658ad311e00577c5dc7510b687fd03b40c8718ca1b8a1330daa170d56349c5a79de6d10f90593096b71407e34ff579ee7b86792ea873f58f24933247328a34c3e0d1f91180c3c9ae94c21b2454d15204d2d3c552ffed9e388b3aa05d986c42a26a4861b1e10c7a75a29e2510c79805e73656e8a7a51bf41ad9b5573eeee6f541328bb7eca0b07ffa4623216a629dcb9cb29f538e24c15bf48d0de8734ec2c4286646342af13700248b2b2468d0776729cdf232c1b3d6267ebbcd28f21b5bc2fb77167eaa00b07ffa4623216a629dcb9cb29f538e24c15bf48d0de8734ec2c4286646342af13700248b2b2468d0776729cdf232c1b3d6267ebbcd28f21b5bc2fb77167eaa0207525ba491480532f08d482673efe7f2f59e5303938d1d6f2a68f3f6776ae7917709c90a917a15dc19f70c3e8ffcdc1ff189bedd6b5f809172bb6cb1351e39710874401852d7116a02620b52e907a4e80ddbff005eb0f31e70705a4859841f3137ed181708b8e7d6d40a46af0712ff97a3f1bae4aa3c79c9b798b982a2ee83c1719c94c63c7f5de2d108a4f887adf6a8c82d846ec6259b8aa3ab26d546e68eb2fbd442c451df957d6198f7b065203a9e822cbd2832582ca0f9808b7224e2aa4150293f632418b3f3563c4a3884783a7184c43b241c5baf8aa803aa563eece030017977335552ce4ea7697aa4c7b99ac88084ffba220469ecf2ca0dde1f54b9e0a05116615a08dc9cfca91a698dd703f7f741aa8a1fa2addb48537f742ac750b083af87ff6f87550a56cf669aeb74fcfb34a4655eceaa31d3b4764cf99f2572e1fd6048f657203f4984e02f1fb7be61639ace1bb6df16a71342a831facaab9c210625b106a0c03574906db33afc67ae742959e88b6b047ee3fe04c950bb8e9310d5d2b8f5811c3a3c53b1eb94ced464954445a236f2c0ff1825a06c782cf871a2c72ccf6f2c0c99086910e1cd313a9f8151c7dcf71151cd00cf7d63c4465e3a42d9b35d50e2452c825de06d1accf7809c7b2a1c16253188ec17f95c63eef91ec1b4590c302810a9f11fa81aa42cf0e752a5f4a2ef98d6b492e9a55c5bb89a4ff1e028a798a6710422e0fe662a2aaedc6be86d4b267ea7552d3beafa81cca4c641a53efed7cd65b094958dfecdd65d80571a66a26180bf302df9365f836ecc2e21c65c4222527ce65b9bd1ce2b652e71f939dc1a7586c309a32485f16318998c30c75762b4054c28f0283aad26b349d20d93219b46e855f3faf7d9bd7ae284c6b053c47bec809ff9e2d1c04427c0f35c8821a79e6446da6d43f2ddfcaf73491171129c540ef7aa75d8e27e7b67238378f0a9c4a59a25ac8d3584c3e2ac3968bee012ac055a31c34a18431ec0d8cd0c3c79dde659c74bc4a0dc874ee8b87671c6a184344315cbd71d1c830bbb6ecc9aaee2325efc310deeb24e82e5a1a150105640cf18086920e7e1cae344af73688d3f4c2772fdb38f2b547bc402beb2bebff56182ce9b9fb550fbf59a06630d4f0207caa7ab595de2e43e6b2d91f59d46fd26d107670272ff3b0ba4c37b0fac872da6b4aaae71520296b36d32e61c1dd8c1757130eb2a1488f7ddb7cd0f8d24379befa6a48af6bfb724e5cf99d3d3f02b31aae2636316ab1a1e6676a5c37d59984330472c117e978bbc38aa2135db636f43ce20d6dc24b3176688738e8c86edf370334b961ada79faa980e31e106f4329860bc2d935fd2be08ec9228801cccd9815cf707e91aba24e9e8d5356518d4c8877b362ab2e0004c9625079c0edc751d1429fd676781722a0da89b4dec7a4ab50df835200ceaefbef8e7287b4ceeebe5e2fc872d6f3730cd99f18b3f5c23724eb574141b559afe3efc1da91b4263173f57ff2d7709ea69de0d8445427799400a85351604276f06193d00afed0bb08b8c5866696b20fa256ca7996db7b793975fdd93c824a040783b6a570b57dcde15ebf8bef4c97f1846c1654125ba04fe123977b3e7222b5dc2d8da5761615e145b46e67f71345a8dc881d38dee73fd644d53c766461a4c620d0480b018c33d5d78f1cbe988ea90508f21d5acbf277c328056a7c634057563625e005120c350b618ee0c77a78e98f40fd97c1450032ce80986c298112ac68b670beb37d0e914e86b40f99a8f38f3d118b4dbed5f4201426faa4eb2a323af991ae4f818a469158159956bc2cca9bee15cff8ce879852795f0bf3bf42221cac3e2dc19fa15645e8c42a1cc6c1699f2c250883af54bb75ccabcca5fa1640edeb61b41ab93fe7538aa5be0feac1cc49515bb69e8f1897d26e21e18d34d2f22ee18f0de78771b819b6dbc641d20c7ba2b6d27ff115709ec093c48cc0ba10a0460439ad9dba3c750c874d9f1b92f2241c4784dbb76aa70169f2ccd88a4969f071fb0b0cf9c0cc4646a5cc31e6eb5135d9f2a8c21f2c1d336d81884629bf1da10578a7d5a35f33957e8c3960dbe8fc842e09ad0eba2be21ed84f934be5c66472768172285d5f3920c8f691b84889fc554183bbb7209150ae0339238128df81718d5a80092a5ba0bacc38f685df763384bd24607508a9136923cc84c4a53ac1f0eb2c9cd836b87cc829c92b21c12e4cac95221220b84044f43fe0b4e1a56504a2bc8c881addcb02916504f485d6dc3d909ecff131c6447735affbbe4ab4b7821187900feaa1af6ee7ed00a8b33361d1a726a855fab23c9ee1e2b679a75d75d1e1e87212a1f2f9ec4f9da76250cff080cac1b0dce4437eb19f90adf6b5324bbf719c9eb38d4798d657cc8e5a0771a787dde614b449e49927cc09b6b6683bf95c619922dead7bbfa86bcbcff057023d121152fa7991370647220cd2beef2b82b9117cc07966b38024a5b8fe4b73995fa2d0f5ddd2c9ff5b29fd93db6f322eade82000000000000000000000000000000000000000000000000000000000000000000e588e4f2e72710557881077dc43d96bae93e0307e94f4b3cab6db0b6ba58f600000000000000000000000000000000000000000000000000000000000000001a964d6ec4a61699fd2b39591384f4589626fd8613a3ae2ffe6e30ba2adb82b9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008503f9193ec094f20ec16560e3369505c5cc2e082357e4f0d0de647d4cbd4db0000000000000000000000000000000000000000000000000000000000000000088161976643d06d0c2e799ad5199aef2dbd6bccb426127f4bff3c03f4b767b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000221b0e882e384750aae98bd3566947f908dec2071ad0dc85220f24ae17baa4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c51963eff481599437e213a62c7c63c82395563a9b60ac7f4845ea71ac25e8e2424a287727850f519ff4cc5acb3c4dd342bb9e359ea9e68c37d78592062b9320000000000000000000000000000000000000000000000000000000000000000103f85f6174227c81e59da041d187276df8d619e075de89b741ed6a09631d5ec00000000000000000000000000000000000000000000000000000000000000000cad3cb19d392a96a531be658cce5c5ca0827c61e1de97e5b24b31e02049bb810095ac68d38da3a6445e562963c8fdefd4fee01a9bf54bd6afc1af4af3c4ab112e10f9a23bf8236170303d838020df6d4171b206c42f895c6d5a6b363ea05ad5145d7107e09c1754fbc68afb11018b02483bb001fb1f6d17040242a310b404fb01611f1a4a6468c33d14bbd9bad7077ae9671fa4c2f0ba976e36edb224929e8b2a4666cb0e09a1218f79510d1344c836b06f0976f3842e4cc613e313c3d8164517562577045c83184aaffe79e3ed3d4ba3431189ea3d73ebab17aa82167b93732e3e44bea3fa9ec447d440d86a2bc64c28e41998cbdea7e12193442ae2f3e9450275a5136e1bb6826401edf450cf2f2fea7c453c3a7386a885df8acfc972ce462ffdb6629a11082e471b18e166423557584c88fc54c9728bba990c24d72e7300272d58b3c1dbfec82024c93f70fe2b561f436610e84c01a134069d9e520cde1c207351a12b8d682ad0e2e54edb9bc458cabe02be288c5a3fd11b6a5f7d5957ed0eb24dd87a06e826c249d1dce08f51fedd149aebe36ce343b4f84381e30204300605c5842b0ef7af8fee98d0cd4d4090b4394ff4a2f1fd73a09372f78fba95062f58338e8d6835b62331f22b6f8521b88b69bf2c85029e50c504d24ce12cdebf02dbfaf4f754315cae011e4588ea162d8a0d279ac94658d9da61a1b9a38d5d281bcd960ffe563c3344ef0636371b200a6b088e68d3c64709e9c30343fbc482bb029d492011df4450bc157c109a3d6249ca94e19252d7f7b6a82210272627152b2a9ab27ef5fdfebf575b21b031b1ad5b4daf91a7fd8c8e14b17bfddd9df6e9e324b32c8249b6189f5aaae3ac004bd91d9b62e02e1f9ed96522281ef95dea6bbf16e697da4089e5ddf3c4fdc8dbccd6ae6d9ca7112f52086d9ac4fab58c60bc602b11b0af539587448b8b39dbd346a04bf60ddf05f9b7e0b199a5032d96e33a152bcfbc14f65eeedc85027a7f8cf3f07f55a3099a84daa61dd3849f52ad2a738516c20cdb6131b659a16d30d54e050ee52f0e016d84a6d70c44d7fa59e0aeaeee1211e0e6aabfb85a25ed5449c8d12e1e2ab1e322ad3b0d3626213fda8d9e27b3273da594ef9575bf69a5e267456143b06c2cda2fd1d3db9474ad9e75d823d38d17315904afa32d4f645974f5a73f7e2bdcc4c2c5466dd9336c4786f447acb052176bc016f5780e7faa810b63c8b46d91c5c1c0859759e875f14fcd0d26cc6aa11257b24466f82f787d67d4e3d50a2ce8a01a97e44eecb03ccd5d6facf1ab70311f469578b7cc6668981120a06a561f5244f428bb9a01ecf1880a4cf726c358f303937974548cdd3f0f9f5c749d43f7196620e8f4d1212eb3e9038c2adbb8236a128643be8b018e93cc95dc6209888a228f3a274825c625bf4aee8245e217c70817315904afa32d4f645974f5a73f7e2bdcc4c2c5466dd9336c4786f447acb052183498d372faf5f80cad2445d04eed05a5d542a5de5bf04180770f96c1d54ddc1cb4a833974b8ebca272625f8e2a9c3c5d044f6ed686d179c5d4370d80166a91085460c8a68d7183d1761c7cdaf52765da588d99065d7b32aa0e86fbdd787cf5038a2dc27b8850aee3774847c2167d27d2239eaa19e03434462e224ed7d3ef110311a6b5de23ed4df0264a5cc61cee069d3257b09845d34017670da19f76ec7a2234fcfaa8fed24e8891acdc7e0c319f63b57b45f6b2788b71c38ca0b00b051d305bc5c670134a67f0d6e47c4a99050226b8775b63a77561ef2d909dee9cbeb816d14b1de87f9628b3ddbcf98973fd60c60203976e4b4f1d918588f786400f8b2234fcfaa8fed24e8891acdc7e0c319f63b57b45f6b2788b71c38ca0b00b051d1cc1c1764b87c1b1122a8f87b029279c331ee0b34e2362973a63d4a8e318bb8127dee75825ec2ace190bc80f31b67e7f4694df230e4ce9df3d2df8304395c2b81cf5101db3e119bdc848cdba9755f9d48867d0fb964b2e70825ae46362b984f21d8dfbbaa5c61bad2e6c0cd03ce1f3828905eb03f4dba85c3df60ca29a6669b3', 'transcript_type': 'EVM'}\n", + "Time gen prf: 7.377405881881714 seconds\n" ] } ], @@ -256,14 +243,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Verifier gets result: 14.5\n" + "Verifier gets result: [14.5]\n" ] } ], diff --git a/examples/pvariance/pvariance.ipynb b/examples/pvariance/pvariance.ipynb index 3273b72..0119bd7 100644 --- a/examples/pvariance/pvariance.ipynb +++ b/examples/pvariance/pvariance.ipynb @@ -9,7 +9,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: ezkl==7.0.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (7.0.0)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (9.1.0)\n", "Requirement already satisfied: torch in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", "Requirement already satisfied: requests in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", "Requirement already satisfied: scipy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", @@ -170,13 +170,30 @@ "execution_count": 8, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\n", + " <------------- Numerical Fidelity Report (input_scale: 2, param_scale: 2, scale_input_multiplier: 1) ------------->\n", + "\n", + "+-------------+--------------+------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| mean_error | median_error | max_error | min_error | mean_abs_error | median_abs_error | max_abs_error | min_abs_error | mean_squared_error | mean_percent_error | mean_abs_percent_error |\n", + "+-------------+--------------+------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| 0.059547424 | 0.11909485 | 0.11909485 | 0 | 0.059547424 | 0.11909485 | 0.11909485 | 0 | 0.0070917914 | 0.0002810576 | 0.0002810576 |\n", + "+-------------+--------------+------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "\n", + "\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "==== Generate & Calibrate Setting ====\n", "scale: [2]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":2,\"param_scale\":2,\"scale_rebase_multiplier\":10,\"lookup_range\":[-20332,8],\"logrows\":15,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":14432,\"total_assignments\":1519,\"total_const_size\":8,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,2],\"model_input_scales\":[2],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]],\"elgamal\":[0,[0]]},\"required_lookups\":[\"Abs\",{\"GreaterThan\":{\"a\":0.0}}],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" + "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":2,\"param_scale\":2,\"scale_rebase_multiplier\":1,\"lookup_range\":[-5082,2],\"logrows\":14,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\",\"div_rebasing\":false,\"rebase_frac_zero_constants\":false,\"check_mode\":\"UNSAFE\"},\"num_rows\":14432,\"total_assignments\":2722,\"total_const_size\":309,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,2],\"model_input_scales\":[2],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]]},\"required_lookups\":[{\"GreaterThan\":{\"a\":0.0}},\"Abs\"],\"required_range_checks\":[[-2,2]],\"check_mode\":\"UNSAFE\",\"version\":\"9.1.0\",\"num_blinding_factors\":null,\"timestamp\":1709450996625}\n" ] } ], @@ -192,55 +209,19 @@ "execution_count": 9, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "==== setting up ezkl ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Time setup: 3.3062751293182373 seconds\n", + "==== setting up ezkl ====\n", + "Time setup: 1.6004958152770996 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", "witness result 1 : 211.75\n", - "==== Generating Proof ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "proof: {'instances': [[[12907834141446617622, 16863260785082668294, 2215826187815521673, 2191547160659437828], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [988086122984763008, 8331390676852675036, 9456440076381036992, 2639995154681636326]]], 'proof': '24f2d9ecff9590417fe2e004c1c21db56de7197ff923baa3d054c360f7ae851f24c5cc1f1d3707287347c09c857f49fcdf4a133b0d6c1df5eca77d902fd5565c0f68995066d477ed5536e8f246ea6b2a88019052148fcfbccdedde7c33fb347a049b765d9d81f1b9e97f4baca294ec4deae3609740a69a7fa446cd8d620a079114e0df88e451770e276f93b82695838039558f6da44fd328e044609aa0fc6b5b251c1ba30bb314b5a4e72a008c1743f85121f2bb42f24434ad4152e51ab2a6a82832a4e26c01491e455d5c4e4a12d54d53bd838072ac4a7fa15ee519bee95c7627ff32f29c22ac271b4a88bae110c357e8ab914bfac66e734c6e16ea5942e26f2fc05d77a750498be4c315b8b6d5effb2710bd12c9ce276503e91b7e45909e9c1e0102f9912c580d4a315256c8a03227db3c99736a13c862fe27c3b6afeda62517deb231dc4ae24e84c3b8819e8fd295401bff319ca0383603ff3cac53b85ebd27cea9084fed80484421934bcc6724a30058963ee5414c3344174a6e57fadf6b068eb7427394755358f78949c6c65910ad7a1fbcfb3765432e7f079644fe0037054ebc56738c1c50f20ed454d6abbb63394622dfc1d383ba328df56e76aea4bf2b4a957c8b7314faf03d531213fed955317058c9fea68adf4f8f30d4089f7942215471e6df7f82361a439470570dcc7bd50af59b2817b83f0400b51bde081d250f353fb4ebc6cb05d748e4283d4a53204402b52438bc38f3f455fa37aa516bd02d673ceae7e67e0176d3dedcd3b1606af8ee485c6521a0f918fe5fb8fcb407d900577c5dc7510b687fd03b40c8718ca1b8a1330daa170d56349c5a79de6d10f90593096b71407e34ff579ee7b86792ea873f58f24933247328a34c3e0d1f9118281d6bf0c4f7413fe786410bd96d5eb27b4eebd12a00163fb19e3cc763f6af1012b5c71136c79acde2997608774ea110d86bce04e23a5c06259bc055726a49f500577c5dc7510b687fd03b40c8718ca1b8a1330daa170d56349c5a79de6d10f90593096b71407e34ff579ee7b86792ea873f58f24933247328a34c3e0d1f91180ebaf320c6e4cb0349ecc6f755cc4d09e29dd54ff3b3d5acc6dc046e25f2e30a215d3405ad6dcab3e31140e93dcc2d2ecc1c81fa8e1a59dafc94d4a8a2ba51a61cdf653952b7dd582f428847ea3c9a9ffedc3f5f20c4418cb81ecc46ab4265b10b925fb9a12930154cf68bccf4757acfd75905b9760e0ca37e764c2c17101d042b7174e34e4d6c2b24666998647b8ddc9e3bd21042c2235a79f90aedf5385e88121bec862fb126e43470f81e0a9e009af65316d4ff1fb80bec2b2f589cade022100c92e5daf44ff9bfab412dfe45fbb89c9ffb4c9d418b35bcb88ecb2ea70203064ed8204d44db76874b04e4fb15e272c020b138f99385b55f13770498fea38e1430577e1fd800d732b2a37e9ad8fdf363e6734536bb47c360f5745f471764e11f11c7b44ed8e46d8835f88d8374ee3d90fcbdbd20e75df15dd571806f7291c11a2a3e8966a0a7d8de98427a29a7a8f6c87ebac59c124d1520befcb6a52234ac15ef63448f24141ba8b958efad9cc4961663e1bdaee1efc3b3f99d370277ebd3037cb85e33c0a3592108fa4a29f15b5e74a7df5a91c7c4f6ac6589693dd18d8e236adf5d80ad4982c563a77a9082b0122aa5665ef8fca57f2e2828520efba6f416998ce4ecb14e2a94e55585e0f5751d06d821aebee7d336eedfc3d514315c7b0d6ada8705b5e76f4050a9b6ffa4eceb1f61567d963ec8c04d30cf3b2722d8722820e5847b555bc801f8c37d2c45ef180849506b6d7d961504850a9c86913c1f241650e170afe4e7b95104da364c082e2ed777113775e0ea2039fac21446e2e4024e7b037844f7232a9a167971c21bf2a3e61d4b632b0112ee899ce60f34660f0ada87a47fe7483ec9e3ffd02d22343469a17d4e572654c5f77e29a29c26385404f4ebc6991454c401a99902621ed674ab67819ba388f5c721367c503f1553ee283da0f53939e28ccf8aac6bc5d95e7c977330c0aca0fa7825014a1c2930ce840d3fc789c53a52d8752afa747aebc82c93c5d534f531e4d6bae7dde89fd002f41409a8b7b94c99ce6132c2fb583a567a9ea2a426caf7626bfee99e0ff19232f31d0425f2587e815391b3a06c9863eb560a6302d731733973f4ddc1000ffa8a4e19ebe44e847d1df3703737e941c4e4ed4b11632d142b2b393b268b244b3ff7260c0b42a5835d6615d2658ebf42040504f047cf243effd79bb2aa5c97a6fcbe570f05b257d30641e278c303e835d6546f37542e5f376b4b8a5678d1fb32c9e02b11fdfc1607b775eba6826b412221f3e80c0024a32498ec03a7478994fe7fbc3d10a6d615885bfb56a3cb6f9a3f40610b11db9d41ed3d6ee1f426766ab0cc7cdc1200a059ee2d8528c653eb4b9529d9d0e56c179144c84a84962635dfd9d3b2502ecd597eda448164a8e20dca4ac869d501bbff4adfb8e50c93ec29df5e61758a017c74ca4363fd408ac5ccd02bb9baaf350c58e0bd8b32fff5e1f691783da701114ca8a740b881ac59549af1119a754b36af203ada187af5a44d3fa06cc0b3bd1fb9d54a23642b3061b880be7dd6dfc3bd40ab48fc1c05978631aa8cc49e86dc09a2458602145ccbceea0e63393b97fe7ea3db4bab408da17781e1e11acb98692760fd3b91a838cacfedfb82d716185cb7b73a560e2bc3a7636107f9c2eb6a402c7120e86440071fa067f0721d91a97787da0de2a7edf3eda45bcddaff61af771295d9c7174c9258e07abea52c31fa3e65acf8c876dbc73a0b32e1c08313e750166ea8a4ef0de2ba68ca15afc3a1c9dda391dd9cf6a778347e4703a4b2214d9c0e1618ac7161f4b84fe9cf68d34be99d61d96e04902f41efa72769f3697503fd1530b12c8b5f8553985f70c4c34d7a2ceb287e95d960ac79daae8a4367fd859f0febc4c135e9fad10b235b0919c8ae17625c3d3eb33897accda2fb3d373cb75618f8724a7f6c875b7bdeba569d5e8e8562cdc64b69d3627a2f5d0e7da4d2077e0eebe0177e464b6089e27a287bfef469086f93255db6b2e006d64d3abda1bfca0c668947a5b40bbbb8720a601b0c971f281eb90a4d1f34490484ec7dffdd747514f0dab2cb95bbf18b7372485845b149dcaa10d89c3a04ee914efbfad8d752fc05198edd7deb02ba907652ba2676354fba824cf761c37a6c0fffd4b071841aaf1a8f50af47c3be15b4eea7d6c9266a4443a9933eec2d21e09f9c18cf43c0d20b0e75b9960294f48f9a02f5cf6cfb78a0d024bac48d3cbcfbb42dbb04e18f29f000000000000000000000000000000000000000000000000000000000000000001ed90cef527e8093b226acf47921ca414bc831b9a25097f5d673d7aa0b41e26300000000000000000000000000000000000000000000000000000000000000002cf98d8a403f7b0e7d9f745250b5e0203e99908f65decb466b261ce6627cd3582a72b6580e99a1f5238e6f632b75e3f1fdb42d86ea9894c502ea29bfe9f9453200dbb8d0470332561aaf347fb84902df43011ef7796566e0567b925634f184a92831cfba236996915d6ad2b779459b124ccf18d115af3cdbe74cb7e1d987e0df284f04bb66c59a862e62b77fb8e6c0c7bc00b50b405d1fbffbd5ed7c98e2de6a1101071594dbd3f1d1be833374313de41fb7558df5e75303ef4b79644fd521641f0387539be0d37908aaace486bb2a61cf1084edfa3b2bfc9c8d1c0aaf826778033e9380647a9edee57131745c7d3a4e06d9c7365195eed8a08ee03828b9b87a152b717b3a189e46d0c35a5649b4ee9597fd63c2348560a0384026986f6321b820c1baf4153d29395a5c8207b56a36cb2dc975739881c2d8007bbfd403999fbd1fbd8c9674cd586534302e0bae73229f364e7bf11ea63a5e01e1023d97cde91327e9f38495119dfc16491ccd3a5bb0774ab91fa04829783cde43bbdd6de517671f8754539664559dca267c629aa2a8b79de35c863c3e7d4ef421ffb628d9ede51ff400c708174d86a113a0b82c326c68f097df374ff60e22ffedf090758bbc33249ea6a770659d76d13f268933d1f5cf30470c8b5e2b6752a1596601f451de4a2043a426caa48608793d8bd59f3ebf668c273f55c18623dde14432d5909607e726fc2547df44e9a806f34b27bfee3fc06bc5e1ead40b446e47451ddf1659a967049c1aa13040bbd260c3e4b03c2df74c5e75d912e0567bf1c5866bf7ddad304529c7945c68e8da71e7b5582d9f2f2ddbf0e3f53643c490348d0b530bd550737313e5eaf175d71e34d7ad590e857a0ea00291e7f14ca5edfb4a6ccbb8f4ba0b2d2e3a988a99956faf0aa09e8baceb9a701acd37ceb7d155407cb226f655021c492c60999f8a6ac7108a488369ebc70d273b2831618703d0cef3122138e468ca261844218d92be32bc49c6c531df53adf79201f921664b8f25f7cf9616d0a52ac81e130719a7b814507a6ddd88da3aa4b3af9fcf5ddbe3d9cc705f6f47bec6b58a07cc1e6459c7f3bbeb4b76535c57590de9be3bcf9d80c7b68bd74bdf2b7fceae1d75928fa849dcfdbbe7f41d52c5575d11b548d0bd44248a41f71cdac9e0fbfa17b3004ca64b393e8dfe00c967bc27b3877b44aad2156a70fedcf0d77abeea590e34343ac220a76b0542900a5e3e55ad6c36e884f02c86afa37f34e1766fb0cf182d9c4bbf488e44bc7b0de0864e2ef8d7a37e0a0fa556c6ab1323b918fd92a7196b767327a05741c1c7bac054892d6fb47747d73555a276debcc491d60f38930b2c63a5f025e30956b17b7586af83e8996d189e05614258227fae5e5f9a7b6519833ad6c87ed9e204d36125ccdd97e3fd8c13dfeebc04e60986c48f46eba3420f37a5df864e162a8083ada72af9a13a6c3072962f98b2f1706273037c7d94f42fa7bcd56d6fe513d973639415a2ca9b695a6fd8431e7aaa56b8d5e36b7e197420cdd45b6af454cbced4cf3f62466adb3b422b673d2a1227f4cb58395169206026788e714246741783afcf9372072964376b41f7477f04735f7aa5d83dbb14471b360462a9adec076e3b0b97075cef6aac582e69a1d102fab47ab3767d832d15249b3ed78f06db609814c1ee4ea55a7582ff997cb1f6eb2e66654a34d6fbbae00f37a5df864e162a8083ada72af9a13a6c3072962f98b2f1706273037c7d94f4259ec66912eaafa9bd95e1e7c2ccfb62eed700d72ca4b9e1e7e7f323b44a17dc292df4f75724e6cc39a6f7f7f16285bf252d0c6a77838e87a9042f19cbff6f5b2da70ed12f7f842e25e64851a7833068da871609501d9bfcecc03fe549371a481fa0502fc89a8e6e79d1167df556391a9330db4983284a3a51f24bae58d263161b8dbaa1ae4c0f2736bdf8a244824e69db8fc1b8f964ee8970dec9e052f4f4c12a12a5f5534f7cb2807a53079396d06b907e666b7d3ad3e8c0e03293a9e3c69d1679dc322ee3c85e45240e46c9332319cf091b096e71623d68d2808b499b6d06', 'transcript_type': 'EVM'}\n", - "Time gen prf: 4.4941089153289795 seconds\n" + "==== Generating Proof ====\n", + "proof: {'instances': [['31220e5513f6e9b7d0f59d8f019cd197642a431b2136f0311abf6046c9006227', '0100000000000000000000000000000000000000000000000000000000000000', '4f03000000000000000000000000000000000000000000000000000000000000']], 'proof': '0x2d8d064eb8e2eb084c475891e8c41d7c057058c266a6bba8724079de44160a580e5cd9962476c2fcce13d9bcc82db1905f0d869e6f229d48c8bf2efb7fb0a30506e37846b512440d19c060092ab5b6149cf97bdc9e78377577e9b4ba89d7998e06eea4d5c70e86e52389dd96957430f89159424359711f8d48d65df5ee39af262a392fde5feba8190fc2cba46548bf36550f3772e7ea206ff0f93dcdbf5351a80077fffb3264742c7044175527ed75b433706ea0a7cecb1566035af4a1d63fba2a2d5ba76d3a60258143cb909c1d75475221d66eab0b5905e8483605f43e287703d5e4a0ccf60896f2453e31b5c26179d70566a07fe58480c4712457513c4dc11b19a661f93a7c49d75779b9f653de3d0ff2282981fb9e894229a1bd6ddb03c903a0431d77d161ff37087ae85bbb8263d5c9b4bf9de266bd917e4f29ed0f8ac2084baeabd1657e9e5b0294b0a67f1ec8508540bbff3c5bd0380999a5cb6be5d8300bb0f18354f9a9c073711594b5d127e0c5a8b54351f27e5e2d49b0336673de06d504f22abdd92cfef58ba3dd91d0b79b1e80e247a89405d43ff5d54fdc185d0af6f6a85606fa747a04b3fd18414fa081b19544d0938eb282ffd73e3138881929b785c6438d2c25533cfb489d3a95b6489bccc1ab72e5d764098444e33dae9223239d18666cf9589e520a01753070d99f510fd6a52d94e8cbff23bb2f3e90ee23b4c70eb9d2cc2f72c8e68224902959c48a96b55819dbc3ebe5cc57b9c1af1a12d353b3f1f8f776b060f02881bcd4c039c0b66e1ac08e3d65c8279e94f2dce0105dade3188d564c2098eec6848b2bb72cc74b2de6f4966517af714da24f2cca2e415654867b72c619f9d6e70bfb58fccd62b25b201f8d4bff39a0921a024bf7090ff4a98df10b9d2cdc9066cebe5c2df6322ef595dfe3cf08892aaaf49bbd920425383c5983a87b273825e40ab4a5d53d97c1ba5757f2abc6ceeefe85492b04105dade3188d564c2098eec6848b2bb72cc74b2de6f4966517af714da24f2cca2e415654867b72c619f9d6e70bfb58fccd62b25b201f8d4bff39a0921a024bf7115478743ca949680bee8c2e2a8942911176755b39f8e63efcba876659d119df23bb25125bf2b4c56985b2f3c4f54c0130a5060e650dcf6bc6ab5cd08f3ca2e62955882248dfdf8582188055c89d887d8edd98b4f2dc3b3d86e7e063c912f2c315e5ce320007f82bdc7ebe84b498513476fa56af5ec852e8f27fa8e88f07d7632955882248dfdf8582188055c89d887d8edd98b4f2dc3b3d86e7e063c912f2c315e5ce320007f82bdc7ebe84b498513476fa56af5ec852e8f27fa8e88f07d7630477b5e61c6ea82afa005462c55e4522109b1fa1acdc74ef8888851a0774227104721b2b9bdd105151933ecdb68594e8996f94a114e8b0c520eba581d4095f681ad2dcd68173cf2bfc419ec0839fc68918af8e519b60adb9fa8731ee02fd23711e684366ebe81b52d346f3399ccfd6b9329e9b527cccc737f460e6147e1b46f817454642a63660ca5756818e5ac6c612d05926645444ef87048ff76531d1d30918bfe9576e36a08d3815ca68639f0ff44f8da71e6198a786ab3fc6684be436e214b146635879438e867c3795c9857dc171f4adba94ebf1ac9f66a1e8789d1a7a238981380f2bc80b144e0489415feed4da7645cd26b9a7698a15c8a77d249e2318baac78733fdb4e899169d33ae17ea13c5585755be0d746ae608098793c78cc10b6be4904a8ba5c968ab62af359daac1cf60a4fbec1e8b790270af73f45288a13f8dd677b9d87e7ed26664cecf4639d2697a358af31ab0f83ab9943fa355a87302b988df1ac62717f062c733c47d89f201e5b16c891946408ae5ae6184c1cbf050dc97c7b3c0d0f9a10b898bb45bbaf6dc1dba7f18a46e57da8b3720f64ff4a1c1f7eee3e4c2f22bcf2a5a5573d6289baab832d2a6c0ad58274dfa930ba4a7507a374062b50fd7023462a952ddbf3f3a9f766b60a2549ed5c65fd71d52ffff326f1fac4ce043862411ce069dcb6f0cea67fcdf1fa50b26e5645ea127dda3a132fc4ed35bab1529788485ab5520b478317899a611f2d5c71c6f8757f99803916055a8104107fdeccd7f537ce6009cf4746b5135eca895711ec8dcd64270d803a2925a58c02a4685b0507aacb6513d9945d90fc80e4fb17416fdff4ad666cabdc174796043be354f7abd74238207e08833a0877bdc1d06ffb45b49d00cc580f2c1f7bfe68716bd9ea3eea6dc63c7cd5609eca5fb50534717eab4b906114dea46223e9e8eeefcc954fc4e16fdbbdde51929990d5b992f3b918b3514c9ed0ec360925bbff60bceeb76991b6b9096c275db22e04d6f08d27cfb72d077251b1b592141c3a1b01db104e753c9a614a6d65ed83a08e26534134cf4cfe1778e0f89de910152139c06f184fe0d5c70a41fd5e46de2ea64c901dc9ad4533f2c3c7c02d40bf00f6ce625cf57636d11a473151b22fb754125beb10aa427ea94149078dcf0cca05d74e8557d5524b7da8ae8cab3b711f069015774bf3db8aba7366fc1bf550b21281754444f80c4f41e4d65526ba8df11ecb98262eef1fd8c60129b27ce11d572b259bbee8cb211f46c90390ebb24a48f3ebbaa75206b38162096f2b586fb3c91a4bc64d3056d446a461ed89a1efa877aaef06483710621d57b93585ab308c0128802bcba81eddd887c70f2d52cf6728458cbc05e40d142074e3302fc7aea56e1bf92140e9f8b0f2486a5340d4e806b6c5e0b4044d1b088476a62af3c60feee92b0ceb5b58bf521b81a809e481adb08090652485b4ebc6215d0048c36bdfd9391996993fabfefe0f76c8aa01d9ed8e3fb78380a0a088bae78e203821a973de8e04d18a4f53f9f981d13c05d02a37179454bfb292e0e4c67a0888568c0b166ec804f2b49bbdaa98e022dd0dfd08da7746de6482a03044cdc7b20d15682f95d10b1de82dcd09862e997209d000a519cfbac2fe5a93006e2ed45cb594bcbecf93c6035aa928c1f08229ad68de4f541740982a37e03135a3e9d74286de96e7f5c3b010b67b6dfb549b68354f2787d12d99dccb609672005a132c4083ccae440457160c5bc402607991aff83ebb002fde673b2fff1a841abe80d8201fd4876f32301d2de38d00f8dd2fb8defd445baf8a54099d08d76d455182b75c1e7d3e7db4c60910d0eb6d6ffc8170d3eaee10a32d335521dbd36dea41a1cb4f82a2ac9f305f250b37eab4ef527cdaea0ab20baf53af3761c15959b8c3ed5736aafa0a2359c9de1191d0860192e401375b15f60a0a83d94e4fc71b0161b3b1541b00ef17dfad722bd718ee73c5eff8fc952cea1cab4161a02efac579c862f91d853662da634727143049dcc76f8feab91a345bfd8bfc70e546314933936371338f23d0f8e566c00397bdce32c11917b2cb9c30156417fbde9b3478906325a0fd52998fe826d37c1a36aa55322d0611e9664a2ae600fd7aca9c747dc9de4f1338c3c7b6ec46387b2ea1a7af2c3c9f4e040e2047777805a472ed38de07461eac1aed3152ba8ab01616f5e15cf53fe9794944a4842872744514ece487756cbea7deab3f485c5c3c850e44d650847b19658681d9e33f91672596850bdc096246156e6fbc46cb99983f0997143de3771cb7b72ab3f7c79eabfb782292dee99cfc9bdad651ee6108eb1c2617c52bb3e530d9ae6755290a99956df0ab9e6e1b4d702f1784fa44e6c191021e6b763c2e5b4959e6a201fad02ec63e2ec775f719d05d2f3fe7ff5eb06951151fc31dfd7279c7fbd2cd9950c3095a4395ef34c89182840d75f7ed06721491e0012c8780b1fcab2e49cb156cbf4367572c19a56f04186da6a9b290a01332bd4b000000000000000000000000000000000000000000000000000000000000000012bee07a4904728eacb406cd84a36ea2ed55e7de907b6c1b3181794e4ef180ef00000000000000000000000000000000000000000000000000000000000000002ee97ffa1c286e663956e38318d8e28b6c59d4eae78dce18983b4923f21a0790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e137acf13f53d2a72adf6f94dd7275f9494f0a92479bd0a050a12166b118e500000000000000000000000000000000000000000000000000000000000000002a424db3923945af57b843bf2d1100a8503bc329d673e2c65144b36c056cfe520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026326959c14836e34f05e7f8843399facc8857b609166729855d047bbda3ff9300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002b014131a478c4cb473ec1f3177c391508022d5e16261bd100a998263a4de597215d00c4308cc98d5a15343eef20283bd205964211f82e9c6842d496dfaaaf0f0000000000000000000000000000000000000000000000000000000000000000259769c458e5d68b1150585098fd337da123a5c6b91106d5656c06a03ff0f637000000000000000000000000000000000000000000000000000000000000000002f7928f5947d74c126424ccf00435792721a5987f1b6b7ea961c91fed52ea840d7e0b2babccf2f5ad18cb8ddbd4febfe30232ab63a8124e06907ba58cdcb29c15b8d524b06c5b8b345d67295d2e68371da02c353aa89767292d3a47efe74ffe15f390b7b48c4c79c23a666558217d4ac7db327b45f3876641166659552c094c2f13300ea4f55ea5cc0bb5d36f5147c39c6cd9bc1dfc78fdff45da89a1d0076a0a84766258c84b85664f30dff2a121bdcaa64fa23b5a22ac9e22986cb0c760b215e04b24e80ea7628851d9fe4be0393e6f1c038dd8c503b6353da9587c4824e81adb33be18c5a0f4d89890f514e164eaec05fc1cadb04fc003ed616b54e801c8035d44503ebf200ab7c04576b95d7be22e72896e55f14ca1f5286ec66d5ce0d01c3c5c030f961cc708cec964c1ae2e4abd7f6dee2f3fc839fcb4233c4cec722c27ea5a53b0533fbee542ff2ee5b2ac5e2f171732aab239c7a79328ea43bc4b75008d0c601c5aec47de533f733688ae718a81b357abfb94c567c42055ef80aa4814fa0e1b471a8e5345144aa1190995876b273ac5abb347fd6f551f4c766ca567242802d12e987f11569e40683d56230a8e92a204b7ef6d6de6ca2b1f75d4b5912d281e5715966725195d42f080a181b1d844645f0a9e7f9897853e7951377db508537eccfd38777deb5448cbfc0ca84cfb0e59ecd4a7d6ab5ea13648a83bbaa11b237e4fb3f4ee89fe4a171cdde5782443c036da9e13201888d65fb101755fc723a2eba49be98fafa2e9dee7f82e645c70a32db7824a522b725b704a976792cf111ae5269b9166ad4396028ef0c4556651458fd089ed83ba2a012ef7cab79dec0b84ba6e33b210e60757e9316e75c4d5a6a62606aef927a76731b8555aef780e1ca03be406361357c6f32a0d467ffa34d9764a3eba8ff069571fd42dd69df7cf2237ad911a12c28d70fab3ed1ba0929429a4787b4f90aae3189373d13cf53980241eacf2255b2d64c14bc048a9978f5d1716c30f6906276c9162e2ebca24b7e02c105afd487e25427ba66de00a71f51597a76173f897899871425671e8048afd02473ff628762142606df4878776c3a03d96100d2d48a0a3fbaa384a33af2102171c4ed344f230082b0266e90f525dd49374151461f1d2169fff5547b3f038ac05e4ef5abc331780384e8add352c35509cbc60bd48240166bc913b22308e313d19200c67684c142c8279d9b15a52e9c0a6ee75b10a06c3d96a10e39be3710dee20b9e13f43dd0785ccc61bc4e2ff4d21f88577d651a7dcf0faba41fcc6143fc927c17ced8138799df638e51c82a6b9d9f6638d4c365925019ecf30ed45d85f99021b1547b3918ce42bc4cb8e36ed19215cb0d5e906016a7f75234136511e53d512bf701b23ef02c94a9af6a10486f0d7264d90a8716a1b479936397a8a6b57ac05e4ef5abc331780384e8add352c35509cbc60bd48240166bc913b22308e313d2812e55f87db09bcc357afade3841563960d5e344f1d7b22eb18ffd1032d54c72cd6d933943ddb691fcb78bd325f40d912aba9ba177f4a910bbb486bdffa72ef045f79ebd09a5c6f28f3192fef7bd4cb92374a7956085f87075fe6b3093572e11e15be9722501fabfa0ddd642a440f9d7e843e6406d41beb6620ebe47d0a0b7a0c501812f8cbeab1af71f944a1a0d78d324eaa13e1c80b330be792d122ed0f872e0b766142f7e05f5d6c53443b0dddb50b58a4474fb7ab37cec3bd309c929d941974cfe129d84cafbb02dc1aa8342927871985df3584ba18e54a927123c7edd002135da0c98e01a9f50f14f5ae552710ad1e9258dc1618d2de8275ab97af05ef2e0b766142f7e05f5d6c53443b0dddb50b58a4474fb7ab37cec3bd309c929d9405cf9ca03b1884f41777915e8627b1e77a724cdf84458ebd73d12b65d9f5ebb31d7bb5b49dc2a82b916c6c78c15516ee53c0efa11163b7a8fbc3a9dc29ff4c2a02e0e0a4a760183be4518a8a5ed538aa4d3f9e85b5d949c447204f41c013a0062b5b22c258af70899ecff1582724c5b834f59e2b43feb9313cff206902d8596a', 'transcript_type': 'EVM'}\n", + "Time gen prf: 2.354520082473755 seconds\n" ] } ], @@ -256,14 +237,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Verifier gets result: 211.75\n" + "Verifier gets result: [211.75]\n" ] } ], diff --git a/examples/regression/regression.ipynb b/examples/regression/regression.ipynb index 36f0f77..740f06e 100644 --- a/examples/regression/regression.ipynb +++ b/examples/regression/regression.ipynb @@ -9,39 +9,39 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: ezkl==7.0.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 1)) (7.0.0)\n", - "Requirement already satisfied: torch in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", - "Requirement already satisfied: requests in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", - "Requirement already satisfied: scipy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", - "Requirement already satisfied: numpy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 5)) (1.26.3)\n", - "Requirement already satisfied: matplotlib in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 6)) (3.8.2)\n", - "Requirement already satisfied: statistics in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 7)) (1.0.3.5)\n", - "Requirement already satisfied: onnx in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from -r ../../requirements.txt (line 8)) (1.15.0)\n", - "Requirement already satisfied: filelock in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.13.1)\n", - "Requirement already satisfied: typing-extensions>=4.8.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (4.9.0)\n", - "Requirement already satisfied: sympy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (1.12)\n", - "Requirement already satisfied: networkx in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.2.1)\n", - "Requirement already satisfied: jinja2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.1.3)\n", - "Requirement already satisfied: fsspec in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch->-r ../../requirements.txt (line 2)) (2023.12.2)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.3.2)\n", - "Requirement already satisfied: idna<4,>=2.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.6)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (2.2.0)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests->-r ../../requirements.txt (line 3)) (2024.2.2)\n", - "Requirement already satisfied: contourpy>=1.0.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.2.0)\n", - "Requirement already satisfied: cycler>=0.10 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (4.47.2)\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.4.5)\n", - "Requirement already satisfied: packaging>=20.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (23.2)\n", - "Requirement already satisfied: pillow>=8 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (10.2.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (3.1.1)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (2.8.2)\n", - "Requirement already satisfied: docutils>=0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from statistics->-r ../../requirements.txt (line 7)) (0.20.1)\n", - "Requirement already satisfied: protobuf>=3.20.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from onnx->-r ../../requirements.txt (line 8)) (4.25.2)\n", - "Requirement already satisfied: six>=1.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib->-r ../../requirements.txt (line 6)) (1.16.0)\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from jinja2->torch->-r ../../requirements.txt (line 2)) (2.1.4)\n", - "Requirement already satisfied: mpmath>=0.19 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from sympy->torch->-r ../../requirements.txt (line 2)) (1.3.0)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (9.1.0)\n", + "Requirement already satisfied: torch in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", + "Requirement already satisfied: requests in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", + "Requirement already satisfied: scipy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", + "Requirement already satisfied: numpy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 5)) (1.26.3)\n", + "Requirement already satisfied: matplotlib in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 6)) (3.8.2)\n", + "Requirement already satisfied: statistics in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 7)) (1.0.3.5)\n", + "Requirement already satisfied: onnx in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 8)) (1.15.0)\n", + "Requirement already satisfied: filelock in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.13.1)\n", + "Requirement already satisfied: typing-extensions>=4.8.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (4.9.0)\n", + "Requirement already satisfied: sympy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (1.12)\n", + "Requirement already satisfied: networkx in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.2.1)\n", + "Requirement already satisfied: jinja2 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (3.1.3)\n", + "Requirement already satisfied: fsspec in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from torch->-r ../../requirements.txt (line 2)) (2023.12.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (2.2.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from requests->-r ../../requirements.txt (line 3)) (2024.2.2)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.2.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (4.47.2)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (1.4.5)\n", + "Requirement already satisfied: packaging>=20.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (23.2)\n", + "Requirement already satisfied: pillow>=8 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (10.2.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (3.1.1)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from matplotlib->-r ../../requirements.txt (line 6)) (2.8.2)\n", + "Requirement already satisfied: docutils>=0.3 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from statistics->-r ../../requirements.txt (line 7)) (0.20.1)\n", + "Requirement already satisfied: protobuf>=3.20.2 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from onnx->-r ../../requirements.txt (line 8)) (4.25.2)\n", + "Requirement already satisfied: six>=1.5 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib->-r ../../requirements.txt (line 6)) (1.16.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from jinja2->torch->-r ../../requirements.txt (line 2)) (2.1.4)\n", + "Requirement already satisfied: mpmath>=0.19 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from sympy->torch->-r ../../requirements.txt (line 2)) (1.3.0)\n", "\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.2.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", "Note: you may need to restart the kernel to use updated packages.\n" ] @@ -76,7 +76,7 @@ "metadata": {}, "outputs": [], "source": [ - "%run -i ../../zkstats/core.py" + "from zkstats.core import create_dummy, verifier_define_calculation, prover_gen_settings, setup, prover_gen_proof, verifier_verify, get_data_commitment_maps" ] }, { @@ -125,31 +125,20 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ - "scales = [0]\n", + "scales = [5]\n", "selected_columns = ['x1', 'y']\n", "commitment_maps = get_data_commitment_maps(data_path, scales)" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 23, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/mhchia/projects/work/pse/zk-stats-lib/zkstats/computation.py:166: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.\n", - " is_precise_aggregated = torch.tensor(1.0)\n", - "/Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages/torch/onnx/symbolic_opset9.py:2174: FutureWarning: 'torch.onnx.symbolic_opset9._cast_Bool' is deprecated in version 2.0 and will be removed in the future. Please Avoid using this function and create a Cast node instead.\n", - " return fn(g, to_cast_func(g, input, False), to_cast_func(g, other, False))\n" - ] - } - ], + "outputs": [], "source": [ "# Verifier/ data consumer side: send desired calculation\n", "from zkstats.computation import computation_to_model, State\n", @@ -159,7 +148,7 @@ " x, y = data[0], data[1]\n", " return s.linear_regression(x, y)\n", "\n", - "error = 0.01\n", + "error = 0.02\n", "_, verifier_model = computation_to_model(computation, error)\n", "\n", "verifier_define_calculation(dummy_data_path, selected_columns, sel_dummy_data_path, verifier_model, verifier_model_path)" @@ -167,16 +156,39 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 24, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using 6 columns for non-linearity table.\n", + "Using 6 columns for non-linearity table.\n", + "Using 6 columns for non-linearity table.\n", + "Using 12 columns for non-linearity table.\n", + "Using 12 columns for non-linearity table.\n", + "Using 12 columns for non-linearity table.\n", + "\n", + "\n", + " <------------- Numerical Fidelity Report (input_scale: 5, param_scale: 5, scale_input_multiplier: 1) ------------->\n", + "\n", + "+-------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| mean_error | median_error | max_error | min_error | mean_abs_error | median_abs_error | max_abs_error | min_abs_error | mean_squared_error | mean_percent_error | mean_abs_percent_error |\n", + "+-------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| 0.006681005 | 0.0076099634 | 0.012433052 | 0 | 0.006681005 | 0.0076099634 | 0.012433052 | 0 | 0.00007083078 | 0.002049841 | 0.002049841 |\n", + "+-------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "\n", + "\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "==== Generate & Calibrate Setting ====\n", - "scale: [0]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":0,\"param_scale\":0,\"scale_rebase_multiplier\":10,\"lookup_range\":[-15208,13532],\"logrows\":15,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":7872,\"total_assignments\":429,\"total_const_size\":5,\"model_instance_shapes\":[[1],[1,2,1]],\"model_output_scales\":[0,0],\"model_input_scales\":[0,0],\"module_sizes\":{\"kzg\":[],\"poseidon\":[7872,[2]],\"elgamal\":[0,[0]]},\"required_lookups\":[\"Abs\",{\"Div\":{\"denom\":100.0}},{\"GreaterThan\":{\"a\":0.0}}],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" + "scale: [5]\n", + "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":5,\"param_scale\":5,\"scale_rebase_multiplier\":1,\"lookup_range\":[-11984,368458],\"logrows\":19,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\",\"div_rebasing\":false,\"rebase_frac_zero_constants\":false,\"check_mode\":\"UNSAFE\"},\"num_rows\":7872,\"total_assignments\":468,\"total_const_size\":17,\"model_instance_shapes\":[[1],[1,2,1]],\"model_output_scales\":[0,5],\"model_input_scales\":[5,5],\"module_sizes\":{\"kzg\":[],\"poseidon\":[7872,[2]]},\"required_lookups\":[{\"GreaterThan\":{\"a\":0.0}},\"Abs\"],\"required_range_checks\":[[-16,16]],\"check_mode\":\"UNSAFE\",\"version\":\"9.1.0\",\"num_blinding_factors\":null,\"timestamp\":1709452000287}\n" ] } ], @@ -189,59 +201,23 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 25, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "==== setting up ezkl ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Time setup: 6.701804876327515 seconds\n", + "==== setting up ezkl ====\n", + "Time setup: 57.17967200279236 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", - "witness result 1 : 2.0\n", - "witness result 2 : 10.0\n", - "==== Generating Proof ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "proof: {'instances': [[[6145674602038562713, 11796601694033167407, 3132644448460071153, 1431119980703310933], [3957842973089931008, 9845595232537184463, 786695466761881781, 2995319695946854765], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [6425625360762666998, 7924344314350639699, 14762033076929465436, 2023505479389396574], [3898461358030585804, 15381148731429954174, 10354293334678834451, 3143530863341041542]]], 'proof': '094a63eeb84a2933ec5ed82e8b88f172db0f0dcb82b7ac43b5ae9311d5b2a9ed2e655c5d25cfa0bbcc70d69ce6b0e727c641270e1d8f016ab3061e75c37798e822328f2f40691da9e5a8ed65eaafd875be17455a4e5b4a365e1b386d0247803b17be1b47ce40673f337c7683fd792bd65825652138c89484cd3dbe9473c5dcf91cb3f031fac163fc8cb715b9ab362bf42dd007610c15d8aff9e86324293ffa9803bdd1fa25420ec09a18d8e82a85846b641d32d70b7864d21381bbf1c19c2003020b22cd365525bad544c5a8be975fc774283a1260988fce531112df8af4afb9010daae9490c31d828d3243a6c6bf111c43c75e1976aac6803a528af7dd8294d15eeec5e538611d6508328926f808225ef4ec02fb60adda4106b3d58a9a9c8721c5b819bf177f7fc2ca1f79d73547ff98e689dd7ded23dfe0e3f39686bbc7ae21b146318b0cb5d6c1d0787c76d6e15ca5b7045a985f7cf5739937355c40bc06f23e2949fb414414264fdf575414958f2109802500ee6076f9648724e1ab2427e09e8ec23c4e1549fc7089ed561abf42d3cb510fbf3a5947ec6d532a05aa688210bd8dc7b1a955f7e61b75c36cb2a1ffd18c8c87e7eb931b004d30683912d32ba179deb36fdfdde236ba43bdb3934020f458cfdc21d081ea132dad148a988172e10234223b33dfada6a23841cb4b64e46a95039630b76c1ef60cc318694229eac0d1243ef483f36e97c25e2f0c287eab4885fd39d28ad87142d7f043dcc014ecb0e8ec8ea9400a81720964d95d2662a4a034f5b987095cd63e4e9667335e2ab9e26ed10e79cf537524ba65c39904fad8df034b1ed5f44699a585c8faf425c366c0c85d29f011107b858fa89dcf6d3d7faefc9ffbfcd720a281209e6be3adcb8c80278d6034ca024df5fbbcca258d909e3a72895801b413475b2bb7b8add0eaee42ae6f2b4e7d72a7cd93609085f307b2842df6276bd3e27328a694e119ddcf3e82b94bc26f37babfb3e19f02bfeb2d5cf03608b96794f49a3f3659d625296595d1e45fc7e07f112b7f63be44c7278f698bc1549ce1798b88182a41f346ac77bc800577c5dc7510b687fd03b40c8718ca1b8a1330daa170d56349c5a79de6d10f90593096b71407e34ff579ee7b86792ea873f58f24933247328a34c3e0d1f911800577c5dc7510b687fd03b40c8718ca1b8a1330daa170d56349c5a79de6d10f90593096b71407e34ff579ee7b86792ea873f58f24933247328a34c3e0d1f91180a32bde060b784da90f16d5084de2ddf3963bdffb235720572ab772777edea4c15a98d5595f84f52f61959e357ffb31f4f115a1744bf5616ef7ad52063b1045b23ea6c12a55bac806e758280f9ee9f58a1477cb1824d4dacc4e3d1c0d16a608f1e30c53e12652714f5432020b48f8b136be877360173edb6dc0c25f189590f55203f73dbd7ab639f1bcf6eb2d0bfe5dc094959fea7b3db5d67ca510bab7ef33e07c11996c27a6dfb0bf293e399baa0bf2f3e80f83bd05ce9b2d8c35fdd830e2e037ce359833f1f194b97512e503d2db4729460fa8193d899f0437099b833e524089d5448fb6762486d7da2be622f03a234eed61870bfc1a4d1eced1e8b7669e10d134d945496ade580b707fa903acac8b672c3f80b8ad5e58a5c5a429bffb2e214fc3581e09fa6b4b7a4411af63f72b4b77a2bb327f7565285608e947e15e8ed2f98b1c5cb3c1cf8ffb341fe94a9e5eda22ad42453522b7ab155b3eab11667c70dfaed101023c0f31526b69d72b1f93ce711107607ec7acfd20b2d80c35eac6401a336601bf34d8f5c9f4169453ccd7173a2cd5b6061962d30688c0781ead1b006616ff7309ff3f34795fa757bcde5362794ce242ae1e5f195f8cc4f9d57404f18ee603abca92dba2b57ef3cc78d7da3eaf96b2c36b5406eae4268bdb10e34e72d35bc1d63da21dfac4d58d9826199182af56be6a4c71af12bfa547eb137b4da1ac9bacfa480cbbaabb94612102df43e26121c9a1cc268f412e7921b94569a2306bef12db1db0ed626781aaa21431ba15e315fd34fd13a3396a62c9341705a0f27eeb3b4c88812b0d30ea646c3d42e75fe46c123756cb55fe8bf59c917a9d28d147d5c384f251a9aae303629c4bc4ebca3c06453c261f2cdedaacec996624e0e2143a2fc23a7fd7195b0e8de6f2a7973c46007cf1f5ed78e37dec5dbfa22173d12553caf6dd5498b1ecb4cb2334796077474cbf3015556f625d2e795c7f49555292d76bfdd9b93981b2b5a05183304d7efb99e25d61518fd1456daf9cbd369451f34ad30afb59e551b4e5238a426baba247b217d5463693406303edb2e071db811cff6838e63c35b13dfba1d4ccba96c5e6f2fd5049815ada722a3c8238869581f24a21b7d7621570ae405d6038fe3b2652019f4fda7bd620494a2a58e1900bf29752572881c7d8f7f5a6a3bc9221ab97142f069afe59a6838f4457ebf9a5fbe13c4791aedd6bf259da4ada8d6853d181dc490e31c922d5dee82868006f39a7323d2d3c4256dfe166e73ae443801645e52e3f163e218a9a47522818730c7bcf7144fe9a30a5ccefe25a21722484bea81cc37df933a896bbd6cef207f4df6e87e0d3cc5214dfbf157f9ec333600cdab2efd9cd8648fe3392eb4c6a7f7b7fe233512ee40a07b68ccaa9da797493b2243bdebfbe550b0dfc15fced809e819b1f53e263db7c9caf7c47ad6dd2ff4591b8c3079888895137f46dfaf930ca616f6fc2a18222d04d41bc715ae5fdff2728a1248a7d840902d620550ce1db259b4bf12040ce73226cf837d428bcd5a3378536a646965fa74c201524845ddde129d79681a2685359a393fb927bf9f2ff3e9424dbce8d5a8636723ddefa9eb8c372f1f1d2d04004e096772dc7a817d6fe440f6fce99ea937fa580640551d9121ae83d566031b2dcc82879ce0ed629ca0994fb430ce9563a7ed2de7af9876bb2d3988b34d89271737597fb902022c57fc36e21daff8843cfa0a2476dcd3ac0be3ac6ea687cc260a7174c8f9b63d28d32f4c500738f915544668a3dad794b0bccc5942db2fc02b622df8d4e4138ac71bf3b6e2ec9912740e379a7bceebe86814240ea34973b01a9ed5efbd7b6e450bfdd7b3f9721279ad66fecbbd576ee58b600f358c6bb4501024945b8c52186aefa16c8e5b52339256e0bcea072c2a3f785ba2851e25a5721b38ae3983f9f2389448e03ab89830621768e92ad21b77bdee4e34197d839a6a11a1d10fc52b2e01e9a7246f26647c87f48c06c20542aeaa28c8e75fd26743d918082518068bc7e148a1680015105082e49b10b114e203e9e52d7d395a641023097e98facc7a959075f0992ff6de98ca237e11a22ef013a1ca43302cc219c3a42514a765e147874d3abfbc0b41670a13c403ecacbd34070519b11ff159ce105e28430f31fcbdceda096489fea52acd91b351a8f997f091721fcf72e7e1bb48671f05842b56a9a119d93ccfa2613846bb47bc8768876dc20b190cf1a216b3ac6e1aface5b5ef19ffe16798f3b7061a099b09a5c9f373fb85bb52fc62b05e6d9c40aa3fa25cc11b3ead6d4fd42df0ca4dc7e132039a2b1f8327317c282e0ae086f28541a06a5e894d6218d6f8bdf31805042b86cb7c148085c576f7b934881e4c3050336f7918f23c3d44b95cb81bb9c829ae63ea892267f38478d55b8600c42be078ba5e32c7a4e6045e1e3ff7e7d4ff576ae392a3abbe434051b910ef9a938f40bc0eea0dbd6076590fe46b198d91de3526a02e934b6655c3daeeed69514829c0bc0eea0dbd6076590fe46b198d91de3526a02e934b6655c3daeeed69514829c2736a3d0432a7353f6e4c899221a5b99d949363265641066e1b0cf86d8b2e57200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000270c2add82b22e01c3619960665d237063e076f4120a9f14e946bfe447e74a62082ffdca684a24135dc09a4eeca9605a3c995a06718d5d9b7326147af74256c9296ffc0cf8ece21e0f1707eda1d3f23c6dfd0f1e4acda3c17890b9cc52f8966b13947778354e60a66117b8d07c6ace54c5686b2009e7ba4cbbd7f7bf44cc6b4e1e3cabcc500141f35a764ecae25b8e95304478c4fcb2107021e481fc40b34c3121537e889c9a348929c9d382c7a1bf7ac6ed93d7aef78af06f8eb415ce1eb90d1e2c470a43110d66a23fa016a115e61d82ac698cf2946856bb4feb7764b4021000000000000000000000000000000000000000000000000000000000000000001edc4fe5af38fe68e2b9ef31acab992f86d66916829cb620a105b6c8ece83b8310866ff3bc75c22d2f89007350d4d5bdb95f43aa5800d2611e6861176c476e862ff8bcabbfb9d9ad9c26b7eec295625cb47b9d6e95ac58ff1a194e459fe7fd590f4af3ddae7b672aad6987158a1850c617bea171fdd814246b4225a1e8afa83f08a666ef3cf61948b0d243dbdffbc0b315b5ea11c0c10b784cff8999d0691ff1291ca0f69c8960529053a7fd63965b783ce2eb9f400a924444954808962e1b0c065452a67540425bd1d5fc7ab1f9ce2e5c53c5dae9f8034e60270bea43f6cc7c0fdc3a79eeeb6862de02f2891771c6c49998885c38f2241b56a1fce722ae8386042726c03fd220017f847e08898080bde687f87495646889b679fe39e4ff5028170a2090c260983e08c1376b967ae1efd3324766adb462564927d07a3bf880421f6f944578e3e81a4d6d213d2c4b3b01f3780429dda8466b205cc64f3bef427a055ac9fecadd7bf2b46662c5bf2d35cfc95978f986640298bb0bd467d8b7747d034c3e3487b69fb7d2f2ec642e4b53ba69f9e6064f62322bf9e83792b7eda4e803485f0bed7280e353e2fb552a66a545b75cf5fa445be2e3e22a1b514bb432d9142b0c7122fe7c7cf5879d5859fb8d32b1ae7982ac095c630f0798e655fad1d12f0cabba00b3ddb1f2a3650fa204d15b1d4329f3a16924b5d9340a64027279d10e3a392371d18e76274ddcb0cd1ea18fc35ef33a28231746e7016d4d469174cc189f39d2b440ce9bc6b7e4690384be87655ff3d6a71efaef0cb68bbbaf7e998f109d55081db2d8c6e49e0792031929366e803d20cfb60d72065c05cb012a671413f6b61e4580afa9efa7f29e27b826d61e4d11a286b7979a5b317cf5a22026f328045b3dc6009bca8952d81ad26d833a6704c3f5f36cb337b3f2b09dfb38c19e2aae752d194d7424bfd9ec2f1b01b185a702494387c7e38923a79c15a912f0dc2db18e4e06f2b4cfb731ee8d47bc7b28498c55eb898bb6915e5194c9cfeee7e51bf272102bd6ab4de11dcc8ed33468a6e6812f5d0d1649484c2673e4dea76bff2becde863e3eb9a353eb8b1c30e6ec5f62ad4bae67ab78539f367c6ef0e0423928f8180cbdba8526d97e1c4e2d69c3b94d948e447d8fd03a24f126690e8729b303acef3ab2500adcecff759f525ccfaf07749b38bc417df35a5f4132b7c0382a22d6f95978b928f9c7db0e911695dbd755564fed043b9da718cd2c84a04f2388108d15c30a138f7ced741ba9fa6548f9a3ec2f4062a957814c64876e9b75d17e299fb332c1661d14898cb86190d04693f6c4128792a12738a0f603c77bdc8dda2e721890e0192a14745fa7f7af8c65384c50d8d0d42ea5c6000a3c3792d627fb2d271604c6b5ce18e202175597e35e1e5d07f5586f454dadbee108a975e1a2ea16f9cc4eddf85c6e0442db35fabfd43a24727a80c56678752ffb5fa5dd9a4a6d1ae93ab1bf04c73cee596ff8fef217a4b3deff56ca07a5660249cae22bd6bce9024ffc550e156349cebaee67b2e01677af5a71e3f11afb8ee1a2c494ebc6ea9619261086d5c2a2bfa088140e5fee4ecc7f21f89232ca309ba081490c8317fd701ae93ab1bf04c73cee596ff8fef217a4b3deff56ca07a5660249cae22bd6bce914e51d36abc718528179afe2493a4c841869698d18abff5ea0ee4406f6acefa61e46c2005878caa61ca450eab2c0529b639f228261cc9b779902ad9e00622f2e22b9ffb7b70130b25fa2491e487616d91d49b3eaea8340119c546621132d5fc02791273b181946e252e20ac0fede3b9b7b53554e882acbaa12796cfb6bbf27911c9ab3577844ac302ff3e5f935e94a8a4dca2998bbf353751938ac36efdde5302c4e91c47d9a72f901b08a8a905635d2cf0f10ceef986c6b220f7dc9a13c1fe007c363bf3371129a3ad824c1440306a02ce15ab1897c8424210f59f34d39b623', 'transcript_type': 'EVM'}\n", - "Time gen prf: 8.66359281539917 seconds\n" + "witness result 1 : 1.5625\n", + "witness result 2 : 9.53125\n", + "==== Generating Proof ====\n", + "proof: {'instances': [['cdb07195b0e3b568c9d622dde480fb97d8a12b0e4ceb8fbbf155e0cb4c58720a', '81c924e0484c8b03dc1fb951bf90b87c4947f9f6ef4918bcacc3fc687376cf06', '0100000000000000000000000000000000000000000000000000000000000000', '3200000000000000000000000000000000000000000000000000000000000000', '3101000000000000000000000000000000000000000000000000000000000000']], 'proof': '0x2468f03b2151371062ce905abda32cd48cfbb06b24f3e73261b211e40d6322d6224f8365fb1c70ec51e2ef8f8fa97e61ac4b3b8a53d1e5f3b07b7fb3b8f0c5b62da4c48346d2b4ab5f67a872e0306dd022995860253e91c913e693f30cf77ff314bb7d619bf8159212afa5a27cdc369369b6fedf854ea5e95f3a4921e14707952f026bfd134488ec24344e5c48b3f93f6c24c2982ef1500724dbf10f86de29b905466ae3c9512075548484ecbc45ce38cc909fdb3263cf5e912a60f55424cb5e28cf2cf2a8375cb803bda7e0634608c7ccc15127e4a05d31af9eeaf542512642175e1a4d86d86242d3f296592ff5e7886dab9eb31041b8bc6186f7049be227e32a50520e3876a4aaf8a9a3ae346f13b9d13d3dee939869dc150562b12fb2af1c04aee664b23710edb39764d9437d24e974b2fa3eb759d4308b6247adcc2b87eb1c780758408f845646abb5a93c80824e9c6bfe2b13319edd89490ccd3bc58d1e05bd243db99d10ecfa783a7d1c872c51d26d7610c06a7b57e4b8b32e43776e452e711716689f2cbd4727f50652fa652fb9f1cdd430c18dbd926256d4bc0eee191e18012e118d1203796c6aebce437a5fb58df5560b9f786abc887b0d4ccbbb9e01830238d0dbe862e2c51c4c7ee786c93dfda011d703bbfd11f1e56b28869b3d0aa530b03946bd9eec4b5fcee4742cf757eda2a2c42d56eb22420a8ae8f147480a851e0f85b5e2dbe2a65765a33dd5a93e671f8dfa31d1c396bd884e19457dc703e6cab5996843a5b6aee069b7e063cd3d070dc1c27306149c0572748a90407f062a40852126acd8f81da3610150c01519e0c9a045f695cd6ddcbe683342a8df0df45d855befa336e9d5df3dd7281f6568128fd426ac6c0eea033d1383478cbe1f1463533e3b7ce56955bd2bf687c2ceee6536219d973c4c00d860cdb89ee1a30539ab32a2f81a9c2e447075e5b2c00383614ede7af11056b1ba5c8a835b24fd303587e786b90959ba607cc5542a5027c883d55f21d1b531cf0a87250973c74502ae9b423458fab3eb43a8ac8d1b6cc7ffbb0c7da34b5ab26816d7baca94d65a1371b90c8ef0d0532ff8b80725cbd0409052e43449cd46a7a097dedeb73c8a9c2b1f540685df0415a103030aaff37ea0c531ec4ae969fcf724f75e47f40e54f616b9d305e8c1a2f6ff2af81a89783ea7f3d0c9ce7119b2340f06f7bda9f366c802a9ac5b2ec9c859d61681dafeec1d463c4adc39b57dc2646c3b260a936100f91a28679ef5de8e7f16e75ce89f7498202929f20b1d16db85a1d0c262204e91d103ab62a1f098f33341a21fa928165f1aa28a38c0aad1c42941b3b9d969e1f9840a241d0eb82158f93b0749f10642a9d5711475dc392d6c8aa5b16ee24b1669e524805f3bbe10b234e83d96d77ae7867d18dcc50f6de78b27f01da42f6c494f36132ae7e8550e698bef995fe505d9ab4183f262099d86bb7477dd8a76d188eeaa197d062990ccfb8077c32d58eca0d5b974cfb267e931ed68dad155cd8ef9a5890f64dd0d7491d841ce98c80512f942dbdc548f5e199aa5c582cc95e2572f3bd820d1c9cb66714e920dd7ec6be2e96d102dd4ba073f3020ec5067c9f1db774d7222be799149775e77ce1dc5dc05bbbe079212712ead53c3fbb2db71431d9e1dd00f944678753a1068586eb9ec0c574b2619fb144bab19b501b7c5129263d5c46026e51486b16ac85022f16f71766bd68e3d00a21cdf057028f637e443d08eb914031e844bea3f131c56f4586e13292aef4f8a79e6bed279eac479174a813f1d79041c50ba09036d92c195e672d48c61b651f6cbeef3c08b87a186383b5845cdbd1977d3adaf689194de5439d74a72ec817e14bbb0dc9c9fc351d5968c0b7b3fb62c4714d9781139d0d0caf60474ec6f95c776da668db8c7c6b1055ee174d12b342a1cc9fe179e3a6a791e988488ab3951b0078165f38ca521a9e5c43deb418cda2081775c882bf5a7bd00efba8f4d0bba545c12337334a333db2bad6d3f212d900e78f2703ab66183061ddf29d59d6489cbc6120f849107e50a814b1e6475588010bfbda5c17197e7a00ae31d6c137cb8303ceaa42ce944de51897884a6ee393d011c0d10264a26649303a096b12d356d35709601b7db6c0928004851adff481119b55c870080042bf482d2cde98449970a8743f4d5f158a169890eff7b27fab00db673d370e6fe2dcdd3fc724b0b0d80429aed7789a1056667d3dae9b4eab97c23105138886feeba3431c5a41ec11ab25c4bc2e0457336e284ed313e681f7c4a060e824d64c462a2c2e4e2b6fe344abb8e1ceee0a2e780f4aef42d87896f76de1dd71c5865a76639fcf5012c2672ad3b9d76975f7fd00680017d84c94179be290a819ee8ecf1060ec89343896780e44de095981448de21c0e3936f4e8394160e071352ee990f37bbb3e10a9fca1e36722a1efb41d0503d7ba98ef75fa06d81e009d69cc2779e93e8b6ad40c556304093bbfbe6a70b69d239ff98dd84642d08382e540f774e08c70fe61e96a3abaa9ad739dc3b2d7b91293cf7e07b0ac8178805010258781d6995d004a80db1fa79fd5ad10c9b5b387ecc72ff63920abe540b1703662e7a6e20795b8c1e04822cafa5eccbce83e09512bc8ed4a0ba9042d49f9e005f37fd7ff0f8ec5ad30488005b60672cf97454bc9a56136413f4900c18522c23ba797096d68c6a27bafe139bc6ae3ee3e9d69d2a6481a10c2814ce591b474b11d4165797c25e8887e00af4045e061791a62f93c6dcd088496468c556a886a7148e3c60e23a70a97d4a2dc85e1887f8066baf0a689ed33376307910ef0cfa9b2a395bac125faecf6ab3182ea1e69da9cc47e640b158086701048084476a93940321df51d28a3ba47aaff032654b3b510fcdc0ada3c42ac497788893e24943970e3a21569170022734abcc331d326542c748afc0a9bf302538a7cb9de458650607b9adef40675db7b88f485e3c008c697c33854997c08ff413028c11eaa98fa228abd40ea4828e84de552ecdd7744d6d54922f26259127d5a72fc6bc892302d71eaf5455a3b31b2e43815b84ee1175e59279795e93bde3777ba68615b34b3fb301416ea4699bd87dcac00723bc2af020e6fa2d8a7c96ca228daee466d72825b4219a4363e229a468a1eced40e307580decdd890cd22a7c9871874f29ea4f71cf2a6e06f471ece9dfd8d22ad430e2d1ce3a5dd21ef3db0b82002d5ed9a29dcd2318cb7a56e557939e5faf593640b3f29e023a204b4091f9b4bd5f79c1f932f6122e92de481a64a6e620a9c13595ad50f69fd9bd24cdac1c260e446073cd24debc18dc4b230f213aa4a1f3fdead25bdcacb599343506093f8c8a07a2acc69242610dd46fbfa862031ea91307c1d55dddba9406900d975d2cd8f28056d2863d945d0ad05dc2a93e776576fe7668944ee5c790609502fef8bb0a88a34cb4772012d61decfa0466bb9f2509a7e3dc2ce8dbbdac87cc4bf9b16a5bb7482a5bb437ba9e081e9b071cd40386a87280a0d6261df088198c338fee8e6401be98c2d3502c4806c6d6510b89504ba7be9f29b9bb045c2feb85866c4fa05bf8b1462fe6d68ea8236277d32a9c15e6f72dc24e8ce56aa85d4d56ef6acd85634445f98b8d9e45831bcc2bbcacd918ee1fa5ec2af660abd2a9b90201f14b630f9e6ecc45f0192d9d13dbb24ce489e004c0474b4fa7406e9277dd9dff08112494de9dbf1199bd8b321dfa15eb50760fbc611f191ea1d60dc324503a9aa98cf5bf3a33c0a5ed3f55b92fa5197a495971945023a2b185746424efb20cd541a12610eb788378e91764302e907af65c5ba74beda2ae5006bed9ff8067cd0fff4256731ceef541b9d5a0490000000000000000000000000000000000000000000000000000000000000000159e6387b0d3dcd157615d16a098886f41742dfb38b3b8e618f8d6cd9289c0b200000000000000000000000000000000000000000000000000000000000000001a57a5e010bfa7d5dda7f5466cb3f379b45b4a55b7449b3867584bdc53ed532600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002907572cf757223345a69c98833cf74f23c32353ea7adf2a9c7de5406b917fae00000000000000000000000000000000000000000000000000000000000000002242e94d43c7670cf209bddd69db8a553ffb4ac88e1752fde53c77631091728c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c533c2209fb08032ebce0dda12e67fc810705753d7a252e6d86c85ba8e4885d06ecb0bf5abdb97c2f6aeafc75309bf4171e6660fceefb1b599025146b9b883a185e4687dd624e48483f9235f34b32c8a2024a71572a85341b56b792b4a5f58d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e1e01882446c6a391459b7a6fcab96523b5eb265f4b58ddfdff066af29ac9de00000000000000000000000000000000000000000000000000000000000000000085f5a7f48ba87a55231fd107616a42c75b8d2f862ff5515154dfafd257103218b85b0100e58e90359c6cc47b19d89b070e6f92832ce7358beadf9d1543b6801c8ed6d2e22dcb52fdaba227675af14267630b83d81819aa0f70089744e219e919f99f2b5db18f237cfc96e6c1ef7f927aac9015d88af18738d4b14fbe35408c303ac2e26430eeb7846aca7a062413fec202e8391d7b8ce16b67973045eb6776024946cccca2fbb7a81324e4a23a79bb609400fa776baabc8578d1fc504d2ceb1319429fba40ca2a638a06c1781c64f80e665be65f27720753ee0b5584b639c126e3ec9c6a724eba946af706bae1926a883e50672585cbd40a155116bbde4d662478d4fb2857831d0dc215c03c9cd93a57f0baf518e9994b8eaeecec70a1efa6029b62cfef52b92fcd8b59d57e9f07bd4518ecd56019bcbbc3e0e38bd8abd9d41321a311cf4a635411d65a3060420857261c6cbf8f84a98aaf80656d93e91bc3293934feab550406a9546474079fb1007f93c29e2a86bbf3ff8806b558d6c43e13f0899ac6ef643f86e8e4b30d6a404db04ff94c1a095bee282db597a912b3bb0bef93c4f69c8d204e4576d43173b9fb757c2b71f5f73d875fe498429548a6d60e067594e88d097606736bfbfff64ff558c63cb003b4824c44b46469aa852b7d2fe5adbac07a40261f918d6e3f0caceca0ef8555fbaf61a0ae458c72fc0236ba20bb8d6d96d0fe166634f3f34d10839fa1b1b0735a891fd1e6e831bbdb71a9bc05d92fded1000fccd7fc4d1567dfe07f85b22b718bfda71df52c7f797c076a5f15ce31f846e9073dd34f070f8081938c6fa3b0c17f84ac02eb8b0b65bad960b42d7a6417e61950d4efbb2aa4acee7413e1652d044a210337a24a8bdfee99d98a3046906b3f08eda3965ccf74bfeac88b7660935592ac287a43d84192116fd3902e125e73933714c24fb7cb4f3b6b96b6f06b81c8ce3757d867f89a87e69cefcf2b02e226e69a632aaa425bc6ce4c5a7db549c55e47913299abbd810128a1415d0727f37d9c97ac85a5e963d948aff0f4aeedddb5aab07b3876be9b04412ce409154364d97ec152336a137c21e34f03691f819f577083925c98a3814718cca33e1bc178e2fe46f2fbffc0de69a84fc36985482333e96a5233e61fa935c112d1c814c7dbc95cca9457e57d30ef9b255c836f5e61e28394ea162ab14c73f89589361b62399e831c8562cf4c6a532f3d3835c58ebc162595f08fcabd12e14b0fabc90cca88aee1b607f753a79b7c95c5dd5cca4a9a6154a6d322731436e8431f998805adb54ee0d961218c83c75c30b7a1e360f60ff813d88fc4b8dcd57de139583e0da243e28b475aaf6257a7391abdda130972f196e56778950c7c032041c2b1062b1066fbedbbe003d9eb4edb48159bdfca0604c01150eecd4863ece5f443616316bbf6975f786d7f1a57fc024f85c7dcfdb1761c0a9a16416b7f4c8e7f06976307958e817fd94201c982610aa6b5d669656b4ba30ed2a3c135344d3874e9893e1ff5cbe09c256288f8386b78a0bdbf2365eef747194b1167e65ac7e198c5b54114cf86e5288ccdc2d7f5be38351a65bd1a02961d09c7087486c1513cd1a9dd8108873a3addc4adc3d60f40eaa4149139fac12ea6bc2d5c34eb41d866c50a55241911b8cfd242299d13d5684aae0310a948ad907b778ba2178ec14261bc6f391a2a92bc3bdb0095197d08fe49ed0cb9b432ba72df74a507b2179c577e70f1d60427710bd9bb4156dac2bdeacc0e851f5ba80d29cb2f4d798b226cf8b929d4c023049df4459f5ad3298ffed17124d1cc598cadbfafe22bbbcbdd58b27a2780fdfc23fe5b70fc05a67d14dc804764db47d4964508c5eb6bee592064e1e0a0d25b6804cd5a741fd5259772bbf0a9b0f2af24866160d5dcf9c648e7ebc9148a2dfee82b06556b2a6642409c4f1d1cee07d0fc6c268a5c7c548fdaa79ba8664e60d9e51d2d3a28d2706f62587d358a1ddd9c20ee9a39e560d33876be3c406a1404c3702fc11b3f20a2508649edecf7818a4c028dcc7a45d68f61a715ecd81e15c3f2692454675c1c37342d421406766633a76350535f916216df0b7c1be48d36ecb05825967112493e9870b281285b0093c9027bcc97ebe100303d3301771e846bd20c', 'transcript_type': 'EVM'}\n", + "Time gen prf: 60.853655099868774 seconds\n" ] } ], @@ -257,14 +233,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Verifier gets result: 2.0\n" + "Verifier gets result: [1.5625, 9.53125]\n" ] } ], @@ -273,6 +249,13 @@ "res = verifier_verify(proof_path, settings_path, vk_path, selected_columns, commitment_maps)\n", "print(\"Verifier gets result:\", res)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -291,7 +274,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.1" + "version": "3.11.4" }, "orig_nbformat": 4 }, diff --git a/examples/stdev/stdev.ipynb b/examples/stdev/stdev.ipynb index 9d41615..a6fa089 100644 --- a/examples/stdev/stdev.ipynb +++ b/examples/stdev/stdev.ipynb @@ -9,7 +9,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: ezkl==7.0.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (7.0.0)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (9.1.0)\n", "Requirement already satisfied: torch in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", "Requirement already satisfied: requests in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", "Requirement already satisfied: scipy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", @@ -170,13 +170,30 @@ "execution_count": 8, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\n", + " <------------- Numerical Fidelity Report (input_scale: 3, param_scale: 3, scale_input_multiplier: 1) ------------->\n", + "\n", + "+--------------+--------------+-----------+--------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| mean_error | median_error | max_error | min_error | mean_abs_error | median_abs_error | max_abs_error | min_abs_error | mean_squared_error | mean_percent_error | mean_abs_percent_error |\n", + "+--------------+--------------+-----------+--------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| -0.022477627 | -0.044955254 | 0 | -0.044955254 | 0.022477627 | 0.044955254 | 0.044955254 | 0 | 0.0010104874 | -0.0015416706 | 0.0015416706 |\n", + "+--------------+--------------+-----------+--------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "\n", + "\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "==== Generate & Calibrate Setting ====\n", "scale: [3]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":3,\"param_scale\":3,\"scale_rebase_multiplier\":10,\"lookup_range\":[-162682,34],\"logrows\":18,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":14432,\"total_assignments\":1519,\"total_const_size\":8,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,3],\"model_input_scales\":[3],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]],\"elgamal\":[0,[0]]},\"required_lookups\":[\"Abs\",{\"GreaterThan\":{\"a\":0.0}}],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" + "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":3,\"param_scale\":3,\"scale_rebase_multiplier\":1,\"lookup_range\":[-20336,4],\"logrows\":15,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\",\"div_rebasing\":false,\"rebase_frac_zero_constants\":false,\"check_mode\":\"UNSAFE\"},\"num_rows\":14432,\"total_assignments\":2722,\"total_const_size\":309,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,3],\"model_input_scales\":[3],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]]},\"required_lookups\":[\"Abs\",{\"GreaterThan\":{\"a\":0.0}}],\"required_range_checks\":[[-4,4]],\"check_mode\":\"UNSAFE\",\"version\":\"9.1.0\",\"num_blinding_factors\":null,\"timestamp\":1709451015079}\n" ] } ], @@ -192,55 +209,19 @@ "execution_count": 9, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "==== setting up ezkl ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Time setup: 23.033539056777954 seconds\n", + "==== setting up ezkl ====\n", + "Time setup: 3.3544819355010986 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", "witness result 1 : 14.625\n", - "==== Generating Proof ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "proof: {'instances': [[[2220140900277941808, 6087627386785158829, 13612075262281438935, 1146358877253972239], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [2343324117748415894, 17487830339905012050, 1024486912989114140, 3304127739781667657]]], 'proof': '257a80d21782b05de94a90774e3e19fbc7d8e3d9c46334c02c88509447415ae202c8accb649059b0c9b5a0693c15d405c5a2217a1f8589c13cb203951ba488741fae97f7069271d5e361fdd95b7351569f109121b6f178093dc025ec34a1004200995755210663ba1259b4c54c77765d42e35d983f5dcd779be282a9c54c4a0c1bc6160899a067b4c080e4cac82b0e850fbc77360b2c8e85498bfec01f7c218115ac1b97e707c41e8afd0bfdde21d76268a7d86610c772b3b04f6a33a0a5233107fb984fa2ecd20c3933922dcc4c2316146d8a26d9472447869e56db40d9d210199f23aa89c253ddbf0194667b2b65d10364d38b2926cdafb582f47f0ab240d727686a461a8a5773288dc65c001c546016e8be8b62f66aac5372559ccb01618e0d401131096f436867612941a47f456e2be6597a0102e162bf11d017fd93a5a01ad0ea1bb4e510092fe1a3d6ba2e15624d13d1f3279d5c77f8b75acab020771b03bdf5b9ceb984c06e3eb8eebf0d52a5f991f09f8007749e6a5b34096484691f059c888528858c54eff9bbfeb1bba23d122dd63b326da64aeca3cdc239f406bd0c10a5967aaae9ea52a92fc11cacc5126191792fe3e02e994a428ef98b6aec571b51489b5d53a46f5bada5d7799f649868c792f5f5e7c7a0874ff9b495491c43294f2252a4733225a57d6acde3bb13b3d37dd455f68d9f85723f1d068a5ab269011b5c7d26b93802ab3392289f319b3b0253397e0705560503584b3febd7cbf70fd7237cbda93adaecf8c025839b117831eeb08d1bc845d79fd47e919b129b5a0cbe6555dd663344a4cc8e9b21dc734a78f6b239dcb1390b9aa9f246023b23110b1772e571d06ef1fb46273007ff93f1ca51e2332cbb9838a1e5f1040fe9ee91071170dea58b0a5963629549ccb7c1f43b1c0829d4ab9b551693c0be011ebdca1c4f5674d75d6b76ca31f676f83ea5a8407f9569ef27093143be22378b67ca8b0cbe6555dd663344a4cc8e9b21dc734a78f6b239dcb1390b9aa9f246023b23110b1772e571d06ef1fb46273007ff93f1ca51e2332cbb9838a1e5f1040fe9ee910a48c375adc56a1fb8b6ce0be2cde574b005f7ed1b93e0dd0b41ddb5808d0be32da9bdaea6ba9317298a4b060343ec253a9cda7b03d54a5d10a1ed40658607012a5e3f85fb3d820a3ea56026989b498510779337810b3e7bcaa3751a1e2601e22d6b77e92e465b2781fb990f02ea490f963c78a71431f487378497b86fbccf4f04e25dbf14d603b154e1e305c95db5e4f2bccd85970b3aceffa63328162b0e41286b5c29b5f4781a2f0da67cca0c6c8879978882169ed66a0f53c5ca7717150f116263f5dcbd5031ea189ee0f81d845b668c818ac90ed9a8a7c6e19e65d38d882510bfd05440f9d5ccd21973f964487327a9cd8952a0f528a5f69e762da61718134428a0fe9d7072b6875c5281f2cc61de9dca4a9f52a158f1f4a75a4e6551921a0b8f1df3500ffa7d58bb889920b07fb4f72e2be0961a2d5d6e7e62ffff151a0e2977210da9ac90492ac285447873098f7356f4597adfbb8f27b387a688ee02234d35725b4b7e79664df7a8b871f673d3523626ea61ae3c2edb1dc320f2504f0635d74d04cb32a9ccfea7b8ded3c5a689d634d45137058650abe1b821ab3efc006373823b8afc829c4022dd0948f972d8ffcadd5b2421a98e09b09069325fcf00758c5550126b05fcded390f0f42711cd97fb9b524c858ced81e6b2d8c5562e1678855a9e3963b6efbb42e57a959d91d9a99f8e8035ab6bb276d687bdd9be712f692320b99db1e438034f3df24c18dfed6270f1a63a3c9c66a44146a10e0d831aa8c7730cde3fa9077c98297fecbaad9a956d3503cbeb12c212780c2a57b22a2b7c671f31bc97fed982d57e28d11473750a86e683296709e2ad1956636e024d0b26933209eb44cf45be37cd54c37a2a9eb6e1fdaf897dd19e610efc6017cbae1fc8ca5b3a7fb69009c481c5a0e98ba53eaaa36444a32e1d1797cdc03903fa47022a1af8d268b19e512201f0f8c189233a3fad9464bfd0607da6234ba292d30f1b8ffd970697f5c0f2e9e0693288ef19964e2d96ded04c63109b4a93b76d89a22fa1d18930c8ccf74869df52dd1bbe837c98f4ac7957c16eaed1641d0e909f1d2c4b6e685e9832e3484dc8e62e5f33380482def7eb354914cfd13079e5e9f322158db4b0a425060bdc9fad3c898bc304f03b48df0102c5ae430480df55f0a1b12a7aaa02eb7ddf2b95c1c7751413ce9eec987db71945b4c6a280587ac6f44936252c080b2e65cbd83950416465fdd2e2152d5d5d59cb5ec09bd6c646b9e8287610a15cf7faf2116573070bc4660293495f704fcbfdeae190ff85b1230fd51abf28918905082534db4c2705ff82489f4acee718f4825e02219e793d559833a2781b763c281366766f31c7c68620d86bb437c0e70da16c7dc18a5a0ff8f89bfac708c905aee15ceada71e359c38d96e4474c530ef3f989d43dad9b03d4cf687d5004d3c8f0fadb95bf20b8808b557ace452cc8e9e005dd72bb4bcb7c562a9f8aee0dc1e276cbe499a24e12c29fc8b983972cdd11fe318c216ac9d7bd112c1d90580974ffb8e2180c540b381a4635a4f0793ecd123040371e22e6b01ee8398fda262bb50010c147c235531320698d345a6a03a1e70bc602cbda52e4f98ea6987c9a1789927d3a380fbac95b4b29101a161fcc0e60410d0928edc49d83f239b6a3bb09ec07238cb8183431bea09f838c0d3ad7d3634e68d29e4f68eb0ce11fcbd33024ca60ded58f80019a27c96ed2e301f0a5e4d31dff542dd1ab2a98360502fe980bec6577b99295a3db46a7cb9112c27d8db9938706cb4a83f96a5a8a88c591e41490e0cb536cc9f290b76721807716b1f092ddbfe8a080f1035cb1fcf70e272127008f4a22250be2ddeda5c750505d38a92bbff2e6e7ee6a1b33422360d67c5601fc57b4ce91099f4098a6b28dee3252665ed506aea9811f1c861638e53891a01ffdd3bb4afdbbe5cada594f3ca2ef3a08d0e59a67eba9765186f369a60694512977c947d41e74ff99b5eab1d52d401c9dfb91728a5c0f371635e8d2f3a9a097279eaa49951cc88b4eb5e57dcbce9b8c87f1945c38e7732fb61e5fae3537d2830bee439aaaeb5ebfb919242779d34044e330b15f3791877aeab3c45d6b61908d1cb170b5950aba25889e540331499dd91115811f5299fb53001c10cd3c4e4dc02bc6c27920d453cf54a9f9c60eee27c4be5ce6f0abf15722e94e817a4a4dc8cb0981f0fd1dd94f0806b2f1a25c17fccdfc22e8ed14125b50a06a7043f9a958e400000000000000000000000000000000000000000000000000000000000000000967c040b32787a6fefcc7666dcc4b8a1e44b767e47200c5d95fba0a25f8fae40000000000000000000000000000000000000000000000000000000000000000021cd58924e4d0d4d23cc3ea3ea3bb165351d49c38cf9a2af2dd45ea585299622b6c36982cef273cb5ee22458a5c254c36bf017e222131e7e68f2c683a2012701c00d594c8659fa9b5529e0d0365c9651a3a23cde809af6e13930a8649965f8f2c931c1dae4a5a3c1d1d0b53bb7c452d6f918d2fb89fb80d0af3af599836bac022c7f29000d0acb70db219fc4d5541ecedca971f9607b70b5cb765f46e6434b5153a5a59d216b17361b67183c80276cc35cad122ca68d8dedb283f0df493b28627a716fc1d86997f519c99809dc887da072d35e7d4bfdbf5bd464e8f18632e021fa67553449ed94e2bf100fe4312c2260971e781ea8fac7d825f30a9778bd0a205da1e7d68eed16ca03473ef61c5b8e8a4d9f1b0609f0af42a760508c5341a2a0cb4c094888841e7aa27599a9801806274c4a65baebe6e8c8cd1d4df08d1f8eb27f1e19b08674303cda2776642f29aa082022727f3ee411247fa7a7c4f5fd56729817662112b95ce72070695f0321ab7ca9efc1b1279fa8ce6302f06033cc238236411b8d555a732aba0f616a740f5827313c0e13b028e4560b54130ef83c9940a8e4118473fed44d6c2dd03b5ad5e8e9cab3097bb1b233f243db01fb0bf1c2208051d8621a492dc7890604da05d278cd12a5dba04b2af4d376dffe0628448bc2ecab0962d15408d3dd2d27788ccb8c90f63746bafa13c547797c9d617c9083e2e84fe1185000e954fad8ad7a79df92fec0988057aaff0028499b62fb46cfc0214abe1e2508fcd90ef32cfc2f1cb6c7b4aa3dcd0db6084ae2f47ce54054fef4e1314b5b3fd6c09e526923a85c8a9723c317ecadc50ae66a67cec7c009a9953012535946ac846f71ac3f8b74e23e1ca10533d8621c921e5985eaac4e3bbd63f1c21a89ce4c26c7df5221ce090982d1aeb774428a8935176ecdd21a65c656eaba6198b69666bed985397a9e483c462ed83949924050d6449054574771856b500d906f7d260bfa5e012a6e46fd5a518de3bcc3baa9794ac75f0889adb534ce849882feb2c295ae5960e8c7777903e5b3754742fe12dd90392bba2d47e98317160f520133905f22e8d1c69c0e2acb03c42223f3ebd1d9c11c1916c54f2f30cfa941a0d4bcee0825673ff98285c6b894088fdc21db1c36f2dc382981e8d39bddbc87a2385d0f59d29d757a2cd2c4d64dde8625ef8bd856c4d5be8bd58193677848ecb11da992bb12c246f866d05b57d3f22f39b4be7c0a51a03ac914bac7a69b0b38d11106ae8020d58059cfd24017cac3d1d3fbe045531deb2dad2b14aab44a6abeb0f2132756b92404feef432fcc5429bc5e76170383a6ef5993b1ad405f290371b0609d4eaf61f9c819923f45d977f38f77798fa528a757b99af673400497d0ca61d39b9a28225abd3bff670bba365424c647128a4fe7ad5f71cdf9d4f3328920530064c8429342247147fe7d77e109761a10c195908c7a5a782949424e6555faa07ad233c2110d46c81aeb135ff82e7074a49e5857a687a1de86738b3355532530d7499fab8d4d9641d93e713435c75c2d8419face12ad24666aead18bccc7bc128e56ab6d81f56dda810ba42cffe4c379987aa583dbce638ccaf30f3573c2b351442bcb98168dea850e083c34eebc0fa0413bff4657b1387d5a9339a78a1a9220b55029680615740296b18d3261371f7ca44c5abba66b8ffa2bfa2fc6564b91230064c8429342247147fe7d77e109761a10c195908c7a5a782949424e6555faa0b20721a6412506093cd56801a23f43a4f38ebdc0605527efb4cf64ee514c9f70a7fbe566f71c442339f250d902cdc0678305951d99d07246ef0dfc0f76e8920138af69876445e46c9f44c690cb576b6731f43b674efef772ef0bf4e8bba867212bb2100bf4b0111f7c6c6dab892fe35a8322df65178f6ee7347c73697bc6d6720a75021b67d84abc92dcc727d9817e646fb8dbdedafe0162efa46b1e73f9f0125b5cfed2ee577d619206537411d84e772865c21a9910eabb286ca2505f7930129e55675ef5484a4d465028414841e26f931af3f7a6f78831dbb80bc07480721', 'transcript_type': 'EVM'}\n", - "Time gen prf: 28.68826913833618 seconds\n" + "==== Generating Proof ====\n", + "proof: {'instances': [['d57f47950cdabf2cb79306e0f33e75726a2c2960806e902b0fc88d3ff949a108', '0100000000000000000000000000000000000000000000000000000000000000', '7500000000000000000000000000000000000000000000000000000000000000']], 'proof': '0x01630d95967fbfcc77358fdc93f047ecd8f828acafa3c2e919619623ccee0857253a227bf0c23b22096bd80ff86474e0cbe5295e39890a5531634affc6872c730c83e816b09a8df22bd4c4ded1f126338aaebbdf563de9655be61ac739209d6d2792d7f0c4fdb34e799fbb3ee0533b0a1a1c83d7598150019ee2a46efba0b7841bca988561a2950d344151f9de063af676e44dacf44c50e10d75e37fe17d2e7c1713d4a0594f1c77218b8075b4f6108ba8bf91810f6785703cc440cc9d8ea50d253a90b28e7bafbec148555a035c629c354d864314608dd9cf5dc37493d25ca32d00f83a8c67cbe81d2cebabd9ae551be59793c993728a3a5710bf690a9c27082d5cd86b2625aae582961cecd2be7e6013c39caa5dc12ff630cd35b160ae9a8e03e268106b3b5dd6f163d5d8336482c1d83a8d565de2f937270035ccff5c831d2cfb653b2a11e3a0e6f544ffbeabbf8eccf6a602710210b30ce83d9bf40d43ed07b8c2688c3b7b7ced45c4d9ac438f87743905f4711fa34cad2dcdd2a68fbbc825128b66456c6cb18b3109feb905ee1631f9c529ba21fc465a2e8d614ab7674e233bfc9d4dbddb480e6364d976a0fad06482e48b85981d015f86a7b30b345155015f0d05b1b36fcc24cc329bbc52a49dcea1fb912f7a6be821122e2edf47956415796c11b48808f16f9b398ab666bf6cc11032f6a75ae1585f7af0be12785cc609ff90029747e96e6a281b4cc23efba1c32a17f3a543027c132cc23259470c1009a18c45e648bafcedb428687d4f8b6d3ed7037d78c254885b1d8ce6ae72a66c00577c5dc7510b687fd03b40c8718ca1b8a1330daa170d56349c5a79de6d10f90593096b71407e34ff579ee7b86792ea873f58f24933247328a34c3e0d1f911809b4ed29928819ba29f18b7354730bbc961d4207ed82d183ad439242b748c31c12e7983bbddc896649ec62ff24b698915f9110edb90a7b23e26796e658ad311e00577c5dc7510b687fd03b40c8718ca1b8a1330daa170d56349c5a79de6d10f90593096b71407e34ff579ee7b86792ea873f58f24933247328a34c3e0d1f91180c3c9ae94c21b2454d15204d2d3c552ffed9e388b3aa05d986c42a26a4861b1e10c7a75a29e2510c79805e73656e8a7a51bf41ad9b5573eeee6f541328bb7eca0b07ffa4623216a629dcb9cb29f538e24c15bf48d0de8734ec2c4286646342af13700248b2b2468d0776729cdf232c1b3d6267ebbcd28f21b5bc2fb77167eaa00b07ffa4623216a629dcb9cb29f538e24c15bf48d0de8734ec2c4286646342af13700248b2b2468d0776729cdf232c1b3d6267ebbcd28f21b5bc2fb77167eaa00ec931052e0f9c6cac17f18bccf12946f977b630d097ff886a0e09aa9489bc1615b2384df2e8850b52c01450e0b0fc123c88f2f5aa98d29ab42343ee6747e59e2817fb12b09955cd869b137f527d62ba0a55da4967a78e86a606ad004d276d291d06e459a82d9abe7a70b179d01987f9b4faf7d91dca3c28920426b2104cb1ec1c2e1a39b90e052ad18245468ab7a016ad2139c8b7b89a3cd677c89fbb25277626052a6fcbd1b104cb6cbc1e4b1857b5ccc2fd431b8eee4a02d9dbd35879f9cb1db13a7291c3cb4a538956518ef1da8837538e89d6a96dfb1c923c8e0aaa0489068d5abb553c48c65d8504b0ab2847e00ad0d3c8f40dc782154ec98aa11738891261a0ee07835cc68f1c18e3a0f651d6db9d13c98eab00504e3b4204da37b8d505021b52afc34ab51526095216aecf885c62d3c241f25c0b5d5bc922950607340ea22177e07ebe70925d6b4cbf2e5db05070f52392083501ec51be8f2b7e76b51b592f9771377ebb5c50381b467e11c03bfda25c3aab7924b3751747092ccd851c848c8660acfd3f436cfc5dbf213e9ff5ada32512a74638518a58800236103d062901b48614232ca507e98e817c4f87189704e83359564234267bb90a3d9f7618176e4ec956d971e63227b46ef4d4b15ec78dbb10165f5c47b4564bd254355a176a21860787bace28e2118357ff53138a7b735506ccb20fa11823313e39a4c405af35b7089dfc8b28fcd5c79d51dd4da3229902580a83636771f78b16daf9bc27aa6da2c4507b2568893c2089b664850e435e9eafb4743bc6ef6ae060b45bee21dd03582e0e1f9f282e816d506225de23b5655175c12a93640cc8b1051fee74147cd1f5b2ce2fa7ac17d5a16123f10e45aafa5fa8edd3f757bb9a24d5e12d8919a11e37a48d83522bcedbcd55a5b9b339adfa2f7641a6ffb616cde16ba13e7129eb5ecd28e0c0e6c119dfea17d479485dbd66ebe65bac19443b3cff820e716e2f94939ebe11076506961ae8883dbc6edd13a8daa9415c633b2bbfa182c81ab501f29bc9557479cb6fefd6545f9d2f948d81349ad55b14cfbb090824874c9d742b09475d5165f3c91399555372b357b8ee1b5322dc00e0bbae9f082b47b41b150fa5eaf7f7f730f68b01141ab4830f812441904cc3cbbf028e8393c30c8d248d11dbd070d5e4d899b430966eabc4e782fbec933b44157c9429f2a63b20c8c1a7196d8fd0a5d0b938a971b70bd58c2246b60cb8c0f3301f1d3f5bf73a62248f03205ef8ba544fe49a853e1a6773a2602536d05915ea526cd444f82416559bb9cf1fd5472ed8eef65d13457ce8a9437b06b9ba1991ec05ee624689b74882e135ee15123f6d5ea76bb32c9074d28e5c09465ccbaf83d4e34a670ef63671713754aa269343beaf88960c9da0c55b97cf9c82f8155497dcc2c2340c1274fd9cc5482c15a9930b54541d39922cca68fb3af17924f799615db59907ad4c70215e0069f2070195e687a543691b5532a955773f1e000a492c24679bc197a7ae65bb8287c30b5df37bb3a8dff05a23de15274694648b796af04da8fe8178bc221524d128e0305f64735135ec8751ee99c5d78faff2e0d69b89ea243a0668a78dd2997fd4190f73022d8a9ac3ab6f965ea08a7b524dccd85b9db018877a3d147be3bca78d8e1952e051a44472af5dd2cfdd080634f33251b2b0578c2e3809815923609e09f10f448594233a5e3b9041c6432f7b277d98e8caa14fef7db2ab83f258063c1770027da6790aaa4667fab151ed0c31fdf5690ede58a58aeb2ec14c1132a519a56319d7e7cec7e8042ea6969d727cec82bfd4997853b861769ebbb68af5bdc8570d2d7e2a9d79ec3398f5a653f6bb909417d7ef2d4434784d2a9746102936f006dc06061105306cfb99f08c2beacabec3634152ed1f2b550e8c1a12fa0dac013c1a03cf449e9945b15583705954ceaf4485073fd7d0c72244ec21a47eedbf80b0f31f04b46ba14dba5b3a1d3182224e00812d725fc8f46adc2c4fa1a842390b118221992dc81286db28f4ee403ff80a94d847c0ab1b83479b3c1a3c1d08293336472f4770eeb0d973ebf8d57f359205d7da66cfc211a2d4037074199ed5b85636162e872376f1f650b614b40fa69373674fb6ba9b688215ef2dc9d63f099f65197517125741f294d75302e44045b8dbb586476eeab1e2e6c0b14950444e3b49ec6704533defda18aaeed5aad25567f4dc13ce6ed023bd8fff5bb78e28ee41a25db01d29152b503bb5819460c033ace6cdeed01bea5d85572d293691062d92cd40c628520c2150a8951beca783b625ffaad3ca4717b0fd1e5db39e75db647b2a956f0ffc6b06ee84c2630196586f41ecf527e13fa977384069518386d4287c4dfd9c1a0ee1cd8769e6a18ceff7586c5492c00aa3d1ae0b6e650749ca7ae61a59762102cf82ec54d49c1ec07ac662fa94ddb528e12106c3bf89a841af69864f3780b71fdd5880696a2317c12a402ff983ab051539399ad4dba20a1646d33b32f254610000000000000000000000000000000000000000000000000000000000000000150169870f0a0329db699437728e2d2a6608dbcf43b6a00bf86f9838d25ad37f0000000000000000000000000000000000000000000000000000000000000000217462a3f2c089738f5309bbbb12d82c0ff0463a38bd62488c1d4e0e6dc8a027000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023f6a4b95cc49955a747565f9e1fda5933435240b52ebcc98024e61a0b1c214a00000000000000000000000000000000000000000000000000000000000000002defe71b45f5a78c1b08e9a67b707a79c3bba17ef5f50ea1a045e170c9055c530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017cd9bea039bcbd5623ac81cc66c3f0a23b7e66e025da9a8adbcf25f0a241086000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016d03716a4f8f9f1f5ca58e0fabf7e127b7b36be8d9a504d26c3827d7a85aaf70aca577d00057ebdd8d94ac2d5dcce5c1342118581582aff099365dcbf96860900000000000000000000000000000000000000000000000000000000000000001ca4c4a07cbe64c1411dbc1c2ec4f94d6e7e4f62c6695c7f44af3fb19e8ebdbd000000000000000000000000000000000000000000000000000000000000000003ba484e6a98985b3c8f55d49a85d09d2570b78e7e1d397d9f77e365679e3c2e16b89c34033ded3e3c86b76641e1f129079505a3de51fe6004d75f3a698ee92214eee23c0fc5e47835ca83bc7c7a4f26e1e1d2294787a457f64906364a4c0d98046f2c6dce6da74f062a16cd1c209e2e65863f58b6b647896291c27cafaaf6d52212ef724870a9ca8a78d73737653e775e68faa1c44f7dc8fc7c5b9f2e31446229e0ff7e0ecdf79e86f1fe48566f32fa6836cd7233214748f39346561424ddc715415320f9a009353b8bd28998b12a870164fb89a77b6af41701c133520fad612ce0ae87e0829dc4bbdf5e2dfc31736cc94a50dfbf987f670206dc21d18ef36424ecf4662d949409b90066d51dcfa5df1e33081f75ff92bea44b70d5d82cd86a070292acc71a0d545a481625c44f753c97ec8bd2af9f74945a2100c8680c690a1443fd2688ed5038b6938d96582e2774a5ea94c69c1323c56f0b558cc1e3632904dc12fdc46b446bf3e41fee5f832ba3a7fad396b1f9b828a6ee625c4b608ea21ce945da0ea7219bc5baeade3060a3ccfbf48312b08e141c3890899584241c96090ef45d173ce9fd08593ff1e04a8180d3f211a5f0bbae65a671d6ed8edf28710e350ceeb638fe222a742c6add5a3bd72a5b62e5b1de22ce332b169ac9410cdc29de25e5a0efe7d3d1020a7fdfb2fc13e11652f9d746a4bcdb15b02a813a972416e838636f4f88d38b371ff0e1c1b46d840125ba6458f9a449fa6e7b1106b09c295ebf7722a0b9f5133c09320ae1c3e6a547255f76c775f3031aa250e4bae8d41a1e55a4c3946c02f53f4a5f1b259359a7c9f388afc3455506ef1ec26de0771b2f105bcb5518e606d34595ab988a0a7a70b5172a2726f25b0c76edc51e5431692af2b6d7c87a6993bf39bfcaeb45393e3c1e51e4377217c2624da0da388100a71ebe3cbb050030522b4420a5c9b64a35fa1366e3d572459586a29980ecbc44c410fd6168476b85aae750b32aca3a8285cbbb96fad707f2b29e1d42a97cff260c0f85fdc831be6132c2a6c336cca8cbb7f375f21192da7a6e1b6f0abde887f3160a27dab095cb3e669e007f32b832830cb5ab812055fcd32b80acdb8181feb2070b4b544068e9240919cadc8d23f407562f423a922f1fc8e92fda8130b3887c17182ba2547b26cbff2b66651e49b501b99d89aa2455679dced9d95a5702ffe68118b3ce3341ecb58cdf04ca2a3f85a3a38fd2e6bcfc24503286e7395317ec3a81207a312dcbc3fd5fdd5bedded39dff5434dcb5984c96be9d909305076f17da0712c96807349d5ffe9b8627a32c223e9dc8038f4fc1e3b1080406bfc1d2c6c7122c6f339ece347df3162b06f6ee1b635fc4a949f85fdc8691ec1b2baca727f16904d5d1b67900106a2c83dffbf0e57dfef02c096d41742eae9e740351694f7a63182ba2547b26cbff2b66651e49b501b99d89aa2455679dced9d95a5702ffe6812629e553f76b59fb873da9c0907b40551c34753d6c50970f58ac9a7b71a4a5c617e605f47e97d3004b046746182035db2fc7ed48631fafdcce44ddda938375e51ab0a86597afb62d152abef2e6cecb77020a2e3dddecf8331384942d3feedff11cadfeef2da18d9307997a32b6612486a65d87405eba2d669145eb26365f7ad22ea1a751c904befdc1cc657b26111bb9ee9770902ef44556ce81cdb16448d7b6268be35bbafb879e88024cf2230490e3ed6fd0e68d2f4831a34d63021ca44a9a0506c9a328c82694fe141038dfc25d4c66138f1a046e727edca8149af9d652bd1d6554a5607a90416ad4fdd4db56a81079a3ff6ad0d3c22ee89737454832e4ed268be35bbafb879e88024cf2230490e3ed6fd0e68d2f4831a34d63021ca44a9a0812c6cf7d3e573afe13379e87a7c1f13a646ed3b264e1804736aefc3a8da1812d95110411c229a4c74f0d8d1168fa9bfb2b00f067992c25218e5a15d7e26e480d9bfb83585a37ea9201fada62dd5d76d082617d1fee3b099f13da4657e41b6213787a74c8c468f1bf9336a62ecd994578c94e3394089b15a6816515cf368b43', 'transcript_type': 'EVM'}\n", + "Time gen prf: 4.1637749671936035 seconds\n" ] } ], @@ -256,14 +237,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Verifier gets result: 14.625\n" + "Verifier gets result: [14.625]\n" ] } ], diff --git a/examples/variance/variance.ipynb b/examples/variance/variance.ipynb index 4942144..09e36c0 100644 --- a/examples/variance/variance.ipynb +++ b/examples/variance/variance.ipynb @@ -9,7 +9,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: ezkl==7.0.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (7.0.0)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 1)) (9.1.0)\n", "Requirement already satisfied: torch in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 2)) (2.2.0)\n", "Requirement already satisfied: requests in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 3)) (2.31.0)\n", "Requirement already satisfied: scipy in /Users/jernkun/Library/Caches/pypoetry/virtualenvs/zkstats-OJpceffF-py3.11/lib/python3.11/site-packages (from -r ../../requirements.txt (line 4)) (1.12.0)\n", @@ -170,13 +170,30 @@ "execution_count": 8, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\n", + " <------------- Numerical Fidelity Report (input_scale: 2, param_scale: 2, scale_input_multiplier: 1) ------------->\n", + "\n", + "+-------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| mean_error | median_error | max_error | min_error | mean_abs_error | median_abs_error | max_abs_error | min_abs_error | mean_squared_error | mean_percent_error | mean_abs_percent_error |\n", + "+-------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "| 0.038848877 | 0.077697754 | 0.077697754 | 0 | 0.038848877 | 0.077697754 | 0.077697754 | 0 | 0.0030184705 | 0.00018275142 | 0.00018275142 |\n", + "+-------------+--------------+-------------+-----------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", + "\n", + "\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "==== Generate & Calibrate Setting ====\n", "scale: [2]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":2,\"param_scale\":2,\"scale_rebase_multiplier\":10,\"lookup_range\":[-20332,8],\"logrows\":15,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\"},\"num_rows\":14432,\"total_assignments\":1519,\"total_const_size\":8,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,2],\"model_input_scales\":[2],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]],\"elgamal\":[0,[0]]},\"required_lookups\":[\"Abs\",{\"GreaterThan\":{\"a\":0.0}}],\"check_mode\":\"UNSAFE\",\"version\":\"7.0.0\",\"num_blinding_factors\":null}\n" + "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":2,\"param_scale\":2,\"scale_rebase_multiplier\":1,\"lookup_range\":[-5082,2],\"logrows\":14,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Private\",\"div_rebasing\":false,\"rebase_frac_zero_constants\":false,\"check_mode\":\"UNSAFE\"},\"num_rows\":14432,\"total_assignments\":2722,\"total_const_size\":309,\"model_instance_shapes\":[[1],[1]],\"model_output_scales\":[0,2],\"model_input_scales\":[2],\"module_sizes\":{\"kzg\":[],\"poseidon\":[14432,[1]]},\"required_lookups\":[\"Abs\",{\"GreaterThan\":{\"a\":0.0}}],\"required_range_checks\":[[-2,2]],\"check_mode\":\"UNSAFE\",\"version\":\"9.1.0\",\"num_blinding_factors\":null,\"timestamp\":1709451045416}\n" ] } ], @@ -192,55 +209,19 @@ "execution_count": 9, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "==== setting up ezkl ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Time setup: 3.293224334716797 seconds\n", + "==== setting up ezkl ====\n", + "Time setup: 1.666565179824829 seconds\n", "=======================================\n", "==== Generating Witness ====\n", "witness boolean: 1.0\n", "witness result 1 : 212.5\n", - "==== Generating Proof ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "spawning module 0\n", - "spawning module 2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "proof: {'instances': [[[12907834141446617622, 16863260785082668294, 2215826187815521673, 2191547160659437828], [12436184717236109307, 3962172157175319849, 7381016538464732718, 1011752739694698287], [14958435514946940528, 17320992765071788231, 18318297740500540397, 2188255106962760522]]], 'proof': '01713e77a7baa37894bd7ace66d352aac8dc651d4b8b573cdf8ceaff1d10161608a13a3f0f8a797276ceae82c5ff54f8ba5ca7931833968765172c9dee431d590e88e4b887c726d62a26a25a21d3ccbf639801ee616bd342edb93a840d9380ea150f22c4be60dc5ffb7f4b3c1a3bc642bce6ba3acca97878b6a82362143a5fbd01b463fb763914da98334f3183d275a7eae21f65c69b5f3bf1200e4fecbc730503c58450bfb71cd6db4f39c63afe1ee5188d212c8e7fd259d5b4e187e76871e21314a1d29650b4bf5f4437ebea8a559a21232c7f23be8d14db2303b010ac058112d084cd589b5508f26c8051cc0b87113d3e74c1e1856adf7eb24485751426731143d063282078c7220a224b9a3c2395e01dc37c884518d6f6b5ea28ed34c63516059bc99cad9dd54ff4d435bb8e00e7c56fb6a6d2ab75b65b30599c205854d612183c9f8c0a43ea0e24c30cb2516a4a2222b3181a73d29ca627480c9e1168852621985af9f02005ca4105dd3d7891681a185593f5acb1bc791e51acb0d3a30b0aaf13f8f3ec1bf3e42c0ff5f406443a570a73afa3258a01eb802001812580c209a49d8c0755029ec77fe3bf135f82d8da4ba0be7e4b5059335e32659a38bd6b10c1af38c0059d84e816b4fc4f328489b2c1beb3d3840ace9772309b13c2916229e24c3524fe6d757ec7a3c1aaa0aec0d86b6380ed334bc059fa1dbd876bcf712301c009da58e4f75e3188ee578779fdaa04d50335e768551ea2275d9a75a8431642c47b60c9332fd1df8aa74ce4a89936d2746a15c177704c67864017a6b38300577c5dc7510b687fd03b40c8718ca1b8a1330daa170d56349c5a79de6d10f90593096b71407e34ff579ee7b86792ea873f58f24933247328a34c3e0d1f9118281d6bf0c4f7413fe786410bd96d5eb27b4eebd12a00163fb19e3cc763f6af1012b5c71136c79acde2997608774ea110d86bce04e23a5c06259bc055726a49f500577c5dc7510b687fd03b40c8718ca1b8a1330daa170d56349c5a79de6d10f90593096b71407e34ff579ee7b86792ea873f58f24933247328a34c3e0d1f91180ebaf320c6e4cb0349ecc6f755cc4d09e29dd54ff3b3d5acc6dc046e25f2e30a215d3405ad6dcab3e31140e93dcc2d2ecc1c81fa8e1a59dafc94d4a8a2ba51a6097fd5f462f23d2189153c38018b245b60879abcedc899c6943298780997402608ad3b1679127cb377c0c521db2b65fe95fcd7ec9896f7dbf28e6b14168ce6b11bd1c5d12fc3d2f2f6eac34d099032594ed5a6f579dd222c069dec8ccad861d017d18c23b3481c1817c7bdd7efdee04649b365eb60125edc59cf1509e0d82a4a1768edd98ef94cf4e7078e71827492fa55acc161b92c06a6e48217022587e72c0d3dea8bf1c1e0c38c757fa75d738c984268ed8c2402af01ecc96ae65d2869160aeba91b8b548976ab3d898d601f28c8fffb07782a311d534dd80583872a9c2f014d24d87e5c554d8fe2a33bf1067c10d20885147cc8a75d5498d1b1e295aec82d7f093347fe8dd8dba1db7f17cb7d8eaf28a482859284c9707ba18005d02b4011add617ff0f203fad59e971b0d6645d011ea433d0a2d14b6ec389d9f697193e0ec303ad85b773027da93b4d0e0ed386e2ad4cd4de90dfeda264bd4d20c6c9f029459e547f48775e73ca23c29feadb0a92adf10aad09d7742405a6d6c43398b5268d00363676e7a44b44ac0483ea6d384d386622a2debd881f28c42db5ca895221d6e087cbd721f917f1411a537376b80da4da324a92c48342eb6e550b7ed260162e7e55dc3f25b30c2496df9c6b9e535c6c719423ae41cb8fc0deb5fd6fde3726778d233df48b56eb7a50fcfbeacaab4e2ea128d2386c4ed846724e8b0ffaea23a3bc3fc3e4474f037acab8079426cb303aded5f950c7c4cc5b78aa446170d50139e0822e4684ce3cefba859c22e6d1cf205a019b0cd1ea1694ccbfa2af142026eda4846e52d23ddf10d38385300b2913158da5e5dbcfed8963b987b750b64202f8d613afe0c1e67e684499465fe74407d061e66c99023b50763095e9db4f75091c8b9629dadc516a1aca9372e2fc5ec90550cc0b70cffe439a04b550f85dbb06d06a46f7aed32a3af57952b41bb8164c1aaf85901735e0fdacf2a816e689a1016c4bc97c95e9c8f40f55db2ba83f0ee8595735a696998acaf5495a4f3657de11abb7d43fc151d29c333c5acaed43e856ccb5e37e9551067a9ba66f4e0e8a4c2c6545aa48d9772e490074e9c37620bb2e6a3fefbf220e2054428654ae5a415c068774b9ad2fa24a25ee4807d5e9c7bd1c3a4329479039d7df251396e5905d7b0c7f1ed7053732c4027482e4e61115a21b1980baab6a8fda5328c5d6a82db4db139443c8ef3b9e27631ff84d8cdbc89a458731861e58447eb8ecedc99fbbd3812230cee50cdab15aca750f735da9c820d6ce5421fbaecccf73909bd6de38eb910367c7da448a3edf29acc069341db163b51965301fc709b2a96181d79dd753be14eaf61e65b7091f36a165bee8cacfaf01e466906a8745f00ad4f311c7bcb5d72dfc9ae0f1b58ee8011eaba15aee05db1b45938e97e3824b4fa954b1728cbbf406ac09c4b9e01db27e6a68f676945eed042122fcbcc4f07f4070727de47fbcec131bb13d7a4787f9330a13676f27da7f625355bb29332085656e7d646aa7a07f1b5ca51fb0fc7c3f5054f4564f464bff1286e6a48693420808575de594b4824b05bd55235f70e667f8f4053acee69520deaadd672cefcde299740a20c59b5f2b265100f68db0baab94699d9da62f9b2aab69612b08921573c07bc3b47d634273073338fcbf34c3826f726caa1cd5e81c5b41ff970096988893c4d1cd726f6f97058d17232efd604bc95396e5cdb551e34f3e3c3f2abc177416689fa1fb0e221313ee1bfe192dc811064203b4c8b3ad9892db522538ba8a7b851ee5e360c6eec52af3b09d221848f4f9a62273288de91c5ba1faefc28dfaea3bb1bb44e94054d62cb9f20c61d5260aaa67d74a06b8fc832b9ed470c75b5a9115793f49be5cd7c12a4127661207f72f641970ddee31eec06fd2af7c3aeccc3d4b09f445c7639a30219d9595b117c04551318fb606faa195f9d5249c06b851afcad4639777d49c4900e8aee893a10b4f678189da81ccc24400dd5a0db8c6c2ac7977839e6fa19fef1ad483ef163a30579d61c90bf8d1ab4a887782b33a4179e5d8a223597a0981831946ba649f0ba86cfb30d9e28413f823ddef301680a545d9b24d514a3965946100e6363f39ac12dfce92f8a70051b42fd38ca48a7fd8add7bf34248785dee56c000000000000000000000000000000000000000000000000000000000000000012f5c2169cab144e4627ec32ad30948cbfb0bef29107b4ca422c0b895fb530a000000000000000000000000000000000000000000000000000000000000000001a5c30b5c40d2688f097e89e630a7eb6e02bb59597e79027192e09c01985a67416c02121b289072e4396de984895a971054a6ca8d3e793ba2eae76b1b11e5e260df45cf60878c823f579edea9b8989021340bcbb582552ee768026c29205c04627b569892bd812ef5e668f0d2d2c2e2a3ed2819fed201f5559b943c613b0f6ea19733f754eb601c6e7fb9be9df1de2ca9f53359d35a1da1b39cb2c19704a79b416c134f3fef2ee132e127eff7ae6ee4d98f97b1b9224b910bd128990cead7fe404560597ac3412ded4023876917329658d180b182c95a410806cd68b2432f7c81426d60cb1008d6f097168fbc5c3fb6d0a6c610a9826636892204afe7dd5ed76036436e95142ac10efb9b0fbce90b3bd039aa34812648e6176de107b3b6a2ae91a74d93049a8e09a2e6bc09b0f22d9a5a8db10328ecfd9c71245568e05b428ce19d2923aff31ba7fb488d00706254e9907706e862f54e909d8cdbfdc65c30fa915e29ed0aeee4e88ffee19de86ba2830d85c9879a479322ca9bb6fd628cee21f130280372f9673217e9148a6e5ef4f31b542735913d1dfdcb4812b0e0e1c76a01579777f42daa42b87809683e213c1d95c61c63f0b4cb79deb755beee5da0a6a112cfa5c607d658775a996ed2ba5b095cf149ebefd4967b6fd3403f6f1ff746a1905fe034f5708bc051199918ddc184f9e6b51a105bb8496edd0899ca9824bcf1246eba600bfbd1c74de889fa53b4396c514b6de28d2d51816c30173affee1290eda3b1fa9922c45b2318e7e7fe9e7de888f82e81affd85cbff7870ab46d4c692014e54a96035b18f34a9e9824b583ce25646419abec9988fc2ef31c4e0ed374040dc7a06a6111684c7ff936b2f591dd7b1c2521eff2b8a1da3772bc1103c1e024cd7b54551cfa2cd60574e3500829458cf2e33ecb07da6a9ffcc03cef591b6f1a910d56510830117bceb3686a55cf2bc795ba152637e8d7d8378597a444bd3e23868ee21105bed1f8ccf118b002fa3f7de30d2c36d17c568c4b4832099f94aa17098ea265e66cf52eaa9ee00fd2fa69f5631479f61d8005eec8f7b07cb582f40817248fbc0fe96db53ac43f9e8c35edd4915dfdcb74abacaf7027d9dd4646a82adeab1612c07d77bf435e59d2e2950bf289916e613e9f64e8cc03ce0455d8172c5e7949c8670e195b6d4ddaec8f3a7b9794a36ed441d697914f16e837fbb9561bb5710f621ba5fc529aba2eeacaeb5e15d6fba8873e3d2428ef01c6a7f519d3297dfa425470c93b7f1344c55a91269cd3191bf836b512ddd4a77b4b2a7b4f730f0659d8c4db592707c785c01224db3926e1ef403e57d35fc8e8cc6a621ade5a0a46e6a2cd65d05d4b6bd86d0d01e1aac46130283e9fa9cc064ddd4d9234e60d0a6de804557110fef153a4e814c1e95ac1f192a190460bd09aff84a5fd7051900dd09bf5e9bd2358348cc551018547837a451ca7be6e350c3a3920ba05a8bb0400b5d24785694b9e7f55ae9646b28d273a391141d3c2d1fa7e905f7fd95e1690216eeea862b939392be0f81c2a3c7b9ed928d39946344965a9356cc5c8261f8704b90bfcd652c60fe83ab3799b9b1585f1933c7954092799858a0ca2531c1d28176c0bafc8184189e10ce440740dc31ae87d2d0f727a5fecfda424cf57df97441e95af1ebb8f1b344d7c8d14e50e96fc57c832ec6a433d705b11859e5be498840dd09bf5e9bd2358348cc551018547837a451ca7be6e350c3a3920ba05a8bb0426086722114e5aed5dc30682d5b83df01a8d57c713cb200f3deafdbbcc22a02715bd44fc1966b56af2c5886b93b78eb894f6f45eaa929cf8cbcca47d336468ef2457157905f527f4b761de5d5d41c405ad8335aa2c4fa5260cfac1531809567b25454c85b082e8c8d48a5526fb5ac1a6d15d0b70ccf762ba31701b6c2d1a29c40f4798b7c20b6f2bd19425d661e8d74f3b83ae9cf7aec73a2d6a121427868e42073d6e992ab49d9664ffc08ad29663b34dcc456101c61c64a628755d59113c660084c8ff886aa0a2ab1fe134726b7f27546fc72c901cc7f3d8edcece851c5eff', 'transcript_type': 'EVM'}\n", - "Time gen prf: 4.451239824295044 seconds\n" + "==== Generating Proof ====\n", + "proof: {'instances': [['31220e5513f6e9b7d0f59d8f019cd197642a431b2136f0311abf6046c9006227', '0100000000000000000000000000000000000000000000000000000000000000', '5203000000000000000000000000000000000000000000000000000000000000']], 'proof': '0x04c63f5018b3c3e85803cd04109b86b6db628a889f6620a3dedc99830f4fa23816b46f09d935186373d669afe3551d407726bd229cbbfe9171add8468c1e3e6c1d8c75274ac68bb8b341e170840465668eea872b55f9ce297ab920a681be1fa7188215ac288ede99f7aa95b1c5d2a0a9befc12e0a362ea343454ffaceaf57f4607c2a58156dd68dda2228df43484d1bc1eb777df0cb00ac4bc145d33dc005c192121cf09d689aa74a86c2f87ae17117eb1b1c26453390d87df487c097723785607da72f5d0253a7fd00cc0b3ad2c7c9d594fbfa24505caf78757996eba62523f03a2c7dad42713bd8b7c3b6d4b146e7484eebeb91a234c65bab5c4c8777d3c7b1e014853b2b5c4fe215eadc92650eea8a0b3a7c9745491c9822f990ab8aca08b18b45d44749e6dfc46b3a8337b0a6250f1f56b59fe49f343f88157c44109256726ef97bd7654e2d91905d67087450f39ce73ccded6d64326475491fa940ea46d0769a70081ccc8a8f2254d4ece5526c4cf2b4ee2e45d454ebffab744b5a8bb5c1c79a66117c858c88ccc66ee8e418be34e2045cd970fe91b4079209dd72821391c54d9317992059d6aba5e4e38edc90aaafba4119f14fa8fdf27f7a6062d577308a25542ed3d6568b1279ba0542f56675ca5e2560cae47c58b71c6061267809526e2d6eb5914b87ffa1e538318c485bbaa93b7dbb2137dfca6e09a43af5a6dfc1950a49a29541a50f7a8c11f891556f644496668d8708b884a8591f5193ec1622416ed521fb5be6ecc484c4e4d34101826797d97df9a3933b013738402ed7467105dade3188d564c2098eec6848b2bb72cc74b2de6f4966517af714da24f2cca2e415654867b72c619f9d6e70bfb58fccd62b25b201f8d4bff39a0921a024bf7115478743ca949680bee8c2e2a8942911176755b39f8e63efcba876659d119df23bb25125bf2b4c56985b2f3c4f54c0130a5060e650dcf6bc6ab5cd08f3ca2e6105dade3188d564c2098eec6848b2bb72cc74b2de6f4966517af714da24f2cca2e415654867b72c619f9d6e70bfb58fccd62b25b201f8d4bff39a0921a024bf7090ff4a98df10b9d2cdc9066cebe5c2df6322ef595dfe3cf08892aaaf49bbd920425383c5983a87b273825e40ab4a5d53d97c1ba5757f2abc6ceeefe85492b042955882248dfdf8582188055c89d887d8edd98b4f2dc3b3d86e7e063c912f2c315e5ce320007f82bdc7ebe84b498513476fa56af5ec852e8f27fa8e88f07d7632955882248dfdf8582188055c89d887d8edd98b4f2dc3b3d86e7e063c912f2c315e5ce320007f82bdc7ebe84b498513476fa56af5ec852e8f27fa8e88f07d7631c914788892d71a78dc2583ded5f88280665a9fd74c9340e6f13f93b9dc2b17b1e5d5a4cf97f18e278523fbb6ecfe94992821dffb2828a1b96efd3e77192a9a21b20157031ac78cc867916acb336ae159540aea93b9e826cc998ca70b79f28391fc492482c0650faca9c465d7bb1fd90826c308b0752e5ef956532655c3b50220dbbc69dba219b0ccbd391300b037cfe31b886826e4a042090f1843d15668af806173d0c009fc4c7e2c9c93b1eb59f0f0c81910a7d6b57462ed2c11f89a8011f11205f0bd03f294e5cb7abd4bf7b35d4a57721e75e258407e83d421b2f1f2ebc189d294087c19c580c6a77e580895401f6d848b059d2585ff9ac3d3dd8c3d4fe2354db6778ea18fcc7106e042da235560ce619890ad91e758d95e18b30acba0200c5c44017e2d93b6e0dbdd0b2eb2d00118132d85dd8b0d24fc5899a3b347f561005f81ab4063b76fca76ff087a00984c892c8c58cf5c487810d1a26c24d32610fab13907d85d60855284d677d7ef6507a9e2daf0a8bbf3f05df11e2b82e68ab2f1348ce94c6a630cadee0f523e07f594a8ed3a26ecc06bba3196e39d73e890a267eca57f7b816dc06a825cd3edccbaa5f3db0e40697023e81bdf810a9aae72d28479f6408e4b3155cd6611ca493fc6db89453a2a0f75d344dbed4671ef236f423aea3d6bfd643cc170d76e6c5bbbeab67461372eedec4e75f1359b0cb9b0147098222a3105c9a30d5bec46419877f1e6d08e35f822aac71cee1aade75b5d1c82b982e857e877e294a3b876386e6d65f7fee7453808813ceb1ba655312832ddd281506fa46749fcd3d9369189b6460250fbd1b545801f1f57a98cb3ca34ff77c1a03a122ef3702e44ff2b1f26ea0d05a8df8a0dbfb7f26b1cf558e9a8d56e86c1f5a7348401e660e1501f2b32e748f301a6450bef2dd86e328db849b5e7fea23232cc2216e3abdca7000dd009370b3d5038d66f22ea2dc8a48f0dd04525d04691821355ecfe849fc3e6783de238b991183c378348ed9ac9e1ddaf34259d0654d24cfe9bfbd51aacbafa6a06bc46f7de1505532f19aeefe81a3b72d1ff8ca288c0dff67cb7e7ff16e14c7efbbe8978a93c7903ad12e720ad90f7dd73cc3fc5cfb1480a788b8a7da9b1a79e0570403c9110ea801188a61814b1c26c7f8671e8ca1013662f83bea239b33d90ce54ad19dbf980f57e2eb3336040ecc0c0cb672111f073062f3c38fa183653c820a6309e9dbc7f0c11d85433bad6558789c1d90e29820c5fe3ffd4549d4d88d06d5655b5fb7e9dd44ee4a5fb20e592886f4c293ac531fccb65c23689d4d160a6baed637c825fb9ba595e080a5e841d68c848d01352d0245af72b9ca6de23300f5c7df741043ebb1a712c0a377c7b779d9133d70901d09ea52cfcc5ba9f04c38958db1075b0bcdb4eb7dfbb74ded6ae8194bca7527332d101a875452392ef3944112f5d23968c4129d517860efbafab5187dfab443f115e29a956d22ba595dc3bae6985fbba13efd32b14b1c2dfa4db067719160c0c91c559ced2016f0b8382d128a25f973e401278c8782dcf13436c31f721511fda5265d7e1a67f07ce85958bfa763eceecbd1cc2da6341d605b73fcc1303421f893216826d18799794fa110674be7f8ea7c18893f1d3a17df4bc5c7a7c26ea00f742e7966b7652342f22e8087c2c2d36961ddf18fcfd2675d4be72a35b9a24cd97c0381989071f3449717d7ab9f00664758c6a8800a9326844e999e624186ddfc742a9fd99cb68ef62f0b2159b7683586ce41925c51b3fa16c819b334bca039844110d2e449ba1cb838776277efb9b345759f20838ededbc7c4dba02f3cea734c1e24bd076050c3ccdcf7ea0220a3ed673ace96750bfd2c8d4fd0978c3c965c43882ce0660948fbf570dcce773b41534ee169b91b43a84542f45ec0d2422dc7206f2c29d7fcb200909f40d0ceb558f2314d2de3c24bcd3f862c5feb21ecfc0f1db71432e9952619c0362cdb452c62dfefc92fa5ba08a7b1200fb0d6ac94b54101911bc74505b7e21c3f5bb4c37263e835026d0672d4bf110cc8b969f27e2a2b8a8c1a9a1eb0a65f58016cd51cae5b0926bd8dbb972d05281e0f6653e7553be426852e0a96e6b8c1671b9094b612e3547f702621402e28b4833cdff123ee0d5dba791dcf79001eb34522b4b77899bb8b9e64b5c8c5a076a6ffc8516bff3a5a8dcfdd024c64f90c3fcaddeaf7cbedb5e6b82b35593785829278bfc443a921f474be3320f775c8f1b824e3a5974c2507d351df8ccb403011554b0ae3d43ef676e26958198da1392d46b2dd973dfcfef5a07f540e454e2f0354022278166d2386c2c96e0815b7b76cbae2f37abb45d78b86053c5e7ee277e08ed176ef8eede868ff67d703ee1b6c84e6c424e03bcf07de8a331f7553d4f088b2f2a0f0fc98ac4cfead261c697950a5c8e109cdfbe8c21cc00ac1922ab74956beb48eab791dd8fd9588492239b40860d91b6879be45dadd3212abb00fc5dcc8f3326e1ff2ecbc97476d56000000000000000000000000000000000000000000000000000000000000000007f5bf8e528f9a1ed9e081073cee9bdb9bb5013865e1065426f73fa14f63278f000000000000000000000000000000000000000000000000000000000000000018f49fe785f238cdf3aaac16d92f79dcc3b1e430b84d4b18ee2680f4f13282c4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018af3c2d372830d69165e787319d74f0e2707e09499eca89238835102d2346fb0000000000000000000000000000000000000000000000000000000000000000026c265ef564de952a1e0f973983fcbadbc23c8b9b14a1bfd755164b85da879d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001974f56e47dd47081c9e8372f840585d479d686ea60cecbe5e47a1ef6aba642b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000819406767d0baa017d01239de5720e159b1af19ae872f17e116a2a558471e162266fdcb67776469d9b110cf32e162eb58feb8fd370c42ca27d2c71f92a813680000000000000000000000000000000000000000000000000000000000000000047f89a6759fd22271d2a0274b340c7c7f7b75c49efc2800dcce6edd84038a3c00000000000000000000000000000000000000000000000000000000000000000cf981f561e6f8daeb35d5075870305f73497f40488b955f2d395c4d19807c6e089dc86ec25fdf3849bf69656ac890814b2b02e768e21344b9ce745d06eaac8810fe5afe7b98459c0f11750d86f08ee0b49ed530863790519be044bcfa1c2018069560c22860af504147a527e663a6d8c0151c70f33ab41059905bc3f4d4d40e0f01fac6c28df86ad960947073a031c6fc69a5265470ad390b7bd8b4c790267d27e25b1586e1a6696b4de46a5b1b3df33e385fabcc1c6d5b7b9df684f2de2b652a87c90ba1c0da85a5943c9e9529e620a85d0a214cacbd6cc39698eaf7e9a88e2649da5a38b3713d3067af5af3aa4bac554a7d839e32535f018b0317366d63372fefb1a0ec0f502990f6921f020a5e3e0ef407bbc4d293f7694a7a8f7ee4260629a0e6d6aadcb9efe9756921aa2a3e138d6ecf7d619fa77cd41842044d52d7e6052942b0f2102750bb3a6f81b68e82c14b538c85e2d3db2110f4a2b0917e2cac23e07f8c0707a3345a35e28fbf0dc6fb0c79f6d1f9af5bb31773a400047c58ac2037165928c4e2a77dde203bdece63371302b7dfa3a3cd0c6dd5a3c3aac59cca1fd4b2ff7a354dfac10e4e247990f655407db0c360f56f54fbaaa6f7c83622ab11575757cabe50d26dcc3582f82ffe82c2a89b1708c513a82f77e4a6a434d1de00d62f267c7876b288176497ac58983ea91f568bdf37ff9347ba45462af8e04a057a203fd7965227425d7ee6d0e5d212b97550c8176bd677154ee59c4d65e0ae0b8c581120bb2dc122b799dd36e4bfb2f744965fa2b6ad0e7488f897ee7720dc2da591270f81ca50b6039e94d3199a324c78aa01655cfabd6a1744a596d25a261a833493c978b6f6207ca48d168c0672b0544f10f3af0f52fa597a20f0d5efb721f6a67024b73d7dd39c1bd1620f1fc98b26eee0aca7eaec67dcf76a4c79a972251e1ad021d2a2e2216b51150d4bd8638b13355e419b992025ef974978bb5a1d1571ac049c10d788414cc3e3c5c662a2e33680255e31a19eef0d1a613c5d93840300af57df29079309ddbdd089d32363cf710369b235a19f8d4d22c87361a911180df59df18893c688f348b0330d4ac99cb90b73ded0d48fabb6d2d7e9de4d741adc12eee9aebfbdc1d89ff2d1846e8f0c23ca509c4b704ed4d100621c9c46971dae7d991f5c2555c81acc25e29ba13eb00db6f6ef8c2075b4551c7c1ed837c3050e77e1be106cd3c540942e371884cadcd16cbd00d889f79b3c0436a3c759fe2a0c278a293ca7f6d6cf08342492c9530f5b8ef348869993598d1618dd05c77312fa5e673acbbafc81478faf70d800e14d3e898f3e9f0d1f46204407551a318122c31a0cce17e368eb8fc114924ce688be353aaf7b4935216be3a2b8d65cc1b11cc08aa6ee50cb49ab5aedc921db6fd0e0c1f239a83a6c0562c791b863c950b41dae7d991f5c2555c81acc25e29ba13eb00db6f6ef8c2075b4551c7c1ed837c3125822383e908c8e838aee6f3389fca95feaefc6891f555c486dbc2559066693179e7786f0f8cff5c0f66a3c256cabb41a133cce5061e2645ff0fc826eddccac24f7674857649c3c3a71d9984a7bcc3012c36603f69cc787bb01ba7316014d992c0a90a7ab6c93ce245284278da9a6310a277b1a8e2ff203a373df9a0c8960852cd0bc7bb59d6b333b0cb038150054ba7d4aadbdaa9f841a2f207a3669a77fc22026e9a1871239fddfb9c8a1ba46fb3955edbbcd86ba01c83a473db0c4ef6dd71b64034b26e67c662e646c1a1fa9676a9b10673e863e69dedee732d28fb8d6780743ac63c180d4fc05ee254fe70efa699efe3ecaed1cbeafe9ef95b97c5b66ca2026e9a1871239fddfb9c8a1ba46fb3955edbbcd86ba01c83a473db0c4ef6dd70d6952d24b6451fdf162c0ab6bd5c96fd34fb6757680c26b54e86a51c14d86a6265ed71fcf5edff698bbe4c8fe3e14c164f3a42551f339ea276b80e9f8175aa505e39b7b9527cfcb3fcf73d9491db5b16755fd87590699c7427988afe3aa6ac227e513f5d6254f9dd0778c26177982251d32f636a2350b210e2ca33d0ef212d5', 'transcript_type': 'EVM'}\n", + "Time gen prf: 2.5115292072296143 seconds\n" ] } ], @@ -263,7 +244,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Verifier gets result: 212.5\n" + "Verifier gets result: [212.5]\n" ] } ], @@ -272,13 +253,6 @@ "res = verifier_verify(proof_path, settings_path, vk_path, selected_columns, commitment_maps)\n", "print(\"Verifier gets result:\", res)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/playground.py b/playground.py index aa5e6ac..5f8ec4c 100644 --- a/playground.py +++ b/playground.py @@ -4,8 +4,11 @@ import numpy as np # generate data for 1 col # array = np.floor(np.random.uniform(1,100, 50)) -array = np.round(np.random.normal(5000, 200,1000), 0) +# array = np.round(np.random.normal(5000, 200,1000), 0) -print(", ".join(map(str, array))) +# print(", ".join(map(str, array))) + +string = expected = '0x2dac7fee1efb9eb955f52494a26a3fba6d1fa28cc819e598cb0af31a47b29d08' +print(string[::-1]) # print(len([9.8, 43.0, 89.2, 40.0, 46.8, 1.5, 33.7, 14.3, 42.3, 37.7, 94.2, 42.1, 70.3, 73.7, 18.1, 80.8, 61.8, 44.1, 4.9, 8.3, 71.5, 52.2, 20.7, 27.5, 75.0, 6.1, 97.8, 63.7, 45.8, 62.2, 18.8, 92.2, 74.7, 37.4, 79.8, 85.6, 97.4, 99.9, 21.1, 100.0, 34.9, 41.5, 23.3, 77.1, 29.6, 58.8, 23.3, 65.8, 10.7, 56.6, 80.2, 23.5, 11.8, 6.2, 29.2, 51.1, 11.9, 14.7, 2.2, 43.0, 13.3, 80.9, 51.9, 95.6, 26.1, 1.3, 34.5, 74.0, 22.9, 62.1, 54.3, 3.5, 95.0, 4.0, 53.5, 71.2, 5.6, 18.5, 43.0, 62.2, 16.6, 13.0, 71.9, 3.7, 99.7, 79.2, 83.7, 81.3, 14.8, 46.3, 22.6, 56.6, 8.6, 40.3, 56.3, 59.6, 97.6, 65.4, 74.7, 11.4, 90.4, 81.4, 33.9, 37.5, 17.9, 68.0, 71.1, 61.6, 13.6, 47.2, 68.5, 99.1, 31.8, 4.6, 48.3, 93.2, 38.4, 92.8, 2.9, 59.8, 86.4, 35.9, 84.1, 83.7, 55.7, 25.5, 33.5, 70.8, 3.3, 50.0, 71.4, 44.2, 83.8, 40.7, 72.9, 44.3, 25.6, 49.4, 21.1, 32.5, 75.4, 89.2, 65.1, 36.4, 91.6, 79.5, 16.0, 78.5, 22.5, 50.2, 33.5, 20.8, 63.1, 31.2, 92.5, 55.2, 43.4, 1.7, 84.2, 38.8, 80.9, 67.2, 43.8, 13.1, 32.2, 31.9, 18.3, 19.5, 45.6, 43.1, 67.1, 66.2, 67.5, 66.2, 6.9, 1.3, 64.6, 27.7, 45.5, 56.4, 19.3, 35.4, 32.5, 47.3, 62.0, 80.2, 7.5, 48.3, 53.8, 86.9, 52.7, 77.5, 43.6, 24.8, 93.6, 27.1, 29.1, 87.5, 14.8, 71.3, 66.2, 94.7, 18.5, 53.1, 40.0, 71.8, 94.7, 35.0, 93.2, 38.3, 56.6, 82.3, 4.0, 6.8, 72.4, 73.1, 18.1, 93.7, 40.6, 89.8, 50.0, 61.1, 73.9, 20.6, 91.3, 37.0, 60.4, 89.8, 72.7, 37.9, 2.8, 40.6, 41.5, 59.2, 63.9, 32.4, 78.0, 57.2, 33.2, 66.1, 44.7, 45.8, 22.9, 43.7, 73.1, 99.7, 11.3, 47.3, 32.1, 6.8, 13.8, 7.7, 24.6, 71.9, 39.8, 1.9, 83.2, 12.9, 25.3, 32.3, 12.3, 54.9, 81.1, 23.7, 81.7, 89.0, 9.4, 42.5, 29.3, 24.8, 23.9, 22.3, 36.9, 59.8, 34.6, 62.3, 63.0, 11.0, 24.4, 6.2, 50.9, 75.9, 2.4, 59.9, 94.5, 13.5, 68.8, 53.4, 78.6, 4.3, 45.8, 67.0, 59.2, 16.6, 5.7, 75.5, 38.7, 98.0, 52.1, 33.7, 66.8, 27.2, 27.6, 46.3, 58.7, 19.5, 62.4, 49.3, 32.4, 67.5, 96.0, 57.2, 84.9, 14.1, 9.0, 51.0, 32.1, 89.0, 82.8, 81.6, 10.1, 32.9, 48.3, 18.4, 47.6, 98.3, 55.2, 50.8, 57.1, 37.9, 97.0, 8.0, 45.1, 78.0, 90.6, 37.1, 84.3, 73.6, 25.4, 37.3, 99.7, 32.2, 61.2, 96.8, 58.3, 89.9, 15.8, 2.2, 68.9, 24.9, 93.8, 16.5, 47.3, 89.1, 70.8, 38.8, 95.2, 94.4, 74.6, 11.1, 28.2, 66.7, 67.3, 99.8, 45.7, 1.4, 80.2, 79.6, 81.5, 99.1, 59.3, 45.0, 4.0, 99.0, 67.9, 77.4, 82.3, 87.2, 43.1, 23.6, 69.3, 97.4, 82.8, 30.7, 20.7, 21.3, 63.8, 71.3, 2.8, 43.1, 53.9, 72.9, 82.8, 36.7, 59.8, 20.4, 26.8, 86.3, 81.2, 3.6, 11.6, 48.2, 11.3, 43.7, 6.0, 24.5, 62.1, 74.7, 82.5, 69.1, 20.2, 2.6, 16.3, 4.9, 2.9, 58.6, 87.1, 2.2, 11.0, 51.7, 60.9, 67.9, 42.0, 15.8, 47.7, 16.3, 45.4, 23.2, 81.3, 44.3, 53.4, 29.4, 11.9, 97.4, 57.5, 36.3, 8.3, 53.5, 31.2, 15.5, 10.2, 18.3, 92.9, 41.0, 92.0, 73.8, 80.4, 46.1, 65.7, 99.4, 12.9, 70.9, 82.2, 13.7, 65.7, 91.4, 94.6, 1.1, 86.4, 32.4, 52.2, 62.2, 3.5, 87.7, 11.3, 51.9, 11.3, 50.9, 10.5, 47.4, 66.7, 64.1, 49.8, 93.3, 69.7, 50.6, 71.2, 35.9, 16.1, 93.3, 37.1, 24.2, 86.0, 94.6, 80.9, 47.4, 55.1, 85.4, 78.1, 90.4, 79.2, 29.0, 27.8, 40.5, 42.2, 68.6, 59.7, 40.4, 61.2, 62.0, 69.1, 47.9, 1.9, 45.7, 49.5, 31.9, 94.7, 35.7, 89.8, 49.2, 84.4, 37.5, 83.3, 94.7, 49.9, 58.4, 88.9, 69.4, 61.9, 7.5, 96.9, 89.4, 55.5, 68.7, 78.0, 77.5, 43.3, 51.3, 80.1, 35.5, 41.6, 31.9, 15.4, 69.2, 29.7, 17.0, 31.5, 15.8, 41.7, 71.8, 10.2, 95.6, 17.1, 14.5, 22.0, 62.6, 45.6, 43.4, 78.6, 46.0, 86.4, 3.8, 56.0, 55.5, 99.8, 78.2, 14.5, 66.4, 45.9, 52.9, 91.7, 61.3, 25.7, 80.6, 80.8, 55.6, 47.7, 42.2, 97.8, 90.3, 17.7, 60.5, 82.0, 74.8, 92.6, 70.5, 31.3, 45.5, 78.4, 66.0, 19.8, 54.3, 92.8, 95.3, 6.9, 54.2, 15.2, 88.6, 77.1, 77.7, 19.1, 51.6, 56.4, 47.9, 6.1, 65.9, 69.7, 62.1, 68.4, 2.1, 75.1, 33.1, 80.6, 56.6, 84.1, 79.8, 42.1, 46.2, 15.7, 17.1, 90.9, 23.0, 90.9, 18.0, 38.6, 82.4, 4.0, 9.4, 68.6, 96.8, 84.7, 17.1, 53.4, 45.7, 59.8, 26.8, 52.7, 23.6, 92.0, 68.1, 70.3, 4.0, 89.2, 36.0, 85.5, 56.5, 3.6, 14.1, 69.4, 35.7, 39.9, 43.9, 98.2, 54.3, 1.8, 26.4, 95.9, 78.6, 64.3, 8.9, 6.5, 55.5, 67.6, 74.8, 78.0, 45.3, 14.7, 54.0, 32.8, 85.8, 53.3, 4.8, 92.7, 36.6, 54.5, 72.7, 74.7, 98.8, 1.6, 46.6, 9.4, 12.2, 98.7, 44.4, 84.9, 7.2, 11.5, 11.0, 35.1, 18.5, 40.4, 24.8, 1.2, 81.8, 60.3, 21.5, 87.1, 23.6, 88.2, 20.2, 2.5, 67.6, 17.2, 28.1, 56.2, 61.8, 94.6, 61.0, 46.8, 20.2, 65.5, 7.2, 20.9, 40.5, 39.8, 50.2, 31.1, 16.1, 5.6, 11.4, 25.9, 97.3, 19.9, 79.2, 86.0, 86.1, 10.1, 74.5, 76.8, 46.3, 80.6, 6.6, 23.6, 43.3, 52.0, 19.7, 59.6, 9.7, 18.5, 83.6, 90.6, 32.1, 10.4, 8.3, 88.0, 67.4, 52.8, 56.7, 80.1, 93.3, 75.5, 79.0, 96.7, 53.4, 69.2, 83.6, 99.7, 4.0, 79.8, 98.8, 19.8, 91.6, 13.3, 19.4, 96.2, 97.5, 78.9, 58.6, 20.5, 22.6, 93.0, 23.9, 57.6, 25.9, 75.8, 54.1, 50.3, 89.7, 88.5, 72.2, 2.3, 6.7, 83.8, 15.2, 83.3, 51.4, 86.9, 23.5, 39.6, 24.6, 79.1, 97.5, 31.5, 91.6, 7.8, 91.4, 69.3, 11.2, 99.9, 34.2, 35.1, 6.5, 35.4, 67.5, 52.9, 100.0, 65.2, 68.1, 18.9, 16.3, 45.7, 22.5, 15.2, 21.7, 71.6, 97.2, 53.0, 85.5, 75.9, 90.6, 21.0, 94.6, 31.7, 18.4, 67.1, 39.6, 4.2, 52.6, 80.5, 98.7, 33.5, 78.7, 8.9, 2.5, 54.5, 80.8, 88.8, 63.5, 99.8, 68.1, 66.0, 71.4, 53.3, 93.0, 83.2, 34.4, 96.2, 30.7, 91.1, 80.1, 87.8, 1.6, 2.7, 59.1, 65.9, 21.1, 96.9, 23.4, 96.0, 18.6, 83.0, 95.8, 70.4, 19.3, 17.1, 9.5, 1.3, 11.0, 21.2, 78.2, 89.0, 71.2, 37.7, 46.6, 88.8, 91.1, 37.7, 19.9, 53.7, 9.4, 93.2, 99.3, 33.4, 82.0, 35.5, 55.8, 35.0, 91.2, 41.6, 48.7, 61.7, 58.9, 69.8, 19.7, 36.8, 12.0, 72.5, 88.0, 33.1, 86.2, 2.9, 66.4, 6.2, 8.5, 68.4, 31.3, 68.3, 15.6, 45.5, 8.3, 54.7, 85.2, 6.4, 40.4, 87.3, 19.2, 95.3, 60.5, 26.2, 38.4, 85.0, 53.2, 92.0, 72.5, 52.3, 73.0, 82.8, 97.1, 18.5, 84.1, 86.8, 4.6, 76.1, 28.3, 85.9, 58.1, 37.6, 22.4, 18.0, 89.9, 71.9, 88.0, 57.7, 76.8, 47.9, 91.1, 60.5, 11.9, 22.1, 79.7, 75.6, 28.7, 91.0, 85.0, 65.8, 27.7, 97.5, 66.7, 87.9, 96.4, 1.6, 100.0, 93.1, 83.1, 68.9, 79.7, 84.9, 25.2, 39.0, 10.6, 58.5, 48.2, 41.6, 86.1, 83.7, 51.6, 62.3, 54.6, 83.5, 50.8, 61.4, 3.3, 48.5, 15.1, 46.9, 61.9, 58.7, 14.1, 5.2, 15.1, 10.2, 19.8, 43.9, 45.5, 44.0, 24.6, 92.5, 30.7, 63.8, 27.3, 67.3, 8.5, 97.3, 7.7, 37.5, 58.7, 39.1, 49.3, 86.2, 62.2])) \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index 7c43790..bd5ce23 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "appnope" -version = "0.1.3" +version = "0.1.4" description = "Disable App Nap on macOS >= 10.9" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"}, - {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"}, + {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, + {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, ] [[package]] @@ -325,29 +325,33 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "debugpy" -version = "1.8.0" +version = "1.8.1" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7fb95ca78f7ac43393cd0e0f2b6deda438ec7c5e47fa5d38553340897d2fbdfb"}, - {file = "debugpy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9ab7df0b9a42ed9c878afd3eaaff471fce3fa73df96022e1f5c9f8f8c87ada"}, - {file = "debugpy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:a8b7a2fd27cd9f3553ac112f356ad4ca93338feadd8910277aff71ab24d8775f"}, - {file = "debugpy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d9de202f5d42e62f932507ee8b21e30d49aae7e46d5b1dd5c908db1d7068637"}, - {file = "debugpy-1.8.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:ef54404365fae8d45cf450d0544ee40cefbcb9cb85ea7afe89a963c27028261e"}, - {file = "debugpy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60009b132c91951354f54363f8ebdf7457aeb150e84abba5ae251b8e9f29a8a6"}, - {file = "debugpy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:8cd0197141eb9e8a4566794550cfdcdb8b3db0818bdf8c49a8e8f8053e56e38b"}, - {file = "debugpy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:a64093656c4c64dc6a438e11d59369875d200bd5abb8f9b26c1f5f723622e153"}, - {file = "debugpy-1.8.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b05a6b503ed520ad58c8dc682749113d2fd9f41ffd45daec16e558ca884008cd"}, - {file = "debugpy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c6fb41c98ec51dd010d7ed650accfd07a87fe5e93eca9d5f584d0578f28f35f"}, - {file = "debugpy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:46ab6780159eeabb43c1495d9c84cf85d62975e48b6ec21ee10c95767c0590aa"}, - {file = "debugpy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:bdc5ef99d14b9c0fcb35351b4fbfc06ac0ee576aeab6b2511702e5a648a2e595"}, - {file = "debugpy-1.8.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:61eab4a4c8b6125d41a34bad4e5fe3d2cc145caecd63c3fe953be4cc53e65bf8"}, - {file = "debugpy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:125b9a637e013f9faac0a3d6a82bd17c8b5d2c875fb6b7e2772c5aba6d082332"}, - {file = "debugpy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:57161629133113c97b387382045649a2b985a348f0c9366e22217c87b68b73c6"}, - {file = "debugpy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:e3412f9faa9ade82aa64a50b602544efcba848c91384e9f93497a458767e6926"}, - {file = "debugpy-1.8.0-py2.py3-none-any.whl", hash = "sha256:9c9b0ac1ce2a42888199df1a1906e45e6f3c9555497643a85e0bf2406e3ffbc4"}, - {file = "debugpy-1.8.0.zip", hash = "sha256:12af2c55b419521e33d5fb21bd022df0b5eb267c3e178f1d374a63a2a6bdccd0"}, + {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"}, + {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"}, + {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"}, + {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"}, + {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"}, + {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"}, + {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"}, + {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"}, + {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"}, + {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"}, + {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"}, + {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"}, + {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"}, + {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"}, + {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"}, + {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"}, + {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"}, + {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"}, + {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"}, + {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"}, + {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"}, + {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"}, ] [[package]] @@ -402,20 +406,20 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth [[package]] name = "ezkl" -version = "7.0.0" +version = "9.1.0" description = "" optional = false python-versions = ">=3.7" files = [ - {file = "ezkl-7.0.0-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:586d4619203a9c2ef4136c7a047e130243cd377814295161b4c89ce308f07134"}, - {file = "ezkl-7.0.0-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:e51333624fa6aad0498c8268aa3fbccb6355b53895bd00242f06f62d3379751b"}, - {file = "ezkl-7.0.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5020010737b93cccc16ac43688c510ac50b677beb7228e44e45cebc3f5db213"}, - {file = "ezkl-7.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d35a2a8179a51c00032fac728c8b924029bec31fb46cde813b4ec8a6f85d8e8"}, - {file = "ezkl-7.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:87fc88587953b065f4a3c733e89c9055c63dee146cec5e19cd69fcc4e30e2dd0"}, - {file = "ezkl-7.0.0-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:7c4784d38e467e609494d95646522e477984d360ee1cb7796a84ba5ea4eb9d6e"}, - {file = "ezkl-7.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:90598bc2df171dc28d9d675ac533ed6367eda301a0413f132dfe20b149b7843c"}, - {file = "ezkl-7.0.0-cp37-abi3-win32.whl", hash = "sha256:038a112c47247629b41d52b4e2bdc97512f56c6ddf5236af51cd8afc63e56c69"}, - {file = "ezkl-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:5f22eae0b3b7e3abf52fd38adf03361c0291adec4f53af175c82c03f901bc919"}, + {file = "ezkl-9.1.0-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:63d6389544a6f85682181584ef0145870c506216efd999d60e94726059627004"}, + {file = "ezkl-9.1.0-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:ad33d05b98ddf1636cea3088cd833ccd1b61ce266c1f53cf751c2ed8af86bd07"}, + {file = "ezkl-9.1.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:634496af6ed13fc5f6a8c44f1b3598b8b36961ad17e6550718eedb9601213950"}, + {file = "ezkl-9.1.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df5013a5f037fc6eeda8e9824cfc0bcfc87523dc0957f4e1ec85215c399080ab"}, + {file = "ezkl-9.1.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f8ad895dd57e095af5a690833dfdfc4f98ab78844efe2589979f0598b5388b30"}, + {file = "ezkl-9.1.0-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:a0e44bc564a290393a8d47493159cc87fcdc135ba8c9b260a3c3c56f71242c19"}, + {file = "ezkl-9.1.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:c7274405448d3ed6413fe62ee7647e1787f73b3148f62d720aa26a744a06aa13"}, + {file = "ezkl-9.1.0-cp37-abi3-win32.whl", hash = "sha256:3c93e1cdb20eb5f10c4ce9bb80108f7dc69978b836efc7c786606275115df953"}, + {file = "ezkl-9.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:f561242195ffd96a83a983b04b654a1671ee5f9177ba18661101ef370fb2ee85"}, ] [[package]] @@ -436,60 +440,60 @@ typing = ["typing-extensions (>=4.8)"] [[package]] name = "fonttools" -version = "4.47.2" +version = "4.49.0" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.47.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3b629108351d25512d4ea1a8393a2dba325b7b7d7308116b605ea3f8e1be88df"}, - {file = "fonttools-4.47.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c19044256c44fe299d9a73456aabee4b4d06c6b930287be93b533b4737d70aa1"}, - {file = "fonttools-4.47.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8be28c036b9f186e8c7eaf8a11b42373e7e4949f9e9f370202b9da4c4c3f56c"}, - {file = "fonttools-4.47.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8"}, - {file = "fonttools-4.47.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4a5a5318ba5365d992666ac4fe35365f93004109d18858a3e18ae46f67907670"}, - {file = "fonttools-4.47.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8f57ecd742545362a0f7186774b2d1c53423ed9ece67689c93a1055b236f638c"}, - {file = "fonttools-4.47.2-cp310-cp310-win32.whl", hash = "sha256:a1c154bb85dc9a4cf145250c88d112d88eb414bad81d4cb524d06258dea1bdc0"}, - {file = "fonttools-4.47.2-cp310-cp310-win_amd64.whl", hash = "sha256:3e2b95dce2ead58fb12524d0ca7d63a63459dd489e7e5838c3cd53557f8933e1"}, - {file = "fonttools-4.47.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:29495d6d109cdbabe73cfb6f419ce67080c3ef9ea1e08d5750240fd4b0c4763b"}, - {file = "fonttools-4.47.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac"}, - {file = "fonttools-4.47.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90f898cdd67f52f18049250a6474185ef6544c91f27a7bee70d87d77a8daf89c"}, - {file = "fonttools-4.47.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3480eeb52770ff75140fe7d9a2ec33fb67b07efea0ab5129c7e0c6a639c40c70"}, - {file = "fonttools-4.47.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e"}, - {file = "fonttools-4.47.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703"}, - {file = "fonttools-4.47.2-cp311-cp311-win32.whl", hash = "sha256:740947906590a878a4bde7dd748e85fefa4d470a268b964748403b3ab2aeed6c"}, - {file = "fonttools-4.47.2-cp311-cp311-win_amd64.whl", hash = "sha256:63fbed184979f09a65aa9c88b395ca539c94287ba3a364517698462e13e457c9"}, - {file = "fonttools-4.47.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4ec558c543609e71b2275c4894e93493f65d2f41c15fe1d089080c1d0bb4d635"}, - {file = "fonttools-4.47.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e040f905d542362e07e72e03612a6270c33d38281fd573160e1003e43718d68d"}, - {file = "fonttools-4.47.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dd58cc03016b281bd2c74c84cdaa6bd3ce54c5a7f47478b7657b930ac3ed8eb"}, - {file = "fonttools-4.47.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32ab2e9702dff0dd4510c7bb958f265a8d3dd5c0e2547e7b5f7a3df4979abb07"}, - {file = "fonttools-4.47.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a808f3c1d1df1f5bf39be869b6e0c263570cdafb5bdb2df66087733f566ea71"}, - {file = "fonttools-4.47.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ac71e2e201df041a2891067dc36256755b1229ae167edbdc419b16da78732c2f"}, - {file = "fonttools-4.47.2-cp312-cp312-win32.whl", hash = "sha256:69731e8bea0578b3c28fdb43dbf95b9386e2d49a399e9a4ad736b8e479b08085"}, - {file = "fonttools-4.47.2-cp312-cp312-win_amd64.whl", hash = "sha256:b3e1304e5f19ca861d86a72218ecce68f391646d85c851742d265787f55457a4"}, - {file = "fonttools-4.47.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:254d9a6f7be00212bf0c3159e0a420eb19c63793b2c05e049eb337f3023c5ecc"}, - {file = "fonttools-4.47.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eabae77a07c41ae0b35184894202305c3ad211a93b2eb53837c2a1143c8bc952"}, - {file = "fonttools-4.47.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a86a5ab2873ed2575d0fcdf1828143cfc6b977ac448e3dc616bb1e3d20efbafa"}, - {file = "fonttools-4.47.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13819db8445a0cec8c3ff5f243af6418ab19175072a9a92f6cc8ca7d1452754b"}, - {file = "fonttools-4.47.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4e743935139aa485fe3253fc33fe467eab6ea42583fa681223ea3f1a93dd01e6"}, - {file = "fonttools-4.47.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d49ce3ea7b7173faebc5664872243b40cf88814ca3eb135c4a3cdff66af71946"}, - {file = "fonttools-4.47.2-cp38-cp38-win32.whl", hash = "sha256:94208ea750e3f96e267f394d5588579bb64cc628e321dbb1d4243ffbc291b18b"}, - {file = "fonttools-4.47.2-cp38-cp38-win_amd64.whl", hash = "sha256:0f750037e02beb8b3569fbff701a572e62a685d2a0e840d75816592280e5feae"}, - {file = "fonttools-4.47.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3d71606c9321f6701642bd4746f99b6089e53d7e9817fc6b964e90d9c5f0ecc6"}, - {file = "fonttools-4.47.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:86e0427864c6c91cf77f16d1fb9bf1bbf7453e824589e8fb8461b6ee1144f506"}, - {file = "fonttools-4.47.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a00bd0e68e88987dcc047ea31c26d40a3c61185153b03457956a87e39d43c37"}, - {file = "fonttools-4.47.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5d77479fb885ef38a16a253a2f4096bc3d14e63a56d6246bfdb56365a12b20c"}, - {file = "fonttools-4.47.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5465df494f20a7d01712b072ae3ee9ad2887004701b95cb2cc6dcb9c2c97a899"}, - {file = "fonttools-4.47.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4c811d3c73b6abac275babb8aa439206288f56fdb2c6f8835e3d7b70de8937a7"}, - {file = "fonttools-4.47.2-cp39-cp39-win32.whl", hash = "sha256:5b60e3afa9635e3dfd3ace2757039593e3bd3cf128be0ddb7a1ff4ac45fa5a50"}, - {file = "fonttools-4.47.2-cp39-cp39-win_amd64.whl", hash = "sha256:7ee48bd9d6b7e8f66866c9090807e3a4a56cf43ffad48962725a190e0dd774c8"}, - {file = "fonttools-4.47.2-py3-none-any.whl", hash = "sha256:7eb7ad665258fba68fd22228a09f347469d95a97fb88198e133595947a20a184"}, - {file = "fonttools-4.47.2.tar.gz", hash = "sha256:7df26dd3650e98ca45f1e29883c96a0b9f5bb6af8d632a6a108bc744fa0bd9b3"}, + {file = "fonttools-4.49.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d970ecca0aac90d399e458f0b7a8a597e08f95de021f17785fb68e2dc0b99717"}, + {file = "fonttools-4.49.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac9a745b7609f489faa65e1dc842168c18530874a5f5b742ac3dd79e26bca8bc"}, + {file = "fonttools-4.49.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ba0e00620ca28d4ca11fc700806fd69144b463aa3275e1b36e56c7c09915559"}, + {file = "fonttools-4.49.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdee3ab220283057e7840d5fb768ad4c2ebe65bdba6f75d5d7bf47f4e0ed7d29"}, + {file = "fonttools-4.49.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ce7033cb61f2bb65d8849658d3786188afd80f53dad8366a7232654804529532"}, + {file = "fonttools-4.49.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:07bc5ea02bb7bc3aa40a1eb0481ce20e8d9b9642a9536cde0218290dd6085828"}, + {file = "fonttools-4.49.0-cp310-cp310-win32.whl", hash = "sha256:86eef6aab7fd7c6c8545f3ebd00fd1d6729ca1f63b0cb4d621bccb7d1d1c852b"}, + {file = "fonttools-4.49.0-cp310-cp310-win_amd64.whl", hash = "sha256:1fac1b7eebfce75ea663e860e7c5b4a8831b858c17acd68263bc156125201abf"}, + {file = "fonttools-4.49.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:edc0cce355984bb3c1d1e89d6a661934d39586bb32191ebff98c600f8957c63e"}, + {file = "fonttools-4.49.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:83a0d9336de2cba86d886507dd6e0153df333ac787377325a39a2797ec529814"}, + {file = "fonttools-4.49.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36c8865bdb5cfeec88f5028e7e592370a0657b676c6f1d84a2108e0564f90e22"}, + {file = "fonttools-4.49.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33037d9e56e2562c710c8954d0f20d25b8386b397250d65581e544edc9d6b942"}, + {file = "fonttools-4.49.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8fb022d799b96df3eaa27263e9eea306bd3d437cc9aa981820850281a02b6c9a"}, + {file = "fonttools-4.49.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:33c584c0ef7dc54f5dd4f84082eabd8d09d1871a3d8ca2986b0c0c98165f8e86"}, + {file = "fonttools-4.49.0-cp311-cp311-win32.whl", hash = "sha256:cbe61b158deb09cffdd8540dc4a948d6e8f4d5b4f3bf5cd7db09bd6a61fee64e"}, + {file = "fonttools-4.49.0-cp311-cp311-win_amd64.whl", hash = "sha256:fc11e5114f3f978d0cea7e9853627935b30d451742eeb4239a81a677bdee6bf6"}, + {file = "fonttools-4.49.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d647a0e697e5daa98c87993726da8281c7233d9d4ffe410812a4896c7c57c075"}, + {file = "fonttools-4.49.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f3bbe672df03563d1f3a691ae531f2e31f84061724c319652039e5a70927167e"}, + {file = "fonttools-4.49.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bebd91041dda0d511b0d303180ed36e31f4f54b106b1259b69fade68413aa7ff"}, + {file = "fonttools-4.49.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4145f91531fd43c50f9eb893faa08399816bb0b13c425667c48475c9f3a2b9b5"}, + {file = "fonttools-4.49.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ea329dafb9670ffbdf4dbc3b0e5c264104abcd8441d56de77f06967f032943cb"}, + {file = "fonttools-4.49.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c076a9e548521ecc13d944b1d261ff3d7825048c338722a4bd126d22316087b7"}, + {file = "fonttools-4.49.0-cp312-cp312-win32.whl", hash = "sha256:b607ea1e96768d13be26d2b400d10d3ebd1456343eb5eaddd2f47d1c4bd00880"}, + {file = "fonttools-4.49.0-cp312-cp312-win_amd64.whl", hash = "sha256:a974c49a981e187381b9cc2c07c6b902d0079b88ff01aed34695ec5360767034"}, + {file = "fonttools-4.49.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b85ec0bdd7bdaa5c1946398cbb541e90a6dfc51df76dfa88e0aaa41b335940cb"}, + {file = "fonttools-4.49.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:af20acbe198a8a790618ee42db192eb128afcdcc4e96d99993aca0b60d1faeb4"}, + {file = "fonttools-4.49.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d418b1fee41a1d14931f7ab4b92dc0bc323b490e41d7a333eec82c9f1780c75"}, + {file = "fonttools-4.49.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b44a52b8e6244b6548851b03b2b377a9702b88ddc21dcaf56a15a0393d425cb9"}, + {file = "fonttools-4.49.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7c7125068e04a70739dad11857a4d47626f2b0bd54de39e8622e89701836eabd"}, + {file = "fonttools-4.49.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:29e89d0e1a7f18bc30f197cfadcbef5a13d99806447c7e245f5667579a808036"}, + {file = "fonttools-4.49.0-cp38-cp38-win32.whl", hash = "sha256:9d95fa0d22bf4f12d2fb7b07a46070cdfc19ef5a7b1c98bc172bfab5bf0d6844"}, + {file = "fonttools-4.49.0-cp38-cp38-win_amd64.whl", hash = "sha256:768947008b4dc552d02772e5ebd49e71430a466e2373008ce905f953afea755a"}, + {file = "fonttools-4.49.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:08877e355d3dde1c11973bb58d4acad1981e6d1140711230a4bfb40b2b937ccc"}, + {file = "fonttools-4.49.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fdb54b076f25d6b0f0298dc706acee5052de20c83530fa165b60d1f2e9cbe3cb"}, + {file = "fonttools-4.49.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0af65c720520710cc01c293f9c70bd69684365c6015cc3671db2b7d807fe51f2"}, + {file = "fonttools-4.49.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f255ce8ed7556658f6d23f6afd22a6d9bbc3edb9b96c96682124dc487e1bf42"}, + {file = "fonttools-4.49.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d00af0884c0e65f60dfaf9340e26658836b935052fdd0439952ae42e44fdd2be"}, + {file = "fonttools-4.49.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:263832fae27481d48dfafcc43174644b6706639661e242902ceb30553557e16c"}, + {file = "fonttools-4.49.0-cp39-cp39-win32.whl", hash = "sha256:0404faea044577a01bb82d47a8fa4bc7a54067fa7e324785dd65d200d6dd1133"}, + {file = "fonttools-4.49.0-cp39-cp39-win_amd64.whl", hash = "sha256:b050d362df50fc6e38ae3954d8c29bf2da52be384649ee8245fdb5186b620836"}, + {file = "fonttools-4.49.0-py3-none-any.whl", hash = "sha256:af281525e5dd7fa0b39fb1667b8d5ca0e2a9079967e14c4bfe90fd1cd13e0f18"}, + {file = "fonttools-4.49.0.tar.gz", hash = "sha256:ebf46e7f01b7af7861310417d7c49591a85d99146fc23a5ba82fdb28af156321"}, ] [package.extras] -all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] graphite = ["lz4 (>=1.7.4.2)"] interpolatable = ["munkres", "pycairo", "scipy"] -lxml = ["lxml (>=4.0,<5)"] +lxml = ["lxml (>=4.0)"] pathops = ["skia-pathops (>=0.5.0)"] plot = ["matplotlib"] repacker = ["uharfbuzz (>=0.23.0)"] @@ -501,13 +505,13 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[package]] name = "fsspec" -version = "2023.12.2" +version = "2024.2.0" description = "File-system specification" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2023.12.2-py3-none-any.whl", hash = "sha256:d800d87f72189a745fa3d6b033b9dc4a34ad069f60ca60b943a63599f5501960"}, - {file = "fsspec-2023.12.2.tar.gz", hash = "sha256:8548d39e8810b59c38014934f6b31e57f40c1b20f911f4cc2b85389c7e9bf0cb"}, + {file = "fsspec-2024.2.0-py3-none-any.whl", hash = "sha256:817f969556fa5916bc682e02ca2045f96ff7f586d45110fcb76022063ad2c7d8"}, + {file = "fsspec-2024.2.0.tar.gz", hash = "sha256:b6ad1a679f760dda52b1168c859d01b7b80648ea6f7f7c7f5a8a91dc3f3ecb84"}, ] [package.extras] @@ -525,7 +529,7 @@ github = ["requests"] gs = ["gcsfs"] gui = ["panel"] hdfs = ["pyarrow (>=1)"] -http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "requests"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] libarchive = ["libarchive-c"] oci = ["ocifs"] s3 = ["s3fs"] @@ -566,13 +570,13 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs [[package]] name = "importlib-resources" -version = "6.1.1" +version = "6.1.2" description = "Read resources from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"}, - {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"}, + {file = "importlib_resources-6.1.2-py3-none-any.whl", hash = "sha256:9a0a862501dc38b68adebc82970140c9e4209fc99601782925178f8386339938"}, + {file = "importlib_resources-6.1.2.tar.gz", hash = "sha256:308abf8474e2dba5f867d279237cd4076482c3de7104a40b41426370e891549b"}, ] [package.dependencies] @@ -580,7 +584,7 @@ zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "zipp (>=3.17)"] [[package]] name = "iniconfig" @@ -595,13 +599,13 @@ files = [ [[package]] name = "ipykernel" -version = "6.29.0" +version = "6.29.3" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.29.0-py3-none-any.whl", hash = "sha256:076663ca68492576f051e4af7720d33f34383e655f2be0d544c8b1c9de915b2f"}, - {file = "ipykernel-6.29.0.tar.gz", hash = "sha256:b5dd3013cab7b330df712891c96cd1ab868c27a7159e606f762015e9bf8ceb3f"}, + {file = "ipykernel-6.29.3-py3-none-any.whl", hash = "sha256:5aa086a4175b0229d4eca211e181fb473ea78ffd9869af36ba7694c947302a21"}, + {file = "ipykernel-6.29.3.tar.gz", hash = "sha256:e14c250d1f9ea3989490225cc1a542781b095a18a19447fcf2b5eaf7d0ac5bd2"}, ] [package.dependencies] @@ -624,7 +628,7 @@ cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] pyqt5 = ["pyqt5"] pyside6 = ["pyside6"] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.2)", "pytest-cov", "pytest-timeout"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] [[package]] name = "ipython" @@ -857,108 +861,108 @@ files = [ [[package]] name = "markupsafe" -version = "2.1.4" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, - {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] name = "matplotlib" -version = "3.8.2" +version = "3.8.3" description = "Python plotting package" optional = false python-versions = ">=3.9" files = [ - {file = "matplotlib-3.8.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:09796f89fb71a0c0e1e2f4bdaf63fb2cefc84446bb963ecdeb40dfee7dfa98c7"}, - {file = "matplotlib-3.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6f9c6976748a25e8b9be51ea028df49b8e561eed7809146da7a47dbecebab367"}, - {file = "matplotlib-3.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b78e4f2cedf303869b782071b55fdde5987fda3038e9d09e58c91cc261b5ad18"}, - {file = "matplotlib-3.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e208f46cf6576a7624195aa047cb344a7f802e113bb1a06cfd4bee431de5e31"}, - {file = "matplotlib-3.8.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:46a569130ff53798ea5f50afce7406e91fdc471ca1e0e26ba976a8c734c9427a"}, - {file = "matplotlib-3.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:830f00640c965c5b7f6bc32f0d4ce0c36dfe0379f7dd65b07a00c801713ec40a"}, - {file = "matplotlib-3.8.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d86593ccf546223eb75a39b44c32788e6f6440d13cfc4750c1c15d0fcb850b63"}, - {file = "matplotlib-3.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9a5430836811b7652991939012f43d2808a2db9b64ee240387e8c43e2e5578c8"}, - {file = "matplotlib-3.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9576723858a78751d5aacd2497b8aef29ffea6d1c95981505877f7ac28215c6"}, - {file = "matplotlib-3.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ba9cbd8ac6cf422f3102622b20f8552d601bf8837e49a3afed188d560152788"}, - {file = "matplotlib-3.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:03f9d160a29e0b65c0790bb07f4f45d6a181b1ac33eb1bb0dd225986450148f0"}, - {file = "matplotlib-3.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:3773002da767f0a9323ba1a9b9b5d00d6257dbd2a93107233167cfb581f64717"}, - {file = "matplotlib-3.8.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:4c318c1e95e2f5926fba326f68177dee364aa791d6df022ceb91b8221bd0a627"}, - {file = "matplotlib-3.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:091275d18d942cf1ee9609c830a1bc36610607d8223b1b981c37d5c9fc3e46a4"}, - {file = "matplotlib-3.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b0f3b8ea0e99e233a4bcc44590f01604840d833c280ebb8fe5554fd3e6cfe8d"}, - {file = "matplotlib-3.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7b1704a530395aaf73912be741c04d181f82ca78084fbd80bc737be04848331"}, - {file = "matplotlib-3.8.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:533b0e3b0c6768eef8cbe4b583731ce25a91ab54a22f830db2b031e83cca9213"}, - {file = "matplotlib-3.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:0f4fc5d72b75e2c18e55eb32292659cf731d9d5b312a6eb036506304f4675630"}, - {file = "matplotlib-3.8.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:deaed9ad4da0b1aea77fe0aa0cebb9ef611c70b3177be936a95e5d01fa05094f"}, - {file = "matplotlib-3.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:172f4d0fbac3383d39164c6caafd3255ce6fa58f08fc392513a0b1d3b89c4f89"}, - {file = "matplotlib-3.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7d36c2209d9136cd8e02fab1c0ddc185ce79bc914c45054a9f514e44c787917"}, - {file = "matplotlib-3.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5864bdd7da445e4e5e011b199bb67168cdad10b501750367c496420f2ad00843"}, - {file = "matplotlib-3.8.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ef8345b48e95cee45ff25192ed1f4857273117917a4dcd48e3905619bcd9c9b8"}, - {file = "matplotlib-3.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:7c48d9e221b637c017232e3760ed30b4e8d5dfd081daf327e829bf2a72c731b4"}, - {file = "matplotlib-3.8.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:aa11b3c6928a1e496c1a79917d51d4cd5d04f8a2e75f21df4949eeefdf697f4b"}, - {file = "matplotlib-3.8.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1095fecf99eeb7384dabad4bf44b965f929a5f6079654b681193edf7169ec20"}, - {file = "matplotlib-3.8.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:bddfb1db89bfaa855912261c805bd0e10218923cc262b9159a49c29a7a1c1afa"}, - {file = "matplotlib-3.8.2.tar.gz", hash = "sha256:01a978b871b881ee76017152f1f1a0cbf6bd5f7b8ff8c96df0df1bd57d8755a1"}, + {file = "matplotlib-3.8.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:cf60138ccc8004f117ab2a2bad513cc4d122e55864b4fe7adf4db20ca68a078f"}, + {file = "matplotlib-3.8.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5f557156f7116be3340cdeef7f128fa99b0d5d287d5f41a16e169819dcf22357"}, + {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f386cf162b059809ecfac3bcc491a9ea17da69fa35c8ded8ad154cd4b933d5ec"}, + {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3c5f96f57b0369c288bf6f9b5274ba45787f7e0589a34d24bdbaf6d3344632f"}, + {file = "matplotlib-3.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:83e0f72e2c116ca7e571c57aa29b0fe697d4c6425c4e87c6e994159e0c008635"}, + {file = "matplotlib-3.8.3-cp310-cp310-win_amd64.whl", hash = "sha256:1c5c8290074ba31a41db1dc332dc2b62def469ff33766cbe325d32a3ee291aea"}, + {file = "matplotlib-3.8.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5184e07c7e1d6d1481862ee361905b7059f7fe065fc837f7c3dc11eeb3f2f900"}, + {file = "matplotlib-3.8.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d7e7e0993d0758933b1a241a432b42c2db22dfa37d4108342ab4afb9557cbe3e"}, + {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04b36ad07eac9740fc76c2aa16edf94e50b297d6eb4c081e3add863de4bb19a7"}, + {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c42dae72a62f14982f1474f7e5c9959fc4bc70c9de11cc5244c6e766200ba65"}, + {file = "matplotlib-3.8.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bf5932eee0d428192c40b7eac1399d608f5d995f975cdb9d1e6b48539a5ad8d0"}, + {file = "matplotlib-3.8.3-cp311-cp311-win_amd64.whl", hash = "sha256:40321634e3a05ed02abf7c7b47a50be50b53ef3eaa3a573847431a545585b407"}, + {file = "matplotlib-3.8.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:09074f8057917d17ab52c242fdf4916f30e99959c1908958b1fc6032e2d0f6d4"}, + {file = "matplotlib-3.8.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5745f6d0fb5acfabbb2790318db03809a253096e98c91b9a31969df28ee604aa"}, + {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97653d869a71721b639714b42d87cda4cfee0ee74b47c569e4874c7590c55c5"}, + {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:242489efdb75b690c9c2e70bb5c6550727058c8a614e4c7716f363c27e10bba1"}, + {file = "matplotlib-3.8.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:83c0653c64b73926730bd9ea14aa0f50f202ba187c307a881673bad4985967b7"}, + {file = "matplotlib-3.8.3-cp312-cp312-win_amd64.whl", hash = "sha256:ef6c1025a570354297d6c15f7d0f296d95f88bd3850066b7f1e7b4f2f4c13a39"}, + {file = "matplotlib-3.8.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c4af3f7317f8a1009bbb2d0bf23dfaba859eb7dd4ccbd604eba146dccaaaf0a4"}, + {file = "matplotlib-3.8.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4c6e00a65d017d26009bac6808f637b75ceade3e1ff91a138576f6b3065eeeba"}, + {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7b49ab49a3bea17802df6872f8d44f664ba8f9be0632a60c99b20b6db2165b7"}, + {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6728dde0a3997396b053602dbd907a9bd64ec7d5cf99e728b404083698d3ca01"}, + {file = "matplotlib-3.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:813925d08fb86aba139f2d31864928d67511f64e5945ca909ad5bc09a96189bb"}, + {file = "matplotlib-3.8.3-cp39-cp39-win_amd64.whl", hash = "sha256:cd3a0c2be76f4e7be03d34a14d49ded6acf22ef61f88da600a18a5cd8b3c5f3c"}, + {file = "matplotlib-3.8.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fa93695d5c08544f4a0dfd0965f378e7afc410d8672816aff1e81be1f45dbf2e"}, + {file = "matplotlib-3.8.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9764df0e8778f06414b9d281a75235c1e85071f64bb5d71564b97c1306a2afc"}, + {file = "matplotlib-3.8.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5e431a09e6fab4012b01fc155db0ce6dccacdbabe8198197f523a4ef4805eb26"}, + {file = "matplotlib-3.8.3.tar.gz", hash = "sha256:7b416239e9ae38be54b028abbf9048aff5054a9aba5416bef0bd17f9162ce161"}, ] [package.dependencies] @@ -1035,47 +1039,47 @@ test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "numpy" -version = "1.26.3" +version = "1.26.4" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "numpy-1.26.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:806dd64230dbbfaca8a27faa64e2f414bf1c6622ab78cc4264f7f5f028fee3bf"}, - {file = "numpy-1.26.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02f98011ba4ab17f46f80f7f8f1c291ee7d855fcef0a5a98db80767a468c85cd"}, - {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d45b3ec2faed4baca41c76617fcdcfa4f684ff7a151ce6fc78ad3b6e85af0a6"}, - {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdd2b45bf079d9ad90377048e2747a0c82351989a2165821f0c96831b4a2a54b"}, - {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:211ddd1e94817ed2d175b60b6374120244a4dd2287f4ece45d49228b4d529178"}, - {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1240f767f69d7c4c8a29adde2310b871153df9b26b5cb2b54a561ac85146485"}, - {file = "numpy-1.26.3-cp310-cp310-win32.whl", hash = "sha256:21a9484e75ad018974a2fdaa216524d64ed4212e418e0a551a2d83403b0531d3"}, - {file = "numpy-1.26.3-cp310-cp310-win_amd64.whl", hash = "sha256:9e1591f6ae98bcfac2a4bbf9221c0b92ab49762228f38287f6eeb5f3f55905ce"}, - {file = "numpy-1.26.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b831295e5472954104ecb46cd98c08b98b49c69fdb7040483aff799a755a7374"}, - {file = "numpy-1.26.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e87562b91f68dd8b1c39149d0323b42e0082db7ddb8e934ab4c292094d575d6"}, - {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c66d6fec467e8c0f975818c1796d25c53521124b7cfb760114be0abad53a0a2"}, - {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f25e2811a9c932e43943a2615e65fc487a0b6b49218899e62e426e7f0a57eeda"}, - {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:af36e0aa45e25c9f57bf684b1175e59ea05d9a7d3e8e87b7ae1a1da246f2767e"}, - {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:51c7f1b344f302067b02e0f5b5d2daa9ed4a721cf49f070280ac202738ea7f00"}, - {file = "numpy-1.26.3-cp311-cp311-win32.whl", hash = "sha256:7ca4f24341df071877849eb2034948459ce3a07915c2734f1abb4018d9c49d7b"}, - {file = "numpy-1.26.3-cp311-cp311-win_amd64.whl", hash = "sha256:39763aee6dfdd4878032361b30b2b12593fb445ddb66bbac802e2113eb8a6ac4"}, - {file = "numpy-1.26.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a7081fd19a6d573e1a05e600c82a1c421011db7935ed0d5c483e9dd96b99cf13"}, - {file = "numpy-1.26.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12c70ac274b32bc00c7f61b515126c9205323703abb99cd41836e8125ea0043e"}, - {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f784e13e598e9594750b2ef6729bcd5a47f6cfe4a12cca13def35e06d8163e3"}, - {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f24750ef94d56ce6e33e4019a8a4d68cfdb1ef661a52cdaee628a56d2437419"}, - {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:77810ef29e0fb1d289d225cabb9ee6cf4d11978a00bb99f7f8ec2132a84e0166"}, - {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8ed07a90f5450d99dad60d3799f9c03c6566709bd53b497eb9ccad9a55867f36"}, - {file = "numpy-1.26.3-cp312-cp312-win32.whl", hash = "sha256:f73497e8c38295aaa4741bdfa4fda1a5aedda5473074369eca10626835445511"}, - {file = "numpy-1.26.3-cp312-cp312-win_amd64.whl", hash = "sha256:da4b0c6c699a0ad73c810736303f7fbae483bcb012e38d7eb06a5e3b432c981b"}, - {file = "numpy-1.26.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1666f634cb3c80ccbd77ec97bc17337718f56d6658acf5d3b906ca03e90ce87f"}, - {file = "numpy-1.26.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18c3319a7d39b2c6a9e3bb75aab2304ab79a811ac0168a671a62e6346c29b03f"}, - {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b7e807d6888da0db6e7e75838444d62495e2b588b99e90dd80c3459594e857b"}, - {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4d362e17bcb0011738c2d83e0a65ea8ce627057b2fdda37678f4374a382a137"}, - {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b8c275f0ae90069496068c714387b4a0eba5d531aace269559ff2b43655edd58"}, - {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cc0743f0302b94f397a4a65a660d4cd24267439eb16493fb3caad2e4389bccbb"}, - {file = "numpy-1.26.3-cp39-cp39-win32.whl", hash = "sha256:9bc6d1a7f8cedd519c4b7b1156d98e051b726bf160715b769106661d567b3f03"}, - {file = "numpy-1.26.3-cp39-cp39-win_amd64.whl", hash = "sha256:867e3644e208c8922a3be26fc6bbf112a035f50f0a86497f98f228c50c607bb2"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3c67423b3703f8fbd90f5adaa37f85b5794d3366948efe9a5190a5f3a83fc34e"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46f47ee566d98849323f01b349d58f2557f02167ee301e5e28809a8c0e27a2d0"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a8474703bffc65ca15853d5fd4d06b18138ae90c17c8d12169968e998e448bb5"}, - {file = "numpy-1.26.3.tar.gz", hash = "sha256:697df43e2b6310ecc9d95f05d5ef20eacc09c7c4ecc9da3f235d39e71b7da1e4"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, ] [[package]] @@ -1431,22 +1435,22 @@ wcwidth = "*" [[package]] name = "protobuf" -version = "4.25.2" +version = "4.25.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"}, - {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"}, - {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"}, - {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"}, - {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"}, - {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"}, - {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"}, - {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"}, - {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"}, + {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, + {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, + {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, + {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, + {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, + {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, + {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, + {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, + {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, ] [[package]] @@ -1566,13 +1570,13 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -1839,36 +1843,36 @@ files = [ [[package]] name = "torch" -version = "2.2.0" +version = "2.2.1" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" optional = false python-versions = ">=3.8.0" files = [ - {file = "torch-2.2.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:d366158d6503a3447e67f8c0ad1328d54e6c181d88572d688a625fac61b13a97"}, - {file = "torch-2.2.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:707f2f80402981e9f90d0038d7d481678586251e6642a7a6ef67fc93511cb446"}, - {file = "torch-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:15c8f0a105c66b28496092fca1520346082e734095f8eaf47b5786bac24b8a31"}, - {file = "torch-2.2.0-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:0ca4df4b728515ad009b79f5107b00bcb2c63dc202d991412b9eb3b6a4f24349"}, - {file = "torch-2.2.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:3d3eea2d5969b9a1c9401429ca79efc668120314d443d3463edc3289d7f003c7"}, - {file = "torch-2.2.0-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:0d1c580e379c0d48f0f0a08ea28d8e373295aa254de4f9ad0631f9ed8bc04c24"}, - {file = "torch-2.2.0-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9328e3c1ce628a281d2707526b4d1080eae7c4afab4f81cea75bde1f9441dc78"}, - {file = "torch-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:03c8e660907ac1b8ee07f6d929c4e15cd95be2fb764368799cca02c725a212b8"}, - {file = "torch-2.2.0-cp311-none-macosx_10_9_x86_64.whl", hash = "sha256:da0cefe7f84ece3e3b56c11c773b59d1cb2c0fd83ddf6b5f7f1fd1a987b15c3e"}, - {file = "torch-2.2.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:f81d23227034221a4a4ff8ef24cc6cec7901edd98d9e64e32822778ff01be85e"}, - {file = "torch-2.2.0-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:dcbfb2192ac41ca93c756ebe9e2af29df0a4c14ee0e7a0dd78f82c67a63d91d4"}, - {file = "torch-2.2.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:9eeb42971619e24392c9088b5b6d387d896e267889d41d267b1fec334f5227c5"}, - {file = "torch-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:c718b2ca69a6cac28baa36d86d8c0ec708b102cebd1ceb1b6488e404cd9be1d1"}, - {file = "torch-2.2.0-cp312-none-macosx_10_9_x86_64.whl", hash = "sha256:f11d18fceb4f9ecb1ac680dde7c463c120ed29056225d75469c19637e9f98d12"}, - {file = "torch-2.2.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:ee1da852bfd4a7e674135a446d6074c2da7194c1b08549e31eae0b3138c6b4d2"}, - {file = "torch-2.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0d819399819d0862268ac531cf12a501c253007df4f9e6709ede8a0148f1a7b8"}, - {file = "torch-2.2.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:08f53ccc38c49d839bc703ea1b20769cc8a429e0c4b20b56921a9f64949bf325"}, - {file = "torch-2.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:93bffe3779965a71dab25fc29787538c37c5d54298fd2f2369e372b6fb137d41"}, - {file = "torch-2.2.0-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:c17ec323da778efe8dad49d8fb534381479ca37af1bfc58efdbb8607a9d263a3"}, - {file = "torch-2.2.0-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:c02685118008834e878f676f81eab3a952b7936fa31f474ef8a5ff4b5c78b36d"}, - {file = "torch-2.2.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:d9f39d6f53cec240a0e3baa82cb697593340f9d4554cee6d3d6ca07925c2fac0"}, - {file = "torch-2.2.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:51770c065206250dc1222ea7c0eff3f88ab317d3e931cca2aee461b85fbc2472"}, - {file = "torch-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:008e4c6ad703de55af760c73bf937ecdd61a109f9b08f2bbb9c17e7c7017f194"}, - {file = "torch-2.2.0-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:de8680472dd14e316f42ceef2a18a301461a9058cd6e99a1f1b20f78f11412f1"}, - {file = "torch-2.2.0-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:99e1dcecb488e3fd25bcaac56e48cdb3539842904bdc8588b0b255fde03a254c"}, + {file = "torch-2.2.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:8d3bad336dd2c93c6bcb3268e8e9876185bda50ebde325ef211fb565c7d15273"}, + {file = "torch-2.2.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:5297f13370fdaca05959134b26a06a7f232ae254bf2e11a50eddec62525c9006"}, + {file = "torch-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:5f5dee8433798888ca1415055f5e3faf28a3bad660e4c29e1014acd3275ab11a"}, + {file = "torch-2.2.1-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:b6d78338acabf1fb2e88bf4559d837d30230cf9c3e4337261f4d83200df1fcbe"}, + {file = "torch-2.2.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:6ab3ea2e29d1aac962e905142bbe50943758f55292f1b4fdfb6f4792aae3323e"}, + {file = "torch-2.2.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:d86664ec85902967d902e78272e97d1aff1d331f7619d398d3ffab1c9b8e9157"}, + {file = "torch-2.2.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d6227060f268894f92c61af0a44c0d8212e19cb98d05c20141c73312d923bc0a"}, + {file = "torch-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:77e990af75fb1675490deb374d36e726f84732cd5677d16f19124934b2409ce9"}, + {file = "torch-2.2.1-cp311-none-macosx_10_9_x86_64.whl", hash = "sha256:46085e328d9b738c261f470231e987930f4cc9472d9ffb7087c7a1343826ac51"}, + {file = "torch-2.2.1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:2d9e7e5ecbb002257cf98fae13003abbd620196c35f85c9e34c2adfb961321ec"}, + {file = "torch-2.2.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:ada53aebede1c89570e56861b08d12ba4518a1f8b82d467c32665ec4d1f4b3c8"}, + {file = "torch-2.2.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:be21d4c41ecebed9e99430dac87de1439a8c7882faf23bba7fea3fea7b906ac1"}, + {file = "torch-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:79848f46196750367dcdf1d2132b722180b9d889571e14d579ae82d2f50596c5"}, + {file = "torch-2.2.1-cp312-none-macosx_10_9_x86_64.whl", hash = "sha256:7ee804847be6be0032fbd2d1e6742fea2814c92bebccb177f0d3b8e92b2d2b18"}, + {file = "torch-2.2.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:84b2fb322ab091039fdfe74e17442ff046b258eb5e513a28093152c5b07325a7"}, + {file = "torch-2.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5c0c83aa7d94569997f1f474595e808072d80b04d34912ce6f1a0e1c24b0c12a"}, + {file = "torch-2.2.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:91a1b598055ba06b2c386415d2e7f6ac818545e94c5def597a74754940188513"}, + {file = "torch-2.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f93ddf3001ecec16568390b507652644a3a103baa72de3ad3b9c530e3277098"}, + {file = "torch-2.2.1-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:0e8bdd4c77ac2584f33ee14c6cd3b12767b4da508ec4eed109520be7212d1069"}, + {file = "torch-2.2.1-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:6a21bcd7076677c97ca7db7506d683e4e9db137e8420eb4a68fb67c3668232a7"}, + {file = "torch-2.2.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f1b90ac61f862634039265cd0f746cc9879feee03ff962c803486301b778714b"}, + {file = "torch-2.2.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:ed9e29eb94cd493b36bca9cb0b1fd7f06a0688215ad1e4b3ab4931726e0ec092"}, + {file = "torch-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:c47bc25744c743f3835831a20efdcfd60aeb7c3f9804a213f61e45803d16c2a5"}, + {file = "torch-2.2.1-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:0952549bcb43448c8d860d5e3e947dd18cbab491b14638e21750cb3090d5ad3e"}, + {file = "torch-2.2.1-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:26bd2272ec46fc62dcf7d24b2fb284d44fcb7be9d529ebf336b9860350d674ed"}, ] [package.dependencies] @@ -1888,7 +1892,7 @@ nvidia-cusparse-cu12 = {version = "12.1.0.106", markers = "platform_system == \" nvidia-nccl-cu12 = {version = "2.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} nvidia-nvtx-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} sympy = "*" -triton = {version = "2.2.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +triton = {version = "2.2.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.12\""} typing-extensions = ">=4.8.0" [package.extras] @@ -1955,24 +1959,24 @@ tutorials = ["matplotlib", "pandas", "tabulate", "torch"] [[package]] name = "typing-extensions" -version = "4.9.0" +version = "4.10.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, - {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, + {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, + {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, ] [[package]] name = "urllib3" -version = "2.2.0" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, - {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] @@ -2010,4 +2014,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "cf9482db6e504a38e3044e26a6b145e6fb4295936e19a6226e9b6dcbc2ba3270" +content-hash = "3b9e31329875d4c44356a5b2ec0c2d5b95b82b31d99a91e70054cc7728266e52" diff --git a/pyproject.toml b/pyproject.toml index d84521e..fe175cb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,12 +1,12 @@ [tool.poetry] name = "zkstats" -version = "0.1.2" +version = "0.1.3" description = "" authors = ["Jern Kunpittaya", "Kevin Chia"] [tool.poetry.dependencies] python = "^3.9" -ezkl = "7.0.0" +ezkl = "9.1.0" torch = "^2.1.1" requests = "^2.31.0" scipy = "^1.11.4" diff --git a/requirements.txt b/requirements.txt index a349075..3915baa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -ezkl==7.0.0 +ezkl==9.1.0 torch requests scipy diff --git a/tests/test_core.py b/tests/test_core.py index b9492c3..6270fa2 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -47,7 +47,8 @@ def test_get_data_commitment_maps_hardcoded(tmp_path): data_to_file(data_path, [column_0, column_1]) scales = [2, 3] commitment_maps = get_data_commitment_maps(data_path, scales) - expected = {"2": {'columns_0': '0x28b5eeb5aeee399c8c50c5b323def9a1aec1deee5b9ae193463d4f9b8893a9a3', 'columns_1': '0x0523c85a86dddd810418e8376ce6d9d21b1b7363764c9c31b575b8ffbad82987'}, "3": {'columns_0': '0x0a2906522d3f902ff4a63ee8aed4d2eaec0b14f71c51eb9557bd693a4e7d77ad', 'columns_1': '0x2dac7fee1efb9eb955f52494a26a3fba6d1fa28cc819e598cb0af31a47b29d08'}} + # expected = {"2": {'columns_0': '0x28b5eeb5aeee399c8c50c5b323def9a1aec1deee5b9ae193463d4f9b8893a9a3', 'columns_1': '0x0523c85a86dddd810418e8376ce6d9d21b1b7363764c9c31b575b8ffbad82987'}, "3": {'columns_0': '0x0a2906522d3f902ff4a63ee8aed4d2eaec0b14f71c51eb9557bd693a4e7d77ad', 'columns_1': '0x2dac7fee1efb9eb955f52494a26a3fba6d1fa28cc819e598cb0af31a47b29d08'}} + expected = {"2": {'columns_0': 'a3a993889b4f3d4693e19a5beedec1aea1f9de23b3c5508c9c39eeaeb5eeb528', 'columns_1': '8729d8baffb875b5319c4c7663731b1bd2d9e66c37e8180481dddd865ac82305'}, "3": {'columns_0': 'ad777d4e3a69bd5795eb511cf7140becead2d4aee83ea6f42f903f2d5206290a', 'columns_1': '089db2471af30acb98e519c88ca21f6dba3f6aa29424f555b99efb1eee7fac2d'}} assert commitment_maps == expected diff --git a/zkstats/core.py b/zkstats/core.py index 09af412..e068e00 100644 --- a/zkstats/core.py +++ b/zkstats/core.py @@ -156,9 +156,11 @@ def prover_gen_proof( # print(witness["outputs"]) settings = json.load(open(settings_path)) output_scale = settings['model_output_scales'] - print("witness boolean: ", ezkl.vecu64_to_float(witness['outputs'][0][0], output_scale[0])) + # print("witness boolean: ", ezkl.vecu64_to_float(witness['outputs'][0][0], output_scale[0])) + print("witness boolean: ", ezkl.felt_to_float(witness['outputs'][0][0], output_scale[0])) for i in range(len(witness['outputs'][1])): - print("witness result", i+1,":", ezkl.vecu64_to_float(witness['outputs'][1][i], output_scale[1])) + # print("witness result", i+1,":", ezkl.vecu64_to_float(witness['outputs'][1][i], output_scale[1])) + print("witness result", i+1,":", ezkl.felt_to_float(witness['outputs'][1][i], output_scale[1])) # GENERATE A PROOF print("==== Generating Proof ====") @@ -238,7 +240,8 @@ def verifier_verify(proof_path: str, settings_path: str, vk_path: str, selected_ # Sanity check # Check each commitment is correct for i, (actual_commitment, column_name) in enumerate(zip(inputs, selected_columns)): - actual_commitment_str = ezkl.vecu64_to_felt(actual_commitment) + # actual_commitment_str = ezkl.vecu64_to_felt(actual_commitment) + actual_commitment_str = (actual_commitment) input_scale = input_scales[i] expected_commitment = commitment_maps[str(input_scale)][column_name] assert actual_commitment_str == expected_commitment, f"commitment mismatch: {i=}, {actual_commitment_str=}, {expected_commitment=}" @@ -247,9 +250,14 @@ def verifier_verify(proof_path: str, settings_path: str, vk_path: str, selected_ # - is a tuple (is_in_error, result) # - is_valid is True # Sanity check - is_in_error = ezkl.vecu64_to_float(outputs[0], output_scales[0]) + # is_in_error = ezkl.vecu64_to_float(outputs[0], output_scales[0]) + is_in_error = ezkl.felt_to_float(outputs[0], output_scales[0]) assert is_in_error == 1.0, f"result is not within error" - return ezkl.vecu64_to_float(outputs[1], output_scales[1]) + result_arr = [] + for index in range(len(outputs)-1): + # result_arr.append(ezkl.vecu64_to_float(outputs[index+1], output_scales[1])) + result_arr.append(ezkl.felt_to_float(outputs[index+1], output_scales[1])) + return result_arr # =================================================================================================== @@ -376,7 +384,9 @@ def _process_data( def _get_commitment_for_column(column: list[float], scale: int) -> str: # Ref: https://github.com/zkonduit/ezkl/discussions/633 - serialized_data = [ezkl.float_to_vecu64(x, scale) for x in column] - res_poseidon_hash = ezkl.poseidon_hash(serialized_data) - res_hex = ezkl.vecu64_to_felt(res_poseidon_hash[0]) - return res_hex \ No newline at end of file + # serialized_data = [ezkl.float_to_vecu64(x, scale) for x in column] + serialized_data = [ezkl.float_to_felt(x, scale) for x in column] + res_poseidon_hash = ezkl.poseidon_hash(serialized_data)[0] + # res_hex = ezkl.vecu64_to_felt(res_poseidon_hash[0]) + + return res_poseidon_hash \ No newline at end of file diff --git a/zkstats/ops.py b/zkstats/ops.py index fc7bfc9..c663006 100644 --- a/zkstats/ops.py +++ b/zkstats/ops.py @@ -69,8 +69,7 @@ class Median(Operation): len = x.size()[1] half_len = torch.floor(torch.div(len, 2)) - # not support modulo yet - less_cons = count_lesshalf_len # For count_equal == 0