使用Ganache,web3js和remix在个人区块链上部署并调用合约

这篇具有很好参考价值的文章主要介绍了使用Ganache,web3js和remix在个人区块链上部署并调用合约。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

相关准备

Ganache是一个运行在本地的个人区块链,适用于以太坊的开发者。
首先我们需要下载Ganache
ganache 教程,区块链开发,区块链,智能合约
web3js的中文文档
remix英文版的网址

开始

有以上的准备之后我们就可以开始了
首先启动Ganache
ganache 教程,区块链开发,区块链,智能合约
这就是Ganache的主页面,下面有10个供我们使用的账号,上面有他们的地址以及余额,我们暂时需要记住的只有RPC SERVER的地址,如上图红色箭头所示
这时候我们不要关闭Ganache

开发环境搭建

先找到一个合适的文件夹下(需要node和npm)
然后创建项目的文件夹并进入
在该目录下安装web3模块(npm --registry http://registry.npm.taobao.org install web3)
ganache 教程,区块链开发,区块链,智能合约
安装成功之后在执行npm init 命令之后一直回车,完成之后执行**code .**打开vscode编辑器

获取链上信息

在主目录下创建index.js文件即可,当前我们的项目目录如下ganache 教程,区块链开发,区块链,智能合约
我们先来尝试一下获取Ganache中给予我们的十个账户地址

var localhost = "http://127.0.0.1:7545"
var Web3 = require("web3")
var web3 = new Web3(new Web3.providers.HttpProvider(localhost))
web3.eth.getAccounts(function (error, result) {
    console.log("账户列表地址:");
    console.log(result);
});

输入以上的代码,并在vs中新建终端,输入node index.js,便可以看到十个账户的地址已经被打印出来
ganache 教程,区块链开发,区块链,智能合约

部署合约

浏览器打开remix的网址(上面已给出),由于我们是测试,可以选一个较为简单的合约部署,如他上面的1_Storage.sol(一个简单存数字的合约)
ganache 教程,区块链开发,区块链,智能合约
然后点击左侧的按钮并编译
ganache 教程,区块链开发,区块链,智能合约
编译后我们可以看到编译成功,点击最下方的Compilation Details可以查看编译的详情有各种的信息,我们这里需要的是WEB3DEPLOY,如下可视
ganache 教程,区块链开发,区块链,智能合约
WEB3DEPLOY里面的代码复制到我们代码的最后方,把里面的web3.eth.accounts[0]替换为我们自己的地址account_1(在Ganache给我们的十个账户中随便选一个就行),替换后的代码如下
ganache 教程,区块链开发,区块链,智能合约
此时再在vs的终端中执行node index.js可以看到应该已经部署成功ganache 教程,区块链开发,区块链,智能合约
这时候我们再回Ganache看看
ganache 教程,区块链开发,区块链,智能合约

点击最上方的BLOCKS再点最上方生成的块即可看到交易的信息,可以看到TX HASH的地址和我们输出的地址一样,说明我们的合约已经在Ganache上部署成功了,接下来我们就可以拿到上面的合约地址调用合约了

合约调用

首先将我们刚刚部署号的合约地址,data(从WEB3DEPLOY中复制出来的代码里面)以及ABI加到我们的代码里
ganache 教程,区块链开发,区块链,智能合约

合约地址是我们部署到Ganache里合约的地址,上图有标注,ABI可以在
remix中编译详情下方复制
ganache 教程,区块链开发,区块链,智能合约
接下来我们就可以尝试调用1_Storage.sol中的方法了,完整代码如下

var localhost = "http://127.0.0.1:7545"

var account_1 = "0xA9953f1087FcF2a13ce3E91f80658717Ee896Ef0"

var contractAddress = "0xAE199c9430BDa2D6565bE6dde00E3B49D8601a5b"
var contractABI = [
	{
		"inputs": [],
		"name": "retrieve",
		"outputs": [
			{
				"internalType": "uint256",
				"name": "",
				"type": "uint256"
			}
		],
		"stateMutability": "view",
		"type": "function"
	},
	{
		"inputs": [
			{
				"internalType": "uint256",
				"name": "num",
				"type": "uint256"
			}
		],
		"name": "store",
		"outputs": [],
		"stateMutability": "nonpayable",
		"type": "function"
	}
]
var data = "608060405234801561001057600080fd5b50610150806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632e64cec11461003b5780636057361d14610059575b600080fd5b610043610075565b60405161005091906100d9565b60405180910390f35b610073600480360381019061006e919061009d565b61007e565b005b60008054905090565b8060008190555050565b60008135905061009781610103565b92915050565b6000602082840312156100b3576100b26100fe565b5b60006100c184828501610088565b91505092915050565b6100d3816100f4565b82525050565b60006020820190506100ee60008301846100ca565b92915050565b6000819050919050565b600080fd5b61010c816100f4565b811461011757600080fd5b5056fea2646970667358221220404e37f487a89a932dca5e77faaf6ca2de3b991f93d230604b1b8daaef64766264736f6c63430008070033"

var Web3 = require("web3")
var web3 = new Web3(new Web3.providers.HttpProvider(localhost))

var Storage_Contract = new web3.eth.Contract(contractABI, contractAddress)

Storage_Contract.options.data = data;
Storage_Contract.methods.store(10).send({ from : account_1}, function (error, result) {
    console.log("结果_store:" + result);
})

// Storage_Contract.methods.retrieve().call({ from : account_1}, function(error, result) {
//     console.log("结果_retrieve: " + result);
// })

可以先把下面retrieve方法注释掉执行上面的store方法,完成代码之后在下面终端执行node index.js,可见ganache 教程,区块链开发,区块链,智能合约
可在Ganache中查看到对应的交易记录,那就是调用接口成功了,如下
ganache 教程,区块链开发,区块链,智能合约
然后我们注释掉上面的store方法,执行下面的strieve方法,可以看到输出如下
ganache 教程,区块链开发,区块链,智能合约
说明我们以及调用该接口成功并得到了对应的值了。

最后

有了这一步的基础,我们就可以愉快地开发属于我们自己的dapp了
敬请期待文章来源地址https://www.toymoban.com/news/detail-805294.html

到了这里,关于使用Ganache,web3js和remix在个人区块链上部署并调用合约的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Web3】 Web3JS Pay Api

    Web3Network.eth.sendSignedTransaction(serializedTx) 参数: from - String|Number :发送帐户的地址。如果未指定,则使用web3.eth.defaultAccount属性。或web3.eth.accounts.wallet中本地的地址。 to - String :(可选)消息的目标地址,若未定义则为发送消息。 value - Number|String|BN|BigNumber :(可选)为wei中的交易

    2024年02月16日
    浏览(25)
  • 使用nodejs和web3js来实现链接MetaMask钱包并取消风险代币授权

    随着区块链技术的快速发展,数字货币资产在投资及交易市场中得到了广泛的应用。而在数字货币交易过程中,钱包是一个非常重要的环节。比如MetaMask就是一款非常流行的区块链钱包,它可以让用户在浏览器中安全地管理自己的数字资产。 然而,在数字货币交易过程中也存

    2024年01月23日
    浏览(40)
  • 以太坊Dapp通过web3js部署调用智能合约

    参考视频:https://www.bilibili.com/video/BV14z4y1Z7Jd?p=1 https://remix.ethereum.org/ 创建一个新的文件夹 mkdir MyDapp2 启动 ganache-cli 下载web3 npm install web3 ,注:ganache的启动和deploy.js要在同一个目录。 先进行测试 node deploy.js 部署合约 web3的版本:1.7.1 复制 WEB3DEPLOY 的内容到deploy.js == ganache需要

    2023年04月23日
    浏览(33)
  • HTML页面通过Web3JS连接智能合约并调用其中接口

    之前我们学习solidity 并用它编写了智能合约 登上区块链 然后也做了基本的测试 但是 其实在web3时代 前端依旧扮演者非常重要的角色 我们现在就来打通web3 从合约到页面的一个管理 首先 我们还是将自己的ganache环境起起来 然后 在我们之前智能合约的项目终端执行 将我们的智

    2024年02月16日
    浏览(39)
  • web3Js(干货)(多签的流程原理)看完这一篇就懂了(波场网络-请勿用于除学习外其他用途)

    连接波场网络: 其中APIKEY可以在官网获取; 可以使用tronWeb.isConnected()判断是否连接成功 创建离线波场地址: 该地址未激活,如果需要激活, 通常需要一定数量的 TRX(TRON 的本地代币)用于支付激活费用; 等待区块确定 就可以查看激活信息; 创建随机助记词与私钥: 如何让

    2024年02月04日
    浏览(61)
  • 【WEB3】如何使用Web3J库开发应用连接到以太坊区块链网络

    ​ Web3j 是一个与以太坊智能合约交互并与以太坊节点集成的 Java 库。它是高度模块化、类型安全和反应式的,专为以太坊上的 Java 和 Android 开发而构建。Web3j 消除了编写自定义集成代码以连接到以太坊区块链网络的开销。 通过 HTTP 和 IPC 实现完整的 Ethereum JSON-RPC客户端 API,

    2024年02月02日
    浏览(41)
  • 以太坊主网络和ropsten网络区别,Remix IDE Environment;javascript VM 和injected web3区别;Web3.0是什么;ganache是什么

    目录 以太坊的测试网络 Ropsten Kovan Rinkeby Remix IDE Environment javascript VM 和injected web3区别

    2023年04月08日
    浏览(28)
  • Web3通过ganache运行起一个本地虚拟区块链

    通过文章 Web3开发准备工作 手把手带你创建自己的 MetaMask 账号大家简单的对网络 有了个比较模糊的概念 不同的网络连接这不同的区块链 那么 我们就要搞清楚 我们切换不同的网络 我们的数字资产是不一样的 在这里 我们需要先安装一个插件工具 ganache 我们先在本地创建一个

    2024年02月11日
    浏览(29)
  • Java Web3J :使用web3j监听、查询、订阅智能合约的事件

    前面有文章写如何使用Docker-compose方式部署blockscout浏览器+charts图表,区块链浏览器已经部署成功了,同时我们在链上增加了治理投票流程,如何实时的把治理事件快速同步到浏览器呢?这时就想到了Web3J来监听智能合约的事件,来达到同步事件的效果

    2024年02月09日
    浏览(32)
  • Java Web3J :使用web3j调用自己的智能合约的方法(教程)

    代码世界有很多令人大呼小叫的技巧!有的代码像魔术师一样巧妙地隐藏了自己,有的像魔法师一样让你眼花缭乱,还有的像瑜伽大师一样灵活自如。它们让我们惊叹不已,让我们觉得自己仿佛置身于编码的魔幻世界。快来分享你见过哪些令你膛目结舌的代码技巧吧! web3j是

    2024年02月04日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包