mcpField
B
blockchain-web3

blockchain-web3

github.com/travisjneuman开发106104 次安装1 天前更新
代码仓库

关于 blockchain-web3

面向构建 Solidity 合约和区块链应用的开发者,提供 Web3 开发参考。内容涵盖合约安全、开发工具、前端接入、DeFi 模式和 Gas 优化。

主要功能

  1. 01Solidity 合约结构与安全
  2. 02Hardhat 和 Foundry 工作流
  3. 03ethers.js v6 与 viem 集成
  4. 04DeFi 设计模式
  5. 05Gas 优化技巧

适用场景

  1. 01检查合约安全模式
  2. 02选择 Hardhat 或 Foundry 命令
  3. 03将前端连接到区块链
  4. 04规划 DeFi 合约机制

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/travisjneuman/.claude --skill blockchain-web3

安装后在 Claude Code 中输入/blockchain-web3确认已加载。

详细介绍

区块链与 Web3 开发

智能合约开发(Solidity)

合约结构
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract MyToken is ERC20, Ownable {
    constructor() ERC20("MyToken", "MTK") Ownable(msg.sender) {
        _mint(msg.sender, 1000000 * 10 ** decimals());
    }
}
安全模式
  • 检查-效果-交互: 验证 → 更新状态 → 外部调用
  • 重入保护: 使用 OpenZeppelin ReentrancyGuard 或 nonReentrant
  • 访问控制: 使用 Ownable、AccessControl 或自定义修饰符
  • 整数安全: Solidity 0.8+ 内置溢出检查
  • 拉取优于推送: 让用户自行提取资金,而不是主动发送资金
常见漏洞
漏洞防范方法
重入攻击nonReentrant 修饰符、CEI 模式
抢跑交易提交-揭示方案、Flashbots 保护
预言机操纵使用 Chainlink,采用 TWAP 而非现货价格
未检查返回值始终检查 transfer() 的返回值,或使用 safeTransfer
delegatecall 注入绝不对用户提供的地址执行 delegatecall

开发工具

Hardhat
npx hardhat init
npx hardhat compile
npx hardhat test
npx hardhat deploy --network sepolia
Foundry
forge init
forge build
forge test -vvv
forge script script/Deploy.s.sol --rpc-url $RPC --broadcast

前端集成(ethers.js v6 / viem)

// viem (recommended for new projects)
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({ chain: mainnet, transport: http() })
const balance = await client.getBalance({ address: '0x...' })

// wagmi hooks (React)
import { useAccount, useBalance, useContractWrite } from 'wagmi'
const { address } = useAccount()
const { data: balance } = useBalance({ address })

DeFi 模式

  • AMM: 恒定乘积公式(x * y = k)、集中流动性
  • 借贷: 超额抵押贷款、清算机制、利率模型
  • 质押: 使用 rewardPerToken 累加器模式分配奖励
  • 治理: 代币权重投票、时间锁控制器、提案生命周期

Gas 优化

  • 只读参数使用 calldata,而非 memory
  • 打包结构体(将较小类型组合在一起以提高存储槽利用率)
  • 对安全的算术运算使用 unchecked 块
  • 尽量减少存储读取/写入(缓存到内存中)
  • 对无需链上访问的数据使用事件,而非存储

评论

支持 Markdown