Solana/经济系统/创世块(二)

我们使用下面的代码汇总一下创世块中所有账号的余额, 得到 sol 在创世块中的初始发行总额是 500,000,000 sol.

import json
import pathlib
import pxsol

genesis = json.loads(pathlib.Path('genesis.json').read_text())
accounts = genesis['accounts']

lamports = sum([e['account']['lamports'] for e in accounts])
print(lamports / pxsol.denomination.sol) # 500000000.0

之后, 我们通过 solscan.io 查询当日 sol 的总供应量. 得知截至 2025 年 8 月 9 日, sol 的总流通供应量是 539,254,444 枚. 也就是说, 在经历 5.5 年的运营之后, 市面上流通的绝大部分 sol (500,000,000 / 539,254,444 = 92.7%) 仍然都来自创世块. 根据这个信息我们可以至少得到两个有用的分析:

  • 现在流通中的 sol 几乎都来自创世块 431 个账号的卖出.
  • 通胀率极低, 根据公式 (539254444 / 500000000) ** (1 / 5.5) 计算得到真实年通胀率为 1.3%.

Solana 社区中有一些批评认为 solana 的初始分发中代币分配较为集中, 早期投资者和团队持有了绝大部分份额. 我们使用代码来验证一下这个说法是否属实.

import json
import pathlib

genesis = json.loads(pathlib.Path('genesis.json').read_text())
accounts = genesis['accounts']
accounts.sort(key=lambda x: -x['account']['lamports'])

lamports_total = sum([e['account']['lamports'] for e in accounts])
lamports_top10 = sum([e['account']['lamports'] for e in accounts[:10]])
lamports_top20 = sum([e['account']['lamports'] for e in accounts[:20]])
lamports_top50 = sum([e['account']['lamports'] for e in accounts[:50]])

print(lamports_top10 / lamports_total) # 0.87
print(lamports_top20 / lamports_total) # 0.92
print(lamports_top50 / lamports_total) # 0.94

得到分析结果如下:

  • 创世块中的前 10 个地址占有了 87% 的总初始分发额.
  • 创世块中的前 20 个地址占有了 92% 的总初始分发额.
  • 创世块中的前 50 个地址占有了 94% 的总初始分发额.

看起来社区中的批评还是比较中肯的. 这里给出前 10 地址的浏览器链接. 我们相信这些地址应当大多数来自现实世界中的风险投资机构和 solana 基金会/开发者团队, 但本文无意真的去分析这些账户的现实主体, 因此在文章中仅仅简单列出.

最后绘制一个饼图来直观显示创世块中各地址的份额比例.

import json
import matplotlib.pyplot as plt
import pathlib

plt.style.use('seaborn-v0_8-darkgrid')
plt.figure(figsize=(4.8, 2.7))

genesis = json.loads(pathlib.Path('genesis.json').read_text())
accounts = genesis['accounts']
accounts.sort(key=lambda x: -x['account']['lamports'])

x = [e['account']['lamports'] for e in accounts]

plt.pie(x)
plt.axis('equal')
plt.show()

img

注意上图中灰色的区域是排名在后的几百个账户的叠加显示, 并非代表一个账户.