网络与节点- e$ A0 ~- t6 q! K4 ]1 M
3 n: k( ^. d" o( W9 X# R3 P$ |0 j 区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。
5 P' F3 u' F/ E: ^3 ?$ p2 [5 \, q" \; x$ @& L: C8 l
共识与考量* E- t/ J5 n. C
; z" c- ~9 w$ d7 K1 r
网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。/ V8 Z- l2 Q9 v, `2 n
8 t* i6 W1 `9 v/ X' x8 ^2 f( ^4 Q L
大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?) r+ E! g4 [: P8 z V
; b" Z5 f" X# T原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。
% N1 o9 v8 G6 H$ l' z/ Q- Y% h- W
* W: U m9 {3 \- M8 e 现有公链的问题
' i$ ?, r" V( u& n& X1 }) W* r1 f; i6 b) ~* h6 l" h
BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。) [; I" A0 n% L" K, a' t9 I# N: H0 [7 N
; U; A. Z& `( g3 e" O+ `0 Q
BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。
; S9 \- g8 a% j: e. ^
9 ^: o7 \% `) V) c H0 k EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。
! Y9 `% u' B3 z
8 }/ j! [( F, h+ l- t 可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。0 w8 F4 l" r& v% l9 z5 _, }* w8 w
. @* X, Y# S0 d/ YYOUChain 的愿景8 P' |! l0 D* \) C- y5 e# |7 P4 k
) d' o+ E, \' s" n: T* l8 X
YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。
% @. O9 Y1 H- T* `9 t, h
% e) o, r+ A, ]& V( m1.低性能,速度慢,难以扩展,不是我们想要的" R- O# ]6 c4 v3 t5 V2 a5 K
; U& F2 `6 V I Q- Y) A& R/ d2.权利高度集中,不是我们想要的( B6 q* I2 t8 L
/ `# n; I7 Z8 U+ q& t3.使用费用高昂,不是我们想要的
7 k; d- r/ p# X! m+ O' t& ~% s+ |' [' ~3 P
要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。
0 R, ]% t: B7 K& j. }+ j3 O5 n2 X3 Y! b. s
某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。
; Z" n' r" ?- e! o& R
, l6 x' g' k3 W' g+ v! w' p/ e$ b思考性能
: W4 T& b3 N' d3 L7 V
4 N% ~( P3 o: _. B 回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。! m. u! q' {! \% l+ [% b
+ k% W" i1 M$ [8 H5 _0 }怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。
s$ D# \0 _) i/ o0 J6 v# Q
! |7 g7 i% l3 w2 s 思考 one-CPU-one-vote
6 ]5 M9 W; Z- l, U6 i1 @$ R2 k: y' V0 \+ P1 h
考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?0 w+ h w3 g8 U. M; }" L
+ }# N l+ F, G+ D* U4 j# b! e
为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。
% f6 F- j' \3 Y* o/ z8 Y+ [
& ]( v4 I# z1 ~: S3 N 当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。
2 h1 O0 m) Y7 [
) W1 K* F) q! `* u5 v) {思考费用
7 O1 w8 H$ _! x# k9 z: C: H4 K. ~4 Y* x) Z0 j- G
考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。
! ~$ _! T! O2 H; c* t3 n! k
# v' d+ P! a) h1 ?那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。5 {$ Q) k4 Q3 z" P; g
) H0 \& N8 d- n( G, A
基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。
6 Z8 e+ Q* E$ W9 x, M
1 S, z" L5 i; Z7 X" z* b5 f抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。) o S* R8 j( |
+ E$ E4 ]* z1 k) d' q: P, H 我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。
% A, s' W5 L- w
! @/ w0 E, ^* S3 c) v m2 W思考可扩展性, R% ^$ q) B$ B- J) f3 i
/ @9 k% K% z6 ~ k
从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。! M6 D, g' Y: L" V
$ J( P4 w z. I0 U8 _- C
同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。3 l1 A0 a& I( n- v+ w
! Z/ G4 M( ]: a! s YOUChain 共识「YPOS」
: }$ _. V0 T. A0 b
/ K, R3 o) B4 A 为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。: {% }7 a5 Y4 ~
# A2 c% `; ?/ { ]& o& i( V# W共识流程,主要分为两个阶段:提议和投票。
& r. r8 v$ W: Y P
8 v7 {, w& a; O+ v! @1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。
- ]% |: `" ], z `' T+ o5 E5 D: ~9 g# W
2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。& ^) v: X+ L R/ I
& P6 y6 t4 q6 `1 J
其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。
+ I4 ?# a; I2 x/ k3 z/ T( H; V; u% A* B* F1 |
在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。: `8 }6 q5 b ]: ?+ K' b- e3 O- V
" n4 q* V3 Y, {/ |( p4 g
YOUChain 节点设计7 S! L7 l+ ? w
) Q) _+ w: |( i8 Z2 j% h" A/ Y$ [ 安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。2 y& z4 j, K/ |0 q c# {
" `2 r# Q8 a& s, S# k
在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。
! L! n* Z3 l0 f: k$ F6 q S1 K0 R2 G5 P0 M9 |$ n
一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。
, E# z. d2 O7 x1 t7 a( N4 |9 U( {: d! |- E4 J$ J" {
如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。9 g3 X w7 Z! {) j- [
( t5 V5 V5 s% Q( T/ D6 p' e为了实现我们的远景和目标,我们设计了如下的节点结构。
! j" w4 u% g R. H2 N G( |
" D0 q z1 w- y7 j节点类型! Q* D) ?3 Z- P
7 `% `# b/ T: g, n; N系统中包含两大类节点。
& K% ?: |5 x: I+ l3 W J. k
/ `8 d. L y4 @- b( D, t1 H, I1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。
! l- h) ~& f& B6 M; S2 @ b, b
% \7 J: M5 z/ m) x% R$ W0 D2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。
" Q6 E! E1 T0 j% L0 }* p& y6 y4 Z; A6 ~
以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。
7 ?4 ]. J' f- C4 A: X& S' T# ?, t6 {' \2 I2 J- ^ N5 s
节点选取方式
, {* ^1 p8 I' A2 }* l% p2 ?2 v2 `( t4 c0 o4 k9 t, i
6 y( h1 c8 g! F5 @( }
k2 }2 [$ N0 K2 W' t9 Q8 T
" K( Z9 A+ N* l( b$ ?6 i: [5 i6 ^. K
) a+ R* O/ Z3 E. e+ O参议节点参数「待定」
6 F4 G& H% d7 K1 V/ _
* C8 ?# c7 Y3 e z* ]) k
4 Y2 m1 ?" X7 u, w9 B3 j
7 h+ B% ]9 M3 U4 R+ U, c) D8 t/ P$ _4 R' h8 J+ Y8 h
6 v8 z. i% E/ P众议节点参数「待定」. i6 w$ K/ M) S
! B/ A, D0 ]' {) }9 P$ ~8 e# O' k+ |+ E' M( e
7 @# U) |5 ~# P& U8 B: p$ b- D
. c# M2 s2 I X5 B2 N
, A5 V2 v, j# j( j% C2 m两类节点对比
& t9 y1 u8 Y) P# Q/ B6 B! Z; G6 a# ~# d* V D, ]! _1 j2 e
* `. w( G- B4 d5 d
3 s S. D# @! P) P6 u( K' ?7 e; T' |- q% m) @) e
, J/ \3 B! z9 X" \% l% ]
我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。
J$ v$ }+ K0 n7 ^% n$ G' y- S: w7 _+ O( ]
YPOS 区块敲定
p: N |, B# k D0 `
! j7 O2 e [/ z& M1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。* E; f$ h( U' g6 U! `: Z% u4 |
* v3 A& D6 `1 |
2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。: }9 S8 t) [+ ?) W9 X
) g* T& b: z, W0 {" P$ o7 H3 {
3.满足法定票数的区块,则为敲定的下一个区块8 k& R. t' u+ f2 `1 c6 z! ~! T
" j- h. f# |8 F+ }& N定义如下:
$ ~% e1 W5 ?1 M# w/ P& B6 ^
+ @5 ]& E( O" ~! n5 q2 v9 o! E; q2 }. i
5 b: J: d3 H7 Y- @
f2 q2 h4 E. U; E4 h% f& E, J, H' c N, C" i2 E
+ ]# l2 r/ F& }) t
8 I3 j& Y6 ~* i4 L" e6 L# y网络安全
4 c' C" W; ~6 T2 a# G& z2 c! ^8 w. P. s8 \; B: g
参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。1 [" e) D q. X7 q0 N* `
/ o$ t# y: J: O5 h t3 E9 ^
官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。7 P ~5 ^; ~' n, {6 z
8 {0 M" I, o5 L! i- o& ?
官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。
$ n4 e! s$ a' a* p6 f H N+ s3 e0 y7 H
链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。
9 t4 a' o4 _6 {
' ~# r& x% Q. F: @% x网络演进- S2 e7 H# a) e4 s. f5 r
/ C! A, Y" l5 x! l$ j5 G# nYOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。2 N! P6 j) t$ ?9 ^% _
0 Q5 l# f" @8 X$ y
1、通过安全分片技术提高可扩展性' N7 |4 U1 _8 s/ S/ a( ]
3 R6 S. ^( s! \+ C. i5 C
2、逐步调整众议节点的选取参数,实现「人人可参与」8 H: L( \' p8 O( l
4 ?+ @ y( c: P/ @# u( `- P W" N3、区块提议节点逐步过渡到从众议节点中选取
* p$ p0 c3 }: d8 a# t- R6 {
t5 q! \9 Z% W, B. _: F4、逐步降低参议节点集合法定票数 的要求& T! c5 M6 a3 o9 ]' w/ Y6 c
* B( _; t9 F& h. f t
5、参议节点的功能将演进为:存储、转发' K$ `) @, T8 @7 p5 G9 f }9 ^( h
. Q2 s/ x0 ?. d9 U: Y
前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。; {. W) V1 q1 p5 J' H: ?
" ~* _3 E7 L, l( |1 M3 H9 y
以下为问答素材:
: I4 e- K7 E* E! m/ V& r# R
' Y; ?: @+ ^5 B8 ~& IQ1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?8 i+ N: w- \/ [' @2 Y) \
# e9 E+ r; ^, w# q何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。+ l/ I! W+ e$ i0 w
8 d l" [* J3 q$ I% e
Q2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗? W9 J' R' w* ?6 z! v$ Z+ H
. Y: E0 K" B ?4 o
何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」6 W7 @8 ?+ D+ r0 T3 _5 q
) @* e- E4 x: q& gQ3 参议节点和众议节点的数量分别是多少?会不会扩容?6 v' b* }* k6 q6 z( b3 G
* R3 {0 b% z! ?/ u, a' q( o
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。
# ^5 p& g8 p; }# T( B& Q3 r1 G; N3 x- [
Q4 参议节点提议区块,是否有中心化问题?
3 x2 |% Y8 `7 K6 `6 C4 C8 I# D6 F
何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。3 k# v* o( Y8 m0 ^. }, N/ Y/ k
. g! S0 O( b4 C
Q5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下
@' i) Q0 \, E) w4 ^* L+ q" _
3 ^. }/ ]9 b) b何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。
, j, \ i2 s9 b! j+ I/ u6 ]' z/ F# \( V
Q6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?
3 P* U( R% K# Y, O$ O" _+ v1 _* i) r/ v3 U
何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |