支付与获得支付

在 Earendil 网络中,节点通过他们的直接邻居进行支付与受支付。

这创造了一个带宽的自由市场 --- 如果一个邻居太贵或不可靠,只需断开连接并找到一个更便宜或更可靠的提供者。一旦你支付你的邻居,就由他们负责将你的数据包路由到目的地。这就像使用互联网一样:你支付你的 ISP(例如 T-Mobile),然后不用担心其余的。

要了解更多关于 Earendil 带宽市场的信息,请阅读此文章

价格与债务限额

两个邻居在首次连接时离线同意一个发送数据包的价格和债务限额。然后他们在 in_routeout_route 块的 price_config 部分中指定这些信息:

# 每个 in_route 和 out_route 都有一个 price_config
price_config:
  # 你对每个传入的数据包收取的费用,以 µMEL 为单位
  inbound_price: 5
  # 传入数据包的债务限额,以 µMEL 为单位
  inbound_debt_limit: 50000
  # 你愿意为每个传出数据包支付的最高价格,以 µMEL 为单位
  # 该字段防止你的邻居向你收取超过约定金额的费用
  outbound_max_price: 10
  # 你接受的传出数据包的最低债务限额,以 µMEL 为单位
  # 负债限额表示需要预付款
  # 该字段防止你的邻居向你收取超过约定金额的预付款
  outbound_min_debt_limit: -100

例如,假设我们有中继 Alice 和客户端 Bob。Alice 在她的连接到 Bob 的in_route中有以下 price_config

price_config:
  inbound_price: 1
  inbound_debt_limit: 5000
  outbound_max_price: 0
  outbound_min_debt_limit: 0

而 Bob 在他连接到 Alice 的out_route中有以下 price_config

price_config:
  inbound_price: 0
  inbound_debt_limit: 0
  outbound_max_price: 10
  outbound_min_debt_limit: -100

这意味着 Alice 对 Bob 发送给她的每个数据包收费 1 µMEL,Bob 最多欠 Alice 5,000 µMEL 才能继续连接,Alice 发送数据包给 Bob 无需支付任何费用。

支付方法

一个节点在其配置文件的payment_methods部分中指定所有支持的支付方法。如果两个邻居没有共同支持的支付方法,他们将无法连接(除非他们都不收费)。

我们目前支持 2 种支付方法:在 Mel 区块链上的链上支付和工作量证明(PoW)。

payment_methods:
  - on_chain:
    secret: <your-mel-wallet-secret>
  # PoW 支付不需要参数
  - pow

on_chainsecret字段是你将用来发送和接收支付的 Mel 钱包的密钥。这里有如何设置 Mel 钱包的指南。你可以使用以下命令从现有钱包中导出密钥:

melwallet-cli --wallet-path <path-to-your-mel-wallet> export-sk

例如,这个配置表示你的节点只接受链上支付:

payment_methods:
  on_chain:
    secret: <your-mel-wallet-secret>

测试支付

在整个教程中我们使用的默认引导节点是完全免费的。要测试支付,使用这个支持链上支付和工作量证明(PoW)支付的节点:

example-relay-paid:
  connect: 172.233.162.12:19998
  fingerprint: 14154070117b3c1a71fa2fc6bc7d20e5afc93fbe98a13b86b013d0a91215f74f
  obfs:
    sosistab3: correct-horse-battery-pink-staple-pasta-apple
  price_config:
    inbound_price: 0.5
    inbound_debt_limit: 1000
    outbound_max_price: 0
    outbound_min_debt_limit: 0

# 别忘了指定你支持的支付方法
payment_methods:
  pow:

Last updated