truffle发布一个智能合约

开发环境:ubantu18.04 truffle5.0.18 npm5.5.1(输入指令:npm -v) nodejs9.3.0(输入指令:node -v)

新建第一个项目SmartContractDemo

sun@sun-virtual-machine:~$  mkdir SmartContractDemo
sun@sun-virtual-machine:~$ cd SmartContractDemo
sun@sun-virtual-machine:~$ mkdir HelloWorld
sun@sun-virtual-machine:~/SmartContractDemo$ cd HelloWorld
sun@sun-virtual-machine:~/SmartContractDemo/HelloWorld$ truffle init

这时候helloworld文件夹下会出现

contracts  migrations  test  truffle-config.js

contracts 智能合约目录
migrations 发布脚本目录
test 存放测试文件
truffle.js Truffle的配置文件
truffle-config.js Truffle的配置文件

编辑智能合约

下面使用atom编辑器打开文件夹编写智能合约内容

pragma solidity ^0.5.0;#声明solidity版本
contract HelloWorld{

  string Myname = "孙策";


  function sayHello() public view returns (string memory)  {
    return Myname;
  }
}

代码中有sayHello方法是输出Myname变量的值(孙策)
在migration文件夹下创建2_deploy_migration.js文件

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

编辑truffle-config.js文件,将其中development部分修改为

    development: {
     host: "127.0.0.1",     // Localhost (default: none)
     port: 8545,            // Standard Ethereum port (default: none)
     network_id: "*",       // Any network (default: none)
    },

将合约发布到网络

重新打开一个终端输入ganache-cli

sun@sun-virtual-machine:~$ ganache-cli
Ganache CLI v6.4.3 (ganache-core: 2.5.5)

Available Accounts
==================
(0) 0x8acf568fffc5d7a5970d65a0221b9ad0e7f95bcf (~100 ETH)
(1) 0x2e3bf281556fff96d9c28b87ee7ef7d79412acea (~100 ETH)
(2) 0x49acb0c81132d3409a83f118a169236b5c75a337 (~100 ETH)
(3) 0x51f151c5e4fc815a32766ec42da854856de4f0d4 (~100 ETH)
(4) 0xb62e48388352262cdadb7ce2ccd6238634d5fa78 (~100 ETH)
(5) 0xdc0814f8b9d1058390969d39250e02222e770e53 (~100 ETH)
(6) 0x3ae95c1ed584ac2ef5bae8fde2061d0ceaf91116 (~100 ETH)
(7) 0x4182f27c223ac633ece4585246eebe9063019c3c (~100 ETH)
(8) 0x52dcb67c449693ed0c82a738f8497a3a7c9e96d9 (~100 ETH)
(9) 0xbee93c799cbc607e4cef3dbc7e8e39732b151690 (~100 ETH)

Private Keys
==================
(0) 0xbccbb5d011dcd967b88843c0aaa009616f3eb879eeaf94c913d5e20c4ecc80a7
(1) 0xebb7dfe2ab9d121f5f26fbebecdd251feb0b95ee4b95c7307b8ff9928953a687
(2) 0x7d7f7d34d44b4c75b085fbcb5ebe5ab8cc687681be33ab8a9c366bf016307d41
(3) 0x87b5c436ec2eb3de17d41245ed8760b4f36b85b6aac22d721f7cef9746fa160c
(4) 0xbc0ba91f92c9e11b48b4bfd3845590a286c3c988475acf24e00bbbca9b8661d4
(5) 0x1fd93a1293b0da765e3d299e5c23d44d8474ce72e003d95f2e07007961bd03f9
(6) 0x9927a9712b5d252398ef1fc6869a9721b959d28e00b4ed37693d6b49fb9def88
(7) 0x3402e00b2c21062f70500c4936aa176891b7ea0e97c919c2deac1450594f017a
(8) 0x66776a63bf4f3becd708b4eb9d154afe3b41d2d24322e5a27a066244fa9d4312
(9) 0xb8b3308cb093bda8f23e9c26ee87508f53d4fa32a2b35e0e5750525c7f13328c

HD Wallet
==================
Mnemonic:      unable length clever cricket object system bird donate crunch bike talk there
Base HD Path:  m/44'/60'/0'/0/{account_index}

Gas Price
==================
20000000000

Gas Limit
==================
6721975

Listening on 127.0.0.1:8545

回到truffle,输入truffle compile编译合约

sun@sun-virtual-machine:~/SmartContractDemo/HelloWorld$ truffle compile
Compiling ./contracts/HelloWorld.sol...
Compiling ./contracts/Migrations.sol...
Writing artifacts to ./build/contracts

下面开始部署合约

sun@sun-virtual-machine:~/SmartContractDemo/HelloWorld$ truffle migrate
Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.
Starting migrations...
======================
> Network name:    'development'
> Network id:      1560322064995
> Block gas limit: 0x6691b7
1_initial_migration.js
======================
   Deploying 'Migrations'
   ----------------------
...
   > Saving migration to chain.
   > Saving artifacts

2_deploy_migration.js
=====================

   Deploying 'HelloWorld'
   ----------------------
...
   > Saving migration to chain.
   > Saving artifacts
Summary
=======
> Total deployments:   2
> Final cost:          0.00967816 ETH

开始测试

进入console控制台

sun@sun-virtual-machine:~/SmartContractDemo/HelloWorld$ truffle console
truffle(development)> var contract
undefined
truffle(development)> HelloWorld.deployed().then(function(instance){contract=instance;});
undefined
truffle(development)> contract.sayHello()
'孙策'

var contract和javascript语法一样,表示声明一个contract变量。HelloWorld.deployed().then(function(instance){contract= instance;});表示,将HelloWorld合约主体,传递给contract变量。后面我们就可以直接使用变量contract调用sayHello()方法。
如果想要退出控制台可以使用.exit命令

truffle(development)> .exit
sun@sun-virtual-machine:~/SmartContractDemo/HelloWorld$
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容