网络与节点& K7 ^9 c8 L4 T2 B% `" u [
: m L% c/ Y6 W) M h+ p/ M
区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。
# E- o2 }) o/ ]2 |) S4 o8 E
/ w- Z' n H" b% o) }' z; s. _) T; X共识与考量
- f7 G `+ Z: l
/ t7 n+ ^! H W# |6 Q& B2 X 网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。
* L* x2 o' E& k( N9 ]" B d7 g. c( B6 R3 Z' _$ K) ^- g z
大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?
. s7 q+ Y f. T* S1 `" f/ e
5 G' h) C( A) t- ^7 w- a- z原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。
( P% Y' N" b* z
. J. N$ n* N& _* I 现有公链的问题
- L( h' _, Y& `" J8 t+ c
$ n% I) o3 Q2 x G- {* z$ o BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。
3 u1 Z! X4 ^7 [% m$ g5 X/ j& r" }' d3 E1 j. g& [
BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。
t. H+ m/ B6 \' D
* V' F7 S) k8 N( ^ EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。
q" J# F+ \* t2 c2 F% r/ A; F
6 I! [+ S. E" ^( a j 可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。- j- b8 ]' }* D7 [! u# S
+ x3 Y, a, M- x( [& o& ^" D6 `3 j
YOUChain 的愿景 q. c9 V; }, F1 w' w' e
8 f( y L( v/ o7 h$ c YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。
/ b! ?( j, G1 Q- d' h3 @$ w! c: a- q; J( r) a
1.低性能,速度慢,难以扩展,不是我们想要的
1 D8 I3 ]) e4 H9 w' x* J
$ n m& |/ j4 s5 B2 Q2.权利高度集中,不是我们想要的
2 ~& e& ?# {4 B+ w5 K5 Q, I5 L1 X0 D. i6 x/ e M
3.使用费用高昂,不是我们想要的
4 I+ O$ R- r, x( [
$ `- j4 W/ i0 w1 @# V) k+ @/ F# h8 V 要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。
3 S# W- z0 u9 A; r
- ?' v8 q# M! J 某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。
, B3 R0 \8 K3 Y
- K8 O: w1 B6 g( f- Q3 F思考性能
5 ~3 b0 h( s) h) @- ^6 A( N- V4 w9 \6 @3 j7 n5 O! s; ]5 ?
回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。
: u+ o4 Y& t8 h0 k, o! x
+ A/ z7 [/ z, X/ c怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。
0 E& m# g, [9 v) D$ g1 D- h A; o o+ B0 F# D- w* p+ r: p( T3 p' V O4 x
思考 one-CPU-one-vote
; k( R# ?' y2 L+ E' E
+ T: b0 ?7 h' B9 W 考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?$ K0 b7 i0 j5 u; R" ]) E# _4 C" W
) ~/ K9 w3 Z7 V+ K' A 为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。
; l; G; |: q' |+ m) a1 V5 n- X4 a, M* v, b! a( f) I4 D9 w0 b
当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。; O+ g3 c$ s( P5 H( Q4 o
$ w- h3 \" ^6 j3 @9 ^) \& x% G1 ^0 y
思考费用( Z; ]- A) d( p* h" p) \
% J. O0 r7 A& o6 }- _7 z
考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。& }( K" Y. O( p# Q8 i
) ?1 ~( L2 q8 O. V那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。# U6 S) T! r3 e( R' `9 c& C
% Z+ n# P7 Q; H: T- w
基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。1 ~. T2 W9 U9 J
, I' ?" y- l2 e
抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。
- ^5 z! V, _* E; b/ j- \7 B
6 M0 q! M& S V/ j 我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。
, ?2 E" N+ y6 f0 z m
" _8 {3 C6 h' R; I1 `* p* S8 J思考可扩展性
1 b; ~4 c% ^8 M: `5 W1 I5 G6 }* N2 ~1 n& v2 w
从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。2 n- l( b5 ?0 {" ~$ U, Y
3 y% i: |9 @- _- F2 b' T0 q" s0 E
同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。& d- R0 o! m- A5 C
! D, E4 b$ {7 F7 f& S4 M YOUChain 共识「YPOS」
( b( d) J' \# H2 Q" ~1 ~/ {
: T; v3 L* }- i: w6 h3 E 为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。% K2 t8 g* ^* a( c: j3 B
4 ]. m( @4 i( g2 ?4 _0 n共识流程,主要分为两个阶段:提议和投票。
3 _% S) n- g/ Y7 [# v3 ]. u# \; G* D# k5 b8 u$ V
1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。; p5 J `* q7 E5 Z( E8 l
6 P: o! g) `* v: m6 |& \
2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。3 [ Z: R( g/ U
2 I4 g* X$ V: C) @2 n其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。! ?9 }; Z' r* l$ o" X1 b1 l
# _( Z6 i' l. Q( e9 R9 d在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。
) w& Z& k" u: g, w3 ~
8 I7 [3 D$ [- K+ }1 hYOUChain 节点设计7 L B2 h. s4 P4 U! x( ?
+ l3 K/ {) U9 A1 i' W) F 安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。
( T# D0 E: @ H3 I# c; _4 l% y; K/ ^& D/ x- B
在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。; E/ U5 @, B7 T+ _( _: x$ e
1 h3 |, }2 i1 I
一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。
* b8 [3 J" x' X: m: {
: F( p; t4 h3 c* \% {9 l+ \5 ]4 ` 如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。3 F9 E( C/ `% t: u* _
* P: C7 v& E N; z0 n5 A4 w3 V
为了实现我们的远景和目标,我们设计了如下的节点结构。
% d. r6 p5 k& u
z& ^2 v% O) Q8 v; p- p" Z节点类型
' u0 K; A5 W1 v, H
* P# e* o' @9 N- c7 x9 S系统中包含两大类节点。. |* e9 ^5 v& a
+ t1 B) z+ l& m- D3 h4 e- F+ M; T
1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。
* d& {( G1 C; ]/ T5 S8 H9 d2 K+ n: z
2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。5 e5 S* r4 M" B: y, f5 b! s7 Q9 Z
B% T& f' s1 E以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。7 t' f& j# s' T4 ?" p
- s- H& M- A1 M- O
节点选取方式
* {' j* J) L: p
8 r1 n; E/ Z4 {, X; I4 U7 u4 P
& _6 Q2 Q5 [' V- d, k* y* F0 x) |" [0 I
* ^1 @6 s( M/ t' E9 z6 o. P0 `* j7 L& ~
5 D" T3 q1 C7 F# c- S
参议节点参数「待定」 H$ X, W6 U$ k c1 o/ M3 A
# }# _( V% I0 ]# `
, U) }5 a+ B% j! j t0 E+ K6 m
P+ \, }/ r! H; y3 V. i. z# ?/ q# W/ \
2 _, I' Q+ M; b1 I$ N
5 j( _+ @( d. g5 E: p" v众议节点参数「待定」
3 j4 Y" R' F' H/ H. m" \: H& |1 W0 q
- M( `; _' r/ P. v( X8 ?4 B' B6 [
; W( y4 P* g, U) R% b" f# x1 S
- K3 E4 F( c: j6 J2 \
, S9 T* E6 X: e
两类节点对比
6 ?9 B# U3 @( M: z# Y( h% `) k& N0 P+ s0 d( c/ x; F3 i7 E
1 a$ \# I G/ Z) @" m/ `" N5 e. J; Z: s% }7 Q& o/ u0 ~9 J
" A) H* H5 c. Q: m9 T+ E& E
8 {1 \2 E3 a( R* b 我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。
5 t! V4 q* g" d% ~! p7 F% S0 q5 ^5 u3 f7 T
YPOS 区块敲定. c( a3 B# i Z& b
( a. s4 B& N7 `- Y8 z1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。
8 N! y7 X( c- J2 C5 `. I+ P( i
1 e# t9 `) r( e2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。
' j5 X3 L: T3 Y( r; z2 n# D
1 Z, M. E5 `5 ^: G8 j1 d9 s' ?! X) V- N3.满足法定票数的区块,则为敲定的下一个区块
9 X$ e" z" X' P* |
; R0 w' J4 G z& q& A% s1 V' }定义如下:
; R7 ~, `: N1 H- X6 C. p1 ?3 D* b" w* g$ S) {; x; m/ B4 o
9 ~7 k' x8 r, a- r. P/ c7 ]. K
% T n: u3 O. P) c( s' b" T" M
9 J) `% R1 p. I4 X
. X; w& ]3 @( g. U% X" {
% { N4 ~7 o9 S网络安全
$ l2 a4 `- w+ D% Z/ W) ~
9 K( q |+ R: Z/ ~# M+ q& r& P; b参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。
, t3 x6 c" `) `
* Q/ k0 m/ S- D. r: c5 J$ C! D官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。
5 B- B2 F" X( c, b8 ^ R+ B+ R; I) i% r. l* V
官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。! z8 E [ k0 C6 N$ K' {9 K7 Z
6 v9 q; {# q9 a: M K% l3 b* V链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。
. i- Q7 n m/ C: \, f* ]0 y4 X- C( A7 x
网络演进7 W/ h# G( [: F* ^# Y. M7 c
b- [4 w( D" ]( B% T% T) CYOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。4 h( t( N$ C& a9 ?/ `( r$ {
8 d; s6 ]$ i, H0 d x
1、通过安全分片技术提高可扩展性1 _ Q; a8 @5 A/ T; |5 o h
/ b( C; Z5 T: w: W$ F5 `
2、逐步调整众议节点的选取参数,实现「人人可参与」
' f/ w) V3 a) y- ?3 c
+ \2 {. P) m1 o7 {3、区块提议节点逐步过渡到从众议节点中选取' b: i; i% g4 [% Z
* _: y/ E3 {3 F: ~4、逐步降低参议节点集合法定票数 的要求
1 {: J$ m( f+ f- d$ s
M( S4 F5 t: b& S4 Y5、参议节点的功能将演进为:存储、转发
0 I* C# f1 F4 {4 D4 {, |9 [9 B3 k$ q* V/ C& P
前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。3 E. q. d3 [, h1 i8 F
8 Y2 J" x5 a3 Z" N: \$ n
以下为问答素材:
5 F1 Q+ K/ m7 Y% M/ u, d0 }7 _3 a4 i- T
Q1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?5 F' U0 b' c; {
* S* B' s* |# g8 U
何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。
5 b& D& H2 S6 H$ Q* c* d! E6 f) A, T9 m# y7 o5 u% h3 x( N! s
Q2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?
- \/ k5 M% i. [, t7 Z/ i5 P7 ]
* g) y2 Z# y1 J何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」
. }5 y/ i2 M* \5 q& E- v. U' U% F5 U, ~
Q3 参议节点和众议节点的数量分别是多少?会不会扩容?
" H0 ^+ g$ r) T/ a8 E) f; j B- l% ?) i4 P, J2 Y6 z
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。
4 H3 o5 A0 `0 G- x/ H7 c1 ^
4 m. P0 V$ Y: x* EQ4 参议节点提议区块,是否有中心化问题?
# i% Z8 V4 K+ X+ m6 u! o% m) M3 c) v* A* }( P
何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。; ^7 Q/ C, } B% B2 O& ]2 @% S+ A
0 V* u0 L5 p+ i6 E/ w6 |; M
Q5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下9 v; Y0 |: l) m$ t; ?; l: \2 Y0 @
* \; v, {; R1 y* f; v何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。7 N, f0 V8 M. j6 D8 D% ?
/ h, Q) Z& l, x7 Y
Q6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?, a# j! o/ n' V. H( `
! M, W; F1 d, ^1 ?: w z7 Z' v何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |