网络与节点
0 X! }- O. ^) d6 ]) `1 i2 b% e' @2 p0 s5 k9 U" h
区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。
6 l Y, ~3 Z9 C/ E, h3 x
/ u& }* \! ?: M9 Q共识与考量
! Z& `4 k- {% d/ `( r; a3 g' p1 n, M
网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。2 b m, J k7 h' n" C
5 ~1 s) ~) Z8 ]% J. C" S3 O5 j T2 L
大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?9 |. h2 R( t6 m F5 H V {
- g# @: [. A& v. |原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。5 q& i7 b/ H. b
# G$ ?' i* L5 Y/ o% H
现有公链的问题( g+ B9 x1 {6 s$ p) i
! ?+ s: }# `2 S0 b9 n5 [6 N; O7 f
BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。
* a- p( G7 f3 I: y/ b4 }" [0 m/ ~5 W/ E. O6 N0 j
BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。
+ r8 u: {' P7 }
6 d5 y( B! I/ ]1 d4 ] EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。. c( N1 e! S( v$ d8 U* a [
' O% X/ d k+ g- Q. ?5 K! i/ ~ 可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。
7 e3 Z' ?9 f+ N0 O# n$ g, `* o; P3 R0 k+ _3 h
YOUChain 的愿景
6 J& [# ]7 N4 d! a# x
! r+ m' o" ?5 e2 ~& O YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。4 T/ C8 I; J% K" L% G
. H" u; X& P9 V" \! C, b6 e. l
1.低性能,速度慢,难以扩展,不是我们想要的
0 f9 }! a& T; K. u) G
, g. J8 O8 C! E; e2.权利高度集中,不是我们想要的
1 f% o& Z x0 Z, X& {* ?! G, _) u2 \( y% d6 W1 {6 z& T( e1 m, Y& w
3.使用费用高昂,不是我们想要的& i; p( p& e2 |9 h- \" Q
2 D! o4 S9 T4 K, K7 [1 m% l& A8 ]* h; I 要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。6 v8 _5 J) r0 a q9 a M
' V- |/ H2 N. c& F
某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。
4 n) M, |! g& V1 c$ m- u9 b" g( Q# T! E4 P4 O8 b6 M {7 a
思考性能
1 V5 w' G1 O3 S7 ` F! V. \
& v# C! q: c' a% v# |9 U 回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。
8 ]2 W w" b: z0 K# @7 r; |. W9 {. D6 D6 r# {
怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。6 d0 n! s! r% X: T. y' y
( x5 b5 \9 i% m) Y7 }- j
思考 one-CPU-one-vote: x, j! m4 M" V
7 p# }9 B9 L" Y" W7 F# R 考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?6 i0 w$ h' G6 o' E/ G+ H& `
8 u/ ?+ Q7 d9 P4 S- H 为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。7 {0 u4 v6 K6 @6 U
* y9 Q# X& g& u
当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。
9 d. h8 ~7 r# L4 c1 S. M0 Y- p w: I3 D# I: L
思考费用0 H# M! R) |! k* o, u
3 }6 U( P) Q* U 考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。
2 H- T( `6 X* }" n: \& C1 L2 Y" y( \" b! X0 i
那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。
$ J7 }( @& E' G* \, A( J0 L4 M" E9 `* `
基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。8 r0 X% Y2 j5 v' A3 ^# o; Y
: F& k" i& F+ y2 g! b7 m0 w+ l2 E抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。! S1 l/ S5 `" P" J+ V
1 L8 K& d8 B; w, j# w# ~
我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。
# l6 @6 I1 l1 \, f
. E. r& z4 p1 U: S* s思考可扩展性, i; o6 o8 Q6 ?( H4 u
: q) \) f' T& [+ Y5 G6 ^" n
从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。: `. \, k* G! i: R( C1 v
8 G! g/ [' u, Y& c F. S4 `2 C 同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。& c/ r/ g. b( Y; t; B2 Q
; L$ l2 r" x* P6 T
YOUChain 共识「YPOS」
6 [/ X/ @7 E; P$ _: e5 d3 K" Y. `' K* z! [& t7 A1 l
为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。
* y1 R' j2 x. I& m5 ^: c# ?9 q
+ r3 o: Z. ~. ?# _共识流程,主要分为两个阶段:提议和投票。
8 Q8 R. S: a% K% x2 J- S
+ u) b; B9 u1 w: t3 F1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。
* i: `$ t3 U% q
. p: m1 T7 _. q' P/ ]2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。
! a" z0 }( Y4 }( u% t* g7 {8 r6 l4 U \5 w3 G Y
其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。
& ~) z0 _+ n- b+ @# `
{0 s6 L: \2 |: n3 ^; o在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。# O6 s& W6 [3 b
8 Y6 y+ v! X* ]+ O* \/ ~- p! }
YOUChain 节点设计1 |* u, s* z5 v5 E T
+ B O4 J! Z3 }1 e' {3 \
安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。- C7 J7 y" z' F/ t& H' Z
6 J2 p% e% ]% E# W( J! f( n0 P' w在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。
; L) d% Z0 y8 `! d% O ~* g+ l1 c f+ C' H/ c
一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。
4 }7 y7 n+ [* }7 _# ^- C5 a/ u" r1 h; |" \4 i
如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。
" @. o4 q- K) V1 I
3 g! B4 r0 }% k9 F4 z- E t为了实现我们的远景和目标,我们设计了如下的节点结构。
" @# u* Q" u8 o9 G/ T4 f! y2 Q/ `, M) \$ }. |1 G3 J( r
节点类型
) R ?- @& o# A4 j0 c0 F$ `
: l2 `$ x/ U, N5 @& P系统中包含两大类节点。7 s$ l3 O7 K4 \ i: q5 R
* S% O5 c& D5 R) F2 U
1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。. `' Q l/ H+ R9 O8 m
. o5 j; o: Y7 m
2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。
6 G% e8 k# U* R A2 C: h9 C. j$ H0 g
以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。. q1 I0 }& J: Q* C$ d/ o8 L
7 D. \0 X$ U6 l$ ]% I节点选取方式! \: S7 p9 K# t$ H
/ R* T! }7 q8 s/ Z: C# o% ^5 I/ D9 \ j; {$ ~ J4 f
8 A) C }# G9 w4 |- {& F7 Y* h( v/ C
0 i: S3 N0 S0 B2 c/ @0 }1 n5 a+ g6 V9 D5 A
参议节点参数「待定」6 `( B7 H& w. c) Q% f7 a' h7 P! V
0 d- B0 x' x6 [3 Z: p) c- J1 s2 L. `; j4 N6 s( O; Z& s* J
1 n1 U0 y1 N! @7 B9 G: ~* V3 l) X; u Y. A
) I- w' K, w" q5 e0 F8 F& z众议节点参数「待定」+ R; x+ _; U V7 |# b4 z, X0 j; O, U
' {' U8 f) a" j& n
( I" @) \+ M% ^1 v8 {; s
& r! O8 I' ?6 S9 v3 q" n4 I. ^2 M0 F/ \0 F4 I+ M6 X& m
I* x( g1 z* t
两类节点对比
y3 u8 m3 S9 c$ l: k6 A; z _3 n( J
7 p% L4 m- z* R* a
& m4 X- G- y3 `8 G% ~1 o: N; ^! u; Y0 m4 R5 C; Y8 j7 F. j' Y- R7 {9 {
% g2 B; B5 L7 X: x6 ?
我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。
; R, s* S/ I8 [7 K5 J9 l: |" B
9 p" e$ j: |' B" I7 ?8 t0 }. @YPOS 区块敲定: Y) [; [, l- y; Y8 R. ^
+ M' G* k& }& K3 c% F# f
1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。2 `' L+ V0 Y5 x1 j0 [' j9 I
9 P4 N4 _- |1 A% K. L; r$ S5 x% V
2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。
) I X* |4 j7 j0 a9 u2 B8 b' b" s! N6 Z
3.满足法定票数的区块,则为敲定的下一个区块6 l& x5 y6 C0 j0 H1 z, J. f! v
" w% o/ B4 ^0 s/ D( \- h V) Z2 `定义如下:
4 n! t' |7 L2 G5 ? X. w5 }$ l( a" w
+ P9 m1 a' V; y; I/ y5 `
& \/ z6 D, X% E& o! ]" D& B6 J5 I+ q- k( B
4 H5 W" p* I! g! B8 J/ x
) N6 g' w/ R3 G2 J3 g网络安全
) z* S* K. ]. ?! A: P
; [" ?. t2 s. t. s参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。5 z/ m! B5 o+ k" M h6 W
. q0 R# O1 k. V4 g5 |. o& _8 m
官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。+ Q" ?3 Y; q7 g7 e% ^4 x
' E: y# U' V- F/ `官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。
8 A* e- ^1 [+ F7 g. Q
M& w9 R7 G' f' x链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。
9 G6 O/ R$ B0 ]% F
0 `" T; O: t9 W6 x7 D网络演进
( {$ ?2 v* V2 q& A
$ \1 \( N* i9 y( QYOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。
. p ^ c- G4 z1 b" s4 V4 }* e5 H. X5 T& M" ? U/ p3 A; [
1、通过安全分片技术提高可扩展性* d, m9 D0 U% r' H
# \6 z% o! e8 G1 h# N& g9 K
2、逐步调整众议节点的选取参数,实现「人人可参与」
4 C% z- t7 l6 A' l7 k( Q( o B# g
3、区块提议节点逐步过渡到从众议节点中选取$ {, d6 O! z: _6 B2 f
" o& x5 u& g) D/ I
4、逐步降低参议节点集合法定票数 的要求
: x1 H$ N) Z& R/ V& a7 h E6 U6 W" w6 z/ Z1 `# U
5、参议节点的功能将演进为:存储、转发4 g3 |) y" s4 t+ \
& g# N5 V1 } r前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。
* b4 s. A. c. M/ l5 u2 ^8 g1 O8 F* m' n/ S* s1 ]
以下为问答素材:+ x; h8 Z; U* Z! ~: j0 H
6 Y" t, u2 p8 ~
Q1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?2 v4 V( V2 _4 G- h1 b7 p
0 a+ {0 l1 G9 p; {' d q何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。0 E/ q& ~& E3 Q
5 t O) ?* ~: ?( l5 f
Q2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?
' y; b1 i; C9 T# U/ Y9 Q
1 C: s V( X$ {8 z% C+ O4 D; d/ Q0 ~, B何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」( U+ X. s, H$ h" r5 j
. K* Q1 W: _0 P8 E
Q3 参议节点和众议节点的数量分别是多少?会不会扩容?6 S: D* T% j3 d/ M# e
% ]4 j# C7 h3 i
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。: d; V% a8 n2 L
% c, d z" Y8 g( ]Q4 参议节点提议区块,是否有中心化问题?
. {, i/ @1 I/ E9 ~
( |% O' T6 w+ Z- }6 T, L何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。
3 p. f7 L1 l- C( Y* E9 I, Z P3 F. U/ k
Q5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下% H, R& o" y& m% Z" Q# X3 V
& [3 }6 e& I5 x# f t6 F何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。
, X, r9 S8 ^' l: U7 w# S( Y
n0 p* v1 ]+ o0 _Q6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?6 z' m9 n4 |; Z! X+ O& b; z J% n
6 s2 A4 l) R4 Q7 ~' b
何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |