Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文
使用CyberMiles Remix来部署你的第一个应用/ H- C5 a# S( w# T
准备工作4 W; {6 L% g! N/ p+ O6 u8 e
1、Lity或Solidity基础语法知识
* R* |" S7 F/ M$ C; cyberMiles主网完全兼容以太坊,在以太坊上运行的智能合约,理论上可以无缝对接到CyberMiles的主网上。所以在编写智能合约前,你需要了解Lity或者Solidity的基础语法, 查看solidity官方文档或这个网站:区块链技术,你可以学习一些基础语法的使用。" q1 S+ L. f" @  g, J
Lity官方文档:https://www.litylang.org
  X, W7 V0 k: L. f: @; ?2、IDE:Remix& ^  Y9 N# e/ U$ R; J/ m' T' i; v
每一种语言在有了一系列的编程规范以及一个IDE、外加一个优秀的编程开发人员将会变得very perfect!而对于我们本系列介绍的Lity或Solidity语言也自然有它的开发的IDE——Remix。CyberMiles在原有Remix的基础上又进行了兼容性改造,使得新的Remix更适应Lity的开。
% y1 {8 c" \* S( N# B& y6 u在线地址:http://remix.cybermiles.io
. S  S4 o% h9 i/ x+ M5 w. j& y3、Chrome 及 MetaMask For CMT' P" Z) c; S* A$ M. o, ?# @9 @
智能合约的开发,离不开与区块链的交互,通过MetaMask For CMT能够实现与CyberMiles主链或测试链的连接与调用。% W/ m! R4 L5 U& u
MetaMadk For CMT 是Chrome的一款插件,可以在CyberMiles官网进行下载 ,然后按照说明进行安装。https://www.cybermiles.io/metamask/?lang=zh-hans4 G3 b' W/ v" w3 n. l  L8 p: w. a
使用Remix编写简单智能合约( b7 C$ a* q# L) m1 v5 g9 @- M
1、Remix界面& i8 q# v4 r) M* t
2、编写、编译合约
  [+ p, d) e9 k8 f- K! N合约可根据个人喜好在Remix中编写,或者在本地的编辑器类似sublime中编写。
# C3 G9 _1 C& n7 e我们编写一个简单的合约,对属性name和age进行存取。
- t6 A3 v. ^1 K, j3 F, O, ^, {pragma lity ^1.2.4;
! `6 X. O, X6 W3 f% h1 ^contract ContractTest{0 q' o6 \, M+ p
    2 M! ?( a: h6 g7 J
    string name;! w( S* |8 A/ y
    uint age;- d. m* g5 J! N4 x9 I6 K2 S0 r. {
   
) d" t3 S) w4 t) ~. [$ ^7 w    function setInfo(string _name, uint _age) public {
& o( M8 B7 U; {" O* t& G. p/ r        name = _name;
1 i4 X6 t- ~( O' \        age = _age;
' E2 a' _7 g; q0 @    }
& E. V) l" j8 x" k   
2 s2 ?- {( x' x/ ^4 r% o( I( R    function getInfo() public constant returns (string, uint){( J% [1 m' B; a: {- V
        return (name, age);# y* x- ]  y, @/ o6 U: D& s
    }1 a2 m8 v6 `* R; N( Y
}9 `! h5 s/ K6 L2 B% F7 l
将合约内容复制进Remix,点击右侧Start to complile,如果下方没有报错,说明编译通过。) Q1 {+ q7 }) M: B! N
如果你想通过web3js进行部署,可以点击ABI和Bytecode按钮,获取需要的数据。7 R- ?1 i( p/ g4 z5 s) O6 _; D; Z
点击Detail按钮,可以获得更多详细信息。
8 _8 t# o2 M) ]9 |$ u* D& }- ~" K% K2 S" G, Q# Q
3、MetaMask For CMT 简单使用# X; d- d* Z. U: `/ w" B
部署合约前,我们简单介绍一下MetaMask的使用,在安装完成后,chrome浏览器右上方就会出现相应的插件logo
; m8 i, K! N& Y* ^: W1 i* a0 C7 f  o5 _" C% B# e; t* n
点击logo,将弹出操作界面,本次我们选择CMT Test Network测试网络进行。
  K+ Q1 f( n$ m! z% F) Y: v6 v$ r! D: `# d6 b' J! r' \
新建账户中没有CMT余额,我们点击BUY按钮,进入界面后再点击TESTNET TEST FAUCET按钮,可以去申请一些测试用的CMT。
7 f3 d# c0 `1 {5 `$ n; D! ]4 R8 e+ U5 a& i& U- y0 w
(注意:如果本地还安装了原版的MetaMask,为了不影响下面的操作,请前往Chrome扩展程序管理中,禁用原版MetaMask)
' E& \. H3 g+ ~6 C0 p  `

, p8 t3 U- g. y4、部署合约( L+ w4 W& i4 d) d$ `
合约编译通过之后,我们就要将合约部署到链上。
4 p' Y( e8 C+ t3 V( T2 C点击右侧的run,进入部署控制界面
6 G/ O1 C1 @( Z+ B& ?
2 \- k: k+ c$ w6 J! [·Enviroment:
6 ]; [0 w6 E; D9 U0 Q4 Q3 t) g' @( T这里有三种选择1 G; u( A2 i! U& x/ i0 w& y

8 j# X7 y# `: T8 l" C8 m! z2 _JavaScript VM:合约部署到运行在浏览器内存中的虚拟网络,页面刷新的话数据将会被重置,并没有真正部署到任何链上。它会提供 5 个虚拟帐户每个有 100 CMT,可以随便选一个帐户,适用于本地调试。5 a9 h8 [7 f5 R/ U  z) M& ]
Injected Web3:我们需要启动上一步的MetaMask For CMT,并创建一个账号。Remix会连接到MetaMask所选择的链上。2 v/ h% v. Y9 S7 Z5 R! f! A+ h
Web3 Provider:可以通过改选项,配置参数,使Remix连接到我们本地的私链或者其他链。
! k+ O- L* e; J' u. \Account:对应链上的账号' i3 |( V& m% n& I1 k, d$ f
Gas Limit:设置交易需要的gas费用,一般使用默认值无需修改
; ~$ y- r' F0 r9 D' W7 c4 X/ |Value:如果一项对合约的操作需要转cmt,则需要在这里设置cmt的数量
: X1 F7 S/ E1 f* b" {/ K接下来我们执行部署操作% w7 b3 X* |$ E- G' z' ?( A; s( B
1.登录MetaMask For CMT,选择测试链,并申请一些测试CMT(详见第三步简单使用)3 ]1 d/ u9 i4 J+ h5 \- Q" {
2.Enviroment我们选择Injected Web3
3 ]  o6 K8 J3 j/ g" `3 y3.点击部署按钮,弹出MetaMask确认框(如果没有弹出,可以手动点击插件logo),点击SUBMIT9 p& u  z) _5 S1 I; G3 N; m. V
. Q1 M. t1 }6 d" l. M8 ?
4.等待交易被打包确认,成功后将会出现我们的部署好的合约,点击黑色小三角可以展开合约,可以看到就是我们在合约中定义的方法。
; M+ W5 w5 s0 B) h, q3 v- I
$ C+ J4 w/ W/ w3 P8 c) n9 S5 f5.左边的控制台,我们也可以展开交易信息,查看此次交易的状态、transaction hash、gas费等等
  n2 l7 N: F" q& I" i/ ]  P6 b  p2 ?9 I: m3 j8 [+ M) {
测试合约功能
) _2 K% K  x( m; \合约部署成功了,我们来测试一下合约的功能( b0 @# S' Q( g% z
1、设置name和age* Q% Z: F" a7 X4 t
在合约下方的setInfo输入框中填写 “Li Lei”,18(注意:字符串要写引号,不然会报错),点击setInfo按钮,然后在MetaMask中submit该笔transaction,等待一会成功后,控制台将返回结果数据
2 s6 K" E9 ^. |3 m/ m/ C5 ?* ?/ O1 r% r2 [/ ~5 M# a9 ?
2、你也可以点击setInfo输入框右侧的下拉三角,直接填写两个字段,这里字符串可以不需要引号
5 t: v! B6 B7 u4 @( P+ p: f1 h7 G1 F& V+ D
3.设置name和age成功后,我们来调用一下getInfo方法:, d: u; X  K5 M5 r3 B/ t* p

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

本版积分规则

成为第一个吐槽的人

Mohammad61417 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2