网络与节点5 h8 D+ Z. C" K
( Q9 r4 t6 n$ V; E& N 区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。 U/ i! @2 l# v5 c3 K/ y/ k
& H) M B2 n _6 t; t7 D9 U
共识与考量
5 |) j$ b. b$ i% r+ T1 ]* G' p8 M3 v @/ r V
网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。% }5 K0 q' x M% a' K% ?. Z3 T
+ @0 S6 p. m; \; ~9 n+ _1 T, J
大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?
1 Y+ `8 H* Z2 M, g5 ~% s4 A& P. o+ d( | W
原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。
2 u0 g: P8 e" X5 A+ f) T9 `2 x, c. w/ [0 _! O, O' F; F
现有公链的问题
# L0 Y$ a9 g( u+ p
, D( X2 c$ {3 K BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。
/ m3 {' U8 t& w% H0 w' R5 ^& E
# F" H9 H, z1 E: v! g5 d BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。$ r$ k. ^, _2 f9 B9 g$ p8 u
/ c! P2 C* y3 d. o8 k$ w
EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。
9 @' f, x1 @; I8 v! n p9 T0 Y9 {) h) O6 }$ Y
可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。% y; L# [- g% \4 n$ F
/ n# J9 Y4 E0 y( x9 @YOUChain 的愿景
# k/ V+ P) s5 v# A9 C" e5 B! E: e% a- }$ R; e) E ?& D
YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。
, A5 q+ q+ g. Z. V$ V
; H( x/ S) Q0 `1.低性能,速度慢,难以扩展,不是我们想要的- h3 A! H. q6 `& B0 g1 [3 o' t
7 C- o# k" h% a( ?- Z2.权利高度集中,不是我们想要的* ]" p+ p& f" S9 R, M, j7 B
1 a6 k; [4 |& M) O3.使用费用高昂,不是我们想要的7 ~6 U" o% j, s5 o& B- V: L+ S
& E; b4 g: v0 _) l( R. J0 N5 Q- i+ J: C 要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。2 \* W9 c4 n8 y* w4 h
2 H. l+ V% f6 z* L 某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。- Z5 e9 s9 }$ i5 D+ e! Y, a
! L# z: l/ E7 z* F" \ J, w思考性能9 |1 R8 G0 N& N
& n( s( a; _( e* m# o
回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。
- C; X" l) |+ l0 y% [$ F
3 _4 h, R! U6 d! L5 j怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。1 T2 O4 T: S9 J
2 A9 U& S6 h! K 思考 one-CPU-one-vote
0 C6 A" H3 Q- A' X( @& @- }
! e" o- u `- E0 k* j& S) Q 考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?$ Q$ o& V$ L6 d
8 _' u3 y6 o& l- u2 K1 T( ~
为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。
& W0 p+ L, Z9 C( `* t
9 L; e) s) k" U c- o& v* A 当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。
& v4 V6 e3 t. }. }
1 ~1 B" ^) {7 t思考费用6 F& R: z/ u3 C9 ]' \; P+ t8 C
m7 r+ h* }, o
考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。5 W2 A9 r, i) d& P
6 z" p# @) A" }7 L
那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。, a7 X: T3 y- J, o5 w+ K) y; t
- i l2 s! I/ T7 U& [
基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。, B, O4 r' p- [$ q
$ v: B; H1 G8 c% ]" V抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。6 Z3 k- }# h1 E1 G9 w4 m: o
0 D& t: T( |' ]! F4 h6 @
我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。* }1 e2 W/ ~2 c( I1 c1 u
. s) |( ?' J) |( F9 F思考可扩展性
( H4 G+ k4 y- I) `" Q- z `" ~9 Q+ l2 _: G! R# Q8 X" v N' L% z
从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。
: y+ O' H7 z0 E$ E# q" Y2 x+ D f' T4 S
同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。
2 {% S" k+ W7 y+ A" F( G: e
/ c" c- I, ^' k2 g YOUChain 共识「YPOS」4 y/ ` m2 `: C
/ Q/ ?4 R" v. C f* m 为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。
4 n$ g. z: o& w) I" |) w+ A
9 H9 m' c& E! t# K, b7 {共识流程,主要分为两个阶段:提议和投票。, l3 ^. \7 r7 R9 Y0 U* k
8 u% j' B8 o% c4 D b, p9 S1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。
0 Y0 O9 m/ n- O2 u' b2 C* o" i, R# N% b. A; i7 Z+ i3 Y
2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。
, o! t, g7 u" g6 a; {( S" _* c. ^+ e
其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。
) s4 S H# m- l3 N/ H9 w, n% q" H0 ~( {
在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。
h5 W( E5 }: H( R5 \4 Q4 D/ z! _# C9 |% Q/ D: C
YOUChain 节点设计8 h, Y& ^; T) m, e. t' Z3 t0 c
. x# R8 ^% R. s( _! r0 w y- k$ D
安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。! w3 r W' @: _0 \% G, H1 ^4 O
# ?0 g6 e$ F1 g在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。
S3 [3 B' [1 k8 R/ u! n! M" Q# M- r5 P2 W% n6 [( ~7 U9 a* ~
一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。# v: u9 f+ Q5 r" k
: t5 D8 Z& L& a2 l" q. S 如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。
8 e0 A4 S' m7 B4 L* A0 ^. [7 f( Y) d
为了实现我们的远景和目标,我们设计了如下的节点结构。1 n" V" y) X4 o" X5 T& R' x
! _4 ~7 ^- Q9 X* }' _! q+ i0 H
节点类型* H7 i B: v R' E K& b4 ~
4 f6 a# C8 i* z0 L. w系统中包含两大类节点。7 R6 t) l. K. t, g
7 l2 i8 @! l5 d, A
1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。
6 k0 v. b) a2 x' u' h+ b" k" |/ F& s" ^8 l
2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。
6 n0 d( B* p2 |1 P; Q9 a: Q0 E5 L ]$ [- l& d- ^
以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。* T& D4 W3 q' w& X, w q
+ ~ I+ S0 U; K2 X( R, ^( C节点选取方式1 G4 [% S7 E. F8 V& \
$ I6 s* I/ ?9 K/ B7 [( F
0 q2 F% ^( ]) X% K9 v1 V: R) T/ n+ t$ V: v
% e5 D2 |! i2 E* z
, V% T) Y$ y* G* A# A
! g; S: g1 K; B T参议节点参数「待定」4 [6 Z- g( q5 R
8 _9 J: J: I# j
& g# E$ R4 ~0 Q$ Z% R
4 l( A1 r$ ]1 b( |
( z$ [: D E$ D! \
! V, o/ N( f' ^众议节点参数「待定」2 H! M4 q- D) Y v: Z3 p* f
9 g) D) }5 M, i ]3 T
$ O. ?% F0 H0 B: H* G1 b6 a3 v3 B4 I# @3 q% l/ O# e7 V3 U) z N
& z u0 u* d4 C: Z+ i
P; G; E, i/ Y. ~8 u两类节点对比
0 b1 T& s8 W( ~5 B% l: y) h* Z! j) S1 e5 B6 F
( o$ y. }7 h# r% W/ v
) p( b, L' Z* {) m
1 P* a* E1 t' `$ G) @: W r# k2 B, U6 M9 h9 m
我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。' [6 ]7 D+ S7 Y
! @6 t0 m( u7 }$ J4 p
YPOS 区块敲定
1 ~5 ^% E w/ h% V3 M% Z/ U- \9 T
$ l9 o1 ]$ h% c2 E) {1 n$ e$ X1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。
! `& W( l6 r5 W# q- z8 E N) w
* {! x1 {: n% k1 @4 }2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。
. s5 n1 C+ c8 {, B/ ~3 P3 ]/ Z# H* F7 g' ^9 I/ n
3.满足法定票数的区块,则为敲定的下一个区块
1 S/ [4 x+ w' p& W% Q$ n- x8 y5 z7 h7 t
定义如下:5 e8 u4 R% ]3 J; u
# O% ]' ~. B; a4 e: |: q: Y! U) ~
5 L8 Y6 U; c* Z! q3 p
' M1 A2 m3 ]! }% t
1 a8 x, g8 w( Z
# u" ?( ~/ U2 O7 D4 P
7 L2 P" `/ w$ u3 ~网络安全
+ s+ k9 ^: \% _3 q) {; |+ z+ Y' T4 r
参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。9 H! ]: V9 Y/ k, I
3 W7 W* q# T1 h# f F官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。
' ?; M& O+ D. l( K4 v$ X2 T: |) u. L7 B! H9 ^5 q5 e9 h
官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。! f/ P* R2 t% ?2 y
" V* V( X& d+ b4 \7 w链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。- b! |" Z J' z% J: z
; B" ]% k; C3 F/ I1 x( V8 g网络演进
& q' ~% x& W$ M( b" [
% z/ k. t( z& g9 l9 R3 p9 |YOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。
* i& p8 e* Q% s$ J$ I( [3 B) S' Q% D+ e: R5 }) Y7 M! V
1、通过安全分片技术提高可扩展性. B( U: l$ A, a [8 K
5 y, L+ s, t6 }" f
2、逐步调整众议节点的选取参数,实现「人人可参与」" M$ Z \6 s/ V% R, B3 I
. w1 e _$ u" l5 o6 E& R" f
3、区块提议节点逐步过渡到从众议节点中选取
: h# _( o( V( u& W" t2 d( p8 G$ Z
5 g" Y, @* @& R" W# f2 k5 e# n4、逐步降低参议节点集合法定票数 的要求
. m |% P/ K4 e+ |9 N
) {" a+ B$ S) w% ?% B+ i* z5、参议节点的功能将演进为:存储、转发5 \. [, p8 C7 A% u
% I! B0 ?! }8 q5 g& x前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。3 s" U7 S+ n* V M8 Z
' F# ?6 ]: Z+ H1 e+ a3 @
以下为问答素材:! U! R1 X% M! Y2 t/ m+ a9 H
, k4 B7 m$ o& p. v6 c" u
Q1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?$ j3 [% y9 @" ^2 e
# y, B) f J: ]# ?
何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。! D# D/ L' X* q& d8 r# G9 O2 l
5 h5 e: D: C" }+ B* p2 r N; I
Q2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?
- s1 u3 Y9 c; z7 t3 o
2 O! x0 z, c$ R9 m7 h何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」
$ j. T: @+ Y! E; H# z0 h, x A8 [4 ~7 L, U2 h, h' u0 |
Q3 参议节点和众议节点的数量分别是多少?会不会扩容?! L7 L3 ]( L; ^3 b
4 |7 \* ]+ s @; i2 X
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。
( g, I& H H V
' t' ]* J) K2 x! iQ4 参议节点提议区块,是否有中心化问题?) i7 @$ [5 e# k/ s4 i3 r
& ~8 z9 f7 s6 J- V
何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。
; i& [. u+ `+ x; N; l7 X% _ P- K, g& x
Q5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下
/ S3 u1 c! v+ `$ Z' ?3 C' u6 u) ]8 a: d3 b
何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。
% f# x. k0 ` [" `
5 ]* B" S8 ~9 j+ O! G, c. vQ6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?
* r( P# X- X2 ^" T6 V& g6 \5 d& N7 O1 k" n
何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |