跳至内容
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——一个面向 Solana 的 Python 风格开发框架。

Rust 是构建 Solana 所使用的编程语言,也是与 Solana 的 Sealevel Runtime 交互的默认 web3 编程语言

使用 Anchor 在 Solana 上开发

Anchor 是一个框架,通过将 Rust 语言的复杂性从普通用户面前抽象出来,使 Solana 应用开发变得更容易。

Anchor 为 Solana 开发者提供了一系列工具,包括接口定义语言(IDL)、从 IDL 生成客户端的 TypeScript 包、Rust crate,以及命令行接口(CLI)。

使用 Seahorse 在 Solana 上开发

Seahorse 是一个由社区主导的 Solana 开发框架,让开发者能够用 Python 编程语言编写 Solana 程序。

Seahorse 让每一个用 Python 编写的程序都具备与 Rust 程序相同的安全保障。Seahorse 与 Anchor 完全兼容,也可以与 Rust 代码互操作。

Python 常用于日常的 Web 应用开发和机器学习项目,是目前最流行的编程语言。

由于许多有意构建区块链应用的开发者可能已经具备 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. 生成一个纸钱包

由于你已经安装了 Solana Command Line Tools,你可以创建一个本地“纸钱包”,用于本地开发。

运行以下命令,验证 Solana CLI 工具是否已安装:

然后输入以下命令,生成一个新的密钥对:

请妥善保存这些信息,以便在本地环境中使用。

为你的纸钱包充值:

运行 solana airdrop 2 命令获取 2 个测试 SOL 代币

如果你想使用在线开发环境来测试 Seahorse,而不是在本地运行,Solana Playground 是一个不错的选择。

如何在 Solana Playground 中设置 Seahorse

Solana Playground 是一个在线集成开发环境,专为快速启动 Solana 应用开发而构建。

Solana Playground 提供以下预构建的 Crate:

  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 钱包

在与 Seahorse 程序交互之前,你需要先生成一个 Playground Wallet。该 Playground Wallet 作为应用的测试钱包使用。

  • 点击“playground wallet”
  • 选择新建钱包
  • 按照提示操作,下载 JSON 文件
Solana Playground 中创建新 Playground Wallet 的界面
Solana Playground 中创建新 Playground Wallet 的界面

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 Account 用于定义在 Solana 区块链上运行的可执行代码(智能合约)。在 Accounts 定义中,你可以指定 Solana 程序所需的数据类型。

FizzBuzz 被定义为布尔类型,而“n”变量则是无符号整数类型。

2. Instruction 1

还有一类账户被称为内置账户(Built-In Accounts)。这些内置账户大多用于调用链上的特定指令。

A. Signer 账户

需要签名者的指令必须获得钱包的批准。Signer 是对这部分代码中定义的指令调用进行交易签名的钱包。

owner 关键字用于保存 Signer 的详细信息。要获取 Signer 的公钥,可以添加以下代码:

B. Empty 账户

Empty 账户类型用于初始化主 Account(FizzBuzz)的类,即使该账户最初为空。

通过使用 Empty 关键字,你可以构建主 Account 中定义的类。当 FizzBuzz 账户被初始化时,创建费用由 Owner(即交易的签名者)支付。

一旦该账户在链上创建完成,同一 owner 再次调用时就不能重新创建该账户。初始化时生成的 seed 可用于识别原始账户。

3. Instruction 2

第二条指令调用使用的是已创建账户及其对应的值。

以下是 FizzBuzz 的完整代码示例:

开始使用 Seahorse 通过 Python 构建 Solana 应用

Seahorse 是一个由社区主导的开源项目,完全免费向公众开放使用。Seahorse 目前处于测试阶段,许多功能尚未实现。虽然它还未达到生产可用的水平,但可以用来在 Solana 的 devnet 上进行实验和开发应用。

借助 Seahorse,用 Python 在 Solana 上构建应用变得可行且简单。如果你是一名 Python 有意学习 web3 开发的开发者,通过 Solana Playground 探索 Seahorse,是开始掌握 Anchor、Rust 和 Solana 程序相关技能的一种安全且有趣的方式。

Background gradient

构建区块链应用

Alchemy 将最强大的 Web3 开发者产品和工具与资源、社区及专业支持结合在一起。