当前位置: 首页 > news >正文

网站设计 开发人员中国建设网官方网站建筑工程税率

网站设计 开发人员,中国建设网官方网站建筑工程税率,网页小游戏制作,网站建设合同细节以下是通过truffle框架将智能合约部署到Ganache的步骤 Truffle简介环境准备:智能合约 编写 & 编译部署合约本地服务器ganache配置网络配置部署合约: 运行Truffle迁移(部署):与智能合约交互: 以下是通过truffle框架将智能合约部署到Ganach…

以下是通过truffle框架将智能合约部署到Ganache的步骤

      • Truffle简介
      • 环境准备:
      • 智能合约 编写 & 编译
      • 部署合约
        • 本地服务器ganache配置
        • 网络配置
        • 部署合约:
      • 运行Truffle迁移(部署):
      • 与智能合约交互:

  • 以下是通过truffle框架将智能合约部署到Ganache的步骤。

Truffle简介

  • Truffle是一个开发框架,用于编写、编译、测试和部署智能合约。
  • 官方文档:https://learnblockchain.cn/docs/truffle/quickstart.html

在这里插入图片描述

环境准备:

  • npm install -g truffle // 安装Truffle
  • truffle init // 初始化Truffle项目 : 创建没有合约的空工程(三个空文件夹和一个配置文件) 初始化Truffle项目后会生成以下文件内容:
目录/文件描述
contracts/Solidity合约目录
migrations/部署脚本文件目录
test/测试脚本目录,参考 如何测试合约于应用?
truffle-config.jsTruffle 配置文件

智能合约 编写 & 编译

  • contracts/目录下创建一个新的合约文件MyContract.sol。以下是一个简单的Solidity合约示例:

    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.0;contract MyContract {string public message;constructor(string memory _message) {message = _message;}function setMessage(string memory _newMessage) public {message = _newMessage;}function getMessage() public view returns (string memory) {return message;}
    }
    
  • 在Truffle项目目录中,运行以下命令编译合约:

    truffle compile --all
    
  • 编译后,会在build/目录中生成合约的ABI和字节码。
    在这里插入图片描述

部署合约

本地服务器ganache配置

ganache 是一个区块链模拟器,用于在本地快速启动一个区块链网络,方便进行以太坊智能合约的开发、测试和调试。以下是 ganache 的安装和配置步骤:

  • 安装&配置ganache-ui:
    • 从Ganache官网下载安装。
    • 启动Ganache,选择"Quickstart"或"New Workspace",这会启动一个本地以太坊区块链。
  • 安装&配置ganache-cli:
    • ganache-cli使用 ethereumjs 来模拟完整的客户端行为,使开发 Ethereum 应用程序更快、更轻松、更安全: npm install -g ganache-cli

    • 安装完成后,可以通过ganache-cli命令启动。运行后,ganache-cli 会启动一个本地的以太坊区块链网络,默认监听 127.0.0.1:8545。它会自动生成一组测试账户,并输出账户地址、私钥和初始余额。

