Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
使用CyberMiles Remix来部署你的第一个应用
, @8 A& \: \0 u8 h/ G+ i准备工作
; F- Z1 }+ Z$ g5 L+ `4 j! l9 G1 Q3 J1、Lity或Solidity基础语法知识
  T7 Q" t# z* E6 fyberMiles主网完全兼容以太坊,在以太坊上运行的智能合约,理论上可以无缝对接到CyberMiles的主网上。所以在编写智能合约前,你需要了解Lity或者Solidity的基础语法, 查看solidity官方文档或这个网站:区块链技术,你可以学习一些基础语法的使用。  R4 M6 j* D8 F3 W& N% i, ]
Lity官方文档:https://www.litylang.org. W: s9 a0 ^. ~6 ^
2、IDE:Remix
1 }1 x/ L( ^" o0 f9 Q, H' h8 G每一种语言在有了一系列的编程规范以及一个IDE、外加一个优秀的编程开发人员将会变得very perfect!而对于我们本系列介绍的Lity或Solidity语言也自然有它的开发的IDE——Remix。CyberMiles在原有Remix的基础上又进行了兼容性改造,使得新的Remix更适应Lity的开。0 N/ H; \" p+ |9 R% Q
在线地址:http://remix.cybermiles.io; k# S# _( n$ a0 O+ O+ S7 }6 h
3、Chrome 及 MetaMask For CMT
, z2 J2 a7 |( s* e+ T. c9 T8 {! u智能合约的开发,离不开与区块链的交互,通过MetaMask For CMT能够实现与CyberMiles主链或测试链的连接与调用。) e; B' @- X3 O0 s1 f
MetaMadk For CMT 是Chrome的一款插件,可以在CyberMiles官网进行下载 ,然后按照说明进行安装。https://www.cybermiles.io/metamask/?lang=zh-hans3 e' s4 \# o- t; I% g: I6 k0 I
使用Remix编写简单智能合约
! t. X3 E* K4 |7 ?: h( ^7 l1、Remix界面
& Z; N- U$ L4 H2 F. K2、编写、编译合约
. m; G! v1 \; _1 o7 X合约可根据个人喜好在Remix中编写,或者在本地的编辑器类似sublime中编写。8 U/ h+ J9 m% r, X  J9 O8 P" K9 W
我们编写一个简单的合约,对属性name和age进行存取。
& D4 C- V- R' jpragma lity ^1.2.4;% m1 B. Y3 ?% l
contract ContractTest{
' e, y9 f' ?* h" _/ @   
: R4 D" r% J( N) S# m5 `    string name;" @& T& a4 w2 [8 u* M0 K4 R" O
    uint age;! a; V$ i4 a4 B, `% l
   
2 @5 ?9 ~5 `5 y8 ~    function setInfo(string _name, uint _age) public {$ J1 }( c! N5 N: r: K, T. d
        name = _name;7 |( D* a3 M6 r; F. U
        age = _age;
7 H, y: ]7 F0 a    }" C: }, t+ Z. Y7 V$ ?& l. I
   
9 P9 d9 |+ s6 H" _1 |$ \  \    function getInfo() public constant returns (string, uint){
% {, H6 o3 ^" h$ k$ d% v0 `1 q        return (name, age);
0 \/ [% S. t1 L# Q& e    }: _. |( {  f  `9 ^
}
, J* J7 ]7 t  Y! @- ~将合约内容复制进Remix,点击右侧Start to complile,如果下方没有报错,说明编译通过。
5 \8 j. N0 W0 X- g  ~- o如果你想通过web3js进行部署,可以点击ABI和Bytecode按钮,获取需要的数据。* H! @' r1 {: h" k) t' R
点击Detail按钮,可以获得更多详细信息。3 W) K+ V5 C, R% B3 Y8 b5 C- l& E* z/ u

9 I* N. m0 B. Y3、MetaMask For CMT 简单使用: D; ]$ F3 Y0 X7 p9 ~# S% v" W
部署合约前,我们简单介绍一下MetaMask的使用,在安装完成后,chrome浏览器右上方就会出现相应的插件logo
: D- R/ x: V* [0 M+ \- s9 J! s
1 c6 F* g  }. u$ u; Q点击logo,将弹出操作界面,本次我们选择CMT Test Network测试网络进行。$ x0 V6 m  y: u

