Solidity 入门资源

2023/4/29 blockchainsolidityweb3

随着Web3发展趋势逐渐上升,Solidity这门智能合约编程语言的需求也在逐日增高,本文主要讲述Solidity入门主要需要的资源。

# Solidity 入门资源

# Solidity

中文文档:https://learnblockchain.cn/docs/solidity/ (opens new window)

# 智能合约框架

但是两个框架也可以混用,建议先搭建Hardhat,然后集成Foundry:与 Hardhat 集成 (opens new window)

# 智能合约库

openzeppelin: https://docs.openzeppelin.com/ (opens new window)

  • 可升级合约仓库:https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable
  • 不可升级合约仓库:https://github.com/OpenZeppelin/openzeppelin-contracts

# 合约升级

# 背景

可升级合约和不可升级合约。

特性:代码一旦部署,就将确定下来,不可更改。

但是如果合约有bug,或者不完善,怎么办?

提出了可升级合约,可以升级部分代码。

# 升级规则

对于可升级合约,在编写新版本的逻辑合约时:

  1. 不能更改状态变量的类型
  2. 不能更改声明状态的顺序
  3. 不能删除现有状态变量
  4. 不能在现有状态变量之前引入新的状态变量

能对状态变量做的修改,差不多就仅是 “在以前状态变量后面增加新的状态变量了”。

总结:新增变量,函数都可以增删改。

# 可升级合约的编写

参看:https://blog.logrocket.com/using-uups-proxy-pattern-upgrade-smart-contracts/ (opens new window)

一般会使用uups升级智能合约,使用UpgradeableBeacon来升级工厂合约创建的合约。

# 智能合约调用

# JS/TS

ethers.js(官方): https://learnblockchain.cn/ethers_v5/ (opens new window)

web3.js: https://learnblockchain.cn/docs/web3.js/ (opens new window)

# golang

go-ethereum(geth):

# 智能合约交易模拟和分析

  • Tenderly:https://dashboard.tenderly.co/
    • 可进行交易模拟
    • 分析链上交易的堆栈和报错调试

# 编辑器

在线remix:http://remix.ethereum.org/ (opens new window)

# ETH区块浏览器

  • 执行层 etherscan:https://etherscan.io/
  • 共识层 beaconcha:https://beaconcha.in/

# ETH节点

api文档:

节点:

例如请求账户余额:

curl -X POST -H 'content-type: application/json' --data  '{"jsonrpc":"2.0","method":"eth_getBalance","params":["<YOUR ADDRESS>",<BLOCK(finalized)>],"id":1}' <YOUR ETH Execution layer http ADDR (infura)>

websocat <> <YOUR ETH Execution layer websocket ADDR (infura)>
> {"jsonrpc":"2.0","method":"eth_getBalance","params":["<YOUR ADDRESS>",<BLOCK(finalized)>],"id":1}
1
2
3
4