
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
闪电般快速的Solidity合约Go绑定生成器。零依赖,极致简洁。
在几秒内从Solidity合约生成干净、类型安全的Go代码。生成的绑定中无外部依赖——仅包含可直接用于生产环境的纯Go代码。
solc输出,生成干净Go代码干净、类型安全的绑定可与任何***客户端配合使用:
goimport "yourproject/generated/simpletoken" // 打包交易方法调用 transferData := simpletoken.Methods().TransferMethod().Pack(recipient, amount) approveData := simpletoken.Methods().ApproveMethod().MustPack(spender, amount) // 解码eth_call返回值 balance := simpletoken.Methods().BalanceOfMethod().MustDecode(returnData) success := simpletoken.Methods().TransferMethod().MustDecode(returnData) tokenName := simpletoken.Methods().NameMethod().MustDecode(returnData)
go// 解码事件日志 transferEvent := simpletoken.Events().TransferEvent().MustDecode(logData) fmt.Printf("转账: %s 到 %s,金额: %s ETH\n", transferEvent.From, transferEvent.To, weiToEth(transferEvent.Value)) // 处理回滚交易的自定义错误 if revertData != nil { error := simpletoken.Errors().InsufficientBalanceError().MustDecode(revertData) fmt.Printf("错误: 余额不足 - 请求 %s,可用 %s\n", weiToEth(error.Requested), weiToEth(error.Available)) }
goimport "github.com/ethereum/go-ethereum/ethclient" // 与ethclient或任何以太坊库无缝协作 client, _ := ethclient.Dial("https://mainnet.infura.io/v3/YOUR_PROJECT_ID") contractAddr := common.HexToAddress("0x...") // 读取合约状态 callData := simpletoken.Methods().BalanceOfMethod().MustPack(userAddress) result, _ := client.CallContract(ctx, ethereum.CallMsg{ To: &contractAddr, Data: callData.Bytes(), }, nil) balance := simpletoken.Methods().BalanceOfMethod().MustDecode(result) // 发送交易 tx := types.NewTransaction(nonce, contractAddr, big.NewInt(0), gasLimit, gasPrice, simpletoken.Methods().TransferMethod().MustPack(recipient, amount).Bytes())
生成的绑定完全独立:
go// 生成代码中无需外部导入! type Address [20]byte // 自定义地址类型 type Hash [32]byte // 自定义哈希类型 type HexData string // 便捷的十六进制处理 // 内置ABI编码/解码 // 类型安全方法调用 // 干净的错误处理
🚀 完整示例 - 查看带详细注释的完整工作示例,展示所有功能的实际应用!
bash# Docker(推荐) docker pull docker.xuanyuan.run/otherview/solgen # 或本地安装 go install github.com/otherview/solgen/cmd/solgen@latest
⚠️ Docker镜像更新:官方Solidity编译器Docker镜像已从
ethereum/solc(已弃用)迁移至ghcr.io/argotorg/solc。以下所有示例使用新官方镜像。
bash# 标准:合约信息 + 字节码(推荐) solc --combined-json abi,bin,bin-runtime,hashes contracts/*.sol | \ solgen --out generated # 最小化:仅合约信息(无字节码功能) solc --combined-json abi,hashes contracts/*.sol | \ solgen --out generated
bash# 最新稳定版(开发推荐) sh -c "docker run --rm -v $(pwd):/src ghcr.io/argotorg/solc:stable \ --combined-json abi,bin,bin-runtime,hashes \ --optimize /src/contracts/*.sol | \ docker run --rm -i -v $(pwd):/src docker.xuanyuan.run/otherview/solgen --out /src/generated" # 固定版本(生产推荐) sh -c "docker run --rm -v $(pwd):/src ghcr.io/argotorg/solc:0.8.20 \ --combined-json abi,bin,bin-runtime,hashes \ --optimize /src/contracts/*.sol | \ docker run --rm -i -v $(pwd):/src docker.xuanyuan.run/otherview/solgen --out /src/generated"
go// 使用稳定版 //go:generate sh -c "docker run --rm -v $(pwd):/src ghcr.io/argotorg/solc:stable --combined-json abi,bin,bin-runtime,hashes /src/contracts/*.sol | docker run --rm -i -v $(pwd):/src otherview/solgen --out /src/generated" // 或使用本地solc安装 //go:generate sh -c "solc --combined-json abi,bin,bin-runtime,hashes contracts/*.sol | solgen --out generated"
📚 更多示例:查看EXAMPLES.md获取高级用法、CI/CD集成及平台特定示例
solgen
--out(必填):输出目录--verbose:详细输出solc(必填字段)
--combined-json abi,hashes(仅合约信息)--combined-json abi,bin,bin-runtime,hashes(+字节码功能)--optimize、--optimize-runs 200Docker镜像
ghcr.io/argotorg/solc:stable(最新)或ghcr.io/argotorg/solc:0.8.20(固定)ethereum/solc:0.8.20(仍可工作但不推荐)每个合约对应一个干净的Go包:
generated/ mycontract/ mycontract.go # 干净、无依赖的绑定
| Solidity | Go | 示例 |
|---|---|---|
bool | bool | true |
string | string | "hello" |
address | common.Address | 0x742d... |
bytes | []byte | []byte{0x12, 0x34} |
bytes32 | [32]byte | [32]byte{...} |
uint256 | *big.Int | big.NewInt(123) |
uint64 | uint64 | uint64(123) |
int256 | *big.Int | big.NewInt(-123) |
T[] | []T | []Address{...} |
T[N] | [N]T | [3]uint256{...} |
ghcr.io/argotorg/solc + otherview/solgen容器solc二进制文件如果您当前使用已弃用的ethereum/solc镜像:
bash# 旧版(已弃用) docker run --rm docker.xuanyuan.run/ethereum/solc:0.8.20 --combined-json abi,bin,bin-runtime,hashes # 新版(推荐) docker run --rm ***-ghcr.xuanyuan.run/argotorg/solc:0.8.20 --combined-json abi,bin,bin-runtime,hashes # 或 docker run --rm ***-ghcr.xuanyuan.run/argotorg/solc:stable --combined-json abi,bin,bin-runtime,hashes
功能完全相同——只需替换镜像名称。
bash# 运行测试 go test ./... # 从源码构建 go build ./cmd/solgen
MIT许可证 - 查看LICENSE文件。
流水线失败? 使用--verbose分别测试solc和solgen
Docker权限问题? 使用--user $(id -u):$(id -g)或生成后执行chown
包冲突? 重命名合约——包名源自合约名(仅小写字母和数字)
🔍 详细故障排除:查看EXAMPLES.md获取分步调试、平台特定问题及高级解决方案
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务