symbol-nodeで node passwordが通らなくなった

# どんな状況で発生したか
事件は　手持ちの ｻｰﾊﾞの１基で発生しました

symbol-bootstrapの命令を実行した時に
見慣れない表示が出るのに気付きました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/ad63196f-b041-f2e3-3a7d-24009932fae1.png)
```
(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
```
上記の表示ですね
これ　後で知ったんですが　nodejsの ver.21で symbol-bootstrapを使うと出て来ます

事件当時　この表示をどうにか出ない様にしたくて

**①`sudo npm install -g symbol-bootstrap`**
**と**
**② nodejsの downgrade**
**を行った直後から**

symbol-bootstrapの
config --upgrade
start --upgrade
decrypt
等　node passwordを求められる命令で
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/dfa9ca11-b80f-5edd-2732-1d541440e9a9.png)
passwordが通らなくなりました

target/addresses.ymlの中の秘密鍵は通常　暗号化されていますが
この暗号化された秘密鍵の復号の為の passwordが通らない状態ですね

nodeを建てた直後に symbol-decrypt命令で復号した addresses.ymlを保存していたので
passwordが通らなくなった target/addresses.ymlを　復号したものと入れ替えた後
symbol-bootstrap start --upgradeを実行して　事無きを得ました

**symbol-bootstrapの再ｲﾝｽﾄｰﾙと　nodejsの downgradeを行った ﾀｲﾐﾝｸﾞで発生した様です**
が
**まだどちらかが直接の原因かははっきりしていません**


**なのでまず nodeを新しく作った時は　必ず addresses.ymlの復号した fileを
保存する事を推奨します**

# **`addresses.yml`の復号方法**
```
symbol-bootstrap decrypt --source target/addresses.yml --destination d_addresses.yml
```
命令の最後の`d_addresses.yml`は　好きな file名で構いません
自分の場合は `add`や`da`とか適当な名前で保存しています
ケースによっては　復号が出来ない場合もあるかも知れません
その時の為に　何度も言いますが

**まず nodeを建てた時には　必ず `addresses.yml`の復号を行ったものを保存して下さい**
**これさえあれば　nodeを再生出来ますし　再生する時に node passwordは新たに設定出来ます**

冒頭の
```
(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
```
上記表示は　nodejsの ver.21(latest)でのみ出ています

node.jsの downgrade(latestから stableへ)を行う

参考ﾍﾟｰｼﾞ

https://blog.panicblanket.com/archives/5334

具体的には
```
sudo npm install n -g
sudo n stable(最新にしたい時は sudo n latest)
sudo apt purge -y nodejs npm
exec $SHELL -l
node -v
```
上記の手順で node.jsを ver.21(latest)からver.20(stable)へ downgradeしました
この後では
```
(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
```
の表示は出なくなりました


# 2024.01.28 対処方法が見つかりました

`symbol-bootstrap`を ﾏﾆｭｱﾙﾋﾞﾙﾄﾞする

gitの ｲﾝｽﾄｰﾙ
```
sudo apt install -y git
```
symbol-bootstrapの公式から ｿｰｽｺｰﾄﾞを ﾀﾞｳﾝﾛｰﾄﾞする
home ﾃﾞｨﾚｸﾄﾘで作業した方が良いかもです
```
cd

git clone https://github.com/fboucquez/symbol-bootstrap
```
`symbol-bootstrap` ﾃﾞｨﾚｸﾄﾘに入り　`package.json`を編集する
```
cd symbol-bootstrap

vi package.json
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/980c12e8-10eb-8b49-d635-db59783f21f4.png)

赤線の部分は元々 "1.1.10" になっていますが
元の symbol-bootstrapと区別しやすい様に　ここを
"1.1.10d"とします
これを保存します

`symbol-bootstrap@1.1.10d` のｲﾝｽﾄｰﾙ
```
npm install
```
この時点ではまだ `symbol-bootstrap -v`で表示される ver.は "1.1.10"のままです
更に ｺﾏﾝﾄﾞを実行します

```
npm run build

sudo npm install -g .
```
これで `symbol-bootstrap@1.1.10d`の ｲﾝｽﾄｰﾙは完了です
```
symbol-bootstrap -v
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/be75db98-149b-622c-f181-81913edf2f5f.png)

`symbol-bootstrap`の ver.が "1.1.10d"になっていれば良いです
これで
今まで ﾊﾟｽﾜｰﾄﾞが通らなかった `addresses.yml`を復号してみましょう
```
symbol-bootstrap decrypt --source addresses.yml --destination d_addresses.yml
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/b0b5d223-627a-0f8c-4eee-04e837d4db9c.png)

ﾊﾟｽﾜｰﾄﾞが通り　復号された ﾌｧｲﾙ`d_addresses.yml`が出来ています
特に node.jsや　symbol-bootstrapの ver.戻しや
osの 再ｲﾝｽﾄｰﾙは必要ありませんでした


# ※2024.01.29追記
記憶違いと　後から事実の相違が見つかった為　本文を手直ししました
時系列で見直すと
この ｻｰﾊﾞは　元々以前に nodejsを nで 21(latest)に ｱﾌﾟﾃﾞしておいたものです
```
(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
```
この表示は　nodejs 21(latest)で起こります　その他の ver.ではこの表示は出ません

この状態で
nodeを作成したんですが
symbol-bootstrapを使う度に 上述の
```
(node:444933) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
```
の表示がうざかったので
**まず `sudo npm install -g symbol-bootstrap`を実行してみました**
それでもこの表示がまだ出ていたので

**nを使って 20(stable)に ﾀﾞｳﾝｸﾞﾚｰﾄﾞしました**
これらの作業の直後から この ｻｰﾊﾞ上で それまでに作成した nodeの `addresses.yml`が全て復号出来なくなりました

これ以降に作成した nodeの `addresses.yml`は　復号が出来ましたが
それ以前に作成したものは復号出来なくなったと言う訳です
これらの この ｻｰﾊﾞで復号出来なくなってしまった `addresses.yml`は
他の 以前から使っている ｻｰﾊﾞでは復号出来ました

この ｻｰﾊﾞで**変化してしまった**後に作成した `addresses.yml`は
最近借りて ｾｯﾄｱｯﾌﾟした ｻｰﾊﾞ上では復号出来ました
最近借りて ｾｯﾄｱｯﾌﾟした ｻｰﾊﾞ上で作成した `addresses.yml`も
この **変化してしまった** ｻｰﾊﾞで復号出来ました

新規で nodejs12~21の ver.と
ubuntu20/22でそれぞれ ｾｯﾄｱｯﾌﾟした ｻｰﾊﾞで試した所
そのどれもが
**最近借りて ｾｯﾄｱｯﾌﾟした ｻｰﾊﾞ**と**この変化してしまった ｻｰﾊﾞ**の方と
互換性がありました

思い付く方法を試した結果
symbol-bootstrapを
`sudo npm install -g symbol-bootstrap`
では無く
githubからの ﾏﾆｭｱﾙﾋﾞﾙﾄﾞ（上記対処方法）で
ｻｰﾊﾞが変化する以前の状態に戻せた次第です

# 原因が判明しました
**2024.01.30追記**
今度は新規で ｾｯﾄｱｯﾌﾟした ｻｰﾊﾞを使います
nodejs/osの ver.の検証はここで行っていたんですが
現在は
ubuntu22.04
nodejs v20.11.0
上述の githubから直接 buildした`symbol-bootstrap@1.1.10d`
になっています

この ｻｰﾊﾞは　最初に ｾｯﾄｱｯﾌﾟした時は
元の addresses.ymlが復号出来ない状態だったのを
元の addresses.ymlが復号出来る状態に（意図的に）現在は　してあります

これを　これから
試しに　**良く知られている**
```
sudo npm install -g symbol-bootstrap
```
これを実行します

只の `symbol-bootstrap@1.1.10`に戻りました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/5c1938b9-7d9f-28c7-fd99-cd198535ddd4.png)

これで　元の 先程まで復号出来ていた`addresses.yml`の復号を試みましたが
ﾊﾟｽﾜｰﾄﾞが通らなくなりました

これとは逆に**最近借りて ｾｯﾄｱｯﾌﾟした ｻｰﾊﾞ**の `addresses.yml`が
復号出来る様になりました

つまり結論

**直接の原因は
最近行った
`sudo npm install -g symbol-bootstrap`
これだけです**

※ここから又 githubから symbol-bootstrapを直接 buildした所
再び元の状態に戻せています

ちなみにどちらの状態でも
nodeを作った際に復号さえしておけば
特に ﾊﾟｽﾜｰﾄﾞが通らなくなっても再生出来ます
ただし暗号化された addresses.ymlは　他の ｻｰﾊﾞで ﾊﾟｽﾜｰﾄﾞが通らない事が起こる可能性を孕みます

これが現在の `symbol-bootstrap`の状況です
`symbol-bootstrap`は　最終の updateから　だいぶ時間が経っていますので
特に 再ｲﾝｽﾄｰﾙする必要が無かった為
**以前から建っていた nodeで　たまたま最近 symbol-bootstrapの更新を行った場合
nodeの ﾊﾟｽﾜｰﾄﾞが通らなくなる事例が発生した**
と考えられます

**最近 symbol-bootstrapを更新した方は　一度 上記の復号命令を試してみて下さい
もしかしたら　あなたのその ｻｰﾊﾞも　なっちゃってるかもよ！？**
いつからこうなったかが不明なんです

もし　nodeの updateの時に nodeの ﾊﾟｽﾜｰﾄﾞが通らなくなった時は
上述の githubからの 直接buildを試してみて下さい

# おまけ　ﾁｷﾁｷお前の ｻｰﾊﾞはどっち側〜！？
ﾄﾞﾝﾄﾞﾝﾊﾟﾌﾊﾟﾌ　ﾄﾞﾝﾄﾞﾝﾝﾊﾟﾌﾊﾟﾌ
**さあ！自分の ｻｰﾊﾞが　どっち側なのか？試してみよう！ﾄﾞﾝﾄﾞﾝﾝﾊﾟﾌﾊﾟﾌﾄﾞﾝﾄﾞﾝﾝﾊﾟﾌﾊﾟﾌ**

えっと適当な ﾃﾞｨﾚｸﾄﾘを作ってその中でやってみて下さいませ

```
wget 6.dusanjp.com/decrypt/light

symbol-bootstrap decrypt --source light --destination l
```
上記の ｺﾏﾝﾄﾞで無事復号出来た方は　光属性です
あっと　ﾊﾟｽﾜｰﾄﾞは`12345`です

では次はこっち
```
wget 6.dusanjp.com/decrypt/darkness

symbol-bootstrap decrypt --source darkness --destination d
```
こちらも ﾊﾟｽﾜｰﾄﾞは`12345`ですね
おめでとう御座います！こちらが復号出来たあなたは闇属性ですね
そうです！**暗黒の騎士**です！