Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
使用CyberMiles Remix来部署你的第一个应用
7 G1 G6 {& }; T7 h! B* f1 J5 a/ p准备工作& d9 X3 e- X$ c8 [. e  ?3 o
1、Lity或Solidity基础语法知识9 X5 s2 e, m' f
yberMiles主网完全兼容以太坊,在以太坊上运行的智能合约,理论上可以无缝对接到CyberMiles的主网上。所以在编写智能合约前,你需要了解Lity或者Solidity的基础语法, 查看solidity官方文档或这个网站:区块链技术,你可以学习一些基础语法的使用。' q; z4 A) n9 e- u
Lity官方文档:https://www.litylang.org  ]1 e+ Y- p! u  R2 ?1 q- E
2、IDE:Remix
2 j: P1 f1 s: w每一种语言在有了一系列的编程规范以及一个IDE、外加一个优秀的编程开发人员将会变得very perfect!而对于我们本系列介绍的Lity或Solidity语言也自然有它的开发的IDE——Remix。CyberMiles在原有Remix的基础上又进行了兼容性改造,使得新的Remix更适应Lity的开。' Y8 G5 c+ x6 s2 P5 S
在线地址:http://remix.cybermiles.io
! w: Z0 f! x3 `+ D: Y2 v3、Chrome 及 MetaMask For CMT
! i. v7 d& x) H# w7 Z! Q2 g智能合约的开发,离不开与区块链的交互,通过MetaMask For CMT能够实现与CyberMiles主链或测试链的连接与调用。
0 M9 [) ^- e  x6 \0 B! S/ I1 VMetaMadk For CMT 是Chrome的一款插件,可以在CyberMiles官网进行下载 ,然后按照说明进行安装。https://www.cybermiles.io/metamask/?lang=zh-hans7 b6 J& q% P3 V4 d! E0 k
使用Remix编写简单智能合约0 g, c1 k  j. p6 X: e  ?
1、Remix界面
, ~$ Y9 n- M: X, M2、编写、编译合约" B# P( K% K/ k( [" T
合约可根据个人喜好在Remix中编写,或者在本地的编辑器类似sublime中编写。
, m$ s7 u1 R2 ^/ g( y1 ?! a6 l我们编写一个简单的合约,对属性name和age进行存取。9 S% O2 n( g2 U- \5 i
pragma lity ^1.2.4;) j. E, a/ F5 T4 i+ Y
contract ContractTest{2 @, R$ X: r: c8 G' j* i1 P; _
   
" K, h4 O* U4 A$ J    string name;: y' ^# Z9 d: n1 n; n5 }6 w
    uint age;* W" N, U3 I6 w. S% c6 b1 J
    0 q) G% Z7 J% S. D" E4 {3 f
    function setInfo(string _name, uint _age) public {( Z$ N3 ?$ I, ?
        name = _name;
/ E4 v! G8 U- h& b% R5 Z% {        age = _age;6 ~2 X  n+ q7 i
    }6 h: S& |' F$ r% _& X7 o, C
   
% e1 u7 O" I2 H' m3 V5 U    function getInfo() public constant returns (string, uint){' b6 \0 ?- a* ]( r* u
        return (name, age);
" S: _. u# p' g    }' B# K( s- T0 |, Y' D
}
1 ~: K: O/ o4 B3 N7 q0 F2 Q& Z# u  \$ z) c将合约内容复制进Remix,点击右侧Start to complile,如果下方没有报错,说明编译通过。  b7 C+ B) f1 K% r/ X
如果你想通过web3js进行部署,可以点击ABI和Bytecode按钮,获取需要的数据。
4 D" v! S1 V/ x) S6 S点击Detail按钮,可以获得更多详细信息。$ o7 H# N% Q4 R3 f$ Z+ g2 U( U
. ?# M, x! F& G6 c5 G: t! j$ A
3、MetaMask For CMT 简单使用
  x" o4 Q# q  \3 Z2 D% a  k4 F部署合约前,我们简单介绍一下MetaMask的使用,在安装完成后,chrome浏览器右上方就会出现相应的插件logo) t/ Q4 g  X) i/ `0 \
2 w( m! g# p/ x
点击logo,将弹出操作界面,本次我们选择CMT Test Network测试网络进行。4 ^/ V* Q2 X% Z% j; r
* Q  ?; t) J4 ^0 v9 l. G
新建账户中没有CMT余额,我们点击BUY按钮,进入界面后再点击TESTNET TEST FAUCET按钮,可以去申请一些测试用的CMT。
$ ?$ c/ `* c0 w" a6 [0 }, T) H$ i4 h) e) K
(注意:如果本地还安装了原版的MetaMask,为了不影响下面的操作,请前往Chrome扩展程序管理中,禁用原版MetaMask)! l1 `5 q/ p  F2 B2 h1 c

1 K0 s: `' Z" X4、部署合约
, }1 w  n! j, e5 C合约编译通过之后,我们就要将合约部署到链上。
8 l0 H+ b+ u, A+ s8 w7 E) ^点击右侧的run,进入部署控制界面
& b$ W2 V) c- t0 o) Q& J' T$ k% I; {# H1 n- H' ~  b
·Enviroment:/ p! S6 n6 E) K' l& o1 N* b* H, l
这里有三种选择
2 @; R$ R, U- y3 \9 b& j1 S/ s) Q3 Z+ r0 C% b6 Y& w  ?- R- {
JavaScript VM:合约部署到运行在浏览器内存中的虚拟网络,页面刷新的话数据将会被重置,并没有真正部署到任何链上。它会提供 5 个虚拟帐户每个有 100 CMT,可以随便选一个帐户,适用于本地调试。, r8 a; l: e0 x$ T2 A* W  O
Injected Web3:我们需要启动上一步的MetaMask For CMT,并创建一个账号。Remix会连接到MetaMask所选择的链上。' o  z+ |" N  f9 [3 L
Web3 Provider:可以通过改选项,配置参数,使Remix连接到我们本地的私链或者其他链。
: {9 q" j+ z2 k* kAccount:对应链上的账号& _2 y/ H  ?, u  f
Gas Limit:设置交易需要的gas费用,一般使用默认值无需修改
8 W+ A& Q1 q; q% s9 RValue:如果一项对合约的操作需要转cmt,则需要在这里设置cmt的数量" p9 I; t# m6 N
接下来我们执行部署操作
$ t0 a/ U; R2 r# m7 ~1.登录MetaMask For CMT,选择测试链,并申请一些测试CMT(详见第三步简单使用)' F1 Q2 l! V) U9 q
2.Enviroment我们选择Injected Web35 T' Z/ q4 x8 _6 C9 ^2 ?" X
3.点击部署按钮,弹出MetaMask确认框(如果没有弹出,可以手动点击插件logo),点击SUBMIT5 ?/ J& u  J, b

3 }2 C# s# `2 @4.等待交易被打包确认,成功后将会出现我们的部署好的合约,点击黑色小三角可以展开合约,可以看到就是我们在合约中定义的方法。2 G1 f; D; {- t) r
: ~5 C& I+ \* ~: J
5.左边的控制台,我们也可以展开交易信息,查看此次交易的状态、transaction hash、gas费等等4 E3 I" n6 g3 Y. Z# E. k4 G" h

& u* c9 V* G" J3 \7 y% I8 C测试合约功能
/ ]: G- z" R0 Q; o7 _合约部署成功了,我们来测试一下合约的功能
1 c3 U- q0 `% S' @& G1、设置name和age0 d+ I  _/ x6 Q7 h2 u
在合约下方的setInfo输入框中填写 “Li Lei”,18(注意:字符串要写引号,不然会报错),点击setInfo按钮,然后在MetaMask中submit该笔transaction,等待一会成功后,控制台将返回结果数据+ A8 A+ l. B# V

. }! }3 F! X1 ]# ~7 v: _+ {2、你也可以点击setInfo输入框右侧的下拉三角,直接填写两个字段,这里字符串可以不需要引号
& E1 e( m6 V8 S& l6 F& Z5 c; M2 t  l6 S$ e9 G
3.设置name和age成功后,我们来调用一下getInfo方法:
  X+ l0 i: f. a1 {7 {2 L  B& z  i; q% B0 ~2 Q! Z+ f* h- x
我们设置的内容就调用出来了。因为我们的查询操作不改变合约的状态,所以在调用getInfo方法的时候,不需要在MetaMask进行确认。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

Mohammad61417 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2