Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文
以太坊作为单片区块链在用户与应用发展到一定体量后,受区块链“不可能三角”的制约,缺点日渐凸显。' m8 `+ Z# ^- C5 `8 k% ]

' B, o# @/ m  f0 o1 v为解决困境衍生出链上扩容与链下扩容两个方向。Optimism是一种链下扩容解决方案,将交易数据放在链上,在链下运行计算,增加以太坊TPS的同时降低gas费用。2 ^) W7 o2 S. j: P7 o0 ?) z
& _5 ^$ ~6 j' R/ g% z+ z! v6 ^! u
虽然交易发生在Optimism上,但数据会发送至以太主网进行验证,因此这种方案不会牺牲以太坊的去中心化程度与安全性。同时Optimism在EVM兼容度方面的进展较为显著,是目前L2中唯一实现EVM等效性的rollup。: ~. Z* f% s0 q7 e6 n, Q) ]

) q1 d  P3 v, J6 rOptimism是如何解决以太坊扩容问题的?
0 X8 t0 X, Y0 i2 ?2 \/ y8 O
. v- ^* }" L: ~# c) [6 a, tOptimism网络中有两种节点:sequencer与verifier。sequencer与verifier都会运行L2Geth,L2Geth是由Optimism创建的改良版轻量级Geth(基于Go语言开发的以太坊客户端)。所以,Optimism网络与以太坊网络非常相似。上线之初,Optimism只有一个由团队管理的sequencer,计划在稳定运行后进行去中心化。
2 \4 S. K) i! Q8 Q
$ V* y  ], [3 E5 x9 r网络的运行流程大致如下:
; P+ H. f4 A4 b2 i+ |
8 Z; n, e: z2 s9 u* q1 \· 用户将交易发送至sequencer,sequencer会对在L2中的交易副本进行处理;" j0 ?& }0 x) ?! d) _

+ J$ |% f: S+ o1 j& X5 F· 处理完成后,sequencer将交易数据与更新后的L2 stateRoot提交至L1;
- g* Q: d1 _5 t: Z' i8 I' Y! r3 l
0 U- B( G2 ^# Y8 D  N· 上面提到的其它节点开始处理L2副本中的交易;
  W# v; l8 @$ a+ v& m7 m
9 a/ k# P4 [& J$ r3 ]· 为确保提交至L1的新stateRoot的正确性,verifier会将其新的stateRoot与sequencer提交的stateRoot进行对比;' u0 P6 W4 O3 C3 [! I1 {# ^4 y1 l
: t& `' K& r+ {) k. g" D2 X
· 若存在差异,便会进入欺诈证明(Fraud Proof)流程,即在L1中执行L2的交易,确保stateRoot结果的真实性;  w' d% _0 R& A1 I: u4 T
# q- O1 K2 `0 R! k7 k& c
· 若欺诈证明的stateRoot结果与sequencer提交的stateRoot结果不同,那么sequencer的初始质押会被削减,前一笔交易的stateRoot会被删除,sequencer将重新计算失去的stateRoot;! ]+ K4 e0 g5 M+ j/ H; C% g' S; f

& t' t3 P8 q2 U5 j! c  @6 u· sequencer完成去中心化后,若其质押被削减,会有新的sequencer将其取代。6 T3 Q! |+ l6 H! _/ V' R

2 z" L  s% C- F1 Q' n8 d  L 1670924887654257.jpg 3 N! r  I& \' o# i5 k% a8 y

( @; y4 v0 ]. W8 F# Z9 S& B交易. u% f9 Y8 n% _6 k

5 B+ u) S5 |7 w* O3 ?在Optimism中有两种交易类型至关重要:L2中两个地址间发生的交易、L1与L2之间的跨链交易& Q9 j# E- w! |( [. |3 f" U/ A

7 ]6 m7 V  c/ H6 F, IL2交易流程
* H- |0 o6 Z0 M" [0 _; z2 c4 }1 f* W/ U, Y3 y: G& M
· 用户将交易发送至sequencer,若为有效交易,sequencer会立即将其添加至L2(注:此时只有sequencer将此交易添加至其L2的副本当中)。L2的块大小仅为1笔交易,因此新的区块与交易会被立即添加到链中,在L2中矿工无需争夺挖掘新区块,sequencer取代了矿工的角色;
! Q2 w6 k7 }# I" ]* B0 @9 M/ i/ v: X& m
· sequencer向L2添加交易后,会调用L1合约并将所有数据发送至L1,数据包含所有L2交易以及执行交易后的L2的新stateRoot;
0 j% p. r* F5 E9 ]% d. X5 {4 v0 c  {1 |5 x! V
· L1将交易数据与stateRoot保存至另一个专为存储而设计的合约中;
' N/ y: M0 V% w. V
% e7 J5 M7 J0 @· 一旦交易数据成功在L1上存储,verifier就会把交易储存在其在L2的副本中。
" s2 b. p0 ~& r4 c  [) p( \7 ?2 L; P8 u: @% `, p+ h
若sequencer在对某一特定用户进行审查,那么该用户可提交数据并自行调用合约。然后,sequencer会在特定时间范围内强制处理该笔交易。若sequencer未执行,那么其质押可能会被削减。% r" ?2 r7 Z: _, R$ S; C" }3 p: @3 Q8 s
# x, x# s; }/ E$ y! V
上面阐述了verifier核实sequencer发布至L1数据的过程。verifier也可选择直接从L2进行数据同步,也就是说verifier可以在数据被发送至L1之前直接从sequencer获得新的数据。从L2直接同步可以减少延迟,但这种方法不能保证sequence仍会将此交易发送至L1。: I% ?8 j  Y$ F4 ?/ M1 G: M
& }' G5 N: W  x( a/ E; G& w
跨链交易' w# c8 J2 o6 W$ i5 w' y/ T" y
7 H* j- V+ v& i- O' b9 [% u' }
为方便调用其它链上的合约或者将token从一条链发送至另一条链,跨链在Optimism的地位不可忽视。由于涉及多链,其整体流程与L2交易略有不同。
; b: h- g$ T$ R6 r- u$ |2 W$ D. {! K" Y7 C' {7 ]
L1 -> L2交易) N9 `6 q( i+ |, D; h$ N) L

) C/ w* e' \1 i- a) O$ f) ZOptimism从L1至L2交互的速度很快,只需sequencer将信息发送至L2。用户将交易数据发送到L1的bridge合约中,合约会在一定时间范围内将交易添加至sequencer必须发送至L2的交易队列中,然后sequencer会将该交易发送至L2。& f% ?5 U6 Z  @0 g& J

& x1 _: B0 H# ]: {. F举个例子,如果用户想将L1的10 ETH发送至L2的地址进行交互,流程如下:
: E9 `) A4 F7 i; b& D. D1 H3 R$ N! m* V1 k, M2 q7 i
·用户向L1中的bridge合约发送10 ETH;2 c1 Z' B& ^9 j, ]
* e6 p2 t$ I) d0 v6 U5 R
·bridge合约将ETH在L1中锁定;; O$ l* ~1 T: t; a; @5 h1 E& z
$ ]0 l- t+ y9 J* H1 x
·bridge合约同时将用户的交易添加到sequencer必须添加至L2的交易的队列中;9 I$ O( T2 D$ e: t5 z) W
3 J# V: m; s' q1 g: h
·sequencer开始处理此笔交易,ETH被成功存入用户的L2地址。( Y& f, k$ p5 t. J- e

& R( r. \3 M7 S+ N  D 1670924887671207.jpg
3 `$ b( q% a, r$ i! f4 d+ @. c1 G+ C  D( y
L2 -> L1交易
; W" Q; Q2 k5 }+ c
0 ]& l, F: M5 W4 K# _- Q- EL2至L1的交易相对复杂,L1必须确保交易后的L2 stateRoot具备有效性。用户将交易发送至L2的指定合约,然后中继器进行读取并将交易发送至L1。Optimism应用JavaScript服务运行中继器,使用sequencer和verifier与L2进行交互。
+ ~1 i: e# h* x8 a# `0 ]; }( L! j$ G
0 O! a, o8 _0 }- l0 f举个例子,如果用户想将L2的10 WETH转回至L1,流程如下:
- j% \( Z6 H( G+ P- i, V% E# d+ T; g: F
·用户将10 WETH发送至L2的bridge合约;2 y0 o4 [( m  W' Z) k- e0 }

" ~4 O/ l/ C% f$ |: t: z· bridge合约销毁WETH并将交易信息发送至L2ToL1MessagePasser的智能合约中,合约记录了需要从L2发送至L1的交易数据;9 r8 F6 g/ u* c% P. t

% A% |! v1 O: i, T# n( {·中继节点从L2ToL1MessagePasser读取交易数据,等待欺诈证明窗口(7 天)完成,然后将交易发送至L1;$ Y/ q2 D' _0 s( v( G/ J5 Z

3 [* K, b) c3 Y: ^/ O; u6 w8 B·交易在L1中进行处理,用户此时可从首次发送至L2时锁定ETH的bridge合约中取出ETH。
/ ]- M+ p1 V( C+ e! B4 @# E* w" M/ \7 @& J) c
欺诈证明窗口为verifier预留了充足的时间来证明sequencer发布的stateRoot对这个交易来说是否准确。2 r. M  Y1 ?7 ?% q$ [

! b" h7 W# O+ M0 Q* [  P- W/ O 1670924887631709.jpg 6 e- z& g2 N# I  s
( a) d  I, k6 p. y2 N* R: i6 H: \) X
L1中存储的交易与stateRoot% ^, c$ c9 E  a) p! g% I
. y! u8 A5 U! a* F3 z# D' c8 Z
由于每笔交易的数据与stateRoot的结果必须保存至L1中,那么降低数据所占空间对于降低系统存储成本来说至关重要,以下过程阐述了L2数据是如何被保存至L1的:; Q" N% @% x) a1 T
5 N; f7 n& }# k- M7 G
·sequencer获取多个L2连续交易的calldata并将它们组合为一个批次;- J4 d' r, t' C# \

# A1 o- T6 i* M! z·sequencer将这个批次发送至CanonicalTransactionChain合约中;/ {2 l1 _& v* h* E  s+ H8 u0 I; P

* H2 O2 Q$ ^- n6 z8 L* N·智能合约对每笔交易的calldata进行散列处理,为这些哈希值创建默克尔树;
" d$ M$ c, I8 l; d* ^' P9 t2 w8 x( I  Z; x  a, b, P" e- t
·CanonicalTransactionChain合约收到该批次的默克尔根并将其发送至专门用于存储的合约中。
: E% A2 @# t% b8 `& X/ N2 I
2 {' h  ~. U! p( }# ?上述过程将交易汇总,创建了默克尔树,保存了默克尔根。stateRoot的存储方式与以上流程类似,只不过汇总stateRoot的合约变为StateCommitmentChain。在这种情况下,L2的交易在L1中的状态更改是将新的默克尔根添加至用于存储的合约中,这种方式要比将每笔交易都保存至存储合约中更为高效。
3 f  U; O* z# ]( B2 |- |+ D1 _& \- [- J$ L7 r" |1 x
1670924887665233.jpg
5 A2 k+ y6 S7 o& p& A$ `) ~- a
! r6 _2 u# R) b( ]欺诈证明(Fraud Proof)9 P. E8 L: J6 f& j

/ Z7 ^5 ]/ f/ r  |+ a+ D% q9 I欺诈证明是Optimism生态中非常重要的部分,其主要目的是保证sequencer输出结果的真实性。若sequencer将虚假的stateRoot发布至L1,那么verifier就可以启动欺诈证明程序并在L1上执行对应的L2交易。然后将欺诈证明的stateRoot结果与sequencer提交至L1的stateRoot进行比较。若结果不同,sequencer的质押会被削减,前一笔交易的stateRoot会被清除并重新进行计算。因此,所有的L2交易可以保证在L1中完成运行。: u. T- y/ |! R+ B
+ a4 \1 j! w# z- u* k8 W+ E
欺诈证明可以由任何人发起,但通常是由verifier发起的,因为它们会检查sequencer提交的每个stateRoot的有效性。欺诈证明的整个流程由Optimism提供的一套L1合约管理,使用合约时,用户可以在L1中重新执行L2的交易,生成正确的stateRoot。如果生成的stateRoot与sequencer发布的stateRoot不匹配,合约就会削减sequencer的质押,还会删除上一笔交易所对应的stateRoot。( w: Z! c( }3 Y

. B( e) h* Y1 R2 O6 g% oOptimism的出现极大地提高以太坊网络的可扩展性,在吞吐量不变的基础上,降低了gas成本。L1网络中的以太坊全节点承担着处理交易的职责,由于网络包含节点的数量众多,使计算成本变得非常昂贵。Optimism将交易交由一小组节点(sequencer与verifier)处理,使交易的计算从L1中脱离出来,而交易的calldata仍在L1上得以保留,这样为L1上的节省了大量区块空间,使其可以处理更多交易。
8 H6 t2 O+ O  K: y  ?
' X8 l. E- `, uOptimism的技术更新与进展
, U$ _. h6 d  e& }" N, ~1 G& B+ n4 `& Q7 l6 ]: Z# i- {4 m
Optimistic Virtual Machine(OVM)
4 N; p) Z/ s1 n, L  {$ D; K
/ p+ p$ ]3 t. O5 COVM是一个功能完善且与EVM兼容的执行环境,是专为Optimism L2的使用而创建的,通过Web3 API与以太主网交互。总体来看,OVM与EVM其实非常相似,但进行了优化与改进,方便修改或删除上下文相关的操作码(如TIMESTAMP或ORIGIN)。操作码在不同的链执行时,输出的结果不同。但在OVM中进行优化后,所有的交易都可以在不同的链上重新执行,输出相同的结果。OVM本质上是一个沙盒环境,可使L2交易在其它链上被重新执行与确定。这样verifier就可以创建欺诈证明并在L1上重新执行交易,输出正确的stateRoot。# v  t4 O* [: b% B2 q

2 f6 G8 [( R0 N) C1 W: S% tOptimism Bedrock
( I( j% _/ f/ d# H! O. w" j; b6 w: S5 w7 r. R, i7 _
Bedrock是由Optimism设计并开发的rollup基础设施,通过模块化与极限分割的方式实现对交易费用、网络性能以及生成区块过程的优化。Bedrock中包含一个新的L2衍生流水线,这个流水线也是唯一一个在发送交易数据至以太坊网络的过程中可以最大限度节省gas费用的rollup基础设施。Bedrock也是唯一一个将以太坊引擎API作为分隔共识客户端或执行客户端的rollup。待以太坊扩容方案EIP-4844 (proto-danksharding)上线后,Optimism可以与data blob无缝集成,大幅降低gas费用。作为rollup客户端,Bedrock在对rollup proof的选择上非常灵活,目前使用的是Optimistic proof(Cannon),就当前情况来看Optimistic rollups的优势较为明显,后续可根据需要转换为ZK proof。Bedrock的结构与以太坊的post-Merge十分相近,分为consensus layer(CL)与execution layer(EL),具体如下:
: u: M' O7 z1 N& B  ]( I1 y( X, G3 ^
L1 Ethereum:! z8 T2 s7 w& c! n: k! y

3 O" y& H  p2 P7 T3 PCL: Beacon Node - E.g. Prysm6 Q8 Y+ O- D! q
- w2 ~8 t. [1 g) A, ~
EL: Execution Engine - E.g. Geth% r6 }# U" ^4 D: i) g9 c) o! |

5 u3 l, i9 g4 R. s' ML2 Bedrock:, P; E7 i8 u' m% O' ~1 f6 F

# [4 i- i7 @9 e/ }0 [CL: Rollup Node - OP-node
/ y' W" u+ s, }* e5 i* ?* {! c, w" V( M; P* P5 H( U# B
EL: Execution Engine - OP-Geth
: ^2 |: i8 k  K, U. [- B% y
3 d" ]5 m4 }- X, J! q6 T  G! s; }' `OP Stack3 l  m0 c  V4 o$ P6 m( Q$ u
; I& w# @" p0 U
在介绍OP Stack之前有必要先了解一下Optimism Collective。Optimism Collective是由Optimism推出的治理系统,成员为社区、公司与公民,由Citizens' House和Token House 共同治理,以推动去中心化系统发展。OP Stack就是为Optimism Collective创建的开源软件栈,为其生态系统赋能,主要包含以下两部分:
' X8 b; Z6 i2 z
* @1 h8 N+ ]! Z" C; b& k- f1.链式栈(Chain Stack):运行去中心化应用,分为Consensus Layer、Execution Layer、Settlement Layer;
7 {6 c6 x+ j- i9 U" E
9 J6 D  H/ p$ M  G0 I 1670924887631254.jpg % V& r) m" O9 C) `$ F) N
/ R) I6 S* ^4 Q1 x# }; S9 p
2.治理栈(Governance Stack):确认产品定位,为其提供资金。0 m8 y4 r3 W3 k! q) U! U

& o6 M  v+ x6 n以实现:7 b$ }/ G/ }8 P4 D
, M- ~9 J' _2 D" t2 M0 P/ o
· op-chcin安全的标准化
" T' i" L. T6 L2 Z& l" X8 e
% m) R+ u& X1 S% w: F* Q9 i) m· op-chain工具的标准化& q9 p/ r; A( m: N4 ]2 H* O& ?# t1 M
) C; l. m; F( x) r# H
· op-chain治理的标准化9 n! ?4 H5 n4 q9 J0 ]& e

