区块链开发:JS/TS本地|项目环境搭建

news2024/11/15 15:44:23

区块链开发:JS/TS本地|项目环境搭建

  • 本地环境搭建
    • VSCode Solidity扩展
    • 全局安装Solc,corepack
    • VSCode配置本地Solc
    • 安装Ganache搭建JS虚拟环境
  • 项目测试
    • 安装依赖
    • 编写代码
      • 部署合约`test_blockchain.ts`
    • 设置Script
      • 部署查看
    • 报错说明
      • 1. Error:missing revert data
      • 2.Error: could not coalesce error

本地环境搭建

VSCode Solidity扩展

添加如下两种扩展到VSCode中
在这里插入图片描述

全局安装Solc,corepack

Solc用于编译智能合约(.sol)

npm install -g solc
npm install -g corepack
solcjs --version
corepack --version

在这里插入图片描述

VSCode配置本地Solc

打开settings搜索Solidity,设置编译版本
C:\Users\用户目录\.vscode\extensions\juanblanco.solidity-0.0.165\node_modules\solc\soljson.js
在这里插入图片描述
修改默认编译为localFile在这里插入图片描述

安装Ganache搭建JS虚拟环境

地址:https://trufflesuite.com/ganache/
官网下载速度很慢,推荐挂个vpn,或者去Github下
Github:https://github.com/trufflesuite/ganache-ui
在这里插入图片描述
启动
在这里插入图片描述

项目测试

安装依赖

安装solc,ethers

npm i solc -S
npm i ethers@5.7.2 -S
npm i --save-dev @types/fs-extra
npm i typescript -S
npm i ts-node -S
npm i fs-extra -S

在这里插入图片描述

编写代码

其中rpc地址是从Ganache中来的
在这里插入图片描述

部署合约test_blockchain.ts

import { ethers } from "ethers";
import { readFileSync } from "fs-extra";

// main fn
const main = async () => {
  // http://127.0.0.1:7545
  // init rpc provider
  const provider = new ethers.providers.JsonRpcProvider(
    "http://127.0.0.1:7545"
  );

  // your wallet
  // Get from Ganache
  // PrimaryKey :  ...
  // Address : ...
  // Not recommended you use primary key here
  // But this just a test
  const primary_key: string =
    "0x290042e98e1afdbe0f88d2e1146bf7116a1793aa9fa1f315264e5319247bc6ae";
  const wallet = new ethers.Wallet(primary_key, provider);
  const abi = readFileSync(
    "src/binary/src_smart_contract_SimpleStorage_sol_SimpleStorage.abi",
    "utf8"
  );
  const binary = readFileSync(
    "src/binary/src_smart_contract_SimpleStorage_sol_SimpleStorage.bin",
    "utf8"
  );

  const contractFactory = new ethers.ContractFactory(abi, binary, wallet);

  //deploy
  const contract = await contractFactory.deploy({ gasLimit: 3000000 });
};

const methods = {
  main,
};

const linearRunner = () => {
  methods
    .main()
    .then(() => {
      // exit program
      process.exit(0);
    })
    .catch((e) => {
      console.error(e);
      process.exit(1);
    });
};

linearRunner();

设置Script

这里的compile用来编译solidity写的智能合约,deploy则是进行合约部署

{
  "dependencies": {
    "ethers": "^5.7.2",
    "fs-extra": "^11.1.1",
    "solc": "^0.8.20",
    "ts-node": "^10.9.1",
    "typescript": "^5.1.6"
  },
  "scripts": {
    "compile": "solcjs --bin --abi --include-path node_modules/ --base-path . -o ./src/binary src/smart_contract/SimpleStorage.sol",
    "deploy": "ts-node src/test_blockchain.ts"
  },
  "devDependencies": {
    "@types/fs-extra": "^11.0.1"
  }
}

部署查看

在这里插入图片描述

报错说明

1. Error:missing revert data

这个错误起初我以为只出现6+的版本,去Github上查看无果,别人也遇到这个问题,解决的方法最后在我修改到5.7.2版本后解决,但是这不是正确的解决方法而是在deploy的时候添加Gas限制以保证Gas足够就解决了,无论6+版本还是5.7.2都OK

const contract = await contractFactory.deploy({ gasLimit: 3000000 });

2.Error: could not coalesce error

出现 “could not coalesce error” 错误通常表示在处理交易期间发生了无法合并的错误,但从结果看智能合约确实被部署了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/710438.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【EasyX】使用C/C++实现 流星雨效果(配上详细注释解释)

🎊专栏【​​​​​​​EasyX】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Love Story】 🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰 文章目录 🍔效果&#x…

RNN LSTM

参考资料: 《机器学习2022》李宏毅史上最详细循环神经网络讲解(RNN/LSTM/GRU) - 知乎 (zhihu.com) LSTM如何来避免梯度弥散和梯度爆炸? - 知乎 (zhihu.com) 1 RNN 的结构 首先考虑这样一个 slot filling 问题: 注意…

云解析DNS

云解析过程: DNS查询的结果通常会在本地域名服务器中进行缓存,如果本地域名服务器中有缓存的情况下,则会跳过如下DNS查询步骤,很快返回解析结果。下面的示例则概述了本地域名服务器没有缓存的情况下,DNS查询所需的8个步…

电路的组成和连接方式-通路、开路、短路

电路是电子设备中最基本的组成部分之一,它由各种电子元件组成,并通过连接方式构建成不同的电路结构。在电路设计和维护中,通路、开路和短路是常见的概念,它们分别代表了电路中不同的连接状态和故障情况。 工具认识: …

万能的微信小程序个人主页:商城系统个人主页、外卖系统个人主页、购票系统个人主页等等【全部源代码分享+页面效果展示+直接复制粘贴编译即可】

前言 以下给出来四个常见的小程序个人主页,分别是商城系统个人主页,外卖系统个人主页,挂号系统个人主页,电影购票系统个人主页。包括完整的页面布局代码,完整的样式代码。使用的时候,只需要将页面代码和样式代码复制到自己项目对应的页面即可。而且可以根据已有代码只需稍…

【机器学习】准确率、精确度、召回率和 F1 定义

一、说明 数据科学家选择目标变量后 - 例如他们希望预测电子表格中的“列”,并完成了转换数据和构建模型的先决条件,最后步骤之一是评估模型的性能。 二、混淆矩阵的模型 2.1 混淆矩阵 选择性能指标通常取决于要解决的业务问题。假设您的数据集中有 10…

电子时钟制作(瑞萨RA)(2)----使用串口进行程序烧写

概述 本篇文章主要介绍如何使用UART串口烧写程序到瑞萨芯片,并以实际项目进行演示。 硬件准备 首先需要准备一个开发板,这里我准备的是芯片型号R7FA2E1A72DFL的开发板: 视频教程 https://www.bilibili.com/video/BV1kX4y1v7tL/ 电子时钟制…

Symbol.for()

示例:Symbol() 和 Symbol.for(‘ ’)的区别 Symbol.for("foo"); // 创建一个 symbol 并放入 symbol 注册表中,键为 "foo" Symbol.for("foo"); // 从 symbol 注册表中读取键为"foo"的 symbolSymbol.for("b…

常见面试题之线程池

1. 说一下线程池的核心参数(线程池的执行原理知道嘛)? 线程池核心参数主要参考ThreadPoolExecutor这个类的7个参数的构造函数 corePoolSize 核心线程数目 maximumPoolSize 最大线程数目 (核心线程救急线程的最大数目) keepAliveTime 生存…

蘑菇车联用城市级落地讲述自动驾驶新故事

