《Solana 中文开发教程》学习笔记(Part 1~4)

Part 1 :Solana介绍

2017年11月,Anatoly Yakovenko发表了一篇白皮书,介绍了"Proof of History"这一技术

Part 2 :Solana介绍

Account

在Solana中,"Everythin is an Account" 类似Linux世界里面把所有的资源都抽象成"文件"一样。

Solana作为一个分布式区块链系统,所有的信息都存储在Account对象中,如合约(Solana叫Onchain Program), 账号信息,合约中存储的内容等都是存储在一个个Account对象中。

Account的定义如下:

复制代码
1pub struct Account {
2        /// lamports in the account
3        pub lamports: u64,
4        /// data held in this account
5        #[serde(with = "serde_bytes")]
6        pub data: Vec<u8>,
7        /// the program that owns this account. If executable, the program that loads this account.
8        pub owner: Pubkey,
9        /// this account's data contains a loaded program (and is now read-only)
10        pub executable: bool,
11        /// the epoch at which this account will next owe rent
12        pub rent_epoch: Epoch,
13    }

其中的lamports表示账号余额,data表示存储的内容,owner表示这个Account可以被谁来操作,类似文件所有者。 如果是合约账号,这里data的内容就是合约编译后的代码,同时executable为true。

账号和签名

Solana的签名系统使用的是 Ed25519 ,说人话就是: Ed25519是一种计算快,安全性高,且生成的签名内容小的一种不对称加密算法。新一代公链几乎都支持这个算法。

合约

合约分为两类,一类是普通合约一类是系统合约,前者在Solana中称为"On Chain Program" 后者称为"Native Program" 其实本质都是类似其他公链上所说的合约。

系统合约

系统合约是由节点在部署的时候生成的,普通用户无法更新,他们像普通合约一样,可以被其他合约或者RPC进行调用

系统合约有

  • System Program: 创建账号,转账等作用
  • BPF Loader Program: 部署和更新合约
  • Vote program: 创建并管理用户POS代理投票的状态和奖励
  • ...

普通合约

一般我们说的合约都是普通合约,或者叫 "On Chain Program"。普通合约是由用户开发并部署,Solana官方也有 一些官方开发的合约,如Token、ATA账号等合约。

当用户通过"BPF Loader Program"部署一个新合约的时候,新合约Account中的被标记为true,表示他是一个可以 被执行的合约账号。不同于有些公链,Solana上的合约是可以被更新的,也可以被销毁。并且当销毁的时候,用于存储 代码的账号所消耗的资源也会归还给部署者。

part3:SPL代币

SPL 代币

在以太坊中,普通代币被一个叫ERC20的提案定了规范,可以认为普通代币合约统一叫做ERC20代币。

那么Solana世界里的ERC20代币是什么呢?答案就是SPL代币。

The Solana Program Library (SPL) is a collection of on-chain programs targeting the Sealevel parallel runtime.

SPL Token是 " Solana Program Library"中的一个组成部分,叫做"Token Program",简称为SPL Token。

所有的代币都有这个合约来管理,该合约代码在 https://github.com/solana-labs/solana-program-library/tree/master/token

代币信息

不同于以太坊中,一个代币就是一个合约。

SPL Token中,一个代币,仅仅是一个归Token合约管理的普通的Account对象,这个对象里面的二进制数据定义了 这个代币的基本属性。其结构为:

复制代码

Copy

复制代码
1pub struct Mint {
2        /// Optional authority used to mint new tokens. The mint authority may only be provided during
3        /// mint creation. If no mint authority is present then the mint has a fixed supply and no
4        /// further tokens may be minted.
5        pub mint_authority: COption<Pubkey>,
6        /// Total supply of tokens.
7        pub supply: u64,
8        /// Number of base 10 digits to the right of the decimal place.
9        pub decimals: u8,
10        /// Is `true` if this structure has been initialized
11        pub is_initialized: bool,
12        /// Optional authority to freeze token accounts.
13        pub freeze_authority: COption<Pubkey>,
14    }

相对有意义的就是supply表示总共的供应量,decimals表示代币的精度信息。

part 4:

天上掉馅饼(x不是

相关推荐
TOPGUS1 小时前
谷歌SEO第三季度点击率趋势:榜首统治力的衰退与流量的去中心化趋势
大数据·人工智能·搜索引擎·去中心化·区块链·seo·数字营销
中金快讯2 小时前
区块链宕机致爆仓提现延迟成常态,Matrixdock交易平台能扛住重压吗?
区块链
devmoon3 小时前
Polkadot SDK 平行链模板搭建全流程指南
web3·区块链·sdk·比特币·波卡
Max_uuc8 小时前
【C++ 硬核】利用链接器魔法 (Linker Sections) 实现“去中心化”的自动初始化与插件系统
去中心化·区块链
devmoon9 小时前
在 Polkadot 上部署独立区块链Paseo 测试网实战部署指南
开发语言·安全·区块链·polkadot·erc-20·测试网·独立链
傻小胖9 小时前
22.ETH-智能合约-北大肖臻老师客堂笔记
笔记·区块链·智能合约
傻小胖1 天前
21.ETH-权益证明-北大肖臻老师客堂笔记
笔记·区块链
硅基流动1 天前
硅基流动 × ValueCell:8K+Star,去中心化金融智能体加速投资决策
金融·去中心化·区块链
devmoon1 天前
使用 Hardhat 在 Polkadot Hub 测试网部署基础 Solidity 合约(完整实战指南)
web3·区块链·智能合约·波卡·hardhat
威胁猎人1 天前
【黑产大数据】2025年全球KYC攻击风险研究报告
大数据·区块链