Generates askrene related examples
(l1, l2, l3, c12, c23_2)
| 1032 | |
| 1033 | |
| 1034 | def generate_askrene_examples(l1, l2, l3, c12, c23_2): |
| 1035 | """Generates askrene related examples""" |
| 1036 | try: |
| 1037 | logger.info('Askrene Start...') |
| 1038 | |
| 1039 | def direction(src, dst): |
| 1040 | if src < dst: |
| 1041 | return 0 |
| 1042 | return 1 |
| 1043 | |
| 1044 | direction12 = direction(l1.info['id'], l2.info['id']) |
| 1045 | direction23 = direction(l2.info['id'], l3.info['id']) |
| 1046 | scid12dir = f'{c12}/{direction12}' |
| 1047 | scid23dir = f'{c23_2}/{direction23}' |
| 1048 | update_example(node=l2, method='askrene-create-layer', params={'layer': 'test_layers'}) |
| 1049 | update_example(node=l2, method='askrene-disable-node', params={'layer': 'test_layers', 'node': l1.info['id']}) |
| 1050 | update_example(node=l2, method='askrene-update-channel', params=['test_layers', '0x0x1/0']) |
| 1051 | update_example(node=l2, method='askrene-create-channel', params={'layer': 'test_layers', 'source': l3.info['id'], 'destination': l1.info['id'], 'short_channel_id': '0x0x1', 'capacity_msat': '1000000sat'}) |
| 1052 | update_example(node=l2, method='askrene-update-channel', params={'layer': 'test_layers', 'short_channel_id_dir': '0x0x1/0', 'htlc_minimum_msat': 100, 'htlc_maximum_msat': 900000000, 'fee_base_msat': 1, 'fee_proportional_millionths': 2, 'cltv_expiry_delta': 18}) |
| 1053 | askrene_inform_channel_res1 = update_example(node=l2, method='askrene-inform-channel', params={'layer': 'test_layers', 'short_channel_id_dir': '0x0x1/1', 'amount_msat': 100000, 'inform': 'unconstrained'}) |
| 1054 | update_example(node=l2, method='askrene-bias-channel', params={'layer': 'test_layers', 'short_channel_id_dir': scid12dir, 'bias': 1}) |
| 1055 | update_example(node=l2, method='askrene-bias-channel', params=['test_layers', scid12dir, -5, 'bigger bias']) |
| 1056 | update_example(node=l2, method='askrene-bias-node', params={'layer': 'test_layers', 'node': l3.info["id"], "direction": "out", 'bias': 1}) |
| 1057 | update_example(node=l2, method='askrene-bias-node', params=['test_layers', l3.info["id"], "out", -5, 'this node is unreliable']) |
| 1058 | askrene_listlayers_res1 = update_example(node=l2, method='askrene-listlayers', params=['test_layers']) |
| 1059 | update_example(node=l2, method='askrene-listlayers', params={}) |
| 1060 | ts1 = only_one(only_one(askrene_listlayers_res1['layers'])['constraints'])['timestamp'] |
| 1061 | update_example(node=l2, method='askrene-age', params={'layer': 'test_layers', 'cutoff': ts1 + 1}) |
| 1062 | update_example(node=l2, method='askrene-remove-layer', params={'layer': 'test_layers'}) |
| 1063 | update_example(node=l1, method='getroutes', params={'source': l1.info['id'], 'destination': l3.info['id'], 'amount_msat': 1250000, 'layers': [], 'maxfee_msat': 125000, 'final_cltv': 0}) |
| 1064 | update_example(node=l1, method='askrene-reserve', params={'path': [{'short_channel_id_dir': scid12dir, 'amount_msat': 1250_000}, {'short_channel_id_dir': scid23dir, 'amount_msat': 1250_001}]}) |
| 1065 | update_example(node=l1, method='askrene-reserve', params={'path': [{'short_channel_id_dir': scid12dir, 'amount_msat': 1250_000_000_000}, {'short_channel_id_dir': scid23dir, 'amount_msat': 1250_000_000_000}]}) |
| 1066 | time.sleep(2) |
| 1067 | askrene_listreservations_res1 = l1.rpc.askrene_listreservations() |
| 1068 | askrene_listreservations_res1 = update_list_responses(askrene_listreservations_res1, list_key='reservations', slice_upto=5, update_func=lambda x, i: REPLACE_RESPONSE_VALUES.extend([{'data_keys': ['command_id'], 'original_value': x['command_id'], 'new_value': f'\"-c:askrene-reserve#6{(i + 1) * 2}/cln:askrene-reserve#12{(i + 1) * 2}\"'}]), sort=True, sort_key='amount_msat') |
| 1069 | update_example(node=l1, method='askrene-listreservations', params={}, response=askrene_listreservations_res1) |
| 1070 | update_example(node=l1, method='askrene-unreserve', params={'path': [{'short_channel_id_dir': scid12dir, 'amount_msat': 1250_000}, {'short_channel_id_dir': scid23dir, 'amount_msat': 1250_001}]}) |
| 1071 | update_example(node=l1, method='askrene-unreserve', params={'path': [{'short_channel_id_dir': scid12dir, 'amount_msat': 1250_000_000_000}, {'short_channel_id_dir': scid23dir, 'amount_msat': 1250_000_000_000}]}) |
| 1072 | REPLACE_RESPONSE_VALUES.extend([ |
| 1073 | {'data_keys': ['any', 'short_channel_id_dir'], 'original_value': scid12dir, 'new_value': f"{NEW_VALUES_LIST['c12']}/{direction12}"}, |
| 1074 | {'data_keys': ['short_channel_id_dir'], 'original_value': scid23dir, 'new_value': f"{NEW_VALUES_LIST['c23_2']}/{direction23}"}, |
| 1075 | {'data_keys': ['cutoff'], 'original_value': ts1 + 1, 'new_value': NEW_VALUES_LIST['time_at_800']}, |
| 1076 | {'data_keys': ['timestamp'], 'original_value': askrene_inform_channel_res1['constraints'][0]['timestamp'], 'new_value': NEW_VALUES_LIST['time_at_800']}, |
| 1077 | ]) |
| 1078 | logger.info('Askrene Done!') |
| 1079 | except Exception as e: |
| 1080 | logger.error(f'Error in generating askrene examples: {e}') |
| 1081 | raise |
| 1082 | |
| 1083 | |
| 1084 | def generate_wait_examples(l1, l2, bitcoind, executor): |