网络与节点
: O3 Y. r. B0 i/ F$ x. n3 D$ u5 y; [8 t$ o: U
区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。
* i/ ?& z' V& ~2 e/ ?( Z0 M) C5 m1 @' E" A: L
共识与考量
9 A$ Z% C7 Y; _3 `- _7 @8 a& F, D( N7 e0 [' X) k
网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。
1 l7 i6 ~0 ~& {" L& S* ^9 L+ n+ {, x/ J) e9 D. b) N0 F
大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?; G. H( r+ n) u) Y
9 [# x" s4 Q6 P! {5 z3 l; A6 d
原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。8 _6 K4 ^0 l5 {
; z# l0 Z% i i5 H9 V7 c 现有公链的问题
) C1 H& s) [0 L# R3 p! k( p; F2 ^; L9 N4 t; ~
BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。% q8 t0 K$ G2 N0 I
$ e, P( X k& Z0 E
BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。% e" L; V* F [# Z( t
* r* W3 U1 s F1 x% _- D$ N( @7 \
EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。0 B# M9 D. a; D( E& E0 r" p
4 K& F* e6 |, j# M8 _
可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。
8 c; [ a4 T+ h' r3 t* F, Y( E2 \8 U- J: q# ]
YOUChain 的愿景
% l5 N4 v: ?7 V |1 S0 W8 S+ R; E/ ^+ m& _
YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。
* H% D( e7 j3 ~1 w- N: F9 ?0 a0 C
4 F( l1 K' h4 W9 L! ?& o2 _, A1.低性能,速度慢,难以扩展,不是我们想要的+ q: {. o \9 U, D* p
8 d2 Z3 u6 I/ Q/ t6 J5 ?
2.权利高度集中,不是我们想要的
8 C8 S0 [+ ^7 O- U
) t8 u$ p7 k4 k* E8 N0 G) S, b5 T3.使用费用高昂,不是我们想要的/ d+ i* Z! A0 z
% `- e$ i ]) @ 要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。
1 k9 q' I, a- Z9 y
5 b Q) N8 A4 x8 H5 Y2 G 某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。% o1 M. [% S- k2 q* ~& N. c+ e& W6 ?
8 f& I- f$ {, R r% F6 S. N8 y
思考性能: {, f; a+ ?- v, @
" W- _5 p$ @/ y9 q4 p. j$ `
回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。$ a4 |/ Z# u7 e/ H& _
$ j, l' t2 y1 M) `# ~' J% s怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。8 ^& R# b1 G) J
6 |' R: L! r# \6 T7 b4 T- F. ]) a 思考 one-CPU-one-vote
$ T. L5 M% T9 l; W k
. W3 V% o+ h9 P/ v6 o# A1 [ 考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?* P0 {. a {% R5 ~4 n# h# q
- r1 [5 e3 w7 Y; l
为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。: L5 m9 J( m+ @ R& x2 g) k; ]
% z2 }7 E2 [) ]% q" ?, X |" { 当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。5 d8 }. B, U8 p2 k
; S5 J# s! N+ c( o W; v. b! g思考费用
3 |2 e* k! Y& X! s- u: u$ j% p) B) |" W F% y
考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。& }' [4 x: J7 E
! r$ W2 w( o4 e( g# {那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。
1 o% `# [' Q0 K$ K; p! w" e8 Z H# B8 N% M/ E& n5 t5 f
基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。, q$ q0 F2 o; W# }! m
1 x& I, k& y+ C
抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。
! `& P& o7 G8 z" z4 ^9 l! _' w7 }% N
我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。
8 Q) |) A" Z7 q9 t( N2 T; n% q
5 {- ?0 W- }5 H5 a- @( N( b1 w思考可扩展性5 h8 G" m8 j, a6 n) x0 }# q
6 v0 O: A0 U8 z
从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。
* ~% d, ~1 B8 {& A0 a7 C9 U( | |1 @7 F5 Y1 r
同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。; d% {7 v9 s3 e7 s
/ Q( ^0 b. W; u! u8 N
YOUChain 共识「YPOS」
' L( X/ K9 k$ `# X5 a* X2 a4 t- ]' e+ _8 N% w/ a y9 \9 x- h# W
为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。
. B7 e# Z, A1 L" \: n; V9 ^. r7 H5 o/ x+ [6 b! D
共识流程,主要分为两个阶段:提议和投票。
) ~9 d$ x1 P- q$ Y. Z9 ]' ^, H4 i @# ^# `
1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。) _6 X% T9 d- N& G d
6 @! @0 }3 z6 e% H# r0 C, n* {2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。6 f& S# m: q! i8 ^( x X0 p
" ~6 K' G1 D& r, n3 V) b: }1 A
其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。7 w W% G4 O# ?6 T) ?
& T5 v4 g4 z, d7 z在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。6 n; p0 M, g& b3 u) l9 @( P: B g
/ W% E' V1 P) m' N4 L$ `4 w. Q
YOUChain 节点设计& `; P; Q9 r( u" ^8 Q# Y+ c
. N4 b8 h- P% M' H( S 安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。
) Q. y/ ?# N# v
% C0 W0 `& s6 z- O `+ G# a q在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。' o" `/ }2 r7 M, N' [
; Z% D/ P& ^1 w' b$ N
一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。, v7 A' m% X9 B1 A. ]" G; @6 r: q5 Q8 t8 w
& r! N8 h4 c& e9 D& P
如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。. j# r }# R7 T" ~: Z7 ^
* x9 N, X: q0 A0 P" s8 G
为了实现我们的远景和目标,我们设计了如下的节点结构。
$ E9 d( }% @" F, {) [
9 ]8 m: a; x7 \0 K# s节点类型+ J0 y+ h1 `; q
; o1 N- l5 T' \$ M* Z
系统中包含两大类节点。
4 B3 K2 n+ w Q' A) z6 g3 S
# w) z$ y" X" p; c, L1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。2 [* J, ^$ h, y, x
# a! w. G6 r, J7 h) D+ {8 P; r
2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。
& L# A: O5 r# s* X* M! I
% @+ I/ _- }+ `6 M" _以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。5 {" b, H2 X$ W
% ]) r* ~. O& Q6 r
节点选取方式
! m/ `3 c9 C7 [) \' X% l
$ z0 E1 T3 M) {7 e# P s2 M1 b' ~. p. J8 M2 ]0 E( n* J
8 G2 X3 ?0 D$ _6 g8 C7 H/ v9 v
" o" I0 t# p5 }3 q; s# S. S: v2 D+ u( U+ A) D; V" r/ u* Y
4 O' i: t8 r$ k参议节点参数「待定」
9 ~* y" ?$ ]5 W( l0 F) a- F4 C8 b5 r# n" h& `$ T; j0 [7 `
7 J$ Y4 P* ^" g+ D, o4 n
: c7 `0 w% b+ c, K9 _& [$ n1 K6 e9 v
) c* o4 _ H0 B
7 r l. W$ `: I8 f" I" o
众议节点参数「待定」: g- T a G# v* ?& j
1 g6 o$ I7 k$ r0 Y1 X
) U+ Q# n, o; g) D$ v
9 a! u$ ^4 m* b& W V# O$ R, B0 l/ {- l5 I# C# C) I: L5 t( c
. M/ G9 Q ]' p5 {: I* Y5 U
两类节点对比% u. H: @; c+ C: d2 D1 F2 v
4 n/ Y' _& `7 @7 I2 T
4 @+ y) n! ?0 l
0 z! }/ Y" ~# X. D1 ?7 C9 M: F" U
' A1 W+ E- D7 E2 y& }: x8 ~ 我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。( V# }- L9 L9 {8 _1 z
! R; ]# _( l5 C4 gYPOS 区块敲定7 M# v$ s) z$ M( h
' d) K" m9 W3 Y6 r0 S5 `
1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。2 F3 i3 }% X: y
0 ^# N n1 D) j) t2 g% Z2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。
- E0 `9 F9 k8 v: s* F: [9 a& Y9 L3 X- `7 h
3.满足法定票数的区块,则为敲定的下一个区块' ^! \/ q% E, m: J5 Y) ^: W: F7 R
" `* S" N2 j ~) v; x: X+ Z6 {
定义如下:' b- |( ]/ j: z# M3 k
3 c* b, w! r m! B
$ h& C3 I% S! O0 [, R4 y
/ N0 b4 ?- t# M/ ~8 \; L
2 |! H. D' j: C j
# S( {' Z" s0 `5 x$ k6 k
" G' {& X+ G" T" P; f网络安全, c/ V! t6 |5 n3 J
/ c- E$ Z* ~# X7 o4 X# U7 c# ]8 e! l% b参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。7 W; g4 n5 A" I0 C9 d( L4 X
! y' A; X: S0 @
官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。; |3 g, d9 e2 W J, o+ r5 O! X
% p9 c' r# p$ U3 j* H
官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。
- b0 e9 S, d+ g+ b- ^# K2 O# V; u4 x3 o' n3 s! w
链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。- l! F4 O1 V& X' Q# g0 T( i7 ?$ ?
3 A5 z0 X* X" {6 \网络演进
* r& B, w. Z" }( H+ S% q
5 @4 d- M5 O1 Q+ F. V2 o0 LYOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。
0 q) S% Q/ ~& ?# w% T9 b
# r9 w j# w" |; _/ K% f4 W9 o1、通过安全分片技术提高可扩展性
4 G9 j# Y6 ~! d6 Q8 f
$ X" `5 N& f& C6 I: ?& I0 r2、逐步调整众议节点的选取参数,实现「人人可参与」
- x$ g' f2 N9 n# V
/ J1 R$ `. q9 P# e3 `6 f" J6 _3、区块提议节点逐步过渡到从众议节点中选取+ ?% O/ h7 V7 C# }; a! s
8 D1 B% T2 {; U) R5 @, V9 {
4、逐步降低参议节点集合法定票数 的要求# p ^5 \( w. `, {: h' D
4 L& u- j: t* a' D2 g% G6 Q( ]- r
5、参议节点的功能将演进为:存储、转发0 r# G, o1 S& R! I
L. ?: e* J- K- n& |) u$ I j& p
前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。
$ i# J& @2 w4 s" q+ f) Q
, n7 C: P" M8 ^8 H" s( U8 @以下为问答素材:
1 D; T" S. w) g2 A
/ R5 d+ `0 Q4 M. e% N; fQ1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?
" @+ x+ w4 v& K9 x
) [* k1 b" f9 _- h* o- ^# s何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。! Z! a; ?& [7 U+ \. l
4 O# L# N* f" \2 O! }Q2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?
" r/ P5 n" x5 F, ? E" c5 n0 J* _0 |$ w7 ]1 T
何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」* c+ }' |4 h/ t2 D; U7 M
9 F0 }% ]* W3 Q$ Q% X7 {" O; |3 q" a! vQ3 参议节点和众议节点的数量分别是多少?会不会扩容?
6 S V8 ^/ E$ Y7 I8 r
$ g8 _; H" N5 q7 |( x$ X何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。4 G ^& M+ v4 J7 n$ d
! y3 C7 @8 n/ ^$ j- j4 {( s; ?6 P3 n9 ]' eQ4 参议节点提议区块,是否有中心化问题?
2 i3 z# k9 ~' J
5 M! T# I7 X+ N ^: h) u! g; Q何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。
$ z4 S! y% \: Z9 d ~+ T r7 Z3 c P/ ] K. U
Q5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下
3 r9 f" v( \8 f* C7 [* `. l5 {4 h6 J. j5 r) x5 S" p6 v# G
何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。
0 o% L9 S2 v8 R3 k( X% i# p j2 z: ?" o3 ?- a0 c7 [/ R" o. d; v
Q6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?# [6 A% {. \# p' N* @; F
3 T! ^+ v$ d1 Z8 m# \何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |