Sat Nov 06 2021

今日はIKEAに行った。ホットドッグとベジドッグを食べに行ったみたいなもんなんだけど、一応店内を一周。良い散歩になった。ホットドックのパンとソーセージの10個分のセットで600円だったので思わず購入。明日からホットドッグ生活が始まる...  

 

午後はSolanaのPDA(Program Derived Address) is 何!?についてやってた。色々読んで朧げに分かってきたもののあと一歩という所まできて、Program Derived Address日本語でという記事がダメ押しとなり完全に理解した。  

 

こいつ(PDA)は要は、Walletみたいな感じでトランザクションの署名(改竄されないようにする)をやってくれる役割のやつだった。ProgramがAccount1からAccount2へ送金みたいなことをしたい時にどうしても署名が必要になる。トランザクションの署名には通常Keypairが必要。だがしかしWallletのPublic&PrivateKeyみたいなKeypairをProgramでは保持できない(したくない)。代わりにそのトランザクションに署名してくれるやつが必要になる。その時に使われるのがPDAである。PDAの中身はただのPublic keyみたいなAddressである。Public key みたいな Address とは何かというと、正確にはPDAは楕円曲線暗号のed25519(通常のKeypairを生成する方法)とは異なるやり方で生成されているということ。楕円曲線暗号とは異なるということはつまりPDAにはPrivateKeyが存在しないということになる。これの何が嬉しいかというとPrivateKeyが存在しないので翻って言えば外部のユーザーには正確な署名を生成できないということになる。またKeypairをどこかに保存しておく必要もなくなる。こうして安全にProgramがAccountとAccountの間のやりとり=CPI(Cross-Program Invocations)が行えるようになるわけだ。  

 

これを理解するために結構ドキュメントや記事を読んだ。その辺は下記のスクラップに書いておいた。