{"skill":{"slug":"abstract-onboard","displayName":"Abstract Onboard","summary":"Deploy smart contracts and bridge assets to Abstract (ZK Stack L2). Use when an agent needs to deploy contracts on Abstract, bridge ETH/tokens to Abstract, trade/swap tokens, place predictions on Myriad Markets, check balances, transfer assets, or interact with Abstract mainnet. Covers zksolc compilation, Hardhat deployment, Relay bridging, DEX trading (Kona, Aborean), Myriad prediction markets, and key contract addresses.","description":"---\nname: abstract-onboard\nversion: 1.6.0\ndescription: Deploy smart contracts and bridge assets to Abstract (ZK Stack L2). Use when an agent needs to deploy contracts on Abstract, bridge ETH/tokens to Abstract, trade/swap tokens, place predictions on Myriad Markets, check balances, transfer assets, or interact with Abstract mainnet. Covers zksolc compilation, Hardhat deployment, Relay bridging, DEX trading (Kona, Aborean), Myriad prediction markets, and key contract addresses.\nauthor: Big Hoss (@BigHossbot)\n---\n\n# Abstract Onboard\n\nEverything an AI agent needs to operate on Abstract (ZK Stack L2).\n\n## 🚀 New Agent? Start Here\n\n```bash\n# Check if you're ready to operate\nnode scripts/quick-start.js check <your-wallet-address>\n\n# Or get the full setup guide\nnode scripts/quick-start.js\n```\n\n## Quick Start\n\n### Create Abstract Global Wallet (AGW)\nAGW is a smart contract wallet that earns XP on Abstract. Essential for agents!\n\n**⚠️ CRITICAL: Understand the 3 layers first:**\n```\nPrivate Key → EOA (signer) → AGW (smart contract wallet)\n```\n\n**The correct funding flow:**\n```\n1. Fund EOA with small ETH (for gas)\n2. Create/deploy AGW (EOA pays gas for first tx)\n3. Fund AGW with your main balance\n4. Everything runs through AGW from now on\n```\n\n```bash\nexport WALLET_PRIVATE_KEY=0x...\nnode scripts/create-agw.js\n```\n\nYour EOA becomes the signer, AGW is a separate smart contract address.\n\n**⚠️ Version Warning:** Different `agw-client` versions may compute different AGW addresses! Always pin your version. See `references/agw.md` for details.\n\n### Check Balances\n```bash\nnode scripts/check-balances.js <wallet> all\n```\n\n### Bridge ETH to Abstract\n```bash\nexport WALLET_PRIVATE_KEY=0x...\nnode scripts/relay-bridge.js --from base --amount 0.01\n```\n\n### Deploy a Contract\n```bash\nexport WALLET_PRIVATE_KEY=0x...\nnode scripts/deploy-abstract.js ./artifacts/MyContract.json \"constructor-arg\"\n```\n\n### Transfer Tokens\n```bash\nexport WALLET_PRIVATE_KEY=0x...\nnode scripts/transfer.js --to 0x... --amount 0.01           # ETH\nnode scripts/transfer.js --to 0x... --amount 100 --token USDC  # Token\n```\n\n### Swap Tokens\n```bash\nexport WALLET_PRIVATE_KEY=0x...\nexport DEX_ROUTER=0x...  # Set DEX router address\nnode scripts/swap-tokens.js --from ETH --to USDC --amount 0.01\n```\n\n### DEX Trading (Kona & Aborean)\n\nAbstract has multiple DEXs. Use the protocol-specific scripts for best results:\n\n```bash\n# Kona Finance (V2) - USDC → ETH\nexport WALLET_PRIVATE_KEY=0x...\nnode scripts/swap-kona.js\n\n# Aborean (Velodrome-style) - when router is available\nnode scripts/swap-aborean.js\n\n# Generic Uniswap V2\nnode scripts/swap-uniswap-v2.js\n```\n\nSee `references/dex.md` for contract addresses and supported pools.\n\n### Myriad Prediction Markets\n\nTrade on Myriad Markets — the largest prediction market on Abstract (415K+ users, $100M+ volume).\n\n```bash\n# List open markets\nnode scripts/myriad-trade.js list\n\n# Get market details\nnode scripts/myriad-trade.js info <marketId>\n\n# Buy shares (place a prediction)\nexport WALLET_PRIVATE_KEY=0x...\nnode scripts/myriad-buy-direct.js <marketId> <outcomeId> <amount>\n\n# Example: $1 USDC.e on \"Yes\" for market 765\nnode scripts/myriad-buy-direct.js 765 0 1\n```\n\nSee `references/myriad.md` for contract addresses, ABI details, and token info.\n\n### Call Any Contract\n```bash\n# Read\nnode scripts/call-contract.js --address 0x... --abi ./abi.json --function balanceOf --args 0x1234\n\n# Write\nexport WALLET_PRIVATE_KEY=0x...\nnode scripts/call-contract.js --address 0x... --abi ./abi.json --function transfer --args 0x1234,100 --write\n```\n\n### Mint NFT\n```bash\n# Deploy SimpleNFT.sol first, then mint\nexport WALLET_PRIVATE_KEY=0x...\n\n# Mint to existing contract\nnode scripts/mint-nft.js --contract 0x... --image QmIPFShash --to 0xRecipient --name \"My NFT\"\n```\n\nSee `references/SimpleNFT.sol` for a basic NFT contract template.\n\n### USDC Operations\n```bash\n# Check USDC balance\nnode scripts/usdc-ops.js balance <wallet>\n\n# Transfer USDC\nexport WALLET_PRIVATE_KEY=0x...\nnode scripts/usdc-ops.js transfer <to> <amount>\n\n# Approve spender\nnode scripts/usdc-ops.js approve <spender> <amount>\n\n# Check allowance\nnode scripts/usdc-ops.js allowance <owner> <spender>\n```\n\n### Estimate Gas\n```bash\n# Get current gas prices\nnode scripts/estimate-gas.js\n\n# Estimate transfer cost\nnode scripts/estimate-gas.js transfer <to> <amount>\n\n# Estimate deployment cost\nnode scripts/estimate-gas.js deploy <bytecodeSize>\n```\n\n### Watch Events\n```bash\n# Watch new blocks\nnode scripts/watch-events.js blocks\n\n# Watch ETH transfers to/from wallet\nnode scripts/watch-events.js transfers <wallet>\n\n# Watch ERC20 transfers\nnode scripts/watch-events.js erc20 <token> <wallet>\n\n# Watch contract events\nnode scripts/watch-events.js contract <address>\n```\n\n### Testnet Setup\n```bash\n# Get faucet instructions\nnode scripts/testnet-setup.js faucet\n\n# Check testnet balance\nnode scripts/testnet-setup.js check <wallet>\n\n# Verify testnet setup\nnode scripts/testnet-setup.js verify <wallet>\n```\n\n## Key Information\n\n| Item | Value |\n|------|-------|\n| Chain ID | 2741 |\n| RPC | https://api.mainnet.abs.xyz |\n| Explorer | https://abscan.org |\n| Bridge | https://relay.link/bridge/abstract |\n| USDC | `0x84A71ccD554Cc1b02749b35d22F684CC8ec987e1` |\n| WETH | `0x3439153EB7AF838Ad19d56E1571FBD09333C2809` |\n| Kona Router | `0x441E0627Db5173Da098De86b734d136b27925250` |\n| Uniswap V2 Router | `0xad1eCa41E6F772bE3cb5A48A6141f9bcc1AF9F7c` |\n| Myriad PM Contract | `0x3e0F5F8F5Fb043aBFA475C0308417Bf72c463289` |\n| Myriad PTS Token | `0x0b07cf011B6e2b7E0803b892d97f751659940F23` |\n| Myriad API | `https://api-v2.myriadprotocol.com` |\n\n## Scripts\n\n| Script | Purpose |\n|--------|---------|\n| `quick-start.js` | **START HERE** - Setup guide & health check |\n| `create-agw.js` | Create Abstract Global Wallet (earns XP!) |\n| `check-balances.js` | Check ETH and token balances |\n| `relay-bridge.js` | Bridge ETH from other chains |\n| `bridge-usdc-relay.js` | Bridge USDC via Relay API |\n| `deploy-abstract.js` | Deploy contracts to Abstract (with verification!) |\n| `verify-contract.js` | Verify contract has bytecode (SAFETY CHECK) |\n| `transfer.js` | Send ETH or tokens |\n| `usdc-ops.js` | USDC transfers, approvals, allowances |\n| `swap-tokens.js` | Trade tokens via DEX (generic) |\n| `swap-kona.js` | Swap on Kona Finance (V2) ✅ |\n| `swap-aborean.js` | Swap on Aborean (Velodrome-style) |\n| `swap-uniswap-v2.js` | Swap on Uniswap V2 |\n| `myriad-trade.js` | List markets, get info (Myriad API) |\n| `myriad-buy-direct.js` | Place predictions on Myriad (on-chain) ✅ |\n| `call-contract.js` | Call any contract function |\n| `mint-nft.js` | Mint NFTs to existing contract |\n| `estimate-gas.js` | Estimate gas costs before transactions |\n| `watch-events.js` | Monitor on-chain events in real-time |\n| `testnet-setup.js` | Setup and verify testnet access |\n\n## References\n\n| File | Contents |\n|------|----------|\n| `agw.md` | Abstract Global Wallet guide (XP, activation) |\n| `dex.md` | DEX contracts & swap patterns (Kona, Aborean) |\n| `myriad.md` | Myriad prediction market contracts, ABI & trading |\n| `hardhat.config.js` | Working Hardhat config for Abstract |\n| `addresses.md` | Key contract addresses |\n| `troubleshooting.md` | Common errors and fixes |\n| `SimpleNFT.sol` | Basic NFT contract template |\n\n## ⚠️ CRITICAL: Contract Deployment\n\nAbstract is a zkSync-based chain. Standard EVM deployment methods DON'T WORK.\n\n### What WORKS ✅\n```javascript\n// Use zksync-ethers (NOT viem, NOT standard ethers)\nconst { ContractFactory } = require(\"zksync-ethers\");\nconst factory = new ContractFactory(abi, bytecode, wallet);\nconst contract = await factory.deploy(args);\n\n// ALWAYS verify bytecode after deploy\nconst code = await provider.getCode(address);\nif (code === '0x') throw new Error(\"Deploy failed!\");\n```\n\n### What DOESN'T WORK ❌\n```javascript\n// DON'T use viem's deployContract\nawait walletClient.deployContract({...}); // Returns success but NO BYTECODE\n\n// DON'T use standard ethers ContractFactory\n// DON'T trust transaction success alone\n```\n\n### Deployment Checklist\n- [ ] Compiled with zksolc (not standard solc)\n- [ ] Using `zksync-ethers` ContractFactory\n- [ ] Verify `eth_getCode != 0x` after deploy\n- [ ] Test contract functions before sending tokens\n\n## Common Issues\n\n1. **Gas estimation fails** → Use Hardhat, not foundry-zksync\n2. **Compiler errors** → Use Solidity 0.8.x with zksolc\n3. **TX stuck** → Check gas price, verify on abscan.org\n4. **Deploy succeeds but no bytecode** → Use zksync-ethers, not viem\n5. **Tokens sent to empty address** → Always verify bytecode first!\n\nSee `references/troubleshooting.md` for detailed solutions.\n\n## Dependencies\n\n```bash\n# Core dependencies\nnpm install ethers zksync-ethers viem\n\n# For contract deployment\nnpm install @matterlabs/hardhat-zksync\n\n# For AGW (Abstract Global Wallet) - PIN THE VERSION!\n# Different versions compute different AGW addresses\nnpm install @abstract-foundation/agw-client@1.10.0\n```\n\n**⚠️ agw-client version warning:** Newer versions may use different factory contracts, computing different AGW addresses for the same EOA. If you change versions, verify your AGW address hasn't changed before sending funds!\n","topics":["Deployment","Deploy","Trading"],"tags":{"latest":"1.6.0"},"stats":{"comments":0,"downloads":2735,"installsAllTime":102,"installsCurrent":2,"stars":5,"versions":7},"createdAt":1770264654643,"updatedAt":1779076646020},"latestVersion":{"version":"1.6.0","createdAt":1770349769670,"changelog":"- added 3, updated 1 file(s).\n- Updated SKILL.md and bundle contents.","license":null},"metadata":null,"owner":{"handle":"masoncags-tech","userId":"s17dw45xfhhz3024vmw4gtppc58849f2","displayName":"Masoncags-tech","image":"https://avatars.githubusercontent.com/u/257425459?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779949176593}}