Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
使用CyberMiles Remix来部署你的第一个应用( b* h0 I/ ~/ ?5 L+ c
准备工作/ B" g" a0 ?- v, L  P9 `; I
1、Lity或Solidity基础语法知识0 T* u4 Z) A/ N4 E8 Q# t
yberMiles主网完全兼容以太坊,在以太坊上运行的智能合约,理论上可以无缝对接到CyberMiles的主网上。所以在编写智能合约前,你需要了解Lity或者Solidity的基础语法, 查看solidity官方文档或这个网站:区块链技术,你可以学习一些基础语法的使用。
& [9 L# A) C, D$ _& Y1 U; \, O2 E3 ELity官方文档:https://www.litylang.org* z/ H: X$ B. `, ^
2、IDE:Remix
8 v/ M2 T; Q! W( v每一种语言在有了一系列的编程规范以及一个IDE、外加一个优秀的编程开发人员将会变得very perfect!而对于我们本系列介绍的Lity或Solidity语言也自然有它的开发的IDE——Remix。CyberMiles在原有Remix的基础上又进行了兼容性改造,使得新的Remix更适应Lity的开。4 C; X9 M+ h. y% A4 C5 C
在线地址:http://remix.cybermiles.io
% ?! h$ o) H; ]: P( Y: O2 d3、Chrome 及 MetaMask For CMT
( n, }8 n8 R8 ?0 N智能合约的开发,离不开与区块链的交互,通过MetaMask For CMT能够实现与CyberMiles主链或测试链的连接与调用。
$ Y- ^  i9 e9 Y7 z1 IMetaMadk For CMT 是Chrome的一款插件,可以在CyberMiles官网进行下载 ,然后按照说明进行安装。https://www.cybermiles.io/metamask/?lang=zh-hans
. W" a% u$ G5 ^7 m8 b1 i- J8 o使用Remix编写简单智能合约
# K; p  V8 q9 ?/ v8 k) E8 ^( {1、Remix界面
  Y/ a+ ^, P, `7 t. S9 @2、编写、编译合约
* q$ t+ ]2 h& v5 G合约可根据个人喜好在Remix中编写,或者在本地的编辑器类似sublime中编写。! S) Q& v, s$ @7 Z- N1 x
我们编写一个简单的合约,对属性name和age进行存取。
. a# p. h4 B; b7 }pragma lity ^1.2.4;, Z6 y: }, M# B2 g
contract ContractTest{% p3 I  n: @; x
    9 x$ u/ ?! ~' O: b
    string name;" n7 g9 D0 p1 }/ Q+ p
    uint age;
0 [5 X( q( F' r& r! K   
5 w' L: J& S2 Z2 }    function setInfo(string _name, uint _age) public {8 b- B7 @) o( s+ `8 x
        name = _name;
4 E) V6 m( L, m8 m; g( n7 j        age = _age;" u& Y7 U2 D1 ^4 I8 u8 k
    }+ Z- F% _; u! p
    ) _9 L% l; e+ c- Z
    function getInfo() public constant returns (string, uint){+ ]; O5 A9 n1 K& L4 r( \9 k
        return (name, age);0 w, i6 a0 f! _0 w2 v8 h
    }
