def run(): """ Create block used for: - POST /blocks """ signing_key = read_signing_key_file(os.path.join(SIGNING_KEY_DIR, 'bucky')) account_number = get_verify_key(signing_key=signing_key) transactions = [{ 'amount': BANK_TX_FEE, 'recipient': BANK_ACCOUNT_NUMBER, }, { 'amount': PV_TX_FEE, 'recipient': PV_ACCOUNT_NUMBER, }, { 'amount': 2.5, 'recipient': BUCKY_ACCOUNT_NUMBER, }] block = generate_block( account_number=account_number, balance_lock= '8db1bd4404eadce824b8f7af2461976e1fde8ebd7a279a2ccec2614479ede338', signing_key=signing_key, transactions=transactions) print(block) write_json(os.path.join(BLOCKS_DIR, 'upw.json'), block)
def run(send_to_cv=False): """ Generate primary validator updated notice (from bank) """ # Signed request sk = read_signing_key_file(os.path.join(SIGNING_KEY_DIR, 'bank_nid')) new_pv_data = { 'ip_address': '192.168.1.20', 'port': '8000', 'protocol': 'http' } signed_request = generate_signed_request( data=new_pv_data, nid_signing_key=sk ) if send_to_cv: send_request_to_cv(signed_request) write_json( os.path.join(SIGNED_REQUESTS_DIR, 'primary-validator-updated-request.json'), signed_request )
def run(send_to_node=False): """ Generate signed PATCH request """ # Signed request sk = read_signing_key_file(os.path.join(SIGNING_KEY_DIR, 'bank_nid')) payload = { 'trust': 76.26 } target_nid = BANK_NID_ACCOUNT_NUMBER signed_request = generate_signed_request( data=payload, nid_signing_key=sk ) if send_to_node: send_request_to_node(signed_request, target_nid) write_json( os.path.join(SIGNED_REQUESTS_DIR, 'bank-patch-request.json'), signed_request )
def run(send_to_bank=False): """ Create block used for: - POST /blocks """ signing_key = read_signing_key_file( os.path.join(SIGNING_KEY_DIR, 'treasury')) account_number = get_verify_key(signing_key=signing_key) balance_lock = get_account_balance_lock( account_number=TREASURY_ACCOUNT_NUMBER, live_pv=True) transactions = [{ 'amount': BANK_TX_FEE, 'recipient': BANK_ACCOUNT_NUMBER, }, { 'amount': PV_TX_FEE, 'recipient': PV_ACCOUNT_NUMBER, }, { 'amount': 5.50, 'recipient': BUCKY_ACCOUNT_NUMBER, }] block = generate_block(account_number=account_number, balance_lock=balance_lock, signing_key=signing_key, transactions=transactions) write_json(os.path.join(BLOCKS_DIR, 'blocks.json'), block) if send_to_bank: send_block_to_bank(block)
def download_root_account_file(*, url): """Download root account JSON file and save""" request = Request(url) response = urlopen(request) results = json.loads(response.read()) write_json(settings.ROOT_ACCOUNT_FILE_PATH, results)
def download_root_account_file(*, url, destination_file_path): """ Download root account JSON file and save """ request = Request(url) response = urlopen(request) results = json.loads(response.read()) write_json(destination_file_path, results)
def run(send_to_pv=False): """ Create block used for: - POST /bank_blocks - Bank > PV """ treasury_signing_key = read_signing_key_file( os.path.join(SIGNING_KEY_DIR, 'treasury')) account_number = get_verify_key(signing_key=treasury_signing_key) balance_lock = get_account_balance_lock( account_number=TREASURY_ACCOUNT_NUMBER, live_pv=True) transactions = [{ 'amount': BANK_TX_FEE, 'recipient': BANK_ACCOUNT_NUMBER, }, { 'amount': PV_TX_FEE, 'recipient': PV_ACCOUNT_NUMBER, }, { 'amount': 1.0, 'recipient': BUCKY_ACCOUNT_NUMBER, }] block = generate_block(account_number=account_number, balance_lock=balance_lock, signing_key=treasury_signing_key, transactions=transactions) bank_nid_sk = read_signing_key_file( os.path.join(SIGNING_KEY_DIR, 'bank_nid')) bank_nid = get_verify_key(signing_key=bank_nid_sk) bank_nid = encode_verify_key(verify_key=bank_nid) message = sort_and_encode(block) signed_block = { 'block': block, 'node_identifier': bank_nid, 'signature': generate_signature(message=message, signing_key=bank_nid_sk) } write_json(os.path.join(BLOCKS_DIR, 'bank-blocks-request.json'), signed_block) if send_to_pv: send_request_to_pv(signed_block)
def run(send_to_bank=False): """ Generate invalid block """ # Signed request sk = read_signing_key_file(os.path.join(SIGNING_KEY_DIR, 'cv_nid')) signed_request = generate_signed_request(data={ 'block': { 'account_number': '0cdd4ba04456ca169baca3d66eace869520c62fe84421329086e03d91a68acdb', 'message': { 'balance_key': 'ce51f0d9facaa7d3e69657429dd3f961ce70077a8efb53dcda508c7c0a19d2e3', 'txs': [{ 'amount': 12.5, 'recipient': '484b3176c63d5f37d808404af1a12c4b9649cd6f6769f35bdf5a816133623fbc' }, { 'amount': 1, 'recipient': '5e12967707909e62b2bb2036c209085a784fabbc3deccefee70052b6181c8ed8' }, { 'amount': 4, 'recipient': 'ad1f8845c6a1abb6011a2a434a079a087c460657aad54329a84b406dce8bf314' }] }, 'signature': 'ee5a2f2a2f5261c1b633e08dd61182fd0db5604c853ebd8498f6f28ce8e2ccbbc38093918610ea88a7ad47c7f3192ed955d9d1529e7e390013e43f25a5915c0f' }, 'block_identifier': '65ae26192dfb9ec41f88c6d582b374a9b42ab58833e1612452d7a8f685dcd4d5', 'primary_validator_node_identifier': PV_NID_ACCOUNT_NUMBER }, nid_signing_key=sk) if send_to_bank: send_request_to_bank(signed_request) write_json(os.path.join(SIGNED_REQUESTS_DIR, 'invalid-block-request.json'), signed_request)
def run(send_to_node=False): """ Generate signed PATCH request """ # Signed request sk = read_signing_key_file(os.path.join(SIGNING_KEY_DIR, 'bank_nid')) payload = {'trust': 99.98} signed_request = generate_signed_request(data=payload, nid_signing_key=sk) if send_to_node: send_request_to_node(signed_request) write_json(os.path.join(SIGNED_REQUESTS_DIR, 'account-patch-request.json'), signed_request)
def send_request_to_pv(signed_request): """ Send request to PV """ node_address = format_address(ip_address='64.225.47.205', port=None, protocol='http') url = f'{node_address}/bank_blocks' results = post(url=url, body=signed_request) if isinstance(results, dict): for k, v in results.items(): print(f'{k}: {v}') print(results) write_json(os.path.join(BLOCKS_DIR, 'bank-blocks-response.json'), results)
def run(send_to_node=False): """ Generate signed connection request """ # Signed request sk = read_signing_key_file(os.path.join(SIGNING_KEY_DIR, 'bank_nid')) signed_request = generate_signed_request(data={ 'ip_address': '167.99.173.247', 'port': '80', 'protocol': 'http' }, nid_signing_key=sk) if send_to_node: send_request_to_node(signed_request) write_json(os.path.join(SIGNED_REQUESTS_DIR, 'connection-request.json'), signed_request)
def send_block_to_bank(block): """ Send block to bank """ next_balance_lock = get_message_hash(message=block['message']) print(f'\nNext balance lock will be: {next_balance_lock}\n') bank_address = format_address(ip_address='167.99.173.247', port=None, protocol='http') url = f'{bank_address}/blocks' results = post(url=url, body=block) if isinstance(results, dict): for k, v in results.items(): print(f'{k}: {v}') write_json(os.path.join(BLOCKS_DIR, 'blocks-response.json'), results)
def run(send_to_cv=False): """ Bank asking a confirmation validator to upgrade to a primary validator """ # Signed request sk = read_signing_key_file(os.path.join(SIGNING_KEY_DIR, 'bank_nid')) new_pv_data = {'validator_node_identifier': CV_NID_ACCOUNT_NUMBER} signed_request = generate_signed_request(data=new_pv_data, nid_signing_key=sk) if send_to_cv: send_request_to_cv(signed_request) write_json( os.path.join(SIGNED_REQUESTS_DIR, 'upgrade-request-request.json'), signed_request)
def run(send_to_node=False): """ Generate signed connection request """ # Signed request sk = read_signing_key_file(os.path.join(SIGNING_KEY_DIR, 'cv_nid')) signed_request = generate_signed_request(data={ 'ip_address': '138.68.233.185', 'port': None, 'protocol': 'http' }, nid_signing_key=sk) if send_to_node: send_request_to_node(signed_request, live_pv=True) write_json(os.path.join(SIGNED_REQUESTS_DIR, 'connection-request.json'), signed_request)
def send_request_to_node(signed_request): """ Send request to node """ node_address = format_address(ip_address='192.168.1.232', port=8000, protocol='http') url = f'{node_address}/accounts/{TREASURY_ACCOUNT_NUMBER}' results = patch(url=url, body=signed_request) if isinstance(results, dict): for k, v in results.items(): print(f'{k}: {v}') print(results) write_json( os.path.join(SIGNED_REQUESTS_DIR, 'account-patch-response.json'), results)
def run(send_to_bank=False): """ Generate validator confirmation service """ # Signed request sk = read_signing_key_file(os.path.join(SIGNING_KEY_DIR, 'cv_nid')) signed_request = generate_signed_request(data={ 'end': '2020-07-09T22:10:25Z', 'start': '2020-08-09T22:10:25Z' }, nid_signing_key=sk) if send_to_bank: send_request_to_bank(signed_request) write_json( os.path.join(SIGNED_REQUESTS_DIR, 'signed-validator-confirmation-services-request.json'), signed_request)
def send_request_to_node(signed_request, target_nid): """ Send request to node """ node_address = format_address(ip_address='192.168.1.232', port=8000, protocol='http') url = f'{node_address}/validators/{target_nid}' results = patch(url=url, body=signed_request) if isinstance(results, dict): for k, v in results.items(): print(f'{k}: {v}') print(results) write_json( os.path.join(SIGNED_REQUESTS_DIR, 'validator-patch-response.json'), results)
def send_request_to_cv(signed_request): """ Send request to CV """ node_address = format_address(ip_address='192.168.1.232', port=8000, protocol='http') url = f'{node_address}/upgrade_request' results = post(url=url, body=signed_request) if isinstance(results, dict): for k, v in results.items(): print(f'{k}: {v}') print(results) write_json( os.path.join(SIGNED_REQUESTS_DIR, 'upgrade-request-response.json'), results)
def send_request_to_bank(signed_request): """ Send request to bank """ node_address = format_address(ip_address='192.168.1.232', port=8000, protocol='http') url = f'{node_address}/validator_confirmation_services' results = post(url=url, body=signed_request) if isinstance(results, dict): for k, v in results.items(): print(f'{k}: {v}') print(results) write_json( os.path.join(SIGNED_REQUESTS_DIR, 'signed-validator-confirmation-services-response.json'), results)