Try   HackMD

驗證交易的選擇

衝突交易是需要被紀錄與驗證時檢查出來的

紀錄衝突交易是紀錄

bundle hash

不可指向兩筆以上的衝突交易

第一種衝突交易







tangle



b

b



d

d



b->d





a

a



init

init



a->init





d->a





c

c



c->a





e

e



e->d





f

f



f->b





這種一定不能作為 trunk 與 branch

因為會有 address 餘額是負的

第二種衝突交易







tangle



a

c



c

a



a->c





a->c





b

b



b->c





b->c





依照簡介所說的 , 選最大權重相關的 tips

有疑慮的指向

例子是這樣的:

有衝突交易 bundle A 與 bundle B

A 的 output address 是 a

B 的 output address 是 b

假設 address "a" 花錢了 , 花錢的 bundle tip 是 c

新issue的交易 "d" , 可不可以指向 "c" ?

兩個情況

第一種情況

假設bundle B最終是確認 , bundle A 不是確認 , 交易 c 指向(驗證) bundle B
bundle A 不是確認 , 自然 address a 所有的錢就少一筆 , 所以交易 c 的 bundle是無效的(相關交易value和不是0)

示意圖:







init



a

f



c

a



a->c





a->c





b

b



b->c





b->c





e

bundle B



e->a





e->b





d

g



d->a





d->b





31

bundle A



31->d





31->d





21

21



21->e





21->d





41

41



41->e





41->d





32

32



32->21





11

11



32->11





11->e





11->e





22

22



22->21





22->11





42

42



42->31





42->31





12

c



12->21





12->11





78

d



新交易 d 應該要避免驗證交易 c

可是如果 bundle B 確認的門檻低(例如40%) , 容易 node 檢查 bundle B 的確認是有分歧的 , 這樣可能會讓交易 c 對應的bundle是確認的

第二種情況

假設 bundle A 與 bundle B 都還沒確認
這時交易 c 對應的 bundle 加入到 Tangle

那交易 d 要不要驗證交易 c ?

一樣是要避免 bundle B 確認 , 交易 c 的 bundle 也確認

處理辦法

IOTA Consensus Algorithm Introduction 中 , Trunk 與 Branch 要滿足的兩條性質

  1. 所有被指向的交易 , 全部的 address , 餘額不是負的

  2. 所有被指向的交易 , 全部的 address , 餘額加起來是最初的發行量

交易 d 如果選擇交易 c 作為 trunk 或 branch

因為交易 c 沒有指向 bundle A , 所以 address a 的餘額是負的

所以交易 c 是不可以選的

多組衝突交易

如下圖:







init



a

c



c

a



a->c





a->c





b

b



b->c





b->c





e

e



e->a





e->b





d

d



d->a





d->b





21

21



21->e





21->d





11

C1



11->e





11->e





31

C1



31->d





31->d





22

C2



22->21





22->31





12

12



12->21





12->11





32

32



32->21





32->31





41

41



41->e





41->d





23

23



23->22





23->32





13

C3



13->22





13->12





42

C2



42->31





42->41





33

C3



33->22





33->42





紅色的

\colorredC1 ,
\colorredC2
\colorredC3
是三組不同的衝突交易

tags: IOTA