网络与节点6 t6 H0 ?& |0 Z2 q9 x6 b" Y$ l) K9 S3 q
, y( F' J2 ~9 `' X/ g$ f
区块链网络,本质是一个分布式系统,系统中的节点根据某一个约定的规则,完成状态的迁移。网络中的节点的角色、数量、在线情况、是否诚实认真工作等,定义了这个区块链网络的性质,也关系着系统的安全。7 F& Y2 S$ W2 ~1 g" b$ Z
5 V5 u: r2 Q; m: s3 l& [共识与考量
% a, b& E( ^/ m2 \
3 i3 C( z0 h: }4 @1 M% G 网络中的节点遵循的某一个约定,就是所谓的共识协议,简单的讲就是决定哪下一个区块的规则。在节点的维度考虑问题,那就是哪些节点的哪些考量标准,决定了下一个区块。在区块链世界里面,主要考量标准有所谓的PoW和PoS。分别是以「计算能力」和「持币数量」为考量标准。0 l2 p1 D# ~/ L6 r" n: p+ Q$ H
* q9 C3 }$ E" u6 o 大家可能会问了,为什么主要是这两种考量标准,为什么不是别的呢?
' Z) f& a {( {& d9 i" e+ }5 @2 x( Y( a& d; R$ S
原因很简单——这是两种最容易量化的标准,且易于抵抗攻击。其他的,例如 reputation(声望度)、honesty(诚实度) 这类标准,都无法简单准确的量化。那存储空间、带宽能不能成为量化标准呢?答案是可以的,但是具体实施起来,有一定的难度。
; i# Z% b9 S! o/ I' I) k* G& ]% n3 g: q+ t) c
现有公链的问题' j# _$ [2 H0 O6 h% z1 ]( G" W- @
& a1 m! k0 A, z$ x5 a- j
BTC 创建者中本聪期望通过 PoW 实现 one-CPU-one-vote。早期,普通的家庭电脑也可以成功抢夺到出块权,确实满足了这个愿景。后来因为算力竞争,挖矿设备进化到了专业的 ASIC矿机和矿机联合体——矿池。ETH 一开始就考虑到了矿池垄断的问题,它设计的Etash算法,是依赖内存的,所以 ASIC 矿机的优势没有那么大,但是矿池还是形成了。9 Z3 G- T% P5 \2 ^7 h" e8 `8 c: y
" B7 n, \9 `* N/ G! n B/ ?+ R5 V BTC/ETH 让人诟病的 POW 挖矿机制带来能源消耗,吞吐量低等问题,也使得两者使用费用高昂。& K% s8 M/ m$ Q; F0 ]
2 ?5 f6 x8 U( X
EOS 模拟了美国的选举人制度。本质是倡导大户集中,鼓动社群投票,超级节点竞争。开发者期望用超级节点竞争的方式,实现去中心化。主要开发者BM甚至声称,这类超级节点的去中心化程度,比 BTC 的矿池垄断的模式要高。一直以来,RAM (内存资源)被当做投机标的,使得开发者成本飞涨。有相关计算表明,支撑一个 DAU 1W 的 DAPP,需要近 200W 美金的年费用。
( m* u' [6 l) ^: f1 G2 m: Z2 U& ?: N2 t
可以看出,这三大代表性公链,去中心化程度堪忧,同时使用成本也较高,无法承载商大规模商业应用。! K6 a6 u' S6 W% U; ]
1 p% B5 Z. P; S. x% hYOUChain 的愿景1 s- Y$ ]2 n1 m* h) T' p
' g& J$ j% O/ I
YOUChain 愿景是打造可承载大规模商业应用的去中心化公链。要承载大规模商业应用,性能和资费是关键;要实现去中心化,节点角色、职责和数量是关键。% {+ j/ R! E8 }
& V$ g3 R( a+ ^! ?2 D
1.低性能,速度慢,难以扩展,不是我们想要的# U% o n5 K" Y4 [9 h4 `1 J/ E5 [
; ~/ U2 k/ _: p7 H4 X; i) E
2.权利高度集中,不是我们想要的
- G' K1 I0 P! g% D# s F8 w: m' c, e% e% e9 G& p3 F
3.使用费用高昂,不是我们想要的
5 x$ H! F" g3 ^) {7 Q# N$ d/ Z, t6 y' t* Q N4 y! j8 k
要实现高性能,需要考虑制约区块链的三个基本物理条件:计算、存储、网络。共识协议和网络结构需要极度的优化。2 f H; a: \3 o1 q9 \1 d1 z$ T$ y3 ^
; T8 p, E2 W/ U; C3 I
某种程度上,我们是中本聪的信徒,相信去中心化的愿景。因此,我们认为,以某种方式实现中本聪的 one-CPU-one-vote的初衷,是实现去中心化的一种方式。
, s) h) f& s# l5 `& ]8 E& Q. R6 Z1 B3 ]
思考性能. I. t" \! f; p4 F# [8 J
: z$ ^7 q9 f8 [3 \, m m3 ~. \ 回顾已经上线的公链,包括 BTC/ETH 和 EOS,我们可以观察到一个现象:一个共识的达成,需要涉及到的节点越多,其性能就越差。前者涉及到了全网所有节点竞争挖矿,性能较差;后者只涉及到了少数的超级节点的轮流出块,性能较好。3 H8 @# p; Q7 a1 c
- R3 u# ?. H7 q. T
怎么做到去中心化和扩展性兼得呢?其中一个答案是为系统引入随机。Algorand 是我们十分推崇的项目,它为行业带来了新的思路,我们也深入研究了它的技术原理和实现。
9 S6 v& y( k' | p& \: ~4 I/ X6 C7 l! P, F% y& q
思考 one-CPU-one-vote! W3 H% d8 z' c- \
2 V$ G/ f) }2 d" o6 y5 C- j- d9 q 考虑到设备和节点,我们很自然想到了几乎每个人都会拥有的移动设备(手机)。如果这些设备都能成为网络的节点,并参与工作。那岂不是真正的实现了去中心化?
! h) q- n8 b$ _5 x! h& J
( p+ v8 S2 a o) C; x 为什么移动设备,都被已有的公链排除在了节点范畴之外呢?一个直觉印象是,他们的计算、存储、网络性能都不够,稳定性也不够。
% r" j% M% V, Z+ {2 l; |1 F! t* V! k6 X. f( E( z! V' _2 \
当我们深入去研究的时候发现,最新的移动设备(骁龙845/麒麟980及以上)的计算能力,不亚于普通的云主机;主流存储能力也达到了数百 GB;网络性能随着 5G 的普及和千兆光纤入户的进展,不逊机房环境。7 g1 _* n7 C' w* v1 `# K5 u2 N
$ ^ \ b: U4 V, K7 u0 N& G; f思考费用
2 b' |* X& d7 Z) |4 Q$ `5 s/ c0 ^( ^( U9 k8 m; `: \+ p
考虑到能源消耗和运营节点成本,我们选用基于 PoS 的共识机制。
4 m- |! E. n! N% V2 }+ K2 x- F" Z. S, M+ t* g, Y9 V/ Y2 G
那么使用公链的费用,主要是与运营节点主要包含两部分成本相关:基础设施成本和抵押物的机会成本。9 K0 j+ x4 z) l) ]/ ^( u
" R( j( a- Y) j" h
基础设施成本:机器购置与折旧、带宽、托管费用、防御攻击费用等。1 e. ?( F* V/ F" Z2 J: M
! g4 i9 V1 T' t* I4 a" V3 M抵押物的机会成本:因抵押而无法自由买卖产生的机会成本(币涨了或者跌了但是币被锁)。- [/ C& f3 p: b- h; b1 q$ j6 n, `
' u, l3 T6 G) S8 ]' Q/ `3 J8 M 我们认为,随着物理条件的演进,当条件具备的时候,不再需要专业的矿机和托管条件,海量的移动设备,都可以成为网络的节点,使用成本自然就降低了。) C. S' j) i8 G! U: K
- U5 E# p! z9 R. E: D
思考可扩展性
, c5 }- ~1 `9 e: |. c% r
" H! s! V/ Y( Y2 O1 j1 M" s+ R) l 从 YOUChain 创始之初,我们在公链设计中,就预留了使用安全分片技术进行横向扩展的技术路径。
& g+ Z+ i9 I2 P5 X& k! d }% W! y) b
同时,为了满足高 TPS 下的海量存储需求,我们设计了存储压缩和根据 merkle root 证明的机制使得移动节点可以快速接入网络和持续参与共识。" _& k/ H) K+ u- Q( O
7 i+ P6 p+ E3 r3 N1 f- c( O Q, X
YOUChain 共识「YPOS」
6 Z A+ g4 D. K: b+ ]
" a5 p2 q7 X4 i. A 为了兼具高性能与去中心化。YOUChain 设计了一个基于 PoS 和 VRF 自抽签的快速 BFT 共识协议:YPOS。
, d0 R9 l/ J0 h( o' M( A k, ~
1 m' ^9 ]& t; c7 U$ V共识流程,主要分为两个阶段:提议和投票。
" G' \' X6 ]1 _' i' b& o0 ^6 B; k# d8 ^, g, e" }
1.在较大的候选集合中,通过 VRF 自抽签机制,选取少量(如数十)的区块提议节点,后者将提出候选区块及其哈希。- s7 K* a/ w* T7 `7 m, @. c
' X$ R! |2 p }$ D0 b% q5 N' y2.在较大的候选集合中,通过 VRF 自抽签机制,选取一定量(如数百到数千)的投票节点,为前一步提议的区块哈希按照某一种规则进行投票。
% Y- i. O* c" b8 c+ l$ W' x) T4 J: N3 E$ V; ^* u' e
其中第二步,属于传统的 BFT 共识的流程,核心是消息复杂度和延迟。我们做了大量的工作,使得我们的 BFT 算法实现了线性的通讯复杂度,可以在大型区块链网络中运行,并做到秒级收敛。
5 X: o' K l6 L5 h R# J: ~: g+ v) X8 W" G5 d5 X4 I8 e3 B
在节点的去中心化问题上,我们认为移动节点是未来方向。因此,我们做了大量的的工作,实现了家庭网络和移动网络的稳定传输和有效穿透。同时我们将节点输出成 SDK,植入到生态伙伴的 APP,使得搭载 APP 的移动设备,成为网络的节点,这样 我们的候选集合就有了海量的节点。$ r" a& Z$ b' b$ Q
* j% Z9 Q) o; v. E. O. ?) z
YOUChain 节点设计
8 c# X( s6 D _/ i o
6 ^/ O( J! L3 t* | C 安全性是区块链的基础。没有了这个,扩展性和去中心化都免谈。区块链最常见的攻击,是女巫攻击,大部分都是为了实现双花。. \2 }4 b7 ?" R: e3 T. J* Q0 B
6 U9 M* T7 Z" ?" ^8 @ v6 G! ^3 e
在对抗女巫攻击上,基于 PoW 和 PoS 系统都有成熟的经验。前者不表,后者主要是出块概率权重或者验证投票权重与抵押占比成正比。
9 N# P( @/ r G6 m% Q1 t0 s+ K
5 W. c" e: v, p8 I' B, w0 v 一个现实问题是,对于移动节点,我们既无法要求他们有足够多的抵押,但又要捍卫它们的投票权。
& T! E% |) W/ A A6 N$ t( Q- X) W \: |1 K. S& k. n
如果完全按照抵押占比成正比的投票权中,移动节点的愿景将因失去激励而形同虚设;如果按照一设备一票,我们又难以抵御女巫攻击(因为节点很容易伪造)。: B( ^7 C# E+ N9 O. N% t# a" {3 Z
6 ]6 P. z6 V* X: k# ~, Q
为了实现我们的远景和目标,我们设计了如下的节点结构。5 o: e- h6 y1 T
. V% B4 x0 W/ i" q( q- B节点类型
# ^3 g* D0 p! c1 d" l! J/ l* y1 T. L5 I
系统中包含两大类节点。
6 R: r. b) F" v1 ^# h3 ?# t
+ R( D M0 h2 Q K! m# z- }, b1.参议节点(senate-node):部署在数据中心的服务器,拥有较强的计算、存储、网络性能,类似于网络骨干节点,前期有一定的准入。
! i& e2 A, O0 j0 p9 o! q1 D
q/ `. b, k# m4 V% F2 e% L% P2.众议节点(mass-node):部署在家庭网络或者移动网络下的各类设备,无准入。( h) [- K9 g, L- m% T/ r
4 V1 d' K) P. U; G$ `7 s* E以上两类节点,均需要参与 token 抵押。我们为抵押设置一个最低准入门槛,选取抵押排名前若干位的账户作为候选集合,依照节点抵押的 token 数量在候选集合的占比分配抽签权重。
/ z* Y6 E+ o s# t4 L2 f- O) D. A) H6 y* A
节点选取方式
' P7 M5 l# }5 n" I! e1 i8 j" i
) ^" m. B7 d" N' P$ J9 G" Z$ W$ i3 ~( Y# _! D9 z
. \/ g. A; w! t5 c) R' g4 T' m, i
* ]: [8 R& y$ _/ t6 l0 `1 p' B
0 p4 w. L J/ B0 n
参议节点参数「待定」
# }' b6 l0 Z0 h; E! @( L. H' d5 Q
. b& }9 I8 B" n7 ^- D9 U: `9 O; K: o
# P8 Y V. U6 ^% R7 [/ e! i- i |
" w: Y/ ^% g: H
) v& C6 a% c# l7 v2 \- P$ \) B众议节点参数「待定」8 N( V) Q; U W! Q
2 x5 ~" Y1 {1 F3 V
4 t1 L4 {) z0 R9 Y
& e% H' V, y- ^& K [& M
1 ?0 y, }- _+ ^6 O4 F8 b1 J: O' |& b- k/ [! o
两类节点对比6 Z h8 s$ n5 T
8 L0 s" p8 z* o. Z" o6 B. r
' A7 ?* f; G) l% F- R
5 R% i J! \: d$ \/ r! Y$ J
- v7 `% V0 g0 T- O1 V. s3 d: _" H" \+ k* M
我们既要保护网络的安全和性能,又要鼓励众议节点积极为网络做出贡献,因此,我们设计了两类投票主体。9 D8 M% I$ E9 J6 K) B
; W; q' u7 C/ Z% ^
YPOS 区块敲定8 r2 f |9 @8 I$ A- M
9 J) L, ^3 p# M" f2 a
1.区块提议者,从参议节点集合中(性能考虑)选举,提出区块和哈希。
; F2 Q8 ~5 W5 K9 G
+ \* G# o( F; ~& \% b2.区块验证者,从参议节点集合和众议节点集合中分别选举,分别对提议的区块进行验证和投票,hash 较小的优先级高。
/ O8 N! m" r# w. l8 W& Y7 V3 P$ f. H: B
3.满足法定票数的区块,则为敲定的下一个区块
+ }: m& o/ t, C: ?" ^& E x+ R% u: Z; U. T% R5 z9 P7 ?. [
定义如下:
' p7 l$ K. K w' M) ~* r6 ~
* X; X3 @ ^4 C+ L% I. x/ \- \: g* P+ P$ s
- E" \+ q- \( A$ S1 z l
3 _" t/ A+ w; H1 x& R9 _
" @& o. v5 g9 Z( a" `5 J* S
- `, B, F$ B" i4 O8 \! ?5 [4 T网络安全 |' I2 Z2 @5 P& C- d
8 W* K& X t# B N参议节点与众议节点集合,均按照抵押占比分配抽签概率,可以抵御女巫攻击。+ A' q3 n2 k# R/ ~& d% M3 }! x
: l4 O- X! t) ?6 Y4 T% U# i
官方持有一定量的 token,承诺永不抛售,但在网络早期,可用于网络安全性维护。0 [/ R1 q5 ]5 l! P+ A+ M: V K- u3 A
/ N/ B( s4 Z- m7 v, B. }# w官方可以在必要时,可使得维护网络稳定的 token 数量占据足够的份额,以确保网络的 security 和 liveness。
7 m$ a; p; f4 u! `: H" I% F5 J8 e& m$ \7 B+ s5 e
链上将会设计针对各类不当行为的惩罚措施,使得各类节点有经济上的动力去诚实工作。- ], l B S' B7 i3 B- Y* m
, h" j- x9 e9 b9 u, y5 S8 }+ k
网络演进2 T( v* X4 m! ]9 A, l( f: Q2 A
9 I1 A* ^, \. R2 b, VYOUChain 开发者承诺,当众议节点的数量和质量,达到一定程度,将会推动主网持续升级。
0 } m9 k: g! r
$ q, o! F$ Y4 W! l- u' K u5 W1、通过安全分片技术提高可扩展性
$ a: p) \. p5 p( c+ q. C# [5 r
8 p7 I2 N5 c" F2、逐步调整众议节点的选取参数,实现「人人可参与」) W; l! T8 G# h; u% g7 e8 Z
" B( v5 p+ n4 X; K7 x, I: I) G
3、区块提议节点逐步过渡到从众议节点中选取
* h- _6 c8 O" k3 T4 V! k6 P# D3 N P' @9 P; G
4、逐步降低参议节点集合法定票数 的要求5 V; Z7 E1 j; S$ a& e5 M
5 I7 y8 Z$ E- c4 F4 m& d6 O6 ] L5、参议节点的功能将演进为:存储、转发' _$ W" q( z- ?& Q+ x' a- ^
t" `0 N1 Q4 }3 n$ l前面主要从区块链网络及其节点的本质出发,阐述了现有公链的去中心化和使用成本等问题,进而介绍了 YOUChain 的愿景和节点设计,最后给出了安全考量和演进策略。主旨是为了阐明设计的思考,引起讨论。
9 |0 j3 E) [6 I. |% V
* L" q& X( f* H9 g% I2 Y以下为问答素材:6 T. D, p" O) L1 |2 d h0 F$ l
0 ?! o8 s* _3 M5 }, ~
Q1 参议节点的准入制,是否中心化?未来的演进措施是怎样的?
' ~# ^6 c! a* H5 ]9 j+ |# v5 y4 k2 h* X9 X" G$ ^( k, X1 R, m! I/ H
何畅彬: 设置参议节点角色,主要是保障网络的性能;前期有一定的准入制度,是基于“有责任的去中心化”的考虑。这个准入制度,其规则是公开透明的,满足一定的基本条件就都可以加入。其实是在所有的公链中,都会存在一些优质节点,拥有更好的计算资源及网络条件,在我们 YOUChain 中,我们只是把这些节点识别出来,让他们能发挥更大的作用,更好地服务于公链网络的稳定运行。未来随着社会整体硬件基础设施的进步及个人计算资源的发展,参议节点将逐渐演化为提供存储、转发等功能的节点,并将逐渐从“有准入”的机制变为“无准入”的机制。因此,参议节点的设置,并不意味着中心化;恰恰相反,这是用一种负责任的方式,更好地服务于去中心化这一目标。
1 i9 s. n r3 n0 F: C3 D4 J% b7 ]* z4 G' h5 f. Z
Q2 官方持有一定量的 token,承诺永不抛售,不过是为了抵御攻击,只是有人收购了足够多的token,不就可以实施攻击了吗?
) H1 b; b9 U N/ ]% R* C1 L, s: C. `9 S7 t/ y; f. I4 l3 [- p4 L' R
何畅彬: 1.网络的早期较容易受到攻击,所以官方的 token 将会起到抵御作用;2.在网络的进一步演进过程中,Token 进一步分散,在公开市场上收购足够多的 Token,将会被变得「经济学上不可能」- B K! @" N2 Y" O
2 }9 Y; L9 M; y. X$ p3 T s3 g# DQ3 参议节点和众议节点的数量分别是多少?会不会扩容?7 ?$ V6 h9 q7 c5 H3 m( p
4 T, T) o- E( K$ r0 H; U, V) v8 j5 I; E何畅彬: 参议节点,早期是有一定准入,后期会彻底放开。众议节点将无准入,海量。具体的数字,需要根据上线前,实际的情况而定。我们还在具体考量。
& m( L. j7 [0 z3 t, x* w: ?' k7 T$ f
Q4 参议节点提议区块,是否有中心化问题?, C+ ^' Q: C2 Z. g
2 g; |% R% g& o& N7 V
何畅彬: 所谓“中心化”,本质上是少数人控制整个系统,能够施加超越既定规则的影响力。但是在我们的网络中,提议区块只是共识的一个步骤,被提议的区块,需要通过一个临时随机选举出来的验证委员会(包括参议节点和众议节点分别形成的两个验证委员会)验证并多数投票通过后,才是最终被接受的区块。本质上,随机选取任何节点来提议区块都可以,只是出于性能考虑,将该角色由参议节点承担。这跟“中心化”与“去中心化”问题并无影响。
( ^$ Q. e( g! I/ s- n4 @0 P' |' W2 ^# m$ F" h
Q5 我是咱们有链的老社群用户了,刚才提到的 峰值TPS 和测试环境,我想再详细了解下
, u( e# _( |# s. N; F8 F8 v; o3 B
8 s; L6 p, m5 B- n2 r; X7 i" b何畅彬: YOUChain 的社群为我们提供了部署在家庭网络下,超过 2000 个同时在线的 pc 节点和手机节点。在 5 月进行的一次压测中,我们随机选取超过 500 节点进行共识出块,跑到峰值 TPS 为 1250,出块时间约为 3 秒。
& o3 y F, \! d6 ^0 h [
0 {- e% E/ v: \7 J3 sQ6 何总你好,我是鱼链的联合创始人Jacky, 我想知道下,早期众议节点,为什么是安全的?未来节点众多的时候,如何更加安全?
1 N0 O, \$ p! v* N7 _1 v7 S& C7 T2 w) B. p7 q8 A
何畅彬: 基于PoS的去中心化公链网络,其去中心化的过程,必定不会很快,会需要一定的时间。早期的普通节点可能比较少,因此众议 |