网络与节点
7 j( [& l0 U% g0 x }; B- i
0 P6 [" S: l3 }4 @% c$ C6 y! c 区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。7 S+ M: K+ w# g W! V5 M) P4 s
1 @3 Z; t+ _7 i: O* B/ W/ }7 G共识与考量
% t( b$ Y" s6 Q9 h
, F3 c3 A# Q( p4 q6 e$ Z: ]3 B 网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。7 c+ d! l; f/ }; z# ^
. ?4 e3 V' `6 Z, [2 R 大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢? _7 }( d( ~1 S0 J
$ H; M9 g; N0 M% J原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。
3 C0 ? i' n! w4 w+ g1 W7 X
+ C3 N. R' p' y ] 现有公链的问题
/ X G4 v6 i. h
( `/ I4 G: v2 t, d7 U: Q2 M BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。% q! r& `0 \# P- c# y! X) |
9 v4 E( C, M6 D9 }8 p6 u8 Y8 Q BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。1 E! i; F }6 h7 H3 u
2 b% E2 G/ w* l7 G' {0 {4 U4 }
EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。0 l4 h% E' j2 K! s
, y" i) t+ j* ?3 [( C
可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。
( w8 ]; H) F2 X0 I3 k3 R$ v# l
" U6 {" E7 P pYOUChain 的愿景# u9 v E0 q# |- s8 l
. D* |( f$ S' ^! f% t; z) @
YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。
, P3 A7 n. q+ N' w( O+ Q
# Y' k+ x, _7 W6 V) o9 @; _1.低性能,速度慢,难以扩展,不是我们想要的
' U; a/ K, p7 m& Y! }* Q' w M8 Z
0 }) v; Y5 j! H5 x9 N2 j2.权利高度集中,不是我们想要的2 ] ^" ~9 q. H/ U6 Q, v- G
( w7 ]4 l( x' H2 E1 [! W) c3.使用费用高昂,不是我们想要的
# Z3 T! N; y- z! [! H0 q, e) E3 @: B, F& M/ r* G
要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。8 A1 e$ a; p; ^# z5 r$ t; t( _
4 L" e( f8 m/ R
某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。
, n. h/ H4 s0 F& Z
4 W5 e* m' g1 X$ Z思考性能
- q. y% u1 D/ _) Y; A+ E) g' l% q% z9 u% w
回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。9 p" H/ i5 z9 u. W
2 I& N1 l, o0 M4 ^2 `怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。
$ [+ L$ c0 @ c! d! g
9 X+ V7 e8 d x 思考 one-CPU-one-vote
* N- \5 o% Q) l/ H
) V- W- _7 L# v' a& f9 S1 {6 _ 考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?5 H% ?4 H/ V. c% J
; ^& \& p9 t8 J( k0 A* t 为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。
4 t B. o+ g8 C& q& |8 a, b3 i) _& B# z* c' O
当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。
- \! r5 R0 x! B l$ _) X8 v# g. b0 p1 P; P3 R2 N
思考费用
0 ^& E6 I) w* k5 L9 O
) _# d' [2 y( E8 R# C 考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。
1 P3 i$ ?% e" B* N
- m4 K) C; b" z5 `: D- ~( c那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。
( F x9 j) X9 [: z4 G8 j' g/ b" N6 I& G( o1 @6 L, z& t8 k* V7 n" ]
基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。
k, y) w" L' \: F' e7 o- k, p. C* M# z% [$ ^
抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。
% E, j( b' {0 f' A3 L: E" @# [4 d- A# g) E6 z
我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。' q1 V1 O# D% P. |% O
l- W H# _) ^: Q1 J
思考可扩展性
4 B0 u1 x) |4 G. `; O9 r: Z6 p. `& ~3 W' W3 y
从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。
' g% f9 ^; q1 w( g. b( P
; o X. F. r; }" k3 G7 }* O 同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。0 w! D C& T# d& v! b B( f
' Q6 X; m1 y" l: Q4 v" `1 @& `( T YOUChain 共识「YPOS」
- ^. c1 l1 S3 N
! Y' _" h, I# H; e 为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。 D$ J" N. Q" d( @! M; P
' _3 y/ q" h" T: A- b5 G6 [. t共识流程,主要分为两个阶段:提议和投票。
# g2 O* q" n( h! Q1 a9 q+ @& N3 V t/ G
1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。& R6 R' r; v7 k7 ] n$ l
% R+ \+ i/ ~: s2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。
$ v4 _: \! `6 ?' Q
( i: D4 o9 _; ^0 e' W4 C' D9 x其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。+ i+ Q0 A; _8 T9 }4 ]
/ X5 z3 E' G# S3 {在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。
8 J2 v5 F. A& w) n0 W* a$ _8 }" N
) C- `* e* W. Y, N. f1 VYOUChain 节点设计
. |& L- m- D3 n, P
+ z& d- z( c$ v% k+ K 安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。4 S, `- Z( w5 H" ^" K2 s0 x
& u+ L. I) v6 C* g在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。6 ]- ^. y1 @+ y; J1 S8 y
! i# p! ?3 i. P+ ~4 r 一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。* }( ]$ v/ ^5 e- r3 f5 u
7 }9 L0 |7 g/ ^1 T' C4 ~+ e
如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。 A' \' e9 y9 l# V G! r# `$ C
9 u9 m9 F6 W) ^$ i7 a
为了实现我们的远景和目标,我们设计了如下的节点结构。
6 a. E# @3 o1 W: d3 [- |4 c3 d3 L1 E# p
节点类型
7 d, _% K/ R3 u* ~0 F8 Z5 e# n
) S' q5 i; M% Z4 d7 e! W- T系统中包含两大类节点。
" j0 L! Q* G( |, F. N: T" q- [5 V# l8 W! [ g4 [0 w
1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。7 W$ \. r9 a9 T& z+ O3 N% K
$ _# B/ L/ M; ?1 ^) K" l2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。0 C$ S' U {0 k2 b
1 x, T6 K; G# D; v
以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。
2 n1 d! [3 g) T
! M7 F- ^; u; m7 `# t节点选取方式
& L: x: a+ M6 k1 C$ x4 T& f$ }5 I5 W) K
8 }% W2 A, @9 A$ W9 u' U
/ B1 q$ X( x% c
( h& f& @6 \# N$ G6 n' m; k' x3 q3 r7 H D: W. n7 j, @1 g
5 v9 n9 @0 z% o |7 k# D: s- ^7 J
参议节点参数「待定」3 y* |; Q# m k% F: g: L
9 l0 K# F$ W, [2 @6 d, [7 N
: O; B9 q w- J# s3 ?
6 T. ~# q$ ?/ ~) F6 Y+ W
0 ^. ~$ W8 }# P+ D$ F
9 D; X7 V2 @/ \$ p: w' K7 `众议节点参数「待定」8 Q+ g* {% H* L% Z( e. y/ f
! f8 ]# Y" `9 G3 I
9 l+ Z& w4 y2 F7 J5 W4 J' ~: I! [( _$ V
9 @: o/ V4 f' j7 v, d, y! n: v+ K) ?* s8 A" k9 y9 y
两类节点对比
6 a9 @$ Q! R ~( t# ^3 y; ^0 r! `1 K: \8 [
6 B: t/ x! t7 E2 c3 Y, O6 m! x( L
5 P# I6 Z6 T% Y5 T- ?$ h8 Y" j' o9 o) S$ B
' e/ Z# W, M, I0 }- u% h 我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。$ q$ }+ t4 G/ H5 @+ w% ^( ~5 \9 ]
# Y7 I* A/ A) L `8 H7 G
YPOS 区块敲定
2 e) ^# t* ]! z, G0 V( s @2 L- u9 [6 f8 H/ l
1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。
$ V$ r# l% c$ H2 [
+ N- M7 V5 j x0 n: f3 _# ~+ C2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。! Y2 W% {' T, U8 x7 ~1 h- Y2 b
# F3 q) M$ K3 p/ F% a( p% d) P
3.满足法定票数的区块,则为敲定的下一个区块5 o2 g% L3 o( c: H# }
4 g* d0 |4 q& n; W0 C定义如下:. u& r7 M# P; s& b" |! ]
* P; r; b; T% y
3 a7 `% t5 d- X) d) @
1 Q2 r- }# d" N8 F2 i, |# L y- `+ S, s. X' B
) e u3 N+ d; w& b# _5 g) @
3 N# E1 ]/ z9 c2 U- N$ o! R" a- v3 n" [网络安全5 V/ O, O6 Y9 t5 @" C
8 D3 K5 f6 v7 y0 G
参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。4 R6 u) P5 Q. I* E8 q9 C: S
; j# R& \) z% O( D8 J: K
官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。# c) H* K1 J' G# w( H) h
6 u# X" t! |- l7 O& e' j3 a C官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。
# N! Q) k+ d; q7 r4 o6 l d- d1 @( \5 A; Q, [5 E6 U. \& Q9 T
链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。
' C. r6 ?5 p; X2 x# H1 K2 P2 O
1 b2 g0 Q9 j% x9 ^+ S网络演进
" u' b. k$ d. t X) ]8 I* l7 B2 Q1 P! c# r: v4 M' Q" W! C
YOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。0 g ^' f3 ~9 L: q
. ?, q- R4 i) y( u1、通过安全分片技术提高可扩展性
+ X. H8 @+ r9 w/ m! M: u. |, j2 [' x
0 p3 L3 {2 D* w8 R2、逐步调整众议节点的选取参数,实现「人人可参与」
2 }: T: ^# p# c$ |+ ]$ b& z6 p G% P8 i
3、区块提议节点逐步过渡到从众议节点中选取
7 ?/ P0 U3 u" j6 y: y5 |
8 z6 x6 d2 d' i; t4、逐步降低参议节点集合法定票数 的要求0 }; o9 F9 Q. w5 @+ p8 z
2 l" ]" N$ C, P# \: W ?$ M8 {" [' g
5、参议节点的功能将演进为:存储、转发
) J1 p( Q+ E; @9 Q R5 U
1 c3 R; l; [3 s) }% T前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。 e) }4 A& F ?2 @* i7 r1 d# `3 P+ \
5 M+ H j P! ~
以下为问答素材:' f* b7 n+ E; ~ @& a+ m& s
2 r1 |( l+ q: }) C) FQ1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?
3 U3 Y+ d! Y2 Y( A9 a1 y5 m( l
c7 ?0 f% c! ]6 b3 v( r* |何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。) |, r2 T8 o3 N$ Z* C
8 L- q `0 o6 S" d: ^) ?Q2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?
( g% r5 Z8 l0 Y
/ W9 F F6 N: k [7 }何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」
4 r B* p0 \0 P% i" L* F$ Q$ m# \' y6 N1 d9 A/ r1 l' v
Q3 参议节点和众议节点的数量分别是多少?会不会扩容?& K! d* h0 Y' e# e+ l7 {
- X, a5 l4 J4 U5 e9 I何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。
A4 s7 P) o8 M$ I& ?9 ]3 T* b' M- S( [. c# _) D
Q4 参议节点提议区块,是否有中心化问题?
3 ~* S D U& \' H$ C: w/ g6 h4 W# k& a6 Z6 G" [( o2 }2 H0 K1 R# D6 g
何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。
2 Q4 d5 [, o8 }2 b4 t: N) k# q5 a5 c; U( t5 x; o: a
Q5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下
9 q" q- O) b: R( y" a0 z$ u/ }- o. o* U
何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。
$ N6 p9 ^8 z3 g2 B
% Y- b N* C1 L% u0 wQ6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?# V/ G7 ^" @7 I3 r
" I7 o) N8 h' W( l( K b0 a( P+ F何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |