关于 blockchain-developer
Blockchain Developer 是面向 Web3 开发者的技能,涵盖智能合约、dApp 和区块链安全,并提供 Solidity、Rust 合约开发、Gas 优化及 L2 集成的工作流与指导。
主要功能
- 01Solidity 和 Rust 合约开发
- 02智能合约安全审查指导
- 03Gas 优化工作流
- 04dApp 与钱包集成模式
- 05Layer 2 网络选择指导
适用场景
- 01构建 ERC-20、ERC-721 或 ERC-1155 合约
- 02检查合约的重入或溢出风险
- 03通过 Gas 优化降低交易成本
- 04规划 dApp 与钱包及索引器的集成
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ 404kidwiz/ claude-supercode-skills --skill blockchain-developer安装后在 Claude Code 中输入/blockchain-developer确认已加载。
详细介绍
区块链开发者
目的
提供 Web3 开发专业知识,专精于智能合约(Solidity/Rust)、去中心化应用(dApp)架构和区块链安全。构建安全的智能合约、优化 Gas 用量,并集成 Layer 2 扩容方案(Arbitrum、Optimism、Base)。
适用场景
- 编写和部署智能合约(ERC-20、ERC-721、ERC-1155)
- 审计合约中的安全漏洞(重入、溢出)
- 将 dApp 前端与钱包(MetaMask、WalletConnect、RainbowKit)集成
- 构建 DeFi 协议(AMM、借贷、质押)
- 实现账户抽象(ERC-4337)
- 为区块链数据建立索引(The Graph、Ponder)
2. 决策框架
区块链网络选择
Which chain fits the use case?
│
├─ **Ethereum L1**
│ ├─ High value transactions? → **Yes** (Max security)
│ └─ Cost sensitive? → **No** (High gas fees)
│
├─ **Layer 2 (Arbitrum / Optimism / Base)**
│ ├─ General purpose? → **Yes** (EVM equivalent)
│ ├─ Low fees? → **Yes** ($0.01 - $0.10)
│ └─ Security? → **High** (Inherits from Eth L1)
│
├─ **Sidechains / Alt L1 (Polygon / Solana / Avalanche)**
│ ├─ Massive throughput? → **Solana** (Rust based)
│ └─ EVM compatibility? → **Polygon/Avalanche**
│
└─ **App Chains (Cosmos / Polkadot / Supernets)**
└─ Need custom consensus/gas token? → **Yes** (Sovereignty)
开发技术栈(2026 年标准)
| 组件 | 推荐方案 | 原因? |
|---|---|---|
| 框架 | Foundry | 基于 Rust,测试速度极快,支持 Solidity 脚本编写。(Hardhat 已过时。) |
| 前端 | Wagmi + Viem | Ethers.js 的类型安全、轻量级替代方案。 |
| 索引 | Ponder / The Graph | 高效的事件索引。 |
| 钱包 | RainbowKit / Web3Modal | 用户体验出色,易于集成。 |
危险信号 → 升级至 security-auditor:
- 合约持有价值超过 100k 美元的资产,但未经审计
- 使用
delegatecall处理不可信输入 - 实现自定义加密(自行编写加密算法)
- 可升级合约没有 Timelock 或多签治理
4. 核心工作流
工作流 1:智能合约开发(Foundry)
目标: 创建一个带白名单的安全 ERC-721 NFT 合约。
步骤:
-
设置
forge init my-nft forge install OpenZeppelin/openzeppelin-contracts -
合约(
src/MyNFT.sol)// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; contract MyNFT is ERC721, Ownable { bytes32 public merkleRoot; uint256 public nextTokenId; constructor(bytes32 _merkleRoot) ERC721("MyNFT", "MNFT") Ownable(msg.sender) { merkleRoot = _merkleRoot; } function mint(bytes32[] calldata proof) external { bytes32 leaf = keccak256(abi.encodePacked(msg.sender)); require(MerkleProof.verify(proof, merkleRoot, leaf), "Not whitelisted"); _safeMint(msg.sender, nextTokenId); nextTokenId++; } } -
测试(
test/MyNFT.t.sol)function testMintWhitelist() public { // Generate Merkle Tree in helper... bytes32[] memory proof = tree.getProof(user1); vm.prank(user1); nft.mint(proof); assertEq(nft.ownerOf(0), user1); }
工作流 3:Gas 优化审计
目标: 降低用户的交易成本。
步骤:
-
分析存储
- 打包变量:
uint128 a; uint128 b;可放入一个存储槽(32 字节)。 - 对固定值使用
constant和immutable。
- 打包变量:
-
重构代码
- 使用
custom errors替代字符串形式的require消息(可节省约 Gas)。 - 在循环中缓存数组长度(使用
unchecked { ++i })。 - 尽可能在函数参数中使用
calldata替代memory。
- 使用
-
验证
- 运行
forge test --gas-report。
- 运行
4. 模式与模板
模式 1:检查-生效-交互(安全)
适用场景: 防止重入攻击。
function withdraw() external {
// 1. Checks
uint256 balance = userBalances[msg.sender];
require(balance > 0, "No balance");
// 2. Effects (Update state BEFORE sending ETH)
userBalances[msg.sender] = 0;
// 3. Interactions (External call)
(bool success, ) = msg.sender.call{value: balance}("");
require(success, "Transfer failed");
}
模式 2:透明代理(可升级性)
适用场景: 升级合约逻辑,同时保留状态/地址。
// Implementation V1
contract LogicV1 {
uint256 public value;
function setValue(uint256 _value) external { value = _value; }
}
// Proxy Contract (Generic)
contract Proxy {
address public implementation;
function upgradeTo(address _newImpl) external { implementation = _newImpl; }
fallback() external payable {
address _impl = implementation;
assembly {
calldatacopy(0, 0, calldatasize())
let result := delegatecall(gas(), _impl, 0, calldatasize(), 0, 0)
returndatacopy(0, 0, returndatasize())
switch result
case 0 { revert(0, returndatasize()) }
default { return(0, returndatasize()) }
}
}
}
模式 3:Merkle 树白名单(节省 Gas)
使用场景: 将 10,000 名用户加入白名单,而无需在链上存储他们的信息。
- 链下: 对所有地址进行哈希处理 -> 根哈希。
- 链上: 仅存储根哈希(32 字节)。
- 验证: 用户提供证明(通向根节点的路径)。成本为 O(log n),非常低。
6. 集成模式
后端开发者:
- 交接: 区块链开发者提供 ABI 和合约地址 → 后端使用 Alchemy/Infura 监听事件。
- 协作: 确定索引策略(The Graph 还是自定义 SQL 索引器)。
- 工具: Alchemy Webhooks、Tenderly。
前端 UI/UX 工程师:
- 交接: 区块链开发者提供 wagmi hooks → 前端构建 UI。
- 协作: 处理加载状态、交易确认和错误提示(“用户拒绝了请求”)。
- 工具: RainbowKit。
安全审计员:
- 交接: 区块链开发者冻结代码 → 审计员进行审查。
- 协作: 修复审计发现的问题(严重/高/中)。
- 工具: Slither、Mythril。
评论
支持 Markdown