当前位置:   article > 正文

论文分享 | UL-blockDAG: 基于无监督学习的图区块链共识协议

论文分享 | UL-blockDAG: 基于无监督学习的图区块链共识协议

现有研究将图区块链划分为主链型(收敛)、并行型(平行)、朴素型(发散),分享一篇发表于2020年ICDCS会议的论文,它将无监督学习应用在朴素型图区块链中,通过二分类来区分忠诚算力和恶意算力,输出忠诚算力产生的区块作为共识结果。

论文摘要

这篇论文提出了一个针对图区块链的共识协议,通过两阶段策略使得系统能够抵御分布式账本下的双重花费攻击。第一步是利用谱图论中的谱聚类算法来区分忠诚矿工和恶意矿工产生的区块,第二步是根据引用关系设计排序算法作用于忠诚区块集合中输出共识结果。其中,谱聚类算法是一种无监督学习,它能将图中的点集划分为两类,仿真结果表明这种分类可以有效消除攻击者进行双花策略的举动。

1 背景介绍

比特币协议将区块以单链方式进行组织,每个区块引用当前链最新的区块,并通过最长链原则引导矿工行为,工作量证明的计算令每个区块的平均产生时间间隔为10分钟,尽管这些要求能够成功对抗双花攻击,但是带来的系统性能却是十分受限。

这篇论文提出的共识协议针对图结构区块链,允许矿工创建的新区块任意地引用所有前置区块从而形成有向无环图,其结构类似于SpectrePhantom方案。协议主要分为两步:第一步是抽象有向无环图并应用谱聚类算法,将连接不够紧密的区块排除,从而识别出不遵守协议的恶意攻击者;第二步是将聚集程度高的点集当作忠诚矿工生成的区块,根据其引用关系和确定性规则产生排序结果。

这篇论文的思路与Spectre和Phantom相似,但是采用了不同的聚类算法对图进行划分,如何将谱聚类作用于区块链场景下的有向无环图是一个比较令人感兴趣的问题。

2 系统模型

系统运行在一个点对点的公开网络中,与常见的朴素型图区块链有相同的结构和构建方法。矿工创建和收到的区块会广播给它的邻居以尽可能地实现网络同步,在创建新区块时矿工会引用它当前已知的所有最新的叶子区块以增加其确认的概率。

给定一个有向无环图,系统首先简化将其转变为无向图,主要关注图中区块之间的聚集程度,然后直接调用如下的谱图聚类算法输出集合划分。

3 无监督的谱图聚类

3.1 图表示

G = ( V , E ) G=(V,E) G=(V,E) 表示一个图,其中点集合 V = { v 1 , . . . , v n } V=\{v_1,...,v_n\} V={v1,...,vn} 表示图中有 n n n 个区块。每两个点 v i v_i vi v j v_j vj 之间有一个非负的权重值 w i j ≥ 0 w_{ij} \geq 0 wij0 。在图区块链中,任意边的权重值都简化为1,如果区块 i i i 引用了区块 j j j ,则 w i j = 1 w_{ij}=1 wij=1 ,否则 w i j = 0 w_{ij}=0 wij=0 。由于 G G G 是无向图,有 w i j = w j i w_{ij}=w_{ji} wij=wji

根据图中边的权重,得到邻接矩阵 W = ( w i j ) i , j = 1 , . . . , n W=(w_{ij})_{i,j=1,...,n} W=(wij)i,j=1,...,n ,区块 i i i 所表示的点在图中的出度定义为 d i = ∑ j = 1 n w i j d_i = \sum^n_{j=1}w_{ij} di=j=1nwij ,矩阵 D D D 被定义为由点的度 d 1 , . . . , d n d_1,...,d_n d1,...,dn 组成的对角矩阵。

举个例子,有区块1为创世区块,区块2、区块3和区块4都引用了区块1,而区块5引用了区块2和区块3,构建的有向无环图如图1所示:

图1 DAG区块链结构示例

图1 DAG区块链结构示例

图的邻接矩阵 W W W 为:

[ 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 ]

