手把手教你搭建智能合约测试环境、开发、编译、部署以及如何通过JS调用合约方法

本文详细介绍了如何搭建智能合约的开发环境,包括使用solidity编写合约,利用truffle框架进行编译、部署以及通过JS调用合约方法。首先,文章提到了开发前的准备,如安装testrpc和truffle。接着,通过启动testrpc创建测试环境,然后创建项目,编写HelloWorld合约。完成合约编写后,进行编译,部署到testrpc,最后通过truffle console与合约进行交互。文章适合初学者学习智能合约开发流程。
摘要由CSDN通过智能技术生成

链客,专为开发者而生,有问必答!

此文章来自链客区块链技术问答社区,未经允许拒绝转载。
在这里插入图片描述

学习目标

了解智能合约

简单环境搭建

能够利用solidity编写Hello World合约

合约部署

和合约互动

使用solidity语言撰写智能合约

Ethereum上的智能合约需要使用solidity语言来撰写。虽然还有其他能用来撰写智能合约的语言如Serpent(类Python)、lll(类Fortran),但目前看到所有公开的智能合约都是使用solidity撰写。

宣传上说,solidity是一种类似Javascript的语言,而且围绕着solidity的各种开发工具链,都是使用属于Javascript生态系的npm来提供的。但我觉得solidity还是比较像Java或C#。因为和Javascript不同,solidity与Java或C#同属于强类型(Strong Type,在定义变数时需要指定类型)语言、在定义函式(function)时同样需指定回传的类型(type)、同样也需要先编译才能执行。这些特性都是Javascript所不具备的。

开发前的准备

本文将使用当前最活跃的智能合约开发框架truffle为基础来开发。ENS(Ethereum Name Service)也是采用truffle框架。其他选择还有embark等。

就像一般网站或App开发一样,在提供公开服务之前,开发者会在自己用于写程序的电脑(又称作本机)或透过测试网络来测试程序执行的效果,测试完成后,才会部署到公开的网络上提供服务。开发区块链智能合约(程序)的过程也是如此。特别是公开链上所有写入或读取计算结果的操作都需要真金白银(虚拟代币),而且根据网络状况,每个公开链上的操作都需要要一小段反应时间(15秒~数分钟),这些等待颇浪费宝贵的开发时间⏳。因此在开发的过程中,我们将使用testrpc工具在电脑上模拟智能合约所需的以太坊内存块链测试环境。

testrpc中也包含了Javascript版本的Ethereum虚拟机(Ethereum Virtual Machine),因此可以完整地执行智能合约。

此外,开发前还需准备一个合手的编辑器。我目前是使用Atom搭配solidity插件来开发。solidity插件除了支持语法高亮之外,也会透过Solium检查并提示基本的语法错误,相当方便。其他编辑器应该也有类似的插件可选择。

安装所需工具

首先开发机上必须装好Node.js,再使用以下命令安装所需的工具:

$ npm install -g ethereumjs-testrpc truffle

liyuechun:~ yuechunli$ npm install -g ethereumjs-testrpc truffle

/usr/local/bin/testrpc -> /usr/local/lib/node_modules/ethereumjs-testrpc/build/cli.node.js

/usr/local/bin/truffle -> /usr/local/lib/node_modules/truffle/build/cli.bundled.js

  • truffle@3.4.9

  • ethereumjs-testrpc@4.1.3

added 1 package and updated 7 packages in 76.132s

liyuechun:~ yuechunli$

启动Testrpc

安装好后随时可以使用testrpc命令来启动以太坊测试环境。

liyuechun:~ yuechunli$ testrpc

EthereumJS TestRPC v4.1.3 (ganache-core: 1.1.3)

Available Accounts

==================

(0) 0xbbd414b340f2255dab9d923428c97f0b65d9df81

(1) 0xe9869e3cf29b6fca81762c314df229c7c4fea25e

(2) 0xc79e72362a4511b9e499d186654332c4d6f569be

(3) 0x9a6f0651907c149d4173c03927144dbbba1473d4

(4) 0x5b13a5d6788752b26dd4e338aae2e01058ee145e

(5) 0xfc7f56d942ad5260be23ecee92a344aba1b7e7d8

(6) 0xc48dc22c6bacd6ade4421ab54f25bc45c1c51142

(7) 0x3fe2b7d4141dd0a456661f77086d055cbaf3b78f

(8) 0x567979fed26ca85e9d1b4ac919c840e3fc9857e2

(9) 0xb2eafe245f098eef1c2c1f466d9a8dcd58764c62

Private Keys

==================

(0) 947ab78e91133103612ca099d60e6c38cac5bb769f7f097c82d003cf058500bd

(1) 8ffe0ba8dc53e16944a17dddd3378b5fba0379cd84df4e5237b8b46d05b8762f

(2) ffe2e04e43e4106b247407656f5233bcc3e0c49730972d0df9c1d1093375e2ef

(3) a20e453dc44c76aaca6a22efdbb605c2ed9eea64c11317e683461e11bd105ea7

(4) 4748268ff1b828868dc56d07a1b121b427e1bdede5dbb3c14ef1254d9d26b1a5

(5) f9957e68c6d20d38b81604a0509e6c4591478bc754f87d5682564073705fbb46

(6) 34e648b23c0ace6b2b0893651d87f70be8496f97ecf6b7b4607b2acc4e05c9bd

(7) d2477cedec217e3fb19a5981dafbc125ef66ccc9dc7df29301d08a24da843cf5

(8) d319f85ccd80e55b2e707e05f09662632564c297248f8b96f82ea5eeaeef0851

(9) 88c33ac9f1062b82f9e82f86a0ce307e3bd8fcf683b9751232c2f193f5bdc668

HD Wallet

==================

Mnemonic: hire custom clinic expect fury fantasy try dress source spy viable flag

Base HD Path: m/44’/60’/0’/0/{account_index}

Listening on localhost:8545

可以看到testrpc启动后自动建立了10个帐号(Accounts),与每个帐号对应的私钥(Private Key)。每个帐号中都有100个测试用的以太币(Ether)。要注意testrpc仅运行在內存中,因此每次重开时都会回到全新的状态。

一切准备就绪,我们可以开始建立第一份智能合约项目了。

建立项目

开启另一个终端窗口,输入以下命令以建立项目:

liyuechun:Desktop yuechunli$ mkdir SmartContractDemo

liyuechun:Desktop yuechunli$ cd SmartContractDemo/

liyuechun:SmartContractDemo yuechunli$ mkdir HelloWorld

liyuechun:SmartContractDemo yuechunli$ cd HelloWorld/

liyuechun:HelloWorld yuechunli$ truffle init

Downloading project…

Project initialized.

Documentation: http://truffleframework.com/docs

Commands:

Compile: truffle compile

Migrate: truffle migrate

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值