作者 | 魏启扬 来源 | 洞见新研社 “如果不能实现自动驾驶,特斯拉将一文不值”。 这是马斯克在接受媒体采访时的公开发言,这句话的语境是,特斯拉是自动驾驶坚实的拥护者,且一直在付诸行动。 可是特斯拉渐进式的单车智能路线&am…

【游戏逆向】探索可靠的线程检查方法

一、关键的线程检查 在对抗外挂和木马的方案中,不可能将所有的检查操作放在主线程中,因此,在方案中总有一个扫描线程或者环境检查线程必须保持工作,而它们也就成了外挂和木马的重要攻击目标,外挂和木马只要搞定了它们…

【高可用架构】聊聊故障和高可用架构设计

在架构设计中,高性能、高可用、可拓展以及安全等等有多种维度去判断架构的设计纬度,但是一般来说我们需要考虑具体的业务场景,去判断采用那种合适的架构方案,但是对于大多数的设计来说,都需要满足高性能、高可用。所以…

专科学历,有机会转行程序员吗?

你好,我是程序员晚枫,昨晚又1对1沟通了一位想转行程序员的朋友。 这位朋友是专科毕业,在电子厂干了2年多,感觉看不到希望,来找我咨询一下有没有转行程序员的可能性 学习计划。 我觉得他的情况和提问很有代表性&…

软件测试综述

概述 在不短不长的7年多研发生涯中,听过无数个软件测试概念:单元测试、功能测试、白盒测试、黑盒测试、自动化测试、契约测试、基准测试、性能测试、集成测试、渗透测试、接口测试、UI测试、端到端测试、E2E测试…… 恰逢在准备系统架构设计师软考高级…

我的创作纪念日-256天

机缘: 没有在csdn进行写作,我就不会认识更多对应领域的博主,并且也认识到了很多不同领域的博主这令我感到非常荣幸,能够加入到csdn。在分享交流的过程种我获得了: 实战项目中的经验分享日常学习过程中的记录通过文章进…

Ubuntu20.04安装arm-linux-gcc 4.3.2 (提供安装包)

⁡​​⁢‬‌​⁢‌⁡‍⁣⁤‬‌⁡⁢⁢‍⁡⁤​⁣‬‌‬‍⁤​⁤‌⁣⁤​⁤⁢‍⁢⁤‬⁣‬​‌Ubuntu20.04安装arm-linux-gcc 4.3.2 - 飞书云文档 (feishu.cn) CSDN编辑太丑了 转移阵地了

Google Colab:云端的Python编程神器

Google Colab,全名Google Colaboratory,是Google Research团队开发的一款云端编程工具,它允许任何人通过浏览器编写和执行Python代码。Colab尤其适合机器学习、数据分析和教育目的。它是一种托管式Jupyter笔记本服务,用户无需设置…

SQL-每日一题【185.部门工资前三高的员工】

题目 表: Employee 表: Department 公司的主管们感兴趣的是公司每个部门中谁赚的钱最多。一个部门的 高收入者 是指一个员工的工资在该部门的 不同 工资中 排名前三 。 编写一个SQL查询,找出每个部门中 收入高的员工 。 以 任意顺序 返回结果表。 查询结果格式如…

Python基础语法第二章、变量和运算符

目录 一、常量和表达式 二、变量和类型 2.1变量是什么 2.2变量的语法 2.2.1定义变量 2.2.2使用变量 2.3变量的类型 2.3.1整数 2.3.2浮点数(小数) 2.3.3字符串 2.3.4布尔 2.3.5其他 2.4动态类型 4.1为什么要有这么多类型? 2.4.2动态类型特性 三、注释 3.1注释…

IT人,别人公司与自家差距到底有多大?

年底,是IT人最心酸的时候。辛辛苦苦了一年,别人家的公司员工人手一台 iPhone14Pro,自家可能连个年会都不开!想想就气人 不能笑饱就气饱,省下一顿当赚到 - 1 - 形象 别人公司的IT男帅气又有(发)型 然,我们…