先了解相关指令,再观看比较合适:http://truffle.tryblockchain.org/

安装:

先完成上一条博客的安装,再来进行下面的操作:http://www.cnblogs.com/tianlongtc/p/8877579.html

#第一个终端

sudo apt install npm  #安装npm

sudo npm install npm@latest -g  #升级npm

sudo npm install -g n  #安装nodejs的模块n

sudo n stable  #下载nodejs稳定版 

sudo npm install -g truffle  #安装truffle框架

一条一条复制粘贴,好,你的环境搭好了

部署项目:

这里我直接连接到geth客户端,而不是选择连接到testrpc,尽管testrpc使用比geth方便多了

连接到testrpc端的博客有许多,需要的可以自行百度。

#第一个终端

cd /usr/local

mkdir mytest && cd mytest

truffle unbox metacoin  #生成默认demo

开启geth

新开两个终端:(确保geth已经完成相关部署):http://www.cnblogs.com/tianlongtc/p/8877579.html

#第二个终端

geth --networkid 15 --datadir data --rpc --rpcaddr 108.61.218.173 --rpcport 8545 --nodiscover --port 80 --unlock 0 --ipcpath "/root/.ethereum/geth.ipc"

#第三个终端

geth attach  #连接到geth

personal.unlockAccount(eth.accounts[0])  #解锁账户1

指定网络

#第一个终端

cd /usr/local/mytest

vim truffle.js  #下面这段拷进去,注意修改live中的地址

module.exports = {
// See <http://truffleframework.com/docs/advanced/configuration>
// to customize your Truffle configuration!
networks: {
development: {
host: "127.0.0.1",
port: 8588,
network_id: "*"
},
live: {
host:"108.61.218.173",
port: 8545,
network_id: 15,
gas: 4612388,
}

}

}

新建合约

#第一个终端

cd /usr/local/mytest/contracts

vim Adoption.sol   #把下面这段拷进去,对齐什么的别理啦,拷过来就这样了,不管了

pragma solidity ^0.4.4;

contract Adoption {

address[16] public adopters; //存储地址

//采用一个宠物
function adopt(uint petId) public returns (uint) {
require(petId >= 0 && petId <= 15);

adopters[petId] = msg.sender;

return petId;
}

//返回采用者
function getAdopters() public returns (address[16]) {
return adopters;
}
}

部署合约

#第一个终端

cd /usr/local/mytest/migrations

vim 2_deploy_contracts.js    #下面这段拷进去

var Adoption = artifacts.require("./Adoption.sol");

module.exports = function(deployer) {

  deployer.deploy(Adoption);

};

调用合约

#第一个终端,下面很多操作需要到终端三进行挖矿操作,确认交易,由于我提前部署,忘记那些了,遇到指令卡住不执行,先试试到终端三执行, miner.start(),也可以在合约三执行txpool.status 查看是否有未确认的交易

truffle console --network live  #连接到geth

compile     #编译

migrate  #移植

deploy   #部署

Adoption.deployed().then(instance => contract = instance)  #实例化Adoption

contract.adopt(6)  #执行合约函数,领养宠物

contract.getAdopters()  #查看宠物主人

参考博客:

http://truffleframework.com/docs/getting_started/javascript-tests

https://blog.csdn.net/diandianxiyu_geek/article/details/78361621

http://truffle.tryblockchain.org/

