AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Deploy Contract

skill-0gfoundation-0g-agent-skills-deploy-contract · by 0gfoundation

A Claude skill from 0gfoundation/0g-agent-skills.

No reviews yet
0 installs
22 views
0.0% view→install

Install

$ agentstack add skill-0gfoundation-0g-agent-skills-deploy-contract

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access Used
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-0gfoundation-0g-agent-skills-deploy-contract)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
5mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Deploy Contract? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Deploy Contract to 0G Chain

Metadata

  • Category: chain
  • SDK: ethers ^6.13.0, Hardhat or Foundry
  • Activation Triggers: "deploy contract", "Solidity", "0G Chain", "deploy smart contract"

Purpose

Deploy Solidity smart contracts to 0G Chain using Hardhat, Foundry, or ethers v6 directly. All contracts must be compiled with evmVersion: "cancun".

Prerequisites

  • Node.js >= 18
  • Hardhat or Foundry installed
  • Funded wallet with 0G tokens
  • .env with PRIVATE_KEY, RPC_URL

Quick Workflow

  1. Write Solidity contract
  2. Configure compiler with evmVersion: "cancun"
  3. Compile contract
  4. Deploy to 0G testnet
  5. Verify on block explorer (optional)

Core Rules

ALWAYS

  • Set evmVersion: "cancun" in compiler configuration
  • Use ethers v6 syntax (NOT v5)
  • Test on testnet before deploying to mainnet
  • Wait for deployment confirmation (waitForDeployment())
  • Store deployed contract addresses

NEVER

  • Use any evmVersion other than "cancun" for 0G Chain
  • Use ethers v5 patterns (.deployed(), contract.address, etc.)
  • Deploy to mainnet without testnet testing
  • Hardcode private keys

Code Examples

Hardhat Deployment

// contracts/MyContract.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

contract MyContract {
    uint256 public value;
    address public owner;

    event ValueChanged(uint256 newValue);

    constructor(uint256 _initialValue) {
        value = _initialValue;
        owner = msg.sender;
    }

    function setValue(uint256 _value) external {
        value = _value;
        emit ValueChanged(_value);
    }
}
// scripts/deploy.ts
import { ethers } from 'hardhat';

async function main() {
  const [deployer] = await ethers.getSigners();
  console.log('Deploying with:', deployer.address);

  const balance = await deployer.provider.getBalance(deployer.address);
  console.log('Balance:', ethers.formatEther(balance), '0G');

  const Contract = await ethers.getContractFactory('MyContract');
  const contract = await Contract.deploy(42);
  await contract.waitForDeployment();

  const address = await contract.getAddress();
  console.log('Deployed to:', address);
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});
# Compile
npx hardhat compile

# Deploy to testnet
npx hardhat run scripts/deploy.ts --network 0g-testnet

# Verify
npx hardhat verify --network 0g-testnet  42

Foundry Deployment

# Compile
forge build

# Deploy
forge create src/MyContract.sol:MyContract \
  --rpc-url https://evmrpc-testnet.0g.ai \
  --private-key $PRIVATE_KEY \
  --constructor-args 42

# Verify
forge verify-contract  src/MyContract.sol:MyContract \
  --chain-id 16602 \
  --verifier-url https://chainscan-galileo.0g.ai/api

Direct ethers v6 Deployment

import { ethers, ContractFactory } from 'ethers';
import * as fs from 'fs';
import 'dotenv/config';

async function deploy() {
  const provider = new ethers.JsonRpcProvider(process.env.RPC_URL);
  const wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, provider);

  // Load compiled artifact
  const artifact = JSON.parse(
    fs.readFileSync('./artifacts/contracts/MyContract.sol/MyContract.json', 'utf8'),
  );

  const factory = new ContractFactory(artifact.abi, artifact.bytecode, wallet);
  const contract = await factory.deploy(42);
  await contract.waitForDeployment();

  const address = await contract.getAddress();
  console.log('Deployed to:', address);

  return { address, abi: artifact.abi };
}

Deploy with Constructor Arguments

// Complex constructor
const contract = await Contract.deploy(
  'My Token', // string name
  'MTK', // string symbol
  ethers.parseEther('1000000'), // uint256 initialSupply
  wallet.address, // address owner
);
await contract.waitForDeployment();

Anti-Patterns

// BAD: Missing evmVersion
// hardhat.config.ts
solidity: '0.8.24'; // WRONG — needs cancun setting

// BAD: ethers v5 deployment check
await contract.deployed(); // v5! Use waitForDeployment()

// BAD: Getting address v5 style
console.log(contract.address); // v5! Use await contract.getAddress()

// BAD: Deploying without balance check
await Contract.deploy(42); // May fail with insufficient funds

Common Errors & Fixes

| Error | Cause | Fix | | ------------------------------------------- | ----------------------- | -------------------------- | | invalid opcode | Wrong evmVersion | Set evmVersion: "cancun" | | insufficient funds | Wallet empty | Fund from faucet | | nonce too low | Pending transaction | Wait or increment nonce | | contract creation code storage out of gas | Complex contract | Increase gas limit | | cannot estimate gas | Constructor will revert | Check constructor args |

Related Skills

  • [Interact Contract](../interact-contract/SKILL.md) — interact with deployed contracts
  • [Scaffold Project](../scaffold-project/SKILL.md) — project setup
  • [Storage + Chain](../../cross-layer/storage-plus-chain/SKILL.md) — on-chain references

References

  • [Chain Patterns](../../../patterns/CHAIN.md)
  • [Network Config](../../../patterns/NETWORK_CONFIG.md)
  • Hardhat Docs
  • Foundry Docs

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.