[閒聊] IOTA 不要重複使用已經 spent 的地址
一張圖解釋一切:
https://i.imgur.com/3oejD6v.jpg
每個人都有一個 Seed,透過這個 seed,我們可以產出很多的地址:
IOTA(seed).generate_address(index=0) -> YVXKJLKAJLAJ9KA....
IOTA(seed).generate_address(index=1) -> UVMQMZOQL9LKJ9G....
每個地址都可以接收或是轉帳出去。
今天如果你要發起一筆交易,假設 10 IOTA 好了,
你的各個地址所擁有的 IOTA 如下:
index 0: 5 IOTA
index 1: 3 IOTA
index 2: 5 IOTA
index 3: 0 IOTA
發起交易的時候,程式會先從你的 seed 中產出一個段落的地址,
例如說 index 0 ~ 10 的地址。接者把這些地址丟去 node 查詢餘額。
知道餘額後,程式會依序走過這些餘額,並且把對應的地址存起來等等使用。
收集好之後,像這次例子的地址,會用到這些:
index 0
index 1
index 2
總和 13 IOTA,多出來的 3 IOTA 就會從 index 2 的地址轉到下一個可用地址中。
也就是 Bundle,不過這邊不具體講 bundle 如何,總之交易看起來就像這樣:
index 0 + index 1 + index 2 -> target address
index 2 (餘額) -> index 3
取得上面的 bundle 後,IOTA 會進行簽署的步驟。
這裡就是為什麼不能夠重複使用已經 spent 出去的地址的原因。
因為 IOTA 使用的是一種叫做 Winternitz One-Time Signatures (WOTS) 的簽署方式,
為什麼要採用什麼鬼 WOTS 來簽署,而不是傳統的 RSA 之類的方式呢?
因為,據信,當量子電腦出現的時候,RSA 這種形態的加密方式 hen 容易就會被破解,
而 One-Time Signatures 可以抵禦量子電腦的攻擊。
在 IOTA 裡面要如何透過 seed 產生出簽署的 key 呢?
大概就是這樣:
k = iota.crypto.signing.KeyGenerator(seed)
for addr in addrs:
priv_key = k.get_key_for(addr)
priv_key.sign_input_transactions(bundle, addr.index)
key 是透過地址去產生出來的!
key 是透過地址去產生出來的!
key 是透過地址去產生出來的! (hen 重要)
不過有一好就會有差的地方。如他的名字所言,每個 key 只能夠簽署一次,簽署多次的話
會讓這個簽署被破解的機率提高。
回到最上面的小豬圖,經過前面的解釋你應該就可以看懂小豬圖了。
你可以無限次數的把 IOTA 放入小豬 (地址) 當中,
但是當你把 IOTA 移出小豬的時候,你就會打破他,
也因此,你就不應該在使用這個小豬了。
但是,解釋起來太麻煩,所以直接跟各位說,
地址用過就不要在使用。
TL;DR: 其實這是有前提的,沒花用前都可以使用,有轉出就不能再次使用。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.63.78
※ 文章網址: https://www.ptt.cc/bbs/DigiCurrency/M.1511284663.A.8AE.html
推
11/22 01:21,
7年前
, 1F
11/22 01:21, 1F
推
11/22 01:23,
7年前
, 2F
11/22 01:23, 2F
推
11/22 01:25,
7年前
, 3F
11/22 01:25, 3F
→
11/22 01:26,
7年前
, 4F
11/22 01:26, 4F
推
11/22 01:35,
7年前
, 5F
11/22 01:35, 5F
推
11/22 01:37,
7年前
, 6F
11/22 01:37, 6F
推
11/22 09:54,
7年前
, 7F
11/22 09:54, 7F
→
11/22 10:56,
7年前
, 8F
11/22 10:56, 8F
可以啊,只是不安全。
轉出的時候會再次簽名,簽越多次安全性越低。
※ 編輯: grapherd (114.137.70.193), 11/22/2017 12:09:27
推
11/22 13:44,
7年前
, 9F
11/22 13:44, 9F
→
11/22 13:44,
7年前
, 10F
11/22 13:44, 10F
Bitcon 是使用 ECDSA 來簽署,也就是橢圓曲線加密法,是一種非對稱式加密,其 public key 本來就會公開。
非對稱式加密無法從 public key 推導出 private key,而且 ECC 是目前地表最強的非對稱加密演算法,
因此公開 Bitcoin address 然後重複使用沒啥大問題,前提是你的 private key 都保存的很好的話。
IOTA 的話,因為使用 Winternitz One-time signature,先天的 scheme 迫使一組 private key 只能使用一次。
用越多次風險越高。至於怎麼樣的風險....我還在研究XD
※ 編輯: grapherd (140.113.63.78), 11/22/2017 15:37:02
→
11/22 15:42,
7年前
, 11F
11/22 15:42, 11F
→
11/22 15:43,
7年前
, 12F
11/22 15:43, 12F
→
11/22 15:44,
7年前
, 13F
11/22 15:44, 13F
→
11/22 15:44,
7年前
, 14F
11/22 15:44, 14F
→
11/22 15:44,
7年前
, 15F
11/22 15:44, 15F
→
11/22 15:45,
7年前
, 16F
11/22 15:45, 16F
→
11/22 15:45,
7年前
, 17F
11/22 15:45, 17F
→
11/22 15:46,
7年前
, 18F
11/22 15:46, 18F
→
11/22 15:46,
7年前
, 19F
11/22 15:46, 19F
理解。
※ 編輯: grapherd (140.113.63.78), 11/22/2017 16:36:44
推
11/22 21:58,
7年前
, 20F
11/22 21:58, 20F
→
11/22 21:58,
7年前
, 21F
11/22 21:58, 21F
推
11/23 16:43,
7年前
, 22F
11/23 16:43, 22F
推
11/29 13:55,
7年前
, 23F
11/29 13:55, 23F
DigiCurrency 近期熱門文章
PTT數位生活區 即時熱門文章