网络与节点
) D) S0 K" {( v) G& s1 h' a7 o i! U2 F. d z1 u9 ~
区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。& l% ~* t2 r5 y. t, G7 ?6 l
# ]+ H+ g( l N4 |# J4 a, Q
共识与考量' d7 O6 e) n% \3 k5 Y( d
" B$ _" m, ^/ Q$ f: Q& G% A# s 网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。
' w. Q6 A( W9 S6 G7 w3 ~2 n. F" @* P: ~4 \3 f" A+ G1 Q! ]( B1 o
大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?
9 _1 Y! n! q3 s5 j# a# ~& ?0 J1 n4 {+ e9 n
原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。4 h# U+ e5 b3 |4 g" E
5 F& S8 m" C$ j& o
现有公链的问题
5 R$ D: N( Q, G# x. I8 {% }8 A5 a# ^: v* M8 n: g7 d$ b
BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。
& k2 Y) V6 ~" _- M8 S2 m/ }% y g0 u+ G! [& O! {1 Q8 n% X
BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。0 d: G3 Z" d( s! ]& C1 v. N
e& a' C4 Q! a4 `, a9 R EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。3 y. U+ |" T6 B% ~7 v x2 B
% l8 R3 E1 F" [" N+ e: p8 o 可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。: M! {) n7 H- R& @5 f5 X e
{- v; t K, V4 ]/ Z* m( c7 PYOUChain 的愿景
2 Y; c9 @# s. H1 b2 X
( s: q0 R! ~) W* a7 z YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。
- V$ r" |8 N/ i- c* u% K7 {) ~0 y; Z4 i# F
1.低性能,速度慢,难以扩展,不是我们想要的" o6 l$ f( g) {) K. j
% u/ ]( @0 c! X" C5 L/ U
2.权利高度集中,不是我们想要的
; p4 b' W2 [/ D* ^( G2 p4 e8 ?. w6 v K& `
3.使用费用高昂,不是我们想要的
, u' ?/ e8 S% d9 @
z3 I( v+ V9 a1 j, @1 L0 S9 d 要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。
) r- c$ o1 g2 x- A% j7 m
; N T) {4 q$ M0 v; e7 o/ l. Z 某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。
$ B& r/ C% F% R7 g/ L( f* T
_3 @6 W. M- O! @( y; p3 l% C思考性能8 ]2 T/ y/ Z1 W/ n( _' R* S, X3 L
4 ^ {1 ~6 e+ q$ H- D( @
回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。
- u3 @8 s' W4 g0 Y! @: k [
6 K T" t, \" b怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。
. T8 y3 ` h- _6 G- b* B2 `1 O: L( H b. [5 t- J9 E
思考 one-CPU-one-vote' E8 n- r _6 }0 o8 Z6 z" g7 ]
% J/ E$ e( s h( Z 考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?
, W* I7 q+ {- `) a3 ^- E( j5 @. M7 z2 ~7 J& l: @1 e2 c
为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。, b7 ~% k% }5 }/ I
' g4 e) P% \- r& q9 }7 S( N1 f
当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。
* z/ n" Y7 B7 {9 i
- [: }9 P0 o( T1 i5 [! e思考费用2 L" C' U& x; |1 L0 u
6 z- X& r& B3 a4 U. b, E+ N
考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。
$ Z! {- Z& X" Q" V
0 l) t5 _- M X! b那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。
, W5 ]- Z4 |/ p) ~' R6 H: A
- ~$ C% V v- |1 f1 U$ r d 基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。
5 B" B. X/ }, ~# l; c0 N; ^& ~8 ^" N* V5 d4 k
抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。
: X+ q* x/ Z, q' j; d) l4 M& L$ s6 a% M& a% C5 ?
我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。' J- P4 D) T6 W B4 d, i* f
. z, m: r( M% s
思考可扩展性
" A0 R' E5 Y: W1 P+ z b ^( \
7 I4 z2 Y% y4 w2 K o- c1 R3 G) z 从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。
2 Z; l8 D y% K0 O' J* R
- h/ h5 q+ u7 f% v+ } 同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。
8 X& L2 J4 X E* ^% c
7 X. B" M9 _( j7 W2 M) ^9 p" p% Q YOUChain 共识「YPOS」! U& Y# U% e; a3 @# E9 S: i& a
; s7 X$ E4 t! k6 T
为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。' o' ]4 F9 N: j( k! v. G
7 S0 b6 S/ N' k
共识流程,主要分为两个阶段:提议和投票。( m9 ~/ A2 }( q4 \( F, o
* v/ z& t" u. A9 }6 }
1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。8 q& _, `% p0 b2 l* O5 F9 c' \
/ ?6 P1 ?, H2 E9 q
2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。: l" q2 o9 b, z3 E3 M% I
. w1 r$ e4 }$ X1 ]) L0 Z0 |# _) O其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。
3 k) {; y7 M8 F& j. H+ J9 M) e5 r& ~% y2 p
在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。. H% f3 B% {6 B) b+ B. ^$ b0 s; P
5 ]1 i! B; C& d
YOUChain 节点设计7 B+ P9 E" X6 x5 ]& i; X
7 d, z! |' R1 I0 B$ k 安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。
8 Q, }& r, R% Y$ B2 e3 w% t; Z$ L* E! x& S. w: ~7 |2 U
在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。
X. d8 [9 ?& V8 I/ o; z, A1 \* N! Z g3 a/ @
一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。
$ |3 O7 u4 Z7 E) N; l# m# K n5 P6 G
如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。# C2 E, X% A a- H X
* o$ y0 o7 k" B/ ]8 }1 J7 R为了实现我们的远景和目标,我们设计了如下的节点结构。: T- _5 `1 a3 i- W8 v: t3 G( A
3 w+ K: }* K# B节点类型9 w6 _2 S2 j6 T
2 T, B- p* Z1 Y- o. m8 V1 L
系统中包含两大类节点。; ~1 {2 B: ]& Y f2 U7 z6 Z' O7 {
0 c# z) E6 X" c1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。
# Q% u0 Q1 ^: b8 R2 v( w* U7 I/ o" k( I5 \" e
2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。
' O# v' }4 |" E% h: i
& |. T. F! Q' h以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。4 c! E/ @" r, q! h1 t
! Q3 p2 k4 z: }+ h. x节点选取方式
! b8 @1 p# l6 n8 H' q$ y4 X- d; a. y7 C; R* b
: U* x& _8 j) L0 P1 D
+ n6 W- T+ `! z1 ^- f6 s* r2 P
+ m5 G7 d p2 B
/ P8 N( x) h0 A1 f7 v1 ~+ @7 E2 s1 L, j
参议节点参数「待定」4 p7 [, R$ I9 k: I
" f7 j# J3 C) @* z
& k5 U8 M; _3 G% K0 i$ G
8 W' b2 ~ ?! @1 P) ~
/ x9 u+ |7 V$ I7 R4 `3 f
7 s( A: p+ }3 d( m: t众议节点参数「待定」4 I0 v# w9 W6 S9 u! T
7 o: L9 Z T; `& Z
, w$ w/ \$ j5 e* [' a6 s* q( B4 v6 w, X9 e: b* x/ p
) I; G: N2 D6 l" a7 ^0 c! Z- H! G; i% F6 f# t8 V
两类节点对比; Q3 n6 J! A& C
( R) ^4 U! }8 `; n' f
" v: ]0 f& f' D& V( F, V' B. l n( s3 V9 N3 B, J& f% n# [
$ Z: y% D( B! L7 g- I
" e6 H" ]# K- A" n2 I
我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。' U2 Y( t( A3 y
/ |5 K" d7 a0 I0 o) S$ P5 S. ]* @$ HYPOS 区块敲定$ J' ~7 a# d/ j* a- m' I( }# k
1 s3 u7 O+ d$ z
1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。. D1 M! t- }3 k* \3 U, V
, a9 B" U" G; U, ^0 f& r' @2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。- c5 p" }) v( u6 W1 E. X+ p
* c# v S) L- \) z3.满足法定票数的区块,则为敲定的下一个区块
, B+ |& l+ {& D* u7 }2 X* j4 ]2 C' |# x" X! m
定义如下:4 v" _: ?) d4 N) g4 }. |
: Q3 j* N+ {$ [* f- R
; {1 @( P( U. |5 k, b _8 ~2 T* _( D- i
, D/ \6 C- \/ S4 L. T/ B) A# s1 y6 m! l- `3 E2 i" W$ ~7 { ^
5 d* \1 b* J5 v网络安全# L& A9 r3 n0 p7 k
- b) n- r5 G' V& u+ Y2 l参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。5 t" t. c6 D0 y% U* A9 _0 ~
: J6 h O8 W. E+ z0 h官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。6 I' s2 N+ @7 b; c: l
+ O+ D: W2 i7 T, Y官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。
. C" a0 S- J! ^4 J. J( L: z8 P* @ i* l
" A! g9 c$ I8 }9 S链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。
# U6 e; d# R. a6 E! u8 a4 r0 r9 B7 j' L6 m, A: G
网络演进6 t V# E8 c; n$ I5 {. ~1 F
1 ]* `, |) h0 `; L
YOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。5 }+ T3 J, }4 o6 s2 G
$ m9 ^4 z1 o8 ]3 } s. s1 d
1、通过安全分片技术提高可扩展性
! A. |0 T6 W' j! f* S \- _/ I7 `& v2 d
2、逐步调整众议节点的选取参数,实现「人人可参与」
6 J' j0 w& J: H* r/ D. u
; m4 Q: \9 g) w* P/ F3、区块提议节点逐步过渡到从众议节点中选取( D& E3 r) z4 D; J2 }, N: T$ [
: |* o* B3 g+ X, N$ i. {' P
4、逐步降低参议节点集合法定票数 的要求
% D( Z' l+ u4 p) }6 m* }0 [: |! e. l. P9 {4 n1 u
5、参议节点的功能将演进为:存储、转发
* A$ B: B5 B1 o+ j! m3 K$ v) f) G3 C
# s. w3 p8 F& c, d前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。
7 T% u" P8 b$ @/ `3 T5 Y0 ?, q K- t7 K g! M6 ]" H
以下为问答素材:
7 U. ?5 v, x* S9 w% p8 w7 S( G* w! E, S
Q1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?
5 E+ z$ G* q8 J) W1 t% e
9 U5 t7 ~$ B/ R( [+ ?何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。; e J' `9 ^1 z4 v5 g& q4 Z
% v; b. e- L! _. mQ2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?
$ ^' j! {3 ]: A: ^& K# s( C9 N: N5 Q9 g, c1 Z
何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」 M2 x( M0 M$ F: ~/ j
5 f3 o2 h5 C1 i1 x
Q3 参议节点和众议节点的数量分别是多少?会不会扩容?
( h1 N g3 Z1 Z$ t# e- ?- W+ R% J% S$ Z3 H
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。/ z1 c2 [6 n$ g
: ^* z% P2 t" I( l2 [" L- l9 r
Q4 参议节点提议区块,是否有中心化问题?8 }4 \, ^5 R3 C Y$ l. W P8 L
- I- {1 Y9 Q5 E. T* Q1 \" P+ ^
何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。
/ ]* S/ y; A/ L) |8 J; Z' z9 _
& z, D: E( S6 t- @8 |5 H zQ5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下
' e1 o. c! }: s0 Q% W. n6 ~6 w* t* F2 t7 i! P+ d: m+ p
何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。$ Q/ _7 e9 h# K4 q! o0 r' y: Y
4 t1 d$ `3 Y4 y% P+ tQ6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?
6 f/ [ k9 Y/ n8 @4 i8 I8 s: s( a: x3 m1 E/ _" J
何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |