网络与节点4 c/ J/ g2 I6 ]% h% A2 o5 B
: f; V+ i+ S. w, |
区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。
9 k. d, h' y) L5 y9 P
2 E( d, v: w. G6 Y+ o p- \共识与考量- u1 K7 b7 a/ f
1 C% U5 b$ a+ P* t `* U- n3 T 网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。0 t9 Q* V2 Q6 W* c4 q% P
# B* K. |5 C2 Q7 |8 ^ 大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?
; D* L& ^; [, Y( y5 O% n0 r# j U( j4 D2 h9 \
原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。2 d, ?# I: l3 u& [/ u
[% b- E- r& Q5 G( ^, d
现有公链的问题4 O' o% v& B+ P+ f
6 m: _1 P2 b) n G" H. R; L
BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。
3 X F' ~: I9 U' ?; i) n. G' k+ j/ S2 N9 w+ B
BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。
# U) O! d% s/ H
; B8 M' U" ]" ] EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。
+ u; W+ F. D' H8 W! {( R% W% U! c& R4 m! W- X4 o9 w8 R
可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。) ~ d8 N: {; y' @5 _* C) j
& U+ T# n8 F/ W1 b% b! L, g; J8 h3 ^% T
YOUChain 的愿景. [3 o/ _) b7 o
* V1 u) J1 @- t% j3 o YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。$ `! {& [9 e" v2 L: x: @+ A6 k
7 \6 C( o9 g5 _ P7 {! D/ i1.低性能,速度慢,难以扩展,不是我们想要的
1 P) j3 }) O6 e3 ` E+ E0 F2 M0 D0 x9 c! n
2.权利高度集中,不是我们想要的- a$ t0 h5 \0 e$ V6 i. Q* p, \
& O5 A. H+ n) S$ x
3.使用费用高昂,不是我们想要的
/ p7 y: m) H# u0 k7 {& a( N0 g: L( F/ d1 f; D0 y! L
要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。: b5 U3 P) R& W8 x
2 q4 W! l& n7 W+ Z7 b1 n$ \ 某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。
) a; X% O& p; C/ r8 V5 g# D k, F: w0 o$ G- x% p F. E
思考性能& @* ?* m: _4 c2 Y: t6 P' H
]% g( U$ S6 |9 M q 回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。+ g$ l* l6 W0 T3 }0 q
$ d# @3 ^0 k* y+ E: w怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。
# r" O1 Z0 m1 M4 l+ T7 L, V
$ r/ I* g# x% x: M 思考 one-CPU-one-vote
% N2 T% ~' b8 P' D5 o( k4 y( p% } C9 s. \1 V* \
考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?* u* h8 |; q* E
+ S# o. \2 ]3 T1 s$ H: E3 x0 [ 为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。
" |# _# n: s9 ^1 S! u1 ^8 B) D4 ~# U7 I, n; c* \5 `# `! B' y' A
当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。1 n7 o F3 F# Y/ V# a5 g
' \7 E' r& d/ d) i思考费用/ }' p3 N% ?# f
' K7 w; y1 ^+ ]* t3 ?0 `0 j 考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。. z8 q# q- A6 P
" o3 X3 A5 x" C) e i* Q v: P7 L那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。/ r8 o. I% X6 c$ Y' w2 f. ]" t
0 t5 u; r, ]" N. m: t0 w% o
基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。
% r3 ?' D5 T1 P+ Z3 T( d1 _' B& p8 a
抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。& f: e3 b( l" I4 W: Z9 o
, y! N4 V- p9 _7 v4 l: G
我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。4 v% C. a3 c' r
# P3 z v: a6 F$ ^思考可扩展性9 M1 `9 M" `8 G. Z
: l9 N" f% j2 S o* [8 u 从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。
; Z/ V8 ]- p; G' K1 Q1 `6 i8 ]5 j7 R% _$ N: H' @7 _; Q1 {4 j! u
同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。! K+ m. U4 r/ E7 p
( @+ z( j2 {* q! p( Z) @" b YOUChain 共识「YPOS」! x# [8 k S' C9 b6 }: m6 [9 B
- ?' ~, Y, N8 V6 B( d ^# W 为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。* S5 Q9 i" Z! G$ `8 a( ]
% C; G- G& W2 f0 m! [5 ]% u' l共识流程,主要分为两个阶段:提议和投票。9 ^0 r: O" I, v0 o
4 W- k, E' Z3 n# O$ R
1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。
2 C) f- L3 G6 o$ `6 e$ k; A3 j. o% [" H; R
2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。2 `/ u7 y' ?4 M
' `/ Q+ `' N& Q* o9 g, T
其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。' E# T* }4 o3 d9 E% T9 p; l- @, K8 [
. Z E) f$ F2 h4 G8 R, V) O( {7 j& u在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。: R6 I. R. J# T- b9 ?! F z3 G
: R& _4 s1 j" j' n( QYOUChain 节点设计
0 k( s: N0 E8 G) D6 x, ^. P, r3 K! A) W! }" Z- C! a
安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。* O$ l$ A5 C% G2 b# \
: e. J- @* U: p8 A' J. z- K) ]
在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。
! C- X# Z' f5 ?' G3 H, l9 w, s& l9 q5 l& Y R4 ?2 E+ ]
一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。
8 ^4 a% R3 K* Z+ w. X3 _2 z) v8 }6 H) s4 a7 L# S
如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。
/ o9 g: J( L% n, q
: x/ b7 V; M, m l8 ~ A为了实现我们的远景和目标,我们设计了如下的节点结构。
: Q: x5 `. f- g- R$ E/ h' A& X1 D7 J- X+ o
节点类型8 ~/ H- E; G! o0 X+ K
: x- J$ b2 v( z7 D; v) L
系统中包含两大类节点。& n. ]+ N9 w8 ~8 F* f$ Y
+ r2 ]1 p8 A) {8 Y1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。
+ {: x+ |. E+ |
1 K. P; s9 x6 n; C' n2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。
v/ i% `; a; ~. A1 T4 z% u! _/ A0 t. f3 w& r
以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。- D; y; L3 }# p
# F7 c+ ^# S8 v$ Y
节点选取方式
0 L2 ~+ z, I: W7 ?- c1 d+ ?0 {" p% a$ \
- c3 ]7 x X4 Y \; v
# C/ }2 X/ j) d3 ~; S: B7 E5 Z
- u& H. ^- ~3 |/ Y5 q$ d' { _5 V
+ C, U4 R @4 \5 B参议节点参数「待定」! V3 ]' ]4 y# p
& n2 O" q/ @2 F& \6 S
8 c" j- h: T+ ^# Z$ y" \) Z
3 {/ @! z8 h5 C0 @" K( z ~" ^
0 G& o7 N/ b# C/ c/ \
3 }$ r* x. [1 z; `众议节点参数「待定」
6 o, d" o5 ?3 B6 G/ {6 S5 l w0 {; [" _/ y2 l- S. I
4 R. m6 r: E H% x/ s" X3 }, | b
5 H" M) L; H& f
$ B1 V" L* p" c9 h4 W+ I2 v8 N2 M9 r
两类节点对比1 a. I/ r* v( G" Z! @; F4 ?- y
5 |* ^1 V8 N9 ~$ \- Z0 ?$ U7 c' s" h; ]" ?/ K
% L/ o7 e+ Y# [* l1 M4 H/ Y! T' |1 F- I+ s- _# p9 v4 |
; H! H) P2 @9 i1 D 我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。
0 U4 y% v! b+ Y3 |" ^( z4 d6 ~7 Y! p# \* E/ c
YPOS 区块敲定
( U/ }% ]; x' @" P1 o9 h5 t/ Z
4 f6 }& ]& U- k) s4 x( u( j. W1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。9 @) H7 U" ]: d9 q
" [7 |/ D1 T1 }
2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。
! l4 b; j) v' O! T
& m4 b# f# h: A$ n+ g2 ?* j3.满足法定票数的区块,则为敲定的下一个区块
0 ^$ m# n1 M: t* ]' G6 v
|3 m3 F$ g# [1 p' v定义如下:5 p$ g9 a8 K0 n% Z2 n; }& P* q
1 } J' M2 B" V$ k4 y: O& _4 A! z. q. d+ Y' f
( L9 |) l5 n; O# [- ~# _! ^
0 V' v3 Q0 \- K+ S& D* [& z
2 C4 A. x* L( e9 y3 [
7 V# y# q0 o$ G% H: k网络安全! G/ O1 i2 q. y6 E/ O0 A1 D
/ b: y2 K9 |2 ~ x
参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。
) ^! c% \* [, B* D
/ ^: d# A# h; V \3 J$ Z官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。
" Z; ^" M( p( x) X3 {. V- {7 \
) y/ G6 i% O4 |官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。
8 ?8 n: G p( T+ D' S4 J: o
8 |2 n6 B. e% d8 t+ _& J/ u2 ?链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。
( y1 b) S2 L0 x& @5 @- [
5 d% R0 \$ {3 ^; c网络演进
! J7 \ l, s# `6 E& c x; l
4 {3 t, ^7 c5 OYOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。
: m, R% w8 Y& G$ p. P, I: f- Y. V/ E4 ]3 C
$ y! y3 ?. f( g" _" C1 i1、通过安全分片技术提高可扩展性
4 [8 W" j [& o t% R" t# O! B8 z9 j0 S
2、逐步调整众议节点的选取参数,实现「人人可参与」& O) h$ Z4 A3 O1 H% R
' D+ s1 `6 V% ^* h, |
3、区块提议节点逐步过渡到从众议节点中选取/ f9 u% w7 j$ A
6 Q6 ^; c- ?7 [5 [3 c; O
4、逐步降低参议节点集合法定票数 的要求
( M8 D& Q9 v; X/ m& z/ a
J2 j' A% Y% y6 r. ?; e5、参议节点的功能将演进为:存储、转发( R# I0 {+ O" }- G7 l1 w% B
2 Y: |, X/ t- I, I' A4 F9 z
前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。
p# F0 X: Y. n; {; @, K# x7 R
* X' `, O6 R$ Z U* q k以下为问答素材:
2 x' e8 u6 c/ @9 q
/ p2 ]& J: O, y4 T8 ~" _7 ~Q1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?/ L# K9 e& Y+ h1 D0 n( Z
( k8 j! o. j( H4 E
何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。
7 n( \0 D- Y7 p( n/ O" }
+ l3 ~) O0 s0 q& k& p: L. a: FQ2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?, a! ~3 p/ P; {; ]
+ {1 H6 q5 i: a* M) Z- g# q何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」6 |5 y# P# d$ {
4 Y u2 b8 |% w- o( O+ ]Q3 参议节点和众议节点的数量分别是多少?会不会扩容?: O( U8 W! X e7 e* E: n
( y2 }6 w2 r7 g2 D
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。
- ?; W W2 m; s! S7 V0 i5 R0 |# v* f% O6 V0 e1 m, ~, s. w
Q4 参议节点提议区块,是否有中心化问题?
. m" H' r# c$ m8 ~! x; [/ ]+ X2 R6 p% A
何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。
* i, b. h& \, f6 H3 H; {) m% R& V+ d( \
Q5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下
5 H) _3 W: Q: i/ p' Z
8 ?6 U8 v$ H& O5 I1 C8 J" W7 ]何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。8 ` L6 ^' M, y5 U( F* G. E
2 x7 A( T4 ^: A B5 _. z
Q6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?' i" _9 @6 y* R
* J" n, a2 E# ^2 U( [/ d6 ^
何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |