Skip to content
Joel Lehtonen edited this page Nov 24, 2014 · 11 revisions

Satoshi Float is a very space efficient representation of bitcoin amounts from 0 to 21 million bitcoins. When serialized, its footprint is only 8 bits. It is obvious that it is not sufficient for most uses but it can be used to describe the magnitude of bitcoins in accuracy of about ±7 percent.

Like standardized binary floating point values (IEEE 754) they preserve ordinality. The most significant difference is that Satoshi float is defined as integer sequence.

Definition

Satoshi float has 256 possible values and is defined as a sequence:

Mathematical definition

The sequence is designed so it is fast to calculate. Dividing by 2^13 followed by floor function can be replaced by a bit shift of 13. The multiplier is selected in a way it can be precisely calculated using 64 bit unsigned integer.

Because maximum number of bitcoins is 20999999.9769, the largest possible bitcoin value is passed at byte value 255. That value can be used to represent maximum number of bitcoins (see * in the table below).

The following graph illustrates Satoshi Float accuracy and range. Please note the logarithmic scale of range.

Graph of Satoshi Float range and accuracy

Haskell source code for converting byte value to satoshis:

import Data.Bits
import Data.Word

satoshiFloatIterator :: Integer -> Integer
satoshiFloatIterator n = ((9357*n) `shiftR` 13) + 1

byteToSatoshi :: Word8 -> Integer
byteToSatoshi i = iterate satoshiFloatIterator 0 !! fromIntegral i

Conversion to and from Satoshi floats in C:

uint64_t byte2satoshi(uint8_t n)
{
	uint64_t a = 0;
	while (n--) {
		a = (9357 * a >> 13) + 1;
	}
	return a;
}

uint8_t satoshi2byte(const uint64_t x)
{
	uint8_t i = 0;
	uint64_t a = 0;
	while (a < x && i < 255) {
		++i;
		a = (9357 * a >> 13) + 1;
	}
	return i;
}

List of all possible Satoshi Float values

