网络与节点4 M1 e/ Z! ]0 R8 q, D* t% M
/ s6 y5 L. n0 R
区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。& u4 I; m3 Z* c! W6 Q9 t$ \
Q. C" c6 F" u: Q共识与考量
2 o; G [6 N( z3 o2 j o! m! J# c4 k& D+ t/ y4 f9 c7 k1 n$ [5 J
网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。: J) E4 R. {5 p3 @/ G: |
# ?9 R( l+ k9 j x 大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?
5 G% j! o3 g w
' I8 h9 w! f6 @2 Q原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。
- z0 c3 r% T/ k3 @& s, S, A0 q( q8 w; j
现有公链的问题% q% d/ t/ Y3 l0 r
8 q- x$ _! I! P* H3 |, Y$ R( d) ]% m6 i! B BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。
. r0 E3 \! w4 Z+ Y0 f# l7 ?4 B5 z' i5 d) Y
BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。
/ \* Z: C; i, I, E% o! Z1 S
. S9 X/ ^0 C& D: h4 }. @ EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。
% G* l. E0 D- v' k
" R' X' L4 C0 p2 k 可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。: j! B& h2 Z/ e& R# L9 ^- G+ |
! d. }& X& u( tYOUChain 的愿景
- U- g* [. k8 `* J9 g% m& n4 a8 f) ?
YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。 Y0 B; r3 K* H K0 P
4 x* y. K, B i# d/ m1.低性能,速度慢,难以扩展,不是我们想要的
: Q* S$ B6 l# [8 h* o. }. _; @( [0 |2 W
2.权利高度集中,不是我们想要的( _; ], A9 _) @( V$ E
" N& Y$ }6 D% W3 U1 q3.使用费用高昂,不是我们想要的
8 |. C, x6 w# M; @7 {! n
2 e+ F9 ~* O+ f, J 要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。2 i |! |- D* P% |7 A/ E
; _6 z4 D* w; L" X- k% k
某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。! w: U& M$ Z4 H
( M( ^0 y5 s9 a+ ] k9 H
思考性能
9 F' t' E* d4 o, C. v( U$ R7 t3 g0 u
5 Y7 R+ ^! D" F7 [4 i# H. K" X 回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。, e) D8 ~5 h1 J o" L
/ I4 \ k3 W/ _4 Q3 M0 g怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。# C1 ~5 T9 X& D9 c6 J
$ J* v4 o8 Z1 s9 ?- l' u3 w
思考 one-CPU-one-vote
. J8 @5 |8 Z* z4 p( H' ^& I& G# U1 b
考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?! y# {1 a6 v* ]8 i2 S7 Y; j! |( t3 X
8 V2 { n! U }8 [
为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。
6 M5 D( |6 S; d& T) g/ p; V: r' m3 V0 m) Q6 p* {& x; {
当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。
0 z8 s: e9 t$ ^: R, s+ C V( c) }6 y6 n" y
思考费用4 E' |( A5 S. y) g. y7 E; u) x2 W; g
0 q: C6 D1 ]/ g- I. ?$ m: D; @
考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。* G* {1 e- g: h/ {/ f
" L) y, a! W' @& G0 e5 D4 a
那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。
. U, d2 H" T4 f8 `! s
/ Z0 n5 }8 Q' E! O 基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。: q! w: ~2 ^. M: m* A+ g) S
3 [9 n* \: }, C2 c$ G1 |" G/ |5 c
抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。
# |' {: a3 t3 N5 ?
- S& {, t" ~8 A+ A) L 我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。
7 J6 d( ]0 K: a. c8 q
' H* d4 k4 a' Y) H- i思考可扩展性
1 p ?+ V7 i& K D; K
8 F, C, d$ [' M$ K \+ P; p 从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。5 u& h! m. F; \/ X) X7 C; Y
i3 u) V3 P1 v
同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。
( K: y" @8 b/ v5 v& ^
% [0 n. g# ?5 S$ I1 E YOUChain 共识「YPOS」
; @6 |$ n# D7 G) j, x" q3 f# V9 P4 F" u4 d# J2 [& @8 {
为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。5 z5 C0 `7 D4 M7 k6 {" F3 h
6 R0 s' t/ I' `3 j" K共识流程,主要分为两个阶段:提议和投票。) {% R! o$ F: D- i- r! W
, ?. U" j0 X" { @. A' d/ j9 x- ^1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。8 |6 j* j4 j2 f$ M, j
Y" A% E9 v7 ^* N1 n8 F# @2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。* b+ l8 E9 I0 T' `8 h
% ^/ _: p! K9 y其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。: T. K2 p) W' a3 E* j1 s
0 k+ F: j7 I. G" N& m* u在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。9 t% Y1 ~# R5 W$ B6 G) m7 M
8 }- @, Z) s1 g5 l2 F
YOUChain 节点设计
6 Y/ `7 K- P0 t& P% c
$ O/ W3 x; b# ^# V! z+ B1 |/ o# P 安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。3 h1 C' z2 k& V; r4 P9 X% r
8 t; ~8 T! l$ @/ j+ c+ k
在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。' N$ t l# [# Y" v O- O
, g" e5 x5 a. e: K$ o K 一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。9 F' z1 R- [+ I1 r) G
8 T1 g/ e% i3 B- @8 Z 如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。
& z) \3 q+ {. M6 b6 P& A F! a* ~' [' Q
为了实现我们的远景和目标,我们设计了如下的节点结构。
( `7 e* N' `0 E6 T$ v- X- u" \* ^- t: ]' Y/ ?" k9 ^1 |
节点类型
* @9 F' ?0 y8 ` b% l( G4 b/ ^# e
系统中包含两大类节点。
. q: |& g5 c$ K" c$ P0 J( O1 \
6 S/ R) a" l$ }$ F* x$ y4 @& ]1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。
7 H. f% y. ^, p* M! T
" |$ ?) L' x0 G" L1 W/ H+ c. @2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。" h. Z& W' m0 {8 |( l
7 x/ V$ f' J1 t d5 Q) A% l6 O
以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。
. I" Z! q, |& P; N8 H% J$ D4 P% O% D( \ J1 W% _( ~1 J7 t& Q. b
节点选取方式
% F; M$ \4 [; X! ~( ?1 ?9 T7 @8 M$ E( M
. z4 B9 s9 n8 l
& ^# ?$ w9 |2 H+ c& X5 e
5 {* P. w- u( A j5 \' p y& t3 W4 F$ `% Y* t- Y$ X
: [5 E U4 Q& O: B
参议节点参数「待定」
' N9 H- g: t8 l1 V+ F$ u$ z$ X" n9 \3 P; o3 \3 L5 E4 S
# S D3 ^# U' p W
. n5 G7 p$ S+ a3 M- ]. w6 n# H5 j7 o
+ }. _( h; @: d$ ]4 y; }( I! [% [/ e2 r
众议节点参数「待定」, e, d; w7 Q' V1 v
5 u" z! m/ l( y' P+ o! z: z) `2 Q' {
4 [/ d/ {0 V: A" R0 I
: r( O4 Z0 w" }( _- a/ \& e6 n
2 y9 p9 o# M* M1 v6 ~' T
- ~9 w+ Y. X/ r. H1 U5 F. p8 x两类节点对比
; X4 {- l" \" o1 R: d
) w. d* B# v6 j
5 q8 A) ]5 ^1 J7 z: N6 k. |) P$ b2 H* P) |% W
3 ~ H2 F* C& V" z6 h
! e- B7 z/ N. a# i7 q. m 我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。
2 O1 T0 M# w% w7 D+ i8 j* T
+ z" G9 q% s8 x: X6 w: MYPOS 区块敲定
! W4 [. a) v4 o2 H
/ P& ?! t9 A& R2 c- G1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。
% g: F3 a# _* n K5 y9 z$ Q& P9 k, G/ ~* F
2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。: F3 m" k" g# R
1 s3 _2 E" T5 \6 ]* o4 S, O1 x
3.满足法定票数的区块,则为敲定的下一个区块3 \ v7 q" q7 a. j3 Z, J
- _$ N4 O, {5 c9 f7 j. `
定义如下:
# k8 Y( U: @2 w7 g9 s; s8 Y
6 R4 U% q4 J6 l. e+ T3 l
3 I p7 r6 f- }- \+ w( Q- l: n% X! w8 D7 R& n$ A) y& l
( ?' K. p1 t+ {' N8 r
- K+ E6 o3 y0 @$ M! l3 D5 x# E3 c
4 S0 ` u5 T' o: f+ x; I
网络安全- Z. k2 y0 t/ y. |
( T% W4 J0 y' \6 q+ [9 ~0 l, F参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。+ _7 H- z( c& f- G/ a/ ~
2 i0 v* T1 |" D1 e5 Y
官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。# K8 \7 \$ B& P0 G o# V: C
& K- Z& y& W$ P N" N8 {2 b7 ~官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。
2 O6 k! u$ Y1 D5 D$ ?8 x5 J' t! E
链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。
% I2 Z: ^9 a; l3 B. K. o
' X' c7 i9 _$ E6 |( q网络演进1 P* R5 @# G4 T$ p
. V# b6 z x& \/ J# ~5 Q2 k1 Y1 S
YOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。
, r9 x J p% e! ^) y
% o* Z+ M) c% n6 X' h! q1、通过安全分片技术提高可扩展性! k; d/ ?/ ~1 q1 t7 r3 Y$ X
( Z0 ~) j' N* }& [9 q$ K2、逐步调整众议节点的选取参数,实现「人人可参与」, T; S: d" @. K$ w6 a0 T2 x
( y& R: c" E0 Q3、区块提议节点逐步过渡到从众议节点中选取1 U$ m2 Y6 ]# D& d# b: [' y
. a! l8 Y. T3 Y9 |4、逐步降低参议节点集合法定票数 的要求
. i8 K) ]7 N6 D2 `0 c' \! w! G( k, ~" T; |2 Y8 I1 s% n
5、参议节点的功能将演进为:存储、转发
. }" U1 p4 i2 Q% V' T* ?: f' E* _% W( Y
前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。
- ?$ J5 l3 C- m& p6 ]
& C! s: q/ f; F8 b* o. W7 ` ]5 Q以下为问答素材:8 S9 o* ^: w3 |
2 @# J, n* ~" I6 f9 `+ S5 {
Q1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?6 L% ~0 ]9 x7 G) [- X/ ^
/ C# j. Z: n2 f4 W1 t% A0 S3 q* A
何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。9 L3 X. {+ d+ [: o
1 l6 b+ l) [1 {; o( q2 j
Q2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?6 ?/ j7 g, i* G% G
& [9 u/ F3 N4 X5 k何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」
3 |) r2 E- ?; [$ g) O4 d" I) W
! J# b# ^% t/ o& I. ~8 KQ3 参议节点和众议节点的数量分别是多少?会不会扩容?$ m: p8 f: |' L- z! \( m: j. v
- a! J& w0 W' J6 q! Z! A
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。
& i. h0 r% d7 D
5 k Q: M9 w% M* m$ mQ4 参议节点提议区块,是否有中心化问题?
7 V3 E* @' u, K
% e+ Y! s- ?# X$ o何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。2 [ @& x, p4 P0 X
; B* n, [* H# ^( q. zQ5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下
# h y4 B6 M" k( Y0 ^% q E4 P4 A2 g t, K4 [
何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。5 Q+ l2 _' N) I% G
# V0 t. J! @; }2 b
Q6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?
8 N. }, R+ K5 `) W% R# G5 ~% j; |- o1 v9 n) s
何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |