### Solana 简介
Solana 是一个高性能的公链,提供快速、便宜且可扩展的交易体验,每秒可处理数千笔交易,出块时间达到亚秒级。其核心创新在于**历史证明(PoH)**,通过高频可验证延迟函数(VDF)建立可验证的事件顺序,类似于加密时钟,帮助网络就时间和事件顺序达成一致。
### 智能合约架构
Solana 的智能合约与传统基于 EVM 的区块链不同。Solana 的智能合约是**无状态**的,仅包含程序逻辑,状态存储在外部账户中。这种设计实现了**状态与逻辑的分离**,与以太坊的智能合约模型有显著区别。
### Solana 钱包
Solana 支持多种钱包类型:
- **移动应用钱包**:如 Trust Wallet、Coin98
- **网页钱包**:如 Phantom、SolFlare、Sollet、MathWallet
- **命令行钱包**:Solana CLI 工具
Solana 有三个网络:**Mainnet Beta**、**Devnet** 和 **Testnet**,用户可以根据需求选择。
### Solana 节点及浏览器
Solana 的主要网络包括:
- **Mainnet Beta Rpc**: https://api.mainnet-beta.solana.com
- **Devnet Rpc**: https://api.devnet.solana.com
- **Testnet Rpc**: https://api.testnet.solana.com
常用的区块链浏览器有:
- https://solscan.io/
- http://explorer.solana.com/
- http://solanabeach.io/
### Solana DEX
**Raydium** 是 Solana 上主流的去中心化交易所(DEX),支持限价单、Swap、流动性挖矿、质押挖矿等功能。访问地址:[Raydium](https://raydium.io/swap/)
### Solana 智能合约
Solana 的智能合约称为**链上程序(On-chain Program)**,推荐使用 **Rust** 和 **C** 进行开发。合约编译为 **BPF 字节码**(.so 文件)并部署到链上。Solana 节点的运行时(Runtime)会加载并执行这些字节码。
#### 交易与指令
- **Transaction**:客户端向 Solana 节点发起的请求单元,可能包含多个 **Instruction**。
- **Instruction**:智能合约处理的基本单元,包含程序 ID、账户信息和数据。
#### 账户与资源
Solana 的账户(Account)用于存储数据,用户需要支付存储费用(以 SOL 计价)。如果账户余额为 0,账户将被删除。
### Solana HelloWorld 合约
#### 环境准备
1. 安装 Node、NPM、Rust、Solana CLI 和 Solana Test Validator。
2. 启动本地节点:
```bash
solana-test-validator
```
3. 设置默认连接的节点:
```bash
solana config set --url http://127.0.0.1:8899
```
4. 创建本地测试账号并申请 SOL 空投:
```bash
solana-keygen new
solana airdrop 100
```
#### 编译与部署合约
1. 进入项目目录并编译合约:
```bash
cargo build-bpf
```
2. 部署合约:
```bash
solana program deploy target/deploy/helloworld.so
```
#### 合约源码解读
合约的核心逻辑在 `lib.rs` 中,主要功能是记录程序被调用的次数并存储在链上账户中。关键点包括:
- **GreetingAccount**:存储调用次数的结构体。
- **process_instruction**:程序入口函数,处理传入的指令并更新状态。
#### 项目结构
- **client**:客户端代码,用于与链上程序交互。
- **program-rust**:Rust 编写的链上程序。
- **Cargo.toml**:项目配置文件,定义依赖和编译选项。
### 总结
Solana 通过其创新的 PoH 共识机制和无状态智能合约模型,提供了高性能的区块链解决方案。开发者可以使用 Rust 或 C 编写智能合约,并通过 Solana 的工具链进行编译和部署。通过简单的 HelloWorld 合约示例,开发者可以快速上手 Solana 的智能合约开发。