From 2cd54153964b7dda14cd5063f820c396c9f442dd Mon Sep 17 00:00:00 2001 From: Vitalik Buterin Date: Fri, 12 May 2017 02:27:24 -0400 Subject: [PATCH] Reorganized pairing library --- iceage.py | 8 +++--- zksnark/py_pairing/LICENSE | 22 ++++++++++++++++ zksnark/py_pairing/README.md | 1 + zksnark/py_pairing/py_pairing/__init__.py | 3 +++ .../py_pairing}/bn128_curve.py | 0 .../py_pairing}/bn128_field_elements.py | 0 .../py_pairing}/bn128_pairing.py | 0 .../py_pairing}/optimized_curve.py | 4 +-- .../py_pairing}/optimized_field_elements.py | 0 .../py_pairing}/optimized_pairing.py | 6 ++--- zksnark/py_pairing/setup.py | 26 +++++++++++++++++++ .../tests/test.py} | 2 +- 12 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 zksnark/py_pairing/LICENSE create mode 100644 zksnark/py_pairing/README.md create mode 100644 zksnark/py_pairing/py_pairing/__init__.py rename zksnark/{ => py_pairing/py_pairing}/bn128_curve.py (100%) rename zksnark/{ => py_pairing/py_pairing}/bn128_field_elements.py (100%) rename zksnark/{ => py_pairing/py_pairing}/bn128_pairing.py (100%) rename zksnark/{ => py_pairing/py_pairing}/optimized_curve.py (97%) rename zksnark/{ => py_pairing/py_pairing}/optimized_field_elements.py (100%) rename zksnark/{ => py_pairing/py_pairing}/optimized_pairing.py (94%) create mode 100644 zksnark/py_pairing/setup.py rename zksnark/{bn128_pairing_test.py => py_pairing/tests/test.py} (91%) diff --git a/iceage.py b/iceage.py index 95c5ea3..b49364c 100644 --- a/iceage.py +++ b/iceage.py @@ -1,12 +1,12 @@ import random import datetime -diffs = [298.04 * 10**12] -hashpower = diffs[0] / 14.6 -times = [1493155305] +diffs = [343.14 * 10**12] +hashpower = diffs[0] / 15 +times = [1493974999] -for i in range(3566076, 6010000): +for i in range(3653829, 6010000): blocktime = random.expovariate(hashpower / diffs[-1]) adjfac = max(1 - int(blocktime / 10), -99) / 2048. newdiff = diffs[-1] * (1 + adjfac) diff --git a/zksnark/py_pairing/LICENSE b/zksnark/py_pairing/LICENSE new file mode 100644 index 0000000..ce48885 --- /dev/null +++ b/zksnark/py_pairing/LICENSE @@ -0,0 +1,22 @@ + +The MIT License (MIT) + +Copyright (c) 2015 Vitalik Buterin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/zksnark/py_pairing/README.md b/zksnark/py_pairing/README.md new file mode 100644 index 0000000..fc7a59b --- /dev/null +++ b/zksnark/py_pairing/README.md @@ -0,0 +1 @@ +Implements optimal ate pairings over the bn\_128 curve. diff --git a/zksnark/py_pairing/py_pairing/__init__.py b/zksnark/py_pairing/py_pairing/__init__.py new file mode 100644 index 0000000..32209d5 --- /dev/null +++ b/zksnark/py_pairing/py_pairing/__init__.py @@ -0,0 +1,3 @@ +from .optimized_curve import * +from .optimized_field_elements import * +from .optimized_pairing import * diff --git a/zksnark/bn128_curve.py b/zksnark/py_pairing/py_pairing/bn128_curve.py similarity index 100% rename from zksnark/bn128_curve.py rename to zksnark/py_pairing/py_pairing/bn128_curve.py diff --git a/zksnark/bn128_field_elements.py b/zksnark/py_pairing/py_pairing/bn128_field_elements.py similarity index 100% rename from zksnark/bn128_field_elements.py rename to zksnark/py_pairing/py_pairing/bn128_field_elements.py diff --git a/zksnark/bn128_pairing.py b/zksnark/py_pairing/py_pairing/bn128_pairing.py similarity index 100% rename from zksnark/bn128_pairing.py rename to zksnark/py_pairing/py_pairing/bn128_pairing.py diff --git a/zksnark/optimized_curve.py b/zksnark/py_pairing/py_pairing/optimized_curve.py similarity index 97% rename from zksnark/optimized_curve.py rename to zksnark/py_pairing/py_pairing/optimized_curve.py index 7ee42ab..6859821 100644 --- a/zksnark/optimized_curve.py +++ b/zksnark/py_pairing/py_pairing/optimized_curve.py @@ -1,5 +1,5 @@ -from bn128_field_elements import field_modulus, FQ -from optimized_field_elements import FQ2, FQ12 +from .bn128_field_elements import field_modulus, FQ +from .optimized_field_elements import FQ2, FQ12 # from bn128_field_elements import FQ2, FQ12 curve_order = 21888242871839275222246405745257275088548364400416034343698204186575808495617 diff --git a/zksnark/optimized_field_elements.py b/zksnark/py_pairing/py_pairing/optimized_field_elements.py similarity index 100% rename from zksnark/optimized_field_elements.py rename to zksnark/py_pairing/py_pairing/optimized_field_elements.py diff --git a/zksnark/optimized_pairing.py b/zksnark/py_pairing/py_pairing/optimized_pairing.py similarity index 94% rename from zksnark/optimized_pairing.py rename to zksnark/py_pairing/py_pairing/optimized_pairing.py index 78652b1..2b9656b 100644 --- a/zksnark/optimized_pairing.py +++ b/zksnark/py_pairing/py_pairing/optimized_pairing.py @@ -1,6 +1,6 @@ -from optimized_curve import double, add, multiply, is_on_curve, neg, twist, b, b2, b12, curve_order, G1, G2, G12, normalize -from bn128_field_elements import field_modulus, FQ -from optimized_field_elements import FQ2, FQ12 +from .optimized_curve import double, add, multiply, is_on_curve, neg, twist, b, b2, b12, curve_order, G1, G2, G12, normalize +from .bn128_field_elements import field_modulus, FQ +from .optimized_field_elements import FQ2, FQ12 ate_loop_count = 29793968203157093288 log_ate_loop_count = 63 diff --git a/zksnark/py_pairing/setup.py b/zksnark/py_pairing/setup.py new file mode 100644 index 0000000..b16e4f4 --- /dev/null +++ b/zksnark/py_pairing/setup.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- + +from setuptools import setup, find_packages + + +with open('README.md') as f: + readme = f.read() + +with open('LICENSE') as f: + license = f.read() + +setup( + name='py_pairing', + version='0.0.1', + description='Optimal ate pairings over alt_bn128', + long_description=readme, + author='Vitalik Buterin', + author_email='', + url='https://github.com/ethereum/research', + license=license, + packages=find_packages(exclude=('tests', 'docs')), + install_requires=[ + 'ethereum == 1.3.7', + 'nose', + ], +) diff --git a/zksnark/bn128_pairing_test.py b/zksnark/py_pairing/tests/test.py similarity index 91% rename from zksnark/bn128_pairing_test.py rename to zksnark/py_pairing/tests/test.py index 4993615..dc50ded 100644 --- a/zksnark/bn128_pairing_test.py +++ b/zksnark/py_pairing/tests/test.py @@ -1,4 +1,4 @@ -from optimized_pairing import pairing, neg, G2, G1, multiply, FQ12, curve_order +from py_pairing.optimized_pairing import pairing, neg, G2, G1, multiply, FQ12, curve_order # from bn128_pairing import pairing, neg, G2, G1, multiply, FQ12, curve_order import time