Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
使用CyberMiles Remix来部署你的第一个应用
% p. c. W0 x& u3 T准备工作( D0 F. J5 d, P  R% K7 g8 e- e
1、Lity或Solidity基础语法知识, K) ^, ?4 W2 B& f: v1 y7 R
yberMiles主网完全兼容以太坊,在以太坊上运行的智能合约,理论上可以无缝对接到CyberMiles的主网上。所以在编写智能合约前,你需要了解Lity或者Solidity的基础语法, 查看solidity官方文档或这个网站:区块链技术,你可以学习一些基础语法的使用。+ b* N# f0 Q6 m1 G: b8 U
Lity官方文档:https://www.litylang.org
7 o4 V' b! |& N! @2、IDE:Remix, k1 \( N7 L4 G) ?# r  |: V0 H; l
每一种语言在有了一系列的编程规范以及一个IDE、外加一个优秀的编程开发人员将会变得very perfect!而对于我们本系列介绍的Lity或Solidity语言也自然有它的开发的IDE——Remix。CyberMiles在原有Remix的基础上又进行了兼容性改造,使得新的Remix更适应Lity的开。( N6 J# b5 B4 r  S
在线地址:http://remix.cybermiles.io% r- S7 m4 e" a( g5 j; G. X
3、Chrome 及 MetaMask For CMT
4 K' G+ l. D0 I# A+ [. ?9 z* D智能合约的开发,离不开与区块链的交互,通过MetaMask For CMT能够实现与CyberMiles主链或测试链的连接与调用。: [8 Z4 T' @+ ~! C
MetaMadk For CMT 是Chrome的一款插件,可以在CyberMiles官网进行下载 ,然后按照说明进行安装。https://www.cybermiles.io/metamask/?lang=zh-hans
- L0 M% W+ ^' o/ S使用Remix编写简单智能合约
$ Y: I3 b- J; j1、Remix界面
4 W7 e% K) |' X% f% ^& {2、编写、编译合约
! u/ g% L# M) d+ G; O2 e. @1 {合约可根据个人喜好在Remix中编写,或者在本地的编辑器类似sublime中编写。7 M2 [, n0 d9 ~& n' \' s
我们编写一个简单的合约,对属性name和age进行存取。
9 x' |+ ^' X7 k- wpragma lity ^1.2.4;/ O2 X. N- v" X1 B9 W
contract ContractTest{- s  l: [. t! }: B
   
+ N. D5 ]8 _$ N: a0 Y4 I( H    string name;9 E; O: y$ O. k! t- \
    uint age;
- V6 b0 n0 [, l    8 n9 N" L1 ^, Q$ Q1 \
    function setInfo(string _name, uint _age) public {- }- p6 s; _% U" F2 v
        name = _name;
! [* {, I& |0 `/ T! T8 N        age = _age;
0 }' Z* {( w9 h& v    }
$ o; }3 Y" I$ G! k1 d   
; m5 [: W6 H" P! @    function getInfo() public constant returns (string, uint){0 R& S& ?" g; o. c' _' K& u4 v
        return (name, age);
* J, s3 ^7 ?: ?0 V  ~    }% D" V. E8 G8 N8 |7 g) L
}
* G2 M6 e/ X8 l/ b) t- G" N将合约内容复制进Remix,点击右侧Start to complile,如果下方没有报错,说明编译通过。
! \0 j8 w5 P. `如果你想通过web3js进行部署,可以点击ABI和Bytecode按钮,获取需要的数据。2 m# T$ Y: n. x8 c) c8 d
点击Detail按钮,可以获得更多详细信息。
! L( G2 g" d4 s" L+ Q2 U+ R1 A
2 `# [6 [0 g. R( D( W3、MetaMask For CMT 简单使用( k1 X! ^0 J/ ~: y7 P
部署合约前,我们简单介绍一下MetaMask的使用,在安装完成后,chrome浏览器右上方就会出现相应的插件logo& y; }/ R5 c- q. m, U

# H1 B! F0 J6 N点击logo,将弹出操作界面,本次我们选择CMT Test Network测试网络进行。
' B9 }" t4 F; u2 @- d7 d- w2 w0 G3 e5 t6 S2 @5 r: a$ t( r
新建账户中没有CMT余额,我们点击BUY按钮,进入界面后再点击TESTNET TEST FAUCET按钮,可以去申请一些测试用的CMT。9 t1 {8 b! p0 o( v! r9 z
( g- S  q3 R6 v9 j6 W
(注意:如果本地还安装了原版的MetaMask,为了不影响下面的操作,请前往Chrome扩展程序管理中,禁用原版MetaMask)
  _4 J1 [0 R2 Q. F' S) N; M& d/ O
& J- n2 C2 v# `
4、部署合约
% W* j( ?, k6 T0 _合约编译通过之后,我们就要将合约部署到链上。
7 Q0 A) }8 K% J- a5 Y) n7 a+ \点击右侧的run,进入部署控制界面
8 c7 D$ P$ b# J( G7 b- H. p  I* B- Y7 P) `  D5 W( s& l3 s" C2 y
·Enviroment:" i0 U% h4 C& r! ^2 {- g2 Z
这里有三种选择
' Y: A" s" R" y5 G& W# \& k! r  D' M9 {: l* n% ^( `4 g, P0 o- E
JavaScript VM:合约部署到运行在浏览器内存中的虚拟网络,页面刷新的话数据将会被重置,并没有真正部署到任何链上。它会提供 5 个虚拟帐户每个有 100 CMT,可以随便选一个帐户,适用于本地调试。6 R8 C/ M5 W* q+ l9 N( T5 T" `' T& B, g
Injected Web3:我们需要启动上一步的MetaMask For CMT,并创建一个账号。Remix会连接到MetaMask所选择的链上。8 S8 g& e" j2 H, A; c/ r
Web3 Provider:可以通过改选项,配置参数,使Remix连接到我们本地的私链或者其他链。  }& o5 N% M# F. O. O5 h8 q/ r% T
Account:对应链上的账号
+ O! y) N4 p. `* M1 s5 f  OGas Limit:设置交易需要的gas费用,一般使用默认值无需修改6 d5 T1 V" `1 C0 D$ i+ P
Value:如果一项对合约的操作需要转cmt,则需要在这里设置cmt的数量& o" U: O4 ]5 t3 b4 {
接下来我们执行部署操作
, {2 S$ U' M+ l4 i+ ]4 B1.登录MetaMask For CMT,选择测试链,并申请一些测试CMT(详见第三步简单使用)
6 C3 F4 _2 w8 Q' Y5 A5 Q2.Enviroment我们选择Injected Web3$ y5 o0 m3 r" h- p% g: L+ g+ k  d# j
3.点击部署按钮,弹出MetaMask确认框(如果没有弹出,可以手动点击插件logo),点击SUBMIT( v7 f$ H. P0 f1 @/ e; d" C
- L: e- R: W+ S: Y' V: Z
4.等待交易被打包确认,成功后将会出现我们的部署好的合约,点击黑色小三角可以展开合约,可以看到就是我们在合约中定义的方法。$ _% s  ]) }# r+ [' W/ I) g$ b  k

( [- @7 Z: T( J- z" D  {# H7 C8 K5.左边的控制台,我们也可以展开交易信息,查看此次交易的状态、transaction hash、gas费等等
* O: S: {: r" o1 Y
( z8 T% k4 w* X2 a测试合约功能8 ?0 {$ |& h6 F) A& Z
合约部署成功了,我们来测试一下合约的功能
0 K6 o( L1 g! c  B' Y8 }1、设置name和age
  X. z1 t( _5 Q, D; U在合约下方的setInfo输入框中填写 “Li Lei”,18(注意:字符串要写引号,不然会报错),点击setInfo按钮,然后在MetaMask中submit该笔transaction,等待一会成功后,控制台将返回结果数据$ U# ?) |5 }, i+ ~3 a
9 |" ?+ t3 q' p6 T
2、你也可以点击setInfo输入框右侧的下拉三角,直接填写两个字段,这里字符串可以不需要引号, ^* q1 r! H, o) U+ D5 o  S
. N' o- B! z8 t4 e7 ^
3.设置name和age成功后,我们来调用一下getInfo方法:5 z9 C9 I" l) X' {
" |( J0 P& J! N
我们设置的内容就调用出来了。因为我们的查询操作不改变合约的状态,所以在调用getInfo方法的时候,不需要在MetaMask进行确认。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

Mohammad61417 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2