网络与节点# h& v; T4 z" p) {' M/ S2 n' X; h3 [
: [; H( c- r( {& t 区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。7 K" ~1 c# E9 m
& f, a; c; x$ Q2 `/ L共识与考量
9 O8 f: W' d# e, z5 l: h0 Z
9 D! G" o( U6 O' w' O% c% e+ J 网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。
8 p* c: v: U" l
+ j$ k: m6 i9 L4 S( Q+ \& ~1 H" C 大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?6 N4 I0 ]. ?1 G, ~6 O. ~
1 f- |0 c: J P
原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。
4 F0 |4 b7 J$ y- u* P4 g X8 r/ ?+ ~; X& j. J. @+ }0 n
现有公链的问题
" a% p$ C4 p" Z: X% a
W8 T0 Z' K# s- X$ j; j& \' D( k BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。+ [3 _/ O5 C4 M; b, I- u
& d; U6 `1 B6 e6 a+ v9 R8 Z- r
BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。% `- g7 ^! v7 o: ~' J" a4 m- a u
8 A6 C- w7 j) ~* F9 _2 p
EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。+ P/ Y. K" }( W( [; o
0 _3 k5 G# u+ b7 t0 s* v E
可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。. [5 R7 \$ @1 J
0 X( y! K s$ kYOUChain 的愿景
- m; V1 v) Q, t" z6 X' j. b$ C+ N4 d. E) S# h5 B7 y1 n% g+ c
YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。/ z0 o/ B# G* j2 _- H
/ J+ p: Z' }8 q& o9 V$ e1.低性能,速度慢,难以扩展,不是我们想要的( a. Y. i U% B2 P
" S; g9 F3 M9 k( Z s- p; g
2.权利高度集中,不是我们想要的
, E- U8 R+ ~# G6 O3 \4 I% n9 b( |# R/ F' m- s5 L5 q
3.使用费用高昂,不是我们想要的4 b5 g' d/ E$ \, W
. a" P* J; \% J! ^9 ] 要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。6 U$ z0 ^) u8 h+ h% D" B9 r
+ `, W& a, G7 y- U% |$ g( b 某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。" r2 [+ G: ] o; @8 G
- }1 ]- v7 ?, t* b h& O- a/ m思考性能; B! a) g" A3 \3 F& x, @* U$ l5 ^) b
- G! p& o* G+ Y
回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。) U2 m! s8 k, I. s% @# b! b
! f2 M& m$ U% \/ Q% z' P怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。
: a4 l6 D; P( K, X
0 ^$ o x9 B( G& J; O* r 思考 one-CPU-one-vote
. ^6 e4 d! X! J& p
, W5 N% q( u' G* M* g 考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?
$ m! [( J7 @9 N: I9 N- |0 V3 r# _4 f% {; r' g# Q5 @
为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。
0 v3 l) R. S" n- S1 w+ d8 j8 u& `+ h2 L
当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。/ l. z) m& E; ~$ M$ {# v
3 s, ~0 D2 ^4 X+ l. R
思考费用7 G# j( C( [8 Q4 I
% ]5 }- \2 ` o* {& L5 B$ e 考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。6 s Q4 B1 A! v7 J$ b
1 z+ i5 r/ a6 P那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。" l+ V! t" [+ E% n( L: v
l, x6 g# R: u: c& ?" s. c# E 基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。
; W0 b0 ]3 N1 {. p, ?: {: e
a5 o0 X4 R) N' k- e抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。
N( ]6 y# Z; c: Z; v+ L3 K6 [- g2 p/ e5 g q
我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。
8 K" o, n" u) g
2 f5 u( P# c: o; b( e思考可扩展性
" z5 o6 x9 d6 t: X B V7 ~# D, C, _0 C3 [1 S
从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。
- g0 f6 n1 t1 ~' ]! I
n4 ^9 S" h6 T8 ^) l; p 同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。
( g0 F7 T0 @' O( a7 D8 x0 I3 e9 \+ i; e0 q/ |/ m
YOUChain 共识「YPOS」
, A1 |8 {& C* @6 D% Y+ @8 | ~3 d( g }! Y. G
为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。
2 A0 \9 B! m8 |9 M* N- h: p3 J4 E/ M7 s; D% Y: T
共识流程,主要分为两个阶段:提议和投票。
7 `+ a* g# P, H
3 Y+ I6 P E0 N+ T# G1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。1 ^& j" z8 j# B& z/ Q
+ l' ]. S2 U, i. e2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。8 U3 v0 J0 V r
0 C, f0 n! W% l其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。' T. m) A" i6 h3 |7 B* M
* o! h8 L" _! n8 F3 c
在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。
, ]& o, u& U8 c( ^
9 X) C2 i! ?0 n% L6 U- ~$ EYOUChain 节点设计
8 D6 A2 o v& W6 ~ b* L+ y+ z
8 l( @ f7 T7 @4 f% b5 h' l: x 安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。- x8 a% Y8 F& g4 P; N! m$ X
6 R) N9 B5 z: T9 c- V# |在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。! k( \% G0 g) Z. B$ w' h
m4 E1 h) K6 D7 M5 L: v
一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。/ D. a4 |- Q# E5 P% g
% C0 f, k# r" b0 g: l 如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。
1 N% u, J0 H7 q0 w& ~5 [0 C$ T/ {- Z/ G8 R" y
为了实现我们的远景和目标,我们设计了如下的节点结构。
6 X- a/ E1 |/ G' A3 a8 r3 p) T0 R" p$ f6 E2 D2 N
节点类型- B7 d$ S: i) G, P# A
3 m& ?; D! p: V9 E6 T# @
系统中包含两大类节点。* p4 r+ }! t, l8 Q
2 G- D" k0 |3 s a
1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。" w& _7 ~# f7 ~
; t0 L& g3 K. u1 a2 Q8 Z
2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。2 g9 e6 q6 ~& `( {& g
1 ]# s& D7 D1 o. u6 ?
以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。
/ `; j1 M$ | k7 d C
1 N+ l- q8 i; p. J' {6 A7 T节点选取方式
: w5 S6 y# ~ r2 {0 r5 R/ c, w) O2 J" G# _! h" ]
6 Q$ ?/ k# n/ n8 @, O8 R; y
3 V" V* V+ I5 H8 O( @ P+ j8 B
/ b7 A0 w! b% \9 V& {
$ X$ l8 g" n. ~" y% n# c, \* Q2 H0 _: H. y5 N; q/ r5 _7 L: X0 P
参议节点参数「待定」" Q* _% }; J4 |, y/ j
! R$ }# R0 E6 L! V2 n+ a/ {) Y( M+ [* o- y
_2 F: \+ ]# O0 ^$ j
: [* X6 R/ S8 c4 K$ e- o- i' q3 Q1 Y1 m9 S3 r* F
众议节点参数「待定」
" Z. Z) R+ w- `0 I% b1 e/ j. t2 F/ l* |
8 R0 Y j9 ^2 F+ d4 R, k
: S& X8 u! t/ A! N/ G3 U
/ t+ }5 ~8 s" _% [/ h5 B3 s; b6 D5 V# U8 m
两类节点对比- q; O' Y8 i! w! W! R
! p& F0 V2 V4 c: \6 y" e4 }& }3 \4 A7 a
- d% Y8 Q: J! S1 n8 @& i. U( Q
& o0 b0 M8 B/ ~! C+ ~% @
2 l$ J- j. Y: ]1 H 我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。% T Q6 p+ f( b# T0 g+ L2 x$ v6 q
1 w! m3 V7 I' c2 ~+ ?$ V9 | OYPOS 区块敲定
% p: N. q. G# P1 S. m g, q% J: h6 m6 ^/ m r
1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。
1 {" }" z8 a/ w E) Y4 Z7 w, L9 W3 w; [9 l5 C& Q$ L3 L4 z7 t; W+ {' i
2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。
+ G4 B" u) I7 n% K! q4 Z9 m: v/ \) c5 v) Z) i6 H* L. d! Z
3.满足法定票数的区块,则为敲定的下一个区块1 S/ x# f) W/ N" T. ~
5 G; F: J8 C7 o0 p) o: {定义如下:
8 C2 Y7 A: o4 j5 F' l: k. _4 [( b
9 ], |$ t P* [5 G4 c$ j
1 S A7 s& U$ `6 a8 Y8 q
% e& g+ L6 J" l ^* _
% E* J' D b8 W0 S; S. Q V4 {; F. u0 o) H2 [: F
]; a7 U& n" A% D+ u
网络安全
. |& ^" X, Y, Q9 \4 Z; F
" k. J# Y! A- |! t0 n0 O: ]7 a/ I参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。
/ ?+ \1 O2 \' u7 F3 I4 `0 y& W. I1 U0 W' v7 O6 K
官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。
* \+ q# M6 v2 R' e9 G# I1 R& s$ S* Z- Q5 l
官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。
9 x2 x' [- `6 W2 |- |8 C" x' U7 A: i. n% K% r
链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。 q; @) n4 h( r3 N
$ b* u" l1 x* u1 F, Z" x& S网络演进. u& [3 x& r- ?! d
/ h' ^ m6 O1 i1 jYOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。
& V: l# X+ I2 s# ~* k. D. b% m5 {/ m4 c+ A9 `6 O8 |" @' a6 }: t
1、通过安全分片技术提高可扩展性1 \/ ?6 U9 A" `1 {
9 a0 o5 K0 I& k$ _' u& J5 U
2、逐步调整众议节点的选取参数,实现「人人可参与」+ f. f2 E( }! t) H- X8 D
I) w8 Y# j9 C. r7 K2 l7 E
3、区块提议节点逐步过渡到从众议节点中选取
' I* R0 u! q$ w7 ~+ n$ |# E) A- v# g' ~) y J# w
4、逐步降低参议节点集合法定票数 的要求* ?( k! ?0 |1 I3 M/ t& w
* }" F+ v* Y1 w5、参议节点的功能将演进为:存储、转发
& x) i- w4 l; R9 B' i9 Q* G w: W/ M" ]% M6 j
前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。( J" |2 v; z/ B' Z; f
X, ^, w: b( I1 K- Y以下为问答素材:! ]% u+ s/ H. c0 X
. f5 \6 Q! g* xQ1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?
) T* Y) I- G$ u: `4 k+ F6 U
+ o; Z `. [$ x, F; N何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。) H) i# o' `. ^; y! D, W5 r! ]% V
7 q* q/ R/ U: Y* i; N9 {! jQ2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?
; m1 }$ Q! E( G& w7 Q! c( R1 z
! v! Z* d# [ _3 l% |1 k. c, Q+ R* [8 S何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」( d# O& _/ [8 L+ b/ a. G
" T) Q3 V* \- S4 S$ KQ3 参议节点和众议节点的数量分别是多少?会不会扩容?6 l( r2 V- a8 o, ]$ U+ D+ ?% Z- P$ c2 ]
& L5 n2 a! x( G. D7 w0 H. x9 X9 ~
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。4 M# T+ Y& {% O ?
- V0 J1 L8 N/ ~0 n
Q4 参议节点提议区块,是否有中心化问题?2 g5 i, J& \+ N* M2 u' t- q b( W
, Z4 \/ {- M) {; t. G2 E
何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。+ h2 G) w% E/ N1 U8 n% O
* C7 ~: F" K1 l+ X
Q5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下& s- L# T) ~" L) {1 z5 ^
$ m8 f* I# s& z2 b, H
何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。0 Y u( f4 Z9 {
, @5 Z$ m1 I1 I' K) V& [
Q6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?
) T4 M, w' c. x+ { p8 p0 Z) |1 | g1 K
何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |