Herman

Herman

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

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

課程連結

  • 跟著 lab 完成程式碼。
  • 完成所有挑戰。
    • 添加處理無效錢包地址的指示。
    • 修改腳本以連接到 mainNet 並查找一些著名的 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 相關的庫進行解碼,如果沒有報錯,就是正確的地址,否則就是地址有誤,返回錯誤。

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

所以這裡的結論是:

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

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

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