import hashlib
import json
import http.server
import socketserver
import time
from datetime import datetime
import concurrent.futures
import requests
import random
def _gen_block(arg):
source_host, data, prev_hash = arg
now = time.time()
loc = datetime.fromtimestamp(now)
timestamp = loc.timestamp()
while True:
nonce = random.randint(0, 100000000000000)
block = { \
'timestamp':timestamp, \
'source_host':source_host, \
'data':data, \
'prev_hash': prev_hash, \
'nonce':nonce,
}
next_hash = hashlib.sha256(bytes(json.dumps(block),'utf8')).hexdigest()
# 先頭のN字が"0"ならば、採用
size = 1
if next_hash[:size] == '0'*size:
break
open(f'cache/{next_hash}', 'w').write( json.dumps(block, indent=2, ensure_ascii=False) )
print(next_hash)
print(block)
return block, next_hash
start_block, next_hash = _gen_block(('http://localhost:1200', 'Ground Zero', hashlib.sha256(bytes('0', 'utf8')).hexdigest()))
for line in open('stash/kokoro.txt'):
line = line.strip()
block, next_hash = _gen_block(('http://localhost:1200', line, next_hash) )
git clone https://github.com/GINK03/python-block-chain.git
で本家からインストールして下さい。46行目の
を自分の名前等に書き替えて下さい。Ground Zero
47行目の
をブロックチェーンを構築したい[パス/ファイル]に書き替えて下さい。デフォルトではファイルはANSICODEで保存して下さい。UTF-8を扱う場合はstash/kokoro.txt
の後ろに'stash/kokoro.txt'
を追記して下さい。, encoding='utf-8'
webserverにアップロードする場合は46行目と49行目の
を自サイトのURL:ポート番号に書き替えて下さい。http://localhost:1200
と同じ階層でコマンドラインからoffline.py
でブロックチェーンの構築python offline.py
import json #while True: cor = '00ce7c3a81315250d7abc2d99f177b2ffb442334644044ea89f1d6e435845d86' while True: obj = json.load( open(f'cache/{cor}') ) prev_hash = obj['prev_hash'] data = obj['data'] print( data ) if data == 'Ground Zero': break cor = prev_hash
6行目の
の値を'00ce7c3a81315250d7abc2d99f177b2ffb442334644044ea89f1d6e435845d86'
で構築した時の最後に導き出される値に変更して下さい。offline.py
14行目の
をGround Zero
でブロックチェーンを構築した時の46行目を同じ文字列にして下さい。offline.py
で書き換えた値(名前等)が表示されればOK!!GOOD HACK TO LIFE FOR U!!python phyllis.py
あ、そうそう言い忘れたけどブロックチェーンを構築する画像等に自分の名前入れときや。
信用できるサイトにブロックチェーンを構築して下さい。
Certificate Authority is 証明機関名
File Name is ファイル名
cor is 値
Date is 日時
Finger Print is 拇印
If you want to transfer ownership, please stamp the two thumbprints.