网络与节点
$ O) ^" j6 E7 r" i$ T8 N2 y0 V5 \. C. V
区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。$ }, D5 V+ R4 k) B% o: f$ w* G4 j7 C
( x* a4 P0 n: n9 Q) a
共识与考量8 S. S+ J4 J K; F' A. E% R, l. \
* U1 F- C& a8 q2 |
网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。, U8 ]- t: `' i* I2 c3 u1 h8 r
2 Z+ {' n1 X2 O& [- v, I1 i) H, J
大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?% j. t( E: z: M
8 b ?% `( ^8 x3 q
原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。$ F! {$ H" S: {/ r- J7 @1 ]* x( Y8 R! k7 j
$ p8 v6 m+ I$ p1 t2 T$ f5 w
现有公链的问题7 D. H0 F- E$ L0 g% l1 E
" Y) \: j- |; n. M( l BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。
' ~7 j4 J+ Z$ E: T! I, Q! p* p5 o9 d7 `" p
BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。) O' Q# W$ X- Y" U
+ D3 u% Z& o3 m4 V
EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。1 b) Y1 y7 l& a4 L8 v
9 r$ T4 A3 n. Y# l 可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。
! a7 K& t- t. s, N9 [% G: p: E: T4 y8 M; N$ T' T
YOUChain 的愿景
- P' p" [4 G0 a' @5 N) p* W9 b. @6 y: r6 s5 X8 K" W& U; f c# e
YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。; d2 s) w4 a: k2 }% J3 i
2 r9 Q' R: R* Z) e. W1.低性能,速度慢,难以扩展,不是我们想要的
2 V. m! p J+ |6 j$ ~& a
) U& P6 f- E2 ^- y3 a$ P5 G* a2.权利高度集中,不是我们想要的7 H$ w+ V; B X" ~+ q* U5 L
6 B" ]6 l: _, l8 i p
3.使用费用高昂,不是我们想要的
" u4 w6 |- L. ?
& m5 A7 F( H2 U$ \6 {: T 要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。
' o) R6 o; t8 A# n- A2 M- e$ c5 V& L1 K5 O0 V9 R0 b" I
某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。, a3 W" @1 M+ w2 J
8 F7 A9 z8 N# u! b: k. [思考性能3 V, \# C* R' o) M% o M) V6 f
) ^& d: I9 z+ R- U" Y 回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。6 ?/ w+ F9 J/ e* k- B" F: U
n" ?+ G J' R怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。. {$ g5 N$ s8 N2 z. H
0 L Y+ D G: h+ b6 n6 [7 ?
思考 one-CPU-one-vote
% \ f; D* [" e$ K0 h
: I7 [5 ~. J, m1 d+ t+ b( Q 考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?
# S* _0 V- J0 d: l' p% o$ M2 `; h5 `* S! s
为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。7 \6 j: {6 l4 x1 M
% ?8 b" P3 g' k# M+ ]1 T 当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。
; m% Q" C7 `' I5 I( d
" z" q# p( L n3 x0 ]5 d" W思考费用
0 J+ E7 x! ?& [0 B/ J) n( u( t% Z5 s: `5 U( b: x; ^
考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。+ h0 t' z$ p- t
/ x2 n1 k+ Q8 [ `) v% r4 _* B那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。" D1 \4 @ C, j# h9 v
% q; F) v. u& z4 m8 u
基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。1 |% F. j0 }; k6 U7 I+ H$ ]1 s
3 g" X+ ^3 n' ]' W$ d, D
抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。
M6 l$ k: q0 [: t( V. s _
9 b! l( e8 G n) _) h 我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。0 k; t2 Y0 ?. S- T
8 p; M4 I) S& o0 y
思考可扩展性
2 z+ F! N/ Q2 Y
7 d* V$ k4 r* e% o$ l 从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。
) K( t" Y" G' r: ]9 v# Q
5 n; `1 Y7 `! e 同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。7 v) I4 m1 g6 F- r
: X4 B9 @9 Q7 q) y5 |, C YOUChain 共识「YPOS」
+ ^( p% }0 a& w$ T( ~5 d# k3 ~% w5 `
为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。
- ~7 y4 h8 k2 r# B; A D9 T: z N0 f$ {7 P. ~
共识流程,主要分为两个阶段:提议和投票。# ?! i/ K, @$ Y- S
/ G4 n4 V+ g: W2 q: ~% m4 N* H
1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。- F3 N7 Q' u3 N0 A' p9 K
3 T5 a2 U, h" `" H* V' q
2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。
$ _1 H! @$ f* e
0 g, n% o, Z2 n# t, N) L其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。
0 B( f3 G, D- h/ o1 \" a( f' ^9 c3 z7 M/ ^
在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。" {; X5 k0 z% a6 K r+ a' |
& r5 T2 G$ w0 W8 W; P5 d9 \YOUChain 节点设计9 \: ~1 e( u* S* Z
/ U& X, q1 O- g9 {9 j9 B6 \
安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。- s& g' {, W8 ?: ]& x8 e8 G
/ M9 `; C2 A- N6 g ^/ Y, n2 X在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。3 W. f5 ^' G. ?/ P6 f! g2 e
4 K1 M! i) ~% p3 U' |; U
一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。
4 | e5 {8 Q$ g2 @8 D9 s% s: E! a; `3 }& b, ?
如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。) r; w9 n! [: l
0 C; @4 o! [ o; o" U! V
为了实现我们的远景和目标,我们设计了如下的节点结构。: ]% l4 x/ G5 L1 V/ D# Y
4 }2 d& B0 M& ~' t( q节点类型" i- @6 P3 L1 @7 C$ o
2 k/ F$ N' Y, [
系统中包含两大类节点。
: A. k/ J+ _$ I) F# ^; D# f5 ]
6 q) I+ w, {# ~: o. O1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。
, r/ l5 [, M% f" s: K C" i* I: L& T6 ]4 f9 M, Z% v
2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。
1 M7 B6 a+ r0 y" U0 b5 c- u/ r& ^. B4 S# N( X+ ]2 i
以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。
? J$ B0 z2 ?1 v- W/ r& a! a3 f7 X+ _
节点选取方式7 } L. c/ i' Q7 R {9 b: T
" _ M$ |# {; \! I: H' s
! m/ p- D5 L l8 |( ~/ |
- q, ~9 Q% l/ M# g
, \ \! t+ O. @0 I5 N: i! Q
* o, F" V$ O7 U0 z8 R
9 Q3 |) `' V6 M参议节点参数「待定」; Y* V4 o! g( k% L7 T/ q
7 \ r x! T& M- F# V8 C
) [' n! P# ]2 f. [( p! ?6 G
9 L( r7 [# W' v* q" r4 Z% X% k% G! F% D* f
' d4 I, {( i6 s6 N7 {
众议节点参数「待定」
# z C) [( q, ^( N0 V! }' d; h0 i3 ?3 ]: q! u5 o- ]- [+ F' d2 c
`6 _9 D% q0 @' w' G
4 R, Z) e% P$ |7 \$ S3 o! T6 y _* x6 ?+ v% o9 R- r4 C6 q9 N6 z
1 v0 u: ]7 U# R' h# G6 H& F8 Q
两类节点对比
* S, F, V# D U4 G7 x. x+ n7 ^# R. ?4 B3 s. K- p
. |3 y5 ]. J) N( i! [
/ g6 V/ o( W# c8 i
6 l+ U; _$ u" Q/ b* V
4 ]' v5 ^, x$ e$ l @- f5 n
我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。3 g! V, h* |7 U/ P
0 ^( g9 q9 G1 L( pYPOS 区块敲定7 C- M* v* v$ H
i1 ~$ L8 N9 s) |" b* N4 K
1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。
# p+ K0 Z$ S' s. v. i( F
7 q; u2 v N2 M: f- Y1 I- a2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。
. P4 }2 C0 W3 I% i3 L+ I+ r4 l$ m6 Q4 Z) ^: T- I
3.满足法定票数的区块,则为敲定的下一个区块' N9 \* I- n5 s- _( j; E
1 b# g5 I( G5 Y5 q# y' c, q
定义如下:
9 ]7 d2 q$ M/ v/ z E1 S! h, U$ t. y5 H- O
$ ^) e. z$ k2 c3 L
6 h+ U2 c) k: ~, S0 X, n
. @2 O. ~" K2 d2 y. v2 I# D( B i9 w- C
7 ^* |6 o+ Q- F网络安全
+ B) [! t- ?# K1 r9 ^$ W; B. u! ?
参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。
6 r. N+ l) w+ t( z8 E5 O2 I5 s+ Z" b& e+ m
官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。, W: s9 M+ f6 u" u* z& w5 C
$ @ f% X: e) [& B
官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。/ T0 j% d$ R; X# J/ q2 H
; ?, W; d, a5 E J
链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。9 I( r3 ^% ~7 k' X5 N' ~
8 Y: n' J, l" z# i* x" U Q网络演进
( n6 f9 K& y, W. F+ k/ e0 s+ L& J7 |7 R( j2 v1 a2 @: s1 L" k; H
YOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。
5 ]- H9 \0 h$ W+ I T% G# v/ l( Z% \+ a2 H5 s
1、通过安全分片技术提高可扩展性
. w# ]) @% u/ W5 I% R" a% Q# w- W9 N! l7 V
2、逐步调整众议节点的选取参数,实现「人人可参与」/ ?* o! q( P" Y* W0 m) S
. @2 }/ X. D, Z; m) L1 @$ [" S: ? g3、区块提议节点逐步过渡到从众议节点中选取
, m" X5 f) q2 `8 D; Y4 R& z- R
9 G/ m( T0 g) t1 Q, V4、逐步降低参议节点集合法定票数 的要求
: c. W% `1 y' N# w2 z6 f
( y1 _3 o0 _3 T; Y% `9 \1 I* u" _5、参议节点的功能将演进为:存储、转发
0 P B% W: n# {3 M4 Z
$ z5 P2 L2 A. ^2 Z! t) N9 Z3 p前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。/ F& e+ A& c# ]4 W! v
' T0 s% |8 U+ V, @) H
以下为问答素材:% Z3 K5 d2 s# g2 b4 ?+ f; r. K1 i
: N/ C3 Z( Q" U$ W" G& FQ1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?/ Y7 z8 T1 v0 C4 Y! l
0 S4 i9 o% y" s0 U' D
何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。
; v% f' |. L% C, b$ f3 f6 Y8 b0 o H6 Z
Q2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?! A ?7 q, i# x4 V
; l- | p( A7 |+ `! W8 |6 I/ w何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」
6 K* S( B8 M: t l% U e% |/ D# E0 T) \
Q3 参议节点和众议节点的数量分别是多少?会不会扩容?3 |4 h$ G9 t3 d# n8 i$ Y+ b
; |; t" j Q, N# g4 I- M- A何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。8 d: f' z3 z+ K6 l2 v# [' R
8 l `" @1 s9 x+ Z" ]Q4 参议节点提议区块,是否有中心化问题?. L5 C6 U W% Z2 Z( c6 e3 p% |9 E( o
; {8 O; c! F) f; u7 f% ^+ D
何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。
/ b% r2 c- W+ G
1 o( g& T; K/ d& W, LQ5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下( V) u$ u/ p' H4 c1 P b l q
% N" z# C8 X) k, f- }4 s# T! M( ~9 j( A
何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。
3 ]7 M+ R+ ^2 V% H0 z7 o
2 r! R7 p8 U2 uQ6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?, d0 _0 N3 l) A3 k2 n, j# c
$ X0 \9 z1 e$ f; Q8 {何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |