Lightning-Network

馬卡龍最大長度是多少

  • July 26, 2020

在 LND 節點中,macaroon 的最大大小(以字節為單位)是多少。如果沒有明確的最大長度,你可以合理地期望你的杏仁餅的大小是多少?

馬卡龍由三部分組成:

  1. header:標識macaroon,包含三個欄位。
  • : version1 字節,始終設置為0x02inlnd
  • :location可變長度字元串,始終設置為"lnd"inlnd
  • :identifier變長二進制數據,包含macaroon權限中的序列protobuf化數據。稍後再談。lnd
  1. The caveats: 限制 macaroon 的功能。這是一個可變長度的字元串列表。lnd目前只實現了兩個可能的限制,thetime-beforeipaddrrestriction。
  • 具有最大字元的範例:
["time-before 2006-01-02T15:04:05.999999999Z07:00", "ipaddr 255.255.255.255"]

大約是 70 個字節加上一些編碼成本。
3. The `signature`: 一個`HMAC-SHA256`雜湊,所以 32 個字節加上編碼成本。


權限
==


如上所述,macaroon 標識符包含權限列表。目前,這僅包含一個`protobuf`序列化列表`{Entity string, Action string}`,對應[於`lnd`](https://github.com/lightningnetwork/lnd/blob/56af0e15224ffd65d2fe3ebf7e595fa3a6b07d31/rpcserver.go#L201). 例如,該對`{Entity: "info", Action: "read"}`將授予使用者對資訊呼叫的只讀訪問權限。


這些權限使得在`lnd`. 目前,存在的不同實體/動作對的最大數量為 17,這是自動創建的`admin.macaroon`。那個 admin macaroon 目前的大小約為 280 字節。


[但是很快,您將能夠通過指定允許訪問的單個 URI 來](https://github.com/lightningnetwork/lnd/pull/4463)進一步自定義 macaroon 的權限。例如,使用者可以將權限對添加`{Entity: "uri", Action: "/lnrpc.Lightning/ExportAllChannelBackups"}`到自定義 macaroon。


只是為了好玩,我繼續創建了一個[最大大小的 macaroon,其中包含所有目前可用的 URI](https://gist.github.com/guggero/c1ffcc309ef0ad8079196e3ba6d02b50),其大小為**4041**字節。


據此,我總結一下,將蛋白杏仁餅乾上傳到 4096 或 5120 字節時限制使用者輸入應該涵蓋幾乎所有自定義蛋白杏仁餅乾的情況。

引用自:https://bitcoin.stackexchange.com/questions/96307