区块链(八)windows Truffle入门实战(metacoin)

创建工程

创建一个空目录

mkdir d:\work\geth\metacoin

新版本truffle引入了box的概念,所有的示例代码都以box的形式提供。下载metacoin的示例代码:

truffle unbox metacoin

工程结构

工程结构如图:

contracts 目录中包含 Solidity 合约代码,其中 Migrations.sol 是必须的,其他的是合约代码(这里是示例的 MetaCoin 代码)。

migrations 目录中包含合约部署脚本, 1_initial_migration.js 用来部署 Migrations.sol ,其他的脚本会按照顺序依次执行。

test 目录中是测试代码。

MetaCoin

MetaCoin的代码主要实现了三个接口:发币,查看余额,查看Eth余额。(合约代码解释可以见下方的参考处)

contract MetaCoin {

    mapping (address => uint) balances;

    event Transfer(address indexed _from, address indexed _to, uint256 _value);

    function MetaCoin() public {

        balances[tx.origin] = 10000;

    }

    function sendCoin(address receiver, uint amount) public returns(bool sufficient) {

        if (balances[msg.sender] < amount) return false;

        balances[msg.sender] -= amount;

        balances[receiver] += amount;

        Transfer(msg.sender, receiver, amount);

        return true;

    }

    function getBalanceInEth(address addr) public view returns(uint){

        return ConvertLib.convert(getBalance(addr),2);

    }

    function getBalance(address addr) public view returns(uint) {

        return balances[addr];

    }

}

安装以太坊客户端Ganache 如前。

智能合约必须要部署到链上进行测试。可以选择部署到一些公共的测试链比如 Rinkeby 或者 Ropsten 上,缺点是:部署和测试时间比较长,需要申请一些假的代币。所以对于开发者,最好的方式是部署到私链上。 

Ganache是​​您以太坊开发的个人区块链。他的前身是 testRPC ,很多旧的教程介绍的都是 testRPC 。

修改truffle.js

要部署到链上,需要把IP、端口、网络ID告诉truffle。修改truffle.js为truffle-config.js, 如果文件夹里两个文件都有,把truffle.js删掉,要不会会自动打开该文件然后报.JS错误.

module.exports = {

    networks: { 

        development: { 

            host: 'localhost', 

            port: '8545', 

            network_id: '*' // Match any network id 

        } 

    } 

};

编译和部署,之前需要打开客户端,用第二个窗口ganache-cli打开客户端

truffle compile

truffle migrate

同时客户端会产生部署的日志。

测试合约

测试内容

MetaCoin的示例代码里已经把测试代码写好了,主要测试 MetaCoin 的接口是否可用:

contract TestMetacoin {

function testInitialBalanceUsingDeployedContract() public {

    MetaCoin meta = MetaCoin(DeployedAddresses.MetaCoin());

    uint expected = 10000;

    Assert.equal(meta.getBalance(tx.origin), expected, "Owner should have 10000 MetaCoin initially");

}

function testInitialBalanceWithNewMetaCoin() public {

    MetaCoin meta = new MetaCoin();

    uint expected = 10000;

    Assert.equal(meta.getBalance(tx.origin), expected, "Owner should have 10000 MetaCoin initially");

}

测试合约

直接输入测试合约的命令:

truffle test

结果显示5个测试都通过:

参考:

https://blog.csdn.net/MyHerux/article/details/80340095

https://www.cnblogs.com/zwb121/p/8979473.html

https://www.jianshu.com/p/2e2b3b12eb0e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 

用Solidity在Truffle上构建一个HelloWorld智能合约

教程 | 以太坊开发演练,Part-2:Truffle,Ganache,Geth 和 Mist

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

推荐阅读更多精彩内容

  • 一个知识只是听了,它的意义不大,重点是要去实践,实践一次,意义也不是很大,如果做的是持续地,反复地去实践,那效果就...
    滋心润霖阅读 275评论 0 0
  • 失眠的夜 听到自己心房 发出红豆生长的声音 很像风抚着杨柳 失眠的夜 手压一张纸 劝说一支笔 留下想你的字迹 作为...
    柠晓栀阅读 194评论 7 6
  • 现代社会的快速发展带给人们日益增长的焦虑,越来越多的人失去安全感,有一种发自内心的危机。 之前同事们经...
    lisec516阅读 168评论 0 0
  • 今天读《吃掉那只青蛙》第18章,奶酪和香肠工作法。 完成一项庞大的任务的技巧,是用“香肠工作法”,...
    李尚琴阅读 156评论 0 0
  • 昨天无意间读到王维的《红豆》,心中浮现了这位女子,于是画了下来。不知道女子是不是在想她的少年郎! 红豆 红豆生南国...
    漠白阁主阅读 707评论 0 3