" n9 i4 J+ I( a0 {· op-chain可组合性最大化* N7 s' z* F5 T' A$ {

- |( |: v; g! t2 o0 c$ i$ l, ?2 u最终成为一个可无限组合与扩展的“Superchain”。
; c! G9 \% G# n2 ]+ @7 Z$ Y
3 o6 }1 \: F4 d% l4 O$ x7 Y 1670924887635581.jpg
5 `4 x2 J! t- i& f& ?) l" a2 \4 d6 Y2 k: _5 i( a  F' S* g, w0 U6 o
Optimism生态发展数据% V( O+ r5 w' k+ ^, H  Q
. [6 W9 V. A2 {& u4 {9 K
协议收入, i" I$ y4 F7 Q% q4 F1 x* E. i$ A

5 W; E- P/ e" s( Y. ^1 QOptimism的网络收入总体呈小幅震荡上升的状态,9月的震荡区间为$1.0k至$8.9k美元;10月的震荡区间为$2.9k至$11.3k;11月的震荡区间为$5.9k至$14.3k,11月8日至11日四天出现大幅攀升,最高至$61.2k后回落至正常状态。5 C4 ?$ k, e' d. @$ R6 G
7 S' Z: X0 U) `* |
1670924887697758.jpg
, r( }4 _' a2 n) ]
* V6 `# E- K& H0 Q) y2 z; `独立地址
. D1 I% T' z) f/ U# @  Z$ j$ j( n- S
Optimism的独立地址数呈稳步上升趋势。4月27日当天由于空投发放新增地址45.6万余个,后进入缓慢增长状态。9月后独立地址表现为阶梯式增长,日均新增从2.7k稳步过渡至10k。, f& u: a9 f; L- Y1 L9 B' O. \
, s" [6 I! ^$ L0 ~. w/ M
1670924887702301.jpg / G- K, J/ S' x1 M& j( g

