Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
使用CyberMiles Remix来部署你的第一个应用# k! K* C( p/ ^
准备工作
: O# J6 i/ N+ A1、Lity或Solidity基础语法知识: c3 I$ g. U3 F1 }, x# d
yberMiles主网完全兼容以太坊,在以太坊上运行的智能合约,理论上可以无缝对接到CyberMiles的主网上。所以在编写智能合约前,你需要了解Lity或者Solidity的基础语法, 查看solidity官方文档或这个网站:区块链技术,你可以学习一些基础语法的使用。/ y, A: V& p4 R
Lity官方文档:https://www.litylang.org1 _5 Q7 |7 E# M9 s7 F( w1 o7 X
2、IDE:Remix
' U6 X# g( [* n0 n2 g$ n每一种语言在有了一系列的编程规范以及一个IDE、外加一个优秀的编程开发人员将会变得very perfect!而对于我们本系列介绍的Lity或Solidity语言也自然有它的开发的IDE——Remix。CyberMiles在原有Remix的基础上又进行了兼容性改造,使得新的Remix更适应Lity的开。/ d, N; o8 N, `  Y* {
在线地址:http://remix.cybermiles.io
: h# @6 X6 G" u4 c- f; |, o3、Chrome 及 MetaMask For CMT, D8 Z2 \: E+ z
智能合约的开发,离不开与区块链的交互,通过MetaMask For CMT能够实现与CyberMiles主链或测试链的连接与调用。
% P& |) ]. W, L# q  MMetaMadk For CMT 是Chrome的一款插件,可以在CyberMiles官网进行下载 ,然后按照说明进行安装。https://www.cybermiles.io/metamask/?lang=zh-hans
/ n% ]4 ~3 Q7 g3 L5 }  O6 \使用Remix编写简单智能合约
9 N7 W( b' O3 z/ V. G$ z2 F" V1、Remix界面
! h! X6 j( r- d2、编写、编译合约
) o: Z# I" t% S6 s合约可根据个人喜好在Remix中编写,或者在本地的编辑器类似sublime中编写。8 y& I# n5 W: S6 Z
我们编写一个简单的合约,对属性name和age进行存取。
, {- B% j* l7 X- X) f/ m- z7 ]pragma lity ^1.2.4;4 J! O5 p' \% x: x, s0 G. G
contract ContractTest{& |0 l' ^0 M7 Q$ _8 w' J
    ' A; r: Y! t; G( Y( p0 v
    string name;0 h( q4 D4 O# z" I3 h
    uint age;
+ ]& Y  r; ~9 ?# e  v* Q+ A# Q2 [/ ^   
9 c" i4 g) u7 U5 P3 Q    function setInfo(string _name, uint _age) public {/ Y4 Z" h+ g; r0 `, `$ m
        name = _name;/ g! ?( Q1 K7 A/ r7 c2 s* o
        age = _age;3 t  Q8 B9 j; N- a2 X$ S
    }" t" j8 m% @& t7 L$ P
   
% c( X0 _! N) m- X( n0 {* T    function getInfo() public constant returns (string, uint){
# P- p1 P& |' U% |" u8 d        return (name, age);6 s, P7 H1 J, D% |# S
    }* \: J7 Y" y2 R
}
4 s+ t$ M+ \) {8 \% E+ l将合约内容复制进Remix,点击右侧Start to complile,如果下方没有报错,说明编译通过。
1 Q/ z2 X8 P- g. N: j' }+ X如果你想通过web3js进行部署,可以点击ABI和Bytecode按钮,获取需要的数据。. ]5 J* j4 a, o$ A. Q
点击Detail按钮,可以获得更多详细信息。
, ?% V3 p& D# Z# F3 f# l* j& ~7 H. S- L6 Z; r0 |, l, m
3、MetaMask For CMT 简单使用5 k5 Y4 Q/ e8 `) X% M
部署合约前,我们简单介绍一下MetaMask的使用,在安装完成后,chrome浏览器右上方就会出现相应的插件logo/ X1 {' D9 x* P# M6 m- ^5 O

+ L) l3 c5 t7 Q/ n点击logo,将弹出操作界面,本次我们选择CMT Test Network测试网络进行。& ^5 L2 n4 h- H& S) ^

" t. |+ w2 F. E. [& E& {) {. z新建账户中没有CMT余额,我们点击BUY按钮,进入界面后再点击TESTNET TEST FAUCET按钮,可以去申请一些测试用的CMT。' U; d+ T+ _* D4 c% `( W
9 G) b3 |8 N6 o. n: Z2 f
(注意:如果本地还安装了原版的MetaMask,为了不影响下面的操作,请前往Chrome扩展程序管理中,禁用原版MetaMask)
% e9 V6 n0 X- }- u4 j8 o
5 a# k% ]0 k* x+ }9 S  A
4、部署合约
/ b( k5 n7 r) @! ]6 j合约编译通过之后,我们就要将合约部署到链上。
" Y1 Q# S3 ?' x& V: ]9 U4 H点击右侧的run,进入部署控制界面
8 e  j3 ]5 G! i  @) z
1 f' ]% g# D  m2 {) w5 o·Enviroment:
% a* K* d; u) Y) q这里有三种选择
: ^2 w$ t5 [" C/ `& X$ |0 Y- o+ o, D9 [! V3 E
JavaScript VM:合约部署到运行在浏览器内存中的虚拟网络,页面刷新的话数据将会被重置,并没有真正部署到任何链上。它会提供 5 个虚拟帐户每个有 100 CMT,可以随便选一个帐户,适用于本地调试。- D- l" I3 y' M  b) ~% a" l5 U* U
Injected Web3:我们需要启动上一步的MetaMask For CMT,并创建一个账号。Remix会连接到MetaMask所选择的链上。7 h2 x: {1 w7 F8 y! }- g
Web3 Provider:可以通过改选项,配置参数,使Remix连接到我们本地的私链或者其他链。
* z7 a4 Q- m0 h5 g/ j% Q. ]( Y& }6 f4 vAccount:对应链上的账号8 V" r* I# n+ S( _' Q5 M
Gas Limit:设置交易需要的gas费用,一般使用默认值无需修改0 e8 P1 I8 G+ j  D9 ]: x' t
Value:如果一项对合约的操作需要转cmt,则需要在这里设置cmt的数量: G7 y$ h$ ]0 x% U
接下来我们执行部署操作
" ]* x, {: }& l* {" c$ t1.登录MetaMask For CMT,选择测试链,并申请一些测试CMT(详见第三步简单使用)  Y! p8 L, O; {3 O( a+ c! @$ [
2.Enviroment我们选择Injected Web3# P- g8 q( c/ n6 G. J
3.点击部署按钮,弹出MetaMask确认框(如果没有弹出,可以手动点击插件logo),点击SUBMIT
- n" R+ K/ o$ G* a9 d9 x5 C9 r- \( n) d
4.等待交易被打包确认,成功后将会出现我们的部署好的合约,点击黑色小三角可以展开合约,可以看到就是我们在合约中定义的方法。0 E8 l8 R1 c; l" @
5 A. W# D; ?6 Y( ~/ p
5.左边的控制台,我们也可以展开交易信息,查看此次交易的状态、transaction hash、gas费等等( c: j: O5 k( n/ B2 y

  c; }' O7 @( X( i测试合约功能  J/ Y. \( V: B( z8 f) f
合约部署成功了,我们来测试一下合约的功能& B- v: d' |2 l) w. O0 U  v
1、设置name和age$ d! ]3 J: d! Z. k( }) s
在合约下方的setInfo输入框中填写 “Li Lei”,18(注意:字符串要写引号,不然会报错),点击setInfo按钮,然后在MetaMask中submit该笔transaction,等待一会成功后,控制台将返回结果数据
0 g- T3 ~2 f$ {6 G8 |! B
- W" g. d; r1 J2、你也可以点击setInfo输入框右侧的下拉三角,直接填写两个字段,这里字符串可以不需要引号: `  r; {  d. v" J

7 ]# k- b* n0 g* g/ h/ S3.设置name和age成功后,我们来调用一下getInfo方法:
$ H# B( X: e! A7 @2 [& O% M
2 z  e0 b; j) e) q: {4 @我们设置的内容就调用出来了。因为我们的查询操作不改变合约的状态,所以在调用getInfo方法的时候,不需要在MetaMask进行确认。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

Mohammad61417 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2