9. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 总结

Hardhat编写、编译、部署、测试Solidity ERC20合约 - 总结

  • [1. JSON-RPC](#1. JSON-RPC)
    • [1.1 常规的HTTP API](#1.1 常规的HTTP API)
    • [1.2 JSON-RPC结构](#1.2 JSON-RPC结构)
  • [2. 基于JSON-RPC的库](#2. 基于JSON-RPC的库)
  • [3. 对应关系](#3. 对应关系)
  • 思考

系列文章
1. Remix编写、编译、部署、测试Solidity ERC20合约 - 基础篇
2. Remix编写、编译、部署、测试Solidity ERC20合约 - 进阶篇
3. Metamask导入代币,转账ETH,转账代币
4. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 基础篇
5. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - web3.js调用合约方法
6. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - web3.js调用区块链方法
7. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - JSON-RPC调用合约方法
8. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - JSON-RPC调用区块链方法
9. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 总结

对系列中的如下文章做总结:
5. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - web3.js调用合约方法
6. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - web3.js调用区块链方法
7. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - JSON-RPC调用合约方法
8. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - JSON-RPC调用区块链方法

1. JSON-RPC

RPC即远程过程调用,一般用于多进程通信。介于TCP通信和HTTP通信之间。

TCP通信传输16进制字节流,接收端要按通信协议对字节流逐段截取,将字节数组转换为实际含义值,再进行条件分支流转。通信协议较低层,数据交互复杂。

HTTP一般为前后端应用系统使用,HTTP协议承载SON格式数据,请求的url中包含了后端接口映射名,前端的请求可以直接访问到后端接口。应用层通信协议,数据交互简单。

JSON-RPC也是HTTP协议承载SON格式数据,请求的url中的后端接口并不是实际要调用的接口,而是一个通用接口。实际要调用的接口名称在JSON格式的数据中。

1.1 常规的HTTP API

前后端服务,路由到后端的query(string name, int age)方法,返回数据

clike 复制代码
const url = 'https://api.example.com/query';
const data = {
    name: '张三',
    age: 25,
};

const response = await fetch(url, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
    },
    body: JSON.stringify(data)
});

1.2 JSON-RPC结构

比如要查询账户余额

(1) 路由到后端的query(Data data)方法

(2) 解析data结构,method: 'eth_getBalance'表示要调用的方法是eth_getBalance,方法参数是[address, 'latest']

(3)调用eth_getBalance(address, 'latest')

clike 复制代码
const url = 'https://api.example.com/query';
const data = {
	jsonrpc: '2.0',
	method: 'eth_getBalance',
	params: [address, 'latest'],
	id: 1
};

const response = await fetch(url, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
    },
    body: JSON.stringify(data)
});

2. 基于JSON-RPC的库

以太坊官方基于go语言开发了geth客户端,定义了基于JSON-RPC的各种操作接口名称。

调用geth的接口,手写HTTP + JSON-RPC方式比较繁琐,所以有多种语言实现库。

Web3.js

Ethers.js

Go-Ethereum

内部封装了JSON-RPC组装过程,简化了接口调用。

3. 对应关系

思考

为什么以太坊不用HTTP API,而是JSON-RPC通信呢?

系列文章
1. Remix编写、编译、部署、测试Solidity ERC20合约 - 基础篇
2. Remix编写、编译、部署、测试Solidity ERC20合约 - 进阶篇
3. Metamask导入代币,转账ETH,转账代币
4. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 基础篇
5. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - web3.js调用合约方法
6. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - web3.js调用区块链方法
7. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - JSON-RPC调用合约方法
8. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - JSON-RPC调用区块链方法
9. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 总结

相关推荐
China_Yanhy28 分钟前
[特殊字符] 筑牢金融底座:企业级区块链全球化数据库架构设计白皮书
金融·区块链·数据库架构
BlockChain8881 小时前
Solidity 实战【三】:重入攻击与防御(从 0 到 1 看懂 DAO 事件)
go·区块链
企业对冲系统官5 小时前
期货套保系统移动端操作的技术架构与实现
算法·架构·区块链·github
TechubNews7 小时前
BEATOZ区块链专业企业与韩国头部旅游集团MODETOUR从签署MOU迈向网络验证节点合作
大数据·人工智能·区块链
数说星榆1811 天前
模型即服务(MaaS)生态的去中心化探索
去中心化·区块链
老蒋每日coding1 天前
区块链技术系列(一)—— 联盟链FISCO BCOS 技术架构
区块链
公链开发2 天前
2026 Web3机构级风口:RWA Tokenization + ZK隐私系统定制开发全解析
人工智能·web3·区块链
ICkaihuuu2 天前
MT4 黄金交易:如何设置与计算交易手数(2026 最新指南)
区块链
数据大魔方2 天前
【期货量化入门】Python获取期货实时行情(TqSdk完整代码)
开发语言·python·区块链
CryptoRzz2 天前
印度股票数据API对接实战(实时行情与IPO功能全解析)
websocket·区块链·github·共识算法·分布式账本