「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 関連のライブラリを使用してデコードし、エラーが発生しなければ問題ありません。すべて直接送信されます。
ネストが深すぎます(ちょっと苦情を言わせてください、Java のような匂いがします笑)。
したがって、以下の結論が得られます。
-
アドレスの有効性を簡単かつ迅速に確認したい場合は、web3.js のコンストラクタを直接呼び出すだけで十分です。検証してくれます。
-
コードが意図を十分に示し、このような回りくどい方法ではなく、アルゴリズムのルールに従って長さをチェックし、デコードを試みる場合は、次のようにアドレスが正しいかどうかを確認します。合格すればアドレスは正しいですし、合格しなければアドレスが無効であるとしてエラーを返します。