: s: ]) Z, Y, E, {+ ]新建账户中没有CMT余额,我们点击BUY按钮,进入界面后再点击TESTNET TEST FAUCET按钮,可以去申请一些测试用的CMT。* B2 c  Q% }) s% q
) S" V% V# u& H/ k8 D
(注意:如果本地还安装了原版的MetaMask,为了不影响下面的操作,请前往Chrome扩展程序管理中,禁用原版MetaMask)3 t5 O: W) C/ S. l  m! ]* l) s! J
1 p! A8 z# l) F
4、部署合约
- k$ q/ V( Y: b8 T合约编译通过之后,我们就要将合约部署到链上。& |8 \6 w3 t* h: i/ S+ ^8 C, H
点击右侧的run,进入部署控制界面
+ q: e2 e- U5 ]% o- R5 G4 v6 q
3 }$ Y3 q6 O7 M0 B6 p* Y3 M8 _( ^·Enviroment:3 T) N* ?8 ~3 R( x$ {: H4 i4 W; B4 i
这里有三种选择7 m8 c/ Y# q" G, e
6 x1 u3 `/ @# S, r. Y
JavaScript VM:合约部署到运行在浏览器内存中的虚拟网络,页面刷新的话数据将会被重置,并没有真正部署到任何链上。它会提供 5 个虚拟帐户每个有 100 CMT,可以随便选一个帐户,适用于本地调试。
# a( Z7 g! S2 `3 S" A' L, p, WInjected Web3:我们需要启动上一步的MetaMask For CMT,并创建一个账号。Remix会连接到MetaMask所选择的链上。
! e! @( K# v8 pWeb3 Provider:可以通过改选项,配置参数,使Remix连接到我们本地的私链或者其他链。
- s8 W. W1 r! I7 R8 H" m; I! @Account:对应链上的账号
$ [6 g7 X, w$ \$ S  eGas Limit:设置交易需要的gas费用,一般使用默认值无需修改$ ^9 C5 F! [1 k% W" t
Value:如果一项对合约的操作需要转cmt,则需要在这里设置cmt的数量; S6 ], I. ?! |( ^* k$ \2 D; j2 J
接下来我们执行部署操作7 ]! F& S+ X/ i( q' U
1.登录MetaMask For CMT,选择测试链,并申请一些测试CMT(详见第三步简单使用)0 i& D8 W5 ^. O. ]% q
2.Enviroment我们选择Injected Web3
  W1 H# ?8 O/ t3.点击部署按钮,弹出MetaMask确认框(如果没有弹出,可以手动点击插件logo),点击SUBMIT& }; [2 b- Q' G$ c' f, D" N8 h$ G
# R! i1 m% Q) J- ~2 c
4.等待交易被打包确认,成功后将会出现我们的部署好的合约,点击黑色小三角可以展开合约,可以看到就是我们在合约中定义的方法。- f2 N- @, y1 s* j3 k* x
( i9 }3 F/ c9 o; B2 n1 N. v
5.左边的控制台,我们也可以展开交易信息,查看此次交易的状态、transaction hash、gas费等等0 d, j9 P" a" }8 Q$ |; g% r/ |
$ n8 L2 Y4 d. I) J' Y: L
测试合约功能
8 J% V3 j$ h, z" {8 t# T合约部署成功了,我们来测试一下合约的功能
  v7 k: p8 A0 z1 f" D' h3 q1、设置name和age& O/ e5 N- n% s' m" s- {$ A
在合约下方的setInfo输入框中填写 “Li Lei”,18(注意:字符串要写引号,不然会报错),点击setInfo按钮,然后在MetaMask中submit该笔transaction,等待一会成功后,控制台将返回结果数据; a$ ?& `# f1 Y; w$ l  O
2 I& A+ K9 @8 M8 D/ G
2、你也可以点击setInfo输入框右侧的下拉三角,直接填写两个字段,这里字符串可以不需要引号
% A3 u& U" L+ ^" Q% Z( N
; x' h& B! x" H4 o* c" ?9 B& r2 c3.设置name和age成功后,我们来调用一下getInfo方法:
2 f! o7 g  n- v5 m* J! Q+ t4 f, l! y7 Q2 V" R
我们设置的内容就调用出来了。因为我们的查询操作不改变合约的状态,所以在调用getInfo方法的时候,不需要在MetaMask进行确认。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

Mohammad61417 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2