跳至內容
0%

如何使用 Seahorse 以 Python 撰寫 Solana 程式

發布於 2022年11月4日閱讀時間 2 分鐘

Solana 是一個具有智能合約功能的高效能區塊鏈網路,其設計目標是為全球規模的採用而擴展。Solana 平均每秒可處理 3,000 筆交易,是速度最快的區塊鏈協定之一。Solana Programs 是撰寫在 Solana 區塊鏈網路上的智能合約,用於執行各種活動,包括代幣轉帳、鑄造 NFT,以及鏈上投票。

本文將說明如何使用 Seahorse 開發框架,分別在本地開發環境與線上 IDE 中以 Python 撰寫 Solana Programs。

在 Solana 上開發程式的主要方式有哪些?

要開發 Solana Programs,你需要學習 Rust、使用 Anchor 開發框架建置,或使用 Seahorse(一個 Python 風格的 Solana 開發框架)。

Rust 是 Solana 建置所採用的程式語言,也是與 Solana 的 Sealevel Runtime 互動時預設使用的web3 程式語言

使用 Anchor 在 Solana 上開發

Anchor 是一個框架,透過將 Rust 語言的複雜性從一般使用者手中抽象化,讓 Solana 應用程式開發更容易。

Anchor 為 Solana 開發者提供了介面定義語言(Interface Definition Language, IDL)、根據 IDL 產生客戶端的 Typescript 套件、Rust crates,以及命令列介面(CLI)等工具。

使用 Seahorse 在 Solana 上開發

Seahorse 是由社群主導的 Solana 開發框架,讓開發者能夠以 Python 程式語言撰寫 Solana programs。

Seahorse 讓每個以 Python 撰寫的程式,都能擁有與 Rust 程式相同的安全保障。Seahorse 與 Anchor 完全相容,也能與 Rust 程式碼互通。

Python 廣泛用於網頁應用程式與機器學習專案的日常開發,是目前最受歡迎的程式語言。

由於許多對開發區塊鏈應用有興趣的開發者,可能已經具備 Python 程式設計技能,他們可以使用 Seahorse 來建置 Solana 應用程式,而不需要另外學習一種全新的程式語言(Rust)。

如何在本地 Solana 開發環境中使用 Seahorse

像 Solana Playground 這類平台僅適合快速建置與測試應用程式,不應用來開發大型應用程式。若要在本地工作環境中建置 Seahorse 所需的開發環境,我們將安裝以下項目:

  1. Rust
  2. Solana Tool Suite
  3. Node
  4. Anchor
  5. Seahorse

1. 安裝必要的 Solana 開發工具

若要安裝 Rust、Solana Tool Suite、Node 和 Anchor,請參考這篇設定本地 Solana 開發環境的教學。

若你使用的是 Linux 系統,可能需要執行以下指令來加入額外的相依套件:

2. 安裝 Seahorse

Seahorse 需要依賴 AnchorRustfmt 才能正常運作。由於你的機器上已安裝好 Anchor,安裝 Rustfmt 套件與 Anchor 會很簡單。

執行以下指令加入 Rustfmt 套件:

在終端機執行以下指令來安裝 Seahorse:

執行最後一個指令,確認 Seahorse 已正確安裝:

3. 產生紙錢包(paper wallet)

由於你已經安裝好 Solana Command Line Tools,可以建立一個本地的「紙錢包」在本地環境中使用。

執行以下指令確認 Solana CLI 工具已安裝完成:

接著輸入下一個指令來產生新的金鑰對:

請妥善保存相關資訊,以便之後在本地環境中使用。

為你的紙錢包充值:

執行 solana airdrop 2 指令以取得 2 個測試用 SOL 代幣

如果你想使用線上開發環境來測試 Seahorse,而不是在本地端執行,Solana Playground 是不錯的選擇。

如何在 Solana Playground 中設定 Seahorse

Solana Playground 是一個線上的整合開發環境(Integrated Development Environment),專為快速啟動 Solana 應用程式開發而打造。

Solana Playground 提供以下預先建置的 Crates:

  1. Native(Rust)-適合想在不使用任何框架的情況下於 Solana 上建置的開發者
  2. Anchor(Rust)-適合想以 Rust 搭配額外工具在 Solana 上建置的開發者
  3. Seahorse(Python)-適合具備 Python 程式設計經驗的 Solana 開發者
