라이트닝 네트워크에서 채널 재조정을 위한 잠재적 경로 시각화
LN은 비트코인 위에 구축된 결제 채널 네트워크(PCN)입니다. LN 노드가 있으면 네트워크를 통해 지불을 보내고 받고 전달할 수 있습니다. 여기서는 송금에 중점을 둘 것입니다.
다른 노드로 지불을 보내면 지불이 성공하거나 실패할 때 데이터가 다시 돌아옵니다. 결제 경로, 각 채널의 수수료, 결제에 실패한 채널이 있다면 어떤 채널인지 확인할 수 있습니다.
재조정 목적으로 자신에게 지불금을 보낼 수도 있습니다. 재조정은 채널의 인바운드 및 아웃바운드 용량의 균형이 맞지 않을 때 필요합니다. 채널의 균형을 재조정하는 한 가지 방법은 순환 경로를 만드는 것입니다. 즉, 노드에서 다시 노드로 지불을 보내는 것입니다.
그림 1: 순환 경로 재조정. Matering the Lightning Network 책에서 가져온 이미지, p. 139.
노드 소유자가 채널의 균형을 재조정할 수 있는 잠재적인 경로를 시각화하는 데 도움이 되는 도구가 있으면 좋을 것입니다. 이를 통해 다양한 가능한 경로의 데이터를 필터링하고 정렬하여 탐색할 경로를 선택할 수 있습니다.
시각화 도구
이번에는 이를 쉽게 시각화할 수 있는 가장 좋은 방법은 데이터를 필터링, 정렬 및 선택하여 관심 있는 전체 경로를 표시할 수 있는 대화형 테이블을 사용하는 것이라고 결정했습니다.
도구는 4개의 테이블로 구성됩니다. 첫 번째는 재조정에 포함할 노드(중앙 노드)와 지불을 보낼 채널을 선택하는 것입니다. 두 번째 테이블은 이전에 선택한 채널에서 시작하여 중앙 노드에서 끝나는 경로를 선택하기 위한 것입니다. 세 번째는 결제를 받을 채널을 선택하는 것입니다. 마지막으로 네 번째 테이블은 중앙 노드에서 노드까지의 경로를 선택하기 위한 것이며 직전에 선택한 채널에서 끝납니다.
이 작업을 위해 사용된 3개의 주요 라이브러리는
networkx
, pandas
및 dash
입니다. network
는 네트워크의 한 노드에서 나머지 노드까지의 단순 경로를 계산하는 데 사용되었습니다. pandas
는 나중에 dash
를 사용하여 대화형 테이블로 변환된 적절한 데이터 프레임을 만드는 데 사용되었습니다.첫 번째 테이블
그림 2: 중앙 노드 및 발신 채널 선택을 위한 표 1.
이 테이블에는 3개의 열이 있습니다.
소스: 노드 선택
central_node: 재조정 경로에 포함할 특정 노드 선택
Channel_out: 결제를 보낼 채널을 선택합니다.
두 번째 테이블
그림 3: 중앙 노드에 대한 경로 선택을 위한 표 2.
이 표가 더 재미있습니다. 모든 열은 필터링 및 정렬을 지원합니다. 어떤 경로가 더 저렴하고, 홉이 더 적고, 전체 용량이 더 큰지 쉽게 확인할 수 있습니다.
다음은 이 테이블을 작성하는 코드의 일부입니다.
@app.callback(
Output('secondtable-container', 'children'),
Input('first-table', 'selected_row_ids'),
)
def make_second_table(selected_rows):
if selected_rows is None:
source_central, channel_out = [], []
else:
rows = [row.split(' -> ') for row in selected_rows]
source_central = [row[0] for row in rows]
channel_out = [row[1] for row in rows]
masks = (grouped_routes.peers.isin(source_central) & grouped_routes.channel_out.isin(channel_out))
second_dff = grouped_routes[masks]
return html.Div([
dash_table.DataTable(
id='second-table',
columns=[
{'name': i, 'id': i, 'deletable': True} for i in second_dff.columns
if i != 'id' and i != 'channel_out'
],
data=second_dff.to_dict('records'),
editable=False, # cells are not editable
filter_action='native', # filter by entering text in the input box
sort_action='native',
sort_mode='multi',
row_selectable='single',
page_action='native',
page_current=0,
page_size=10,
),
html.Div(id='thirdtable-container'),
])
세 번째 테이블
그림 4: 지불을 받을 채널을 선택하기 위한 표 3.
세 번째 테이블은 첫 번째 테이블과 유사합니다. 유일한 목적은 지불을 받고자 하는 채널을 선택하여 순환 경로를 완료하기 위해 보유한 채널을 표시하는 것입니다.
네 번째 테이블
그림 5: 노드로 돌아가는 경로를 선택하기 위한 표 4.
최종 테이블은 두 번째 테이블과 유사하지만 재조정 경로를 완료하기 위해 기준에 따라 적절한 경로를 선택하기 위한 테이블입니다.
행을 선택하면 새 컨테이너에 다음과 같이 순환 경로의 전체 정보가 표시됩니다.
그림 6: 전체 경로의 집계 데이터.
다음은 테이블 기능의 전체 데모입니다.
이와 같은 도구의 가치가 테스트되고 있습니다. 이것이 번개 노드에 어떤 식으로든 도움이 되는지 의견에 자유롭게 남겨주세요.
Reference
이 문제에 관하여(라이트닝 네트워크에서 채널 재조정을 위한 잠재적 경로 시각화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/leocumpli21/visualizing-potential-paths-for-rebalancing-channels-in-the-lightning-network-1d8l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)