Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
使用CyberMiles Remix来部署你的第一个应用+ {5 h5 p/ ]+ w5 i9 f1 d: L
准备工作
9 F$ l: |  X. _& K  q7 s1、Lity或Solidity基础语法知识
4 `% g# J& I  k" ?" E. LyberMiles主网完全兼容以太坊,在以太坊上运行的智能合约,理论上可以无缝对接到CyberMiles的主网上。所以在编写智能合约前,你需要了解Lity或者Solidity的基础语法, 查看solidity官方文档或这个网站:区块链技术,你可以学习一些基础语法的使用。
# ~: Y2 D0 F$ y# ZLity官方文档:https://www.litylang.org& |0 c- v4 q: J9 L* n/ I0 Q
2、IDE:Remix
' o  E! P+ {: [每一种语言在有了一系列的编程规范以及一个IDE、外加一个优秀的编程开发人员将会变得very perfect!而对于我们本系列介绍的Lity或Solidity语言也自然有它的开发的IDE——Remix。CyberMiles在原有Remix的基础上又进行了兼容性改造,使得新的Remix更适应Lity的开。% Y1 w% q0 V" w+ W
在线地址:http://remix.cybermiles.io
+ y% E! A- B- q, \2 Y3、Chrome 及 MetaMask For CMT0 Z/ X: Z+ j0 s+ V3 o1 y: {
智能合约的开发,离不开与区块链的交互,通过MetaMask For CMT能够实现与CyberMiles主链或测试链的连接与调用。
4 r, ~! m% s, j. q* d4 P3 ~MetaMadk For CMT 是Chrome的一款插件,可以在CyberMiles官网进行下载 ,然后按照说明进行安装。https://www.cybermiles.io/metamask/?lang=zh-hans8 w9 X3 [7 }$ ]" r) g
使用Remix编写简单智能合约
2 j" v4 b9 ?  A3 f- i$ L  A1、Remix界面: `' s5 d/ h$ `- G
2、编写、编译合约4 L" ?, s6 R- y7 C. |" M
合约可根据个人喜好在Remix中编写,或者在本地的编辑器类似sublime中编写。
. {4 ?$ D+ j8 H! s$ `我们编写一个简单的合约,对属性name和age进行存取。+ D* B  W8 I: {/ M$ V# H8 j- R
pragma lity ^1.2.4;
$ U& M  W3 m3 n  O4 }: D  ncontract ContractTest{. H* C" q. ^/ i4 _# q: T6 F$ o
   
6 t; M5 J# \; `% o; M7 a    string name;
' |" Q  s% x/ R  E% M    uint age;
9 }$ m1 U" S0 ^   
, d7 H0 n6 D# B- S' O( m& B    function setInfo(string _name, uint _age) public {" j$ w& A$ d( {( p
        name = _name;: c+ I% L4 h1 V) I% t
        age = _age;
# A/ [* O% P! O4 B5 x0 V    }9 C( O3 _6 a. V" M
    6 y) d# t( X& Z) p
    function getInfo() public constant returns (string, uint){
+ ^, T7 a/ G% F7 Y+ V( e# s        return (name, age);
  ^% m+ r- \% [# u2 ]$ K& Y. _    }
9 r/ N$ w  i9 ?6 @0 L3 o/ j5 G1 e% x}9 }7 x; N& X4 ^+ `; f  H: ]1 T
将合约内容复制进Remix,点击右侧Start to complile,如果下方没有报错,说明编译通过。7 n1 d; }& _  Z0 T- b
如果你想通过web3js进行部署,可以点击ABI和Bytecode按钮,获取需要的数据。
' Q8 H6 R0 v) L8 j) T  N点击Detail按钮,可以获得更多详细信息。
- T7 K1 n( Z2 ~1 q: J7 Y* p9 n6 Y  X7 o) \/ R) z" P# x3 Q
3、MetaMask For CMT 简单使用
9 A/ X) C0 @2 d3 W' D9 E部署合约前,我们简单介绍一下MetaMask的使用,在安装完成后,chrome浏览器右上方就会出现相应的插件logo
+ `3 V  n3 |4 _4 ]5 `: m* d5 ^# j% s* l/ K8 _0 ]9 ~  t% Y/ q
点击logo,将弹出操作界面,本次我们选择CMT Test Network测试网络进行。
' B4 e7 I% u: o4 i8 o; l5 h* q: E$ D  B$ D! g! A
新建账户中没有CMT余额,我们点击BUY按钮,进入界面后再点击TESTNET TEST FAUCET按钮,可以去申请一些测试用的CMT。, H4 [# S' b6 w+ d! s

0 L! T- X; S) T1 @5 d(注意:如果本地还安装了原版的MetaMask,为了不影响下面的操作,请前往Chrome扩展程序管理中,禁用原版MetaMask)
% d1 l1 W) R0 O. k0 E/ e) Q% v
3 }: p4 |& o' v# D6 C
4、部署合约+ X! V9 B! V& O3 T: J2 ~" B
合约编译通过之后,我们就要将合约部署到链上。% m/ K6 J# l1 R2 y  _
点击右侧的run,进入部署控制界面3 x( Y2 Q9 ]8 T" s( K. n
2 J) Y5 p; Q. |/ _- e( K% k
·Enviroment:
$ p8 H( |3 U% E2 w4 ?) w0 i: o& v这里有三种选择0 _1 b6 \) n3 k/ Z

- Y: p/ I! H) e) SJavaScript VM:合约部署到运行在浏览器内存中的虚拟网络,页面刷新的话数据将会被重置,并没有真正部署到任何链上。它会提供 5 个虚拟帐户每个有 100 CMT,可以随便选一个帐户,适用于本地调试。% x# [$ a! E- q* i
Injected Web3:我们需要启动上一步的MetaMask For CMT,并创建一个账号。Remix会连接到MetaMask所选择的链上。7 P: D# c: N  H0 O$ E5 S
Web3 Provider:可以通过改选项,配置参数,使Remix连接到我们本地的私链或者其他链。1 O0 D0 [" n' E4 t2 f
Account:对应链上的账号
# U- F& q" H1 SGas Limit:设置交易需要的gas费用,一般使用默认值无需修改+ M& u( \& i+ V+ x" X' N& |
Value:如果一项对合约的操作需要转cmt,则需要在这里设置cmt的数量) w* |4 b" O+ X0 l7 o+ A6 ]2 @
接下来我们执行部署操作& V$ P& b* o/ H; n( L
1.登录MetaMask For CMT,选择测试链,并申请一些测试CMT(详见第三步简单使用)
3 H1 j  w6 a" t# U* J$ [2.Enviroment我们选择Injected Web3+ h+ c# g2 F4 J' d/ S+ U- c
3.点击部署按钮,弹出MetaMask确认框(如果没有弹出,可以手动点击插件logo),点击SUBMIT
" z. V# w  S. z+ l2 k
4 j9 P; a0 {: a, A4.等待交易被打包确认,成功后将会出现我们的部署好的合约,点击黑色小三角可以展开合约,可以看到就是我们在合约中定义的方法。
% u$ h" p+ L  d. W. \$ ^2 \+ D8 ~
5.左边的控制台,我们也可以展开交易信息,查看此次交易的状态、transaction hash、gas费等等
8 n. q/ g% }% l0 ?/ }& N8 l
% _" L" t. n2 `- P  T2 y/ i测试合约功能
1 G% T  n3 F$ R# S8 b合约部署成功了,我们来测试一下合约的功能
; r( Y, W9 u  L* }' [  u  T1、设置name和age
$ p& x0 u& z5 g6 _在合约下方的setInfo输入框中填写 “Li Lei”,18(注意:字符串要写引号,不然会报错),点击setInfo按钮,然后在MetaMask中submit该笔transaction,等待一会成功后,控制台将返回结果数据3 |& v" T+ O- S$ Q" V4 e8 {6 o
2 p. i; n8 ~7 o$ u. K
2、你也可以点击setInfo输入框右侧的下拉三角,直接填写两个字段,这里字符串可以不需要引号
9 T/ p9 s. _2 R; {; H9 }% O7 u" A1 `  e& T3 y" M
3.设置name和age成功后,我们来调用一下getInfo方法:
  a: x+ }- O3 O$ U- R  y. Y+ ]% c" d: y0 m. Y) X8 d
我们设置的内容就调用出来了。因为我们的查询操作不改变合约的状态,所以在调用getInfo方法的时候,不需要在MetaMask进行确认。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

Mohammad61417 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2