mcpField
B
blockchain-developer

blockchain-developer

github.com/404kidwiz开发162 次安装
代码仓库

关于 blockchain-developer

Blockchain Developer 是面向 Web3 开发者的技能,涵盖智能合约、dApp 和区块链安全,并提供 Solidity、Rust 合约开发、Gas 优化及 L2 集成的工作流与指导。

主要功能

  1. 01Solidity 和 Rust 合约开发
  2. 02智能合约安全审查指导
  3. 03Gas 优化工作流
  4. 04dApp 与钱包集成模式
  5. 05Layer 2 网络选择指导

适用场景

  1. 01构建 ERC-20、ERC-721 或 ERC-1155 合约
  2. 02检查合约的重入或溢出风险
  3. 03通过 Gas 优化降低交易成本
  4. 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 + ViemEthers.js 的类型安全、轻量级替代方案。
索引Ponder / The Graph高效的事件索引。
钱包RainbowKit / Web3Modal用户体验出色,易于集成。

危险信号 → 升级至 security-auditor:

  • 合约持有价值超过 100k 美元的资产,但未经审计
  • 使用 delegatecall 处理不可信输入
  • 实现自定义加密(自行编写加密算法)
  • 可升级合约没有 Timelock 或多签治理


4. 核心工作流

工作流 1:智能合约开发(Foundry)

目标: 创建一个带白名单的安全 ERC-721 NFT 合约。

步骤:

  1. 设置

    forge init my-nft
    forge install OpenZeppelin/openzeppelin-contracts
    
  2. 合约(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++;
        }
    }
    
  3. 测试(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 优化审计

目标: 降低用户的交易成本。

步骤:

  1. 分析存储

    • 打包变量:uint128 a; uint128 b; 可放入一个存储槽(32 字节)。
    • 对固定值使用 constant 和 immutable。
  2. 重构代码

    • 使用 custom errors 替代字符串形式的 require 消息(可节省约 Gas)。
    • 在循环中缓存数组长度(使用 unchecked { ++i })。
    • 尽可能在函数参数中使用 calldata 替代 memory。
  3. 验证

    • 运行 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