import requests from mychain import Blockchain from mychain import MyChainTrans import pandas as pd import json main_chain='https://huggingface.co/datasets/Omnibus/chat-at/raw/main/chains/' main_balance='https://huggingface.co/datasets/Omnibus/chat-at/raw/main/balance/' main_trans='https://huggingface.co/datasets/Omnibus/chat-at/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]