Truffle是以太坊(Ethereum)智能合约开发的瑞士军刀,小巧好用,上手简单。

本篇文章主要展示如何用Truffle 开发第一个Ethereum智能合约。

1.准备工作:(本人针对window环境,如果是mac 或linux可以自行搜索其他教程)

a.安装git bash :http://gitforwindows.org/

b.安装npm:https://jingyan.baidu.com/article/a17d528506d7f58098c8f2b0.html

2.安装Truffle。

按照Truffle的官网指示:http://truffleframework.com/docs/getting_started/installation

在git bash命令行输入如下 命令:

npm install -g truffle
3.开发智能合约 安装完好,运行:
mkdir simple-storage
cd simple-storage
然后运行:
truffle init

这个命令会建立 两个目录:
contracts/migrations/ 其中contracts/ 是智能合约所在的目录,而 migrations/是把合约部暑到以太坊的
相关命令。 打开 目录:contracts/ ,创建一个新文件: Store.sol,文件内容如下 :
pragma solidity ^0.4.17;

contract SimpleStorage {
uint myVariable; function set(uint x) public {
myVariable = x;
} function get() constant public returns (uint) {
return myVariable;
}
}
打开目录:migrations/ ,创建一个文件 2_deploy_contracts.js,内容如下 :
var SimpleStorage = artifacts.require("SimpleStorage");

module.exports = function(deployer) {
deployer.deploy(SimpleStorage);
};
保存好。 回到命令行,运行命令:
truffle compile
打开另一个git bash 窗口进入相同目录,运行:
truffle develop
然后运行:
migrate
窗口会出现如下信息:
Running migration: 1_initial_migration.js
Replacing Migrations...
... 0xe4f911d95904c808a81f28de1e70a377968608348b627a66efa60077a900fb4c
Migrations: 0x3ed10fd31b3fbb2c262e6ab074dd3c684b8aa06b
Saving successful migration to network...
... 0x429a40ee574664a48753a33ea0c103fc78c5ca7750961d567d518ff7a31eefda
Saving artifacts...
Running migration: 2_deploy_contracts.js
Replacing SimpleStorage...
... 0x6783341ba67d5c0415daa647513771f14cb8a3103cc5c15dab61e86a7ab0cfd2
SimpleStorage: 0x377bbcae5327695b32a1784e0e13bedc8e078c9c
Saving successful migration to network...
... 0x6e25158c01a403d33079db641cb4d46b6245fd2e9196093d9e5984e45d64a866
Saving artifacts...

继续在truffle develop窗口运行如下 代码: SimpleStorage.deployed().then(function(instance){return instance.get.call();}).then(function(value){return value.toNumber()});
这条命令结果如下
0

继续在truffle develop窗口运行如下代码:
SimpleStorage.deployed().then(function(instance){return instance.set(4);});

这是会出现如下信息:

 { tx: '0x7f799ad56584199db36bd617b77cc1d825ff18714e80da9d2d5a0a9fff5b4d42',
receipt:
{ transactionHash: '0x7f799ad56584199db36bd617b77cc1d825ff18714e80da9d2d5a0a9fff5b4d42',
transactionIndex: 0,
blockHash: '0x60adbf0523622dc1be52c627f37644ce0a343c8e7c8955b34c5a592da7d7c651',
blockNumber: 5,
gasUsed: 41577,
cumulativeGasUsed: 41577,
contractAddress: null,
logs: [] },
logs: [] }
这里的tx是交易的ID,可能你窗口显示的ID会不一样。
这里说明,你的交易成功,帐本已经成功设置为4. 好,现在我们来验证下,运行如下 命令:
SimpleStorage.deployed().then(function(instance){return instance.get.call();}).then(function(value){return value.toNumber()});

结果返回为:

4

成功了!

你已经学会开发智能合约!

恭喜你!!!!!

工作与合作,请加微信/qq:360369487

 





