Herman

Herman

「Solana 入門」:官方教程第二課

「Solana 入門」:官方教程第二課#

課程連結

  • 跟著 lab 完成程式碼。
  • 完成所有挑戰。
    • 添加處理無效錢包地址的指示。
    • 修改腳本以連接到主網並查找一些著名的 Solana 錢包。嘗試 toly.sol、shaq.sol 或 mccann.sol。

第二個挑戰絕對不是什麼難題。看起來是哪裡參數改一改就能查到的東西。

但我實在是不熟悉,看文件看了不少時間,GPT 也回答得不行,不知道我少看什麼東西了導致我完成不了。

這個日後更新,先往下走吧。


跟著 lab 完成程式碼很簡單,沒有什麼可以卡壳的地方。不詳細記錄。

關於 添加處理無效錢包地址的指示

  • 最直接根據 ChatGPT、網路搜索等等。最直接的方案就是:
try {
  const public_key = new PublicKey(address);
} catch (error) {
  console.log('address is not valid.');
}

當然,存疑。我剛入門,並不知道檢查一個地址到底需要檢查什麼。

  • 第二步接著詢問 ChatGPT,地址是否有效主要靠什麼規則來判斷的?

給了我兩個方案。

  • 直接調庫。庫會幫你做這件事的(web3.js、solana cli)。

  • 由於地址是由 base58 算過來的,算法本身帶一點特徵。比如長度,比如不會出現一些特定的字符。

但基本的結論就是,靠 base58 的特徵來檢驗地址是否正確。

  • 第三步簡單驗證。讀 web3.js 和 solana cli 的程式碼。看他們怎麼驗證地址的。
  1. web3.js 的 PublicKey 構造器有一個檢驗,就是基於長度來的。然後拿 bn 库解碼看下有沒有問題。

  2. solana cli 的構造器也只檢驗長度。只拿 base58 相關的庫 decode 一下,沒報錯就行,都是直接發送的。

套得層級太深了(吐槽一下,感覺有 Java 那味了哈哈)。

所以這裡的結論:

  1. 如果想簡單快速驗證地址是否有效,直接調用 web3.js 的構造器就行,會幫你檢查的。

  2. 如果想寫出來的程式碼能充分表明意圖,而不是用這種拐彎抹角的方式實現,建議就是按算法規則,檢查長度,嘗試 decode 一次。通過了就是地址正確,不通過就是地址有誤,返回報錯。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。