
밑바닥부터 시작하는 비트코인
74
2.5
점 덧셈 코딩하기
먼저 항등원에 해당하는 무한원점을 다루겠습니다. 파이썬에서 무한대 값을 표현하는 것이 쉽
지 않기에
None
값이 무한원점을 표현하는 것으로 정하겠습니다. 완성된 코드는 다음과 같이
실행됩니다.
>>> from ecc import Point
>>> p1 = Point(-1, -1, 5, 7)
>>> p2 = Point(-1, 1, 5, 7)
>>> inf = Point(None, None, 5, 7)
>>> print(p1 + inf)
Point(-1,-1)_5_7
>>> print(inf + p2)
Point(-1,1)_5_7
>>> print(p1 + p2)
Point(infinity)
이와 같이 실행되기 위해 두 가지가 필요합니다. 첫째로 무한원점을 의미하는
None
값이 인수
로 들어오면 이후의 방정식 로직을 확인하지 않도록
__
init
__
메서드를 수정해야 합니다. 둘
째는
FieldElement
클래스처럼 덧셈 연산자를 정의하는
__
add
__
메서드를 작성해야 합니다.
class Point:
def __init__(self, x, y, a, b):
self.a = a
self.b = b
self.x = x
self.y = y
if self.x is None and self.y is None:
➊
return ...