Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
使用CyberMiles Remix来部署你的第一个应用) U+ E: ]9 V& u3 r# D! s( @- n
准备工作- i- L* j) e- Z5 I2 u  B
1、Lity或Solidity基础语法知识
- r" J5 F# q" W7 a, |. FyberMiles主网完全兼容以太坊,在以太坊上运行的智能合约,理论上可以无缝对接到CyberMiles的主网上。所以在编写智能合约前,你需要了解Lity或者Solidity的基础语法, 查看solidity官方文档或这个网站:区块链技术,你可以学习一些基础语法的使用。( ^! ?" o( q. E& T
Lity官方文档:https://www.litylang.org# O) v1 m, _; ~- D3 s
2、IDE:Remix
& {# z! \: r/ f每一种语言在有了一系列的编程规范以及一个IDE、外加一个优秀的编程开发人员将会变得very perfect!而对于我们本系列介绍的Lity或Solidity语言也自然有它的开发的IDE——Remix。CyberMiles在原有Remix的基础上又进行了兼容性改造,使得新的Remix更适应Lity的开。: Z5 j/ h& @7 h9 _; x4 u
在线地址:http://remix.cybermiles.io
. H& t/ [0 x7 r5 ~3、Chrome 及 MetaMask For CMT
8 A' \- W  S: j0 p4 }智能合约的开发,离不开与区块链的交互,通过MetaMask For CMT能够实现与CyberMiles主链或测试链的连接与调用。; ?$ w4 H( s4 ^- s
MetaMadk For CMT 是Chrome的一款插件,可以在CyberMiles官网进行下载 ,然后按照说明进行安装。https://www.cybermiles.io/metamask/?lang=zh-hans
. z+ N7 S" h' c% u+ h7 O) B7 Q使用Remix编写简单智能合约
9 F! Q( Y. T8 ]% H+ b1、Remix界面
1 ^: J( d4 K9 a1 r- Q+ x2、编写、编译合约
3 i  P2 S) ?  o: `/ n7 D" j* Z合约可根据个人喜好在Remix中编写,或者在本地的编辑器类似sublime中编写。. h, `( w1 L3 ~" i- X) t( }
我们编写一个简单的合约,对属性name和age进行存取。9 p7 ^  ]/ o, i6 i- e0 T6 e! l5 P3 d
pragma lity ^1.2.4;, y5 E, K/ [7 j4 I
contract ContractTest{+ w  u9 L; X6 n' y+ L/ D
    4 z! L5 T  E% z6 `' i9 E3 Z
    string name;& R, Z  u# w! b$ `. W0 |
    uint age;% R: w0 k( _5 O) w/ |: b' V- l
   
9 ]4 H, T- W# ~% ?; R4 _    function setInfo(string _name, uint _age) public {
; {; L9 @% k1 a# I! \+ k: R4 t        name = _name;8 T) F0 `6 Z) P' n9 t, v5 Z; ?
        age = _age;7 ?7 T$ S8 i2 T- t% m% c
    }
6 O+ {+ K+ d4 o7 p$ ]8 h3 U9 _( C- k- i   
5 j1 d% n0 O: O- I% x8 K    function getInfo() public constant returns (string, uint){  w4 Z4 n. N4 g' X9 R. Y! ?# B
        return (name, age);
- E6 A, T' S4 ]9 \: S  ~" z& j, p    }
- F0 l7 ], A* ~1 j}
' O* V' h! J# o6 [6 `3 K将合约内容复制进Remix,点击右侧Start to complile,如果下方没有报错,说明编译通过。
& a% q7 j- a6 E0 }) V" W5 F  r如果你想通过web3js进行部署,可以点击ABI和Bytecode按钮,获取需要的数据。
' g3 j* @4 f# t* A& _( S点击Detail按钮,可以获得更多详细信息。
* C4 ~5 S! n; q( l; ^' D4 m) m; m, D7 g
3、MetaMask For CMT 简单使用; ?2 z2 A. [: u3 {, M! F
部署合约前,我们简单介绍一下MetaMask的使用,在安装完成后,chrome浏览器右上方就会出现相应的插件logo# N7 r& t/ W6 v3 p* ^! ]
3 G9 Z7 `0 R7 m* l; i1 @$ B
点击logo,将弹出操作界面,本次我们选择CMT Test Network测试网络进行。& t" ~4 L* b+ \* f

3 f' l, @  A, u2 p4 ]新建账户中没有CMT余额,我们点击BUY按钮,进入界面后再点击TESTNET TEST FAUCET按钮,可以去申请一些测试用的CMT。8 a$ f+ C9 T% b) F3 S7 f/ E
& Q2 }3 U# t. b9 |) ]0 n' S
(注意:如果本地还安装了原版的MetaMask,为了不影响下面的操作,请前往Chrome扩展程序管理中,禁用原版MetaMask)
* m* X7 H2 Y* ^* h2 g0 t* \

  I' E- ]' m  W4、部署合约7 c8 b* l1 Z) m7 U1 u5 Z$ ~9 F3 Z
合约编译通过之后,我们就要将合约部署到链上。$ r- W# Y# i2 ^5 H, e" @. O! J- u
点击右侧的run,进入部署控制界面% b7 q: e! o* O. z

' p6 q* a2 w- B·Enviroment:
/ B0 b, j6 @; n这里有三种选择
4 [( K8 \8 ?4 }% Z/ B4 T6 P2 X) {
; d" E% d. m' f; [- V+ c' FJavaScript VM:合约部署到运行在浏览器内存中的虚拟网络,页面刷新的话数据将会被重置,并没有真正部署到任何链上。它会提供 5 个虚拟帐户每个有 100 CMT,可以随便选一个帐户,适用于本地调试。
" r) L2 u  p' k9 J; p! x- g: JInjected Web3:我们需要启动上一步的MetaMask For CMT,并创建一个账号。Remix会连接到MetaMask所选择的链上。
- ~5 N2 M9 T# `! lWeb3 Provider:可以通过改选项,配置参数,使Remix连接到我们本地的私链或者其他链。* I! p3 A7 t1 P
Account:对应链上的账号
! [: o* V3 e  {: N; OGas Limit:设置交易需要的gas费用,一般使用默认值无需修改
+ \! v1 j; @# m' p5 D. R8 H* @Value:如果一项对合约的操作需要转cmt,则需要在这里设置cmt的数量
1 s/ h5 K; m; p8 H) n接下来我们执行部署操作
  ~! i' |6 s3 Y" R3 t, g8 ]1.登录MetaMask For CMT,选择测试链,并申请一些测试CMT(详见第三步简单使用)6 C( b+ n9 B4 s: U
2.Enviroment我们选择Injected Web3) A& g: v: S2 k* H4 p
3.点击部署按钮,弹出MetaMask确认框(如果没有弹出,可以手动点击插件logo),点击SUBMIT
1 [# }* U- o4 g- |8 t" c# K2 M. ^
1 `& M7 e' m+ `# O$ Y4.等待交易被打包确认,成功后将会出现我们的部署好的合约,点击黑色小三角可以展开合约,可以看到就是我们在合约中定义的方法。
- }* t2 Y: |+ ]7 N
6 d8 n9 h/ F. ]3 v3 r* W2 ]5.左边的控制台,我们也可以展开交易信息,查看此次交易的状态、transaction hash、gas费等等
* H# m0 o" t$ D# [7 U9 R; ~; a( Q0 t4 G0 t$ G1 |
测试合约功能$ H- s5 m# r- q7 w
合约部署成功了,我们来测试一下合约的功能# V( o8 @% R$ ^9 ^5 X
1、设置name和age- ]8 @8 G& t! S, W3 P6 C) f
在合约下方的setInfo输入框中填写 “Li Lei”,18(注意:字符串要写引号,不然会报错),点击setInfo按钮,然后在MetaMask中submit该笔transaction,等待一会成功后,控制台将返回结果数据
3 b% c- J$ e: K9 m6 Z$ K' i0 ~; i% t( K$ R7 f" g- h- n
2、你也可以点击setInfo输入框右侧的下拉三角,直接填写两个字段,这里字符串可以不需要引号0 R2 p$ h. Y) E; p
: t6 j; k  V, R
3.设置name和age成功后,我们来调用一下getInfo方法:0 M; h5 z/ e0 ~$ `; T0 }
; V+ J0 h/ A( H$ }% `' C  O
我们设置的内容就调用出来了。因为我们的查询操作不改变合约的状态,所以在调用getInfo方法的时候,不需要在MetaMask进行确认。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

Mohammad61417 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2