9 def handle_input(_path, _account_id, _password):
11 with open(_path, 'r', encoding='utf-8') as file:
14 if len(lines) < max_output:
17 handle_transaction(lines, _path, _account_id, _password)
21 handle_transaction(lines, _path, _account_id, _password)
22 print('Transaction is accomplished.Please check accomplished.txt')
25 def handle_transaction(lines, _path, _account_id, _password):
26 data = build_transaction(lines, _account_id)
27 data = sign_transaction(_password, data)
28 if data['sign_complete']:
29 data = submit_transaction(data)
32 print('transaction_id:\n' + txid)
33 lines = append_txid_to_lines(lines, txid)
34 write_lines_to_file(lines, _path)
36 print('Sign transaction is failed.Please check account password.')
40 # parameter lines: max_output line list
41 def build_transaction(_lines, _account_id):
45 data = line.strip().split(',')
49 address_dict = get_address_dict(amount, address)
50 action_list.append(address_dict)
51 amount_sum += miner_fee
52 spend_dict = get_spend_dict(_account_id, int(amount_sum))
53 action_list.insert(0, spend_dict)
54 parameter = {'base_transaction': None, 'actions': action_list, 'ttl': 0}
55 return httprequest.post('build-transaction', parameter)
58 # parameter transaction: dict from build_transaction function return
59 def sign_transaction(_password, _transaction):
60 parameter = {'password': _password, 'transaction': _transaction}
61 return httprequest.post('sign-transaction', parameter)
64 def submit_transaction(_transaction):
65 parameter = {'raw_transaction': _transaction['transaction']['raw_transaction']}
66 return httprequest.post('submit-transaction', parameter)
69 def append_txid_to_lines(lines, txid):
70 for i in range(len(lines)):
71 # lines[i] = lines[i] + ',' + txid + '\n'
72 lines[i] = lines[i] + ',' + '\n'
76 # write complete transactions lines to file
77 def write_lines_to_file(lines, _path):
78 _path = os.path.abspath(os.path.dirname(_path)) + os.path.sep + 'accomplished.txt'
79 with open(_path, 'a', encoding='utf-8') as file:
80 file.writelines(lines)
83 # control_address action
84 def get_address_dict(_amount, _address):
85 return {'amount': _amount,
86 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
88 'type': 'control_address'}
91 # spend_account action
92 def get_spend_dict(_account_id, _amount_sum):
93 return {'account_id': _account_id,
94 'amount': _amount_sum,
95 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
96 'type': 'spend_account'}
98 # if __name__ == "__main__":
99 # path = '/Users/john/Desktop/btm.txt'
100 # account_id = '0F0BV1OLG0A04'
101 # password = '123456'
102 # sys.exit(handle_input(path, account_id, password))