& J2 j9 N* j7 m4 j. ^) x3 E3 R日交易量
( t2 S; W' r) m' u
. u( k) ^5 d! J6 i随着独立地址数的上涨,Optimism的日交易量呈现出相似的增长趋势,进入9月后日交易量由126.1k逐步攀升至347.1k,上涨约175%,11月9日日交易量迎来近期高点达492k。* Y/ `& i" b9 s, q3 F
4 u: [* t2 {% g
1670924887705138.jpg 3 r- t) z- l  ?9 P) Y$ [
& L$ X1 C; ^$ |0 v
日活跃用户+ G  m0 Y- _% _* o5 v4 D6 _
1 o9 X3 N/ d5 Q4 B
Optimism的日活跃用户量整体来看呈震荡上升状态。由9月初的阶段性低点8.5k到12月初的34.8k,增幅为309.4%。
9 ^# ~5 q4 l, G( e) r  f
% W3 J( g0 K5 q8 _( l 1670924887686471.jpg
$ F1 v) ?4 B3 T( m' c1 C
7 d; Q/ k8 X- j7 n& ATVL
/ S6 X/ [/ `8 z/ Z3 z% m+ j
5 `+ h; a: Q% [8 @& B' Q! lOptimism的TVL从9月到10月之间保持在9亿美金上下,直至FTX事件之后出现断崖式下跌,触及5.17亿美金,下降了42.55%,所受影响较大,目前稳定在5.56亿美金左右。- R2 u: f9 C5 P$ G# I9 V

" m6 H. y. r# R8 b8 b" f 1670924887681800.jpg
4 T# v7 i+ |/ s& C; _
7 _2 p5 o% j9 t5 a$ a+ d( {  r( x链上应用5 }4 C" Q- F4 V" k! F
; {7 e; q* W' C
Optimism生态中TVL排名前十的应用分别是:AAVE V3、Synthetix、Velodrome、Curve、Uniswap V3、Beefy、PoolTogether、Star gate、Perpetual Protocol、Beethoven X。不难看出,Optimism网络中非原生应用在TVL中所占比例较大,唯一的原生应用Velodrome的TVL仅占前十应用总TVL的14.64%。' {" \8 W) f  g) O% q
$ Q' C3 f1 b9 t1 Q
1670924887688883.jpg
/ ?8 U' u# }, L$ L
+ E. O" w5 q6 q/ R7 c8 H' C项目交互3 P1 _) \& Z& L5 y) ^) m8 C6 J* o
* V8 J: v! {# K1 B" s. }
从生态内部产品整体交互的情况看(图1)原生应用Velodrome、Pika Protocol、Rubicon交互数量仅占生态内排名前七应用交互总量的24.87%,这说明原生应用的用户粘性有待加强,可推测现阶段用户使用Optimism主要目的是节约在以太L1使用的gas成本。而导致近7天交互应用排名(图2)与整体交互情况有不同的主要原因是由于用户参与OP版“奥德赛”活动的刷量行为,导致短时间内原生产品的交互增加。5 S. g( E+ C9 J2 j+ b, S

% P9 ]. P5 b% e0 h$ n 1670924887702155.jpg ! [$ v7 w, W7 }# c

1 c  j4 n5 S* I2 _- }6 Z0 Q图1
1 ~( K" g3 p5 G0 a& j/ A+ u: S6 z4 S! t( o4 u: F& r2 F# `
1670924887704561.jpg
  W; a9 q7 G) v! O8 v1 f
