MCPcopy Create free account
hub / github.com/ElementsProject/lightning / generate_askrene_examples

Function generate_askrene_examples

tests/autogenerate-rpc-examples.py:1034–1081  ·  view source on GitHub ↗

Generates askrene related examples

(l1, l2, l3, c12, c23_2)

Source from the content-addressed store, hash-verified

1032
1033
1034def 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
1084def generate_wait_examples(l1, l2, bitcoind, executor):

Callers 1

test_generate_examplesFunction · 0.85

Calls 5

only_oneFunction · 0.90
update_exampleFunction · 0.85
update_list_responsesFunction · 0.85
errorMethod · 0.80
directionFunction · 0.70

Tested by 1

test_generate_examplesFunction · 0.68