Matic 链矩阵公排智能合约挖矿 dapp 系统开发详情(案例演示)
MaticNetwork 现在更名为 Polygon。项目开发 I34-合约 I633-部署 53I9,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. 矩阵的转置
则任意矩阵 AA 的 转置(transpose)记为 A TAT。转置操作把 AA 的第 ii 行变为 A TAT 的第 ii 列,相当于把矩阵沿对角线翻转。即任意矩阵元满足
A Ti 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 ) Tx=(x1…xn)T, y = ( y 1 y 2 … y n ) Ty=(y1y2…yn)T,系数矩阵为 AA,上式可记为
y = A x (5) (5)y=Ax
注意 AA 的列数必须和 xx 的行数相等。由此可以定义 矩阵乘以列矢量 的运算规则: m × nm×n 矩阵乘以 n × 1n×1 列矢量会得到 m × 1m×1 的列矢量。要计算 y iyi ,就用 m × nm×n 矩阵的第 ii 行的 nn 个数和 x 1 … x nx1…xn 分别相乘再相加(即内积 )
y i = n∑j = 1 A i j x j (6) (6)yi=∑j=1nAijxj
若有 ll 个不同的 xx 和 yy ,第 kk 个记为 x k = ( x 1 k … x n k ) Txk=(x1k…xnk)T 和 y k = ( y 1 k … y m k ) Tyk=(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 kxk 和 y kyk 分别横向拼成 n × ln×l 和 m × lm×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)
现在把 ll 组线性变换用一条式子表示为
⎛⎜⎜⎝ 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 × nm×n 的矩阵 AA 和 n × ln×l 的矩阵 XX 相乘得到 m × lm×l 的矩阵 YY , Y i jYij 等于 AA 的第 ii 行和 XX 的第 jj 列内积。
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:矩阵乘法的示意图: CC 的 ( i , j )(i,j) 矩阵元等于 AA 的第 ii 行和 BB 的第 jj 列逐个元素相乘再相加
4. 矩阵乘法没有交换律
请注意矩阵一般 没有“乘法交换律”,即一般情况下 A B ≠ B AAB≠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
令 左边等于矩阵 DD ,则其矩阵元为
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 CAB+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)
DD 的矩阵元为
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 jCkj 进行合并同类项,得
D i j = ∑k ( ∑l A i l B l k ) C k j (22) (22)Dij=∑k(∑lAilBlk)Ckj
括号中恰好是 AA 乘以 BB 所得矩阵的矩阵元 ( 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 = BA=B,那么 A C = B CAC=BC,或 C A = C BCA=CB
但是除非 CC 可逆,否则 该结论反之不成立。 A C = B CAC=BC 推不出 A = BA=B
推论:若 A B = OAB=O (零矩阵),也不能推出 A = OA=O 或 B = OB=O
8. 单位矩阵
单位矩阵(unit matrix)是对角线上的元素全为 1,非对角线上的元素全为 0 的方阵。通常记为通常记为 II。为了强调矩阵的维数 NN,也可记为 I NIN。单位矩阵的矩阵元可用克罗内克 δδ 函数( )表示为
I i j = δ i j (25) (25)Iij=δij
任何矩阵左乘或右乘单位矩阵,仍然得到矩阵本身 I A = A I = AIA=AI=A。
单位矩阵的转置仍为单位矩阵 I T = IIT=I。
9. 对角矩阵
只有对角线不为零的方阵叫做 对角矩阵(diagonal matrix),只有反对角线不为零的矩阵叫做 反对角矩阵(anti-diagonal matrix)。对角矩阵和反对角矩阵通常是指方阵。
根据上述矩阵乘法的定义,对角矩阵 ΛΛ 左乘任意矩阵 AA(即 Λ AΛA)相当于把 AA 阵的第 ii 行乘以 ΛΛ 的第 ii 个对角元;右乘(即 A ΛAΛ)相当于把第 jj 列乘以第 jj 个对角元。
10. 逆矩阵
详见逆矩阵 。记方阵 MM 的 逆矩阵为 M − 1M−1,且满足
M − 1 M = I (26) (26)M−1M=I
其中 II 是单位矩阵。也就是说,任意一个矩阵(或列矢量) AA 乘以矩阵 MM 再乘以其逆矩阵 M − 1M−1 仍然得到 AA 本身。
虽然矩阵乘法一般不满足交换律,但矩阵和对应的逆矩阵满足 ,即
M M − 1 = M − 1 M = I (27) (27)MM−1=M−1M=I
逆矩阵 M − 1M−1 所代表的线性变换就是 MM 代表的线性变换的逆变换,令 xx 和 yy 为列矢量,如果有
y = M x (28) (28)y=Mx
那么我们在等式两边左乘 M − 1M−1 再把等式左右互换,则上式变为
x = M − 1 y (29) (29)x=M−1y
要求逆矩阵,一种简单直接但低效的方法就是先令 y = ( 1 0 … ) Ty=(1 0 …)T,代入 解线性方程组得 xx,将 x , yx,y 代入 可知 xx 就是 MM 的第一列,再令 y = ( 0 1 0 … ) Ty=(0 1 0 …)T,解线性方程组可得 MM 的第二列,以此类推就可以得到完整的 MM。
11. 逆矩阵与转置矩阵的运算律
( A B ) − 1 = B − 1 A − 1(AB)−1=B−1A−1
( A B ) T = B T A T
评论