使用Atom编写以太坊智能合约

谁践踏了优雅 2022-04-13 05:40 464阅读 0赞

以太坊智能合约开发环境

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

安装库

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

  1. npm install -g ethereumjs-testrpc truffle

创建项目

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

  1. mkdir smart-contract-demo
  2. cd smart-contract-demo
  3. truffle init

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

编写合约

在当前目录打开Atom

  1. atom ./

Atom截图

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

  1. pragma solidity ^0.4.4;
  2. contract HelloWorld {
  3. function sayHello() returns (string) {
  4. return ("Hello World :-)");
  5. }
  6. }

启动rpc

  1. 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

  1. module.exports = {
  2. networks: {
  3. development: {
  4. host: "localhost",
  5. port: 8545,
  6. network_id: "*"
  7. }
  8. }
  9. };

编译合约

  1. truffle compile

部署合约

修改1_initial_migration.js

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

部署/重新部署

  1. truffle migrate
  2. truffle migrate --reset

呼叫合约

  1. truffle console
  2. let contract
  3. HelloWorld.deployed().then(instance => contract = instance)
  4. 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过程类似,区别在于安装的插件不同。

发表评论

表情:
评论列表 (有 0 条评论,464人围观)

还没有评论,来说两句吧...

相关阅读

    相关 智能合约 简介

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

    相关 智能合约是什么?

    以太坊是最早提出做智能合约的平台。由于以太坊区块链被普遍接受,因此多数区块链的智能合约采取与以太坊相似的设计。本文将详细介绍以太坊的智能合约:它是什么?它有什么用? 以太...