Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

Solidty 语言零基础上手指南

卡哇伊嘉人
74 0 0
Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)之上。$ {3 e. W! ?; B( y+ K, g

& h4 ^6 P4 N1 \$ j1 s    Solidity与其它语言相关的特点?
2 Z" C; [- I5 _/ I+ C" K3 v$ |3 W
: {$ J5 @6 ~! f; V    它的语法接近于Javascript,是一种面向对象的语言。但作为一种真正意义上运行在网络上的去中心合约,它又有很多的不同,下面列举一些:/ ?- @! s! n. Q9 l; m/ V3 ]

0 @" P# X- N7 x. A: j9 Z6 L0 K7 ]    以太坊底层是基于帐户,而非UTXO的,所以有一个特殊的Address的类型。用于定位用户,定位合约,定位合约的代码(合约本身也是一个帐户)。
* C; ^! h, k7 V6 B
0 `' s5 e3 Y" _# M+ P/ ^    由于语言内嵌框架是支持支付的,所以提供了一些关键字,如payable,可以在语言层面直接支持支付,而且超级简单。
( a1 ~' c1 X9 B/ W1 b
! R' |9 ?+ ?  q  Q3 r    存储是使用网络上的区块链,数据的每一个状态都可以永久存储,所以需要确定变量使用内存,还是区块链。
) t! ^& P; I  g9 \, v
8 r+ [/ ?, w( F, W) w  I    运行环境是在去中心化的网络上,会比较强调合约或函数执行的调用的方式。因为原来一个简单的函数调用变为了一个网络上的节点中的代码执行,分布式的感觉。0 z" |8 |  f, J) _

5 E& m8 m! ]5 n* C* L) |    最后一个非常大的不同则是它的异常机制,一旦出现异常,所有的执行都将会被回撤,这主要是为了保证合约执行的原子性,以避免中间状态出现的数据不一致。' w$ I9 G7 o, {$ a; ~

" K* E. I$ i* [3 X+ [" N4 I    HelloWolrd!
1 ~) u! u6 E7 u9 P; [8 ]
" l" E# Z% x" Q( _; C* c* Q, S    听起来高大上,其实入手玩起来也可以很简单:7 k8 e$ G! b% H8 q/ k
: }6 i2 @$ i. P' _5 w& b
    pragmasolidity^0.4.0;4 P/ Y3 ]1 P$ q$ l" m9 D( [
" i, G5 y1 A1 o: U1 _- N
    contractHelloWorld{6 c$ P% z$ r. H3 m* d

) d& c# ?7 r% H$ E    uintbalance;
5 B! u5 C7 c7 E' e) ^$ @6 Q+ x( v2 v$ _4 ]2 I8 j) X5 ]
    functionupdate(uintamount)returns(address,uint){
! H  [# T1 E/ w7 _- l9 X% \7 E5 U5 `3 e
    balance+=amount;
5 Z0 D6 D- Z6 x" A; C4 x) n1 ^0 X) {  Z; v9 |& L
    return(msg.sender,balance);8 m2 H. f$ b/ i* D7 }# z2 q
7 U1 E, u! L7 w" |) ?# H: `3 z, w
    }
. [! b2 F8 S( j% M5 b
2 g2 p/ b' }2 v: y    }! f* s* W: K! m7 ~, i) t7 j

: T1 v: d2 c0 L) L  t3 i    通过读取参数输入的新值,并将之累加至合约的变量中,返回发送人的地址,和最终的累计值。- M# I9 J& f4 c0 V2 B% V

" P2 h( _' e8 V& G7 \    浏览器编译器Remix
: ^( g6 g# s6 K; K5 R) ?* ~/ e+ Z& q
    使用无需安装的浏览器编译器Remix可以立即看到效果。打开后,如下图所示:
& t* X2 E0 g4 A, e$ f/ o. L; e$ R0 T, Z8 G7 {9 @
    输入上述代码,点击Create按钮,就能在浏览器中创建能调用函数的按钮。在update按钮旁输入入参,点击按钮,就能执行函数调用并打印出函数返回的结果了。
" Z% V6 C7 b' E' b& X0 U2 Z
( j4 n* U9 }6 s4 \" h- N5 m    备注* a5 @, C) G4 r

" o' r- f) \2 b2 ^    如果出现错误,可以等待浏览器资源加载完成,或强制刷新后再试。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

卡哇伊嘉人 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    11