$ sudo apt install python3-virtualenv
$ virtualenv -p python3 .venv
$ .venv/vin/activate
$ . .venv/bin/activate
$ pip3 install -r requirements.txt
// vagrant上でjupyter notebookを起動する
$ jupyter notebook –no-browser –ip=0.0.0.0
ビットコインは相互に依存するコンポーネントが多数存在する
楕円曲線暗号(ECC)が基礎となる
L 署名アルゴリズム、検証アルゴリズム … トランザクションの仕組みの中心
L シェノア署名、秘匿トランザクションなどの技術
### 有限体
有限の個数からなる集合と演算
集合が閉じている、加法単位元、乗法単位元、加法逆元、乗法逆元
### 有限集合
Fp = {0,1,2,…p-1}
体の位数は素数のべき乗となる
class FieldElement: def __init__(self, num, prime): if num >= prime or num < 0: error = 'Num {} not in field range 0 to {}'.format( num, prime - 1) raise ValueError(error) self.num = num self.prime = prime def __repr__(self): return 'FieldElement_{}({})'.format(self.prime, self.num) def __eq__(self, other): if other is None: return False return self.num == other.num and self.prime == other.prime a = FieldElement(7, 13) b = FieldElement(6, 13) print(a==b) print(a==a)
$ python3 app.py
False
True