三进制系统
- 三进制数值系统有两种:平衡三进制系统, trit取值为 -1, 0, 1; 非对称三进制系统,trit取值为 0, 1, 2
- 这里我们只讨论平衡三进制系统
- Trit 是 Trinary Digit, 三元数字位, 类似于 bit, Trit取值 -1, 0,1
- Tryte 是 Trinary Byte, 类比于 byte, 一个tryte 由3个trits 组成
三进制数值系统
- 1 byte = 2^8 = 256种组合
- 1 tryte = 3 trits = 3^3 = 27 种组合
- 5 trits = 3^5 = 243 种组合
- 5 trits不等于 1 byte
平衡三进制计算
- 将 tryte -1, 1, 0转化为整数:
- -1*3^0 + 1 * 3^1 + 0 * 3^2 = 2
- 将 tryte 1, -1, 1 转化为整数:
- 1*3^0 – 1* 3^1 + 1 * 3^2 = 7
- 一个tryte 能表示的最大数字是多少? 答案: 13
- 如果你认为答案是 3^3-1=26,那么你就是二进制思维。
- 在二进制系统中,2 bits有以下四种组合,00 = 0, 01=1, 10=2, 11=3, 最大值是 2^2 – 1 = 3
- 平衡三进制中两个 trits 的组合有: 0,0 = 0; 0,1 = 3; 0, -1 = 0*3^0 +(-1)*3^1 = -3; 1,0 = 1; 1,1 = 4; 1,-1 = -2; -1, 0 = -1; -1,1 = 2; -1,-1 = -4; 围绕 0 对称: -4, -3, -2, -1, 0, 1, 2, 3, 4: 最大值 (3^2-1)/2 = 4
- 所以,1个tryte,含有3trits 的最大值为 (3^3-1)/2 = 13,其中有27中组合
- 1个tryte有以下值: -13, -12,…, -2, -1, 0, 1, 2,…, 12, 13
- 将以下两个trytes转换成整数: -1,-1,-1,1,0,0 = -1*3^0-1*3^1-1*3^2+1*3^3 = 14
IOTA Tryte字母表
- IOTA使用平衡三进制系统
- 为了使得tryte更好地让用户识别,IOTA创建了 tryte 字母表: 9ABC…XYZ; 包含26个大写字母和数字9,总共27个字符
- 1tryte = 3^3 = 27种组合,每个tryte 可以用上述 tryte 字母表中的一个字符来表示。
- IOTA 种子,地址,哈希等等,都是 trytes, 都采用 tryte 字母表中的字符来表示
- 例子: 整数14, 转换为 trytes: -1,-1,-1, 1, 0, 0, 转换为tryte字母表: -1, -1, -1 = N; 1, 0 , 0 = A,所以整数14转换为trytes 就是NA
- 单词“Zoo” 转换为 trytes 就是 ICCDCD。ASCII 值: Z = 90 = 0,0,1,0,1,0 = IC; ASCII值: o = 111 = 0,1,0,1,1,0 = CD
IOTA 种子
- IOTA中种子包含81个字符,也就是 81个 trytes
- 例如: C9RQFODNS***** AWF
- 每个 tryte 有27种组合(27个字符),这意味着IOTA的种子总共有 27^81 ~ 8.71*10^115种组合
- 而比特币中随机数组合有: 2^256 ~ 1.15*10^77 中组合