//环境
Truffle v5.5.21 (core: 5.5.21)
Ganache v7.2.0
Solidity v0.5.16 (solc-js)
Node v14.17.3
Web3.js v1.7.4

一、用truffle框架在本地部署智能合约

1.建个文件夹 truffle_demo

mkdir truffle_demo

2.进入文件夹内,执行init命令,会搭建基本框架出来

truffle init

3.在contracts下新建一个文件,比如DataDemo.sol

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;
contract DataDemo{string public returnTest;//set方法function setData(string memory str ) public payable {returnTest = str;}//get方法function getData() public view returns (string memory) {return returnTest;}
}

4.修改migrations/1_initial_migration.js

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

5.修改truffle-config.js,把networks里的development放开

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

6.打开Ganache,选择QUICKSTART

7.truffle_demo文件夹下执行两个命令,执行migrate的时候会输出合约地址

truffle compiletruffle migrate

8.此时打开Ganache,点击TRANSACTIONS,可以看到合约已经部署成功

二、通过web3.js连接合约

1.建个文件夹web3_test,然后进入文件夹,执行npm初始化

mkdir web3_testnpm init

2.下载web3

npm install web3 --save//如果网络问题下载不出来,先切换成淘宝地址。
//npm config set registry https://registry.npm.taobao.org
//再执行npm install web3 --save

3.在web3_test下建一个js文件(连接合约),一个json文件(存合约的abi json字符串)

4.打开合约项目,在truffle_demo/build/contracts下找到DataDemo.json,打开该文件,把里面的abi复制到建好的abi.json中(只需要复制冒号后面的字符串)

5.在js文件中输入

var Web3 = require("web3");
var web3 = new Web3();
web3.setProvider(new Web3.providers.HttpProvider("http://localhost:7545"));var fs = require("fs");
var abi =JSON.parse(fs.readFileSync("./abi.json", "utf-8"));
//address取Ganache中的Created Contract Address
var address = '0x52c7917228D4b19b086d6E15efc5873e24096Dde';
var data = new web3.eth.Contract(abi,address);data.methods.getData().call(null,function(error, result){console.log("1.   the data:"+result);
});
//fromAddress取Ganache中的From Address
data.methods.setData("hello").send({from: '0x00C47333aA9fa968D37c2fc99D4cc8ce59Cd94C4'}).on('transactionHash', function(hash){console.log("2.   hash:", hash);data.methods.getData().call(null,function(error, result){console.log("3.   the data:"+result);});
});

其中address和fromAddress分别在下图的位置

6.执行 node.exe index.js 查看结果

web3入门-web3.js通过Ganache连接truffle智能合约相关推荐

  1. web3.js(三)查询智能合约币数量(erc20)

    需要获取到智能合约地址+智能合约ABI 1.打开https://etherscan.io/ 搜索cmt,跳转到该页面,点击红色区域,跳转到智能合约地址 2.address是智能合约地址,点击Contr ...

  2. 【web3】geth使用笔记(二)——智能合约DEV环境搭建

    启动ETH DEV模式 geth --dev --http --http.api eth,web3,personal,net --http.corsdomain "https://remix ...

  3. web3@0.20.1 在依据abi创建智能合约的时候报错 TypeError: web3.eth.contract is not a function

    前面的代码不变 var web3 = new Web3(new Web3.providers.HttpProvider("Http://localhost:8545")); var ...

  4. 在Etherscan上自动验证Truffle智能合约

    安装并启用truffle-plugin-verify 使用npm或yarn安装truffle插件: npm install -D truffle-plugin-verify yarn add -D t ...

  5. eos 连接mysql_EOS智能合约中数据库的使用与常见问题

    阅读本文前,您需要熟悉eos节点的操作流程,熟悉cleos客户端基础指令,并且对自定义合约的开发有着一定的了解. 操作系统:MAC OS 10.13.x,EOSIO版本号:1.1.3 背景 在EOS自 ...

  6. 智能合约 web3.js ABI Address三者的关系

    web3.js是以太坊提供的一个Javascript库,它封装了以太坊的JSON RPC API,提供了一系列与区块链交互的Javascript对象和函数,包括查看网络状态,查看本地账户.查看交易和区 ...

  7. MIMIC 以太坊医疗项目开发(6)Web3智能合约API

    web3.js是一个库集合,你可以使用HTTP或IPC连接本地或远程以太它节点进行交互. 它具备如下性质: •通过JSON-RPC与Ethereum客户端进行交互 •支持所有的JSON-RPC方法类型 ...

  8. 智能合约及其web3共识机制

    目录 什么是共识? 什么是共识机制? 共识机制的目标 为什么需要共识机制? 如何评价一个共识机制的优劣: 共识机制分类 PoW( Proof of Work)工作量证明:多劳多得 PoS(Proof ...

  9. 以太坊智能合约开发(truffle box pet-shop为例)

    开发环境 我在ubuntu环境下开发的,建议装好vscode,nodejs .选用别的编译器也可以. 装好nodejs后装一下truffle. npm install -g truffle truff ...

最新文章

  1. Visual Studio 15.7预览版4改进Git、C++支持
  2. python的延时函数delay_ESP32玩转MicroPython(三) 延时、计时 和GPIO操作
  3. IIS部署详细步骤、包括错误的解决办法、使用localDB
  4. Java8 中用法优雅的 Stream,性能也优雅吗?
  5. 深入剖析Redis系列(五) - Redis数据结构之字符串
  6. lts安装 rust ubuntu_一起学Rust编程「1」:开发环境
  7. mysql数据库1对n_MySQL数据库InnnoDB引擎事务说明
  8. python怎么接收udp报文_面试官:说说UDP和TCP的区别及应用场景
  9. 测试对等网络的连通性
  10. cf319.B. Modulo Sum(dp 鸽巢原理 同余模)
  11. 离散数学 习题篇 —— 最小生成树
  12. Vue3简单实现元素周期表
  13. 零基础学python这本书怎么样-怎样学 Python?
  14. CNN Explainer
  15. Typora:Typora快捷键
  16. Metaverse 元宇宙入门-02-Hardware 硬件与元宇宙
  17. c语言日期加减天数,日期计算器
  18. html文字自动放大缩小单位,如何css控制字体按百分比放大缩小
  19. 利用Javascript生成txt文本文件
  20. python输入一个字符串、计算其中小写字符的个数_利用键盘录入,输入一个字符串,统计该字符串中各个字符的数量,并输出(c/c++实现)...

热门文章

  1. 边锋围棋-基于英特尔®实感技术的应用案例
  2. Android项目导出apk
  3. 基于EasyX 的五子棋小游戏。
  4. Mythical Man-Month, 人月神话
  5. Mac 系统如何在多个jdk版本之间切换
  6. 从零开始,教你用Webpack构建React基础工程
  7. 微服务自动化.01etcd基本介绍
  8. java抽奖概率抽奖
  9. 小型教育网站的开发与建设-开篇(一)
  10. Python读写Excel表格,就是这么简单粗暴又好用