mirror of
https://github.com/bitromortac/lndmanage.git
synced 2026-08-13 12:33:37 +02:00
101 lines
2.5 KiB
Python
101 lines
2.5 KiB
Python
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
|
|
from lndmanage.lib.node import LndNode
|
|
|
|
from matplotlib import rc
|
|
|
|
rc('text', usetex=True)
|
|
rc('font', size=8)
|
|
rc('legend', fontsize=10)
|
|
rc('text.latex', preamble=r'\usepackage{cmbright}')
|
|
|
|
# revtex column width: 246pt: 1pt = 1/72.27 inch = 8.6459 cm
|
|
standard_figsize = [8.6459/2.54, 6.5/2.54]
|
|
|
|
|
|
def extract_fee_settings(node):
|
|
"""
|
|
Extracts all fee settings from the network graph.
|
|
:return:
|
|
list base_fees
|
|
list fee_rates
|
|
list time_locks
|
|
"""
|
|
|
|
base_fees = []
|
|
fee_rates = []
|
|
time_locks = []
|
|
|
|
for u, v, d in node.network.graph.edges(data=True):
|
|
base_fees.append(d['fees']['fee_base_msat'])
|
|
fee_rates.append(d['fees']['fee_rate_milli_msat'] / 1000000.)
|
|
time_locks.append(d['fees']['time_lock_delta'])
|
|
return base_fees, fee_rates, time_locks
|
|
|
|
|
|
def plot_fee_rates(fee_rates):
|
|
exponent_min = -6
|
|
exponent_max = 0
|
|
|
|
bin_factor = 10
|
|
|
|
bins_log = 10**np.linspace(
|
|
exponent_min, exponent_max, (exponent_max - exponent_min) * bin_factor + 1)
|
|
print(bins_log)
|
|
fig, ax = plt.subplots(figsize=standard_figsize, dpi=300)
|
|
ax.axvline(x=1E-6, c='k', ls='--')
|
|
ax.hist(fee_rates, bins=bins_log)
|
|
plt.loglog()
|
|
ax.set_xlabel("Fee rate bins [sat per sat]")
|
|
ax.set_ylabel("Number of channels")
|
|
plt.tight_layout()
|
|
plt.show()
|
|
|
|
|
|
def plot_base_fees(base_fees):
|
|
exponent_min = 0
|
|
exponent_max = 5
|
|
|
|
bin_factor = 10
|
|
|
|
bins_log = 10**np.linspace(
|
|
exponent_min, exponent_max, (exponent_max - exponent_min) * bin_factor + 1)
|
|
|
|
fig, ax = plt.subplots(figsize=standard_figsize, dpi=300)
|
|
ax.hist(base_fees, bins=bins_log)
|
|
ax.axvline(x=1E3, c='k', ls='--')
|
|
plt.loglog()
|
|
ax.set_xlabel("Base fee bins [msat]")
|
|
ax.set_ylabel("Number of channels")
|
|
plt.tight_layout()
|
|
plt.show()
|
|
|
|
|
|
def plot_cltv(time_locks):
|
|
exponent_min = 0
|
|
exponent_max = 3
|
|
|
|
bin_factor = 10
|
|
|
|
bins_log = 10**np.linspace(
|
|
exponent_min, exponent_max, (exponent_max - exponent_min) * bin_factor + 1)
|
|
|
|
fig, ax = plt.subplots(figsize=standard_figsize, dpi=300)
|
|
|
|
ax.hist(time_locks, bins=bins_log)
|
|
plt.loglog()
|
|
ax.set_xlabel("CLTV bins [blocks]")
|
|
ax.set_ylabel("Number of channels")
|
|
plt.tight_layout()
|
|
plt.show()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
nd = LndNode('/home/user/.lndmanage/config.ini')
|
|
base_fees, fee_rates, time_locks = extract_fee_settings(nd)
|
|
|
|
plot_fee_rates(fee_rates)
|
|
plot_base_fees(base_fees)
|
|
plot_cltv(time_locks)
|
|
|