Byte Hex Satoshi Pretty
0 00 0 0 Ƀ
1 01 1 0.01 µɃ
2 02 2 0.02 µɃ
3 03 3 0.03 µɃ
4 04 4 0.04 µɃ
5 05 5 0.05 µɃ
6 06 6 0.06 µɃ
7 07 7 0.07 µɃ
8 08 8 0.08 µɃ
9 09 10 0.10 µɃ
10 0A 12 0.12 µɃ
11 0B 14 0.14 µɃ
12 0C 16 0.16 µɃ
13 0D 19 0.19 µɃ
14 0E 22 0.22 µɃ
15 0F 26 0.26 µɃ
16 10 30 0.30 µɃ
17 11 35 0.35 µɃ
18 12 40 0.40 µɃ
19 13 46 0.46 µɃ
20 14 53 0.53 µɃ
21 15 61 0.61 µɃ
22 16 70 0.70 µɃ
23 17 80 0.80 µɃ
24 18 92 0.92 µɃ
25 19 106 1.06 µɃ
26 1A 122 1.22 µɃ
27 1B 140 1.40 µɃ
28 1C 160 1.60 µɃ
29 1D 183 1.83 µɃ
30 1E 210 2.10 µɃ
31 1F 240 2.40 µɃ
32 20 275 2.75 µɃ
33 21 315 3.15 µɃ
34 22 360 3.60 µɃ
35 23 412 4.12 µɃ
36 24 471 4.71 µɃ
37 25 538 5.38 µɃ
38 26 615 6.15 µɃ
39 27 703 7.03 µɃ
40 28 803 8.03 µɃ
41 29 918 9.18 µɃ
42 2A 1049 10.49 µɃ
43 2B 1199 11.99 µɃ
44 2C 1370 13.70 µɃ
45 2D 1565 15.65 µɃ
46 2E 1788 17.88 µɃ
47 2F 2043 20.43 µɃ
48 30 2334 23.34 µɃ
49 31 2666 26.66 µɃ
50 32 3046 30.46 µɃ
51 33 3480 34.80 µɃ
52 34 3975 39.75 µɃ
53 35 4541 45.41 µɃ
54 36 5187 51.87 µɃ
55 37 5925 59.25 µɃ
56 38 6768 67.68 µɃ
57 39 7731 77.31 µɃ
58 3A 8831 88.31 µɃ
59 3B 10087 100.87 µɃ
60 3C 11522 115.22 µɃ
61 3D 13161 131.61 µɃ
62 3E 15033 150.33 µɃ
63 3F 17171 171.71 µɃ
64 40 19613 196.13 µɃ
65 41 22403 224.03 µɃ
66 42 25589 255.89 µɃ
67 43 29229 292.29 µɃ
68 44 33386 333.86 µɃ
69 45 38134 381.34 µɃ
70 46 43558 435.58 µɃ
71 47 49753 497.53 µɃ
72 48 56829 568.29 µɃ
73 49 64911 649.11 µɃ
74 4A 74143 741.43 µɃ
75 4B 84688 846.88 µɃ
76 4C 96732 967.32 µɃ
77 4D 110489 1.10 mɃ
78 4E 126202 1.26 mɃ
79 4F 144150 1.44 mɃ
80 50 164650 1.65 mɃ
81 51 188066 1.88 mɃ
82 52 214812 2.15 mɃ
83 53 245361 2.45 mɃ
84 54 280255 2.80 mɃ
85 55 320111 3.20 mɃ
86 56 365635 3.66 mɃ
87 57 417633 4.18 mɃ
88 58 477026 4.77 mɃ
89 59 544865 5.45 mɃ
90 5A 622352 6.22 mɃ
91 5B 710858 7.11 mɃ
92 5C 811951 8.12 mɃ
93 5D 927421 9.27 mɃ
94 5E 1059312 10.59 mɃ
95 5F 1209959 12.10 mɃ
96 60 1382030 13.82 mɃ
97 61 1578572 15.79 mɃ
98 62 1803064 18.03 mɃ
99 63 2059482 20.59 mɃ
100 64 2352365 23.52 mɃ
101 65 2686900 26.87 mɃ
102 66 3069010 30.69 mɃ
103 67 3505460 35.05 mɃ
104 68 4003979 40.04 mɃ
105 69 4573393 45.73 mɃ
106 6A 5223784 52.24 mɃ
107 6B 5966669 59.67 mɃ
108 6C 6815201 68.15 mɃ
109 6D 7784404 77.84 mɃ
110 6E 8891439 88.91 mɃ
111 6F 10155908 101.56 mɃ
112 70 11600200 116.00 mɃ
113 71 13249887 132.50 mɃ
114 72 15134179 151.34 mɃ
115 73 17286440 172.86 mɃ
116 74 19744778 197.45 mɃ
117 75 22552721 225.53 mɃ
118 76 25759987 257.60 mɃ
119 77 29423365 294.23 mɃ
120 78 33607719 336.08 mɃ
121 79 38387138 383.87 mɃ
122 7A 43846247 438.46 mɃ
123 7B 50081706 500.82 mɃ
124 7C 57203922 572.04 mɃ
125 7D 65339002 653.39 mɃ
126 7E 74630987 746.31 mɃ
127 7F 85244403 852.44 mɃ
128 80 97367173 973.67 mɃ
129 81 111213946 1.11 Ƀ
130 82 127029895 1.27 Ƀ
131 83 145095060 1.45 Ƀ
132 84 165729307 1.66 Ƀ
133 85 189297989 1.89 Ƀ
134 86 216218419 2.16 Ƀ
135 87 246967255 2.47 Ƀ
136 88 282088942 2.82 Ƀ
137 89 322205351 3.22 Ƀ
138 8A 368026791 3.68 Ƀ
139 8B 420364586 4.20 Ƀ
140 8C 480145439 4.80 Ƀ
141 8D 548427841 5.48 Ƀ
142 8E 626420814 6.26 Ƀ
143 8F 715505317 7.16 Ƀ
144 90 817258698 8.17 Ƀ
145 91 933482622 9.33 Ƀ
146 92 1066234973 10.66 Ƀ
147 93 1217866290 12.18 Ƀ
148 94 1391061387 13.91 Ƀ
149 95 1588886890 15.89 Ƀ
150 96 1814845536 18.15 Ƀ
151 97 2072938194 20.73 Ƀ
152 98 2367734703 23.68 Ƀ
153 99 2704454788 27.04 Ƀ
154 9A 3089060480 30.89 Ƀ
155 9B 3528361684 35.28 Ƀ
156 9C 4030136753 40.30 Ƀ
157 9D 4603270215 46.03 Ƀ
158 9E 5257910084 52.58 Ƀ
159 9F 6005647542 60.06 Ƀ
160 A0 6859722175 68.60 Ƀ
161 A1 7835256396 78.35 Ƀ
162 A2 8949523206 89.50 Ƀ
163 A3 10222252032 102.22 Ƀ
164 A4 11675978060 116.76 Ƀ
165 A5 13336441249 133.36 Ƀ
166 A6 15233042086 152.33 Ƀ
167 A7 17399362159 173.99 Ƀ
168 A8 19873758756 198.74 Ƀ
169 A9 22700044029 227.00 Ƀ
170 AA 25928260740 259.28 Ƀ
171 AB 29615568329 296.16 Ƀ
172 AC 33827254988 338.27 Ƀ
173 AD 38637893668 386.38 Ƀ
174 AE 44132662482 441.33 Ƀ
175 AF 50408852887 504.09 Ƀ
176 B0 57577592342 575.78 Ƀ
177 B1 65765811957 657.66 Ƀ
178 B2 75118493956 751.18 Ƀ
179 B3 85801238763 858.01 Ƀ
180 B4 98003197157 980.03 Ƀ
181 B5 111940419409 1.12 kɃ
182 B6 127859680715 1.28 kɃ
183 B7 146042850641 1.46 kɃ
184 B8 166811883966 1.67 kɃ
185 B9 190534521274 1.91 kɃ
186 BA 217630800240 2.18 kɃ
187 BB 248580492902 2.49 kɃ
188 BC 283931600597 2.84 kɃ
189 BD 324310056981 3.24 kɃ
190 BE 370430810934 3.70 kɃ
191 BF 423110485585 4.23 kɃ
192 C0 483281837600 4.83 kɃ
193 C1 552010272757 5.52 kɃ
194 C2 630512710228 6.31 kɃ
195 C3 720179129591 7.20 kɃ
196 C4 822597182079 8.23 kɃ
197 C5 939580301845 9.40 kɃ
198 C6 1073199814986 10.73 kɃ
199 C7 1225821614847 12.26 kɃ
200 C8 1400148052994 14.00 kɃ
201 C9 1599265787582 15.99 kɃ
202 CA 1826700436329 18.27 kɃ
203 CB 2086479001799 20.86 kɃ
204 CC 2383201174297 23.83 kɃ
205 CD 2722120774890 27.22 kɃ
206 CE 3109238780597 31.09 kɃ
207 CF 3551409578864 35.51 kɃ
208 D0 4056462332695 40.56 kɃ
209 D1 4633339605350 46.33 kɃ
210 D2 5292255699129 52.92 kɃ
211 D3 6044877511811 60.45 kɃ
212 D4 6904531113040 69.05 kɃ
213 D5 7886437698330 78.86 kɃ
214 D6 9007983098545 90.08 kɃ
215 D7 10289025616832 102.89 kɃ
216 D8 11752247643640 117.52 kɃ
217 D9 13423557275579 134.24 kɃ
218 DA 15332547049267 153.33 kɃ
219 DB 17513017912597 175.13 kɃ
220 DC 20003577710959 200.04 kɃ
221 DD 22848324785333 228.48 kɃ
222 DE 26097628786177 260.98 kɃ
223 DF 29809022528352 298.09 kɃ
224 E0 34048220678442 340.48 kɃ
225 E1 38890283311546 388.90 kɃ
226 E2 44420944939714 444.21 kɃ
227 E3 50738132544056 507.38 kɃ
228 E4 57953699489104 579.54 kɃ
229 E5 66195406020453 661.95 kɃ
230 E6 75609181412766 756.09 kɃ
231 E7 86361707822175 863.62 kɃ
232 E8 98643371593273 986.43 kɃ
233 E9 112671634277131 1.13 MɃ
234 EA 128694883048232 1.29 MɃ
235 EB 146996828696571 1.47 MɃ
236 EC 167901529066628 1.68 MɃ
237 ED 191779126889214 1.92 MɃ
238 EE 219052403601365 2.19 MɃ
239 EF 250204265197507 2.50 MɃ
240 F0 285786292657846 2.86 MɃ
241 F1 326428508349545 3.26 MɃ
242 F2 372850531326501 3.73 MɃ
243 F3 425874319045663 4.26 MɃ
244 F4 486438721107211 4.86 MɃ
245 F5 555616102709983 5.56 MɃ
246 F6 634631332160317 6.35 MɃ
247 F7 724883468630870 7.25 MɃ
248 F8 827970534177131 8.28 MɃ
249 F9 945717808629812 9.46 MɃ
250 FA 1080210148358051 10.80 MɃ
251 FB 1233828901145787 12.34 MɃ
252 FC 1409294070803361 14.09 MɃ
253 FD 1609712478089240 16.10 MɃ
254 FE 1838632770688601 18.39 MɃ
255 FF 2100108256266265 *21.00 MɃ
Clone this wiki locally