网络与节点) r& o7 g) \' ?6 }9 \% x# ^) m L
; ^$ m) F7 @: N7 V* p 区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。0 n# V) Z' O! F1 x" c3 Z+ J8 u
9 q& | r9 Q/ r共识与考量" ^6 ?; Z! g3 l% _
2 D0 Q- f# W1 ]/ N7 T% C* t 网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。/ A" ~9 X1 m' Y) W# u
' Z3 q) u v9 r, g n% \ 大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?6 O2 e0 ]0 t6 o. K, w V4 I+ ^
4 }6 [, C7 q8 X原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。+ E4 d3 Z* A9 q+ t v
2 G7 n8 ]5 S- U% o
现有公链的问题" b+ L& |( ]8 p$ O
; C1 ?. r& _. ~" c BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。, v( q6 A2 J1 ]9 ~2 ~
( r6 H4 n! e9 Z' s( e7 A
BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。
# Q8 B- t c& D; @" I9 v' x# P. o1 R$ K% o8 P
EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。
" T6 y5 i7 C Q; l) t' a$ q& W+ P0 F- f
& z& L# h6 n, j( x( ? 可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。
, G) }1 C9 u/ v0 I! e! @
0 }# ` J- P/ }YOUChain 的愿景
% P9 W( d# d, j- U& \1 p
" M7 U+ K9 W# U0 |- { YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。
2 V* c' [, h# k: |4 x+ w0 K, J/ i: y' d+ A6 J# Q! }! Z
1.低性能,速度慢,难以扩展,不是我们想要的% p" X' R# j# P) t6 N* h' c
! L$ x R1 |' v1 |! l% U2 [& ?) U, H2.权利高度集中,不是我们想要的
" {0 B7 w; l3 {/ I! z/ r: r' X6 g2 s# [' q; r C% u
3.使用费用高昂,不是我们想要的! N# s/ \5 ]4 |% s; R2 v: K' m; g
! w. q* U) {1 f 要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。
$ H3 ~, ^, r7 y3 k
; Q. O; _7 `( {( W( \ 某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。
. G. F; S' f' c& t
% G" X1 u+ T' P+ z- {% ?' A思考性能
T W$ L0 m. ]' N' Z. v3 O9 W0 b2 S! [
回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。3 x7 q; M# O g6 U$ y4 c( _- N4 j5 e
/ K8 d- A$ a( @7 b- T
怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。
$ M) }% v1 u; M8 [ K# T8 P
: R$ P: t X" w. X: U 思考 one-CPU-one-vote
+ t5 d5 l4 W4 {; m# l b' o0 Z& I- l5 G+ o; \4 u% U Q8 X
考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?
* ~ P A4 d' W4 @& R7 O
" p2 m- t* O4 w! Y1 @ 为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。
0 K5 }6 y6 d$ K+ |. M3 k1 a/ W' x6 I" P* \
当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。
0 Y2 Q7 u Q* p1 q! ]3 c' ?% Y( T* G" X7 M+ L
思考费用' }7 N4 U0 W! G% f; M
* ]& R1 q( o% A2 D 考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。5 j2 j; i# y* q0 c) A
7 ?* F2 Z6 V# {
那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。* {) D$ _, A' C6 n
! [* H. i4 _4 H. o 基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。
+ t; {! Q |; D* E& M2 z/ S" x/ l3 F8 G" V# v5 j5 A
抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。3 D* B( d9 y A& H' b
; u) i. X. Y" D$ D
我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。+ F6 s) q- k) m6 m. r- z" u5 H
0 A, Q% s1 ^- |3 q4 L6 ~# @/ Q$ \# [思考可扩展性
& X5 R( `3 ~8 H8 n2 v x5 F3 i$ j. ]6 G) X; [+ r+ D3 D
从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。
; Z% H) K# C# p! w+ Y- j2 c7 x D$ F; }
同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。
# b: f* ?8 b" t! `" B) x! F$ j8 W8 t
YOUChain 共识「YPOS」
) X7 T& a- J1 u6 K# X6 L1 o( d; `
6 t, Z1 l3 p M9 f$ Z: h* I 为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。9 H7 y: s+ U# t6 F8 \
" }: Q6 m0 v) i4 _8 B共识流程,主要分为两个阶段:提议和投票。
5 y* Y3 g* q" X( u( B5 e' E' \! k9 a Q5 q* y5 `
1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。- e/ L2 G/ A: I7 ^ u i2 g! R9 _
# B8 l1 b0 }; D
2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。, Z) F! w% O& G; L9 o4 [# K/ O
) _7 P. O- G; r! } `' e5 a
其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。8 y0 S4 F1 \* b4 m# U/ \
# m/ M# B0 r2 _( ^! V; X1 I在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。3 n7 v# Z- q$ y. H, y' s
4 D I* i1 Q& C1 d* v, _! o
YOUChain 节点设计
6 \) H" u0 P" b8 _. ^' t
. ~" u6 r; k: v 安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。0 s! V) R7 O. Y- B# I
8 z3 E2 d, L6 y# C! G I
在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。
. q! r& H' x3 [. V* w
! U0 X) Y4 W, w 一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。
, |3 ]% k0 c! R& z. b4 W) |% ^" j
如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。
( w# U1 s' X+ q
) S4 y, J4 ?2 ^5 f8 k, M为了实现我们的远景和目标,我们设计了如下的节点结构。. J# @; |5 X' h' i! i1 Z# z/ e
5 l% t; C( c% p# A/ W
节点类型: G' A) q q& [+ T
" ^4 `" M) t# g* y$ {系统中包含两大类节点。: t- @4 i( x7 C U
' E- B4 A' S: n; m0 X1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。4 A5 Z$ \9 t1 q9 t1 p
1 j% y4 N& b5 \3 _* h$ ~1 Z
2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。
2 I6 } S3 E2 `1 U* J& A# E1 t; _
$ ^1 u/ W6 I6 B+ K+ q( h以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。
9 w- r+ }( J% e3 `# v5 F& \$ S5 \
# J& n% e$ S9 P6 e' q9 l节点选取方式; }$ V1 C( N1 S
, X$ ?! L* ?2 F; c; g! m2 e) k
2 Z5 [$ V+ ]8 }+ n [4 N j* h2 O
# u' F* e" j8 T
, e1 A% ^9 D5 _ P& P! A0 z: h7 i0 O% S7 Y+ I$ U4 Z: y
参议节点参数「待定」
( v6 J% p! t' D r% H) i# f( W4 M3 r9 `7 E. N7 c7 x; R# x% {
5 N' G* P; H4 M9 @4 j- T" J4 N1 k1 G
0 I; Y3 x( t. A6 Y" S7 A3 \6 j/ \& e: w+ T* u. J
4 H, Z) _9 D$ K. c众议节点参数「待定」
+ e; n% Z, E2 f- p# Z% k ?( U1 {# Q+ s k- Y" X
+ n4 I( a9 G' n% U
" Y- R# n5 B, T2 w: H1 w3 C" L6 w" Q2 |7 e7 H. g
/ V6 b( d4 z) e ]" H
两类节点对比
/ x: q% G& z- \) e6 N% u! i2 U. P6 g2 [
9 R2 ^! y3 E5 t
! f. r' P( c( \! B" ]9 u# q1 t9 f4 s8 C7 _ W; ]: |
( q9 O/ g, r2 ]3 D
我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。: T* \, B1 G/ E+ u5 K9 W
( l) [+ N4 \; i' `5 tYPOS 区块敲定- |6 J0 Y: U. Q2 O3 o5 J7 Y+ e
5 f. ~" V% N& r8 {# E
1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。# r: r, k8 ?5 \- H# G6 @
0 U' ^5 E* |# N8 c# P2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。
1 _( }" [: U- a6 }* s2 p( `- o# e8 T$ n8 p: U6 T& L
3.满足法定票数的区块,则为敲定的下一个区块
6 J; k1 g6 |. U4 _7 @# V1 \" u8 ~! B5 G6 r2 J) J% |$ V% V. q
定义如下:; c9 U9 U: R" ?
3 z8 @2 H+ J7 @6 {
$ _) S$ _% X6 U4 ~+ ~% S. {* ^; f% ]
3 z" m2 R$ T6 a2 B+ m' v0 x& K
0 _* K7 y% b; D( V+ p6 v
) f' S$ e$ k/ h2 B1 C7 y) D% o* n1 ~- Y* t5 _1 s9 a, X( v1 O6 O% a% i
网络安全3 M* S. z# D; e& w* q9 f
, O; b1 h- a8 B j. V' j参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。; k& v$ J4 `) s
1 `7 {. n! U0 k官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。3 [( m2 I8 T) G( ~; o+ U
# B9 d0 j% z4 [' ]- t( X P) r官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。
( Z: v& I3 @* A9 U# ?# W4 X* n! q2 _& @6 {5 G+ |3 s
链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。
; D! U9 A; @: A) N' X& k
( q+ L5 v- O$ t' T3 W5 D网络演进
/ ]) x3 B5 u) U$ M2 i5 r8 N$ d
& X5 n9 g6 N$ T+ ?* mYOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。
; j2 U; f: i2 b( Z" ^' }7 B8 Z, s2 `5 Y8 z
1、通过安全分片技术提高可扩展性/ u2 p; g8 G: |* l" O. H* _
: n$ Z0 |8 _. i* i# {2、逐步调整众议节点的选取参数,实现「人人可参与」. H3 Q4 Z Z! ?# {) s- \) D" v) }' }
: ~+ i! d) ~' I+ }! r& C0 g( [, p
3、区块提议节点逐步过渡到从众议节点中选取0 t! r- U. \1 w: {
0 |, t) B- c8 j1 X
4、逐步降低参议节点集合法定票数 的要求0 B' }) u! I8 L. V E5 g4 D
+ q; @5 ]5 I" E+ }7 F. V3 i0 C: m5、参议节点的功能将演进为:存储、转发) P+ r9 y( T- n/ J( c9 I% i B5 B
9 |: x) z! O8 B' g前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。8 N# |4 t& B( y4 ]$ g2 m! Z7 t
8 V* d( ^, N: g# s以下为问答素材:( E" b: u B% K7 J, I
- C7 A& Q/ \+ S; l3 mQ1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?- ~ f' k# ^( n, R
( T& E( G; R0 | {& p2 O
何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。- q: m' \, g: ?+ T" J
/ W2 c- _6 e, ~, G( U7 b" Y
Q2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?
( K3 \% w9 M8 B- N9 p% w* @0 e* X: ]( E, {/ b
何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」" v W- x- x& ~
, P- {6 d- ^1 o. W% Y3 d- D& uQ3 参议节点和众议节点的数量分别是多少?会不会扩容?
7 _2 i/ e8 W5 } Z1 V2 B. j; m9 D; t; t/ s' R" R8 W" [# n/ H
何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。
1 S+ c2 b5 Y2 h; e* ?
4 f+ |$ [- f5 q2 J' k7 `$ `Q4 参议节点提议区块,是否有中心化问题?
: w* E1 t4 d! G8 e
- Z9 E# W) v6 d- Z8 Y" r4 h何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。8 Q6 ]0 i2 i1 Q3 h; i
/ I, J7 `6 L& i
Q5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下9 T- V3 ]7 N$ [! h" x
1 f) D* x+ J5 Q4 |0 M# G何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。
3 l8 {- P* s0 O
! c+ R3 B6 K& jQ6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?
4 M# p2 ^; F) n8 ]" }7 D( f4 [" e, M( Y3 i" t H! [, S+ a$ X
何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |