def load_node_json(self): if not path.exists("node_data.json"): create_file = open("node_data.json", "x") create_file.close() read_file = open("node_data.json", "r") raw = read_file.read() if len(raw) == 0: addr = Address() add_data = addr.export() my_node = {**add_data, 'address': addr.get_public_address()} write_file = open("node_data.json", 'w') write_file.write(json.dumps(my_node)) write_file.close() return my_node else: try: my_node = json.loads(raw) return my_node except ValueError: print( 'Error: The json is malformed in node_data.json. Please fix the file or delete it.\n(Note: Deleting this file will cause your node main wallet signing key to be lost.)' ) exit() read_file.close()
def sign_vote(self, sk, vk): add = Address() add.load(sk, vk) self.script_sig = add.sign_message( json.dumps({ "ip_address": self.ip_address, "representative": self.representative })) self.vk = vk
def verify_transaction(self): for i, input in enumerate(self.input): address = Address() if address.verify_signature(input['prev_out']['script'], self.verifyingkey): continue else: return False return True
def create_tx(addr): add_data = { "address": "1d3f347aada53547142da8edea5e0019e6ef31bb15", "vk": "-----BEGIN PUBLIC KEY-----\nMEkwEwYHKoZIzj0CAQYIKoZIzj0DAQEDMgAEHxzkpgh/lqgd1/rb7d+D+srhlhzG\ncOAveBQafVnHkffNR2aCiFHVQZKzhyO7iC/p\n-----END PUBLIC KEY-----\n", "sk": "-----BEGIN EC PRIVATE KEY-----\nMF8CAQEEGKtkXJ8xlejSSOl4mzNTYiXmb70wRByW1aAKBggqhkjOPQMBAaE0AzIA\nBB8c5KYIf5aoHdf62+3fg/rK4ZYcxnDgL3gUGn1Zx5H3zUdmgohR1UGSs4cju4gv\n6Q==\n-----END EC PRIVATE KEY-----\n" } tx = Transaction() add = Address() add.load(add_data["sk"], add_data["vk"]) # print(addr) tx.inputs = [] tx.inputs.append( TransactionInput.from_json({ 'previous_tx': "16e8dab3a9185d5329fac9cfdc0a81c7817826f701e747cb3751878061e4dc8c", 'index': 0, 'scriptSig': [ add.sign_message( json.dumps({ 'previous_tx': "16e8dab3a9185d5329fac9cfdc0a81c7817826f701e747cb3751878061e4dc8c", 'index': 0 }).encode("utf-8")).hex() ], 'address': addr, 'verifying_key': [add_data["vk"]] })) tx.outputs.append( TransactionOutput.from_json({ 'address': "yikgyyf67rr68t887tfc", 'value': 25, 'n': 0 })) tx.generate_hash() txf = tx.to_json() # print(txf['inputs'][0]['address']) return txf
def create_fake_transaction(address: Address): tmp_tx = Transaction() add = Address() add.load(add_data["sk"], add_data["vk"]) tmp_tx.inputs.append(TransactionInput.from_json({ 'previous_tx': "16e8dab3a9185d5329fac9cfdc0a81c7817826f701e747cb3751878061e4dc8c", 'index': 0, 'scriptSig': [add.sign_message(json.dumps({ 'previous_tx': "16e8dab3a9185d5329fac9cfdc0a81c7817826f701e747cb3751878061e4dc8c", 'index': 0 }).encode("utf-8")).hex()], 'address': add_data["address"], 'verifying_key': [add_data["vk"]] })) tmp_tx.outputs.append(TransactionOutput.from_json({ 'address': "12345", 'value': 25, 'n': 0 })) tmp_tx.generate_hash() return tmp_tx
from trucoin.Address import Address add = Address() pub_address = add.get_public_address() keys = add.export() print(pub_address) print(keys)
'verifying_key': [add_data["vk"]] })) tmp_tx.outputs.append(TransactionOutput.from_json({ 'address': "12345", 'value': 25, 'n': 0 })) tmp_tx.generate_hash() return tmp_tx if __name__ == "__main__": # Push 10 random addresses for i in range(10): tmp_addr = Address() global_addresses.append(tmp_addr) redis_client = redis.Redis(host='localhost', port=6379, db=0) # Clean the whole database # redis_client.delete("chain") # Add genesis block # redis_client.rpush("chain", json.dumps({ # "hash": "16e8dab3a9185d5329fac9cfdc0a81c7817826f701e747cb3751878061e4dc8c", # "timestamp": 1599401715.846563, # "transactions": [{ # "timestamp": 1599401715.846347, # "version": "0.0.1", # "inputs": [], # "outputs": [
def gen_addr(self): add = Address() print(add.get_public_address())
def gen_words(self): add = Address() print(add.gen_words())
def sign_verif(self): add = Address() sgn = add.sign_message("hello world") res = add.verify_signature("hello world", sgn) self.assertEqual(res, True)