2021-06-01から1ヶ月間の記事一覧

簡単なブロックチェーンをつくる(その6 ジェネシスブロックのマイニング)

前回のプログラムを使ってジェネシスブロックのマイニングを行う.ジェネシスブロックはブロックチェーンのインスタンス生成時にコンストラクタを通じて作成する.ジェネシスブロックに入れるトランザクションは,コインベーストランザクション(プルーフオ…

簡単なブロックチェーンをつくる(その5 プルーフオブワーク)

新しいブロックを生成するための条件として,ブロックのハッシュ値に条件を設ける.何度もブロックのハッシュを計算させ,ハッシュ値がある条件を満たした場合に限りブロックを生成する.今回はこの原型をつくる. ブロックのハッシュ値は sha256 を使ってい…

簡単なブロックチェーンをつくる(その4 ブロックチェーンのクラス化)

ブロックチェーンのクラスをつくって前回のプログラムを少し整理する. import hashlib, json from time import time from flask import Flask, jsonify, request app = Flask(__name__) class Blockchain(): def __init__(self): # ブロックチェーン本体 se…

簡単なブロックチェーンをつくる(その3 ブロックのハッシュ)

次にブロックのハッシュを計算する.ブロックチェーンの各ブロックは,その直前のブロックのハッシュ値を保存している.ジェネシスブロックは例外で,「直前の」ブロックは存在しない.そのため直前のブロックのハッシュ値は適当に決めることになる. ハッシ…

簡単なブロックチェーンをつくる(その2 ブロック)

前回はトランザクションをつくった.今回はブロックの骨格をつくる.ブロックの構造もトランザクションと同様に辞書を使って block = { 'index': ブロック高(ジェネシスブロックを0とする) 'tiemstamp': ブロック作成日時 'tx_list': トランザクションリス…

簡単なブロックチェーンをつくる(その1 トランザクション)

話題のブロックチェーンに関するメモ.元ネタは Wei-Meng Lee, Beginning Ethereum Smart Contracts Programming With Examples in Python, Solidity and JavaScript, Apress, 2019, Chapter 2 ここではお金(コイン)の送受信機能のみをもつ,ごく簡単なブ…