6 s: h( K1 T* f  X图2& @" `$ ~5 A9 ^* @! [) h' O
" ^1 G0 L" N4 M2 _* ~' G
跨链7 i+ Y4 g1 B  \7 b, I6 j

) d8 V2 c; G. P+ w+ S* S& j6 R( _截止至目前,使用Optimism进行跨链的用户约为27.2万人,跨链总金额约为44.8万枚ETH(按市价折算约为5.5亿美元);七日内存款人数为10.6万人,七日内跨链总金额接近1.1万枚ETH。与其它L2协议Arbitrum、zkSync、StarkNet 相比,除七日内存款人数排名第一外,其余三个维度的数据均处于第二的位置。2 R( X' i+ W, ?' i; |6 A5 ~
* ~6 N% W! R) H. N7 F0 ^# C' B
1670924887685860.jpg
4 G+ z! ]; \+ X6 e
9 \5 F; S/ O/ Y7 L2 K5 [9 iGas
) a; w, j9 G$ S8 d5 C
! M1 S1 Q6 I9 p! ^' R7 U6 f- C6 O从gas费用来看,Optimism在众多L2协议中转账费用排名第六,比以太坊L1的转账成本低了83%。Swap的费用在L2协议中排名第四,比在以太坊L1进行swap的成本低95%。(注:下图中所显示的费用是浮动的,但变化幅度相对较小)
; o) R$ `3 K# u8 C
- J! \4 M) d9 i* d% |7 k( p! d& n 1670924887696930.jpg ! O' S' W0 W! ~- p# O
; Y4 m- V5 ~& _! h# I+ E/ |
Optimism未来展望: a/ t& \6 C0 H  S7 w& I/ l# K

/ z+ C8 b  K3 \* nOptimism生态内现有应用240余款,但大多数为非原生产品的生态扩张与迁移。若从将其视为一个独立生态的角度看,原生应用的开发与获客仍然有很大的上升空间。随着Bedrock的逐步成熟,Optimism与以太坊基础设施的集成协议值得关注;其次,OP Stack所带来的Superchain概念是否会衍生出跳脱于现有rollup的新概念L2也需进一步的探讨。此外,待EIP-4844上线之后在Optimism的gas成本继续降低的条件下是否有机会超过同类型的rollup因而获得竞争优势也是一个值得观察的部分。
" \; I- X% v3 O% m2 b$ Y
& f0 B6 g3 w* T' @# X% \" B: v
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

梦的衣裳323 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    5