Astroport.ONE/adventure/BLOCKCHAIN/gaetan.corin@ynov.com/FENETRE/script.py

81 lines
2.5 KiB
Python

import os
import random
import time
folder_user = './../LACHAINE'
def genesis():
print("Lancement de la chaine")
with open("chaine.txt", "w") as fichier:
fichier.write("")
def get_users_account():
if os.path.isdir(folder_user):
users_name = os.listdir(folder_user)
return users_name
def regeneration_account(users_name):
for user in users_name:
with open(os.path.join(folder_user, user), "w") as fichier:
fichier.write("N=100")
def create_block(users_name):
with open("block.txt", "w") as fichier:
fichier.write("")
for i in range(10):
transaction = create_transaction(users_name)
def create_transaction(users_name):
debtor = random.choice(users_name)
creditor = random.choice(users_name)
while debtor == creditor:
creditor = random.choice(users_name)
payment = random.randint(1, 50)
print('debtor:', debtor, 'creditor:', creditor, 'payment:', payment)
debit_value(debtor, payment)
credit_value(creditor, payment)
with open("block.txt", "a") as fichier:
timestamp = int(time.time())
fichier.write(str(timestamp)+' '+debtor+"= -"+str(payment)+'\n')
fichier.write(str(timestamp)+' '+creditor+"= +"+str(payment)+'\n')
def debit_value(debtor, payment):
with open(os.path.join(folder_user, debtor), "r") as fichier:
account = fichier.read()
account_value = int(account.split("=")[1])
new_account_value = "N="+ str(account_value - payment)
with open(os.path.join(folder_user, debtor), "w") as fichier:
fichier.write(new_account_value)
def credit_value(creditor, payment):
with open(os.path.join(folder_user, creditor), "r") as fichier:
account = fichier.read()
account_value = int(account.split("=")[1])
new_account_value = "N="+ str(account_value + payment)
with open(os.path.join(folder_user, creditor), "w") as fichier:
fichier.write(new_account_value)
def get_account_value(user):
path = os.path.join(folder_user, user)
with open(path, "r") as fichier:
contenu_lu = fichier.read()
print(user, contenu_lu)
def push_to_chaine():
with open("block.txt", "r") as fichier:
block = fichier.read()
with open("chaine.txt", "a") as fichier:
fichier.write(block)
genesis()
users_name = get_users_account()
regeneration_account(users_name)
for i in range(10):
time.sleep(1)
create_block(users_name)
push_to_chaine()