「Solana 入門」: 公式チュートリアルの第 2 レッスン#
- ラボに従ってコードを完成させる。
- すべてのチャレンジを完了する。
- 無効なウォレットアドレスを処理するための手順を追加する。
- スクリプトを mainNet に接続して、いくつかの有名な Solana ウォレットを検索するように変更する。toly.sol、shaq.sol、または mccann.sol を試してみてください。
第 2 のチャレンジは本当に難しいものではありません。パラメータを少し変更すれば見つけることができるようです。
しかし、私はまだ慣れていないので、ドキュメントを読んだり、GPT に質問したりしてもうかりません。何か見落としているのかわかりません。
これについては後で更新します。とりあえず次に進みましょう。
ラボに従ってコードを完成させるのは非常に簡単で、つまずく箇所はありません。詳細な記録はしません。
無効なウォレットアドレスを処理するための手順について
- 最も直接的な方法は、ChatGPT やウェブ検索などを利用することです。具体的な解決策は次のようになります。
try {
const public_key = new PublicKey(address);
} catch (error) {
console.log('address is not valid.');
}
もちろん、疑問もあります。私は初心者ですので、アドレスをチェックするためにはどのようなチェックが必要なのかわかりません。
- 次に、ChatGPT にアドレスの有効性を判断するための主なルールは何か尋ねました。
2 つの解決策が示されました。
-
ライブラリを直接使用する方法です。ライブラリがこれを行うのを手伝ってくれます(web3.js、solana cli)。
-
アドレスは base58 でエンコードされているため、アルゴリズム自体にいくつかの特徴があります。たとえば、長さや特定の文字が含まれないなどです。
しかし、基本的な結論は、アドレスの正当性を確認するためには、base58 の特徴に頼るということです。
- 最後に、簡単な検証方法です。web3.js と solana cli のコードを読んで、彼らがどのようにアドレスを検証しているかを確認します。
-
web3.js の
PublicKey
コンストラクタには、長さに基づいた検証があります。そして、bn ライブラリを使用してデコードして問題がないか確認します。 -
solana cli のコンストラクタも長さのみを検証しています。base58 関連のライブラリを使用してデコードし、エラーが発生しなければ問題ありません。すべて直接送信されています。
ネストが深すぎます(ちょっとしたジャワの香りがしますね笑)。
したがって、ここでの結論は次のとおりです。
-
アドレスの有効性を簡単かつ迅速に確認したい場合は、web3.js のコンストラクタを直接呼び出すだけで十分です。検証が行われます。
-
意図を明確に示すコードを書きたい場合は、このような回りくどい方法ではなく、アルゴリズムのルールに従って、長さをチェックし、デコードを試みます。成功した場合は正しいアドレスであり、失敗した場合はアドレスが無効であるとしてエラーを返します。