利用truffle与智能合约进行交互的更多相关文章

  1. 使用Truffle 部署智能合约

    使用Truffle 部署智能合约 之前我们使用Geth,原生的以太坊Golang工具,分析了创世区块的参数内容,在本地创建了私有以太坊区块链,并使用两个账户进行了挖矿和转账操作,对以太坊有了基本了解. ...

  2. 以太坊系列之十六: 使用golang与智能合约进行交互

    以太坊系列之十六: 使用golang与智能合约进行交互 以太坊系列之十六: 使用golang与智能合约进行交互 此例子的目录结构 token contract 智能合约的golang wrapper ...

  3. 如何使用Web3在浏览器中与智能合约进行交互

    2018-4-20 技术文章 Web3.js是以太坊官方的Javascript API,可以帮助智能合约开发者使用HTTP或者IPC与本地的或者远程的以太坊节点交互.实际上就是一个库的集合,主要包括下 ...

  4. truffle 发布 智能合约

    参考 这篇https://www.codeooze.com/blockchain/ethereum-geth-private-blockchain/ 说的已经很详细了 genesis.json 过时了 ...

  5. Truffle 4.0、Geth 1.7.2、TestRPC在私有链上搭建智能合约

    目录 目录 1.什么是 Truffle? 2.适合 Truffle 开发的客户端 3.Truffle的源代码地址 4.如何安装? 4.1.安装 Go-Ethereum 1.7.2 4.2.安装 Tru ...

  6. BOOM -- 智能合约编程

    译注:原文首发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队.如果您想要获取更多及时信息,可以访问ConsenSys首页点击左下角Newsletter订阅邮件.本文的翻 ...

  7. 区块链入门到实战(27)之以太坊(Ethereum) – 智能合约开发

    智能合约的优点 与传统合同相比,智能合约有一些显著优点: 不需要中间人 费用低 代码就是规则 区块链网络中有多个备份,不用担心丢失 避免人工错误 无需信任,就可履行协议 匿名履行协议 以太坊(Ethe ...

  8. 基于Fisco-Bcos的区块链智能合约-简单案例实践

    一.智能合约介绍 智能合约是指把合同/协议条款以代码的形式电子化地放到区块链网络上.FISCO BCOS平台支持两种智能合约类型:Solidity智能合约与预编译智能合约 Solidity与Java类 ...

  9. EOS之hello智能合约解析

    传送门: 柏链项目学院   EOS的智能合约与以太坊区别很大, EOS 的智能合约基于 WebAssembly(WASM) 技术执行用户生成的应用程序和代码.WASM是一项新兴的网络标准,得到了谷歌, ...

随机推荐

  1. 03安卓TextView

    一  TextView    父类 : View     >概念:文本控件 :文本内容的显示   默认配置不可编辑  子类EditText可以编辑 *********************** ...

  2. python 内存数据库与远程服务

    python 内存数据库与远程服务 需要import的python 内存数据库代码参考下面的链接: http://blog.csdn.net/ubuntu64fan/article/details/5 ...

  3. 尚学堂马士兵struts2 课堂笔记(四)

    27 结果类型 主要就四种种 dispatch和rediret chain和drdirectaction <package name="resultTypes" namesp ...

  4. ROS_Kinetic_09 ROS基础内容(四)

    ROS_Kinetic_09 ROS基础内容(四) 参考网址: http://wiki.ros.org/cn/ROS/Tutorials/UsingRosEd http://wiki.ros.org/ ...

  5. C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型

    Technorati 标签: C,标识符,作用域,命名空间,链接属性,生命周期,存储类型,scope,name space,linkage,storage durations,lifetime 无论学 ...

  6. Mahout推荐算法之SlopOne

    Mahout推荐算法之SlopOne 一.       算法原理 有别于基于用户的协同过滤和基于item的协同过滤,SlopeOne采用简单的线性模型估计用户对item的评分.如下图,估计UserB对 ...

  7. (NO.00002)iOS游戏精灵战争雏形(十二)

    首先要声明的是,前几篇实现的shoot方法不是一定会命中目标,这取决于目标运行的速度,子弹的速度,子弹发射的时机以及弹道路径中是否有障碍物等等. 这也是符合实际情况的.如果你的要求是一旦发出子弹必定击 ...

  8. Linux进程实践(2) --僵尸进程与文件共享

    孤儿进程与僵尸进程 孤儿进程: 如果父进程先退出,子进程还没退出那么子进程的父进程将变为init进程.(注:任何一个进程都必须有父进程) //生成孤儿进程 int main(int argc, cha ...

  9. 15_Android中任务栈

     1.一个应用程序一般都是由多个activity组成的. 2.任务栈(task stack)(别名backstack后退栈)记录存放用户开启的activity的. 3.一个应用程序一被开启系统就给 ...

  10. JAVA之旅(六)——单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖

    JAVA之旅(六)--单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖 java也越来越深入了,大家加油吧!咱们一步步来 一.单例设计模式 什么是设计模式? JAVA当中有 ...