' O) O1 g& T9 n9 [. H$ {}( Z/ n4 v$ W  U; L8 @1 `/ e
将合约内容复制进Remix,点击右侧Start to complile,如果下方没有报错,说明编译通过。
/ h' `, y# B& [+ ?; `4 s+ o) H7 M/ y如果你想通过web3js进行部署,可以点击ABI和Bytecode按钮,获取需要的数据。* n0 J9 G* m; n# z% ^/ O7 C' l
点击Detail按钮,可以获得更多详细信息。- i& J2 d' ]- j5 o, K2 q8 b  c. ?0 M
- H# \9 G* `5 I+ `7 a" w5 g
3、MetaMask For CMT 简单使用5 W% c9 R0 X5 u6 t" F3 j
部署合约前,我们简单介绍一下MetaMask的使用,在安装完成后,chrome浏览器右上方就会出现相应的插件logo7 i) `# g; ^2 j: u
! t" T& ?( K- `0 U- L6 ^
点击logo,将弹出操作界面,本次我们选择CMT Test Network测试网络进行。
# n" ~9 N# ]- J# r$ x* F8 k9 s" R5 B& E6 v6 t
新建账户中没有CMT余额,我们点击BUY按钮,进入界面后再点击TESTNET TEST FAUCET按钮,可以去申请一些测试用的CMT。
( g# U9 Z8 q' |/ E" j  _: r: d0 K0 E. ]1 M: {, \
(注意:如果本地还安装了原版的MetaMask,为了不影响下面的操作,请前往Chrome扩展程序管理中,禁用原版MetaMask)
: p( X4 }: A$ y4 S
5 g7 H6 c$ _2 i+ w7 |5 S1 I
4、部署合约4 |( v( ~) F) o8 c
合约编译通过之后,我们就要将合约部署到链上。
& d2 |: y" D# }/ [点击右侧的run,进入部署控制界面
4 i& S3 k( x6 o3 Y0 t
0 Z7 E6 |& K( n& ?·Enviroment:
  C  E- l4 V- f% f这里有三种选择
- e( S) B# m% h! x
/ N3 Z& n& q* r" `5 h; QJavaScript VM:合约部署到运行在浏览器内存中的虚拟网络,页面刷新的话数据将会被重置,并没有真正部署到任何链上。它会提供 5 个虚拟帐户每个有 100 CMT,可以随便选一个帐户,适用于本地调试。
2 t( B4 }* N% L( m  l' j/ u/ s- dInjected Web3:我们需要启动上一步的MetaMask For CMT,并创建一个账号。Remix会连接到MetaMask所选择的链上。
8 j  B) X& \% d  u2 }Web3 Provider:可以通过改选项,配置参数,使Remix连接到我们本地的私链或者其他链。
+ K0 ^0 K- g8 Y4 M& FAccount:对应链上的账号2 T$ w; L  [. r. ]
Gas Limit:设置交易需要的gas费用,一般使用默认值无需修改
+ H2 m4 ?3 ~% J5 N6 y" w# q1 kValue:如果一项对合约的操作需要转cmt,则需要在这里设置cmt的数量9 o6 P6 p* D& v4 \8 t2 v- [- V
接下来我们执行部署操作
! f, p# g- U6 Y$ E5 a6 L, i1.登录MetaMask For CMT,选择测试链,并申请一些测试CMT(详见第三步简单使用)
$ Y% M: l/ m  q! W2.Enviroment我们选择Injected Web3
& V( z, F: ?1 ^' F2 r$ y2 O3.点击部署按钮,弹出MetaMask确认框(如果没有弹出,可以手动点击插件logo),点击SUBMIT" S7 F4 k# X9 U+ V5 h& _; |- A+ Z

$ W" [% @$ x) ^) a/ P! N4.等待交易被打包确认,成功后将会出现我们的部署好的合约,点击黑色小三角可以展开合约,可以看到就是我们在合约中定义的方法。
' B6 _' b4 X+ T7 _- f- Q3 Y" W$ {- f, a
5.左边的控制台,我们也可以展开交易信息,查看此次交易的状态、transaction hash、gas费等等, k2 A6 ~6 K5 a7 K
- e/ V3 d; C/ J5 W; l- _
测试合约功能  K' g, C: Z. }0 F# J
合约部署成功了,我们来测试一下合约的功能
; x: O1 f8 G3 H( S  @1、设置name和age
) L) b# C, h) l在合约下方的setInfo输入框中填写 “Li Lei”,18(注意:字符串要写引号,不然会报错),点击setInfo按钮,然后在MetaMask中submit该笔transaction,等待一会成功后,控制台将返回结果数据: b% I0 M( L8 o, A( K6 \/ }6 b9 L

0 e# n4 p, |! H  H7 o3 K+ l0 ?2、你也可以点击setInfo输入框右侧的下拉三角,直接填写两个字段,这里字符串可以不需要引号0 _6 }- C: @/ d: o  S  i) Z: q; r& O* ^
+ q0 W8 U- Q1 A, P: K
3.设置name和age成功后,我们来调用一下getInfo方法:: i" n! t  r0 C9 |1 u/ ?

# p& i2 f& {, b/ q# A. |我们设置的内容就调用出来了。因为我们的查询操作不改变合约的状态,所以在调用getInfo方法的时候,不需要在MetaMask进行确认。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

Mohammad61417 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2