Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
使用CyberMiles Remix来部署你的第一个应用
- e. Q& u( M+ N8 b5 u) U准备工作7 S1 n" Q& E& D9 J
1、Lity或Solidity基础语法知识
2 T& T( M# w! _) vyberMiles主网完全兼容以太坊,在以太坊上运行的智能合约,理论上可以无缝对接到CyberMiles的主网上。所以在编写智能合约前,你需要了解Lity或者Solidity的基础语法, 查看solidity官方文档或这个网站:区块链技术,你可以学习一些基础语法的使用。
3 F+ ]% s7 A) G/ i4 I  p: \1 t+ `Lity官方文档:https://www.litylang.org
7 K  \) U. P# `2、IDE:Remix
$ w1 J! p6 T! A8 X$ ?- e每一种语言在有了一系列的编程规范以及一个IDE、外加一个优秀的编程开发人员将会变得very perfect!而对于我们本系列介绍的Lity或Solidity语言也自然有它的开发的IDE——Remix。CyberMiles在原有Remix的基础上又进行了兼容性改造,使得新的Remix更适应Lity的开。
+ P& Q! O, E6 l. n0 q% g/ d6 V! B在线地址:http://remix.cybermiles.io
5 W+ u! _( `$ o3、Chrome 及 MetaMask For CMT0 C. g' c3 z: E1 ^5 B
智能合约的开发,离不开与区块链的交互,通过MetaMask For CMT能够实现与CyberMiles主链或测试链的连接与调用。
# R2 w" t4 g* ], I$ gMetaMadk For CMT 是Chrome的一款插件,可以在CyberMiles官网进行下载 ,然后按照说明进行安装。https://www.cybermiles.io/metamask/?lang=zh-hans7 y5 Y. G- T3 I/ r2 J
使用Remix编写简单智能合约
' l+ n7 B0 ~1 H+ U, [: D( X1、Remix界面9 w' ^4 b% l6 C  s( i
2、编写、编译合约
4 B! g  m  l- E* O, D合约可根据个人喜好在Remix中编写,或者在本地的编辑器类似sublime中编写。+ L9 G4 ?* ]. S! i/ m( I, o7 \
我们编写一个简单的合约,对属性name和age进行存取。
8 J* K$ m$ }. Z# M# ^9 mpragma lity ^1.2.4;
8 L' [# q7 k; k' o* Xcontract ContractTest{1 k9 r( A6 ]2 p; f* |+ c
   
5 x* n4 g6 l; a$ z9 _    string name;" e# C+ l% n+ A: j5 \
    uint age;
" A" W+ k. R# ^" ?   
: Q. G/ }( w% E! D: ~) F# I5 Z6 o. Y    function setInfo(string _name, uint _age) public {
; h$ y+ U+ w, B        name = _name;
5 F2 H5 _* e* I$ H9 Y7 ^( y5 _+ ~  s9 O. m        age = _age;
# z0 V- E) w. a0 ?# W; _& Y  q    }
% }- R$ F: l, K: `( n; ]/ P; A   
! C& k- {6 @! t! q/ i5 G  \3 d    function getInfo() public constant returns (string, uint){
1 u: p8 e) g; q9 }  z9 a# G        return (name, age);
( s; B" N9 w2 Y% Z    }
( b# P4 |9 }" L( @# z$ b5 j}
2 _; B6 O  G& G将合约内容复制进Remix,点击右侧Start to complile,如果下方没有报错,说明编译通过。
2 p  J$ D+ M+ @! a: `# I( @& T0 k如果你想通过web3js进行部署,可以点击ABI和Bytecode按钮,获取需要的数据。
, ~7 @3 n7 x) M! G0 A点击Detail按钮,可以获得更多详细信息。2 U0 q) A1 C1 }) I3 n

) H& l; j! N2 z: G4 P3、MetaMask For CMT 简单使用
; H. W/ P9 }, }7 P# }0 a! k部署合约前,我们简单介绍一下MetaMask的使用,在安装完成后,chrome浏览器右上方就会出现相应的插件logo) T7 ~$ D; B, W
# I1 Y  i" F. E2 N
点击logo,将弹出操作界面,本次我们选择CMT Test Network测试网络进行。
7 K& t7 `5 t* c2 ~! F. O: T$ `4 e$ y0 |! W: x
新建账户中没有CMT余额,我们点击BUY按钮,进入界面后再点击TESTNET TEST FAUCET按钮,可以去申请一些测试用的CMT。
3 r' ?1 K' U( u: r& ?; |2 b1 J
6 x+ G6 C1 g, Q3 d6 x6 [(注意:如果本地还安装了原版的MetaMask,为了不影响下面的操作,请前往Chrome扩展程序管理中,禁用原版MetaMask)
* c9 K* i7 j  S! p+ X

0 [  x. l- r& _0 {& V2 t) J4、部署合约' F" J" @5 V) R4 v6 ~( V5 d8 a  G
合约编译通过之后,我们就要将合约部署到链上。, d& ]! L, f: v' r
点击右侧的run,进入部署控制界面
9 \; `) Y, @2 ~2 Y- Y% X0 J
5 E, p& a7 i3 }6 a  \& r·Enviroment:
5 U% e$ Z) K+ r+ d: c5 v5 s这里有三种选择
; Y# ]5 e- c) I. Q# U( `  |. @! [  `' `% ]
JavaScript VM:合约部署到运行在浏览器内存中的虚拟网络,页面刷新的话数据将会被重置,并没有真正部署到任何链上。它会提供 5 个虚拟帐户每个有 100 CMT,可以随便选一个帐户,适用于本地调试。
/ Y: i! k# F1 e7 q- ?Injected Web3:我们需要启动上一步的MetaMask For CMT,并创建一个账号。Remix会连接到MetaMask所选择的链上。
, h! N1 X- l4 ]) [4 @; C" g* JWeb3 Provider:可以通过改选项,配置参数,使Remix连接到我们本地的私链或者其他链。: U0 V4 s7 Q# G
Account:对应链上的账号  t& e: Z( ]: b
Gas Limit:设置交易需要的gas费用,一般使用默认值无需修改! m$ ^$ y- n8 e! e# {
Value:如果一项对合约的操作需要转cmt,则需要在这里设置cmt的数量5 g; e6 U/ h: s( m9 f8 Y9 Q
接下来我们执行部署操作" E1 p- u  L" [# I
1.登录MetaMask For CMT,选择测试链,并申请一些测试CMT(详见第三步简单使用)
# [- o) |' X2 n% }& b& X3 o3 e5 r2.Enviroment我们选择Injected Web3" i! j0 ~" q# D7 h) i
3.点击部署按钮,弹出MetaMask确认框(如果没有弹出,可以手动点击插件logo),点击SUBMIT
0 Q: j& X% E# n1 ^  K' H$ M  z# ?2 _  [' W
4.等待交易被打包确认,成功后将会出现我们的部署好的合约,点击黑色小三角可以展开合约,可以看到就是我们在合约中定义的方法。9 r4 C/ V" u, Q8 @

; _0 h8 q( P5 }% t$ H5.左边的控制台,我们也可以展开交易信息,查看此次交易的状态、transaction hash、gas费等等( O4 {. g7 w6 k: V
$ G- M; q6 a' @8 q2 _
测试合约功能
9 }8 }0 h: g' d8 s) t5 j合约部署成功了,我们来测试一下合约的功能7 S/ E- r. m8 ?3 Q1 r" A( V9 C
1、设置name和age
! U* u# \1 D- f; Q在合约下方的setInfo输入框中填写 “Li Lei”,18(注意:字符串要写引号,不然会报错),点击setInfo按钮,然后在MetaMask中submit该笔transaction,等待一会成功后,控制台将返回结果数据
( A% S2 j, S9 ?7 T) ~  C2 q) G, g1 m$ q; C4 N) V/ M5 c
2、你也可以点击setInfo输入框右侧的下拉三角,直接填写两个字段,这里字符串可以不需要引号
/ O* Z1 }& @! u7 i
6 c) {8 h  e0 J' H* g% x8 @3.设置name和age成功后,我们来调用一下getInfo方法:8 T( l  D0 @* h2 J
: G- O9 F' i, A* U0 [$ ]
我们设置的内容就调用出来了。因为我们的查询操作不改变合约的状态,所以在调用getInfo方法的时候,不需要在MetaMask进行确认。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

Mohammad61417 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2