利用truffle与智能合约进行交互

系统 ubuntu 17.10 , 心好痛,又买了一个

强烈建议使用xshell进行前期的测试工作,很容易管理几个终端,如下图,连开5个终端,4个进行实验,1个查看相关文件参数,比原来在虚拟机方便好多

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

安装:

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

#第一个终端

sudo apt install npm  #安装npm

sudo npm install [email protected] -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/

原文地址:https://www.cnblogs.com/tianlongtc/p/8886217.html

时间: 2024-11-16 00:16:40

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

使用Go语言与Ethereum智能合约进行交互

尽管最近出现了麻烦,但Ethereum仍然是区块链空间中实现智能合约最重要的系统,而且这种情况似乎不太可能很快改变. 在我看来,技术本身具有很大的潜力,从学术的角度来看是非常有趣的,但正如前面提到的问题,之前展示出来了很多问题,区块链技术,智能合约,特别是带有Solidity的Ethereum生态系统是非常不成熟的,而且也没有准备好的黄金时段/生产用例. 然而,这是学习和了解这种技术的一个很好的机会,能够在应用程序奔溃前提前做准备. 在我之前的一篇文章中,我创建了一个小型应用程序,其中包含一个简

python如何使用web3py与以太坊投资智能合约交互

在以太坊和其他区块链中,仍有很多被证明的概念正在实施,开发人员在尝试如何应对这些新概念.作为dInvest 系列文章一部分,我也在研究以太坊并尝试在区块链中实施对冲基金.在上一篇文章中,我讨论了如何在python中启动和运行定量框架.在这篇文章中,我将介绍如何将python程序与以太坊智能合约集成.出于这样或那样的原因,可能也面临着这个问题,尽管以太坊提供了图灵完备语言,但并不是所有事情都能完成. 假设你已经在以太坊创建了一个简单的教程合约,现在想要看一些更高级的东西.我个人喜欢ManuelAr

以太坊智能合约部署与交互

启动容器来执行geth命令 [email protected]:~# docker run -i blockchain101/ethereum-geth:1.6.5 geth attach http://45.32.252.88:8201 Welcome to the Geth JavaScript console! instance: Geth/01/v1.6.5-stable/linux-amd64/go1.8 coinbase: 0x4c57e7e9c2f728046ddc6e960520

2018年以太坊智能合约开发语言Solidity最佳IDEs

Solidity是一种以智能合约为导向的编程语言.这是一种只有四年的年轻语言,旨在帮助开发基于以太坊数字货币的智能合约. 理解它官方文档应该是学习Solidity的最佳来源:solidity.readthedocs.io 想在以太坊的网络上建立自己的加密货币吗?想拥有自己的初始代码产品吗?以下是您今天可以使用的最佳Solidity IDE. Remix IDE Remix IDE是基于浏览器的,并且集成了编译器.没有服务器端组件. 官网: https://remix.ethereum.orggi

由Trust Wallet理解以OA信用盘平台出售带杀大赔小功能太坊钱包管理和智能合约

钱包管理钱包管理就要提到OA信用盘平台出售带杀大赔小功能QQ2952777280 话仙论坛http://hxforum.com 一个类EtherKeystore, 应用的核心业务的处理类, 有钱包管理(创建.删除.导入.导出).助记词转化.签名工作.私钥管理等功能.EtherKeystore中使用了由Trust开源的了两个库: TrustKeystore: 用于管理钱包的通用以太坊密钥库.TrustCore: 区块链核心的数据结构和算法.还有CryptoSwift, 一个标准的安全加密算法集合的

【刘文彬】【精解】开发一个智能合约

原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/contract.html 智能合约 这两天被老大搞去搬砖,学习计划有变但无大碍,这篇文章将仔细分析智能合约相关内容. 关键字:智能合约,remix,Solidity,truffle,geth,leveldb,datadir,ganache,web3j 合约 合约也称合同.协议,是甲乙双方参与的,制定一系列条目规范双方权利与义务的文件.智能合约是电子化的,自动执行的,去中心化的,具有不可抵赖性,本质上它

以太坊智能合约及应用开发简介

在这个入门教程中我们将建立以太坊应用开发环境并学习编写一个投票智能合约. 在这个教程中,让我们构建一个简单的"Hello World!" 应用程序, 这是一个投票应用程序. 该应用程序非常简单,它所做的只是初始化一组候选人,让任何人投票给候选人,并显示每个候选人收到的总票数. 我有意避免使用任何DAPP框架构建这个应用程序,因为框架抽象掉很多细节,你不了解系统的内部.此外,当你使用框架时,将对框架所做的繁重工作有更多的体会! 1. 设置开发环境 我们使用一个模拟的内存区块链(ganac

web3j开发以太坊智能合约快速入门(特别适合java和android开发者)

web3j简介 web3j是一个轻量级.高度模块化.响应式.类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成. 可以通过它进行以太坊区块链的开发,而无需为你的应用平台编写集成代码. 可以快速启动dmeo示例 想要快速启动的话,有一个Web3j demo示例项目可用,演示了通过Web3j开发以太坊的许多核心特征,其中包括: 连接到以太网网络上的节点 加载一个以太坊钱包文件 将以太币从一个地址发送到另一个地址 向网络部署智能合约 从

如何用python和flask以太坊智能合约开发

将数据存储在数据库中是任何软件应用程序不可或缺的一部分.无论如何控制该数据库都有一个该数据的主控.区块链技术将数据存储到区块链网络内的区块中.因此,只要某个节点与网络同步,它们就会获得区块中数据的副本.因此,该技术中没有特定的数据主控. 在本教程中,我们将编写一份智能合约(我将进一步解释),以便在区块链上保留用户数据.我们将使用python web3(web3的python库)来开发和部署智能合约.一旦我们在区块链上部署了智能合约.我们将使用flask API与智能合约进行交互以存储一些数据/信