网络与节点
( D* ^4 }7 \ Z5 a' k" y0 g8 q# f
% G9 E6 V, E! Y4 C6 ] 区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。6 X$ t8 a& Z) a1 m8 d, m: N
1 n1 Y4 j1 g1 Y# W5 n' ]& J
共识与考量
) l; o `4 M* X5 l
9 M- ^; X! ^9 k- u 网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。
8 S' Q9 d7 f0 p7 D" z ]/ m2 B/ q2 x& M. ]0 y$ G/ L/ o5 K5 l
大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?
5 R# A4 M% o0 {' T; {# V$ R
+ f3 `5 f) z+ d8 O6 A7 G6 d原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。3 I& _4 B. t+ ~+ ~6 J& ?" H
& G+ J* S7 r( l+ V2 e j 现有公链的问题2 z T4 S0 Z0 V% |) j L
/ u' k3 W9 M2 w$ c BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。5 ]" t8 A7 z7 I
, w' i, P& W8 y; n* ?
BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。, N3 }3 ]. o+ i; W5 _3 B8 I
% o9 l, a1 f) J- M. y/ q( ` EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。
9 P7 ~4 u/ q7 v- ]. d
- Q; }$ V0 v' K; @6 S( ^7 J4 b& Q 可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。9 P+ Q. v5 V* [! X$ n( s
3 y' W+ L9 U' v. g5 I# M
YOUChain 的愿景
. n2 E& B) |. }( J% p( @* n4 e
! x% f! d G3 M: B4 E- d YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。
6 f( p6 G: i/ q& d- A' o' _9 |$ t% l
1.低性能,速度慢,难以扩展,不是我们想要的
. a! Q y' L' |% d1 T5 K8 L+ `; o( S8 g, [6 D6 ]2 \
2.权利高度集中,不是我们想要的
: a) O3 H' g8 \2 l" N3 m( n* K2 U+ c: U8 s$ ]+ i8 f4 e
3.使用费用高昂,不是我们想要的
/ @* L7 ?( y, W% p3 m3 r# O- u0 G8 ?/ p h& N
要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。# U6 m7 `) n/ o' t
" y% T3 n& ?# e5 E
某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。 {, ~9 f. w/ g' a
/ r/ {% m8 g: k `7 g/ ?
思考性能7 w' @" [8 x* }: h3 k
5 U+ d, i9 q. u- s
回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。7 ]% I& ]) ]% Y% f' M1 B/ _# w
, B1 ]0 L2 e' d' N
怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。" ?: ]) c+ L6 v8 I# Q
" X, i( ^/ H7 E0 g, r( A# ~
思考 one-CPU-one-vote
' q# X0 i" G. u% G$ V" u# }$ ]/ M+ o( w2 G b7 n
考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?
* m6 E8 A |; _. a* a
8 R! w, g4 o" f+ q8 N 为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。6 n% x# J" m7 o6 L& W) d
! ^2 ~ J C. r" M$ J
当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。% w* W3 S3 |- F: p
7 h& I- W V+ Y) i! r思考费用# W; t$ H4 z" o+ k+ S) F
8 a! ?9 U8 r4 H
考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。
% f. t) P$ H% [5 ?& C- i* b6 r% K, `; R: J7 L2 g8 [3 ]
那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。
% ~$ c- M! ]! E- a+ s: y7 S4 }/ Q1 L) G; O, @$ C
基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。
& c/ X! U) j6 G" }- G4 A/ R+ x2 C" d; U# ^) P9 U" Q; B
抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。
! K/ L: |2 }2 @2 A
0 _! a9 q9 r' f A" @ 我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。4 b8 ?: h' _8 o* n5 P% p
7 m E2 V5 I; q/ Y5 L+ n思考可扩展性
. x! Q$ a+ c! I9 ]& d
& e$ F4 i) ^7 N 从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。9 E; S9 v- T2 ]$ w9 g. R' S3 ?
5 A$ J/ d+ N, ~; c2 _- { 同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。) J" M' e+ b( F* l4 `1 P# ~
/ }* R/ W) M$ U/ e7 Y7 }! k
YOUChain 共识「YPOS」7 l' }3 k+ a' f* X
$ R% N9 ?2 K* A& ^' G6 o- V
为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。
, K# R+ W2 L! r5 a9 ]8 T& d
& N; k0 c, ^. [. o% U共识流程,主要分为两个阶段:提议和投票。# v5 c9 Q( N& D3 c# e7 k
5 G% b* c0 u: x6 d L! @9 l B9 m1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。4 d# t' e, L5 ^( F% G+ @
i# {* s% O' m
2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。
: c" x5 }: @6 a* t) y+ z# X
0 w5 Q8 K& c* E, n8 m {其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。$ y, T" L8 H# k3 \# N1 r
4 r1 E5 x, D7 J! g+ C' X5 Z在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。
5 r1 y: I* L$ d% v- o" f# q2 b+ Y4 ~7 C# W7 V/ P8 L' C
YOUChain 节点设计
/ t" R! U, }8 w6 R7 N* ~; e5 y/ f8 P4 x; M3 n+ w
安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。
' b/ R# A! w% a: W( Y2 @- L% ]8 ~& ?
3 B0 r9 I b+ Y; j1 |在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。 t4 I+ a' J9 q9 j/ ?+ _3 i) r1 ]6 H
, o: }5 O8 P) H1 Q 一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。
$ J. o" a# s1 p7 `
& @# S6 w1 B( @; S 如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。+ Y; h5 Y2 \7 j$ G
: j( V5 T4 e: r9 {
为了实现我们的远景和目标,我们设计了如下的节点结构。
. z5 F; Y$ [4 h% s( q% n& }$ m& n: t9 I7 I9 w
节点类型
% Q5 }9 B8 E" z. k: F1 f6 Z) |
* n5 `- c) E; K( u系统中包含两大类节点。6 M9 G! n" Z% {# G% m0 Y
& q, X( n; j/ C5 L2 V8 A
1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。
. X* M- [% U3 D- J# r" Q+ [- Z/ c
2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。
K* n" b6 d; x8 ? X0 D3 g- u0 l* Y" B6 d( J6 d
以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。2 j4 q6 a5 X7 Y- c
; ?5 v% A5 c: B+ ~% |4 l7 t
节点选取方式- `0 f7 n2 u! }2 {
5 u& z- U7 \& Y( G
l5 g4 B# ]4 M) c
0 V: P& m' j" D8 a5 r8 F; ?
3 z8 v2 t, q' |1 J
" A2 @0 J t; [/ j+ [8 M# w0 n) y
: H) o! {2 P7 W- |参议节点参数「待定」5 ^( t" f# }; H; v
+ b( _! h! E4 y3 e: `
$ h* p! \! J; G* B0 g/ H5 R2 q/ [
( q8 i; ^. ~0 t
3 {5 F4 k* B4 L' H' ~
+ S. T5 Q/ g: ~众议节点参数「待定」
& ]- Y# f# C% z8 }! F" X3 q
# l! r( Y$ n, d8 v2 {! m' O" `+ T" ~0 L5 ^0 Q4 k; F, q
5 K& f, A* k F$ s; P
Q# G2 H5 E3 X4 E% `) o. L. b7 X/ T
) T2 D/ J' U0 R/ |两类节点对比% \- _5 c* \' }9 \% t, u% ~& _
$ I9 c5 o0 s: w5 y7 h4 w
" I$ E7 z% d6 s( q. o
0 _' T4 T4 I, H+ H! x2 P- W' h
4 g2 c; j7 a0 S0 Z% N
. u+ x2 G( ]3 |, w0 F" Q& E 我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。
7 z9 E# t, q( D8 b
7 s, O! z& H8 p. e$ F& s2 lYPOS 区块敲定
) D- e8 _- Y8 I5 {6 O1 J! X7 q/ b* u* ~! w' @6 H0 X3 G/ n* s9 w
1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。! e( p+ {+ n! Z% ]8 B+ N
2 ?" ^( x4 n( E# j+ X1 P2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。9 O e- ` X! T2 S z4 M; g
2 y, A( y$ h9 j5 e6 A# U( H3.满足法定票数的区块,则为敲定的下一个区块7 s0 l3 H. r, O- r1 @
. ]4 M, m# f( |0 A# ^2 I7 M
定义如下:
* p0 }" r1 d0 J# @+ k, j: y- [; q9 N: {) w* K5 P( E4 [
/ u$ f7 }6 f( w+ s
# n+ }4 }- S/ F+ D# W+ Y6 B- N+ V
* F7 x8 i! ?& |3 E+ x! D4 O: ?) j( ~$ g2 ]( ~* x$ R5 X
网络安全# M1 g; L$ F' @7 s
1 d9 W% J5 M: H
参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。
+ D# K u( o1 j/ s2 g: W3 I- h7 ^: o- m
官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。5 e1 P7 j7 ^9 h, b# o: Q" }1 x
* j8 `; O `& k/ ]/ p
官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。
7 k) \. w) K3 x! ~( E
* Z) d7 j% k& i2 H: o链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。6 {# o- l2 M. r5 c1 |
6 Q6 v/ h* p- F H! t: c( M k网络演进4 { y( T- \- w$ y% @
" }$ a* ~) W% n2 V8 R) Z
YOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。3 i" q8 r# q: }- h% {0 V1 @
B5 T! T) h( p, O
1、通过安全分片技术提高可扩展性) r* h; C1 \+ k( Y1 ^! g% W
% V1 X' }5 f5 J9 |' V3 F! v7 d5 P% k2 A2、逐步调整众议节点的选取参数,实现「人人可参与」
# L6 r+ U; E- ?, m; F
; ?- r1 N" `3 @4 e' d* P7 S; E3、区块提议节点逐步过渡到从众议节点中选取
1 {% N: }% n. S8 X
# K/ Y! i: ^$ G3 V" ]: g# F+ N$ ^$ V4、逐步降低参议节点集合法定票数 的要求. v, i0 M8 m* y9 b7 ?
" ~2 ^5 I* o* n6 {1 U0 `5、参议节点的功能将演进为:存储、转发% i1 S9 Z4 k1 V( U/ Y) @. z7 V4 ^% J5 G
& P4 H- ]1 ?8 T" k' K e1 _
前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。
$ f) k' T! u' X9 J& F, V' Q+ q4 Y# \" n' b9 k3 R1 `! O0 G! o. I
以下为问答素材:& e- b' n8 O, @8 k, @
- _& m" e/ W* u& } d& j' N; j- _- B
Q1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?2 C. L5 X+ j2 U' p/ E
8 q5 [" A* B) r1 u3 X何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。 e1 _+ |4 h/ O& S) _
$ g/ \& {8 x, o1 N0 m* uQ2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?
, ]; O: g: n6 K, v: u8 I% g
% ^4 E) B+ K& A6 p何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」
1 W0 y8 o8 t; a0 x
0 K- q1 y5 `1 F/ h) J9 R% RQ3 参议节点和众议节点的数量分别是多少?会不会扩容?# A; x4 q6 e$ m' |) d
) f- Q P* s2 y4 ^6 C
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。
$ g" p; d% K2 _7 e" k8 A7 ~
; I# b1 [5 j' \ Y& o1 T( ~) wQ4 参议节点提议区块,是否有中心化问题?, K9 t7 t1 _% a$ T
/ }* @' C2 |8 w. Y
何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。, b0 @" z; x+ J" k) ?
5 u5 j2 R7 L9 O1 @2 l
Q5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下# ^% e2 K3 q- Z g$ R$ E
- V0 @( L5 \5 c何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。' f' M( i1 ?. G5 N* U
1 R& j/ V' Q& vQ6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?- `2 T( d0 {# \" e- S2 s
9 _1 |" i4 N$ s4 t' E! I7 v* V7 u何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |