Lamports→SOL変換ツールとは
Lamports→SOL変換ツールは、整数のlamport数を109で割ってSOLで表し、109を掛けて元に戻します。lamportはSolanaのネイティブトークンの最小単位です。ランタイムとJSON-RPC APIが扱うすべての残高、送金、rentの数値はlamportの整数であり、小数9桁のSOLはウォレットの表示形式にすぎません。
Solana単位の一覧表
| 単位 | Lamports | SOL | 登場する場面 |
|---|---|---|---|
| micro-lamport | 0.000001 | 10-15 | コンピュートユニットあたりのプライオリティフィー価格 |
| lamport | 1 | 0.000000001 | RPCの残高、インストラクションデータ、rent |
| SOL | 1,000,000,000 | 1 | ウォレット、取引所 |
実際のlamports
- 残高:
getBalanceは1.5 SOLに対して{ "value": 1500000000 }を返します。 - 送金:
SystemProgram.transfer({ lamports: 100_000_000 })は0.1 SOLを送ります。web3.jsの定数LAMPORTS_PER_SOLは1e9です。 - Rent:
getMinimumBalanceForRentExemption(size)はlamportsを返します。すべてのアカウントは存続のために最低その額を保持する必要があります。 - プライオリティフィー: コンピュートユニットあたりのmicro-lamportsで設定します。200,000 CUのトランザクションに10,000 micro-lamports/CUなら、2,000,000,000 micro-lamports = 2,000 lamports = 0.000002 SOLが加算されます。
浮動小数点を使わない理由
1e9はdoubleに余裕で収まりますが、123,456,789,123,456,789 lamportsのような残高は収まりません。JavaScriptの Number は253までしか正確ではないからです。この変換ツールはBigIntを使うため、非常に大きなトレジャリー残高も正確に変換できます。
計算例
ウォレットに3.25 SOLと表示されています。RPCの残高は3.25 × 109 = 3,250,000,000 lamportsです。別のアドレスに0.1 SOLを送り、署名1つ分の手数料を払うと、3,250,000,000 − 100,000,000 − 5,000 = 3,149,995,000 lamportsが残り、ウォレットは3.149995 SOLと表示します。数値を整数のままにしておけば、後で価格を掛けたり多数のアカウントを合計したりする際の丸めを避けられます。
Solanaアドレス検証ツールでSolanaアドレスを検証するか、Solana Pay QRジェネレーターで決済コードを作成してください。