mcpField
S
solidity

solidity

github.com/alphaonedev开发44 次安装
代码仓库

关于 solidity

solidity 技能帮助 AI 编写、编译和调试 Ethereum 智能合约代码,面向合约开发与区块链原型制作。它涵盖 Solidity 代码、solc 编译及 ABI 生成。

主要功能

  1. 01编写 Solidity 合约代码
  2. 02使用 solc 编译为字节码
  3. 03生成 ABI
  4. 04处理合约数据类型、事件和函数

适用场景

  1. 01开发代币合约
  2. 02构建去中心化交易所合约
  3. 03实现投票系统或链上状态逻辑

安装

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

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill solidity

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

详细介绍

solidity

目的

此技能可帮助 AI 编写、编译和调试 Solidity 代码,以在 Ethereum 区块链上构建安全的智能合约。它专注于生成和处理 Solidity 脚本,以便与去中心化应用交互。

适用场景

开发基于 Ethereum 的智能合约时使用此技能,例如代币实现、去中心化交易所或投票系统。在需要链上逻辑的任务中使用,例如处理交易或状态变更,尤其适用于涉及 Web3 集成或区块链原型开发的项目。

主要功能

  • 编写静态类型代码,并支持继承、库和修饰符。
  • 使用 solc 编译器将 Solidity 文件编译为字节码。
  • 生成用于合约交互的 ABI(应用程序二进制接口)。
  • 处理 uint、address 和映射等数据类型,以实现安全存储。
  • 支持用于发出日志和执行逻辑的事件与函数。

使用模式

要完成任务,请使用合约定义、状态变量和函数来构建代码。例如,可以通过提供类似以下的提示词来调用此技能:“编写一个简单代币的 Solidity 合约。”始终在代码中指定 Solidity 版本,例如 pragma solidity ^0.8.0;。在迭代开发中使用此技能,例如编译代码、检查错误并重新部署。与 Hardhat 或 Truffle 等测试框架集成,以完成端到端工作流。

常用命令/API

使用 solc 编译器构建合约。编译文件:solc --optimize --bin YourContract.sol --output-dir build/。生成 ABI:solc --abi YourContract.sol。在 OpenClaw 中,通过 API 端点调用,例如使用 JSON 请求体调用 POST /api/solidity/compile:{"source": "pragma solidity ^0.8.0; contract Simple {}"}。配置格式:使用 solc.json 文件,其中包含 {"language": "Solidity", "sources": {"YourContract.sol": {"content": "..."}}}。与 Ethereum 交互时,为 RPC 节点设置 $ETHEREUM_API_KEY 等环境变量,然后使用 web3.js:const web3 = new Web3(new Web3.providers.HttpProvider(https://mainnet.infura.io/v3/${process.env.ETHEREUM_API_KEY}))。

集成说明

通过在提示词中传递代码片段,将 Solidity 与 OpenClaw 集成,例如:“编译这段 Solidity 代码:pragma solidity ^0.8.0; contract Example {}。”使用 Hardhat 设置项目:通过 npm install --save-dev hardhat 安装,然后在工作流中运行 npx hardhat compile。对于 API 调用,请确保设置了 $SOLC_VERSION,例如 export SOLC_VERSION=0.8.19,并在 solc-select $SOLC_VERSION 等命令中使用它。若要部署,请使用带身份验证的 Infura 或 Alchemy 端点:export ALCHEMY_API_KEY=yourkey,然后通过 web3 连接。避免在不进行错误检查的情况下直接与区块链交互。

错误处理

编译时,检查未声明变量等语法错误;使用 solc --optimize YourContract.sol 2>&1 捕获输出,并解析 "Parser error: Expected token" 等消息。对于运行时错误,使用 require 语句封装函数,例如:function safeTransfer(uint amount) public { require(amount > 0, "Amount must be positive"); }。在 OpenClaw 中,通过检查响应代码来处理 API 错误:if (response.status === 400) { retry with corrected code; }。常见问题:超出 Gas 限制——通过删除不必要的计算来优化代码;类型不匹配——使用显式类型转换,例如 uint8(myUint) = 255;。使用事件记录错误:event Error(string message); emit Error("Transaction failed")。

具体用法示例

  1. 编写并编译简单合约:要创建一个基本的存储合约,请提示:“生成一个用于存储数字的合约的 Solidity 代码。”结果:pragma solidity ^0.8.0; contract Storage { uint public number; function set(uint _number) public { number = _number; } } 然后,编译它:solc --bin Storage.sol,以获取用于部署的字节码。
  2. 部署代币合约:对于 ERC20 代币,请使用:“编写一个 Solidity ERC20 代币合约。”输出:pragma solidity ^0.8.0; import "OpenZeppelin/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; contract MyToken is ERC20 { constructor() ERC20("MyToken", "MTK") { _mint(msg.sender, 1000 * 10 ** 18); } } 通过以下命令部署:npx hardhat run scripts/deploy.js --network sepolia,前提是已设置 $PRIVATE_KEY 用于签名。

图关系

  • 关联的集群:区块链(例如,与其他区块链技能共享节点,如 web3.js)。
  • 关联的标签:solidity(直接匹配)、smart-contracts(用于合约专用工具)、ethereum(链接到 Ethereum 生态系统技能)。
  • 指向的链接:指向 ethereum(用于部署)、smart-contracts(用于审计工具)。
  • 指入的链接:来自 programming(作为一种语言技能)、blockchain(作为一个子类别)。

评论

支持 Markdown