Lightning Network模擬器入坑記
(邊學習邊總結邊提高)
一、簡單介紹
- 為什么要做Lightning Network模擬器的實作: 研究需要通過模擬閃電網路來進行一些實驗,從而更深層次的了解閃電網路的運行機制,執行一些惡意的攻擊,來證明閃電網路的不完備性,并且希望可以將已有的攻擊擴展到以太坊上,
- 資料來源: LNTrafficSimulator(這是github上的一個閃電網路模擬工程)
- 博客目的: 總結記錄在實作閃電網路模擬器的程序中所遇到的困難和解決辦法,邊學習邊總結邊提高,
二、前期準備
- 閱讀前面網站上的具體說明,然后跟著說明進行一些前期的準備作業,
步驟一:

- 根據上面的要求可以看到這個模擬器是需要unix或者MacOs環境的,由于本人當前使用的就是Mac所以就不用去配置unix環境了,直接用Mac就好,
- 上面還要求MacOs系統需要按裝 wget ,如何安裝呢本人在這個地方就卡了很長時間,下面直接說解決辦法:直接install wget比較麻煩,也較容易失敗,所以可以先安裝brew再通過
brew install wget命令來安裝wget,這里問題又來了,brew又如何安裝呢(本人在這里花了更多時間,找了很多辦法),具體安裝方法見我另一篇博客,打開博客里的鏈接將代碼復制到自己Mac終端上回車即可,安裝好brew之后再在終端上輸入brew install wget命令來安裝wget, - 在終端輸入brew后回車,出現如下內容即證明brew安裝成功

步驟二:

- 在終端上輸入代碼
git clone https://github.com/ferencberes/LNTrafficSimulator.git表示將GitHub上的這個整個工程克隆保存到本地 - 終端上輸入
cd LNTrafficSimulator進入LNTrafficSimulator這個工程檔案夾 - 終端上輸入
pip install .表示使用pip安裝模擬器
步驟三:下載必要資料

- 終端輸入
sh ./scripts/download_data.sh下載一些必要的資料 - 終端輸入
ls ln_data查看剛剛下載的資料:

- 下面是對下載的資料的說明:

步驟四:檢查配置是否成功
-
執行以下代碼以查看配置是否成功
import pandas as pd from lnsimulator.ln_utils import preprocess_json_file import lnsimulator.simulator.transaction_simulator as ts data_dir = "/Users/yzyzzzz/LNTrafficSimulator/ln_data" #這里放入之前下載的ln_data的路徑 amount = 60000 count = 7000 epsilon = 0.8 drop_disabled = True drop_low_cap = True with_depletion = True find_alternative_paths = False print("# 1. Load LN graph data") directed_edges = preprocess_json_file("%s/sample.json" % data_dir) print("\n# 2. Load meta data") node_meta = pd.read_csv("%s/1ml_meta_data.csv" % data_dir) providers = list(node_meta["pub_key"]) print("\n# 3. Simulation") simulator = ts.TransactionSimulator(directed_edges, providers, amount, count, drop_disabled=drop_disabled, drop_low_cap=drop_low_cap, eps=epsilon, with_depletion=with_depletion) transactions = simulator.transactions _, _, all_router_fees, _ =simulator.simulate(weight="total_fee",with_node_removals=find_alternative_paths, max_threads=1) print(all_router_fees.head()) print("Done") -
問題來了,如何執行在哪里執行?具體步驟如下:
1. 在剛剛的終端里輸入vim test.py(通過vim創建名為test的python檔案)

2. 在vim檔案中粘貼剛剛需要測驗的代碼

3. 退出vim并保存檔案(具體vim怎么用大家可以百度一下)
4. 在終端輸入python test1.py運行代碼,查看結果:
遇到的問題一: 要將自己下載的ln_data檔案的位置路徑放到代碼的相應位置,否則會出現下面的錯誤提醒:
遇到的問題二: 網頁上的原代碼沒有匯入panda包從而運行出現如下錯誤:

解決辦法: 頂部添加代碼import pandas as pd遇到的問題三:
運行代碼后出現錯誤提醒TypeError: __init__() got an unexpected keyword argument 'eps'
我的解決方法是在代碼中刪掉eps(不知道做的對不對但是最終確實是成功了) -
最終代碼運行結果: 最終列印了Done說明配置成功!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/277097.html
標籤:區塊鏈