Solana Playground 開發框架選擇畫面:Native、Anchor 和 Seahorse。
Solana Playground 開發框架選擇畫面:Native、Anchor 和 Seahorse。

1. 建立新的 Solana Playground 專案

在 Solana Playground 上建立一個新專案,並為目錄命名。命名完成後,會出現一個名為 FizzBuzz 的示範專案。本教學將使用這個小型 dapp 作為範例。

2. 建立 Playground 錢包

你必須先產生一個 Playground Wallet,才能與你的 Seahorse programs 互動。Playground Wallet 是作為此應用程式的測試錢包。

  • 點選「playground wallet」
  • 選擇新增錢包
  • 依照畫面指示操作,並下載 JSON 檔案
Solana Playground 建立新 Playground 錢包的介面
Solana Playground 建立新 Playground 錢包的介面

3. 取得測試用 SOL 代幣

在 Playground 終端機中輸入以下指令,取得 devnet SOL 代幣

$ connect

connect 指令會將你的測試錢包與專案連結。

$ solana address

solana address 指令會印出你的 Solana 錢包地址。稍後我們會用這個地址來啟動 FizzBuzz 應用程式。

$ solana airdrop 2

solana airdrop 指令會將測試用 SOL 代幣存入你的錢包,用來支付執行「Build」或「Deploy」等交易所需的手續費。

Solana Playground 的 FizzBuzz Seahorse dapp 專案檔案
Solana Playground 的 FizzBuzz Seahorse dapp 專案檔案

Seahorse 的 Python 元件如何運作

在這個章節中,我們將逐步建立一個常見但簡單的鏈上 FizzBuzz 應用程式。我們的程式碼主要包含三個部分:

  1. Account
  2. Instruction 1
  3. Instruction 2

1. Account

Executable Accounts 用來定義在 Solana 區塊鏈上執行的可執行程式碼(智能合約)。在 Accounts 定義中,你可以指定 Solana programs 所需的資料型別。

FizzBuzz 被定義為布林(Boolean)資料型別,而變數「n」則為無號整數(unsigned integer)型別。

2. Instruction 1

還有另一種帳戶類型,稱為 Built-In Accounts。這些內建帳戶大多用於在鏈上呼叫特定的 instructions。

A. Signer account

需要簽署者的 instructions,必須取得錢包的核准。Signer 就是在這段程式碼中,對定義的 instruction 呼叫進行簽署的錢包。

owner 這個關鍵字用來儲存 Signer 的相關資訊。若要取得 Signer 的公鑰,可以加入以下程式碼:

B. Empty account

Empty account 型別用來初始化主要 Account(FizzBuzz)的類別,即使該帳戶一開始是空的。

透過使用 Empty 關鍵字,你可以建構主要 Account 中定義的類別。當 FizzBuzz account 被初始化時,建立費用會由 Owner(即該交易的簽署者)支付。

一旦該帳戶在鏈上建立完成,同一個 owner 之後再次呼叫時就無法重新建立。初始化時產生的 seed 可用來識別原始帳戶。

3. Instruction 2

第二個 instruction 呼叫會使用已建立好的帳戶及其對應的值。

以下是 FizzBuzz 的完整程式碼範例:

開始使用 Seahorse 以 Python 建置 Solana 應用程式

Seahorse 是一個由社群主導的開源專案,完全免費供大眾使用。Seahorse 目前仍處於 beta 階段,許多功能尚未實作完成。雖然尚未達到正式上線(production-ready)的程度,但仍可用來在 Solana 的 devnet 上進行實驗與應用程式開發。

透過 Seahorse,以 Python 在 Solana 上進行開發是可行且簡單的。如果你是一位對學習 web3 開發有興趣的 Python 開發者,透過 Solana Playground 探索 Seahorse,是開始學習 Anchor、Rust 與 Solana programs 相關技能的一種安全又有趣的方式。

Background gradient

打造區塊鏈魔法

Alchemy 結合最強大的 Web3 開發者產品與工具,並提供資源、社群與卓越的支援。