由權重得到的結論:
選交易的算法 , 要選tip且要盡可能不選lazy tip
從這結論可以來判斷怎樣的 要繼續連結 , 怎樣的 要處罰或是斷線
對 來說 , 好的鄰居 行為應該是盡量增加非 的 權重
這裡舉的是 , node的DAG
注意到 , 和
都是 沒有的交易
然後看 , node的DAG
, 不是鄰居
node缺 , ,
node缺 , ,
會發現 與 DAG差異比較大 , 與 DAG差異比較小
但更重要的是 (不考慮 )
node的 是 ,
node的 是 , , ,
node的 是 ,
會發現 與 的 沒有交集
與 的 有交集
從這可以有一個猜測:
相連的
的交集 , 交集元素數量在 的 比例比較高
那就可以推出下面不肯定的結論:
正常鄰居 所發起的交易 , 選取的被驗證交易 , 很大機率是自己 內非 的交易
這是要實驗看看的
不過先假設對 , 來看進一步推論
猜測:
間隔較遠的
的交集在 node的 比例較少
上面有了 , , 的
來看 node的DAG
node的 是 , ,
把 , , , 的 一起看:
: ,
: , ,
: , , ,
: ,
發現跟 沒有交集的 是間隔比較遠的
然後 跟 交集是
最近的 交集是 ,
確實就這模擬 , 間隔較遠的 , 交集的交易也較少
既然鄰居node的 與自己node有很高的重疊
那就可以開始討論與鄰居node保持連線的條件
鄰居node發的交易會有許多情況
因為 是靠 鄰居node 收全部網路上 發起的交易
所以會有沒選取DAG上的交易 , 選 的交易 , 選不是 的交易
這樣的情況 , 就不能要求 鄰居node
大部份送的交易都指到非 的
所以只能用最低的要求來當標準
而這邊就跟白皮書提到 會不會認真工作的描述有關了
白皮書描述:
是甚麼動機促使節點們產生、傳播 (propagate) 交易? 事實上,我們佈署的節點並沒有理由不產生及傳播交易。每個節點會計算一些數據,其中之一是計算會從鄰居接收多少新的交易。如果某個特定節點「太懶惰」,便會被它的鄰居捨棄。所以即使節點並沒有發布任何的交易(也因此沒有分享新的交易來驗證自己交易的動力),他仍然有動機努力工作。
如果某個特定節點「太懶惰」,便會被它的鄰居捨棄。
這句就是說明對於 鄰居node 不送交易 , 會跟 鄰居node 斷連的
白皮書說的是一段時間內 , 完全不發交易的處理
可是就權重章節的討論 , 有發交易還不代表對增加權重是有最大的幫助的
所以最低條件是:
一段時間內 , 至少一筆鄰居node發的交易所選取被驗證的交易 , 必須是node DAG 內非 的
上面推出了最低要求
接下來討論各式應對方法
實際上不合作鄰居node已經可以視為惡意node了
所以手段激烈沒有關係 , 有幾個可選的
最直接了當的方法 , 反正該鄰居node不互相增加彼此交易的權重
基本上有跟沒有是一樣的 , 那就斷連
斷連會少收交易 , 所以 需要紀錄些備用的
上面斷連是完全不收交易的做法
這邊難的PoW題目就是少收交易的做法
那 就不需要紀錄備用的
只是交易確認的效率會變差 , 但可以降低不合作鄰居node的影響
這裡要講講常見的誤解
用礦機之類可以做大量PoW的機器
灌大量交易接到第二大權重的交易
這樣就能輕易篡改帳本了
假設這台礦機是正常node的鄰居
網路拓樸如下:
考慮上面對於 鄰居node 的管理
礦機會在發一段時間的交易後 , 被斷線
所以直連的礦機是難以成功的
為何會被斷線 , 兩個原因
我們知道一個事實:
接收交易每單位時間是有上限的
想像礦機對 發大量的交易
如果要最大的效果 , 就是會把 的網路頻寬都用掉
這樣會讓 有一段時間沒有收到 發來的交易
根據
一段時間內 , 至少一筆鄰居node發的交易所選取被驗證的交易 , 必須是node DAG 內非 的
的要求
會跟 斷線
斷線後的網路拓樸如下:
這樣礦機的交易是無法進入 , 和
如果不管 上的帳本紀錄
這樣 , 和 的帳本 , 衝突內最大交易還是沒變
如果 紀錄衝突交易內 , 不是最大權重交易可以增加交易權重的
可以有下列的方法來防禦這樣的攻擊
不收交易
由零元交易這章
可以得知
不收零元交易
是一種阻擋的方式
但是如果攻擊者弄很多非零元交易 , 還是抵擋不了 , 所以就需要下一點了
要求做難的PoW題目
IOTA的PoW跟比特幣不一樣 , 不需要全網node的hash難度共識
所以可以拿來針對惡意的node
要求做足夠難度的hash格式問題
這樣礦機發的交易就會變少 , 更難超過最大權重
以上只是一種可行的方法 , 不排除有其他方法