Spaces:
Runtime error
Runtime error
| import requests | |
| from mychain import Blockchain | |
| from mychain import MyChainTrans | |
| import pandas as pd | |
| import json | |
| main_chain='https://huggingface.co/datasets/Omnibus/blockchain-sim-2/raw/main/chains/' | |
| main_balance='https://huggingface.co/datasets/Omnibus/blockchain-sim-2/raw/main/balance/' | |
| main_trans='https://huggingface.co/datasets/Omnibus/blockchain-sim-2/raw/main/transact/' | |
| trans_name = 'trans1.json' | |
| repo_d='Omnibus/static-bin' | |
| chain_d='chain1.json' | |
| def bc_transactions(block): | |
| #mes, out = issue_tokens(sender,recipient,amount) | |
| print (f'block:: {block}') | |
| try: | |
| blockchain.new_transaction(block) | |
| message = "Transaction Added to Pool" | |
| data = pd.DataFrame(blockchain.trans_data_out) | |
| except Exception as e: | |
| message = e | |
| data = None | |
| return data,message | |
| def create_chain(create=None): | |
| global blockchain | |
| blockchain = Blockchain(chain_load=main_chain,create=create) | |
| #blockchain.reset(create=create) | |
| return "New Chain Created",None,display_chain() | |
| def display_chain(): | |
| response = {'chain': blockchain.chain, | |
| 'length': len(blockchain.chain)} | |
| return response | |
| def mine_block(chain_r=None,chain_n=None): | |
| if chain_n=="": | |
| chain_n = chain_d | |
| previous_block = blockchain.print_previous_block() | |
| previous_proof = previous_block['proof'] | |
| proof = blockchain.proof_of_work(previous_proof) | |
| previous_hash = blockchain.hash(previous_block) | |
| block = blockchain.create_block(proof, previous_hash,chain_r,chain_n) | |
| response = {'message': 'A block is MINED', | |
| 'index': block['index'], | |
| 'timestamp': block['timestamp'], | |
| 'proof': block['proof'], | |
| 'previous_hash': block['previous_hash']} | |
| message = "A block is MINED" | |
| show_chain = display_chain() | |
| if len(blockchain.chain) > 1000: | |
| blockchain.reset() | |
| response = None | |
| show_chain=display_chain() | |
| message = "New Chain Created at Max 20 Blocks" | |
| #MyChainTrans.reset(create=chain_d) | |
| return response, show_chain,pd.DataFrame(blockchain.pending_transactions), message | |
| def valid(): | |
| valid,ind,mes = blockchain.chain_valid(blockchain.chain) | |
| if valid: | |
| response = 'The Blockchain is valid.' | |
| z=True | |
| else: | |
| response = f'Blockchain is not valid. {mes} at Index {ind}' | |
| z=False | |
| return response,z | |
| def get_chain(repo_name=None,chain_name=None,token=None): | |
| if repo_name == "": | |
| repo_name = repo_d | |
| if chain_name=="": | |
| chain_name = chain_d | |
| try: | |
| r = requests.get(f'{main_chain}{chain_name}') | |
| #create_chain(load=r.text) | |
| global blockchain | |
| blockchain = Blockchain(chain_load=main_chain,load=r.text) | |
| response = {'chain': blockchain.chain, | |
| 'length': len(blockchain.chain)} | |
| message = f"Blockchain loaded from: {main_chain}{chain_name}" | |
| return response,message | |
| except: | |
| message = f"Error loading from: {src}" | |
| return ["Error Loading Chain"],message | |
| def checkp(inp): | |
| if inp == pa: | |
| return gr.update(visible=False), gr.update(visible=True) | |
| elif inp != pa: | |
| return gr.update(visible=True), gr.update(visible=False) | |
| def add_node(this_space,repo,space,chain_file): | |
| #print(f"{api.whoami(['name'])}") | |
| #repo = f'omnibus/{space}' | |
| is_valid='True' | |
| r = requests.get(f'{main_nodes}') | |
| try: | |
| lod = json.loads(r.text) | |
| except: | |
| lod=[] | |
| pass | |
| block = {'index': len(lod) + 1, | |
| 'timestamp': str(datetime.datetime.now()), | |
| 'url': f'https://huggingface.co/datasets/{repo}/{space}/raw/main/{chain_file}', | |
| 'valid': f'{is_valid}'} | |
| lod.append(block) | |
| json_object = json.dumps(lod, indent=4) | |
| with open("tmp1.json", "w") as outfile: | |
| outfile.write(json_object) | |
| try: | |
| api.upload_file( | |
| path_or_fileobj="tmp1.json", | |
| path_in_repo=main_nodes.split('main/',1)[1], | |
| repo_id=main_nodes.split('datasets/',1)[1].split('/raw',1)[0], | |
| token=token_self, | |
| repo_type="dataset", | |
| ) | |
| os.remove("tmp1.json") | |
| except Exception as e: | |
| pass | |
| #api = HfApi(token=token) | |
| repo = main_balance.split('datasets/',1)[1].split('/raw',1)[0].split('/',1)[0] | |
| name = main_balance.split('datasets/',1)[1].split('/raw',1)[0].split('/',1)[1] |