平衡三進位系統

三進位系統

  • 三進位系統分為兩種: 平衡三進位系統中使用 -1(T)、0、1 來表達一個 trit(或者用 -、0、+) 非平衡三進位系統使用 0、1、2 來表達一個 trit
  • 通常講三進位提到的會是非平衡三進位,不過以下將會專注在平衡三進位系統
  • Trit 指的是 Trinary Digit,相較於二進位就是 bit 其可以擁有的數值為 -1(T)、0、1

  • Tryte 指的是 Trinary Byte, ,相較於二進位就是byte 在 IOTA 中一個 tryte 包含 3 個 trits

  • 1 byte = 282^8 = 256 種組合
  • 1 tryte = 3 trits = 333^3 = 27 種組合
  • 5 trits = 353^5 = 27 種組合

平衡三進位系統

  • 轉換 Tryte T10 成整數:
    T x 303^0 + 1 x 313^1 + 0 x 323^2 = 2

  • 轉換 Tryte 1T1 成整數:
    1 x 303^0 + T x 313^1 + 1 x 323^2 = 7

  • 2 trits 在平衡三進位中的組合如下:

11 = 1 x 303^0 + 1 x 313^1 = 4
01 = 0 x 303^0 + 1 x 313^1 = 3
T1 = T x 303^0 + 1 x 313^1 = 2
10 = 1 x 303^0 + 0 x 313^1 = 1
00 = 0 x 303^0 + 0 x 313^1 = 0
T0 = T x 303^0 + 0 x 313^1 = -1
1T = 1 x 303^0 + T x 313^1 = -2
0T = 0 x 303^0 + T x 313^1 = -3
TT = T x 303^0 + T x 313^1 = -4

最大值為 (323^2-1)/2 = 4

  • 一個 tryte 有 3 個 trits,所以最大值會是 (333^3 -1) / 2 = 13 總共會有 333^3 = 27 種組合
  • 一個 tryte 可以有以下數值: -13 ,-12 , …-2,-1 ,0 ,1 ,2 , …12,13
  • 轉換以下 2 trytes T1TTT0 成整數: (T30+131+T32)+(T33+T34+035)=7+108=115(T * 3^0 + 1 * 3^1 + T * 3^2)+(T * 3^3 + T * 3^4+ 0 * 3^5)= -7 + -108 = -115

轉換十進制到平衡三進位

  • 通常在做轉換時,我們會將左側是為最高有效位元,而右側為最低有效位元
  • 欲轉換二進制到十進制:

    1010bin1010_{bin} = 1 x 232^3 + 0 x 222^2 + 1 x 212^1 + 0 x 202^0 = 10dec10_{dec}

  • 欲轉換三進制到十進制:

    2012ternery2012_{ternery} = 2 x 333^3 + 0 x 323^2 + 1 x 313^1 + 2 x 303^0 = 59dec59_{dec}

  • 欲轉換十進制到十進制:
    5987ternery5987_{ternery} = 5 x 10310^3 + 9 x 10210^2 + 8 x 10110^1 + 7 x 10010^0 = 5987dec5987_{dec}

  • 欲轉換十進制到平衡三進制需要兩個步驟:
    1.轉換十進位到三進位數值
    2.轉換三進位到平衡三進位數值

轉換十進位到三進位

  • 欲轉換十進位到三進位的方式和二進位一樣,透過除法依序取得餘數,以下將以 332 為例:

    332 = 110 x 3 + 2 110 = 36 x 3 + 2 36 = 12 x 3 + 0 12 = 4 x 3 + 0 4 = 1 x 3 + 1 1 = 0 x 3 + 1

    所以 332dec332_{dec} 轉為三進制後就會是 110022ternery110022_{ternery}

轉換三進位到平衡三進位數值

  • 由於平衡三進位的最高與最低有效位元是相反的,所以必須先將數值顛倒過來: 110022 -> 220011
  • 因為平衡三進制中 2 是用 T1 表示,也就是說轉換時僅需在有 2 的位數加 1 再進位即可:
220011
11    +
-------
T01011
  • 所以最終 332 的平衡三進位表示就是 T01011
  • 至於負整數的轉換一樣,不過一開始先將負號移除做轉換,轉換完後再將所有位數的 1 或 T 互換即可,也就是說 -332 的平衡三進位表示會是 10T0TT

IOTA Tryte 字母系統

  • IOTA 使用平衡三進位系統
  • 為了方便一般人閱讀, IOTA 開發團隊建立了 tryte 字母系統:9ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • Tryte 字母系統包含 26 個拉丁字母再加上數字 9,總共 27 個字母。
  • 因為 1 tryte 333^3 = 27 種組合,每個 tryte 都能夠代表一個字母。
Tryte 十進位 字母 Tryte 十進位 字母
000 0 9
100 1 A TTT -13 N
T10 2 B 0TT -12 O
010 3 C 1TT -11 P
110 4 D T0T -10 Q
TT1 5 E 00T -9 R
0T1 6 F 10T -8 S
1T1 7 G T1T -7 T
T01 8 H 01T -6 U
001 9 I 11T -5 V
101 10 J TT0 -4 W
T11 11 K 0T0 -3 X
011 12 L 1T0 -2 Y
111 13 M T00 -1 Z
  • IOTA 種子、地址、hashes 等等都是用 tryte 字母系統來顯示 tryte
  • 舉例來說整數 -115 轉換成 tryte 就是 T1TTT0 再將 trytes 轉換成 tryte 字母: T1T = T TT0 = W 所以整數 -115 轉換成 tryte 就會是 TW
  • 「Zoo」此單字轉換成 trytes 就會像是:ICCDCD Z 在 ASCII 的數值為 90 然後轉換成 trytes: 001010 = IC o 在 ASCII 的數值為 111 然後轉換成 trytes: 010110 = CD

IOTA 種子

  • IOTA 種子包含 81 個字符等同於 81 trytes
  • 舉例來說像是:C9RQFODNSAEOZVZKEYNVZDHYUJSA9QQRCUJVBJD9KHAKPTAKZSNNKLJHE FFVK9AWVDAUJRYYKHGWQIAWF
  • 每個 tryte 有 27 種組合,也就是說 IOTA 種子有 278127^{81} = ~8.71 x 1011510^{115} 種組合
  • 全宇宙原子總數約為 ~108010^{80}
  • 比特幣則為 22562^{256} = ~1.15 x 107710^{77} 種組合
  • 地球上沙粒的總數約為 ~102010^{20}

results matching ""

    No results matching ""