以太坊智能合约开发工具 Truffle 入门1的更多相关文章

  1. 以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明

    以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明 为了让你的Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3.对象.底层实 ...

  2. Mac下基于testrpc和truffle的以太坊智能合约开发环境搭建

    原文地址:石匠的blog truffle是一个基于Javascript开发的一套智能合约开发框架,使用Solidity语言编写合约.truffle有一套自动的项目构建机制,集成了开发,测试和部署的各个 ...

  3. 以太坊智能合约开发 Solidity学习

    1. pragma solidity >=0.4.22 <0.6.0;//版本号,头文件 contract BooleanTest { bool _a;//默认返回false int nu ...

  4. 如何通过以太坊智能合约来进行众筹(ICO)

    前面我们有两遍文章写了如何发行代币,今天我们讲一下如何使用代币来公开募资,即编写一个募资合约. 写在前面 本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还 ...

  5. Go语言打造以太坊智能合约测试框架(level1)

    传送门: 柏链项目学院 Go语言打造以太坊智能合约测试框架 前言 这是什么? 这是一个基于go语言编写的,自动化测试以太坊智能合约的开发框架,使用此框架,可以自动化的部署合约,自动测试合约内的功能函数 ...

  6. 以太坊智能合约Hello World示例程序

    简介 以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开 ...

  7. 深入以太坊智能合约 ABI

    开发 DApp 时要调用在区块链上的以太坊智能合约,就需要智能合约的 ABI.本文希望更多了解 ABI,如为什么需要 ABI?如何解读 Ethereum 的智能合约 ABI?以及如何取得合约的 ABI ...

  8. rpc接口调用以太坊智能合约

    rpc接口调用以太坊智能合约 传送门: 柏链项目学院   在以太坊摸爬滚打有些日子了,也遇到了各种各样的问题.这几天主要研究了一下如何通过rpc接口编译.部署和调用合约.也遇到了一些困难和问题,下面将 ...

  9. Go语言打造以太坊智能合约测试框架(level3)

    传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...

随机推荐

  1. C# 使用 MsieJavaScriptEngine 引擎运行JavaScript

    用这个东西实现了一个js脚本引擎代码生成器,调研的时候这个东西的资料比较少. 我就根据自己的这点应用来讲解讲解,有错误,不符的地方还请园友指出. 使用 Nuget 安装 MsieJavaScriptE ...

  2. C#读取word文档中的内容

    原文地址 http://blog.csdn.net/yhrun/article/details/7674540 在使用前需要添加引用巨硬的com组件:Microsoft Word 12.0 objec ...

  3. React Native商城项目实战03 - 包装Navigator

    1.在Home目录下新建首页详细页HomeDetail.js /** * 首页详情页 */ import React, { Component } from 'react'; import { App ...

  4. 什么是HOOK功能?

    HOOK API是一个永恒的话题,如果没有HOOK,许多技术将很难实现,也许根本不能实现.这里所说的API,是广义上的API,它包括DOS下的中断,WINDOWS里的API.中断服务.IFS和NDIS ...

  5. ps 和 pstree的用法

    ps 查看某个具体的命令进程: ps -C cmd-name: 如: ps -C httpd // 如果有多个名字相同的进程, 如httpd... 应该是它下面的子进程, 这时会显示第一个进程id. ...

  6. 3、Shiro授权

    Shiro授权过程和认证过程相似: 项目结构: package com.shiro.shiroframe; import org.apache.shiro.SecurityUtils; import ...

  7. 创建Stream

    1.创建Stream create Stream from Collections; create Stream from values; create Stream from Arrays; cra ...

  8. 【js】什么是函数节流与函数去抖

    函数节流 意思:节省流量,不会一直访问. | 指定时间内不执行,指定时间后执行. | 一段时间内只执行一次 场景: 比如控制游戏人物攻击,时间内就算按得很快,也只能砍一刀,过后才能砍第二刀. 搜索引擎 ...

  9. Scala的集合框架

    1.元组 定义方式:val tp=("nana',1,1.1) 特点:集合中的数据可以是不同类型的 最多只能放22个元素 取值:通过角标取值,这里的角标是从1开始的,元组名称._角标   t ...

  10. Java ——多线程编程

    本节重点思维导图 多线程编程