网络与节点3 V5 U7 @6 I4 x6 j
% I6 J2 v1 r4 \+ E& M v 区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。: }6 x% J. t3 {7 |4 f( b, A8 z9 O
7 }* j1 n$ i( [$ @共识与考量5 v1 j4 D3 P M: @' U! i5 K& K
6 c% K* `4 J' I. A, V* o 网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。
g z8 M& u$ R, h4 K9 ^+ Q; O# l) v3 s' B2 M( R2 f1 Q
大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?
) \! e/ Z6 e$ C$ p8 \" |- K1 y1 H4 j! v1 }+ n# r6 t- [* C! \
原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。
5 h9 e0 F# X1 \+ q5 K |" C% E6 q1 U% F, H; p0 ?
现有公链的问题
4 ` r( K8 Z$ n1 M' Y! A" |, Z
BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。
' i8 f3 l- ~8 a% X8 M" d0 L) i! @
9 ]4 }) w9 l. N" d) a% G BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。) k H# w- S8 w
5 O0 y7 U. U, G
EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。
" I7 T4 \* S- ?- `. l
- L S: q8 b. S 可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。
1 X7 }3 y {9 ~7 W, @, j# K" V" C' f; T- q3 v, U
YOUChain 的愿景& F& n6 n7 X9 m: M% r
0 A% d$ f7 U) a! V7 t! ?- p, o YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。
. i( R- n( @) e7 v3 R+ j6 ?) Z8 M1 \/ _( [6 W( b' @
1.低性能,速度慢,难以扩展,不是我们想要的
' Q9 Q; t& w, C% A5 j. M/ R7 [% n
* Q. e! i. B) T1 F2.权利高度集中,不是我们想要的/ ^ C5 F1 T% D3 _& R5 I
* l8 N' Q2 H0 N4 \0 s6 v3.使用费用高昂,不是我们想要的% {3 H7 q9 s* W1 `5 D
4 C- L, ]+ c9 K9 p
要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。
& ?% }( Y- Z" I# n. F/ I+ g3 p6 r: ~5 U6 f( i0 [
某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。
& L, U3 a1 R2 S" C( \7 X0 g1 u, j6 U( a' \6 C+ J
思考性能7 h. w# m/ Y# m) G# g( e G5 l9 }" j
" t' P9 j5 v' N) I 回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。
$ p) x( O. z& I
2 l3 w2 W Y8 W9 _4 F' O怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。
. w, t( ^/ E( _: B& u; M1 w$ U9 q( |, [! T
思考 one-CPU-one-vote/ {4 u/ c R8 B# G6 }3 C1 ~8 B' m
2 p- p$ e+ I \( D
考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?
, Z( Q& x/ C7 Z: r& g% P. ^3 j1 A9 W! f) l. h% @4 L1 @
为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。9 X' k: o Y( V# K& A3 s2 S
. r& U0 ~6 k0 _) q8 S/ R4 Z- Q8 L 当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。/ \# y$ f+ h% Y# D) N2 x: ]
$ I9 ~+ t" l$ M0 c
思考费用4 j2 U. _, U+ n4 X+ g: C
" c8 g' G I5 U% n 考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。; q7 S! m$ X) O
5 T. m$ N# k9 }% P0 R. r那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。; q o k- q, R! S
! U% ]( O3 [+ Z% ~ 基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。8 ~& Q G9 [6 ?5 S' i
7 |! B9 H3 O9 D- p& E
抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。8 e* W4 x) s/ R8 y; s7 |9 ^
9 Q1 t4 W/ W) ~. @& @ 我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。
( U$ ?* V- `- p6 H7 c
0 {* a+ x6 {# Y9 W思考可扩展性
& H/ N4 ~" B" a% u0 p7 \+ [2 ^3 h% N- A+ |/ I
从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。
0 B% t5 `% f% x% s
2 B" ~ K3 k! |# v( t 同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。
7 r) F8 h% u# O, O ~1 N* J2 {2 j: E% Q2 r5 C# _
YOUChain 共识「YPOS」 n( {4 C C1 q, o. x; k' X6 K
% Y& {- n7 M# H U7 v, ?; Z" F 为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。
4 ]) J) @! E1 m2 t2 n8 n' w; m" S: x
8 x( w1 G s3 ?0 |7 `2 S+ r3 w共识流程,主要分为两个阶段:提议和投票。' _* }( P# Y! L7 W/ N
+ {& c/ l3 g5 r, k) g- ~
1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。
: S5 H! u3 k- C2 [0 l
( P0 d. W$ y. y# Q! Y2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。
1 W6 G2 m) z5 m8 Q: j9 Z! l$ Z" h: G% x# R# c, {7 ]
其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。% S7 |/ G' W9 r' C3 ^* @) S
- r! j+ ^2 s% U1 S在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。) _1 w) f5 {7 {4 c9 z/ Z
3 ?( z8 U# T' y: B! O! l; y- qYOUChain 节点设计
3 f8 }- x& R2 l- q4 `% n3 o9 Q& M+ ]: b' S9 N
安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。
% ]& x2 X7 Y8 `8 v* c' A" u" n8 b* ]3 q5 f5 X( @8 Y7 a
在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。+ i; m! R$ w. ] Y9 a
; }+ l6 i( R8 X: h) A9 T 一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。( F. b# M( l) V3 C9 {* S5 Q* h- ~
7 _ Q9 a* g% M- e; _. g- y
如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。& m; C' J, e- [( ]4 }6 B5 m
8 _& g" r1 a- u' `* Z4 D. p! p% x为了实现我们的远景和目标,我们设计了如下的节点结构。( p0 M6 k, @0 h
; S& e- x B" y/ R7 \# S5 b9 p
节点类型4 \% M) @( f' d- C' N9 C
: c: i! O# Y n3 v1 Y% H系统中包含两大类节点。
7 [* C- U2 L5 [" L2 d, w) z; D
; E# P% Z3 Z' L1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。
+ Q z x) ]+ z, S' w) n) ~
2 g2 [& X( n0 ]) S$ L. e2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。/ r+ ^) [9 ] I; F3 J) t7 R
2 j% U5 o( b% l: Y& L4 L
以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。. r3 a' V& s6 F
5 d8 V# I# m. u
节点选取方式
+ h6 ^- L; r' Q& O: s* r! B! l& J" Q
. ^4 S/ Q# {- r
g$ I' o& v. \+ ]) J3 x. w
2 U& d4 r6 I; ^/ h6 Y1 I# l- G
+ @- T0 }% E0 K( }. C5 N) F" ~3 L) l: ~
参议节点参数「待定」
: @+ N2 M4 K7 b$ t1 v" e% O: R+ G- a, g6 ]; ~3 b& X
5 _# {" d& c! {6 h2 [7 F
& g. g [: ]( i/ b4 l. S- e; P; l; W! n/ w+ S
9 x) p: V8 g5 t众议节点参数「待定」
3 f2 m9 O9 I" g$ C
. h' R9 s" z* M6 c- k
6 v# _: _: _' G* @( \/ X v& r v' J- j- m6 N
Y5 V9 x8 d. [+ ]
" H+ o9 W+ }/ W% Q, Q9 f. j2 x; \
两类节点对比5 ? o7 F+ W" R ~* A9 ]
# u# i/ _% s* _1 }" j' L) A
: `, X. }0 f8 n1 Y, s
, _4 z+ Y& A- _6 B7 T" e7 G0 ^% p8 q" D* v7 L$ D2 Q: K* A
+ {, u |+ N) {! Q1 T$ C( Q' W7 V
我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。
+ ~- E! m' l& f. b# {& I& I+ S0 r, ?0 r
YPOS 区块敲定! j; m. j L4 l! `! I
# t6 X7 m! N: r$ z
1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。
: f0 G$ x) x. U7 j9 \: W9 v+ q+ q8 y* Y8 _( m( ]6 }, T1 J+ x" K( ~
2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。# M% R9 F5 x: i+ G
$ O5 b7 M; m# `1 n' x& h3.满足法定票数的区块,则为敲定的下一个区块
8 C+ @$ f1 t$ x7 o$ D; O, [
6 x8 M! K5 N, y% E# `; \0 P$ [1 N' K定义如下:
; o. N$ S3 O3 c7 H
: H+ C. y& ^) s' x# x9 D
" {; R6 K: {4 h4 r, K% g& W ?
' u) @+ m( L1 E. r% g
q4 @) R8 ^% n2 [' F' K$ o/ [0 a; W9 R$ s/ C0 g5 a
+ B! L( i! F- t
网络安全( e% D2 {- f5 U) ]: R6 S' w
: ?2 U6 I' e/ f7 D7 `+ ~4 B参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。
3 X7 C2 H1 a) E6 Q; l0 Q
2 b' @% t9 n7 |: w9 Z. t官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。; x6 Q7 ]4 o8 Z2 k" I
$ f" W* N$ e/ M# m' Y. |7 z+ H官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。
# h2 ^+ f1 W4 R# ?! S$ N9 C' {0 N; N; P' K2 Y1 g
链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。
- {; @4 Q D: B$ A3 s8 V1 ]9 P) Y/ x( a
网络演进( V4 I) ]2 K" a/ |! g$ N* j
8 m4 N' b4 I/ r) \, f% K: ]" X6 N
YOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。
5 i" E J5 D: }- F1 Q2 t& Q/ A! U T2 w( ~5 z
1、通过安全分片技术提高可扩展性
z: I+ C8 N' F+ M; _* t9 ^4 U( J ^+ o2 }( X) \8 U
2、逐步调整众议节点的选取参数,实现「人人可参与」# Q. V' {5 S, d9 p" w
. q" e" R" n3 J; D' v# d- a( B3、区块提议节点逐步过渡到从众议节点中选取- x) m! V3 i( F4 O
5 a* r# S/ J6 i( j$ x" S; `4、逐步降低参议节点集合法定票数 的要求
" ]4 K$ @& N: `. p. ]8 Q. n! b
1 {0 S1 p* p) j. ^5、参议节点的功能将演进为:存储、转发0 u" c" A5 [! O2 k
( N2 _8 V4 R; y# Y2 A
前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。
) l# c9 h4 g$ f/ C: Z' A
. C" w- j/ K$ y. O) [以下为问答素材:
6 a: F4 k! O; y* l
" ?* C% A# @7 q% W# m; }# v( m8 cQ1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?
) \4 @5 T3 T9 r7 U
9 F" W1 R! Y) r& o何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。
) O+ |% v, G5 n# C1 ?- |5 l7 a
Q2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?
# x0 O# N4 \# A8 @# g1 q# S2 O4 v# r8 E# T
何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」' R C0 P- q) `( w8 j
9 Q( w" T" \8 T6 j
Q3 参议节点和众议节点的数量分别是多少?会不会扩容?0 ^$ G& S+ E% `$ n, W
3 w2 ]% q8 ~3 d I% W$ J
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。
' z6 {1 \2 i; A( ~. L0 b& f5 d6 p l; j, j0 X
Q4 参议节点提议区块,是否有中心化问题?: D0 U) V4 K k, y
* S! s" s* C7 p. v0 G* o2 E% }何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。. h' R) {0 B# t
; k( ^ Z0 o6 W: ]# V: ^
Q5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下1 V9 m) W5 ~; L# R; X3 m! e; g2 m
0 V: ~ e/ s4 ^6 d1 U) T8 W2 |) e何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。4 j6 [! h6 p2 ]8 F( d4 O; o( m3 ]
" _# A* e/ \ u
Q6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全? \+ l; [' i& w2 \5 Z5 \! G
& g. X) [4 t: G9 X2 E; b何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |