以太坊智能合约开发环境

  • 安装库
  • 创建项目
  • 编写合约
  • 编译合约
  • 部署合约
  • 呼叫合约
  • 结语

安装库

使用nodejs安装ethereumjs-testrpctruffleethereumjs-testrpc是开发时用到的模拟以太坊网络,如果有私链或者其他节点服务器可以不安装;trufflesolidity开发比较主流的一个框架。

npm install -g ethereumjs-testrpc truffle

创建项目

使用truffle构建项目时,truffle需要一个空的文件夹,如果文件夹内有内容会保错,若以最好新建一个。

mkdir smart-contract-demo
cd smart-contract-demo
truffle init

创建后会生成一些初始的文件,因truffle版本不同而异。

编写合约

在当前目录打开Atom

atom ./

安装插件linter-solidityautocomplete-soliditylinter-solidity。写一个HelloWorld.sol,新建文件contracts/HelloWorld.sol,代码:

pragma solidity ^0.4.4;contract HelloWorld {function sayHello() returns (string) {return ("Hello World :-)");}
}

启动rpc

testrpc

EthereumJS TestRPC v6.0.3 (ganache-core: 2.0.2)

Available Accounts

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

(0) 0x92feb02c3f9f579da32daf1946722a5930c59a53

……

(9) 0x08cd557c26ee1b36ae163bed37dcac9f70649dbb

Private Keys

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

(0) 2abb8a7deb9445881a66ca54827e3f93e2e681b13c0956986f39a3f63b32252b

……

(9) 5202c7c30cbf5a10cc547fe659b1d59cd0083b3784a7ff89e8783cef74f67c88

HD Wallet

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

Mnemonic: fun arm toast spike include attend ceiling damp embrace nut phone hero

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

Listening on localhost:8545

启动后终端输出Listening on localhost:8545,保持这个终端开启,也不要C掉。

修改truffle.js

module.exports = {networks: {development: {host: "localhost",port: 8545,network_id: "*"}}
};

编译合约

truffle compile

部署合约

修改1_initial_migration.js

var HelloWorld = artifacts.require("HelloWorld");module.exports = function(deployer) {deployer.deploy(HelloWorld);
};

部署/重新部署

truffle migrate
truffle migrate --reset

呼叫合约

truffle console
let contract
HelloWorld.deployed().then(instance => contract = instance)
contract.sayHello.call()

truffle(development)> let contract

undefined

truffle(development)> HelloWorld.deployed().then(instance => {contract = instance})

TruffleContract {

constructor:

……

address: ‘0xd374574475aaf2845527569b4f38897c6b187d40’,

transactionHash: null }

truffle(development)> contract.sayHello.call()

‘Hello World ?’

结语

以上就是合约基本环境的搭建和调试的过程,VSCode过程类似,区别在于安装的插件不同。

使用Atom编写以太坊智能合约相关推荐

  1. 【以太坊智能合约】Embark Framework 开发基础篇

    在之前的文章中,我们看到了使用Solidity开发以太坊智能合约的所有基本知识.我们使用了以太坊钱包,我们能够轻松设置小型产品开发环境.我们会发现开始的时候很不错,但是如果我们想要更深入的话呢?我们要 ...

  2. 链乔教育在线|智能合约学习——以太坊智能合约学习笔记(四)

    链乔教育在线|智能合约学习--以太坊智能合约学习笔记(四) 本笔记记录的是使用matemask钱包连接以太坊私链,并编写一个基本的提币智能合约部署到以太坊私链上,进行调用. 一.浏览器安装metama ...

  3. 一起学:以太坊智能合约开发

    课程介绍 无论在科技圈还是金融圈,"区块链"俨然成了最热的词汇.2016年,区块链写入了国家的十三五规划中:2017年,央行基于区块链技术的数字票据交易平台测试成功:同年,工信部发 ...

  4. 以太坊智能合约语言Solidity - 1 走进Solidity

    1. 走进Solidity 1.1 Remix IDE 界面初识 在本地编写我们可能会遇到各种各样的问题,所以使用在线的Remix编译器来编写合约:https://remix.ethereum.org ...

  5. 以太坊智能合约开发第二篇:理解以太坊相关概念

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 很多人都说比特币是区块链1.0,以太坊是区块链2.0.在以太坊平台上,可以开发各种各样的去中心化应用,这些应用构成了以太 ...

  6. 使用Remix编译和部署以太坊智能合约

    链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 使用Remix编译和部署以太坊智能合约 Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的 ...

  7. 区块链项目实战 - 使用以太坊/智能合约solidity,全栈开发区块链借贷记账小应用,含完整源码

    本文使用区块链平台以太坊+智能合约实现一个区块链记账的功能,具体为: 借款人和贷款人以及数额被记录在区块链中.使用区块链地址来表示借款人或者贷款人. 若一个借款人多次向一个贷款人借钱,更新所有的数额之 ...

  8. truffle (ETH以太坊智能合约集成开发工具) 入门教程

    truffle (ETH以太坊智能合约集成开发工具) 入门教程 前言 在你了解区块链开发之前,你有必要了解区块链的一些基础知识,什么是DApp,DApp与传统app的区别, 什么是以太坊,以太坊中的智 ...

  9. 以太坊 智能合约 简介

    以太坊是一个分布式的计算平台.它会生成一个名为Ether的加密货币.程序员可以在以太坊区块链上写下"智能合约",这些以太坊智能合约会根据代码自动执行. 以太坊是什么? 以太坊经常与 ...

最新文章

  1. 和12岁小同志搞创客开发:手撕代码,点亮LED灯
  2. 在ubuntu10.04上安装永中office2010
  3. 解决binwalk运行提示缺少LZMA模块
  4. win-tc不能在win7下使用
  5. 当我们在谈论内存时,我们在谈论什么
  6. 太想成功了--成功之前,你是否养成了这些习惯?
  7. python实训day5
  8. wsl2安装_如何在Windows 10上安装WSL 2?
  9. @扎克伯格:一句对不起,能挽回我们泄漏的数据吗?
  10. c语言学生管理系统下载,学生管理系统(C语言)
  11. VMware vCloud Director视频教程
  12. Java实现简单的银行管理系统(最基本的功能/易上手)
  13. 计算机操作系统教程徐甲同pdf,《操作系统实践教程》.pdf
  14. Windows使用WakeOnLan配置【较详细】
  15. 做数学建模不得不会的数据特征分析---对比分析
  16. Redis源码分析(sds)
  17. Unity3D 集成 高德地图SDK 地图
  18. 【 实测可用 】ESP32 + AD8232 心电图实验
  19. RoadFlow ASP.NET Core工作流配置文件说明
  20. linux求斐波那契数列前10项,linux求斐波那契数列的前10项以及总和.

热门文章

  1. ABP vnext 控制器知识整理
  2. 计算机图形学(三)-图形学中的基本变换(缩放、平移、旋转、剪切、镜像)
  3. 【每日论文】GenCo: Generative Co-training for Generative Adversarial Networks with Limited Data
  4. Eigen 对矩阵的每个元素取绝对值
  5. C语言中free函数如何确定释放的空间大小
  6. 常见的DNS攻击与防御
  7. 基于Qt5.14.2和mingw的Qt源码学习(三) — 元对象系统简介及moc工具是如何保存类属性和方法的
  8. 地理坐标系与投影坐标系的区别(转)
  9. oracle索引 oracle索引结构 oracle索引使用 B*Tree索引
  10. 两轮自平衡车系统的模型构建