ueno

Results 71 comments of ueno

チャネルが生きている以上、定期的に`channel_update`を更新し続けないといけない(推奨では2週間程度しか保持されないため)。 いま、そのしくみはない。

1つは致命的だったため、 #565 のついでに修正した。 https://github.com/nayutaco/ptarmigan/blob/b1e73bbdccbf44908e2802ff497077d2fc62113b/ucoin/src/ln/ln_db_lmdb.c#L2565-L2570

* 64GBのmicroSDカードにimageファイルを焼いて、Raspberry Pi3で動かす→NG * Raspberry Pi3で動かなかったmicroSDをそのままRaspberry Pi ZeroWに挿して動かす→OK microSDカードは同じで違いがあったので、Raspberry Piに何か違いがあるのだろうか。

現状のmapsizeは0x8000_0000。 * PiZeroは`mdb_env_set_mapsize()`でも``でもSUCCESS * Pi3は`mdb_env_set_mapsize()`はSUCCESS、`mdb_env_open()`で"Cannot allocate memory" `malloc()`で見極めようとしたが、そうするとPiZeroはPi3よりも少ないRAMでallocateできなくなった。LMDBの実装を見ると、まだopenしていない場合は`mdb_env_set_mapsize()`しても設定のみの変更だった。 `calloc()`しているだけのように見えるので、`malloc()`と同じになるのかと思ったが、そうでもないのだろうか?

`calloc()`ではなく`mmap()`のほうだった。 open後にmapsizeを設定すれば済みそうな気がしたが、ドキュメントではopen前に呼ぶよう指示されているので、そうした方がよいだろう。 http://www.lmdb.tech/doc/group__mdb.html#gaa2506ec8dab3d969b0e609cd82e619e5 また、openに失敗した場合、失敗したという情報がenvに残ってしまうようだ。 つまり、一度memory不足で失敗したのでサイズを変えてやり直しても、そのままではまたエラーになるのだ。 そのため、closeしてcreateからやり直すしかなさそうだ。

`preimage`を持つノードがunilateral closeをした場合は展開しているようである。 持たないノードがunilateral closeした場合だけか。

`ptarmcli`の場合にはIPv4かどうかをチェックしているので、今のところREST-API経由の場合のみ発生する。 また、IPv4ではないためDB保存しておらず、channel establish後の自動接続の対象にならない。

#832 で、デフォルトでOFFに変更したが、考察が必要な内容である。

lnd(2018/11/23) * localfeaturesは、0x82 * チャネル開設前も開設後も同じ * こちらのlocalfeaturesは0x02 * 今まで送信していないチャネル情報を送信してくるのではなく、接続以降に通知されたチャネル情報しか送信していないように見える * チャネル開設後は、今までの未送信分を送ってくれることを期待したが、ダメそうだ。 * ということは、チャネルごとに送信/未送信をDBで持つような管理はしていないと言うことか * 特に通信が頻繁なわけでもないのに、lndが`pong`を返さずにこちらから切断することがあった。 * ただ、その後もhandshakeして`init`送信に対する応答がしばらくないため切断する、という状況が数回続いたので、通信が今ひとつだったのかも?

localfeaturesは、デフォルトで`initial_routing_sync`をOFFに変更。 initial_routing_syncしたい場合には接続時にオプション`--initroutesync`を指定。