网络与节点1 Z5 Y1 z# i! _+ ?) |, H
, S( z( M5 q0 J 区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。
B( T5 C& q/ W2 _' D! w+ V& l' b3 r# _) E; P
共识与考量
( K, |+ |. t' l, |3 K& l8 G9 E, j5 _: V# E2 S8 ~# x5 |
网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。
9 L& i9 J( ?/ k. U4 Y% s: h" L% D, v2 G$ _2 y' B
大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?3 }9 S ]% G/ Z
7 b6 L/ f( y2 T! Q4 ]# g: _原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。
$ }& Y( D$ n# U1 _) r. ?! d, l1 R) X$ Q x4 Z- e( l' _' x
现有公链的问题
( P3 e3 ~: ?/ X' {8 @4 M
( \8 i. d+ ?: U& \' b) m# E BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。; S/ G% c7 a0 L9 j
$ U& }6 I1 f+ m& s) D
BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。2 x5 S( y0 b @/ x( d' x7 _
% _* b: B* n. ]5 a6 g EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。
8 y5 f! T/ h: @& L* z
) Z1 M3 H' W5 P 可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。
" Q( @1 F" t6 H/ ~/ c2 _/ J0 v7 ~, N3 K8 n" k
YOUChain 的愿景
: Y5 e; h5 ^( a6 x; Q) y! ]/ T. t7 R7 F
YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。1 ?. c4 m# z4 A! ]& P* ^0 e
' j6 U% J% ]2 c& u V6 H
1.低性能,速度慢,难以扩展,不是我们想要的 T* C0 a5 Q$ b0 d
* ?) X2 G9 k8 o& V" v6 T2.权利高度集中,不是我们想要的
9 X% o8 e7 l% G! P: E8 g
" Y7 |0 g% L& S6 Z/ U1 j8 r3.使用费用高昂,不是我们想要的0 C8 K! i. [) q& w. a/ M; U8 }
# N+ [3 S# l. f$ i- h% x2 {
要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。" H. F- v" G0 a
- o; z+ F# B, Y/ @$ f3 s% U6 n
某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。. x C6 _- j" c, M' n4 H
. v5 G- T3 ]: b0 j6 s4 l% r思考性能7 ~, f% J8 @) Z% t; R5 U# J" h! B1 f
8 n/ F8 ]4 x; N3 B5 v 回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。1 R( _# S/ w) s1 _) k7 H8 P K% H" d0 ?
' c) C! [1 h, P2 X. F
怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。
' T: Y) d8 f; i9 Q% L. _7 O
6 t2 G8 }) C F1 {! F( N; M0 c 思考 one-CPU-one-vote7 E2 }/ N7 g5 Z) g3 |6 [
+ @9 }0 ]4 R$ a
考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?+ ~- F. |6 w- v' v
$ }" }% \" p4 w7 D5 ], c 为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。
! K+ Y# Q: A, A
9 J6 U4 ? P! ?) k4 s0 t, T+ h9 M 当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。
2 N7 I- }4 {3 v2 G6 E9 ~; W& { n. I9 ]: b( r$ ]2 m) u
思考费用
/ I+ x" S/ R0 F( h% R# Q8 d4 v5 M/ h
考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。. ] k7 K* s2 h2 k1 c0 A8 J
6 n* s6 `2 l( l那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。
2 F; [8 K. ], p; D d
- ^, s$ x( V; T. i( Z 基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。
' c4 x" s+ |) x% J! R; k
1 F$ ^* k2 \0 Z抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。
$ m _$ L( k7 Q" [& n# D [: }" X# K* Q" z
我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。
0 A* w4 X9 h t7 X
" V6 g$ t2 M' M( U, u" @" j3 }思考可扩展性4 h- s# o5 H2 A, e7 c0 e; Y
8 O' M* w, O- D7 l" G. W 从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。$ W8 K0 E* g$ ]' a6 B# _; l- {; j
9 |9 n9 D7 d3 v9 k# u& i9 x 同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。% B; {! u+ X0 @8 z# }2 k$ b
8 C3 W; q# N( g! u( s8 m% ]1 L YOUChain 共识「YPOS」
' i+ }% j# i& M& D3 D
6 e8 |3 q# k/ b 为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。
3 X N6 n) G: k2 n6 r5 s* @) ?; P* X% @3 S
共识流程,主要分为两个阶段:提议和投票。2 |2 x: d o I
( s% N$ [+ x+ U, r% O1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。4 Y/ V! s8 Q/ @1 i
: `. R2 k, c. o* h# D
2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。: r. v- F/ T9 V& L, Z
3 f2 k+ z. i/ f, \
其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。
8 Q% H' g: |) V3 _6 |! W2 y1 S- `2 o
在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。
. K: R A3 k, Y0 V
# p" ~) b0 l2 Y5 DYOUChain 节点设计
% C/ u* S- ^1 }% ]# d$ a
. L; h+ P) R2 E" o) }: l) L6 S' o 安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。0 {- o. o0 u7 e Z5 D
5 v' V: d" Q( a& t在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。
1 S. @) r0 T3 R7 h& [: K1 E# B8 W4 C$ l/ ]
一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。
0 |$ j: q& }6 P O0 C& G, v, [& ^ C/ T1 J/ T9 N" v
如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。
- Y# \, b: j: L8 E) {5 G8 y4 U# l: S3 n4 R& z3 J
为了实现我们的远景和目标,我们设计了如下的节点结构。8 T, W0 Y6 w+ Z/ X
) ~" S/ {/ O( ?- ~9 H0 E: t0 j节点类型, C1 _, Z' c" Q0 G9 ]( b; _
, C0 D6 G& @( L$ ]$ e/ A) q6 H
系统中包含两大类节点。- s6 v# T0 Z7 \1 y
; r6 d& T$ N3 V K8 @# x, V0 [1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。" \1 R+ u$ B, ~& n2 s7 e% m# Z% T
2 F! U$ u( G$ F( t. P- U, L- e8 t) O
2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。
2 R* [9 L6 o4 b; b8 x, Z1 H- ~
% B- d# o/ f$ h以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。
5 I/ M' X( q/ [2 p. E# p/ S! q0 R( Y6 X' y
节点选取方式8 O, }7 Y' j% q( W" @7 E% g8 p
% Y/ p% C9 s3 f' A3 S) S8 c8 R5 O4 |3 S# i
9 X7 h: q6 P8 G2 s& a" [9 ?
0 |" l/ w) r7 Y/ k- k5 |2 c) `! r+ z r9 H4 d4 B! W
3 F* O X9 k: D8 F7 ?" b+ W参议节点参数「待定」
$ L% I5 e" v4 D8 i9 \9 o1 h9 [0 V+ I3 b3 a- R& ^; I% e
+ C5 T! i7 ^3 c2 x- X
{# F0 C% `; M) Z7 a
1 m% |2 N- i$ a; Z1 B' T
( A7 K8 F$ e# |% q
众议节点参数「待定」
" D9 N9 a" c! }3 e2 p U$ t. o; x6 A1 n) ?
9 g3 G( f* m8 ^, z+ G8 a3 d# u; |) G9 M1 k }/ z8 W" n
! Y/ l" i$ u3 g4 C0 A2 }' H
, v' N% n7 K& A) v1 |两类节点对比
g1 Z+ X$ @7 C
% z+ _7 a8 B6 h+ Y9 N% {* X
1 F0 x6 I; a0 {- p6 i" b9 }' Q" A- X2 a
+ O, ~8 p1 ^! ~ o t( r' D- i0 o* E! A' g c% F; w7 N& r6 g& a% M. q0 B
我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。5 P) d! k" o, m# F. i2 {; @7 k
5 ~! r( w) \1 ~ K. o" c" q4 cYPOS 区块敲定
) [+ M8 f! s5 i/ s' I+ j( r
) i% z/ ~$ X* ?$ f3 u( O0 I1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。. Z& {4 U. |0 M2 b. N- j/ C
% K/ U N+ \0 O( U- Y2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。
+ Z+ H/ A6 ?/ J$ `6 i. N; \/ U* u0 m+ o4 K& Q6 s0 S
3.满足法定票数的区块,则为敲定的下一个区块
: a8 u x' p0 ~; b5 y* F: d
; g& X. B1 _$ g% \" R, L- E定义如下:
/ O, `- U% P: i! a4 I- @/ L1 V% ~3 i5 `
0 z7 H: l5 e$ D+ f
8 _" L' V9 n! y: p/ F3 r* {; t2 P3 D9 B* N5 G g
- t. Y, s" \0 C
" ]7 T/ C- q5 e2 _
网络安全
8 o) W' D; e2 P
4 a# ~ W% \+ t% {( E9 U$ c, x参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。
; Y9 o' D% _7 c" T3 K6 e+ L4 w, Z, h h: Q
官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。/ v8 R$ _/ k/ T8 o: ]# X1 _. N
6 a2 B' J3 Q- P2 ]( x
官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。0 v0 o$ u V: R
. s7 l8 h W, A! Z( g1 \
链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。1 s8 }2 W: b; V6 B0 f
% h! G6 P/ P! o
网络演进
' U' Q2 M6 P6 @+ n0 y7 E& @
/ u: X- o M, m% Z4 iYOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。
9 q) _8 X# @' q% F2 W1 C4 V; \" R6 S9 ~) a5 ~
1、通过安全分片技术提高可扩展性
4 U( B( ^ c( S- Z! P) ^
" N1 a9 s+ B8 c' r2、逐步调整众议节点的选取参数,实现「人人可参与」2 q! a9 q+ B( |& C
% X7 l# F$ l2 D. x+ }+ C a
3、区块提议节点逐步过渡到从众议节点中选取
, C& c. j( H, p5 N+ M' x! n2 J/ v r K9 `! d" _
4、逐步降低参议节点集合法定票数 的要求9 G8 ]9 a; l- |7 Z1 [( d, b
: O: O5 A/ r$ P+ ?' n3 \5、参议节点的功能将演进为:存储、转发
; z7 f9 ]5 x% i1 x! B. K% P' E3 S. H5 ~5 ]4 g
前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。
6 y7 b9 I8 K% F- Q# `: h: p
# M' |- P$ h! L. X: S$ C2 G- y! E以下为问答素材:9 t3 ], n6 M- B4 U9 O M1 i
5 B: o) e( h7 }: ]9 B- \/ e4 |
Q1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?
8 U. F2 m" i0 j+ [+ ]' J2 }+ I6 s2 R+ Z! H
何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。
p/ p/ O7 b/ L5 E8 g- [ N1 U, V$ ]2 [1 h
Q2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?' R# T- r5 f B; q9 T
8 j* K$ ^; W* @! f何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」3 ?" }& r0 D# y% z# t9 V
+ k9 }* ?& D$ \% z$ g8 C
Q3 参议节点和众议节点的数量分别是多少?会不会扩容?
/ b/ T8 P% x, N* {/ _6 L; o2 U, m" d* X# _; p$ i7 s, y$ N
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。
7 _: d& I6 s5 ~* ~" G: k4 S, \: y
3 G; k7 h: m0 s% Q! A1 WQ4 参议节点提议区块,是否有中心化问题?
1 `3 i3 ~; H }
. @) z f& [- A5 u9 ?何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。; ^( X% j) j/ {- c6 T) X
/ Z+ N6 R. P' [' C& p! \5 RQ5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下
% [$ U2 B/ J% f7 K3 E5 n9 U3 | |/ c, [7 I: o2 |& l# r: }" l3 V D1 h
何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。
! K- x, ?5 V! n6 h d: Q
0 W+ e8 u) T& ?! R* |: D8 `Q6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?
4 @: M, W4 y. d( r: P' K
8 N1 J( O. k3 \ K3 Z8 B" v何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |