Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
使用CyberMiles Remix来部署你的第一个应用
0 E! Y* c: j1 V2 I2 J. t( R准备工作- E& r) F' W4 {+ `
1、Lity或Solidity基础语法知识
; `$ W4 `9 e. ~2 UyberMiles主网完全兼容以太坊,在以太坊上运行的智能合约,理论上可以无缝对接到CyberMiles的主网上。所以在编写智能合约前,你需要了解Lity或者Solidity的基础语法, 查看solidity官方文档或这个网站:区块链技术,你可以学习一些基础语法的使用。$ _  z& ]  t% f: z
Lity官方文档:https://www.litylang.org
7 A1 D; Q2 [8 {5 \2 b2、IDE:Remix1 E1 o$ C9 T3 D' y& E$ v5 U
每一种语言在有了一系列的编程规范以及一个IDE、外加一个优秀的编程开发人员将会变得very perfect!而对于我们本系列介绍的Lity或Solidity语言也自然有它的开发的IDE——Remix。CyberMiles在原有Remix的基础上又进行了兼容性改造,使得新的Remix更适应Lity的开。
' J+ g1 K" A8 R7 {3 t在线地址:http://remix.cybermiles.io. k5 c, }% d% |2 k4 d2 V! T' s2 h
3、Chrome 及 MetaMask For CMT4 S* E; Z1 _* p  N! n
智能合约的开发,离不开与区块链的交互,通过MetaMask For CMT能够实现与CyberMiles主链或测试链的连接与调用。/ p: o: x( o. z3 @0 s& `, G
MetaMadk For CMT 是Chrome的一款插件,可以在CyberMiles官网进行下载 ,然后按照说明进行安装。https://www.cybermiles.io/metamask/?lang=zh-hans; {2 J7 d5 |/ G; s8 f& P4 I$ Z& Y, t
使用Remix编写简单智能合约
7 z6 Z; x: p/ C! \1、Remix界面- G8 _( U( {* g; |: H' |1 o
2、编写、编译合约: z' _4 a% ~; M0 ~& d3 |1 q
合约可根据个人喜好在Remix中编写,或者在本地的编辑器类似sublime中编写。# A: ^  z$ C+ B1 F
我们编写一个简单的合约,对属性name和age进行存取。
' j( v& O2 n$ H8 r3 \pragma lity ^1.2.4;% @9 w* B0 o) b% w2 l
contract ContractTest{
4 U4 p7 ^* A* u# v/ t    # w0 B  y8 K' Y. @* T+ q7 H
    string name;, G; I: F, f3 ~
    uint age;
3 `5 x, N" e, Z8 X" ~0 g3 A! Z    / J- k1 }/ ]0 ^1 l  h- p( v
    function setInfo(string _name, uint _age) public {
) f  k6 \' O, G9 ]4 |$ j: v3 U        name = _name;
; O  d& m/ u( V        age = _age;: v% N' J4 x/ g. S7 O* v
    }
& R: T+ i- ~; y3 t1 U% F8 Z   
) L. E. ]" I$ c" f+ L( ~" A    function getInfo() public constant returns (string, uint){
0 Z  q; S# a! j- F& G1 D( w: l        return (name, age);; n0 k- n; I0 t3 v6 {
    }/ v& Y$ L( L4 R* j# P# y
}- g; [/ R  \4 E& B" `1 U9 x% m
将合约内容复制进Remix,点击右侧Start to complile,如果下方没有报错,说明编译通过。( n7 f# f* v9 N/ J8 a2 n9 ^* H
如果你想通过web3js进行部署,可以点击ABI和Bytecode按钮,获取需要的数据。
# ?' @% s0 N: W# E2 p9 B, f8 ~4 `+ D; T点击Detail按钮,可以获得更多详细信息。
. w$ u1 @1 k! p! T
" F9 c" P' A' y  P3、MetaMask For CMT 简单使用
$ q% Z+ o; v) @0 O; c部署合约前,我们简单介绍一下MetaMask的使用,在安装完成后,chrome浏览器右上方就会出现相应的插件logo
! B& A; B& }; l$ I3 ~$ q; Q: [! ?* ~: K& z* M
点击logo,将弹出操作界面,本次我们选择CMT Test Network测试网络进行。
1 N& j, ^" d$ J5 G* K, t/ d% n
2 a5 n- _  C$ W/ x. \新建账户中没有CMT余额,我们点击BUY按钮,进入界面后再点击TESTNET TEST FAUCET按钮,可以去申请一些测试用的CMT。4 }' K3 `3 a. p2 T% _6 a% p

9 p& y- I3 x, K9 Q- }$ {3 ^(注意:如果本地还安装了原版的MetaMask,为了不影响下面的操作,请前往Chrome扩展程序管理中,禁用原版MetaMask)- @8 k( ?9 g3 T$ o& A7 I

" |9 T4 C$ L5 Q( K4、部署合约
$ R7 C3 n; @# k8 [合约编译通过之后,我们就要将合约部署到链上。
+ V% l! d# n: k& h2 r点击右侧的run,进入部署控制界面
- S. r5 m  e( E+ ?: m3 z4 @/ {( ~: k- V$ ~# _8 y  f
·Enviroment:
8 S" X6 p  |" U, a& \这里有三种选择
" H0 L; a! {% Q2 K+ K* `) P, h
JavaScript VM:合约部署到运行在浏览器内存中的虚拟网络,页面刷新的话数据将会被重置,并没有真正部署到任何链上。它会提供 5 个虚拟帐户每个有 100 CMT,可以随便选一个帐户,适用于本地调试。/ W* {* A6 |- D
Injected Web3:我们需要启动上一步的MetaMask For CMT,并创建一个账号。Remix会连接到MetaMask所选择的链上。
+ @) y# v. J9 c1 e9 R% V+ A+ u" oWeb3 Provider:可以通过改选项,配置参数,使Remix连接到我们本地的私链或者其他链。
1 @4 c! B. Z  o0 u/ `Account:对应链上的账号
- B4 U* n3 s3 D, I( I  |Gas Limit:设置交易需要的gas费用,一般使用默认值无需修改& k7 P7 p' _% g5 t
Value:如果一项对合约的操作需要转cmt,则需要在这里设置cmt的数量  T  E* D& f, Q% ~/ N% c
接下来我们执行部署操作
% N" m" q, x6 z/ N+ F7 o. _$ d/ s1.登录MetaMask For CMT,选择测试链,并申请一些测试CMT(详见第三步简单使用)
; j6 p  {# I* w5 K# N9 @8 Z2.Enviroment我们选择Injected Web3
) K( R% h6 b: z" [: t. k0 h6 z2 [/ u3.点击部署按钮,弹出MetaMask确认框(如果没有弹出,可以手动点击插件logo),点击SUBMIT+ K% w0 x  Z5 |1 d0 j

, v( Q, K% D3 E; Z4 _7 y4.等待交易被打包确认,成功后将会出现我们的部署好的合约,点击黑色小三角可以展开合约,可以看到就是我们在合约中定义的方法。
% K7 Z3 Z, O' N5 D# U" \0 ^: G% H2 Y$ E" }7 }2 A. `. p' ]. g" W# H
5.左边的控制台,我们也可以展开交易信息,查看此次交易的状态、transaction hash、gas费等等0 V2 {2 i0 h. C: X/ @# \/ `

9 s# j! x" \( \, ]测试合约功能; Z8 |& @. m6 j0 o# e8 Y- \  j
合约部署成功了,我们来测试一下合约的功能1 }3 P6 I$ N: J' I% w; o9 q
1、设置name和age; ]% k5 K$ z& k( B! S
在合约下方的setInfo输入框中填写 “Li Lei”,18(注意:字符串要写引号,不然会报错),点击setInfo按钮,然后在MetaMask中submit该笔transaction,等待一会成功后,控制台将返回结果数据
6 T; _! @  Z! j1 m
3 w+ G- r& ^% i8 F2、你也可以点击setInfo输入框右侧的下拉三角,直接填写两个字段,这里字符串可以不需要引号
# W/ Q! `" @$ c- u6 M8 `( P, b$ O$ E1 F- h' w
3.设置name和age成功后,我们来调用一下getInfo方法:
( X( N7 e" x8 J$ R9 Y
1 _0 `0 D$ w) ?7 d我们设置的内容就调用出来了。因为我们的查询操作不改变合约的状态,所以在调用getInfo方法的时候,不需要在MetaMask进行确认。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

Mohammad61417 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2