polygon鏈(matic)矩陣公排智慧合約系統開發詳細介紹

nice1022發表於2023-02-20

       MaticNetwork現在更名為Polygon。Matic Network是一個第二層可擴充套件平臺,可以實現快速、簡單、安全的線下交易,不僅可以支付交易,還可以實現廣義的鏈外智慧合約。Matic Network是以太坊生態系統的重要貢獻者,致力於實現等離子MVP(最低執行等離子)。WalletConnect協議和以太坊事件提醒引擎——Dagger做出了突出貢獻。自動令牌用於股權下注,並參與側鏈網路的證明共識機制。

Matic是基於以太坊發行的ERC 20執行標準,專案開發I34-合約I633-部署53I9,我們也可以把它看成Polygon的鏈上代幣。目前,Polygon每年對驗證者和授權者的註冊獎勵約為12%。雖然這兩個實體都沒有最低股份,但驗證者必須有足夠的Polygon才能進入前100名,且所有Polygon代幣都將被鎖定21天,如果驗證者行為不當,則會被剔除。

Polygon提供了一個通用框架,允許開發人員利用以太坊安全性建立定製的,專注應用程式的鏈,並提供一個可互操作的網路,將各種不同的擴充套件解決方案連結在一起,例如zkrollup,op-rollup和側鏈等,可玩性高。


1. 矩陣的對角線

   我們先定義矩陣的 對角線(diagonal)是行標等於列標的所有矩陣元( ),稱為對角元(diagonal element),左上角的對角元是第一個。對角線的概念常在討論方陣時使用,但嚴格來說也適用於長方形矩陣。方陣從右上角到左下角的所有矩陣元則稱為 反對角線(anti-diagonal)。另外,把對角線向上或向下平移一個元素也稱為 副對角線(subdiagonal),所以對角線也稱為 主對角線(main diagonal)

圖 1:左:方陣的對角線(實線)和副對角線(虛線),右:方陣的反對角線

2. 矩陣的轉置

   則任意矩陣  A A 的 轉置(transpose)記為  A T AT。轉置操作把  A A 的第  i i 行變為  A T AT 的第  i i 列,相當於把矩陣沿對角線翻轉。即任意矩陣元滿足

A T i j = A j i (1) (1)AijT=Aji

注意轉置操作不影響對角線上的矩陣元。另外行向量轉置後變為列向量,反之亦然。

( x 1 x 2 x n ) T = ⎜ ⎜ ⎜ ⎜ x 1 x 2 x n ⎟ ⎟ ⎟ ⎟ (2) (2)(x1x2…xn)T=(x1x2⋮xn)

為了排版方便,本書在正文中通常用  ( x 1 x 2 x n ) T (x1x2…xn)T  表示列向量。

3. 矩陣的乘法

   矩陣最常見的運算是矩陣的乘法。矩陣乘法表示從  ( x 1 , , x n ) R n (x1,…,xn)∈Rn 到  ( y 1 , , y m ) R m (y1,…,ym)∈Rm 的線性對映

⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ y 1 = A 11 x 1 + A 12 x 2 + + A 1 n x n y 2 = A 21 x 1 + A 22 x 2 + + A 2 n x n y m = A m 1 x 1 + A m 2 x 2 + + A m n x n (3) (3){y1=A11x1+A12x2+…+A1nxny2=A21x1+A22x2+…+A2nxn⋮ym=Am1x1+Am2x2+…+Amnxn

可用矩陣與列向量的乘法表示為(有時候也會用方括號表示矩陣和向量)

⎜ ⎜ ⎜ ⎜ y 1 y 2 y m ⎟ ⎟ ⎟ ⎟ = ⎜ ⎜ ⎜ ⎜ ⎜ A 11 A 12 A 1 n A 21 A 22 A 2 n A m 1 A m 2 A m n ⎟ ⎟ ⎟ ⎟ ⎟ ⎜ ⎜ ⎜ ⎜ x 1 x 2 x n ⎟ ⎟ ⎟ ⎟ (4) (4)(y1y2⋮ym)=(A11A12…A1nA21A22…A2n⋮⋮⋱⋮Am1Am2…Amn)(x1x2⋮xn)

   令列向量  x = ( x 1 x n ) T x=(x1…xn)T,  y = ( y 1 y 2 y n ) T y=(y1y2…yn)T,係數矩陣為  A A,上式可記為

y = A x (5) (5)y=Ax

注意  A A  的列數必須和  x x  的行數相等。由此可以定義 矩陣乘以列向量 的運算規則: m × n m×n  矩陣乘以  n × 1 n×1  列向量會得到  m × 1 m×1  的列向量。要計算  y i yi ,就用  m × n m×n  矩陣的第  i i  行的  n n  個數和  x 1 x n x1…xn  分別相乘再相加(即內積

y i = n j = 1 A i j x j (6) (6)yi=∑j=1nAijxj

若有  l l  個不同的  x x  和  y y ,第  k k  個記為  x k = ( x 1 k x n k ) T xk=(x1k…xnk)T  和  y k = ( y 1 k y m k ) T yk=(y1k…ymk)T ,對應的變換為

⎜ ⎜ ⎜ ⎜ y 1 k y 2 k y m k ⎟ ⎟ ⎟ ⎟ = ⎜ ⎜ ⎜ ⎜ ⎜ A 11 A 12 A 1 n A 21 A 22 A 2 n A m 1 A m 2 A m n ⎟ ⎟ ⎟ ⎟ ⎟ ⎜ ⎜ ⎜ ⎜ x 1 k x 2 k x n k ⎟ ⎟ ⎟ ⎟ (7) (7)(y1ky2k⋮ymk)=(A11A12…A1nA21A22…A2n⋮⋮⋱⋮Am1Am2…Amn)(x1kx2k⋮xnk)

可以將所有的  x k xk  和  y k yk  分別橫向拼成  n × l n×l  和  m × l m×l  的矩陣

X = ⎜ ⎜ x 11 x 1 l x n 1 x n l ⎟ ⎟ Y = ⎜ ⎜ y 11 y 1 l y m 1 y m l ⎟ ⎟ (8) (8)X=(x11⋯x1l⋮⋱⋮xn1⋯xnl)Y=(y11⋯y1l⋮⋱⋮ym1⋯yml)

現在把  l l  組線性變換用一條式子表示為

⎜ ⎜ y 11 y 1 l y m 1 y m l ⎟ ⎟ = ⎜ ⎜ A 11 A 1 n A m 1 A m n ⎟ ⎟ ⎜ ⎜ x 11 x 1 l x n 1 x n l ⎟ ⎟ (9) (9)(y11⋯y1l⋮⋱⋮ym1⋯yml)=(A11⋯A1n⋮⋱⋮Am1⋯Amn)(x11⋯x1l⋮⋱⋮xn1⋯xnl)

由此,可以定義一般的矩陣乘法: m × n m×n  的矩陣  A A  和  n × l n×l  的矩陣  X X  相乘得到  m × l m×l  的矩陣  Y Y ,  Y i j Yij  等於  A A  的第  i i  行和  X X  的第  j j  列內積。

Y = A X (10) (10)Y=AX

矩陣元公式為

Y i j = n k = 1 A i k X k j (11) (11)Yij=∑k=1nAikXkj

再次注意兩個相乘的矩陣,左邊矩陣的列數必須等於右邊矩陣的行數。我們可以用 來記憶矩陣乘法。

圖 2:矩陣乘法的示意圖: C C 的  ( i , j ) (i,j) 矩陣元等於  A A 的第  i i 行和  B B 的第  j j 列逐個元素相乘再相加

4. 矩陣乘法沒有交換律

   請注意矩陣一般 沒有“乘法交換律”,即一般情況下  A B B A AB≠BA。舉一個例子:

( 1 1 0 0 ) ( 1 0 1 0 ) = ( 2 0 0 0 ) ( 1 1 1 1 ) = ( 1 0 1 0 ) ( 1 1 0 0 ) (12) (12)(1100)(1010)=(2000)≠(1111)=(1010)(1100)

5. 矩陣的乘法分配律

   矩陣的乘法滿足分配律

A ( B + C ) = A B + A C (13) (13)A(B+C)=AB+AC

( A + B ) C = A C + B C (14) (14)(A+B)C=AC+BC

左邊等於矩陣  D D ,則其矩陣元為

D i j = k A i k ( B k j + C k j ) (15) (15)Dij=∑kAik(Bkj+Ckj)

拆括號得

D i j = k A i k B k j + k A i k C k j (16) (16)Dij=∑kAikBkj+∑kAikCkj

而這恰好是  A B + A C AB+AC  的矩陣元。證畢。 的證明類似。

   現在我們可以得出線性變換( )的一個重要性質。對若干列向量  v 1 , v 2 , v1,v2,…

A ( i c i v i ) = i c i A v i (17) (17)A(∑icivi)=∑iciAvi

也就是說若干列向量的線性組合的線性變換等於每個列向量分別進行線性變換再進行同樣的線性組合。

6. 矩陣乘法的結合律

   我們希望證明三個矩陣的乘法滿足結合律

A ( B C ) = ( A B ) C (18) (18)A(BC)=(AB)C

D = A ( B C ) (19) (19)D=A(BC)

D D  的矩陣元為

D i j = l A i l ( B C ) l j = l A i l ( k B l k C k j ) (20) (20)Dij=∑lAil(BC)lj=∑lAil(∑kBlkCkj)

拆括號,得

D i j = k l ( A i l B l k C k j ) (21) (21)Dij=∑k∑l(AilBlkCkj)

對  C k j Ckj  進行合併同類項,得

D i j = k ( l A i l B l k ) C k j (22) (22)Dij=∑k(∑lAilBlk)Ckj

括號中恰好是  A A  乘以  B B  所得矩陣的矩陣元  ( A B ) i k (AB)ik  所以

D i j = k ( A B ) i k C k j (23) (23)Dij=∑k(AB)ikCkj

D = ( A B ) C (24) (24)D=(AB)C

證畢。

7. 矩陣的等式性質

   若  A = B A=B,那麼  A C = B C AC=BC,或  C A = C B CA=CB

   但是除非  C C 可逆,否則 該結論反之不成立 A C = B C AC=BC 推不出  A = B A=B

   推論:若  A B = O AB=O (零矩陣),也不能推出  A = O A=O 或  B = O B=O

8. 單位矩陣

    單位矩陣(unit matrix)是對角線上的元素全為 1,非對角線上的元素全為 0 的方陣。通常記為通常記為  I I。為了強調矩陣的維數  N N,也可記為  I N IN。單位矩陣的矩陣元可用克羅內克  δ δ 函式( )表示為

I i j = δ i j (25) (25)Iij=δij

   任何矩陣左乘或右乘單位矩陣,仍然得到矩陣本身  I A = A I = A IA=AI=A

   單位矩陣的轉置仍為單位矩陣  I T = I IT=I

9. 對角矩陣

   只有對角線不為零的方陣叫做 對角矩陣(diagonal matrix),只有反對角線不為零的矩陣叫做 反對角矩陣(anti-diagonal matrix)。對角矩陣和反對角矩陣通常是指方陣。

   根據上述矩陣乘法的定義,對角矩陣  Λ Λ 左乘任意矩陣  A A(即  Λ A ΛA)相當於把  A A 陣的第  i i 行乘以  Λ Λ 的第  i i 個對角元;右乘(即  A Λ )相當於把第  j j 列乘以第  j j 個對角元。

10. 逆矩陣

   詳見逆矩陣 。記方陣  M M 的 逆矩陣為  M 1 M−1,且滿足

M 1 M = I (26) (26)M−1M=I

其中  I I  是單位矩陣。也就是說,任意一個矩陣(或列向量) A A  乘以矩陣  M M  再乘以其逆矩陣  M 1 M−1  仍然得到  A A  本身。

   雖然矩陣乘法一般不滿足交換律,但矩陣和對應的逆矩陣滿足 ,即

M M 1 = M 1 M = I (27) (27)MM−1=M−1M=I

   逆矩陣  M 1 M−1 所代表的線性變換就是  M M 代表的線性變換的逆變換,令  x x 和  y y 為列向量,如果有

y = M x (28) (28)y=Mx

那麼我們在等式兩邊左乘  M 1 M−1  再把等式左右互換,則上式變為

x = M 1 y (29) (29)x=M−1y

   要求逆矩陣,一種簡單直接但低效的方法就是先令  y = ( 1   0   ) T y=(1 0 …)T,代入  解線性方程組得  x x,將  x , y x,y 代入 可知  x x 就是  M M 的第一列,再令  y = ( 0   1   0   ) T y=(0 1 0 …)T,解線性方程組可得  M M 的第二列,以此類推就可以得到完整的  M M

11. 逆矩陣與轉置矩陣的運算律

    ( A B ) 1 = B 1 A 1 (AB)−1=B−1A−1

    ( A B ) T = B T A T



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011332/viewspace-2936049/,如需轉載,請註明出處,否則將追究法律責任。

相關文章