[011001100110100110011000011000100000]
011001100110100110011000011000100000

对应的度矩阵 D D D 为:

[ 3 0 0 0 0 0 0 3 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 1 ]

[300000030000003000000200000020000001]
300000030000003000000200000020000001

给定一个区块子集 A ⊂ V A \subset V AV ,用符号 A ‾ \overline{A} A 表示其补集 V / A V/A V/A 。定义一个指标向量 1 A = ( f 1 , . . . , f n ) ′ ∈ R n \mathbb{1}_A = (f_1,...,f_n)' \in \mathbb{R}^n 1A=(f1,...,fn)Rn ,其中如果区块属于集合 v i ∈ A v_i \in A viA ,那么 f i = 1 f_i=1 fi=1 ,否则 f i = 0 f_i=0 fi=0 。为方便表示,直接用符号 i ∈ A i \in A iA 来表示图中的区块,即点集 { i ∣ v i ∈ A } \{i|v_i \in A\} {iviA}

对于两个不相交的集合 A , B ∈ V A,B \in V A,BV ,有 $A \cap B = \emptyset $,定义子集之间的连接权重 W ( A , B ) = ∑ i ∈ A , j ∈ B w i j W(A,B)= \sum_{i \in A,j \in B}w_{ij} W(A,B)=iA,jBwij ∣ A ∣ |A| A 表示集合 A A A 中区块的数量, v o l ( A ) = ∑ i ∈ A d i vol(A)= \sum_{i \in A}d_i vol(A)=iAdi 表示集合 A A A 的容量,即所有区块在图中度的总和。

3.2 拉普拉斯矩阵

定义一般拉普拉斯矩阵 L = D − W L=D-W L=DW ,还有规范化的拉普拉斯矩阵,由于比较复杂且没有应用在本论文中,因此不做过多介绍。

在上述例子中可以得到矩阵如下:

[ 3 − 1 − 1 0 0 − 1 − 1 3 0 − 1 − 1 0 − 1 0 3 − 1 − 1 0 0 − 1 − 1 2 0 0 0 − 1 − 1 0 2 0 − 1 0 0 0 0 1 ]

[311001130110103110011200011020100001]
311001130110103110011200011020100001

矩阵 L L L 满足如下属性:

  1. 对于任意向量 f ∈ R n f \in \mathbb{R}^n fRn ,有 f ′ L f = 1 2 ∑ i , j = 1 n w i , j ( f i − f j ) 2 f'Lf=\frac{1}{2}\sum^n_{i,j=1}w_{i,j}(f_i-f_j)^2 fLf=21i,j=1nwi,j(fifj)2
  2. 矩阵 L L L 是对称的且半正定的。
  3. 矩阵 L L L 的最小特征值为0,对应的特征向量为常数指标向量 1 \mathbb{1} 1
  4. 矩阵 L L L n n n 个非负且实数的特征值 0 = λ 1 ≤ λ 2 ≤ . . . ≤ λ n 0= \lambda_1 \leq \lambda_2 \leq ... \leq \lambda_n 0=λ1λ2...λn

给出证明如下:

  1. 根据 d i d_i di 的定义,有

f ′ L f = f ′ D f − f ′ W f = ∑ i = 1 n d i f i 2 − ∑ i = 1 n f i f j w i j = 1 2 ( ∑ i = 1 n d i f i 2 − 2 ∑ i , j = 1 n f i f j w i j + ∑ j = 1 n d j f j 2 ) = 1 2 ∑ i , j = 1 n w i , j ( f i − f j ) 2

fLf=fDffWf=i=1ndifi2i=1nfifjwij=12(i=1ndifi22i,j=1nfifjwij+j=1ndjfj2)=12i,j=1nwi,j(fifj)2
fLf=fDffWf=i=1ndifi2i=1nfifjwij=21(i=1ndifi22i,j=1nfifjwij+j=1ndjfj2)=21i,j=1nwi,j(fifj)2

  1. 矩阵 L L L 的对称性是由于矩阵 D D D 和矩阵 W W W 都是对称的,而半正定性则直接从第一部分的证明得出,对于所有 f ∈ R n f \in \mathbb{R}^n fRn ,有 f ′ L f ≥ 0 f'Lf \geq 0 fLf0
  2. 根据 d i = ∑ j = 1 n w i j d_i = \sum^n_{j=1}w_{ij} di=j=1nwij ,矩阵 L L L 最小特征值为0,对应特征向量为 1 \mathbb{1} 1 显然成立。
  3. 这一属性可直接从上述三个结果中直接推导得出。

3.3 谱聚类算法

最常见的谱聚类算法假设数据由 n n n 个点组成,即 x 1 , . . . , x n x_1,...,x_n x1,...,xn ,任意两个数据点之间有一个相似度 s i j = s ( x i , x j ) s_{ij}=s(x_i,x_j) sij=s(xi,xj) ,要求相似函数是对称且非负的,因此可以构成一个相似度矩阵 S = ( s i j ) i , j = 1 , . . . , n S=(s_{ij})_{i,j=1,...,n} S=(sij)i,j=1,...,n 。上述对无向图 G G G 的邻接矩阵 W W W 可直接作为数据集合的相似度矩阵,谱聚类算法如下:


输入:

  • 相似度矩阵 S ∈ R n × n S \in \mathbb{R}^{n \times n} SRn×n
  • 聚类的数量 k k k
  1. 根据相似度矩阵 S S S 构建的图计算对应的度矩阵 D D D
  2. 计算一般拉普拉斯矩阵 L = D − S L=D-S L=DS
  3. 计算矩阵 L L L 的前 k k k 个特征向量 u 1 , . . . , u k u_1,...,u_k u1,...,uk
  4. 令矩阵 U ∈ R n × k U \in \mathbb{R}^{n \times k} URn×k 由特征向量 u 1 , . . . , u k u_1,...,u_k u1,...,uk 作为列组成。
  5. 对于 i = 1 , . . . , n i=1,...,n i=1,...,n ,令 y i ∈ R k y_i \in \mathbb{R}^k yiRk 对应为矩阵 U U U i i i 行组成的向量。
  6. ( y i ) i = 1 , . . . , n (y_i)_{i=1,...,n} (yi)i=1,...,n 作为新的点,执行k-means算法将其划分为 C 1 , . . . , C k C_1,...,C_k C1,...,Ck 集合。

输出:

  • 集合 A 1 , . . . A k A_1,...A_k A1,...Ak ,其中 A i = { j ∣ y j ∈ C i } A_i=\{j|y_j \in C_i\} Ai={jyjCi}

在上述算法中,一个关键技巧就是将抽象数据点 x i x_i xi ,通过构建拉普拉斯矩阵,计算特征向量转换成点 y i ∈ R k y_i \in \mathbb{R}^k yiRk 作为新的表示。

3.4 图切割

给定 k k k 个数量的子集,对图的最小割是选择一个划分 A 1 , . . . , A k A_1,...,A_k A1,...,Ak ,令割的值最小:

c u t ( A 1 , . . . , A k ) = 1 2 ∑ i = 1 k W ( A i , A i ‾ )

cut(A1,...,Ak)=12i=1kW(Ai,Ai¯)
cut(A1,...,Ak)=21i=1kW(Ai,Ai)

定义一种比率割,计算一个图中点的数量为 ∣ A ∣ |A| A ,计算如下:

R a t i o C u t ( A 1 , . . . , A k ) = 1 2 ∑ i = 1 k W ( A i , A i ‾ ) ∣ A i ∣ = ∑ i = 1 k c u t ( A i , A i ‾ ) ∣ A i ∣

RatioCut(A1,...,Ak)=12i=1kW(Ai,Ai¯)|Ai|=i=1kcut(Ai,Ai¯)|Ai|
RatioCut(A1,...,Ak)=21i=1kAiW(Ai,Ai)=i=1kAicut(Ai,Ai)

考虑聚类数量 k = 2 k=2 k=2 时对图进行切割,对任意 k k k 值进行聚类不在本文介绍范围内,可阅读谱聚类教程。本文的目标是离谱谱聚类做二分类,区分图区块链中的恶意区块,需要解决如下最优化问题:

min ⁡ A ⊂ V R a t i o C u t ( A , A ‾ )

minAVRatioCut(A,A¯)
AVminRatioCut(A,A)

对于给定的子集 A ⊂ U A \subset U AU ,定义向量 f = ( f 1 , . . . , f n ) ′ ∈ R n f=(f_1,...,f_n)' \in \mathbb{R}^n f=(f1,...,fn)Rn ,满足:

f i = { ∣ A ‾ ∣ / ∣ A ∣ , v i ∈ A − ∣ A ∣ / ∣ A ‾ ∣ , v i ∈ A ‾ f_i = \left\{

|A¯|/|A|,viA|A|/|A¯|,viA¯
\right. fi= A∣/∣A A∣/∣A ,viA,viA

于是,上述这种比率割的目标函数可以用拉普拉斯矩阵进行重写,计算如下:

f ′ L f = 1 2 ∑ i , j = 1 n w i j ( f i − f j ) 2 = 1 2 ∑ i ∈ A , j ∈ A ‾ w i j ( ∣ A ‾ ∣ ∣ A ∣ + ∣ A ∣ ∣ A ‾ ∣ ) 2 + 1 2 ∑ i ∈ A ‾ , j ∈ A w i j ( − ∣ A ‾ ∣ ∣ A ∣ − ∣ A ∣ ∣ A ‾ ∣ ) 2 = c u t ( A , A ‾ ) ( ∣ A ‾ ∣ ∣ A ∣ + ∣ A ∣ ∣ A ‾ ∣ + 2 ) = c u t ( A , A ‾ ) ( ∣ A ∣ + ∣ A ‾ ∣ ∣ A ∣ + ∣ A ∣ + ∣ A ‾ ∣ ∣ A ‾ ∣ ) = ∣ V ∣ ⋅ R a t i o C u t ( A , A ‾ )

fLf=12i,j=1nwij(fifj)2=12iA,jA¯wij(|A¯||A|+|A||A¯|)2+12iA¯,jAwij(|A¯||A||A||A¯|)2=cut(A,A¯)(|A¯||A|+|A||A¯|+2)=cut(A,A¯)(|A|+|A¯||A|+|A|+|A¯||A¯|)=|V|RatioCut(A,A¯)
fLf=21i,j=1nwij(fifj)2=21iA,jAwij AA +AA 2+21iA,jAwij AA AA 2=cut(A,A)(AA+AA+2)=cut(A,A)(AA+A+AA+A)=VRatioCut(A,A)

此外,对向量 f f f 求和有:

∑ i n f i = ∑ i ∈ A ∣ A ‾ ∣ ∣ A ∣ − ∑ i ∈ A ‾ ∣ A ∣ ∣ A ‾ ∣ = ∣ A ∣ ∣ A ‾ ∣ ∣ A ∣ − A ‾ ∣ A ∣ ∣ A ‾ ∣ = 0

infi=iA|A¯||A|iA¯|A||A¯|=|A||A¯||A|A¯|A||A¯|=0
infi=iAAA iAAA =AAA AAA =0

也就是说,向量 f f f 是正交于常数向量 1 \mathbb{1} 1 ,且满足二阶范式如下:

∣ ∣ f ∣ ∣ 2 = ∑ i = 1 n f i 2 = ∣ A ∣ ∣ A ‾ ∣ ∣ A ∣ + A ‾ ∣ A ∣ ∣ A ‾ ∣ = A ‾ + ∣ A ∣ = n

||f||2=i=1nfi2=|A||A¯||A|+A¯|A||A¯|=A¯+|A|=n
∣∣f2=i=1nfi2=AAA+AAA=A+A=n

因此,最小割优化问题等价于:

min ⁡ A ⊂ V f ′ L f s . t . f ⊥ 1 , ∣ ∣ f ∣ ∣ = n

minAVfLfs.t.f1,||f||=n
AVminfLfs.t.f1,∣∣f∣∣=n

根据Rayleigh-Ritz定理,该优化问题的解为矩阵 L L L 的第2小的特征值对应的特征向量(最小的特征值为0,其对应的特征向量为常数指标向量 1 \mathbb{1} 1 )。在得到特征向量 f f f 后,最简单的方式进行划分即将其作为指标函数,计算如下:

{ v i ∈ A , f i ≥ 0 v i ∈ A ‾ , f i < 0 \left\{

viA,fi0viA¯,fi<0
\right. {viAviA,fi0,fi<0

还是上面那个例子,通过程序计算其特征值和特征向量:

import numpy as np  
  
# 给定一个矩阵L  
L = np.array([
    [ 3,-1,-1, 0, 0,-1],  #1
    [-1, 3, 0,-1,-1, 0],  #2
    [-1, 0, 3,-1,-1, 0],  #3
    [ 0,-1,-1, 2, 0, 0],  #4
    [ 0,-1,-1, 0, 2, 0],  #5
    [-1, 0, 0, 0, 0, 1],  #6
    ])

# 使用eig函数计算特征值和特征向量  
eigenvalues, eigenvectors = np.linalg.eig(L)  

eigens = sorted(zip(eigenvalues, eigenvectors), key=lambda pair: pair[0])
value, vector = eigens[1]

print("第2小特征值:\n", value)  
print("对应特征向量:\n", vector)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

第2小的特征值和其对应的特征向量分别是:

第2小特征值:
0.7639320225002101
对应特征向量:
[0.31622777  0.36514837 -0.40824829  0.31622777 -0.70710678 -0.01980052]
  • 1
  • 2
  • 3
  • 4

以0为分割,在特征向量中的值被划分为两个集合,即图中节点的 { 1 , 2 , 4 } \{1,2,4\} {1,2,4} { 3 , 5 , 6 } \{3,5,6\} {3,5,6} ,如图所示:

图2 谱聚类划分示例

图2 谱聚类划分示例

可以观察到,当图的规模比较小时,其区分效果和预想的存在差异,没有Phantom方案中的最大k聚集子图直观,但该方案无需假定每一高度产生的平均区块数量,即聚集系数k,可直接完成二分类。

4 图区块链共识协议

对于图的共识协议分为如下两步:

  1. 采用无监督学习的谱聚类算法,从由区块构建的有向无环图中区分出攻击者创建的区块,即连接程度比较弱的区块。
  2. 根据图中的引用关系,确定由忠诚矿工产生的区块集合,对其进行全局排序。

4.1 有向无环图谱聚类

根据前一章节的内容,给出算法描述如下:


算法1 针对有向无环图的谱聚类

输入:

  • G G G - 有向无环图

输出:

  • C 1 , C 2 C_1,C_2 C1,C2 - 区块集合

函数 f i n d − c l u s t e r ( G ) find-cluster(G) findcluster(G)

  1. C 1 ← { } , C 2 ← { } C_1 \leftarrow \{\}, C_2 \leftarrow \{\} C1{},C2{}
  2. G G G 转换成无向图,并构建邻接矩阵 W W W
  3. 计算对应的度矩阵 D D D
  4. 获得一般拉普拉斯矩阵 L = D − W L=D-W L=DW
  5. 计算矩阵 L L L 的特征向量 f \mathbb{f} f ,其对应着矩阵所有特征值中第2小的特征值
  6. i f   f i ≥ 0   t h e n \mathrm{if} \ \mathbb{f}_i \geq 0 \ \mathrm{then} if fi0 then
  7. \quad 区块 i i i 加入到集合 C 1 C_1 C1
  8. e l s e \mathrm{else} else
  9. \quad 区块 i i i 加入到集合 C 2 C_2 C2
  10. e n d   i f \mathrm{end\ if} end if
  11. r e t u r n   C 1 , C 2 \mathrm{return} \ C_1,C_2 return C1,C2

图3是论文给出的一个针对图区块链的攻击模型示例,区块15由攻击者产生,其中包含了一个与区块3中相冲突的交易。区块0-14由忠诚矿工产生,区块15-17由攻击者私下产生,直到区块18才被广播。因而,区块14引用了区块18。

图3 图区块链攻击模型示例

图3 图区块链攻击模型示例

图4是论文根据算法1作用在上图后的结果,其拉普拉斯矩阵第2小的特征值对应的特征向量,将正负实数映射到集合 { 1 , − 1 } \{1,-1\} {1,1} 中分别表示聚类 C 1 C_1 C1 C 2 C_2 C2 。可以看到区块0-13被划分到了集合 C 1 C_1 C1 ,而攻击者的区块15-19以及区块14被划分到了集合 C 2 C_2 C2

图4 谱聚类算法输出示例

图4 谱聚类算法输出示例

4.2 客户端排序协议

给定一个由区块构成的有向无环图 G t c G_t^c Gtc ,表示客户端 c c c 在时间 t t t 观察的图结构,客户端在创建新区块时应当包含所有已知的图中的叶子区块。同时,存在一个确认数,要求拥有足够确认深度的区块才能被添加到集合 b l u e L i s t blueList blueList 中,该集合构建算法如下:


算法2 输出已确认的区块列表

输入:

  • G t c G_t^c Gtc - 客户端 c c c 在时间 t t t 观察到的图
  • k k k - 满足确认要求的阈值

输出:

  • b l u e L i s t blueList blueList - 已确认的区块集合

函数 f i n d − l i s t ( G t c , k ) find-list(G_t^c,k) findlist(Gtc,k)

  1. b l u e L i s t ← { } blueList \leftarrow \{\} blueList{}
  2. i ← i \leftarrow i G t c G_t^c Gtc 的区块高度
  3. i f   i > k   t h e n \mathrm{if} \ i>k \ \mathrm{then} if i>k then
  4. \quad x ← i − k x \leftarrow i-k xik
  5. e l s e \mathrm{else} else
  6. \quad r e t u r n   { } \mathrm{return} \ \{\} return {}
  7. e n d   i f \mathrm{end\ if} end if
  8. $G_t^c \leftarrow G_t^c $ \ { \{ {区块高度小于 x x x 的区块 } \} }
  9. C 1 , C 2 ← f i n d − c l u s t e r ( G t c ) C_1,C_2 \leftarrow find-cluster(G_t^c) C1,C2findcluster(Gtc)
  10. f o r   B ∈ C 1   d o \mathrm{for} \ B \in C_1 \ \mathrm{do} for BC1 do
  11. \quad b l u e L i s t . a d d ( B ) blueList.add(B) blueList.add(B)
  12. e n d   f o r \mathrm{end\ for} end for
  13. r e t u r n   b l u e L i s t \mathrm{return} \ blueList return blueList

假设确认数为4,图5给出了算法2对区块进行集合划分的过程。当累积到区块高度6时,该方案能确保对区块高度2及之前的区块进行聚类划分,蓝色标记为忠诚节点创建的区块,而红色标记为攻击者创建的区块。

图5 区块聚类和确认过程

图5 区块聚类和确认过程

在标记为蓝色的区块集合中,根据其相互引用关系,附加上确定性的规则,输出最终排序结果。比较简单就不再赘述。

学习笔记

这篇论文的方案算不上很新颖和突出,引起我关注的点在于它引入了机器学习领域的谱聚类算法,这个算法针对关系图进行社区划分有大量的研究,之前没有想过直接应用在图区块链的区块划分中。或许可以再进一步,对图区块链的图结构,归纳一些属性和特点,比较是否有其他的聚类算法能够更好地适应这种图拓扑,以实现稳定且连续的区块划分。最后,附上文献引用和DOI链接:

Reddy S, Sharma G V V. UL-blockDAG: Unsupervised learning based consensus protocol for blockchain[C]//2020 IEEE 40th International Conference on Distributed Computing Systems (ICDCS). IEEE, 2020: 1243-1248.

https://doi.org/10.1109/ICDCS47774.2020.00159

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/799476
推荐阅读
相关标签
  

闽ICP备14008679号