网络配置
  • 编辑truffle-config.js文件,在module.exports里添加一个Ganache网络配置:

    module.exports = {networks: {development: { //  The `development` name is special - truffle uses it by defaulthost: "127.0.0.1",     // Ganache的默认主机port: 7545,            // Ganache的默认端口network_id: "*",       // 匹配任何网络ID}},compilers: {solc: {version: "0.8.0",      // 确保Solidity版本与合约一致}}
    };
    
部署合约:
  • migrations/目录中创建一个新的部署脚本1_deploy_contracts.js

    const MyContract = artifacts.require("MyContract");module.exports = function(deployer) {deployer.deploy(MyContract, "Hello, Ganache!");  // 传递合约构造函数的参数
    };
    
  • 请注意,文件名以数字为前缀,后缀为描述。 编号前缀是必需的,以便记录迁移是否成功运行。 后缀纯粹是为了人类的可读性和理解力。

运行Truffle迁移(部署):

  • 运行以下命令,将智能合约部署到本地的Ganache:
truffle migrate
  • 如果成功,将在终端看到合约的部署地址和交易哈希:
➜  workspace git:(main) ✗ truffle migrateCompiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.Starting migrations...
======================
> Network name:    'development'
> Network id:      1729253904535
> Block gas limit: 6721975 (0x6691b7)1_deploy_contracts.js
=====================Deploying 'MyContract'----------------------> transaction hash:    0xe988ba8520d9615713e7f1789df1cb072b63219f95ec7adbc1c278aac603ad82> Blocks: 0            Seconds: 0> contract address:    0x4Df552fC25A888fC7F792336cD730b9557093828> block number:        1> block timestamp:     1729254735> account:             0x12D5297B2BC267c2744f0feD9CdE75517ae9e8E9> balance:             99.99268388> gas used:            365806 (0x594ee)> gas price:           20 gwei> value sent:          0 ETH> total cost:          0.00731612 ETH> Saving artifacts-------------------------------------> Total cost:          0.00731612 ETHSummary
=======
> Total deployments:   1
> Final cost:          0.00731612 ETH
  • 相应的ganache-cli窗口输出:
➜  workspace git:(main) ✗ ganache-cli
Ganache CLI v6.12.2 (ganache-core: 2.13.2)Available Accounts
==================
(0) 0x12D5297B2BC267c2744f0feD9CdE75517ae9e8E9 (100 ETH)
(1) 0xA93b4B4f9f40527b5D86eF3621Ab4fb55BE281E8 (100 ETH)
(2) 0xE7DdbEC43D86aE23056cF5581d7D120b41D93248 (100 ETH)
(3) 0x44BCF5058eB95eD5adD4E248AcfF6A1aea5a2519 (100 ETH)
(4) 0x547184E5C9aC0348Deb933c590C6Cb78aB9cecFf (100 ETH)
(5) 0xd4C82Ae01f95b7B12d92E7a8B47478CBAE77C562 (100 ETH)
(6) 0x44B75857234B696B8cea72F3c427683fF5323f12 (100 ETH)
(7) 0x8c2eF5456E31B2b1459716165CB605327B334882 (100 ETH)
(8) 0x4b0FD868C085d6B9b7A8B62298B4bCFb7f3769a1 (100 ETH)
(9) 0xe46A1b806103A60d92404A09c61617273b8e6dEa (100 ETH)Private Keys
==================
(0) 0x07327b119a204389d69a02b9136705b1067f5d968b22878d8f41f23733ff62ca
(1) 0xfc069a75ff3a18a08f4fafe442e276d0de4c157ea10c8d3b2f17211bb5c94a8a
(2) 0x8e20cfa72180812c0079e79e750344108449e4f1365d835ab59893a2ed22edea
(3) 0xac77c1975b2ae054c912e62cdf029801c19c4d628bc81b1136d6269d83b553f0
(4) 0x43655a225f3da0ff9fb80012d3997d2a6b99f5b04f5e5d0147f735503e09e7e2
(5) 0xa15f7b04deee6a1c6b2f42786096db257ce0c98a51dc818255f2cd126736e528
(6) 0x3337be6e13fc27d0bbd6c208e6a25b4fc1d57d1df789c3033c042e0302dbeb2a
(7) 0x7ae3ab9e4ca935eef800d4e4875014ad2194e3ba1f74c95fad16c308cac5a6aa
(8) 0xad3b9f7c0f29e8d5955de28aa66bb7374d730fac521e9bd308838c955876a4e2
(9) 0xdc0cffd4ebbcc4a94fced27f8a434bab5f788b72da49ac6e1f5742e2e8170bf7HD Wallet
==================
Mnemonic:      blade tree catalog abuse curve woman round jewel hard civil antenna load
Base HD Path:  m/44'/60'/0'/0/{account_index}Gas Price
==================
20000000000Gas Limit
==================
6721975Call Gas Limit
==================
9007199254740991Listening on 127.0.0.1:8545
eth_blockNumber
net_version
…………
eth_gasPrice
eth_sendTransactionTransaction: 0xe988ba8520d9615713e7f1789df1cb072b63219f95ec7adbc1c278aac603ad82Contract created: 0x4df552fc25a888fc7f792336cd730b9557093828Gas usage: 365806Block Number: 1Block Time: Fri Oct 18 2024 12:32:15 GMT+0000 (Coordinated Universal Time)eth_getTransactionReceipt
eth_getCode
eth_getTransactionByHash
eth_getBlockByNumber
eth_getBalance

与智能合约交互:

  • 部署完成后,可以使用Truffle控制台与智能合约交互:

    truffle console
    

    在控制台中,运行以下命令与已部署的智能合约进行交互:

    // 获取部署的合约实例
    let instance = await MyContract.deployed();// 调用getMessage()函数
    let message = await instance.getMessage();
    console.log(message);  // 输出:Hello, Ganache!// 调用setMessage()函数
    await instance.setMessage("New message on Ganache");// 再次调用getMessage()函数
    message = await instance.getMessage();
    console.log(message);  // 输出:New message on Ganache
    

在这里插入图片描述

  • 相应的ganache-cli窗口输出:
 Transaction: 0xca9657eb639ba2ebd29f9e887d5e08ecc3d9c89c8dadf5333dc33b61eb97cfd8Gas usage: 29576Block Number: 2Block Time: Fri Oct 18 2024 12:37:49 GMT+0000 (Coordinated Universal Time)
http://www.yayakq.cn/news/956529/

相关文章:

  • 用户注册和登录网站怎么做的理财网站方案建设
  • 网站开发长沙淘宝客网站可以备案吗
  • dw个人网站设计优化网站作用
  • 境外网站搭建北京建设学院网站
  • 建设网站的简单编程语言网站首页做多大分辨率
  • 企业网站建设后期维护费用计算机的专业有哪些
  • 网站建设及域名有没有专门做毕业设计的网站
  • 没有网站可以做cpc吗wordpress图片外链
  • 自己做游戏app的网站苏州建设交通高等职业技术学校网站
  • 旅游 网站开发的项目描述大连今年大项目建设
  • 长沙网站开发制作哪里有学市场营销培训班
  • 怎么做百度自己的网站网站动态和静态
  • 做房产网站不备案可以吗知名的集团门户网站建设费用
  • 汕头cms建站模板洛阳gjyl设计院
  • 代理加盟网站建设公司做网站都要会些什么
  • 学网站开发哪个好个人网站有什么外国广告做
  • 网站建设 服务质量保证求个免费网站
  • wap网站推广方法editplus怎么创网站
  • 视频网站开发的论文深圳企业建设网站
  • 公司做网站,要准备哪些素材WordPress修改注册界面
  • 沧州市网站优化排名甘肃网站建设开发
  • 网站建设流程策划方案wordpress伪静态规则访问失败
  • 网站实施建设流程百度怎么在视频下方投放广告
  • wordpress多站点管理广告设计专业前景分析
  • 营销型网站改版成都百度推广公司联系电话
  • 四川短视频seo优化网站郑东新区网站开发
  • 公司网站英文政务微信app下载
  • 简述网站建设的主要内容wordpress-4.5.2-zh_cn 安装要求
  • 网站制作相关知识为什么要做网站首页设计
  • 做网站卖赚钱吗拍摄形象宣传片