网络与节点" U7 L3 ^- Q+ p) O- C
0 \: ^% O6 @- V5 X; |3 L 区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。3 v/ Z/ R9 c2 Q3 h9 Y. |2 l9 A
9 n M: y6 Y$ C) r- C" V& N
共识与考量
7 c: ~+ L M( M. k5 E# t! i
) u* s. |7 c. }$ v 网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。
1 n; P3 i; Q8 }7 a" _; J; A) \) c" I. H
大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?
1 K6 s; T8 y) S2 g; f, n) c% O+ v0 ~
原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。
8 N1 E. x3 v. E4 a) C
8 A% l% Z% z/ i4 U 现有公链的问题
2 q5 V0 J8 D* _2 o' w# L1 ?
6 f/ }! f0 f, n2 B2 L BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。3 t1 g# m) w) w% `2 b+ g) P+ T7 ?
# Z! m, l( i/ Z
BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。
4 a0 a) A" B& L9 l
9 V* @4 z. v) Z. ^, `8 H EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。
4 M0 J+ G: r4 a( L! x; Z- B0 F5 v7 `/ q. u& F6 E- Y
可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。, l& {, Z# q5 P. Q; d
) z& u) f( @) i' ^" X* Y5 r1 vYOUChain 的愿景
+ u( ^* q7 J% G* `2 [
8 {" e. J/ ~8 c& l7 T$ h YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。
7 K# d* t- j/ c# V
% U7 \& ?4 w! i6 U5 T1.低性能,速度慢,难以扩展,不是我们想要的# ^( s: A4 x# D
5 I5 n5 w/ }2 z/ a% }' a2 F% I2.权利高度集中,不是我们想要的
) e* r- ` N R H f
7 ~9 {5 o4 t& ?1 U, m. ^" Z% y1 t3.使用费用高昂,不是我们想要的
) q) [8 r! k- X V$ I( `: W8 C2 J/ w4 [: C5 o
要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。
' c5 T5 p: g5 K6 X0 i
0 a+ n3 c+ e) H6 x 某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。8 P& L! W8 M8 l7 O
8 ~" d+ \5 v7 B( |/ b思考性能
1 r% V( ]+ n& p) z! F
$ X1 N. f6 Y+ q: d6 C 回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。( X2 X' Q- m9 R& i5 h3 O
$ i- I2 j( G F" R+ D3 Z
怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。" R5 h: @# B, \
( k$ g& j9 l" @# `: m" ]' h6 {2 h
思考 one-CPU-one-vote; x5 m7 y d) Q m
6 f# k+ g4 g! W( r0 y0 K5 C 考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?8 D4 {, g( V7 n) I3 T4 E
7 S6 [5 _6 j0 M# \7 K$ Z: v; h
为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。/ O \9 Q- Y( x: f6 s% y
6 q& \9 N/ x0 F: @# [' \) A 当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。
; N5 Q: j: ^' E& m
( d' {, Y3 g8 ~% U9 _6 d思考费用
. X" {8 q( `* j, e! J" t8 N" E6 n+ A+ R# H
考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。; D3 \. a, r8 f+ }6 _. D! m
/ g* D! \8 U3 p& P) f
那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。1 |6 `" p6 Z4 h) Y+ \3 S
# ^9 M+ K3 J$ H* C8 [ 基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。
! } T3 |! T0 [6 {- Q" [; w% g% ^
, R; Q/ p8 Y6 M6 U+ U& Q抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。
+ a; B, z4 ]1 X. `2 C' w _1 h9 U( c x) L
我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。
; [" H6 \2 z4 a+ \/ I
& K% l: S1 i5 b' B1 n思考可扩展性% ?7 S& p: T* D
J. u, C5 ?5 F
从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。4 F* \4 E4 Y5 {7 y4 z! T8 W
% m$ ^& {! B1 y8 e/ p; `! h F 同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。6 K6 e: ]0 J- ~% S z$ B
5 Z7 D3 T8 t+ {, l* C a5 `/ N+ N0 } YOUChain 共识「YPOS」% b1 C2 {' v: m a" ?; n* B
0 a$ N) H( b0 t: c/ C# [9 a; ~$ A
为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。3 b. V% P3 l2 K& @6 K
2 t2 l* t* b0 T
共识流程,主要分为两个阶段:提议和投票。
9 }$ B+ n% r1 A- x
: v/ U0 j7 S5 L& H1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。7 @! X/ A& _" {6 o9 J: [# Y* i
6 U( N( N7 D5 Z1 b* L/ h
2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。
0 `/ r' a6 q1 _9 P1 F% r \1 P1 j+ {! P+ G0 u2 N5 X. m
其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。- Y/ G; L) E# t; ?: I1 B
6 I: d/ p5 i. h0 X/ z) z7 W& p
在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。, u0 d. r4 u; ~$ U8 R- y# V( o
2 I2 _; {2 i7 s- z
YOUChain 节点设计: O* y; W/ z A- v" u( N" O
7 o- o: ?5 J9 I+ q" I 安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。' g: c; L+ [: t2 c9 \8 ]0 C
4 {3 _) B* h! s5 n, j在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。
' @+ I* w5 z# O/ N* }! e0 \! c
; r: A* Q# V9 r0 w+ W+ m 一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。
5 k# h* u' @9 V+ w
- O9 ^! B+ ^+ t+ Q. Q 如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。# w7 e5 F/ q2 x. O2 }
! O; @+ ^: z, D. K0 U为了实现我们的远景和目标,我们设计了如下的节点结构。1 S" Q1 x7 Z2 C' I P: u7 e4 ~6 t
( u4 i5 m* a$ S2 Q; I/ a% O, Y
节点类型
/ f5 _% B5 S5 v; W6 _9 a% u4 l2 u1 p( ~2 K; Z( e
系统中包含两大类节点。
5 z- \) E7 s, Q) @% e# \+ M( T6 r3 x7 J: b9 T
1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。, I- ]; L0 j) A8 e0 ~
% o8 B4 i" p7 F
2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。( A+ H4 V( i* D9 Z
6 w% q+ c5 W+ R) x! [9 ]以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。
/ P8 ^* f0 ^: @5 u6 n- [4 t+ Q
+ ^( z( m' F5 E$ S2 b1 ~" U节点选取方式2 P& @3 W' j& A4 @( d
( ]8 d5 g6 }+ u- K. |
3 W7 {7 H7 Z7 G% H0 ?& i8 |, y' N) p* {; h1 G6 a
0 X! K6 P* u6 Q3 L& r3 W+ t& F U/ @4 U5 @3 ~0 A4 ~* w0 p
% g8 H9 w# z# ]# o5 I+ R: Z0 ?, x) u
参议节点参数「待定」7 m- ?0 d' k) G0 O- X n6 ?1 t
% n" z" h6 _* ~) \4 S. R1 T$ T* L# C% k# D6 T8 @ |0 A3 }+ L- r v
5 n; @- }' ^$ u1 b* V, N: _: c+ v1 n8 _5 ]7 N' I4 G0 g
( g3 K7 L3 |0 @! |# v& m
众议节点参数「待定」 ~$ y, E/ d+ W. X. t" T
- `+ r$ Y" G/ c1 W! B1 C' r, r' D4 @1 j8 v i. m+ {
! C; t/ A* c# d+ g: q t. h
7 i' Y9 ?9 A; d& {6 J! d
1 J% e4 q- y5 l" n2 }4 T两类节点对比
& r- |# c1 n* ^2 R$ Q! h" N
5 T; ~" i' A) u( b& w: o& W' e1 U6 Y' T& j. K c: x; _) x) n' q/ y
5 v8 @* V, H& Z! p. {7 L6 y5 C/ T- @: F T4 m1 I- V
/ O- s; s, O0 w5 h9 `( w+ {* h 我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。0 _2 u- u* U6 X7 b8 _
. C, {! r+ w5 J# b4 d2 e7 q% CYPOS 区块敲定
' @/ ^6 \, b0 ^. V' p
% G0 b3 Z. U; q' S, Z1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。6 j# O3 D9 u6 N
6 f6 E1 ~ Y4 Z2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。
$ b6 I( F! a, k' @( P8 k: h0 X) c( k2 b' k4 S
3.满足法定票数的区块,则为敲定的下一个区块3 V. e b: f$ _8 G# i+ [
+ X2 e5 `* b, L5 b/ p9 Q
定义如下:4 }0 r& A5 F! x: `$ l) R& Y4 H
. n4 k5 _; V, _% |" ^2 [
, o8 e# x F7 ]2 m2 S5 ~2 v! E$ U5 N% U5 {1 M, ~
: ~3 B, s, j6 g2 v4 ~# m5 H
2 E9 s7 m% Q8 _( J' V- `2 H7 ?, Z# g
网络安全
7 Z7 l+ A- k9 l6 l( h9 j1 ^' r3 ~5 w, M% J
参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。
$ N* R$ V8 O8 m# J
5 Q. e: L$ Q5 l: p7 i官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。
" |. O1 @4 T c& B4 _( ~6 ]( V! P$ W- H: B8 r) F7 f
官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。
- B/ G0 s+ D! e* C" k( Z* W4 j
* b& G& T7 V. n) g5 k0 U链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。
# D& z% ^% O# a A ?" L7 n
y" F, a- U1 O3 U8 i5 ?9 T网络演进
* D& q' b6 o2 h3 j. m; s9 p0 }1 x7 M+ \" e
YOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。3 d+ l3 G2 k$ s) t2 L; z
% g8 ?, g2 h$ x: s
1、通过安全分片技术提高可扩展性
. j, @& t1 f$ |' M' g& ~" g3 `" S u3 ?. b7 o% o6 `' w3 V
2、逐步调整众议节点的选取参数,实现「人人可参与」
: V: T2 W k2 h2 ]3 s5 G- T7 a+ `- s, U& x! d
3、区块提议节点逐步过渡到从众议节点中选取
3 {/ ]0 q& _- C5 ^& T6 r& I- Y/ ?
& s" P% H" i! Z9 W4、逐步降低参议节点集合法定票数 的要求$ W1 \ y! {9 Y
1 i8 |6 N5 i' R
5、参议节点的功能将演进为:存储、转发' o( ^* \( @/ W4 {+ h, `9 f4 ? p
8 l; v& n6 X# _. y: T* [8 k前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。
% A4 z, I# ^% ~+ e
$ U" W* l3 E# I1 t1 Z) \以下为问答素材:
) d9 [# E T3 P |* D9 Q4 T* k7 M" `8 }: U2 @- r# d
Q1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?
7 J! }4 |5 k0 f' B i9 b, m6 ^5 w8 E* Q3 [ ~2 Z) G
何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。
- H5 F% i) V3 a$ j, P! s
# ^+ W+ D( I5 L S8 j5 V2 cQ2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?+ J+ e5 }( N. c
3 Q" U! k2 E! m2 T% m/ ^何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」
/ i9 ~" y; J/ ~# Z6 K# J# w+ W. H% y: w5 X
Q3 参议节点和众议节点的数量分别是多少?会不会扩容?
; G9 |3 d5 J. f6 p+ y3 |2 Y& Y8 @7 E: t1 |( u& v
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。1 m1 e% _. Z4 ^$ F' z7 A
1 M7 H. N' g1 n; u9 Y7 f7 ]- OQ4 参议节点提议区块,是否有中心化问题?3 w d! F6 j; \; B$ n- h c
8 k7 J/ `% |) M, H3 a
何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。
) |+ @1 t7 M5 P; ?6 I, n
% H% p+ ^) E" e0 P0 L. R& |Q5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下
* o, @ D; f4 T. m! f N6 @- U2 F7 S; w- X+ o C8 q$ W3 n# M: u
何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。
; N- W5 m0 m: }3 H" D/ I$ _
; r3 j' B* n" ^& c2 HQ6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?" q/ N1 k4 y! e4 C
2 Y; ]+ I" c* `4 L
何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |