网络与节点2 A7 e2 ^7 s! d2 ~ _
6 u1 m7 ^& n% F- |- M& Z* ~ 区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。% w' J2 s+ p1 K t* J5 {: K
% `$ H- x- F; R1 D! S共识与考量% f } E9 e. F( r1 o: N: U
& t* y2 o+ S \4 f5 e" r3 z- { 网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。* _, z: A1 y9 g% r5 F0 ~) _( x. C1 P( W
$ R/ { y/ _, g0 b, T5 k6 Z
大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?" F- H1 m! H2 ^. X- f# p5 w6 A' j
) f, O5 x) N- U4 @# r8 d
原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。9 v8 c8 v/ E1 H+ D0 M! V, q8 q
" ~/ j* k; p1 a, `3 D- c) N9 k
现有公链的问题5 Y" `/ _/ L1 I; L' c
* D( F# w( S8 C& _
BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。
- j5 g4 Q. Z* a, j0 T' Y
7 S2 h* G6 _/ h2 ?% a+ G BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。' x- C( P/ _& j' h3 _
% y2 [( t# \& l) o( s8 s
EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。& Q& r, o' }2 Q# Z
) ]4 q3 _2 ?6 ~( \( W
可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。; R5 M: h, l3 [
, w1 Z1 P4 }1 N8 V; r: RYOUChain 的愿景( D# ?9 l- H: l
3 ~8 }$ a5 I0 C YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。
; G9 R$ v7 m! R- g2 L& U! X! l& P
6 m( b$ C7 h% \. I- F2 H. s* u7 d" ~1.低性能,速度慢,难以扩展,不是我们想要的
' C0 T$ G) ?( v9 [+ s3 U, G0 Y6 c# O0 Q! _# u' ^1 {! {" C8 b
2.权利高度集中,不是我们想要的( z+ R! d# ~! M/ N9 h4 Z
& `% ]5 C; v" x# q$ D, t7 G3.使用费用高昂,不是我们想要的" ?+ E5 {, C V. U! l6 [ s
% [, ]+ R8 b9 J) u! O
要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。
. Q% S9 n* K6 f3 ~& Y+ r) @2 W' E0 p7 T0 i
某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。% M/ ]# i% P: K5 _3 U3 ]9 Z0 S
1 G4 B7 O6 }( H, ?
思考性能
8 }- n$ G- C4 `- J' R, ^2 O& b6 h" z4 c+ C. F
回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。8 n2 E# h$ C; K' R
! G: _4 _/ j& `4 ^
怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。
* F1 R- g( W/ Q; {" k' k. N6 E& b6 g
思考 one-CPU-one-vote
$ K5 l5 u" i; b8 B$ w) u E7 r) W& P2 M& m' }, C
考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?
. h) M0 Z. F! d2 B0 }- s% ?
9 ], p: v2 ~7 X8 o$ \9 X' {. Y" t: { 为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。
* o6 T, J0 M9 m% L: ?/ D8 z8 m/ Z
当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。4 x# M2 E& b% V+ c/ j! O1 C/ _
) S* [3 m6 o$ K* U
思考费用
3 p3 x% n* z7 z: O+ A }2 {- A6 N) x( z) ~9 I3 E: W! {
考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。* Z& R$ h1 v# Z; s9 m$ k
9 l8 W3 r( h) D& p- c, m1 I+ ]那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。
+ k. T8 @; a0 G+ ^) f" w+ h9 T- a5 k9 ^" D" }2 X' ^0 o
基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。. p ^; q4 w8 C2 u/ D* d/ \3 @
# z; q s! v/ T' a& _ j6 g8 a抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。
: A6 |6 ~! h8 e3 a
( v- ~( c, r8 h8 U1 N+ D1 M8 _ 我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。7 ]. B- t; k0 E, I2 ^) e* Q O2 M; s
9 _7 ]9 F- ]5 W W/ j# {/ ?
思考可扩展性
3 }3 a# ~% U* C7 {% b, [( r0 [- q) r2 |
从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。
; O9 b/ M6 d" l" y8 m1 \' G; M/ k+ l; `, z
同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。- `# w6 R+ c1 S$ |4 d2 u/ ?9 H9 x
1 S4 k9 C8 b7 Q- N. n; K3 O/ S; t0 n YOUChain 共识「YPOS」
+ J* ?1 T7 g5 B$ U2 Q1 p+ f3 h8 y6 e. o0 Z4 P
为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。
8 I( ~0 N: r, N9 |9 }# Z, l7 |# V! x' s9 O' C
共识流程,主要分为两个阶段:提议和投票。
0 P" g, B+ E+ s9 U* \
8 [2 @+ i0 r; @6 u# C% P7 D3 S# ]& I1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。5 o% E9 X& G8 g: S
. W; R# f8 O- u
2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。
! [- x0 s! o3 H/ F( j$ e3 ~2 ^2 K: X: x- d
其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。# T E2 v! X- h" `. z/ C3 H
7 U1 P! L7 h v# o! G在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。
0 z% n. V( d( F2 d1 x6 T) E) @
a8 Z4 R% Q8 ]; ?& bYOUChain 节点设计
6 C4 \6 q, V3 f# m' v; w, Z* T: N- U2 n, g9 d. R
安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。
& o( A* T3 w9 ]2 y% s$ P3 d
1 m# R; E2 A7 q在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。" y4 {! T7 u+ H9 O
2 W2 L/ |) g: n$ D, R7 s 一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。7 u9 D) v: ^% B4 B& L
" c ~& Q/ U. v$ [9 S, ?' n/ n$ C
如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。2 U. \+ Q3 o7 ^# }3 J
) R2 s$ N; l7 R, \5 q5 D为了实现我们的远景和目标,我们设计了如下的节点结构。
! S. g' v, c$ s3 X) C: Y
' |4 Q! L. V) h& ~5 w( M' ?节点类型
" W. V- B9 }$ V) n. Y7 f* E9 w! |( u& \' O1 \* t$ Q% m! V0 R1 B8 b
系统中包含两大类节点。6 Z$ [$ t; U5 ]9 S; T4 e' S' M
}" Z" P4 d+ ?5 `! }; g; [
1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。
- S3 i5 E8 @: d( t, S
9 u" V# g4 [/ l* h8 H( v- A) S2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。2 F* k7 E, | t _
) d5 D% o" P* ^9 ^7 w9 E以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。& A/ ^: [: i+ y: r6 Y6 d5 E/ P( @
% A7 `1 u" w1 l' T节点选取方式
9 ^$ U4 L8 [% \
! ^/ L: _, i y. Z8 P( F" d3 r* j% G8 n$ U
) Y0 W, Q1 ~1 }
& f% ^; d3 p, W! Z7 u& D" j9 g! J8 v6 W
1 j3 ]- f1 ?% I0 V% b1 K
参议节点参数「待定」2 X( H/ \8 M2 M
# i0 E2 K& R( K8 D
/ ~% J. I0 Z4 K3 t
; O m) b, e# `9 {) K$ Y* ]1 y" ?
; B5 q% t4 Z& A/ j% l$ O( @众议节点参数「待定」, l# _0 N4 w# F$ p9 I6 \) y* O
) V K; b; d8 [
, G- P% _# `; G! d. I/ i3 g: ?( [ T) Z- |- P6 M' N
5 b: N1 B' g% S' s
$ P: ^9 ^. a7 Z% u
两类节点对比
. e7 G( x% w1 E6 e) x( J
0 w+ w- \# ^$ c H. n
& K1 X& ]8 X6 x( C/ r' y6 K+ U! q; h0 s: g+ b/ i
# @$ c3 M( k; t" {2 i
' ^8 B# a' D' N- u
我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。; J+ R# S5 W2 r r9 T
8 }: z) L0 o6 Y2 G
YPOS 区块敲定+ X3 B- F# ]/ o: N
+ o T! y" [9 W) _, `9 K
1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。
. W6 z% a& M! e+ |1 ^5 V, B! H H0 B6 Z( E: Y! j' A0 Z. F1 \2 s0 m8 r
2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。
% z$ u6 }8 K3 x, A: V; G1 b4 n' T0 f3 n
3.满足法定票数的区块,则为敲定的下一个区块
" P" ~! P( M+ D/ F7 p6 }6 K2 @& A/ C, y# }2 A8 f
定义如下:& L( W1 J/ C7 S- R: l
$ k+ {1 Y1 ~( U0 d+ y9 t- ]& C( Z, N8 S' \$ v
; S, A& [" l/ i! {% c2 I, N
1 a" t6 A+ m0 |; V+ y% i7 p0 B$ {
, M. v8 U5 l5 u. T2 b; P8 c& T, z5 A7 B) }
网络安全8 t; p4 ^0 R0 ~! K7 C
& ^2 W$ ]& u' A7 `* u参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。
7 z% t6 y" S- a* P8 N! y6 n V' N
官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。$ E4 _/ P; w* c
5 Q5 Y) R6 J: W9 D# n/ q
官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。2 j$ d3 F0 J0 u
8 y6 A, b1 D( S. p* A
链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。4 h# `- K {$ I% s% e; _8 Y
) B6 i3 @' Y9 e' o8 i2 k4 t1 O网络演进
! P. k/ d8 \$ h' p% U
9 d. y! a$ W( HYOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。
i2 x0 o- c2 a/ a0 H' s) {
( m. ^3 C' I6 r/ Q+ z' s1、通过安全分片技术提高可扩展性
; E" X; d) D3 A" ^
, c% s8 @$ O$ {* ~+ L5 T# C2、逐步调整众议节点的选取参数,实现「人人可参与」/ p" Z) d# I0 \* B
* u3 n9 Q2 k% {5 Y
3、区块提议节点逐步过渡到从众议节点中选取- J. E- n6 h5 O: f; J" M
% b6 x3 s( }% B9 K* |4、逐步降低参议节点集合法定票数 的要求* l* L& b& L6 b1 {; ^
" c' t! L2 ~ p/ @0 y M
5、参议节点的功能将演进为:存储、转发
$ y" C& h/ Q+ [3 ] {1 d. M* ^7 h- j. I, N1 `; d3 y' r c" F
前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。
9 h! _7 M! N; G; s% P9 U, V' G$ {, W& e1 V7 s2 p: J
以下为问答素材:6 d1 i/ q- Y0 w" I [3 P; U
0 B L, F) j) E5 z+ U4 z6 }
Q1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?
8 S/ I1 P4 i# P. S( F1 E1 P$ a1 j/ K g9 h
$ D+ t* F) [8 M6 f6 Q. g何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。
7 s2 O) E0 X4 P$ D
* a& d+ Z4 z- G% NQ2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?# N& F& X' l" T, w. j& h# k4 T5 `- v
- i- t* y5 h" x; I0 k何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」- _8 W( X1 J8 E$ g: Z+ ~
+ W4 x! n8 X3 Q' f8 D; }
Q3 参议节点和众议节点的数量分别是多少?会不会扩容?
0 v- Z6 q! L: V" i- c9 z) C& q% Z" D& q( }( L2 d4 @. a
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。8 p+ [5 ~$ W4 |( Z' d& T; @% l1 Q
8 l1 ~4 V+ k: @3 ^& y1 g- N
Q4 参议节点提议区块,是否有中心化问题?
2 ^8 A( j, Y- z6 G9 ?! y4 F6 g: }9 e, H! J( C0 S& Y
何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。. E4 D+ X+ V/ G; c& v/ }' l
4 C( }2 }) Y: r; i; _3 [* oQ5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下9 }" Z+ K. C2 F# D8 r
% s$ X3 |5 y% v8 ^: W
何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。
! {' k3 F \! [6 S( \/ w2 d3 G/ S9 K# d% k4 U# i
Q6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?8 K6 l! O: W0 i! ^* t; F3 C
* Y6 Q4 r! q( |% |
何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |