Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
使用CyberMiles Remix来部署你的第一个应用+ ]; b% [' o' o5 T0 d9 I6 j1 u
准备工作
( f. r2 z% h% x, U7 _/ \1、Lity或Solidity基础语法知识
* h0 V$ c0 ~5 n; [0 J: }0 B* WyberMiles主网完全兼容以太坊,在以太坊上运行的智能合约,理论上可以无缝对接到CyberMiles的主网上。所以在编写智能合约前,你需要了解Lity或者Solidity的基础语法, 查看solidity官方文档或这个网站:区块链技术,你可以学习一些基础语法的使用。3 L% ?9 V' w% O
Lity官方文档:https://www.litylang.org8 S) x" Z" w, q7 i
2、IDE:Remix
' W4 x  {2 s, Y2 S; n# M5 i" r每一种语言在有了一系列的编程规范以及一个IDE、外加一个优秀的编程开发人员将会变得very perfect!而对于我们本系列介绍的Lity或Solidity语言也自然有它的开发的IDE——Remix。CyberMiles在原有Remix的基础上又进行了兼容性改造,使得新的Remix更适应Lity的开。
, m' f9 c' q# A9 h+ ^7 p; r在线地址:http://remix.cybermiles.io, X6 J! A8 _& g$ f: D" ]
3、Chrome 及 MetaMask For CMT
" N+ r8 L$ z$ b" g( Z1 H4 K8 Y; E# p智能合约的开发,离不开与区块链的交互,通过MetaMask For CMT能够实现与CyberMiles主链或测试链的连接与调用。
6 C' K: w) _8 ]! w% p: KMetaMadk For CMT 是Chrome的一款插件,可以在CyberMiles官网进行下载 ,然后按照说明进行安装。https://www.cybermiles.io/metamask/?lang=zh-hans
9 J" {3 [8 E! }& D) C( V使用Remix编写简单智能合约8 [, A9 q& M! I+ ~# j$ V
1、Remix界面/ s+ S5 c7 W. _+ [% m7 U
2、编写、编译合约
; Q5 x$ \6 Y7 a; P2 Q+ K4 @- U合约可根据个人喜好在Remix中编写,或者在本地的编辑器类似sublime中编写。9 h' Q8 q! s; s
我们编写一个简单的合约,对属性name和age进行存取。: R2 u3 T, H! s& }! q
pragma lity ^1.2.4;4 t4 \* R0 T8 p
contract ContractTest{
0 L' f5 b0 e4 _+ p* e   
* j. |& ^! c5 d    string name;
  ^8 @7 E% `/ q    uint age;
; r2 C( n# J# m& v$ q   
0 E% `8 A- f# y$ N* r3 A# b6 A    function setInfo(string _name, uint _age) public {6 d- i! u7 _; u9 d; n
        name = _name;
/ f$ J$ I: j* H0 x2 e2 p        age = _age;
$ `, o' ^$ N3 i+ M9 F. f    }$ Q8 P6 n' [( R, h) l$ J1 D
    : B0 O. [6 M1 H
    function getInfo() public constant returns (string, uint){
& j% r+ x0 e) j- D) G3 A. D) N        return (name, age);$ S8 _1 F0 \5 W8 z2 X7 d
    }
  U; q6 \: P9 E}
# [; r' E$ A, e2 [5 N将合约内容复制进Remix,点击右侧Start to complile,如果下方没有报错,说明编译通过。# ?7 H/ O/ V* k* l
如果你想通过web3js进行部署,可以点击ABI和Bytecode按钮,获取需要的数据。
6 o! W: r* v) p, l  O; V: Y' \点击Detail按钮,可以获得更多详细信息。
) B: O$ [. R3 i" R7 c7 ^% ?  n, _; N$ }3 A- m) Y& U% V, k
3、MetaMask For CMT 简单使用6 F2 z$ X" a6 \* @7 M
部署合约前,我们简单介绍一下MetaMask的使用,在安装完成后,chrome浏览器右上方就会出现相应的插件logo
  b0 z. l! W# N" ^1 F8 i" ~
1 E5 a! E- S# `- T点击logo,将弹出操作界面,本次我们选择CMT Test Network测试网络进行。! T, K2 V7 V1 q1 _8 ~
% w. L. S- E0 s' z3 o% p+ O% I+ n  H
新建账户中没有CMT余额,我们点击BUY按钮,进入界面后再点击TESTNET TEST FAUCET按钮,可以去申请一些测试用的CMT。6 S" I5 i& t  y3 T( h' R
$ x9 U7 m  s3 y3 w6 T
(注意:如果本地还安装了原版的MetaMask,为了不影响下面的操作,请前往Chrome扩展程序管理中,禁用原版MetaMask)/ G; s; h$ v. d2 W2 G

; x) T  |* g2 ]) i1 ?0 Y' U  d+ Z: n4、部署合约
# ^( p% x8 {& l0 G& p合约编译通过之后,我们就要将合约部署到链上。( J8 q8 j. k' B0 G6 \
点击右侧的run,进入部署控制界面6 H  `+ F0 R. G  S- g- n, u
$ D& T" f/ y, J9 O9 k9 q
·Enviroment:
0 T, o! U$ r& t  X这里有三种选择/ `* K9 \2 S3 k( R6 ~
, e+ C" Y) |# o  z% X
JavaScript VM:合约部署到运行在浏览器内存中的虚拟网络,页面刷新的话数据将会被重置,并没有真正部署到任何链上。它会提供 5 个虚拟帐户每个有 100 CMT,可以随便选一个帐户,适用于本地调试。
' K! P" u; j& C0 ^1 iInjected Web3:我们需要启动上一步的MetaMask For CMT,并创建一个账号。Remix会连接到MetaMask所选择的链上。
1 k$ @; q) R4 k8 ^/ M5 z/ T$ Y9 c0 C3 `Web3 Provider:可以通过改选项,配置参数,使Remix连接到我们本地的私链或者其他链。
9 L( P* O- X3 N# o( YAccount:对应链上的账号
) g2 o( E% j+ d8 _! n$ E6 HGas Limit:设置交易需要的gas费用,一般使用默认值无需修改
( G! X: x* F- C) SValue:如果一项对合约的操作需要转cmt,则需要在这里设置cmt的数量
( F1 }3 p! ]6 g% f9 N+ l- r( k: ^2 Z接下来我们执行部署操作
4 E: w0 w- V7 E7 u) X" [3 W, Z/ ^1.登录MetaMask For CMT,选择测试链,并申请一些测试CMT(详见第三步简单使用)0 o6 k- I% U) a
2.Enviroment我们选择Injected Web3/ @4 s: s  c! N
3.点击部署按钮,弹出MetaMask确认框(如果没有弹出,可以手动点击插件logo),点击SUBMIT' ?2 N. \8 b+ K0 L" M' Y/ d

  }% U9 z! y) u# B# O  I. {4.等待交易被打包确认,成功后将会出现我们的部署好的合约,点击黑色小三角可以展开合约,可以看到就是我们在合约中定义的方法。
- ^& x7 y- [' F- T% k4 \7 d. e6 c' d$ v
5.左边的控制台,我们也可以展开交易信息,查看此次交易的状态、transaction hash、gas费等等
$ z8 E& [, }% n0 u! D4 C; ?) @: f
测试合约功能" W7 {  n  g, t9 N, |5 Y% l+ y
合约部署成功了,我们来测试一下合约的功能
! R& w% w6 w9 D5 m! H5 {9 y1、设置name和age
' ^& N# w! E7 B" Y+ M在合约下方的setInfo输入框中填写 “Li Lei”,18(注意:字符串要写引号,不然会报错),点击setInfo按钮,然后在MetaMask中submit该笔transaction,等待一会成功后,控制台将返回结果数据
, {. B" A" {) b" c! _. R& @$ X% f
2、你也可以点击setInfo输入框右侧的下拉三角,直接填写两个字段,这里字符串可以不需要引号
. |+ V; y. ?# P5 {9 z5 g9 ]/ U( C! Y- e% }
3.设置name和age成功后,我们来调用一下getInfo方法:& w& ~1 e; w* @/ Q/ Q

1 X4 Y# W* ]0 L' W1 a我们设置的内容就调用出来了。因为我们的查询操作不改变合约的状态,所以在调用getInfo方法的时候,不需要在MetaMask进行确认。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

Mohammad61417 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2