[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aptos-deploy-contracts":3,"mdc-me742x-key":36,"related-org-aptos-deploy-contracts":4711,"related-repo-aptos-deploy-contracts":4863},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":31,"sourceUrl":34,"mdContent":35},"deploy-contracts","deploy Move contracts to Aptos networks","Safely deploys Move contracts to Aptos networks (devnet, testnet, mainnet) with pre-deployment verification. Triggers on: 'deploy contract', 'publish to testnet', 'deploy to mainnet', 'how to deploy', 'publish module', 'deployment checklist', 'deploy to devnet'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"aptos","Aptos Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faptos.png","aptos-labs",[13,17,20],{"name":14,"slug":15,"type":16},"Deployment","deployment","tag",{"name":18,"slug":19,"type":16},"Engineering","engineering",{"name":21,"slug":22,"type":16},"Smart Contracts","smart-contracts",18,"https:\u002F\u002Fgithub.com\u002Faptos-labs\u002Faptos-agent-skills","2026-07-12T08:07:16.798352","MIT",8,[29,30],"agent-skills","blockchain",{"repoUrl":24,"stars":23,"forks":27,"topics":32,"description":33},[29,30],"AI skills for building secure, modern Aptos dApps — Move contracts, TypeScript SDK, and frontend integration for Claude Code, Cursor, and Copilot.","https:\u002F\u002Fgithub.com\u002Faptos-labs\u002Faptos-agent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fmove\u002Fdeploy-contracts","---\nname: deploy-contracts\ndescription:\n  \"Safely deploys Move contracts to Aptos networks (devnet, testnet, mainnet) with pre-deployment verification. Triggers\n  on: 'deploy contract', 'publish to testnet', 'deploy to mainnet', 'how to deploy', 'publish module', 'deployment\n  checklist', 'deploy to devnet'.\"\nlicense: MIT\nmetadata:\n  author: aptos-labs\n  version: \"1.0\"\n  category: move\n  tags: [\"deployment\", \"devnet\", \"testnet\", \"mainnet\", \"publishing\"]\n  priority: high\n---\n\n# Deploy Contracts Skill\n\n## Overview\n\nThis skill guides safe deployment of Move contracts to Aptos networks. **Always deploy to testnet before mainnet.**\n\n## Pre-Deployment Checklist\n\nBefore deploying, verify ALL items:\n\n### Security Audit ⭐ CRITICAL - See [SECURITY.md](..\u002F..\u002F..\u002Fpatterns\u002Fmove\u002FSECURITY.md)\n\n- [ ] Security audit completed (use `security-audit` skill)\n- [ ] All critical vulnerabilities fixed\n- [ ] All security patterns verified (arithmetic safety, storage scoping, reference safety, business logic)\n- [ ] Access control verified (signer checks, object ownership)\n- [ ] Input validation implemented (minimum thresholds, fee validation)\n- [ ] No unbounded iterations (per-user storage, not global vectors)\n- [ ] Atomic operations (no front-running opportunities)\n- [ ] Randomness security (if applicable - entry functions, gas balanced)\n\n### Testing\n\n- [ ] 100% test coverage achieved: `aptos move test --coverage`\n- [ ] All tests passing: `aptos move test`\n- [ ] Coverage report shows 100.0%\n- [ ] Edge cases tested\n\n### Code Quality\n\n- [ ] Code compiles without errors: `aptos move compile`\n- [ ] No hardcoded addresses (use named addresses)\n- [ ] Error codes clearly defined\n- [ ] Functions properly documented\n\n### Configuration\n\n- [ ] Move.toml configured correctly\n- [ ] Named addresses set up: `my_addr = \"_\"`\n- [ ] Dependencies specified with correct versions\n- [ ] Network URLs configured\n\n## Object Deployment (Modern Pattern)\n\n### CRITICAL: Use Correct Deployment Command\n\nThere are TWO ways to deploy contracts. For modern object-based contracts, use `deploy-object`:\n\n**✅ CORRECT: Object Deployment (Modern Pattern)**\n\n```bash\naptos move deploy-object \\\n    --address-name my_addr \\\n    --profile devnet \\\n    --assume-yes\n```\n\n**What this does:**\n\n1. Creates an object to host your contract code\n2. Deploys the package to that object's address\n3. Returns the object address (deterministic, based on deployer + package name)\n4. Object address becomes your contract address\n\n**❌ WRONG: Using Regular Publish for Object Contracts**\n\n```bash\n# ❌ Don't use this for object-based contracts\naptos move publish \\\n    --named-addresses my_addr=\u003Caddress>\n```\n\n**When to use each:**\n\n- `deploy-object`: Modern contracts using objects (RECOMMENDED)\n- `publish`: Legacy account-based deployment (older pattern)\n\n**How to tell if you need object deployment:**\n\n- Your contract creates named objects in `init_module`\n- Your contract uses `object::create_named_object()`\n- You want a deterministic contract address\n- Documentation says \"deploy as object\"\n\n### Alternative Object Deployment Commands\n\n**Option 1: `deploy-object` (Recommended - Simplest)**\n\n```bash\naptos move deploy-object --address-name my_addr --profile devnet\n```\n\n- Automatically creates object and deploys code\n- Object address is deterministic\n- Best for most use cases\n\n**Option 2: `create-object-and-publish-package` (Advanced)**\n\n```bash\naptos move create-object-and-publish-package \\\n    --address-name my_addr \\\n    --named-addresses my_addr=default\n```\n\n- More complex command with more options\n- Use only if you need specific object configuration\n- Generally not needed\n\n**Recommendation:** Always use `deploy-object` unless you have a specific reason to use the alternative.\n\n## Deployment Workflow\n\n### Step 1: Test Locally\n\n```bash\n# Ensure all tests pass\naptos move test\n\n# Verify 100% coverage\naptos move test --coverage\naptos move coverage summary\n# Expected output: \"coverage: 100.0%\"\n```\n\n### Step 2: Compile\n\n```bash\n# Compile contract\naptos move compile --named-addresses my_addr=\u003Cyour_address>\n\n# Verify compilation succeeds\necho $?\n# Expected: 0 (success)\n```\n\n### Step 3: Deploy to Devnet (Optional)\n\n**Devnet is for quick testing and experimentation. Account is auto-funded on `aptos init`.**\n\nCheck if a profile exists before initializing:\n\n```bash\n# Check if default profile exists (look for \"default\" in output)\naptos config show-profiles\n\n# If no profile exists, initialize one (auto-funds on devnet)\naptos init --network devnet --assume-yes\n```\n\n```bash\n# Deploy as object (modern pattern)\naptos move deploy-object \\\n    --address-name my_addr \\\n    --profile default \\\n    --assume-yes\n\n# Save the object address from output for future upgrades\n# Output: \"Code was successfully deployed to object address 0x...\"\n\n# Verify deployment\naptos account list --account \u003Cobject_address> --profile default\n```\n\n### Step 4: Deploy to Testnet (REQUIRED)\n\n**Testnet is for final testing before mainnet.**\n\nCheck if a profile exists before initializing:\n\n```bash\n# Check if default profile exists\naptos config show-profiles\n\n# If no profile exists, initialize one\naptos init --network testnet --assume-yes\n```\n\n**Fund your account via web faucet (required — testnet faucet needs Google login):**\n\n1. Get your account address: `aptos config show-profiles`\n2. Go to: `https:\u002F\u002Faptos.dev\u002Fnetwork\u002Ffaucet?address=\u003Cyour_address>`\n3. Login and request testnet APT\n4. Return here and confirm you've funded the account\n\n```bash\n# Verify balance\naptos account balance --profile default\n\n# Deploy to testnet as object (modern pattern)\naptos move deploy-object \\\n    --address-name my_addr \\\n    --profile default \\\n    --assume-yes\n\n# IMPORTANT: Save the object address from output\n# You'll need it for upgrades and function calls\n# Output: \"Code was successfully deployed to object address 0x...\"\n```\n\n### Step 5: Test on Testnet\n\n```bash\n# Run entry functions to verify deployment\naptos move run \\\n    --profile default \\\n    --function-id \u003Cdeployed_address>::\u003Cmodule>::\u003Cfunction> \\\n    --args ...\n\n# Test multiple scenarios\n# - Happy paths\n# - Error cases (should abort with correct error codes)\n# - Access control\n# - Edge cases\n\n# Verify using explorer\n# https:\u002F\u002Fexplorer.aptoslabs.com\u002F?network=testnet\n```\n\n### Step 6: Deploy to Mainnet (After Testnet Success)\n\n**Only deploy to mainnet after thorough testnet testing.**\n\nCheck if a profile exists before initializing:\n\n```bash\n# Check if default profile exists\naptos config show-profiles\n\n# If no profile exists, initialize one\n# IMPORTANT: Warn user that this generates a private key — store it securely\naptos init --network mainnet --assume-yes\n```\n\n**Fund your account:** Transfer real APT to your account address from an exchange or wallet.\n\n```bash\n# Verify balance\naptos account balance --profile default\n\n# Deploy to mainnet as object (modern pattern)\naptos move deploy-object \\\n    --address-name my_addr \\\n    --profile default \\\n    --max-gas 20000  # Optional: set gas limit\n\n# Review prompts carefully before confirming:\n# 1. Gas confirmation: Review gas costs\n# 2. Object address: Note the object address for future reference\n\n# OR use --assume-yes to auto-confirm (only if you're confident)\naptos move deploy-object \\\n    --address-name my_addr \\\n    --profile default \\\n    --assume-yes\n\n# SAVE THE OBJECT ADDRESS from output\n# You'll need it for upgrades and documentation\n\n# Confirm deployment\n# Review transaction in explorer:\n# https:\u002F\u002Fexplorer.aptoslabs.com\u002F?network=mainnet\n```\n\n### Step 7: Verify Deployment\n\n```bash\n# Check module is published\naptos account list --account \u003Cdeployed_address> --profile default\n\n# Look for your module in the output\n# \"0x...::my_module\": { ... }\n\n# Run view function to verify\naptos move view \\\n    --profile default \\\n    --function-id \u003Cdeployed_address>::\u003Cmodule>::\u003Cview_function> \\\n    --args ...\n```\n\n### Step 8: Document Deployment\n\nCreate deployment record:\n\n```markdown\n# Deployment Record\n\n**Date:** 2026-01-23 **Network:** Mainnet **Module:** my_module **Address:** 0x123abc... **Transaction:** 0x456def...\n\n## Verification\n\n- [x] Deployed successfully\n- [x] Module visible in explorer\n- [x] View functions working\n- [x] Entry functions tested\n\n## Links\n\n- Explorer: https:\u002F\u002Fexplorer.aptoslabs.com\u002Faccount\u002F0x123abc...?network=mainnet\n- Transaction: https:\u002F\u002Fexplorer.aptoslabs.com\u002Ftxn\u002F0x456def...?network=mainnet\n\n## Notes\n\n- All security checks passed\n- 100% test coverage verified\n- Tested on testnet for 1 week before mainnet\n```\n\n## Module Upgrades\n\n### Upgrading Existing Object Deployment\n\n**Object-deployed modules are upgradeable by default for the deployer.**\n\n```bash\n# Upgrade existing object deployment\naptos move upgrade-object \\\n    --address-name my_addr \\\n    --object-address \u003Cobject_address_from_initial_deploy> \\\n    --profile mainnet\n\n# Upgrade with auto-confirm\naptos move upgrade-object \\\n    --address-name my_addr \\\n    --object-address \u003Cobject_address> \\\n    --profile mainnet \\\n    --assume-yes\n\n# Verify upgrade\naptos account list --account \u003Cobject_address> --profile mainnet\n```\n\n**IMPORTANT:** Save the object address from your initial `deploy-object` output - you need it for upgrades.\n\n**Upgrade Compatibility Rules:**\n\n- ✅ **CAN:** Add new functions\n- ✅ **CAN:** Add new structs\n- ✅ **CAN:** Add new fields to structs (with care)\n- ❌ **CANNOT:** Remove existing functions (breaks compatibility)\n- ❌ **CANNOT:** Change function signatures (breaks compatibility)\n- ❌ **CANNOT:** Remove struct fields (breaks existing data)\n\n### Making Modules Immutable\n\n**To prevent future upgrades:**\n\n```move\n\u002F\u002F In your module\nfun init_module(account: &signer) {\n    \u002F\u002F After deployment, burn upgrade capability\n    \u002F\u002F (implementation depends on your setup)\n}\n```\n\n## Cost Estimation\n\n### Gas Costs\n\n```bash\n# Typical deployment costs:\n# - Small module: ~500-1000 gas units\n# - Medium module: ~1000-5000 gas units\n# - Large module: ~5000-20000 gas units\n\n# When you run deploy-object, the CLI shows gas estimate before confirming\n# Use --assume-yes only after you've verified costs on testnet first\n```\n\n### Mainnet Costs\n\n**Gas costs are paid in APT:**\n\n- Gas units × Gas price = Total cost\n- Example: 5000 gas units × 100 Octas\u002Fgas = 500,000 Octas = 0.005 APT\n\n## Multi-Module Deployment\n\n### Deploying Multiple Modules\n\n**Option 1: Single package (Recommended)**\n\n```\nproject\u002F\n├── Move.toml\n└── sources\u002F\n    ├── module1.move\n    ├── module2.move\n    └── module3.move\n```\n\n```bash\n# Deploys all modules at once as a single object\naptos move deploy-object --address-name my_addr --profile testnet\n```\n\n**Option 2: Separate packages with dependencies**\n\n```bash\n# Deploy dependency package first\ncd dependency-package\naptos move deploy-object --address-name dep_addr --profile testnet\n# Note the object address from output\n\n# Update main package Move.toml to reference dependency address\n# Then deploy main package\ncd ..\u002Fmain-package\naptos move deploy-object --address-name main_addr --profile testnet\n```\n\n## Troubleshooting Deployment\n\n### \"Insufficient APT balance\"\n\n**Devnet:** Auto-funded on `aptos init`. If needed, run:\n\n```bash\naptos account fund-with-faucet --account default --amount 100000000 --profile default\n```\n\n**Testnet:** Use the web faucet (requires Google login):\n\n1. Get your account address: `aptos config show-profiles`\n2. Go to: `https:\u002F\u002Faptos.dev\u002Fnetwork\u002Ffaucet?address=\u003Cyour_address>`\n3. Login and request testnet APT\n4. Verify balance: `aptos account balance --profile default`\n\n**Mainnet:** Transfer real APT to your account from an exchange or wallet.\n\n### \"Module already exists\" (for object deployments)\n\n```bash\n# Use upgrade-object with the original object address\naptos move upgrade-object \\\n    --address-name my_addr \\\n    --object-address \u003Cobject_address_from_initial_deploy> \\\n    --profile testnet\n```\n\n### \"Compilation failed\"\n\n```bash\n# Fix compilation errors first\naptos move compile\n# Fix all errors shown, then retry deployment\n```\n\n### \"Gas limit exceeded\"\n\n```bash\n# Increase max gas\naptos move deploy-object \\\n    --address-name my_addr \\\n    --profile testnet \\\n    --max-gas 50000\n```\n\n## Deployment Checklist\n\n**Before Deployment:**\n\n- [ ] Security audit passed\n- [ ] 100% test coverage\n- [ ] All tests passing\n- [ ] Code compiles successfully\n- [ ] Named addresses configured\n- [ ] Target network selected (testnet first!)\n\n**During Deployment:**\n\n- [ ] Correct network selected\n- [ ] Correct address specified\n- [ ] Transaction submitted\n- [ ] Transaction hash recorded\n\n**After Deployment:**\n\n- [ ] Module visible in explorer\n- [ ] View functions work\n- [ ] Entry functions tested\n- [ ] Deployment documented\n- [ ] Team notified\n\n## CLI Argument Types\n\nWhen calling entry or view functions via the CLI, use these type prefixes:\n\n### Primitive Types\n\n```bash\n--args u64:1000           # u8, u16, u32, u64, u128, u256\n--args bool:true          # boolean\n--args address:0x1        # address\n```\n\n### Complex Types\n\n```bash\n--args string:\"Hello World\"                    # UTF-8 string\n--args hex:0x48656c6c6f                        # raw bytes\n--args \"u64:[1,2,3,4,5]\"                       # vector\u003Cu64>\n--args \"string:[\\\"one\\\",\\\"two\\\",\\\"three\\\"]\"    # vector\u003CString>\n```\n\n### Object Types\n\n```bash\n# For Object\u003CT> parameters, pass the object address\n--args address:0x123abc...\n```\n\n## ALWAYS Rules\n\n- ✅ ALWAYS run comprehensive security audit before deployment (use `security-audit` skill)\n- ✅ ALWAYS verify 100% test coverage with security tests\n- ✅ ALWAYS verify all SECURITY.md patterns (arithmetic, storage scoping, reference safety, business logic)\n- ✅ ALWAYS use `deploy-object` (NOT `resource_account::create_resource_account()` which is legacy)\n- ✅ ALWAYS deploy to testnet before mainnet\n- ✅ ALWAYS test on testnet thoroughly (happy paths, error cases, security scenarios)\n- ✅ ALWAYS backup private keys securely\n- ✅ ALWAYS document deployment addresses\n- ✅ ALWAYS verify deployment in explorer\n- ✅ ALWAYS test functions after deployment\n- ✅ ALWAYS use separate keys for testnet and mainnet (SECURITY.md - Operations)\n\n## NEVER Rules\n\n- ❌ NEVER deploy without comprehensive security audit\n- ❌ NEVER deploy with \u003C 100% test coverage\n- ❌ NEVER deploy without security test verification\n- ❌ NEVER deploy directly to mainnet without testnet testing\n- ❌ NEVER deploy without testing on testnet first\n- ❌ NEVER commit private keys to version control\n- ❌ NEVER skip post-deployment verification\n- ❌ NEVER rush mainnet deployment\n- ❌ NEVER reuse publishing keys between testnet and mainnet (security risk)\n- ❌ NEVER read or display contents of `~\u002F.aptos\u002Fconfig.yaml` or `.env` files (contain private keys)\n- ❌ NEVER display private key values in responses — use `\"0x...\"` placeholders\n- ❌ NEVER run `cat ~\u002F.aptos\u002Fconfig.yaml`, `echo $VITE_MODULE_PUBLISHER_ACCOUNT_PRIVATE_KEY`, or similar commands\n- ❌ NEVER run `git add .` or `git add -A` without confirming `.env` is in `.gitignore`\n\n## References\n\n**Official Documentation:**\n\n- CLI Publishing: https:\u002F\u002Faptos.dev\u002Fbuild\u002Fcli\u002Fworking-with-move-contracts\n- Network Endpoints: https:\u002F\u002Faptos.dev\u002Fnodes\u002Fnetworks\n- Gas and Fees: https:\u002F\u002Faptos.dev\u002Fconcepts\u002Fgas-txn-fee\n\n**Explorers:**\n\n- Mainnet: https:\u002F\u002Fexplorer.aptoslabs.com\u002F?network=mainnet\n- Testnet: https:\u002F\u002Fexplorer.aptoslabs.com\u002F?network=testnet\n- Devnet: https:\u002F\u002Fexplorer.aptoslabs.com\u002F?network=devnet\n\n**Related Skills:**\n\n- `security-audit` - Audit before deployment\n- `generate-tests` - Ensure tests exist\n\n---\n\n**Remember:** Security audit → 100% tests → Testnet → Thorough testing → Mainnet. Never skip testnet.\n",{"data":37,"body":47},{"name":4,"description":6,"license":26,"metadata":38},{"author":11,"version":39,"category":40,"tags":41,"priority":46},"1.0","move",[15,42,43,44,45],"devnet","testnet","mainnet","publishing","high",{"type":48,"children":49},"root",[50,59,66,78,84,89,103,195,201,253,259,305,311,357,363,369,382,390,474,482,506,514,584,592,616,624,659,665,680,721,739,755,809,827,844,850,856,956,962,1056,1062,1078,1083,1156,1319,1325,1333,1337,1406,1414,1449,1590,1596,1805,1811,1819,1823,1898,1908,2194,2200,2410,2416,2421,2785,2791,2797,2805,3053,3070,3078,3145,3151,3159,3207,3213,3219,3281,3287,3295,3308,3314,3320,3328,3338,3385,3393,3528,3534,3540,3557,3606,3616,3652,3662,3668,3755,3761,3800,3806,3882,3888,3896,3954,3962,4002,4010,4059,4065,4070,4076,4140,4146,4305,4311,4338,4344,4423,4429,4564,4570,4578,4615,4623,4659,4667,4691,4695,4705],{"type":51,"tag":52,"props":53,"children":55},"element","h1",{"id":54},"deploy-contracts-skill",[56],{"type":57,"value":58},"text","Deploy Contracts Skill",{"type":51,"tag":60,"props":61,"children":63},"h2",{"id":62},"overview",[64],{"type":57,"value":65},"Overview",{"type":51,"tag":67,"props":68,"children":69},"p",{},[70,72],{"type":57,"value":71},"This skill guides safe deployment of Move contracts to Aptos networks. ",{"type":51,"tag":73,"props":74,"children":75},"strong",{},[76],{"type":57,"value":77},"Always deploy to testnet before mainnet.",{"type":51,"tag":60,"props":79,"children":81},{"id":80},"pre-deployment-checklist",[82],{"type":57,"value":83},"Pre-Deployment Checklist",{"type":51,"tag":67,"props":85,"children":86},{},[87],{"type":57,"value":88},"Before deploying, verify ALL items:",{"type":51,"tag":90,"props":91,"children":93},"h3",{"id":92},"security-audit-critical-see-securitymd",[94,96],{"type":57,"value":95},"Security Audit ⭐ CRITICAL - See ",{"type":51,"tag":97,"props":98,"children":100},"a",{"href":99},"..\u002F..\u002F..\u002Fpatterns\u002Fmove\u002FSECURITY.md",[101],{"type":57,"value":102},"SECURITY.md",{"type":51,"tag":104,"props":105,"children":108},"ul",{"className":106},[107],"contains-task-list",[109,132,141,150,159,168,177,186],{"type":51,"tag":110,"props":111,"children":114},"li",{"className":112},[113],"task-list-item",[115,121,123,130],{"type":51,"tag":116,"props":117,"children":120},"input",{"disabled":118,"type":119},true,"checkbox",[],{"type":57,"value":122}," Security audit completed (use ",{"type":51,"tag":124,"props":125,"children":127},"code",{"className":126},[],[128],{"type":57,"value":129},"security-audit",{"type":57,"value":131}," skill)",{"type":51,"tag":110,"props":133,"children":135},{"className":134},[113],[136,139],{"type":51,"tag":116,"props":137,"children":138},{"disabled":118,"type":119},[],{"type":57,"value":140}," All critical vulnerabilities fixed",{"type":51,"tag":110,"props":142,"children":144},{"className":143},[113],[145,148],{"type":51,"tag":116,"props":146,"children":147},{"disabled":118,"type":119},[],{"type":57,"value":149}," All security patterns verified (arithmetic safety, storage scoping, reference safety, business logic)",{"type":51,"tag":110,"props":151,"children":153},{"className":152},[113],[154,157],{"type":51,"tag":116,"props":155,"children":156},{"disabled":118,"type":119},[],{"type":57,"value":158}," Access control verified (signer checks, object ownership)",{"type":51,"tag":110,"props":160,"children":162},{"className":161},[113],[163,166],{"type":51,"tag":116,"props":164,"children":165},{"disabled":118,"type":119},[],{"type":57,"value":167}," Input validation implemented (minimum thresholds, fee validation)",{"type":51,"tag":110,"props":169,"children":171},{"className":170},[113],[172,175],{"type":51,"tag":116,"props":173,"children":174},{"disabled":118,"type":119},[],{"type":57,"value":176}," No unbounded iterations (per-user storage, not global vectors)",{"type":51,"tag":110,"props":178,"children":180},{"className":179},[113],[181,184],{"type":51,"tag":116,"props":182,"children":183},{"disabled":118,"type":119},[],{"type":57,"value":185}," Atomic operations (no front-running opportunities)",{"type":51,"tag":110,"props":187,"children":189},{"className":188},[113],[190,193],{"type":51,"tag":116,"props":191,"children":192},{"disabled":118,"type":119},[],{"type":57,"value":194}," Randomness security (if applicable - entry functions, gas balanced)",{"type":51,"tag":90,"props":196,"children":198},{"id":197},"testing",[199],{"type":57,"value":200},"Testing",{"type":51,"tag":104,"props":202,"children":204},{"className":203},[107],[205,220,235,244],{"type":51,"tag":110,"props":206,"children":208},{"className":207},[113],[209,212,214],{"type":51,"tag":116,"props":210,"children":211},{"disabled":118,"type":119},[],{"type":57,"value":213}," 100% test coverage achieved: ",{"type":51,"tag":124,"props":215,"children":217},{"className":216},[],[218],{"type":57,"value":219},"aptos move test --coverage",{"type":51,"tag":110,"props":221,"children":223},{"className":222},[113],[224,227,229],{"type":51,"tag":116,"props":225,"children":226},{"disabled":118,"type":119},[],{"type":57,"value":228}," All tests passing: ",{"type":51,"tag":124,"props":230,"children":232},{"className":231},[],[233],{"type":57,"value":234},"aptos move test",{"type":51,"tag":110,"props":236,"children":238},{"className":237},[113],[239,242],{"type":51,"tag":116,"props":240,"children":241},{"disabled":118,"type":119},[],{"type":57,"value":243}," Coverage report shows 100.0%",{"type":51,"tag":110,"props":245,"children":247},{"className":246},[113],[248,251],{"type":51,"tag":116,"props":249,"children":250},{"disabled":118,"type":119},[],{"type":57,"value":252}," Edge cases tested",{"type":51,"tag":90,"props":254,"children":256},{"id":255},"code-quality",[257],{"type":57,"value":258},"Code Quality",{"type":51,"tag":104,"props":260,"children":262},{"className":261},[107],[263,278,287,296],{"type":51,"tag":110,"props":264,"children":266},{"className":265},[113],[267,270,272],{"type":51,"tag":116,"props":268,"children":269},{"disabled":118,"type":119},[],{"type":57,"value":271}," Code compiles without errors: ",{"type":51,"tag":124,"props":273,"children":275},{"className":274},[],[276],{"type":57,"value":277},"aptos move compile",{"type":51,"tag":110,"props":279,"children":281},{"className":280},[113],[282,285],{"type":51,"tag":116,"props":283,"children":284},{"disabled":118,"type":119},[],{"type":57,"value":286}," No hardcoded addresses (use named addresses)",{"type":51,"tag":110,"props":288,"children":290},{"className":289},[113],[291,294],{"type":51,"tag":116,"props":292,"children":293},{"disabled":118,"type":119},[],{"type":57,"value":295}," Error codes clearly defined",{"type":51,"tag":110,"props":297,"children":299},{"className":298},[113],[300,303],{"type":51,"tag":116,"props":301,"children":302},{"disabled":118,"type":119},[],{"type":57,"value":304}," Functions properly documented",{"type":51,"tag":90,"props":306,"children":308},{"id":307},"configuration",[309],{"type":57,"value":310},"Configuration",{"type":51,"tag":104,"props":312,"children":314},{"className":313},[107],[315,324,339,348],{"type":51,"tag":110,"props":316,"children":318},{"className":317},[113],[319,322],{"type":51,"tag":116,"props":320,"children":321},{"disabled":118,"type":119},[],{"type":57,"value":323}," Move.toml configured correctly",{"type":51,"tag":110,"props":325,"children":327},{"className":326},[113],[328,331,333],{"type":51,"tag":116,"props":329,"children":330},{"disabled":118,"type":119},[],{"type":57,"value":332}," Named addresses set up: ",{"type":51,"tag":124,"props":334,"children":336},{"className":335},[],[337],{"type":57,"value":338},"my_addr = \"_\"",{"type":51,"tag":110,"props":340,"children":342},{"className":341},[113],[343,346],{"type":51,"tag":116,"props":344,"children":345},{"disabled":118,"type":119},[],{"type":57,"value":347}," Dependencies specified with correct versions",{"type":51,"tag":110,"props":349,"children":351},{"className":350},[113],[352,355],{"type":51,"tag":116,"props":353,"children":354},{"disabled":118,"type":119},[],{"type":57,"value":356}," Network URLs configured",{"type":51,"tag":60,"props":358,"children":360},{"id":359},"object-deployment-modern-pattern",[361],{"type":57,"value":362},"Object Deployment (Modern Pattern)",{"type":51,"tag":90,"props":364,"children":366},{"id":365},"critical-use-correct-deployment-command",[367],{"type":57,"value":368},"CRITICAL: Use Correct Deployment Command",{"type":51,"tag":67,"props":370,"children":371},{},[372,374,380],{"type":57,"value":373},"There are TWO ways to deploy contracts. For modern object-based contracts, use ",{"type":51,"tag":124,"props":375,"children":377},{"className":376},[],[378],{"type":57,"value":379},"deploy-object",{"type":57,"value":381},":",{"type":51,"tag":67,"props":383,"children":384},{},[385],{"type":51,"tag":73,"props":386,"children":387},{},[388],{"type":57,"value":389},"✅ CORRECT: Object Deployment (Modern Pattern)",{"type":51,"tag":391,"props":392,"children":397},"pre",{"className":393,"code":394,"language":395,"meta":396,"style":396},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","aptos move deploy-object \\\n    --address-name my_addr \\\n    --profile devnet \\\n    --assume-yes\n","bash","",[398],{"type":51,"tag":124,"props":399,"children":400},{"__ignoreMap":396},[401,429,447,465],{"type":51,"tag":402,"props":403,"children":406},"span",{"class":404,"line":405},"line",1,[407,412,418,423],{"type":51,"tag":402,"props":408,"children":410},{"style":409},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[411],{"type":57,"value":8},{"type":51,"tag":402,"props":413,"children":415},{"style":414},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[416],{"type":57,"value":417}," move",{"type":51,"tag":402,"props":419,"children":420},{"style":414},[421],{"type":57,"value":422}," deploy-object",{"type":51,"tag":402,"props":424,"children":426},{"style":425},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[427],{"type":57,"value":428}," \\\n",{"type":51,"tag":402,"props":430,"children":432},{"class":404,"line":431},2,[433,438,443],{"type":51,"tag":402,"props":434,"children":435},{"style":414},[436],{"type":57,"value":437},"    --address-name",{"type":51,"tag":402,"props":439,"children":440},{"style":414},[441],{"type":57,"value":442}," my_addr",{"type":51,"tag":402,"props":444,"children":445},{"style":425},[446],{"type":57,"value":428},{"type":51,"tag":402,"props":448,"children":450},{"class":404,"line":449},3,[451,456,461],{"type":51,"tag":402,"props":452,"children":453},{"style":414},[454],{"type":57,"value":455},"    --profile",{"type":51,"tag":402,"props":457,"children":458},{"style":414},[459],{"type":57,"value":460}," devnet",{"type":51,"tag":402,"props":462,"children":463},{"style":425},[464],{"type":57,"value":428},{"type":51,"tag":402,"props":466,"children":468},{"class":404,"line":467},4,[469],{"type":51,"tag":402,"props":470,"children":471},{"style":414},[472],{"type":57,"value":473},"    --assume-yes\n",{"type":51,"tag":67,"props":475,"children":476},{},[477],{"type":51,"tag":73,"props":478,"children":479},{},[480],{"type":57,"value":481},"What this does:",{"type":51,"tag":483,"props":484,"children":485},"ol",{},[486,491,496,501],{"type":51,"tag":110,"props":487,"children":488},{},[489],{"type":57,"value":490},"Creates an object to host your contract code",{"type":51,"tag":110,"props":492,"children":493},{},[494],{"type":57,"value":495},"Deploys the package to that object's address",{"type":51,"tag":110,"props":497,"children":498},{},[499],{"type":57,"value":500},"Returns the object address (deterministic, based on deployer + package name)",{"type":51,"tag":110,"props":502,"children":503},{},[504],{"type":57,"value":505},"Object address becomes your contract address",{"type":51,"tag":67,"props":507,"children":508},{},[509],{"type":51,"tag":73,"props":510,"children":511},{},[512],{"type":57,"value":513},"❌ WRONG: Using Regular Publish for Object Contracts",{"type":51,"tag":391,"props":515,"children":517},{"className":393,"code":516,"language":395,"meta":396,"style":396},"# ❌ Don't use this for object-based contracts\naptos move publish \\\n    --named-addresses my_addr=\u003Caddress>\n",[518],{"type":51,"tag":124,"props":519,"children":520},{"__ignoreMap":396},[521,530,550],{"type":51,"tag":402,"props":522,"children":523},{"class":404,"line":405},[524],{"type":51,"tag":402,"props":525,"children":527},{"style":526},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[528],{"type":57,"value":529},"# ❌ Don't use this for object-based contracts\n",{"type":51,"tag":402,"props":531,"children":532},{"class":404,"line":431},[533,537,541,546],{"type":51,"tag":402,"props":534,"children":535},{"style":409},[536],{"type":57,"value":8},{"type":51,"tag":402,"props":538,"children":539},{"style":414},[540],{"type":57,"value":417},{"type":51,"tag":402,"props":542,"children":543},{"style":414},[544],{"type":57,"value":545}," publish",{"type":51,"tag":402,"props":547,"children":548},{"style":425},[549],{"type":57,"value":428},{"type":51,"tag":402,"props":551,"children":552},{"class":404,"line":449},[553,558,563,569,574,579],{"type":51,"tag":402,"props":554,"children":555},{"style":414},[556],{"type":57,"value":557},"    --named-addresses",{"type":51,"tag":402,"props":559,"children":560},{"style":414},[561],{"type":57,"value":562}," my_addr=",{"type":51,"tag":402,"props":564,"children":566},{"style":565},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[567],{"type":57,"value":568},"\u003C",{"type":51,"tag":402,"props":570,"children":571},{"style":414},[572],{"type":57,"value":573},"addres",{"type":51,"tag":402,"props":575,"children":576},{"style":425},[577],{"type":57,"value":578},"s",{"type":51,"tag":402,"props":580,"children":581},{"style":565},[582],{"type":57,"value":583},">\n",{"type":51,"tag":67,"props":585,"children":586},{},[587],{"type":51,"tag":73,"props":588,"children":589},{},[590],{"type":57,"value":591},"When to use each:",{"type":51,"tag":104,"props":593,"children":594},{},[595,605],{"type":51,"tag":110,"props":596,"children":597},{},[598,603],{"type":51,"tag":124,"props":599,"children":601},{"className":600},[],[602],{"type":57,"value":379},{"type":57,"value":604},": Modern contracts using objects (RECOMMENDED)",{"type":51,"tag":110,"props":606,"children":607},{},[608,614],{"type":51,"tag":124,"props":609,"children":611},{"className":610},[],[612],{"type":57,"value":613},"publish",{"type":57,"value":615},": Legacy account-based deployment (older pattern)",{"type":51,"tag":67,"props":617,"children":618},{},[619],{"type":51,"tag":73,"props":620,"children":621},{},[622],{"type":57,"value":623},"How to tell if you need object deployment:",{"type":51,"tag":104,"props":625,"children":626},{},[627,638,649,654],{"type":51,"tag":110,"props":628,"children":629},{},[630,632],{"type":57,"value":631},"Your contract creates named objects in ",{"type":51,"tag":124,"props":633,"children":635},{"className":634},[],[636],{"type":57,"value":637},"init_module",{"type":51,"tag":110,"props":639,"children":640},{},[641,643],{"type":57,"value":642},"Your contract uses ",{"type":51,"tag":124,"props":644,"children":646},{"className":645},[],[647],{"type":57,"value":648},"object::create_named_object()",{"type":51,"tag":110,"props":650,"children":651},{},[652],{"type":57,"value":653},"You want a deterministic contract address",{"type":51,"tag":110,"props":655,"children":656},{},[657],{"type":57,"value":658},"Documentation says \"deploy as object\"",{"type":51,"tag":90,"props":660,"children":662},{"id":661},"alternative-object-deployment-commands",[663],{"type":57,"value":664},"Alternative Object Deployment Commands",{"type":51,"tag":67,"props":666,"children":667},{},[668],{"type":51,"tag":73,"props":669,"children":670},{},[671,673,678],{"type":57,"value":672},"Option 1: ",{"type":51,"tag":124,"props":674,"children":676},{"className":675},[],[677],{"type":57,"value":379},{"type":57,"value":679}," (Recommended - Simplest)",{"type":51,"tag":391,"props":681,"children":683},{"className":393,"code":682,"language":395,"meta":396,"style":396},"aptos move deploy-object --address-name my_addr --profile devnet\n",[684],{"type":51,"tag":124,"props":685,"children":686},{"__ignoreMap":396},[687],{"type":51,"tag":402,"props":688,"children":689},{"class":404,"line":405},[690,694,698,702,707,711,716],{"type":51,"tag":402,"props":691,"children":692},{"style":409},[693],{"type":57,"value":8},{"type":51,"tag":402,"props":695,"children":696},{"style":414},[697],{"type":57,"value":417},{"type":51,"tag":402,"props":699,"children":700},{"style":414},[701],{"type":57,"value":422},{"type":51,"tag":402,"props":703,"children":704},{"style":414},[705],{"type":57,"value":706}," --address-name",{"type":51,"tag":402,"props":708,"children":709},{"style":414},[710],{"type":57,"value":442},{"type":51,"tag":402,"props":712,"children":713},{"style":414},[714],{"type":57,"value":715}," --profile",{"type":51,"tag":402,"props":717,"children":718},{"style":414},[719],{"type":57,"value":720}," devnet\n",{"type":51,"tag":104,"props":722,"children":723},{},[724,729,734],{"type":51,"tag":110,"props":725,"children":726},{},[727],{"type":57,"value":728},"Automatically creates object and deploys code",{"type":51,"tag":110,"props":730,"children":731},{},[732],{"type":57,"value":733},"Object address is deterministic",{"type":51,"tag":110,"props":735,"children":736},{},[737],{"type":57,"value":738},"Best for most use cases",{"type":51,"tag":67,"props":740,"children":741},{},[742],{"type":51,"tag":73,"props":743,"children":744},{},[745,747,753],{"type":57,"value":746},"Option 2: ",{"type":51,"tag":124,"props":748,"children":750},{"className":749},[],[751],{"type":57,"value":752},"create-object-and-publish-package",{"type":57,"value":754}," (Advanced)",{"type":51,"tag":391,"props":756,"children":758},{"className":393,"code":757,"language":395,"meta":396,"style":396},"aptos move create-object-and-publish-package \\\n    --address-name my_addr \\\n    --named-addresses my_addr=default\n",[759],{"type":51,"tag":124,"props":760,"children":761},{"__ignoreMap":396},[762,782,797],{"type":51,"tag":402,"props":763,"children":764},{"class":404,"line":405},[765,769,773,778],{"type":51,"tag":402,"props":766,"children":767},{"style":409},[768],{"type":57,"value":8},{"type":51,"tag":402,"props":770,"children":771},{"style":414},[772],{"type":57,"value":417},{"type":51,"tag":402,"props":774,"children":775},{"style":414},[776],{"type":57,"value":777}," create-object-and-publish-package",{"type":51,"tag":402,"props":779,"children":780},{"style":425},[781],{"type":57,"value":428},{"type":51,"tag":402,"props":783,"children":784},{"class":404,"line":431},[785,789,793],{"type":51,"tag":402,"props":786,"children":787},{"style":414},[788],{"type":57,"value":437},{"type":51,"tag":402,"props":790,"children":791},{"style":414},[792],{"type":57,"value":442},{"type":51,"tag":402,"props":794,"children":795},{"style":425},[796],{"type":57,"value":428},{"type":51,"tag":402,"props":798,"children":799},{"class":404,"line":449},[800,804],{"type":51,"tag":402,"props":801,"children":802},{"style":414},[803],{"type":57,"value":557},{"type":51,"tag":402,"props":805,"children":806},{"style":414},[807],{"type":57,"value":808}," my_addr=default\n",{"type":51,"tag":104,"props":810,"children":811},{},[812,817,822],{"type":51,"tag":110,"props":813,"children":814},{},[815],{"type":57,"value":816},"More complex command with more options",{"type":51,"tag":110,"props":818,"children":819},{},[820],{"type":57,"value":821},"Use only if you need specific object configuration",{"type":51,"tag":110,"props":823,"children":824},{},[825],{"type":57,"value":826},"Generally not needed",{"type":51,"tag":67,"props":828,"children":829},{},[830,835,837,842],{"type":51,"tag":73,"props":831,"children":832},{},[833],{"type":57,"value":834},"Recommendation:",{"type":57,"value":836}," Always use ",{"type":51,"tag":124,"props":838,"children":840},{"className":839},[],[841],{"type":57,"value":379},{"type":57,"value":843}," unless you have a specific reason to use the alternative.",{"type":51,"tag":60,"props":845,"children":847},{"id":846},"deployment-workflow",[848],{"type":57,"value":849},"Deployment Workflow",{"type":51,"tag":90,"props":851,"children":853},{"id":852},"step-1-test-locally",[854],{"type":57,"value":855},"Step 1: Test Locally",{"type":51,"tag":391,"props":857,"children":859},{"className":393,"code":858,"language":395,"meta":396,"style":396},"# Ensure all tests pass\naptos move test\n\n# Verify 100% coverage\naptos move test --coverage\naptos move coverage summary\n# Expected output: \"coverage: 100.0%\"\n",[860],{"type":51,"tag":124,"props":861,"children":862},{"__ignoreMap":396},[863,871,887,895,903,925,947],{"type":51,"tag":402,"props":864,"children":865},{"class":404,"line":405},[866],{"type":51,"tag":402,"props":867,"children":868},{"style":526},[869],{"type":57,"value":870},"# Ensure all tests pass\n",{"type":51,"tag":402,"props":872,"children":873},{"class":404,"line":431},[874,878,882],{"type":51,"tag":402,"props":875,"children":876},{"style":409},[877],{"type":57,"value":8},{"type":51,"tag":402,"props":879,"children":880},{"style":414},[881],{"type":57,"value":417},{"type":51,"tag":402,"props":883,"children":884},{"style":414},[885],{"type":57,"value":886}," test\n",{"type":51,"tag":402,"props":888,"children":889},{"class":404,"line":449},[890],{"type":51,"tag":402,"props":891,"children":892},{"emptyLinePlaceholder":118},[893],{"type":57,"value":894},"\n",{"type":51,"tag":402,"props":896,"children":897},{"class":404,"line":467},[898],{"type":51,"tag":402,"props":899,"children":900},{"style":526},[901],{"type":57,"value":902},"# Verify 100% coverage\n",{"type":51,"tag":402,"props":904,"children":906},{"class":404,"line":905},5,[907,911,915,920],{"type":51,"tag":402,"props":908,"children":909},{"style":409},[910],{"type":57,"value":8},{"type":51,"tag":402,"props":912,"children":913},{"style":414},[914],{"type":57,"value":417},{"type":51,"tag":402,"props":916,"children":917},{"style":414},[918],{"type":57,"value":919}," test",{"type":51,"tag":402,"props":921,"children":922},{"style":414},[923],{"type":57,"value":924}," --coverage\n",{"type":51,"tag":402,"props":926,"children":928},{"class":404,"line":927},6,[929,933,937,942],{"type":51,"tag":402,"props":930,"children":931},{"style":409},[932],{"type":57,"value":8},{"type":51,"tag":402,"props":934,"children":935},{"style":414},[936],{"type":57,"value":417},{"type":51,"tag":402,"props":938,"children":939},{"style":414},[940],{"type":57,"value":941}," coverage",{"type":51,"tag":402,"props":943,"children":944},{"style":414},[945],{"type":57,"value":946}," summary\n",{"type":51,"tag":402,"props":948,"children":950},{"class":404,"line":949},7,[951],{"type":51,"tag":402,"props":952,"children":953},{"style":526},[954],{"type":57,"value":955},"# Expected output: \"coverage: 100.0%\"\n",{"type":51,"tag":90,"props":957,"children":959},{"id":958},"step-2-compile",[960],{"type":57,"value":961},"Step 2: Compile",{"type":51,"tag":391,"props":963,"children":965},{"className":393,"code":964,"language":395,"meta":396,"style":396},"# Compile contract\naptos move compile --named-addresses my_addr=\u003Cyour_address>\n\n# Verify compilation succeeds\necho $?\n# Expected: 0 (success)\n",[966],{"type":51,"tag":124,"props":967,"children":968},{"__ignoreMap":396},[969,977,1019,1026,1034,1048],{"type":51,"tag":402,"props":970,"children":971},{"class":404,"line":405},[972],{"type":51,"tag":402,"props":973,"children":974},{"style":526},[975],{"type":57,"value":976},"# Compile contract\n",{"type":51,"tag":402,"props":978,"children":979},{"class":404,"line":431},[980,984,988,993,998,1002,1006,1011,1015],{"type":51,"tag":402,"props":981,"children":982},{"style":409},[983],{"type":57,"value":8},{"type":51,"tag":402,"props":985,"children":986},{"style":414},[987],{"type":57,"value":417},{"type":51,"tag":402,"props":989,"children":990},{"style":414},[991],{"type":57,"value":992}," compile",{"type":51,"tag":402,"props":994,"children":995},{"style":414},[996],{"type":57,"value":997}," --named-addresses",{"type":51,"tag":402,"props":999,"children":1000},{"style":414},[1001],{"type":57,"value":562},{"type":51,"tag":402,"props":1003,"children":1004},{"style":565},[1005],{"type":57,"value":568},{"type":51,"tag":402,"props":1007,"children":1008},{"style":414},[1009],{"type":57,"value":1010},"your_addres",{"type":51,"tag":402,"props":1012,"children":1013},{"style":425},[1014],{"type":57,"value":578},{"type":51,"tag":402,"props":1016,"children":1017},{"style":565},[1018],{"type":57,"value":583},{"type":51,"tag":402,"props":1020,"children":1021},{"class":404,"line":449},[1022],{"type":51,"tag":402,"props":1023,"children":1024},{"emptyLinePlaceholder":118},[1025],{"type":57,"value":894},{"type":51,"tag":402,"props":1027,"children":1028},{"class":404,"line":467},[1029],{"type":51,"tag":402,"props":1030,"children":1031},{"style":526},[1032],{"type":57,"value":1033},"# Verify compilation succeeds\n",{"type":51,"tag":402,"props":1035,"children":1036},{"class":404,"line":905},[1037,1043],{"type":51,"tag":402,"props":1038,"children":1040},{"style":1039},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[1041],{"type":57,"value":1042},"echo",{"type":51,"tag":402,"props":1044,"children":1045},{"style":425},[1046],{"type":57,"value":1047}," $?\n",{"type":51,"tag":402,"props":1049,"children":1050},{"class":404,"line":927},[1051],{"type":51,"tag":402,"props":1052,"children":1053},{"style":526},[1054],{"type":57,"value":1055},"# Expected: 0 (success)\n",{"type":51,"tag":90,"props":1057,"children":1059},{"id":1058},"step-3-deploy-to-devnet-optional",[1060],{"type":57,"value":1061},"Step 3: Deploy to Devnet (Optional)",{"type":51,"tag":67,"props":1063,"children":1064},{},[1065],{"type":51,"tag":73,"props":1066,"children":1067},{},[1068,1070,1076],{"type":57,"value":1069},"Devnet is for quick testing and experimentation. Account is auto-funded on ",{"type":51,"tag":124,"props":1071,"children":1073},{"className":1072},[],[1074],{"type":57,"value":1075},"aptos init",{"type":57,"value":1077},".",{"type":51,"tag":67,"props":1079,"children":1080},{},[1081],{"type":57,"value":1082},"Check if a profile exists before initializing:",{"type":51,"tag":391,"props":1084,"children":1086},{"className":393,"code":1085,"language":395,"meta":396,"style":396},"# Check if default profile exists (look for \"default\" in output)\naptos config show-profiles\n\n# If no profile exists, initialize one (auto-funds on devnet)\naptos init --network devnet --assume-yes\n",[1087],{"type":51,"tag":124,"props":1088,"children":1089},{"__ignoreMap":396},[1090,1098,1115,1122,1130],{"type":51,"tag":402,"props":1091,"children":1092},{"class":404,"line":405},[1093],{"type":51,"tag":402,"props":1094,"children":1095},{"style":526},[1096],{"type":57,"value":1097},"# Check if default profile exists (look for \"default\" in output)\n",{"type":51,"tag":402,"props":1099,"children":1100},{"class":404,"line":431},[1101,1105,1110],{"type":51,"tag":402,"props":1102,"children":1103},{"style":409},[1104],{"type":57,"value":8},{"type":51,"tag":402,"props":1106,"children":1107},{"style":414},[1108],{"type":57,"value":1109}," config",{"type":51,"tag":402,"props":1111,"children":1112},{"style":414},[1113],{"type":57,"value":1114}," show-profiles\n",{"type":51,"tag":402,"props":1116,"children":1117},{"class":404,"line":449},[1118],{"type":51,"tag":402,"props":1119,"children":1120},{"emptyLinePlaceholder":118},[1121],{"type":57,"value":894},{"type":51,"tag":402,"props":1123,"children":1124},{"class":404,"line":467},[1125],{"type":51,"tag":402,"props":1126,"children":1127},{"style":526},[1128],{"type":57,"value":1129},"# If no profile exists, initialize one (auto-funds on devnet)\n",{"type":51,"tag":402,"props":1131,"children":1132},{"class":404,"line":905},[1133,1137,1142,1147,1151],{"type":51,"tag":402,"props":1134,"children":1135},{"style":409},[1136],{"type":57,"value":8},{"type":51,"tag":402,"props":1138,"children":1139},{"style":414},[1140],{"type":57,"value":1141}," init",{"type":51,"tag":402,"props":1143,"children":1144},{"style":414},[1145],{"type":57,"value":1146}," --network",{"type":51,"tag":402,"props":1148,"children":1149},{"style":414},[1150],{"type":57,"value":460},{"type":51,"tag":402,"props":1152,"children":1153},{"style":414},[1154],{"type":57,"value":1155}," --assume-yes\n",{"type":51,"tag":391,"props":1157,"children":1159},{"className":393,"code":1158,"language":395,"meta":396,"style":396},"# Deploy as object (modern pattern)\naptos move deploy-object \\\n    --address-name my_addr \\\n    --profile default \\\n    --assume-yes\n\n# Save the object address from output for future upgrades\n# Output: \"Code was successfully deployed to object address 0x...\"\n\n# Verify deployment\naptos account list --account \u003Cobject_address> --profile default\n",[1160],{"type":51,"tag":124,"props":1161,"children":1162},{"__ignoreMap":396},[1163,1171,1190,1205,1221,1228,1235,1243,1251,1259,1268],{"type":51,"tag":402,"props":1164,"children":1165},{"class":404,"line":405},[1166],{"type":51,"tag":402,"props":1167,"children":1168},{"style":526},[1169],{"type":57,"value":1170},"# Deploy as object (modern pattern)\n",{"type":51,"tag":402,"props":1172,"children":1173},{"class":404,"line":431},[1174,1178,1182,1186],{"type":51,"tag":402,"props":1175,"children":1176},{"style":409},[1177],{"type":57,"value":8},{"type":51,"tag":402,"props":1179,"children":1180},{"style":414},[1181],{"type":57,"value":417},{"type":51,"tag":402,"props":1183,"children":1184},{"style":414},[1185],{"type":57,"value":422},{"type":51,"tag":402,"props":1187,"children":1188},{"style":425},[1189],{"type":57,"value":428},{"type":51,"tag":402,"props":1191,"children":1192},{"class":404,"line":449},[1193,1197,1201],{"type":51,"tag":402,"props":1194,"children":1195},{"style":414},[1196],{"type":57,"value":437},{"type":51,"tag":402,"props":1198,"children":1199},{"style":414},[1200],{"type":57,"value":442},{"type":51,"tag":402,"props":1202,"children":1203},{"style":425},[1204],{"type":57,"value":428},{"type":51,"tag":402,"props":1206,"children":1207},{"class":404,"line":467},[1208,1212,1217],{"type":51,"tag":402,"props":1209,"children":1210},{"style":414},[1211],{"type":57,"value":455},{"type":51,"tag":402,"props":1213,"children":1214},{"style":414},[1215],{"type":57,"value":1216}," default",{"type":51,"tag":402,"props":1218,"children":1219},{"style":425},[1220],{"type":57,"value":428},{"type":51,"tag":402,"props":1222,"children":1223},{"class":404,"line":905},[1224],{"type":51,"tag":402,"props":1225,"children":1226},{"style":414},[1227],{"type":57,"value":473},{"type":51,"tag":402,"props":1229,"children":1230},{"class":404,"line":927},[1231],{"type":51,"tag":402,"props":1232,"children":1233},{"emptyLinePlaceholder":118},[1234],{"type":57,"value":894},{"type":51,"tag":402,"props":1236,"children":1237},{"class":404,"line":949},[1238],{"type":51,"tag":402,"props":1239,"children":1240},{"style":526},[1241],{"type":57,"value":1242},"# Save the object address from output for future upgrades\n",{"type":51,"tag":402,"props":1244,"children":1245},{"class":404,"line":27},[1246],{"type":51,"tag":402,"props":1247,"children":1248},{"style":526},[1249],{"type":57,"value":1250},"# Output: \"Code was successfully deployed to object address 0x...\"\n",{"type":51,"tag":402,"props":1252,"children":1254},{"class":404,"line":1253},9,[1255],{"type":51,"tag":402,"props":1256,"children":1257},{"emptyLinePlaceholder":118},[1258],{"type":57,"value":894},{"type":51,"tag":402,"props":1260,"children":1262},{"class":404,"line":1261},10,[1263],{"type":51,"tag":402,"props":1264,"children":1265},{"style":526},[1266],{"type":57,"value":1267},"# Verify deployment\n",{"type":51,"tag":402,"props":1269,"children":1271},{"class":404,"line":1270},11,[1272,1276,1281,1286,1291,1296,1301,1305,1310,1314],{"type":51,"tag":402,"props":1273,"children":1274},{"style":409},[1275],{"type":57,"value":8},{"type":51,"tag":402,"props":1277,"children":1278},{"style":414},[1279],{"type":57,"value":1280}," account",{"type":51,"tag":402,"props":1282,"children":1283},{"style":414},[1284],{"type":57,"value":1285}," list",{"type":51,"tag":402,"props":1287,"children":1288},{"style":414},[1289],{"type":57,"value":1290}," --account",{"type":51,"tag":402,"props":1292,"children":1293},{"style":565},[1294],{"type":57,"value":1295}," \u003C",{"type":51,"tag":402,"props":1297,"children":1298},{"style":414},[1299],{"type":57,"value":1300},"object_addres",{"type":51,"tag":402,"props":1302,"children":1303},{"style":425},[1304],{"type":57,"value":578},{"type":51,"tag":402,"props":1306,"children":1307},{"style":565},[1308],{"type":57,"value":1309},">",{"type":51,"tag":402,"props":1311,"children":1312},{"style":414},[1313],{"type":57,"value":715},{"type":51,"tag":402,"props":1315,"children":1316},{"style":414},[1317],{"type":57,"value":1318}," default\n",{"type":51,"tag":90,"props":1320,"children":1322},{"id":1321},"step-4-deploy-to-testnet-required",[1323],{"type":57,"value":1324},"Step 4: Deploy to Testnet (REQUIRED)",{"type":51,"tag":67,"props":1326,"children":1327},{},[1328],{"type":51,"tag":73,"props":1329,"children":1330},{},[1331],{"type":57,"value":1332},"Testnet is for final testing before mainnet.",{"type":51,"tag":67,"props":1334,"children":1335},{},[1336],{"type":57,"value":1082},{"type":51,"tag":391,"props":1338,"children":1340},{"className":393,"code":1339,"language":395,"meta":396,"style":396},"# Check if default profile exists\naptos config show-profiles\n\n# If no profile exists, initialize one\naptos init --network testnet --assume-yes\n",[1341],{"type":51,"tag":124,"props":1342,"children":1343},{"__ignoreMap":396},[1344,1352,1367,1374,1382],{"type":51,"tag":402,"props":1345,"children":1346},{"class":404,"line":405},[1347],{"type":51,"tag":402,"props":1348,"children":1349},{"style":526},[1350],{"type":57,"value":1351},"# Check if default profile exists\n",{"type":51,"tag":402,"props":1353,"children":1354},{"class":404,"line":431},[1355,1359,1363],{"type":51,"tag":402,"props":1356,"children":1357},{"style":409},[1358],{"type":57,"value":8},{"type":51,"tag":402,"props":1360,"children":1361},{"style":414},[1362],{"type":57,"value":1109},{"type":51,"tag":402,"props":1364,"children":1365},{"style":414},[1366],{"type":57,"value":1114},{"type":51,"tag":402,"props":1368,"children":1369},{"class":404,"line":449},[1370],{"type":51,"tag":402,"props":1371,"children":1372},{"emptyLinePlaceholder":118},[1373],{"type":57,"value":894},{"type":51,"tag":402,"props":1375,"children":1376},{"class":404,"line":467},[1377],{"type":51,"tag":402,"props":1378,"children":1379},{"style":526},[1380],{"type":57,"value":1381},"# If no profile exists, initialize one\n",{"type":51,"tag":402,"props":1383,"children":1384},{"class":404,"line":905},[1385,1389,1393,1397,1402],{"type":51,"tag":402,"props":1386,"children":1387},{"style":409},[1388],{"type":57,"value":8},{"type":51,"tag":402,"props":1390,"children":1391},{"style":414},[1392],{"type":57,"value":1141},{"type":51,"tag":402,"props":1394,"children":1395},{"style":414},[1396],{"type":57,"value":1146},{"type":51,"tag":402,"props":1398,"children":1399},{"style":414},[1400],{"type":57,"value":1401}," testnet",{"type":51,"tag":402,"props":1403,"children":1404},{"style":414},[1405],{"type":57,"value":1155},{"type":51,"tag":67,"props":1407,"children":1408},{},[1409],{"type":51,"tag":73,"props":1410,"children":1411},{},[1412],{"type":57,"value":1413},"Fund your account via web faucet (required — testnet faucet needs Google login):",{"type":51,"tag":483,"props":1415,"children":1416},{},[1417,1428,1439,1444],{"type":51,"tag":110,"props":1418,"children":1419},{},[1420,1422],{"type":57,"value":1421},"Get your account address: ",{"type":51,"tag":124,"props":1423,"children":1425},{"className":1424},[],[1426],{"type":57,"value":1427},"aptos config show-profiles",{"type":51,"tag":110,"props":1429,"children":1430},{},[1431,1433],{"type":57,"value":1432},"Go to: ",{"type":51,"tag":124,"props":1434,"children":1436},{"className":1435},[],[1437],{"type":57,"value":1438},"https:\u002F\u002Faptos.dev\u002Fnetwork\u002Ffaucet?address=\u003Cyour_address>",{"type":51,"tag":110,"props":1440,"children":1441},{},[1442],{"type":57,"value":1443},"Login and request testnet APT",{"type":51,"tag":110,"props":1445,"children":1446},{},[1447],{"type":57,"value":1448},"Return here and confirm you've funded the account",{"type":51,"tag":391,"props":1450,"children":1452},{"className":393,"code":1451,"language":395,"meta":396,"style":396},"# Verify balance\naptos account balance --profile default\n\n# Deploy to testnet as object (modern pattern)\naptos move deploy-object \\\n    --address-name my_addr \\\n    --profile default \\\n    --assume-yes\n\n# IMPORTANT: Save the object address from output\n# You'll need it for upgrades and function calls\n# Output: \"Code was successfully deployed to object address 0x...\"\n",[1453],{"type":51,"tag":124,"props":1454,"children":1455},{"__ignoreMap":396},[1456,1464,1488,1495,1503,1522,1537,1552,1559,1566,1574,1582],{"type":51,"tag":402,"props":1457,"children":1458},{"class":404,"line":405},[1459],{"type":51,"tag":402,"props":1460,"children":1461},{"style":526},[1462],{"type":57,"value":1463},"# Verify balance\n",{"type":51,"tag":402,"props":1465,"children":1466},{"class":404,"line":431},[1467,1471,1475,1480,1484],{"type":51,"tag":402,"props":1468,"children":1469},{"style":409},[1470],{"type":57,"value":8},{"type":51,"tag":402,"props":1472,"children":1473},{"style":414},[1474],{"type":57,"value":1280},{"type":51,"tag":402,"props":1476,"children":1477},{"style":414},[1478],{"type":57,"value":1479}," balance",{"type":51,"tag":402,"props":1481,"children":1482},{"style":414},[1483],{"type":57,"value":715},{"type":51,"tag":402,"props":1485,"children":1486},{"style":414},[1487],{"type":57,"value":1318},{"type":51,"tag":402,"props":1489,"children":1490},{"class":404,"line":449},[1491],{"type":51,"tag":402,"props":1492,"children":1493},{"emptyLinePlaceholder":118},[1494],{"type":57,"value":894},{"type":51,"tag":402,"props":1496,"children":1497},{"class":404,"line":467},[1498],{"type":51,"tag":402,"props":1499,"children":1500},{"style":526},[1501],{"type":57,"value":1502},"# Deploy to testnet as object (modern pattern)\n",{"type":51,"tag":402,"props":1504,"children":1505},{"class":404,"line":905},[1506,1510,1514,1518],{"type":51,"tag":402,"props":1507,"children":1508},{"style":409},[1509],{"type":57,"value":8},{"type":51,"tag":402,"props":1511,"children":1512},{"style":414},[1513],{"type":57,"value":417},{"type":51,"tag":402,"props":1515,"children":1516},{"style":414},[1517],{"type":57,"value":422},{"type":51,"tag":402,"props":1519,"children":1520},{"style":425},[1521],{"type":57,"value":428},{"type":51,"tag":402,"props":1523,"children":1524},{"class":404,"line":927},[1525,1529,1533],{"type":51,"tag":402,"props":1526,"children":1527},{"style":414},[1528],{"type":57,"value":437},{"type":51,"tag":402,"props":1530,"children":1531},{"style":414},[1532],{"type":57,"value":442},{"type":51,"tag":402,"props":1534,"children":1535},{"style":425},[1536],{"type":57,"value":428},{"type":51,"tag":402,"props":1538,"children":1539},{"class":404,"line":949},[1540,1544,1548],{"type":51,"tag":402,"props":1541,"children":1542},{"style":414},[1543],{"type":57,"value":455},{"type":51,"tag":402,"props":1545,"children":1546},{"style":414},[1547],{"type":57,"value":1216},{"type":51,"tag":402,"props":1549,"children":1550},{"style":425},[1551],{"type":57,"value":428},{"type":51,"tag":402,"props":1553,"children":1554},{"class":404,"line":27},[1555],{"type":51,"tag":402,"props":1556,"children":1557},{"style":414},[1558],{"type":57,"value":473},{"type":51,"tag":402,"props":1560,"children":1561},{"class":404,"line":1253},[1562],{"type":51,"tag":402,"props":1563,"children":1564},{"emptyLinePlaceholder":118},[1565],{"type":57,"value":894},{"type":51,"tag":402,"props":1567,"children":1568},{"class":404,"line":1261},[1569],{"type":51,"tag":402,"props":1570,"children":1571},{"style":526},[1572],{"type":57,"value":1573},"# IMPORTANT: Save the object address from output\n",{"type":51,"tag":402,"props":1575,"children":1576},{"class":404,"line":1270},[1577],{"type":51,"tag":402,"props":1578,"children":1579},{"style":526},[1580],{"type":57,"value":1581},"# You'll need it for upgrades and function calls\n",{"type":51,"tag":402,"props":1583,"children":1585},{"class":404,"line":1584},12,[1586],{"type":51,"tag":402,"props":1587,"children":1588},{"style":526},[1589],{"type":57,"value":1250},{"type":51,"tag":90,"props":1591,"children":1593},{"id":1592},"step-5-test-on-testnet",[1594],{"type":57,"value":1595},"Step 5: Test on Testnet",{"type":51,"tag":391,"props":1597,"children":1599},{"className":393,"code":1598,"language":395,"meta":396,"style":396},"# Run entry functions to verify deployment\naptos move run \\\n    --profile default \\\n    --function-id \u003Cdeployed_address>::\u003Cmodule>::\u003Cfunction> \\\n    --args ...\n\n# Test multiple scenarios\n# - Happy paths\n# - Error cases (should abort with correct error codes)\n# - Access control\n# - Edge cases\n\n# Verify using explorer\n# https:\u002F\u002Fexplorer.aptoslabs.com\u002F?network=testnet\n",[1600],{"type":51,"tag":124,"props":1601,"children":1602},{"__ignoreMap":396},[1603,1611,1631,1646,1720,1733,1740,1748,1756,1764,1772,1780,1787,1796],{"type":51,"tag":402,"props":1604,"children":1605},{"class":404,"line":405},[1606],{"type":51,"tag":402,"props":1607,"children":1608},{"style":526},[1609],{"type":57,"value":1610},"# Run entry functions to verify deployment\n",{"type":51,"tag":402,"props":1612,"children":1613},{"class":404,"line":431},[1614,1618,1622,1627],{"type":51,"tag":402,"props":1615,"children":1616},{"style":409},[1617],{"type":57,"value":8},{"type":51,"tag":402,"props":1619,"children":1620},{"style":414},[1621],{"type":57,"value":417},{"type":51,"tag":402,"props":1623,"children":1624},{"style":414},[1625],{"type":57,"value":1626}," run",{"type":51,"tag":402,"props":1628,"children":1629},{"style":425},[1630],{"type":57,"value":428},{"type":51,"tag":402,"props":1632,"children":1633},{"class":404,"line":449},[1634,1638,1642],{"type":51,"tag":402,"props":1635,"children":1636},{"style":414},[1637],{"type":57,"value":455},{"type":51,"tag":402,"props":1639,"children":1640},{"style":414},[1641],{"type":57,"value":1216},{"type":51,"tag":402,"props":1643,"children":1644},{"style":425},[1645],{"type":57,"value":428},{"type":51,"tag":402,"props":1647,"children":1648},{"class":404,"line":467},[1649,1654,1658,1663,1667,1671,1676,1680,1685,1690,1694,1698,1702,1707,1712,1716],{"type":51,"tag":402,"props":1650,"children":1651},{"style":414},[1652],{"type":57,"value":1653},"    --function-id",{"type":51,"tag":402,"props":1655,"children":1656},{"style":565},[1657],{"type":57,"value":1295},{"type":51,"tag":402,"props":1659,"children":1660},{"style":414},[1661],{"type":57,"value":1662},"deployed_addres",{"type":51,"tag":402,"props":1664,"children":1665},{"style":425},[1666],{"type":57,"value":578},{"type":51,"tag":402,"props":1668,"children":1669},{"style":565},[1670],{"type":57,"value":1309},{"type":51,"tag":402,"props":1672,"children":1673},{"style":414},[1674],{"type":57,"value":1675},"::",{"type":51,"tag":402,"props":1677,"children":1678},{"style":565},[1679],{"type":57,"value":568},{"type":51,"tag":402,"props":1681,"children":1682},{"style":414},[1683],{"type":57,"value":1684},"modul",{"type":51,"tag":402,"props":1686,"children":1687},{"style":425},[1688],{"type":57,"value":1689},"e",{"type":51,"tag":402,"props":1691,"children":1692},{"style":565},[1693],{"type":57,"value":1309},{"type":51,"tag":402,"props":1695,"children":1696},{"style":414},[1697],{"type":57,"value":1675},{"type":51,"tag":402,"props":1699,"children":1700},{"style":565},[1701],{"type":57,"value":568},{"type":51,"tag":402,"props":1703,"children":1704},{"style":414},[1705],{"type":57,"value":1706},"functio",{"type":51,"tag":402,"props":1708,"children":1709},{"style":425},[1710],{"type":57,"value":1711},"n",{"type":51,"tag":402,"props":1713,"children":1714},{"style":565},[1715],{"type":57,"value":1309},{"type":51,"tag":402,"props":1717,"children":1718},{"style":425},[1719],{"type":57,"value":428},{"type":51,"tag":402,"props":1721,"children":1722},{"class":404,"line":905},[1723,1728],{"type":51,"tag":402,"props":1724,"children":1725},{"style":414},[1726],{"type":57,"value":1727},"    --args",{"type":51,"tag":402,"props":1729,"children":1730},{"style":414},[1731],{"type":57,"value":1732}," ...\n",{"type":51,"tag":402,"props":1734,"children":1735},{"class":404,"line":927},[1736],{"type":51,"tag":402,"props":1737,"children":1738},{"emptyLinePlaceholder":118},[1739],{"type":57,"value":894},{"type":51,"tag":402,"props":1741,"children":1742},{"class":404,"line":949},[1743],{"type":51,"tag":402,"props":1744,"children":1745},{"style":526},[1746],{"type":57,"value":1747},"# Test multiple scenarios\n",{"type":51,"tag":402,"props":1749,"children":1750},{"class":404,"line":27},[1751],{"type":51,"tag":402,"props":1752,"children":1753},{"style":526},[1754],{"type":57,"value":1755},"# - Happy paths\n",{"type":51,"tag":402,"props":1757,"children":1758},{"class":404,"line":1253},[1759],{"type":51,"tag":402,"props":1760,"children":1761},{"style":526},[1762],{"type":57,"value":1763},"# - Error cases (should abort with correct error codes)\n",{"type":51,"tag":402,"props":1765,"children":1766},{"class":404,"line":1261},[1767],{"type":51,"tag":402,"props":1768,"children":1769},{"style":526},[1770],{"type":57,"value":1771},"# - Access control\n",{"type":51,"tag":402,"props":1773,"children":1774},{"class":404,"line":1270},[1775],{"type":51,"tag":402,"props":1776,"children":1777},{"style":526},[1778],{"type":57,"value":1779},"# - Edge cases\n",{"type":51,"tag":402,"props":1781,"children":1782},{"class":404,"line":1584},[1783],{"type":51,"tag":402,"props":1784,"children":1785},{"emptyLinePlaceholder":118},[1786],{"type":57,"value":894},{"type":51,"tag":402,"props":1788,"children":1790},{"class":404,"line":1789},13,[1791],{"type":51,"tag":402,"props":1792,"children":1793},{"style":526},[1794],{"type":57,"value":1795},"# Verify using explorer\n",{"type":51,"tag":402,"props":1797,"children":1799},{"class":404,"line":1798},14,[1800],{"type":51,"tag":402,"props":1801,"children":1802},{"style":526},[1803],{"type":57,"value":1804},"# https:\u002F\u002Fexplorer.aptoslabs.com\u002F?network=testnet\n",{"type":51,"tag":90,"props":1806,"children":1808},{"id":1807},"step-6-deploy-to-mainnet-after-testnet-success",[1809],{"type":57,"value":1810},"Step 6: Deploy to Mainnet (After Testnet Success)",{"type":51,"tag":67,"props":1812,"children":1813},{},[1814],{"type":51,"tag":73,"props":1815,"children":1816},{},[1817],{"type":57,"value":1818},"Only deploy to mainnet after thorough testnet testing.",{"type":51,"tag":67,"props":1820,"children":1821},{},[1822],{"type":57,"value":1082},{"type":51,"tag":391,"props":1824,"children":1826},{"className":393,"code":1825,"language":395,"meta":396,"style":396},"# Check if default profile exists\naptos config show-profiles\n\n# If no profile exists, initialize one\n# IMPORTANT: Warn user that this generates a private key — store it securely\naptos init --network mainnet --assume-yes\n",[1827],{"type":51,"tag":124,"props":1828,"children":1829},{"__ignoreMap":396},[1830,1837,1852,1859,1866,1874],{"type":51,"tag":402,"props":1831,"children":1832},{"class":404,"line":405},[1833],{"type":51,"tag":402,"props":1834,"children":1835},{"style":526},[1836],{"type":57,"value":1351},{"type":51,"tag":402,"props":1838,"children":1839},{"class":404,"line":431},[1840,1844,1848],{"type":51,"tag":402,"props":1841,"children":1842},{"style":409},[1843],{"type":57,"value":8},{"type":51,"tag":402,"props":1845,"children":1846},{"style":414},[1847],{"type":57,"value":1109},{"type":51,"tag":402,"props":1849,"children":1850},{"style":414},[1851],{"type":57,"value":1114},{"type":51,"tag":402,"props":1853,"children":1854},{"class":404,"line":449},[1855],{"type":51,"tag":402,"props":1856,"children":1857},{"emptyLinePlaceholder":118},[1858],{"type":57,"value":894},{"type":51,"tag":402,"props":1860,"children":1861},{"class":404,"line":467},[1862],{"type":51,"tag":402,"props":1863,"children":1864},{"style":526},[1865],{"type":57,"value":1381},{"type":51,"tag":402,"props":1867,"children":1868},{"class":404,"line":905},[1869],{"type":51,"tag":402,"props":1870,"children":1871},{"style":526},[1872],{"type":57,"value":1873},"# IMPORTANT: Warn user that this generates a private key — store it securely\n",{"type":51,"tag":402,"props":1875,"children":1876},{"class":404,"line":927},[1877,1881,1885,1889,1894],{"type":51,"tag":402,"props":1878,"children":1879},{"style":409},[1880],{"type":57,"value":8},{"type":51,"tag":402,"props":1882,"children":1883},{"style":414},[1884],{"type":57,"value":1141},{"type":51,"tag":402,"props":1886,"children":1887},{"style":414},[1888],{"type":57,"value":1146},{"type":51,"tag":402,"props":1890,"children":1891},{"style":414},[1892],{"type":57,"value":1893}," mainnet",{"type":51,"tag":402,"props":1895,"children":1896},{"style":414},[1897],{"type":57,"value":1155},{"type":51,"tag":67,"props":1899,"children":1900},{},[1901,1906],{"type":51,"tag":73,"props":1902,"children":1903},{},[1904],{"type":57,"value":1905},"Fund your account:",{"type":57,"value":1907}," Transfer real APT to your account address from an exchange or wallet.",{"type":51,"tag":391,"props":1909,"children":1911},{"className":393,"code":1910,"language":395,"meta":396,"style":396},"# Verify balance\naptos account balance --profile default\n\n# Deploy to mainnet as object (modern pattern)\naptos move deploy-object \\\n    --address-name my_addr \\\n    --profile default \\\n    --max-gas 20000  # Optional: set gas limit\n\n# Review prompts carefully before confirming:\n# 1. Gas confirmation: Review gas costs\n# 2. Object address: Note the object address for future reference\n\n# OR use --assume-yes to auto-confirm (only if you're confident)\naptos move deploy-object \\\n    --address-name my_addr \\\n    --profile default \\\n    --assume-yes\n\n# SAVE THE OBJECT ADDRESS from output\n# You'll need it for upgrades and documentation\n\n# Confirm deployment\n# Review transaction in explorer:\n# https:\u002F\u002Fexplorer.aptoslabs.com\u002F?network=mainnet\n",[1912],{"type":51,"tag":124,"props":1913,"children":1914},{"__ignoreMap":396},[1915,1922,1945,1952,1960,1979,1994,2009,2028,2035,2043,2051,2059,2066,2074,2094,2110,2126,2133,2141,2150,2159,2167,2176,2185],{"type":51,"tag":402,"props":1916,"children":1917},{"class":404,"line":405},[1918],{"type":51,"tag":402,"props":1919,"children":1920},{"style":526},[1921],{"type":57,"value":1463},{"type":51,"tag":402,"props":1923,"children":1924},{"class":404,"line":431},[1925,1929,1933,1937,1941],{"type":51,"tag":402,"props":1926,"children":1927},{"style":409},[1928],{"type":57,"value":8},{"type":51,"tag":402,"props":1930,"children":1931},{"style":414},[1932],{"type":57,"value":1280},{"type":51,"tag":402,"props":1934,"children":1935},{"style":414},[1936],{"type":57,"value":1479},{"type":51,"tag":402,"props":1938,"children":1939},{"style":414},[1940],{"type":57,"value":715},{"type":51,"tag":402,"props":1942,"children":1943},{"style":414},[1944],{"type":57,"value":1318},{"type":51,"tag":402,"props":1946,"children":1947},{"class":404,"line":449},[1948],{"type":51,"tag":402,"props":1949,"children":1950},{"emptyLinePlaceholder":118},[1951],{"type":57,"value":894},{"type":51,"tag":402,"props":1953,"children":1954},{"class":404,"line":467},[1955],{"type":51,"tag":402,"props":1956,"children":1957},{"style":526},[1958],{"type":57,"value":1959},"# Deploy to mainnet as object (modern pattern)\n",{"type":51,"tag":402,"props":1961,"children":1962},{"class":404,"line":905},[1963,1967,1971,1975],{"type":51,"tag":402,"props":1964,"children":1965},{"style":409},[1966],{"type":57,"value":8},{"type":51,"tag":402,"props":1968,"children":1969},{"style":414},[1970],{"type":57,"value":417},{"type":51,"tag":402,"props":1972,"children":1973},{"style":414},[1974],{"type":57,"value":422},{"type":51,"tag":402,"props":1976,"children":1977},{"style":425},[1978],{"type":57,"value":428},{"type":51,"tag":402,"props":1980,"children":1981},{"class":404,"line":927},[1982,1986,1990],{"type":51,"tag":402,"props":1983,"children":1984},{"style":414},[1985],{"type":57,"value":437},{"type":51,"tag":402,"props":1987,"children":1988},{"style":414},[1989],{"type":57,"value":442},{"type":51,"tag":402,"props":1991,"children":1992},{"style":425},[1993],{"type":57,"value":428},{"type":51,"tag":402,"props":1995,"children":1996},{"class":404,"line":949},[1997,2001,2005],{"type":51,"tag":402,"props":1998,"children":1999},{"style":414},[2000],{"type":57,"value":455},{"type":51,"tag":402,"props":2002,"children":2003},{"style":414},[2004],{"type":57,"value":1216},{"type":51,"tag":402,"props":2006,"children":2007},{"style":425},[2008],{"type":57,"value":428},{"type":51,"tag":402,"props":2010,"children":2011},{"class":404,"line":27},[2012,2017,2023],{"type":51,"tag":402,"props":2013,"children":2014},{"style":414},[2015],{"type":57,"value":2016},"    --max-gas",{"type":51,"tag":402,"props":2018,"children":2020},{"style":2019},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[2021],{"type":57,"value":2022}," 20000",{"type":51,"tag":402,"props":2024,"children":2025},{"style":526},[2026],{"type":57,"value":2027},"  # Optional: set gas limit\n",{"type":51,"tag":402,"props":2029,"children":2030},{"class":404,"line":1253},[2031],{"type":51,"tag":402,"props":2032,"children":2033},{"emptyLinePlaceholder":118},[2034],{"type":57,"value":894},{"type":51,"tag":402,"props":2036,"children":2037},{"class":404,"line":1261},[2038],{"type":51,"tag":402,"props":2039,"children":2040},{"style":526},[2041],{"type":57,"value":2042},"# Review prompts carefully before confirming:\n",{"type":51,"tag":402,"props":2044,"children":2045},{"class":404,"line":1270},[2046],{"type":51,"tag":402,"props":2047,"children":2048},{"style":526},[2049],{"type":57,"value":2050},"# 1. Gas confirmation: Review gas costs\n",{"type":51,"tag":402,"props":2052,"children":2053},{"class":404,"line":1584},[2054],{"type":51,"tag":402,"props":2055,"children":2056},{"style":526},[2057],{"type":57,"value":2058},"# 2. Object address: Note the object address for future reference\n",{"type":51,"tag":402,"props":2060,"children":2061},{"class":404,"line":1789},[2062],{"type":51,"tag":402,"props":2063,"children":2064},{"emptyLinePlaceholder":118},[2065],{"type":57,"value":894},{"type":51,"tag":402,"props":2067,"children":2068},{"class":404,"line":1798},[2069],{"type":51,"tag":402,"props":2070,"children":2071},{"style":526},[2072],{"type":57,"value":2073},"# OR use --assume-yes to auto-confirm (only if you're confident)\n",{"type":51,"tag":402,"props":2075,"children":2077},{"class":404,"line":2076},15,[2078,2082,2086,2090],{"type":51,"tag":402,"props":2079,"children":2080},{"style":409},[2081],{"type":57,"value":8},{"type":51,"tag":402,"props":2083,"children":2084},{"style":414},[2085],{"type":57,"value":417},{"type":51,"tag":402,"props":2087,"children":2088},{"style":414},[2089],{"type":57,"value":422},{"type":51,"tag":402,"props":2091,"children":2092},{"style":425},[2093],{"type":57,"value":428},{"type":51,"tag":402,"props":2095,"children":2097},{"class":404,"line":2096},16,[2098,2102,2106],{"type":51,"tag":402,"props":2099,"children":2100},{"style":414},[2101],{"type":57,"value":437},{"type":51,"tag":402,"props":2103,"children":2104},{"style":414},[2105],{"type":57,"value":442},{"type":51,"tag":402,"props":2107,"children":2108},{"style":425},[2109],{"type":57,"value":428},{"type":51,"tag":402,"props":2111,"children":2113},{"class":404,"line":2112},17,[2114,2118,2122],{"type":51,"tag":402,"props":2115,"children":2116},{"style":414},[2117],{"type":57,"value":455},{"type":51,"tag":402,"props":2119,"children":2120},{"style":414},[2121],{"type":57,"value":1216},{"type":51,"tag":402,"props":2123,"children":2124},{"style":425},[2125],{"type":57,"value":428},{"type":51,"tag":402,"props":2127,"children":2128},{"class":404,"line":23},[2129],{"type":51,"tag":402,"props":2130,"children":2131},{"style":414},[2132],{"type":57,"value":473},{"type":51,"tag":402,"props":2134,"children":2136},{"class":404,"line":2135},19,[2137],{"type":51,"tag":402,"props":2138,"children":2139},{"emptyLinePlaceholder":118},[2140],{"type":57,"value":894},{"type":51,"tag":402,"props":2142,"children":2144},{"class":404,"line":2143},20,[2145],{"type":51,"tag":402,"props":2146,"children":2147},{"style":526},[2148],{"type":57,"value":2149},"# SAVE THE OBJECT ADDRESS from output\n",{"type":51,"tag":402,"props":2151,"children":2153},{"class":404,"line":2152},21,[2154],{"type":51,"tag":402,"props":2155,"children":2156},{"style":526},[2157],{"type":57,"value":2158},"# You'll need it for upgrades and documentation\n",{"type":51,"tag":402,"props":2160,"children":2162},{"class":404,"line":2161},22,[2163],{"type":51,"tag":402,"props":2164,"children":2165},{"emptyLinePlaceholder":118},[2166],{"type":57,"value":894},{"type":51,"tag":402,"props":2168,"children":2170},{"class":404,"line":2169},23,[2171],{"type":51,"tag":402,"props":2172,"children":2173},{"style":526},[2174],{"type":57,"value":2175},"# Confirm deployment\n",{"type":51,"tag":402,"props":2177,"children":2179},{"class":404,"line":2178},24,[2180],{"type":51,"tag":402,"props":2181,"children":2182},{"style":526},[2183],{"type":57,"value":2184},"# Review transaction in explorer:\n",{"type":51,"tag":402,"props":2186,"children":2188},{"class":404,"line":2187},25,[2189],{"type":51,"tag":402,"props":2190,"children":2191},{"style":526},[2192],{"type":57,"value":2193},"# https:\u002F\u002Fexplorer.aptoslabs.com\u002F?network=mainnet\n",{"type":51,"tag":90,"props":2195,"children":2197},{"id":2196},"step-7-verify-deployment",[2198],{"type":57,"value":2199},"Step 7: Verify Deployment",{"type":51,"tag":391,"props":2201,"children":2203},{"className":393,"code":2202,"language":395,"meta":396,"style":396},"# Check module is published\naptos account list --account \u003Cdeployed_address> --profile default\n\n# Look for your module in the output\n# \"0x...::my_module\": { ... }\n\n# Run view function to verify\naptos move view \\\n    --profile default \\\n    --function-id \u003Cdeployed_address>::\u003Cmodule>::\u003Cview_function> \\\n    --args ...\n",[2204],{"type":51,"tag":124,"props":2205,"children":2206},{"__ignoreMap":396},[2207,2215,2258,2265,2273,2281,2288,2296,2316,2331,2399],{"type":51,"tag":402,"props":2208,"children":2209},{"class":404,"line":405},[2210],{"type":51,"tag":402,"props":2211,"children":2212},{"style":526},[2213],{"type":57,"value":2214},"# Check module is published\n",{"type":51,"tag":402,"props":2216,"children":2217},{"class":404,"line":431},[2218,2222,2226,2230,2234,2238,2242,2246,2250,2254],{"type":51,"tag":402,"props":2219,"children":2220},{"style":409},[2221],{"type":57,"value":8},{"type":51,"tag":402,"props":2223,"children":2224},{"style":414},[2225],{"type":57,"value":1280},{"type":51,"tag":402,"props":2227,"children":2228},{"style":414},[2229],{"type":57,"value":1285},{"type":51,"tag":402,"props":2231,"children":2232},{"style":414},[2233],{"type":57,"value":1290},{"type":51,"tag":402,"props":2235,"children":2236},{"style":565},[2237],{"type":57,"value":1295},{"type":51,"tag":402,"props":2239,"children":2240},{"style":414},[2241],{"type":57,"value":1662},{"type":51,"tag":402,"props":2243,"children":2244},{"style":425},[2245],{"type":57,"value":578},{"type":51,"tag":402,"props":2247,"children":2248},{"style":565},[2249],{"type":57,"value":1309},{"type":51,"tag":402,"props":2251,"children":2252},{"style":414},[2253],{"type":57,"value":715},{"type":51,"tag":402,"props":2255,"children":2256},{"style":414},[2257],{"type":57,"value":1318},{"type":51,"tag":402,"props":2259,"children":2260},{"class":404,"line":449},[2261],{"type":51,"tag":402,"props":2262,"children":2263},{"emptyLinePlaceholder":118},[2264],{"type":57,"value":894},{"type":51,"tag":402,"props":2266,"children":2267},{"class":404,"line":467},[2268],{"type":51,"tag":402,"props":2269,"children":2270},{"style":526},[2271],{"type":57,"value":2272},"# Look for your module in the output\n",{"type":51,"tag":402,"props":2274,"children":2275},{"class":404,"line":905},[2276],{"type":51,"tag":402,"props":2277,"children":2278},{"style":526},[2279],{"type":57,"value":2280},"# \"0x...::my_module\": { ... }\n",{"type":51,"tag":402,"props":2282,"children":2283},{"class":404,"line":927},[2284],{"type":51,"tag":402,"props":2285,"children":2286},{"emptyLinePlaceholder":118},[2287],{"type":57,"value":894},{"type":51,"tag":402,"props":2289,"children":2290},{"class":404,"line":949},[2291],{"type":51,"tag":402,"props":2292,"children":2293},{"style":526},[2294],{"type":57,"value":2295},"# Run view function to verify\n",{"type":51,"tag":402,"props":2297,"children":2298},{"class":404,"line":27},[2299,2303,2307,2312],{"type":51,"tag":402,"props":2300,"children":2301},{"style":409},[2302],{"type":57,"value":8},{"type":51,"tag":402,"props":2304,"children":2305},{"style":414},[2306],{"type":57,"value":417},{"type":51,"tag":402,"props":2308,"children":2309},{"style":414},[2310],{"type":57,"value":2311}," view",{"type":51,"tag":402,"props":2313,"children":2314},{"style":425},[2315],{"type":57,"value":428},{"type":51,"tag":402,"props":2317,"children":2318},{"class":404,"line":1253},[2319,2323,2327],{"type":51,"tag":402,"props":2320,"children":2321},{"style":414},[2322],{"type":57,"value":455},{"type":51,"tag":402,"props":2324,"children":2325},{"style":414},[2326],{"type":57,"value":1216},{"type":51,"tag":402,"props":2328,"children":2329},{"style":425},[2330],{"type":57,"value":428},{"type":51,"tag":402,"props":2332,"children":2333},{"class":404,"line":1261},[2334,2338,2342,2346,2350,2354,2358,2362,2366,2370,2374,2378,2382,2387,2391,2395],{"type":51,"tag":402,"props":2335,"children":2336},{"style":414},[2337],{"type":57,"value":1653},{"type":51,"tag":402,"props":2339,"children":2340},{"style":565},[2341],{"type":57,"value":1295},{"type":51,"tag":402,"props":2343,"children":2344},{"style":414},[2345],{"type":57,"value":1662},{"type":51,"tag":402,"props":2347,"children":2348},{"style":425},[2349],{"type":57,"value":578},{"type":51,"tag":402,"props":2351,"children":2352},{"style":565},[2353],{"type":57,"value":1309},{"type":51,"tag":402,"props":2355,"children":2356},{"style":414},[2357],{"type":57,"value":1675},{"type":51,"tag":402,"props":2359,"children":2360},{"style":565},[2361],{"type":57,"value":568},{"type":51,"tag":402,"props":2363,"children":2364},{"style":414},[2365],{"type":57,"value":1684},{"type":51,"tag":402,"props":2367,"children":2368},{"style":425},[2369],{"type":57,"value":1689},{"type":51,"tag":402,"props":2371,"children":2372},{"style":565},[2373],{"type":57,"value":1309},{"type":51,"tag":402,"props":2375,"children":2376},{"style":414},[2377],{"type":57,"value":1675},{"type":51,"tag":402,"props":2379,"children":2380},{"style":565},[2381],{"type":57,"value":568},{"type":51,"tag":402,"props":2383,"children":2384},{"style":414},[2385],{"type":57,"value":2386},"view_functio",{"type":51,"tag":402,"props":2388,"children":2389},{"style":425},[2390],{"type":57,"value":1711},{"type":51,"tag":402,"props":2392,"children":2393},{"style":565},[2394],{"type":57,"value":1309},{"type":51,"tag":402,"props":2396,"children":2397},{"style":425},[2398],{"type":57,"value":428},{"type":51,"tag":402,"props":2400,"children":2401},{"class":404,"line":1270},[2402,2406],{"type":51,"tag":402,"props":2403,"children":2404},{"style":414},[2405],{"type":57,"value":1727},{"type":51,"tag":402,"props":2407,"children":2408},{"style":414},[2409],{"type":57,"value":1732},{"type":51,"tag":90,"props":2411,"children":2413},{"id":2412},"step-8-document-deployment",[2414],{"type":57,"value":2415},"Step 8: Document Deployment",{"type":51,"tag":67,"props":2417,"children":2418},{},[2419],{"type":57,"value":2420},"Create deployment record:",{"type":51,"tag":391,"props":2422,"children":2426},{"className":2423,"code":2424,"language":2425,"meta":396,"style":396},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Deployment Record\n\n**Date:** 2026-01-23 **Network:** Mainnet **Module:** my_module **Address:** 0x123abc... **Transaction:** 0x456def...\n\n## Verification\n\n- [x] Deployed successfully\n- [x] Module visible in explorer\n- [x] View functions working\n- [x] Entry functions tested\n\n## Links\n\n- Explorer: https:\u002F\u002Fexplorer.aptoslabs.com\u002Faccount\u002F0x123abc...?network=mainnet\n- Transaction: https:\u002F\u002Fexplorer.aptoslabs.com\u002Ftxn\u002F0x456def...?network=mainnet\n\n## Notes\n\n- All security checks passed\n- 100% test coverage verified\n- Tested on testnet for 1 week before mainnet\n","markdown",[2427],{"type":51,"tag":124,"props":2428,"children":2429},{"__ignoreMap":396},[2430,2443,2450,2546,2553,2566,2573,2601,2625,2649,2673,2680,2692,2699,2711,2723,2730,2742,2749,2761,2773],{"type":51,"tag":402,"props":2431,"children":2432},{"class":404,"line":405},[2433,2438],{"type":51,"tag":402,"props":2434,"children":2435},{"style":565},[2436],{"type":57,"value":2437},"# ",{"type":51,"tag":402,"props":2439,"children":2440},{"style":409},[2441],{"type":57,"value":2442},"Deployment Record\n",{"type":51,"tag":402,"props":2444,"children":2445},{"class":404,"line":431},[2446],{"type":51,"tag":402,"props":2447,"children":2448},{"emptyLinePlaceholder":118},[2449],{"type":57,"value":894},{"type":51,"tag":402,"props":2451,"children":2452},{"class":404,"line":449},[2453,2459,2465,2469,2474,2478,2483,2487,2492,2496,2501,2505,2510,2514,2519,2523,2528,2532,2537,2541],{"type":51,"tag":402,"props":2454,"children":2456},{"style":2455},"--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold",[2457],{"type":57,"value":2458},"**",{"type":51,"tag":402,"props":2460,"children":2462},{"style":2461},"--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold",[2463],{"type":57,"value":2464},"Date:",{"type":51,"tag":402,"props":2466,"children":2467},{"style":2455},[2468],{"type":57,"value":2458},{"type":51,"tag":402,"props":2470,"children":2471},{"style":425},[2472],{"type":57,"value":2473}," 2026-01-23 ",{"type":51,"tag":402,"props":2475,"children":2476},{"style":2455},[2477],{"type":57,"value":2458},{"type":51,"tag":402,"props":2479,"children":2480},{"style":2461},[2481],{"type":57,"value":2482},"Network:",{"type":51,"tag":402,"props":2484,"children":2485},{"style":2455},[2486],{"type":57,"value":2458},{"type":51,"tag":402,"props":2488,"children":2489},{"style":425},[2490],{"type":57,"value":2491}," Mainnet ",{"type":51,"tag":402,"props":2493,"children":2494},{"style":2455},[2495],{"type":57,"value":2458},{"type":51,"tag":402,"props":2497,"children":2498},{"style":2461},[2499],{"type":57,"value":2500},"Module:",{"type":51,"tag":402,"props":2502,"children":2503},{"style":2455},[2504],{"type":57,"value":2458},{"type":51,"tag":402,"props":2506,"children":2507},{"style":425},[2508],{"type":57,"value":2509}," my_module ",{"type":51,"tag":402,"props":2511,"children":2512},{"style":2455},[2513],{"type":57,"value":2458},{"type":51,"tag":402,"props":2515,"children":2516},{"style":2461},[2517],{"type":57,"value":2518},"Address:",{"type":51,"tag":402,"props":2520,"children":2521},{"style":2455},[2522],{"type":57,"value":2458},{"type":51,"tag":402,"props":2524,"children":2525},{"style":425},[2526],{"type":57,"value":2527}," 0x123abc... ",{"type":51,"tag":402,"props":2529,"children":2530},{"style":2455},[2531],{"type":57,"value":2458},{"type":51,"tag":402,"props":2533,"children":2534},{"style":2461},[2535],{"type":57,"value":2536},"Transaction:",{"type":51,"tag":402,"props":2538,"children":2539},{"style":2455},[2540],{"type":57,"value":2458},{"type":51,"tag":402,"props":2542,"children":2543},{"style":425},[2544],{"type":57,"value":2545}," 0x456def...\n",{"type":51,"tag":402,"props":2547,"children":2548},{"class":404,"line":467},[2549],{"type":51,"tag":402,"props":2550,"children":2551},{"emptyLinePlaceholder":118},[2552],{"type":57,"value":894},{"type":51,"tag":402,"props":2554,"children":2555},{"class":404,"line":905},[2556,2561],{"type":51,"tag":402,"props":2557,"children":2558},{"style":565},[2559],{"type":57,"value":2560},"## ",{"type":51,"tag":402,"props":2562,"children":2563},{"style":409},[2564],{"type":57,"value":2565},"Verification\n",{"type":51,"tag":402,"props":2567,"children":2568},{"class":404,"line":927},[2569],{"type":51,"tag":402,"props":2570,"children":2571},{"emptyLinePlaceholder":118},[2572],{"type":57,"value":894},{"type":51,"tag":402,"props":2574,"children":2575},{"class":404,"line":949},[2576,2581,2586,2591,2596],{"type":51,"tag":402,"props":2577,"children":2578},{"style":565},[2579],{"type":57,"value":2580},"-",{"type":51,"tag":402,"props":2582,"children":2583},{"style":565},[2584],{"type":57,"value":2585}," [",{"type":51,"tag":402,"props":2587,"children":2588},{"style":414},[2589],{"type":57,"value":2590},"x",{"type":51,"tag":402,"props":2592,"children":2593},{"style":565},[2594],{"type":57,"value":2595},"]",{"type":51,"tag":402,"props":2597,"children":2598},{"style":425},[2599],{"type":57,"value":2600}," Deployed successfully\n",{"type":51,"tag":402,"props":2602,"children":2603},{"class":404,"line":27},[2604,2608,2612,2616,2620],{"type":51,"tag":402,"props":2605,"children":2606},{"style":565},[2607],{"type":57,"value":2580},{"type":51,"tag":402,"props":2609,"children":2610},{"style":565},[2611],{"type":57,"value":2585},{"type":51,"tag":402,"props":2613,"children":2614},{"style":414},[2615],{"type":57,"value":2590},{"type":51,"tag":402,"props":2617,"children":2618},{"style":565},[2619],{"type":57,"value":2595},{"type":51,"tag":402,"props":2621,"children":2622},{"style":425},[2623],{"type":57,"value":2624}," Module visible in explorer\n",{"type":51,"tag":402,"props":2626,"children":2627},{"class":404,"line":1253},[2628,2632,2636,2640,2644],{"type":51,"tag":402,"props":2629,"children":2630},{"style":565},[2631],{"type":57,"value":2580},{"type":51,"tag":402,"props":2633,"children":2634},{"style":565},[2635],{"type":57,"value":2585},{"type":51,"tag":402,"props":2637,"children":2638},{"style":414},[2639],{"type":57,"value":2590},{"type":51,"tag":402,"props":2641,"children":2642},{"style":565},[2643],{"type":57,"value":2595},{"type":51,"tag":402,"props":2645,"children":2646},{"style":425},[2647],{"type":57,"value":2648}," View functions working\n",{"type":51,"tag":402,"props":2650,"children":2651},{"class":404,"line":1261},[2652,2656,2660,2664,2668],{"type":51,"tag":402,"props":2653,"children":2654},{"style":565},[2655],{"type":57,"value":2580},{"type":51,"tag":402,"props":2657,"children":2658},{"style":565},[2659],{"type":57,"value":2585},{"type":51,"tag":402,"props":2661,"children":2662},{"style":414},[2663],{"type":57,"value":2590},{"type":51,"tag":402,"props":2665,"children":2666},{"style":565},[2667],{"type":57,"value":2595},{"type":51,"tag":402,"props":2669,"children":2670},{"style":425},[2671],{"type":57,"value":2672}," Entry functions tested\n",{"type":51,"tag":402,"props":2674,"children":2675},{"class":404,"line":1270},[2676],{"type":51,"tag":402,"props":2677,"children":2678},{"emptyLinePlaceholder":118},[2679],{"type":57,"value":894},{"type":51,"tag":402,"props":2681,"children":2682},{"class":404,"line":1584},[2683,2687],{"type":51,"tag":402,"props":2684,"children":2685},{"style":565},[2686],{"type":57,"value":2560},{"type":51,"tag":402,"props":2688,"children":2689},{"style":409},[2690],{"type":57,"value":2691},"Links\n",{"type":51,"tag":402,"props":2693,"children":2694},{"class":404,"line":1789},[2695],{"type":51,"tag":402,"props":2696,"children":2697},{"emptyLinePlaceholder":118},[2698],{"type":57,"value":894},{"type":51,"tag":402,"props":2700,"children":2701},{"class":404,"line":1798},[2702,2706],{"type":51,"tag":402,"props":2703,"children":2704},{"style":565},[2705],{"type":57,"value":2580},{"type":51,"tag":402,"props":2707,"children":2708},{"style":425},[2709],{"type":57,"value":2710}," Explorer: https:\u002F\u002Fexplorer.aptoslabs.com\u002Faccount\u002F0x123abc...?network=mainnet\n",{"type":51,"tag":402,"props":2712,"children":2713},{"class":404,"line":2076},[2714,2718],{"type":51,"tag":402,"props":2715,"children":2716},{"style":565},[2717],{"type":57,"value":2580},{"type":51,"tag":402,"props":2719,"children":2720},{"style":425},[2721],{"type":57,"value":2722}," Transaction: https:\u002F\u002Fexplorer.aptoslabs.com\u002Ftxn\u002F0x456def...?network=mainnet\n",{"type":51,"tag":402,"props":2724,"children":2725},{"class":404,"line":2096},[2726],{"type":51,"tag":402,"props":2727,"children":2728},{"emptyLinePlaceholder":118},[2729],{"type":57,"value":894},{"type":51,"tag":402,"props":2731,"children":2732},{"class":404,"line":2112},[2733,2737],{"type":51,"tag":402,"props":2734,"children":2735},{"style":565},[2736],{"type":57,"value":2560},{"type":51,"tag":402,"props":2738,"children":2739},{"style":409},[2740],{"type":57,"value":2741},"Notes\n",{"type":51,"tag":402,"props":2743,"children":2744},{"class":404,"line":23},[2745],{"type":51,"tag":402,"props":2746,"children":2747},{"emptyLinePlaceholder":118},[2748],{"type":57,"value":894},{"type":51,"tag":402,"props":2750,"children":2751},{"class":404,"line":2135},[2752,2756],{"type":51,"tag":402,"props":2753,"children":2754},{"style":565},[2755],{"type":57,"value":2580},{"type":51,"tag":402,"props":2757,"children":2758},{"style":425},[2759],{"type":57,"value":2760}," All security checks passed\n",{"type":51,"tag":402,"props":2762,"children":2763},{"class":404,"line":2143},[2764,2768],{"type":51,"tag":402,"props":2765,"children":2766},{"style":565},[2767],{"type":57,"value":2580},{"type":51,"tag":402,"props":2769,"children":2770},{"style":425},[2771],{"type":57,"value":2772}," 100% test coverage verified\n",{"type":51,"tag":402,"props":2774,"children":2775},{"class":404,"line":2152},[2776,2780],{"type":51,"tag":402,"props":2777,"children":2778},{"style":565},[2779],{"type":57,"value":2580},{"type":51,"tag":402,"props":2781,"children":2782},{"style":425},[2783],{"type":57,"value":2784}," Tested on testnet for 1 week before mainnet\n",{"type":51,"tag":60,"props":2786,"children":2788},{"id":2787},"module-upgrades",[2789],{"type":57,"value":2790},"Module Upgrades",{"type":51,"tag":90,"props":2792,"children":2794},{"id":2793},"upgrading-existing-object-deployment",[2795],{"type":57,"value":2796},"Upgrading Existing Object Deployment",{"type":51,"tag":67,"props":2798,"children":2799},{},[2800],{"type":51,"tag":73,"props":2801,"children":2802},{},[2803],{"type":57,"value":2804},"Object-deployed modules are upgradeable by default for the deployer.",{"type":51,"tag":391,"props":2806,"children":2808},{"className":393,"code":2807,"language":395,"meta":396,"style":396},"# Upgrade existing object deployment\naptos move upgrade-object \\\n    --address-name my_addr \\\n    --object-address \u003Cobject_address_from_initial_deploy> \\\n    --profile mainnet\n\n# Upgrade with auto-confirm\naptos move upgrade-object \\\n    --address-name my_addr \\\n    --object-address \u003Cobject_address> \\\n    --profile mainnet \\\n    --assume-yes\n\n# Verify upgrade\naptos account list --account \u003Cobject_address> --profile mainnet\n",[2809],{"type":51,"tag":124,"props":2810,"children":2811},{"__ignoreMap":396},[2812,2820,2840,2855,2885,2897,2904,2912,2931,2946,2973,2988,2995,3002,3010],{"type":51,"tag":402,"props":2813,"children":2814},{"class":404,"line":405},[2815],{"type":51,"tag":402,"props":2816,"children":2817},{"style":526},[2818],{"type":57,"value":2819},"# Upgrade existing object deployment\n",{"type":51,"tag":402,"props":2821,"children":2822},{"class":404,"line":431},[2823,2827,2831,2836],{"type":51,"tag":402,"props":2824,"children":2825},{"style":409},[2826],{"type":57,"value":8},{"type":51,"tag":402,"props":2828,"children":2829},{"style":414},[2830],{"type":57,"value":417},{"type":51,"tag":402,"props":2832,"children":2833},{"style":414},[2834],{"type":57,"value":2835}," upgrade-object",{"type":51,"tag":402,"props":2837,"children":2838},{"style":425},[2839],{"type":57,"value":428},{"type":51,"tag":402,"props":2841,"children":2842},{"class":404,"line":449},[2843,2847,2851],{"type":51,"tag":402,"props":2844,"children":2845},{"style":414},[2846],{"type":57,"value":437},{"type":51,"tag":402,"props":2848,"children":2849},{"style":414},[2850],{"type":57,"value":442},{"type":51,"tag":402,"props":2852,"children":2853},{"style":425},[2854],{"type":57,"value":428},{"type":51,"tag":402,"props":2856,"children":2857},{"class":404,"line":467},[2858,2863,2867,2872,2877,2881],{"type":51,"tag":402,"props":2859,"children":2860},{"style":414},[2861],{"type":57,"value":2862},"    --object-address",{"type":51,"tag":402,"props":2864,"children":2865},{"style":565},[2866],{"type":57,"value":1295},{"type":51,"tag":402,"props":2868,"children":2869},{"style":414},[2870],{"type":57,"value":2871},"object_address_from_initial_deplo",{"type":51,"tag":402,"props":2873,"children":2874},{"style":425},[2875],{"type":57,"value":2876},"y",{"type":51,"tag":402,"props":2878,"children":2879},{"style":565},[2880],{"type":57,"value":1309},{"type":51,"tag":402,"props":2882,"children":2883},{"style":425},[2884],{"type":57,"value":428},{"type":51,"tag":402,"props":2886,"children":2887},{"class":404,"line":905},[2888,2892],{"type":51,"tag":402,"props":2889,"children":2890},{"style":414},[2891],{"type":57,"value":455},{"type":51,"tag":402,"props":2893,"children":2894},{"style":414},[2895],{"type":57,"value":2896}," mainnet\n",{"type":51,"tag":402,"props":2898,"children":2899},{"class":404,"line":927},[2900],{"type":51,"tag":402,"props":2901,"children":2902},{"emptyLinePlaceholder":118},[2903],{"type":57,"value":894},{"type":51,"tag":402,"props":2905,"children":2906},{"class":404,"line":949},[2907],{"type":51,"tag":402,"props":2908,"children":2909},{"style":526},[2910],{"type":57,"value":2911},"# Upgrade with auto-confirm\n",{"type":51,"tag":402,"props":2913,"children":2914},{"class":404,"line":27},[2915,2919,2923,2927],{"type":51,"tag":402,"props":2916,"children":2917},{"style":409},[2918],{"type":57,"value":8},{"type":51,"tag":402,"props":2920,"children":2921},{"style":414},[2922],{"type":57,"value":417},{"type":51,"tag":402,"props":2924,"children":2925},{"style":414},[2926],{"type":57,"value":2835},{"type":51,"tag":402,"props":2928,"children":2929},{"style":425},[2930],{"type":57,"value":428},{"type":51,"tag":402,"props":2932,"children":2933},{"class":404,"line":1253},[2934,2938,2942],{"type":51,"tag":402,"props":2935,"children":2936},{"style":414},[2937],{"type":57,"value":437},{"type":51,"tag":402,"props":2939,"children":2940},{"style":414},[2941],{"type":57,"value":442},{"type":51,"tag":402,"props":2943,"children":2944},{"style":425},[2945],{"type":57,"value":428},{"type":51,"tag":402,"props":2947,"children":2948},{"class":404,"line":1261},[2949,2953,2957,2961,2965,2969],{"type":51,"tag":402,"props":2950,"children":2951},{"style":414},[2952],{"type":57,"value":2862},{"type":51,"tag":402,"props":2954,"children":2955},{"style":565},[2956],{"type":57,"value":1295},{"type":51,"tag":402,"props":2958,"children":2959},{"style":414},[2960],{"type":57,"value":1300},{"type":51,"tag":402,"props":2962,"children":2963},{"style":425},[2964],{"type":57,"value":578},{"type":51,"tag":402,"props":2966,"children":2967},{"style":565},[2968],{"type":57,"value":1309},{"type":51,"tag":402,"props":2970,"children":2971},{"style":425},[2972],{"type":57,"value":428},{"type":51,"tag":402,"props":2974,"children":2975},{"class":404,"line":1270},[2976,2980,2984],{"type":51,"tag":402,"props":2977,"children":2978},{"style":414},[2979],{"type":57,"value":455},{"type":51,"tag":402,"props":2981,"children":2982},{"style":414},[2983],{"type":57,"value":1893},{"type":51,"tag":402,"props":2985,"children":2986},{"style":425},[2987],{"type":57,"value":428},{"type":51,"tag":402,"props":2989,"children":2990},{"class":404,"line":1584},[2991],{"type":51,"tag":402,"props":2992,"children":2993},{"style":414},[2994],{"type":57,"value":473},{"type":51,"tag":402,"props":2996,"children":2997},{"class":404,"line":1789},[2998],{"type":51,"tag":402,"props":2999,"children":3000},{"emptyLinePlaceholder":118},[3001],{"type":57,"value":894},{"type":51,"tag":402,"props":3003,"children":3004},{"class":404,"line":1798},[3005],{"type":51,"tag":402,"props":3006,"children":3007},{"style":526},[3008],{"type":57,"value":3009},"# Verify upgrade\n",{"type":51,"tag":402,"props":3011,"children":3012},{"class":404,"line":2076},[3013,3017,3021,3025,3029,3033,3037,3041,3045,3049],{"type":51,"tag":402,"props":3014,"children":3015},{"style":409},[3016],{"type":57,"value":8},{"type":51,"tag":402,"props":3018,"children":3019},{"style":414},[3020],{"type":57,"value":1280},{"type":51,"tag":402,"props":3022,"children":3023},{"style":414},[3024],{"type":57,"value":1285},{"type":51,"tag":402,"props":3026,"children":3027},{"style":414},[3028],{"type":57,"value":1290},{"type":51,"tag":402,"props":3030,"children":3031},{"style":565},[3032],{"type":57,"value":1295},{"type":51,"tag":402,"props":3034,"children":3035},{"style":414},[3036],{"type":57,"value":1300},{"type":51,"tag":402,"props":3038,"children":3039},{"style":425},[3040],{"type":57,"value":578},{"type":51,"tag":402,"props":3042,"children":3043},{"style":565},[3044],{"type":57,"value":1309},{"type":51,"tag":402,"props":3046,"children":3047},{"style":414},[3048],{"type":57,"value":715},{"type":51,"tag":402,"props":3050,"children":3051},{"style":414},[3052],{"type":57,"value":2896},{"type":51,"tag":67,"props":3054,"children":3055},{},[3056,3061,3063,3068],{"type":51,"tag":73,"props":3057,"children":3058},{},[3059],{"type":57,"value":3060},"IMPORTANT:",{"type":57,"value":3062}," Save the object address from your initial ",{"type":51,"tag":124,"props":3064,"children":3066},{"className":3065},[],[3067],{"type":57,"value":379},{"type":57,"value":3069}," output - you need it for upgrades.",{"type":51,"tag":67,"props":3071,"children":3072},{},[3073],{"type":51,"tag":73,"props":3074,"children":3075},{},[3076],{"type":57,"value":3077},"Upgrade Compatibility Rules:",{"type":51,"tag":104,"props":3079,"children":3080},{},[3081,3093,3103,3113,3125,3135],{"type":51,"tag":110,"props":3082,"children":3083},{},[3084,3086,3091],{"type":57,"value":3085},"✅ ",{"type":51,"tag":73,"props":3087,"children":3088},{},[3089],{"type":57,"value":3090},"CAN:",{"type":57,"value":3092}," Add new functions",{"type":51,"tag":110,"props":3094,"children":3095},{},[3096,3097,3101],{"type":57,"value":3085},{"type":51,"tag":73,"props":3098,"children":3099},{},[3100],{"type":57,"value":3090},{"type":57,"value":3102}," Add new structs",{"type":51,"tag":110,"props":3104,"children":3105},{},[3106,3107,3111],{"type":57,"value":3085},{"type":51,"tag":73,"props":3108,"children":3109},{},[3110],{"type":57,"value":3090},{"type":57,"value":3112}," Add new fields to structs (with care)",{"type":51,"tag":110,"props":3114,"children":3115},{},[3116,3118,3123],{"type":57,"value":3117},"❌ ",{"type":51,"tag":73,"props":3119,"children":3120},{},[3121],{"type":57,"value":3122},"CANNOT:",{"type":57,"value":3124}," Remove existing functions (breaks compatibility)",{"type":51,"tag":110,"props":3126,"children":3127},{},[3128,3129,3133],{"type":57,"value":3117},{"type":51,"tag":73,"props":3130,"children":3131},{},[3132],{"type":57,"value":3122},{"type":57,"value":3134}," Change function signatures (breaks compatibility)",{"type":51,"tag":110,"props":3136,"children":3137},{},[3138,3139,3143],{"type":57,"value":3117},{"type":51,"tag":73,"props":3140,"children":3141},{},[3142],{"type":57,"value":3122},{"type":57,"value":3144}," Remove struct fields (breaks existing data)",{"type":51,"tag":90,"props":3146,"children":3148},{"id":3147},"making-modules-immutable",[3149],{"type":57,"value":3150},"Making Modules Immutable",{"type":51,"tag":67,"props":3152,"children":3153},{},[3154],{"type":51,"tag":73,"props":3155,"children":3156},{},[3157],{"type":57,"value":3158},"To prevent future upgrades:",{"type":51,"tag":391,"props":3160,"children":3163},{"className":3161,"code":3162,"language":40,"meta":396,"style":396},"language-move shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F In your module\nfun init_module(account: &signer) {\n    \u002F\u002F After deployment, burn upgrade capability\n    \u002F\u002F (implementation depends on your setup)\n}\n",[3164],{"type":51,"tag":124,"props":3165,"children":3166},{"__ignoreMap":396},[3167,3175,3183,3191,3199],{"type":51,"tag":402,"props":3168,"children":3169},{"class":404,"line":405},[3170],{"type":51,"tag":402,"props":3171,"children":3172},{},[3173],{"type":57,"value":3174},"\u002F\u002F In your module\n",{"type":51,"tag":402,"props":3176,"children":3177},{"class":404,"line":431},[3178],{"type":51,"tag":402,"props":3179,"children":3180},{},[3181],{"type":57,"value":3182},"fun init_module(account: &signer) {\n",{"type":51,"tag":402,"props":3184,"children":3185},{"class":404,"line":449},[3186],{"type":51,"tag":402,"props":3187,"children":3188},{},[3189],{"type":57,"value":3190},"    \u002F\u002F After deployment, burn upgrade capability\n",{"type":51,"tag":402,"props":3192,"children":3193},{"class":404,"line":467},[3194],{"type":51,"tag":402,"props":3195,"children":3196},{},[3197],{"type":57,"value":3198},"    \u002F\u002F (implementation depends on your setup)\n",{"type":51,"tag":402,"props":3200,"children":3201},{"class":404,"line":905},[3202],{"type":51,"tag":402,"props":3203,"children":3204},{},[3205],{"type":57,"value":3206},"}\n",{"type":51,"tag":60,"props":3208,"children":3210},{"id":3209},"cost-estimation",[3211],{"type":57,"value":3212},"Cost Estimation",{"type":51,"tag":90,"props":3214,"children":3216},{"id":3215},"gas-costs",[3217],{"type":57,"value":3218},"Gas Costs",{"type":51,"tag":391,"props":3220,"children":3222},{"className":393,"code":3221,"language":395,"meta":396,"style":396},"# Typical deployment costs:\n# - Small module: ~500-1000 gas units\n# - Medium module: ~1000-5000 gas units\n# - Large module: ~5000-20000 gas units\n\n# When you run deploy-object, the CLI shows gas estimate before confirming\n# Use --assume-yes only after you've verified costs on testnet first\n",[3223],{"type":51,"tag":124,"props":3224,"children":3225},{"__ignoreMap":396},[3226,3234,3242,3250,3258,3265,3273],{"type":51,"tag":402,"props":3227,"children":3228},{"class":404,"line":405},[3229],{"type":51,"tag":402,"props":3230,"children":3231},{"style":526},[3232],{"type":57,"value":3233},"# Typical deployment costs:\n",{"type":51,"tag":402,"props":3235,"children":3236},{"class":404,"line":431},[3237],{"type":51,"tag":402,"props":3238,"children":3239},{"style":526},[3240],{"type":57,"value":3241},"# - Small module: ~500-1000 gas units\n",{"type":51,"tag":402,"props":3243,"children":3244},{"class":404,"line":449},[3245],{"type":51,"tag":402,"props":3246,"children":3247},{"style":526},[3248],{"type":57,"value":3249},"# - Medium module: ~1000-5000 gas units\n",{"type":51,"tag":402,"props":3251,"children":3252},{"class":404,"line":467},[3253],{"type":51,"tag":402,"props":3254,"children":3255},{"style":526},[3256],{"type":57,"value":3257},"# - Large module: ~5000-20000 gas units\n",{"type":51,"tag":402,"props":3259,"children":3260},{"class":404,"line":905},[3261],{"type":51,"tag":402,"props":3262,"children":3263},{"emptyLinePlaceholder":118},[3264],{"type":57,"value":894},{"type":51,"tag":402,"props":3266,"children":3267},{"class":404,"line":927},[3268],{"type":51,"tag":402,"props":3269,"children":3270},{"style":526},[3271],{"type":57,"value":3272},"# When you run deploy-object, the CLI shows gas estimate before confirming\n",{"type":51,"tag":402,"props":3274,"children":3275},{"class":404,"line":949},[3276],{"type":51,"tag":402,"props":3277,"children":3278},{"style":526},[3279],{"type":57,"value":3280},"# Use --assume-yes only after you've verified costs on testnet first\n",{"type":51,"tag":90,"props":3282,"children":3284},{"id":3283},"mainnet-costs",[3285],{"type":57,"value":3286},"Mainnet Costs",{"type":51,"tag":67,"props":3288,"children":3289},{},[3290],{"type":51,"tag":73,"props":3291,"children":3292},{},[3293],{"type":57,"value":3294},"Gas costs are paid in APT:",{"type":51,"tag":104,"props":3296,"children":3297},{},[3298,3303],{"type":51,"tag":110,"props":3299,"children":3300},{},[3301],{"type":57,"value":3302},"Gas units × Gas price = Total cost",{"type":51,"tag":110,"props":3304,"children":3305},{},[3306],{"type":57,"value":3307},"Example: 5000 gas units × 100 Octas\u002Fgas = 500,000 Octas = 0.005 APT",{"type":51,"tag":60,"props":3309,"children":3311},{"id":3310},"multi-module-deployment",[3312],{"type":57,"value":3313},"Multi-Module Deployment",{"type":51,"tag":90,"props":3315,"children":3317},{"id":3316},"deploying-multiple-modules",[3318],{"type":57,"value":3319},"Deploying Multiple Modules",{"type":51,"tag":67,"props":3321,"children":3322},{},[3323],{"type":51,"tag":73,"props":3324,"children":3325},{},[3326],{"type":57,"value":3327},"Option 1: Single package (Recommended)",{"type":51,"tag":391,"props":3329,"children":3333},{"className":3330,"code":3332,"language":57},[3331],"language-text","project\u002F\n├── Move.toml\n└── sources\u002F\n    ├── module1.move\n    ├── module2.move\n    └── module3.move\n",[3334],{"type":51,"tag":124,"props":3335,"children":3336},{"__ignoreMap":396},[3337],{"type":57,"value":3332},{"type":51,"tag":391,"props":3339,"children":3341},{"className":393,"code":3340,"language":395,"meta":396,"style":396},"# Deploys all modules at once as a single object\naptos move deploy-object --address-name my_addr --profile testnet\n",[3342],{"type":51,"tag":124,"props":3343,"children":3344},{"__ignoreMap":396},[3345,3353],{"type":51,"tag":402,"props":3346,"children":3347},{"class":404,"line":405},[3348],{"type":51,"tag":402,"props":3349,"children":3350},{"style":526},[3351],{"type":57,"value":3352},"# Deploys all modules at once as a single object\n",{"type":51,"tag":402,"props":3354,"children":3355},{"class":404,"line":431},[3356,3360,3364,3368,3372,3376,3380],{"type":51,"tag":402,"props":3357,"children":3358},{"style":409},[3359],{"type":57,"value":8},{"type":51,"tag":402,"props":3361,"children":3362},{"style":414},[3363],{"type":57,"value":417},{"type":51,"tag":402,"props":3365,"children":3366},{"style":414},[3367],{"type":57,"value":422},{"type":51,"tag":402,"props":3369,"children":3370},{"style":414},[3371],{"type":57,"value":706},{"type":51,"tag":402,"props":3373,"children":3374},{"style":414},[3375],{"type":57,"value":442},{"type":51,"tag":402,"props":3377,"children":3378},{"style":414},[3379],{"type":57,"value":715},{"type":51,"tag":402,"props":3381,"children":3382},{"style":414},[3383],{"type":57,"value":3384}," testnet\n",{"type":51,"tag":67,"props":3386,"children":3387},{},[3388],{"type":51,"tag":73,"props":3389,"children":3390},{},[3391],{"type":57,"value":3392},"Option 2: Separate packages with dependencies",{"type":51,"tag":391,"props":3394,"children":3396},{"className":393,"code":3395,"language":395,"meta":396,"style":396},"# Deploy dependency package first\ncd dependency-package\naptos move deploy-object --address-name dep_addr --profile testnet\n# Note the object address from output\n\n# Update main package Move.toml to reference dependency address\n# Then deploy main package\ncd ..\u002Fmain-package\naptos move deploy-object --address-name main_addr --profile testnet\n",[3397],{"type":51,"tag":124,"props":3398,"children":3399},{"__ignoreMap":396},[3400,3408,3421,3453,3461,3468,3476,3484,3496],{"type":51,"tag":402,"props":3401,"children":3402},{"class":404,"line":405},[3403],{"type":51,"tag":402,"props":3404,"children":3405},{"style":526},[3406],{"type":57,"value":3407},"# Deploy dependency package first\n",{"type":51,"tag":402,"props":3409,"children":3410},{"class":404,"line":431},[3411,3416],{"type":51,"tag":402,"props":3412,"children":3413},{"style":1039},[3414],{"type":57,"value":3415},"cd",{"type":51,"tag":402,"props":3417,"children":3418},{"style":414},[3419],{"type":57,"value":3420}," dependency-package\n",{"type":51,"tag":402,"props":3422,"children":3423},{"class":404,"line":449},[3424,3428,3432,3436,3440,3445,3449],{"type":51,"tag":402,"props":3425,"children":3426},{"style":409},[3427],{"type":57,"value":8},{"type":51,"tag":402,"props":3429,"children":3430},{"style":414},[3431],{"type":57,"value":417},{"type":51,"tag":402,"props":3433,"children":3434},{"style":414},[3435],{"type":57,"value":422},{"type":51,"tag":402,"props":3437,"children":3438},{"style":414},[3439],{"type":57,"value":706},{"type":51,"tag":402,"props":3441,"children":3442},{"style":414},[3443],{"type":57,"value":3444}," dep_addr",{"type":51,"tag":402,"props":3446,"children":3447},{"style":414},[3448],{"type":57,"value":715},{"type":51,"tag":402,"props":3450,"children":3451},{"style":414},[3452],{"type":57,"value":3384},{"type":51,"tag":402,"props":3454,"children":3455},{"class":404,"line":467},[3456],{"type":51,"tag":402,"props":3457,"children":3458},{"style":526},[3459],{"type":57,"value":3460},"# Note the object address from output\n",{"type":51,"tag":402,"props":3462,"children":3463},{"class":404,"line":905},[3464],{"type":51,"tag":402,"props":3465,"children":3466},{"emptyLinePlaceholder":118},[3467],{"type":57,"value":894},{"type":51,"tag":402,"props":3469,"children":3470},{"class":404,"line":927},[3471],{"type":51,"tag":402,"props":3472,"children":3473},{"style":526},[3474],{"type":57,"value":3475},"# Update main package Move.toml to reference dependency address\n",{"type":51,"tag":402,"props":3477,"children":3478},{"class":404,"line":949},[3479],{"type":51,"tag":402,"props":3480,"children":3481},{"style":526},[3482],{"type":57,"value":3483},"# Then deploy main package\n",{"type":51,"tag":402,"props":3485,"children":3486},{"class":404,"line":27},[3487,3491],{"type":51,"tag":402,"props":3488,"children":3489},{"style":1039},[3490],{"type":57,"value":3415},{"type":51,"tag":402,"props":3492,"children":3493},{"style":414},[3494],{"type":57,"value":3495}," ..\u002Fmain-package\n",{"type":51,"tag":402,"props":3497,"children":3498},{"class":404,"line":1253},[3499,3503,3507,3511,3515,3520,3524],{"type":51,"tag":402,"props":3500,"children":3501},{"style":409},[3502],{"type":57,"value":8},{"type":51,"tag":402,"props":3504,"children":3505},{"style":414},[3506],{"type":57,"value":417},{"type":51,"tag":402,"props":3508,"children":3509},{"style":414},[3510],{"type":57,"value":422},{"type":51,"tag":402,"props":3512,"children":3513},{"style":414},[3514],{"type":57,"value":706},{"type":51,"tag":402,"props":3516,"children":3517},{"style":414},[3518],{"type":57,"value":3519}," main_addr",{"type":51,"tag":402,"props":3521,"children":3522},{"style":414},[3523],{"type":57,"value":715},{"type":51,"tag":402,"props":3525,"children":3526},{"style":414},[3527],{"type":57,"value":3384},{"type":51,"tag":60,"props":3529,"children":3531},{"id":3530},"troubleshooting-deployment",[3532],{"type":57,"value":3533},"Troubleshooting Deployment",{"type":51,"tag":90,"props":3535,"children":3537},{"id":3536},"insufficient-apt-balance",[3538],{"type":57,"value":3539},"\"Insufficient APT balance\"",{"type":51,"tag":67,"props":3541,"children":3542},{},[3543,3548,3550,3555],{"type":51,"tag":73,"props":3544,"children":3545},{},[3546],{"type":57,"value":3547},"Devnet:",{"type":57,"value":3549}," Auto-funded on ",{"type":51,"tag":124,"props":3551,"children":3553},{"className":3552},[],[3554],{"type":57,"value":1075},{"type":57,"value":3556},". If needed, run:",{"type":51,"tag":391,"props":3558,"children":3560},{"className":393,"code":3559,"language":395,"meta":396,"style":396},"aptos account fund-with-faucet --account default --amount 100000000 --profile default\n",[3561],{"type":51,"tag":124,"props":3562,"children":3563},{"__ignoreMap":396},[3564],{"type":51,"tag":402,"props":3565,"children":3566},{"class":404,"line":405},[3567,3571,3575,3580,3584,3588,3593,3598,3602],{"type":51,"tag":402,"props":3568,"children":3569},{"style":409},[3570],{"type":57,"value":8},{"type":51,"tag":402,"props":3572,"children":3573},{"style":414},[3574],{"type":57,"value":1280},{"type":51,"tag":402,"props":3576,"children":3577},{"style":414},[3578],{"type":57,"value":3579}," fund-with-faucet",{"type":51,"tag":402,"props":3581,"children":3582},{"style":414},[3583],{"type":57,"value":1290},{"type":51,"tag":402,"props":3585,"children":3586},{"style":414},[3587],{"type":57,"value":1216},{"type":51,"tag":402,"props":3589,"children":3590},{"style":414},[3591],{"type":57,"value":3592}," --amount",{"type":51,"tag":402,"props":3594,"children":3595},{"style":2019},[3596],{"type":57,"value":3597}," 100000000",{"type":51,"tag":402,"props":3599,"children":3600},{"style":414},[3601],{"type":57,"value":715},{"type":51,"tag":402,"props":3603,"children":3604},{"style":414},[3605],{"type":57,"value":1318},{"type":51,"tag":67,"props":3607,"children":3608},{},[3609,3614],{"type":51,"tag":73,"props":3610,"children":3611},{},[3612],{"type":57,"value":3613},"Testnet:",{"type":57,"value":3615}," Use the web faucet (requires Google login):",{"type":51,"tag":483,"props":3617,"children":3618},{},[3619,3628,3637,3641],{"type":51,"tag":110,"props":3620,"children":3621},{},[3622,3623],{"type":57,"value":1421},{"type":51,"tag":124,"props":3624,"children":3626},{"className":3625},[],[3627],{"type":57,"value":1427},{"type":51,"tag":110,"props":3629,"children":3630},{},[3631,3632],{"type":57,"value":1432},{"type":51,"tag":124,"props":3633,"children":3635},{"className":3634},[],[3636],{"type":57,"value":1438},{"type":51,"tag":110,"props":3638,"children":3639},{},[3640],{"type":57,"value":1443},{"type":51,"tag":110,"props":3642,"children":3643},{},[3644,3646],{"type":57,"value":3645},"Verify balance: ",{"type":51,"tag":124,"props":3647,"children":3649},{"className":3648},[],[3650],{"type":57,"value":3651},"aptos account balance --profile default",{"type":51,"tag":67,"props":3653,"children":3654},{},[3655,3660],{"type":51,"tag":73,"props":3656,"children":3657},{},[3658],{"type":57,"value":3659},"Mainnet:",{"type":57,"value":3661}," Transfer real APT to your account from an exchange or wallet.",{"type":51,"tag":90,"props":3663,"children":3665},{"id":3664},"module-already-exists-for-object-deployments",[3666],{"type":57,"value":3667},"\"Module already exists\" (for object deployments)",{"type":51,"tag":391,"props":3669,"children":3671},{"className":393,"code":3670,"language":395,"meta":396,"style":396},"# Use upgrade-object with the original object address\naptos move upgrade-object \\\n    --address-name my_addr \\\n    --object-address \u003Cobject_address_from_initial_deploy> \\\n    --profile testnet\n",[3672],{"type":51,"tag":124,"props":3673,"children":3674},{"__ignoreMap":396},[3675,3683,3702,3717,3744],{"type":51,"tag":402,"props":3676,"children":3677},{"class":404,"line":405},[3678],{"type":51,"tag":402,"props":3679,"children":3680},{"style":526},[3681],{"type":57,"value":3682},"# Use upgrade-object with the original object address\n",{"type":51,"tag":402,"props":3684,"children":3685},{"class":404,"line":431},[3686,3690,3694,3698],{"type":51,"tag":402,"props":3687,"children":3688},{"style":409},[3689],{"type":57,"value":8},{"type":51,"tag":402,"props":3691,"children":3692},{"style":414},[3693],{"type":57,"value":417},{"type":51,"tag":402,"props":3695,"children":3696},{"style":414},[3697],{"type":57,"value":2835},{"type":51,"tag":402,"props":3699,"children":3700},{"style":425},[3701],{"type":57,"value":428},{"type":51,"tag":402,"props":3703,"children":3704},{"class":404,"line":449},[3705,3709,3713],{"type":51,"tag":402,"props":3706,"children":3707},{"style":414},[3708],{"type":57,"value":437},{"type":51,"tag":402,"props":3710,"children":3711},{"style":414},[3712],{"type":57,"value":442},{"type":51,"tag":402,"props":3714,"children":3715},{"style":425},[3716],{"type":57,"value":428},{"type":51,"tag":402,"props":3718,"children":3719},{"class":404,"line":467},[3720,3724,3728,3732,3736,3740],{"type":51,"tag":402,"props":3721,"children":3722},{"style":414},[3723],{"type":57,"value":2862},{"type":51,"tag":402,"props":3725,"children":3726},{"style":565},[3727],{"type":57,"value":1295},{"type":51,"tag":402,"props":3729,"children":3730},{"style":414},[3731],{"type":57,"value":2871},{"type":51,"tag":402,"props":3733,"children":3734},{"style":425},[3735],{"type":57,"value":2876},{"type":51,"tag":402,"props":3737,"children":3738},{"style":565},[3739],{"type":57,"value":1309},{"type":51,"tag":402,"props":3741,"children":3742},{"style":425},[3743],{"type":57,"value":428},{"type":51,"tag":402,"props":3745,"children":3746},{"class":404,"line":905},[3747,3751],{"type":51,"tag":402,"props":3748,"children":3749},{"style":414},[3750],{"type":57,"value":455},{"type":51,"tag":402,"props":3752,"children":3753},{"style":414},[3754],{"type":57,"value":3384},{"type":51,"tag":90,"props":3756,"children":3758},{"id":3757},"compilation-failed",[3759],{"type":57,"value":3760},"\"Compilation failed\"",{"type":51,"tag":391,"props":3762,"children":3764},{"className":393,"code":3763,"language":395,"meta":396,"style":396},"# Fix compilation errors first\naptos move compile\n# Fix all errors shown, then retry deployment\n",[3765],{"type":51,"tag":124,"props":3766,"children":3767},{"__ignoreMap":396},[3768,3776,3792],{"type":51,"tag":402,"props":3769,"children":3770},{"class":404,"line":405},[3771],{"type":51,"tag":402,"props":3772,"children":3773},{"style":526},[3774],{"type":57,"value":3775},"# Fix compilation errors first\n",{"type":51,"tag":402,"props":3777,"children":3778},{"class":404,"line":431},[3779,3783,3787],{"type":51,"tag":402,"props":3780,"children":3781},{"style":409},[3782],{"type":57,"value":8},{"type":51,"tag":402,"props":3784,"children":3785},{"style":414},[3786],{"type":57,"value":417},{"type":51,"tag":402,"props":3788,"children":3789},{"style":414},[3790],{"type":57,"value":3791}," compile\n",{"type":51,"tag":402,"props":3793,"children":3794},{"class":404,"line":449},[3795],{"type":51,"tag":402,"props":3796,"children":3797},{"style":526},[3798],{"type":57,"value":3799},"# Fix all errors shown, then retry deployment\n",{"type":51,"tag":90,"props":3801,"children":3803},{"id":3802},"gas-limit-exceeded",[3804],{"type":57,"value":3805},"\"Gas limit exceeded\"",{"type":51,"tag":391,"props":3807,"children":3809},{"className":393,"code":3808,"language":395,"meta":396,"style":396},"# Increase max gas\naptos move deploy-object \\\n    --address-name my_addr \\\n    --profile testnet \\\n    --max-gas 50000\n",[3810],{"type":51,"tag":124,"props":3811,"children":3812},{"__ignoreMap":396},[3813,3821,3840,3855,3870],{"type":51,"tag":402,"props":3814,"children":3815},{"class":404,"line":405},[3816],{"type":51,"tag":402,"props":3817,"children":3818},{"style":526},[3819],{"type":57,"value":3820},"# Increase max gas\n",{"type":51,"tag":402,"props":3822,"children":3823},{"class":404,"line":431},[3824,3828,3832,3836],{"type":51,"tag":402,"props":3825,"children":3826},{"style":409},[3827],{"type":57,"value":8},{"type":51,"tag":402,"props":3829,"children":3830},{"style":414},[3831],{"type":57,"value":417},{"type":51,"tag":402,"props":3833,"children":3834},{"style":414},[3835],{"type":57,"value":422},{"type":51,"tag":402,"props":3837,"children":3838},{"style":425},[3839],{"type":57,"value":428},{"type":51,"tag":402,"props":3841,"children":3842},{"class":404,"line":449},[3843,3847,3851],{"type":51,"tag":402,"props":3844,"children":3845},{"style":414},[3846],{"type":57,"value":437},{"type":51,"tag":402,"props":3848,"children":3849},{"style":414},[3850],{"type":57,"value":442},{"type":51,"tag":402,"props":3852,"children":3853},{"style":425},[3854],{"type":57,"value":428},{"type":51,"tag":402,"props":3856,"children":3857},{"class":404,"line":467},[3858,3862,3866],{"type":51,"tag":402,"props":3859,"children":3860},{"style":414},[3861],{"type":57,"value":455},{"type":51,"tag":402,"props":3863,"children":3864},{"style":414},[3865],{"type":57,"value":1401},{"type":51,"tag":402,"props":3867,"children":3868},{"style":425},[3869],{"type":57,"value":428},{"type":51,"tag":402,"props":3871,"children":3872},{"class":404,"line":905},[3873,3877],{"type":51,"tag":402,"props":3874,"children":3875},{"style":414},[3876],{"type":57,"value":2016},{"type":51,"tag":402,"props":3878,"children":3879},{"style":2019},[3880],{"type":57,"value":3881}," 50000\n",{"type":51,"tag":60,"props":3883,"children":3885},{"id":3884},"deployment-checklist",[3886],{"type":57,"value":3887},"Deployment Checklist",{"type":51,"tag":67,"props":3889,"children":3890},{},[3891],{"type":51,"tag":73,"props":3892,"children":3893},{},[3894],{"type":57,"value":3895},"Before Deployment:",{"type":51,"tag":104,"props":3897,"children":3899},{"className":3898},[107],[3900,3909,3918,3927,3936,3945],{"type":51,"tag":110,"props":3901,"children":3903},{"className":3902},[113],[3904,3907],{"type":51,"tag":116,"props":3905,"children":3906},{"disabled":118,"type":119},[],{"type":57,"value":3908}," Security audit passed",{"type":51,"tag":110,"props":3910,"children":3912},{"className":3911},[113],[3913,3916],{"type":51,"tag":116,"props":3914,"children":3915},{"disabled":118,"type":119},[],{"type":57,"value":3917}," 100% test coverage",{"type":51,"tag":110,"props":3919,"children":3921},{"className":3920},[113],[3922,3925],{"type":51,"tag":116,"props":3923,"children":3924},{"disabled":118,"type":119},[],{"type":57,"value":3926}," All tests passing",{"type":51,"tag":110,"props":3928,"children":3930},{"className":3929},[113],[3931,3934],{"type":51,"tag":116,"props":3932,"children":3933},{"disabled":118,"type":119},[],{"type":57,"value":3935}," Code compiles successfully",{"type":51,"tag":110,"props":3937,"children":3939},{"className":3938},[113],[3940,3943],{"type":51,"tag":116,"props":3941,"children":3942},{"disabled":118,"type":119},[],{"type":57,"value":3944}," Named addresses configured",{"type":51,"tag":110,"props":3946,"children":3948},{"className":3947},[113],[3949,3952],{"type":51,"tag":116,"props":3950,"children":3951},{"disabled":118,"type":119},[],{"type":57,"value":3953}," Target network selected (testnet first!)",{"type":51,"tag":67,"props":3955,"children":3956},{},[3957],{"type":51,"tag":73,"props":3958,"children":3959},{},[3960],{"type":57,"value":3961},"During Deployment:",{"type":51,"tag":104,"props":3963,"children":3965},{"className":3964},[107],[3966,3975,3984,3993],{"type":51,"tag":110,"props":3967,"children":3969},{"className":3968},[113],[3970,3973],{"type":51,"tag":116,"props":3971,"children":3972},{"disabled":118,"type":119},[],{"type":57,"value":3974}," Correct network selected",{"type":51,"tag":110,"props":3976,"children":3978},{"className":3977},[113],[3979,3982],{"type":51,"tag":116,"props":3980,"children":3981},{"disabled":118,"type":119},[],{"type":57,"value":3983}," Correct address specified",{"type":51,"tag":110,"props":3985,"children":3987},{"className":3986},[113],[3988,3991],{"type":51,"tag":116,"props":3989,"children":3990},{"disabled":118,"type":119},[],{"type":57,"value":3992}," Transaction submitted",{"type":51,"tag":110,"props":3994,"children":3996},{"className":3995},[113],[3997,4000],{"type":51,"tag":116,"props":3998,"children":3999},{"disabled":118,"type":119},[],{"type":57,"value":4001}," Transaction hash recorded",{"type":51,"tag":67,"props":4003,"children":4004},{},[4005],{"type":51,"tag":73,"props":4006,"children":4007},{},[4008],{"type":57,"value":4009},"After Deployment:",{"type":51,"tag":104,"props":4011,"children":4013},{"className":4012},[107],[4014,4023,4032,4041,4050],{"type":51,"tag":110,"props":4015,"children":4017},{"className":4016},[113],[4018,4021],{"type":51,"tag":116,"props":4019,"children":4020},{"disabled":118,"type":119},[],{"type":57,"value":4022}," Module visible in explorer",{"type":51,"tag":110,"props":4024,"children":4026},{"className":4025},[113],[4027,4030],{"type":51,"tag":116,"props":4028,"children":4029},{"disabled":118,"type":119},[],{"type":57,"value":4031}," View functions work",{"type":51,"tag":110,"props":4033,"children":4035},{"className":4034},[113],[4036,4039],{"type":51,"tag":116,"props":4037,"children":4038},{"disabled":118,"type":119},[],{"type":57,"value":4040}," Entry functions tested",{"type":51,"tag":110,"props":4042,"children":4044},{"className":4043},[113],[4045,4048],{"type":51,"tag":116,"props":4046,"children":4047},{"disabled":118,"type":119},[],{"type":57,"value":4049}," Deployment documented",{"type":51,"tag":110,"props":4051,"children":4053},{"className":4052},[113],[4054,4057],{"type":51,"tag":116,"props":4055,"children":4056},{"disabled":118,"type":119},[],{"type":57,"value":4058}," Team notified",{"type":51,"tag":60,"props":4060,"children":4062},{"id":4061},"cli-argument-types",[4063],{"type":57,"value":4064},"CLI Argument Types",{"type":51,"tag":67,"props":4066,"children":4067},{},[4068],{"type":57,"value":4069},"When calling entry or view functions via the CLI, use these type prefixes:",{"type":51,"tag":90,"props":4071,"children":4073},{"id":4072},"primitive-types",[4074],{"type":57,"value":4075},"Primitive Types",{"type":51,"tag":391,"props":4077,"children":4079},{"className":393,"code":4078,"language":395,"meta":396,"style":396},"--args u64:1000           # u8, u16, u32, u64, u128, u256\n--args bool:true          # boolean\n--args address:0x1        # address\n",[4080],{"type":51,"tag":124,"props":4081,"children":4082},{"__ignoreMap":396},[4083,4101,4123],{"type":51,"tag":402,"props":4084,"children":4085},{"class":404,"line":405},[4086,4091,4096],{"type":51,"tag":402,"props":4087,"children":4088},{"style":409},[4089],{"type":57,"value":4090},"--args",{"type":51,"tag":402,"props":4092,"children":4093},{"style":414},[4094],{"type":57,"value":4095}," u64:1000",{"type":51,"tag":402,"props":4097,"children":4098},{"style":526},[4099],{"type":57,"value":4100},"           # u8, u16, u32, u64, u128, u256\n",{"type":51,"tag":402,"props":4102,"children":4103},{"class":404,"line":431},[4104,4108,4113,4118],{"type":51,"tag":402,"props":4105,"children":4106},{"style":409},[4107],{"type":57,"value":4090},{"type":51,"tag":402,"props":4109,"children":4110},{"style":414},[4111],{"type":57,"value":4112}," bool:",{"type":51,"tag":402,"props":4114,"children":4115},{"style":565},[4116],{"type":57,"value":4117},"true",{"type":51,"tag":402,"props":4119,"children":4120},{"style":526},[4121],{"type":57,"value":4122},"          # boolean\n",{"type":51,"tag":402,"props":4124,"children":4125},{"class":404,"line":449},[4126,4130,4135],{"type":51,"tag":402,"props":4127,"children":4128},{"style":409},[4129],{"type":57,"value":4090},{"type":51,"tag":402,"props":4131,"children":4132},{"style":414},[4133],{"type":57,"value":4134}," address:0x1",{"type":51,"tag":402,"props":4136,"children":4137},{"style":526},[4138],{"type":57,"value":4139},"        # address\n",{"type":51,"tag":90,"props":4141,"children":4143},{"id":4142},"complex-types",[4144],{"type":57,"value":4145},"Complex Types",{"type":51,"tag":391,"props":4147,"children":4149},{"className":393,"code":4148,"language":395,"meta":396,"style":396},"--args string:\"Hello World\"                    # UTF-8 string\n--args hex:0x48656c6c6f                        # raw bytes\n--args \"u64:[1,2,3,4,5]\"                       # vector\u003Cu64>\n--args \"string:[\\\"one\\\",\\\"two\\\",\\\"three\\\"]\"    # vector\u003CString>\n",[4150],{"type":51,"tag":124,"props":4151,"children":4152},{"__ignoreMap":396},[4153,4184,4201,4227],{"type":51,"tag":402,"props":4154,"children":4155},{"class":404,"line":405},[4156,4160,4165,4170,4175,4179],{"type":51,"tag":402,"props":4157,"children":4158},{"style":409},[4159],{"type":57,"value":4090},{"type":51,"tag":402,"props":4161,"children":4162},{"style":414},[4163],{"type":57,"value":4164}," string:",{"type":51,"tag":402,"props":4166,"children":4167},{"style":565},[4168],{"type":57,"value":4169},"\"",{"type":51,"tag":402,"props":4171,"children":4172},{"style":414},[4173],{"type":57,"value":4174},"Hello World",{"type":51,"tag":402,"props":4176,"children":4177},{"style":565},[4178],{"type":57,"value":4169},{"type":51,"tag":402,"props":4180,"children":4181},{"style":526},[4182],{"type":57,"value":4183},"                    # UTF-8 string\n",{"type":51,"tag":402,"props":4185,"children":4186},{"class":404,"line":431},[4187,4191,4196],{"type":51,"tag":402,"props":4188,"children":4189},{"style":409},[4190],{"type":57,"value":4090},{"type":51,"tag":402,"props":4192,"children":4193},{"style":414},[4194],{"type":57,"value":4195}," hex:0x48656c6c6f",{"type":51,"tag":402,"props":4197,"children":4198},{"style":526},[4199],{"type":57,"value":4200},"                        # raw bytes\n",{"type":51,"tag":402,"props":4202,"children":4203},{"class":404,"line":449},[4204,4208,4213,4218,4222],{"type":51,"tag":402,"props":4205,"children":4206},{"style":409},[4207],{"type":57,"value":4090},{"type":51,"tag":402,"props":4209,"children":4210},{"style":565},[4211],{"type":57,"value":4212}," \"",{"type":51,"tag":402,"props":4214,"children":4215},{"style":414},[4216],{"type":57,"value":4217},"u64:[1,2,3,4,5]",{"type":51,"tag":402,"props":4219,"children":4220},{"style":565},[4221],{"type":57,"value":4169},{"type":51,"tag":402,"props":4223,"children":4224},{"style":526},[4225],{"type":57,"value":4226},"                       # vector\u003Cu64>\n",{"type":51,"tag":402,"props":4228,"children":4229},{"class":404,"line":467},[4230,4234,4238,4243,4248,4253,4257,4262,4266,4271,4275,4279,4283,4288,4292,4296,4300],{"type":51,"tag":402,"props":4231,"children":4232},{"style":409},[4233],{"type":57,"value":4090},{"type":51,"tag":402,"props":4235,"children":4236},{"style":565},[4237],{"type":57,"value":4212},{"type":51,"tag":402,"props":4239,"children":4240},{"style":414},[4241],{"type":57,"value":4242},"string:[",{"type":51,"tag":402,"props":4244,"children":4245},{"style":425},[4246],{"type":57,"value":4247},"\\\"",{"type":51,"tag":402,"props":4249,"children":4250},{"style":414},[4251],{"type":57,"value":4252},"one",{"type":51,"tag":402,"props":4254,"children":4255},{"style":425},[4256],{"type":57,"value":4247},{"type":51,"tag":402,"props":4258,"children":4259},{"style":414},[4260],{"type":57,"value":4261},",",{"type":51,"tag":402,"props":4263,"children":4264},{"style":425},[4265],{"type":57,"value":4247},{"type":51,"tag":402,"props":4267,"children":4268},{"style":414},[4269],{"type":57,"value":4270},"two",{"type":51,"tag":402,"props":4272,"children":4273},{"style":425},[4274],{"type":57,"value":4247},{"type":51,"tag":402,"props":4276,"children":4277},{"style":414},[4278],{"type":57,"value":4261},{"type":51,"tag":402,"props":4280,"children":4281},{"style":425},[4282],{"type":57,"value":4247},{"type":51,"tag":402,"props":4284,"children":4285},{"style":414},[4286],{"type":57,"value":4287},"three",{"type":51,"tag":402,"props":4289,"children":4290},{"style":425},[4291],{"type":57,"value":4247},{"type":51,"tag":402,"props":4293,"children":4294},{"style":414},[4295],{"type":57,"value":2595},{"type":51,"tag":402,"props":4297,"children":4298},{"style":565},[4299],{"type":57,"value":4169},{"type":51,"tag":402,"props":4301,"children":4302},{"style":526},[4303],{"type":57,"value":4304},"    # vector\u003CString>\n",{"type":51,"tag":90,"props":4306,"children":4308},{"id":4307},"object-types",[4309],{"type":57,"value":4310},"Object Types",{"type":51,"tag":391,"props":4312,"children":4314},{"className":393,"code":4313,"language":395,"meta":396,"style":396},"# For Object\u003CT> parameters, pass the object address\n--args address:0x123abc...\n",[4315],{"type":51,"tag":124,"props":4316,"children":4317},{"__ignoreMap":396},[4318,4326],{"type":51,"tag":402,"props":4319,"children":4320},{"class":404,"line":405},[4321],{"type":51,"tag":402,"props":4322,"children":4323},{"style":526},[4324],{"type":57,"value":4325},"# For Object\u003CT> parameters, pass the object address\n",{"type":51,"tag":402,"props":4327,"children":4328},{"class":404,"line":431},[4329,4333],{"type":51,"tag":402,"props":4330,"children":4331},{"style":409},[4332],{"type":57,"value":4090},{"type":51,"tag":402,"props":4334,"children":4335},{"style":414},[4336],{"type":57,"value":4337}," address:0x123abc...\n",{"type":51,"tag":60,"props":4339,"children":4341},{"id":4340},"always-rules",[4342],{"type":57,"value":4343},"ALWAYS Rules",{"type":51,"tag":104,"props":4345,"children":4346},{},[4347,4358,4363,4368,4388,4393,4398,4403,4408,4413,4418],{"type":51,"tag":110,"props":4348,"children":4349},{},[4350,4352,4357],{"type":57,"value":4351},"✅ ALWAYS run comprehensive security audit before deployment (use ",{"type":51,"tag":124,"props":4353,"children":4355},{"className":4354},[],[4356],{"type":57,"value":129},{"type":57,"value":131},{"type":51,"tag":110,"props":4359,"children":4360},{},[4361],{"type":57,"value":4362},"✅ ALWAYS verify 100% test coverage with security tests",{"type":51,"tag":110,"props":4364,"children":4365},{},[4366],{"type":57,"value":4367},"✅ ALWAYS verify all SECURITY.md patterns (arithmetic, storage scoping, reference safety, business logic)",{"type":51,"tag":110,"props":4369,"children":4370},{},[4371,4373,4378,4380,4386],{"type":57,"value":4372},"✅ ALWAYS use ",{"type":51,"tag":124,"props":4374,"children":4376},{"className":4375},[],[4377],{"type":57,"value":379},{"type":57,"value":4379}," (NOT ",{"type":51,"tag":124,"props":4381,"children":4383},{"className":4382},[],[4384],{"type":57,"value":4385},"resource_account::create_resource_account()",{"type":57,"value":4387}," which is legacy)",{"type":51,"tag":110,"props":4389,"children":4390},{},[4391],{"type":57,"value":4392},"✅ ALWAYS deploy to testnet before mainnet",{"type":51,"tag":110,"props":4394,"children":4395},{},[4396],{"type":57,"value":4397},"✅ ALWAYS test on testnet thoroughly (happy paths, error cases, security scenarios)",{"type":51,"tag":110,"props":4399,"children":4400},{},[4401],{"type":57,"value":4402},"✅ ALWAYS backup private keys securely",{"type":51,"tag":110,"props":4404,"children":4405},{},[4406],{"type":57,"value":4407},"✅ ALWAYS document deployment addresses",{"type":51,"tag":110,"props":4409,"children":4410},{},[4411],{"type":57,"value":4412},"✅ ALWAYS verify deployment in explorer",{"type":51,"tag":110,"props":4414,"children":4415},{},[4416],{"type":57,"value":4417},"✅ ALWAYS test functions after deployment",{"type":51,"tag":110,"props":4419,"children":4420},{},[4421],{"type":57,"value":4422},"✅ ALWAYS use separate keys for testnet and mainnet (SECURITY.md - Operations)",{"type":51,"tag":60,"props":4424,"children":4426},{"id":4425},"never-rules",[4427],{"type":57,"value":4428},"NEVER Rules",{"type":51,"tag":104,"props":4430,"children":4431},{},[4432,4437,4442,4447,4452,4457,4462,4467,4472,4477,4498,4511,4532],{"type":51,"tag":110,"props":4433,"children":4434},{},[4435],{"type":57,"value":4436},"❌ NEVER deploy without comprehensive security audit",{"type":51,"tag":110,"props":4438,"children":4439},{},[4440],{"type":57,"value":4441},"❌ NEVER deploy with \u003C 100% test coverage",{"type":51,"tag":110,"props":4443,"children":4444},{},[4445],{"type":57,"value":4446},"❌ NEVER deploy without security test verification",{"type":51,"tag":110,"props":4448,"children":4449},{},[4450],{"type":57,"value":4451},"❌ NEVER deploy directly to mainnet without testnet testing",{"type":51,"tag":110,"props":4453,"children":4454},{},[4455],{"type":57,"value":4456},"❌ NEVER deploy without testing on testnet first",{"type":51,"tag":110,"props":4458,"children":4459},{},[4460],{"type":57,"value":4461},"❌ NEVER commit private keys to version control",{"type":51,"tag":110,"props":4463,"children":4464},{},[4465],{"type":57,"value":4466},"❌ NEVER skip post-deployment verification",{"type":51,"tag":110,"props":4468,"children":4469},{},[4470],{"type":57,"value":4471},"❌ NEVER rush mainnet deployment",{"type":51,"tag":110,"props":4473,"children":4474},{},[4475],{"type":57,"value":4476},"❌ NEVER reuse publishing keys between testnet and mainnet (security risk)",{"type":51,"tag":110,"props":4478,"children":4479},{},[4480,4482,4488,4490,4496],{"type":57,"value":4481},"❌ NEVER read or display contents of ",{"type":51,"tag":124,"props":4483,"children":4485},{"className":4484},[],[4486],{"type":57,"value":4487},"~\u002F.aptos\u002Fconfig.yaml",{"type":57,"value":4489}," or ",{"type":51,"tag":124,"props":4491,"children":4493},{"className":4492},[],[4494],{"type":57,"value":4495},".env",{"type":57,"value":4497}," files (contain private keys)",{"type":51,"tag":110,"props":4499,"children":4500},{},[4501,4503,4509],{"type":57,"value":4502},"❌ NEVER display private key values in responses — use ",{"type":51,"tag":124,"props":4504,"children":4506},{"className":4505},[],[4507],{"type":57,"value":4508},"\"0x...\"",{"type":57,"value":4510}," placeholders",{"type":51,"tag":110,"props":4512,"children":4513},{},[4514,4516,4522,4524,4530],{"type":57,"value":4515},"❌ NEVER run ",{"type":51,"tag":124,"props":4517,"children":4519},{"className":4518},[],[4520],{"type":57,"value":4521},"cat ~\u002F.aptos\u002Fconfig.yaml",{"type":57,"value":4523},", ",{"type":51,"tag":124,"props":4525,"children":4527},{"className":4526},[],[4528],{"type":57,"value":4529},"echo $VITE_MODULE_PUBLISHER_ACCOUNT_PRIVATE_KEY",{"type":57,"value":4531},", or similar commands",{"type":51,"tag":110,"props":4533,"children":4534},{},[4535,4536,4542,4543,4549,4551,4556,4558],{"type":57,"value":4515},{"type":51,"tag":124,"props":4537,"children":4539},{"className":4538},[],[4540],{"type":57,"value":4541},"git add .",{"type":57,"value":4489},{"type":51,"tag":124,"props":4544,"children":4546},{"className":4545},[],[4547],{"type":57,"value":4548},"git add -A",{"type":57,"value":4550}," without confirming ",{"type":51,"tag":124,"props":4552,"children":4554},{"className":4553},[],[4555],{"type":57,"value":4495},{"type":57,"value":4557}," is in ",{"type":51,"tag":124,"props":4559,"children":4561},{"className":4560},[],[4562],{"type":57,"value":4563},".gitignore",{"type":51,"tag":60,"props":4565,"children":4567},{"id":4566},"references",[4568],{"type":57,"value":4569},"References",{"type":51,"tag":67,"props":4571,"children":4572},{},[4573],{"type":51,"tag":73,"props":4574,"children":4575},{},[4576],{"type":57,"value":4577},"Official Documentation:",{"type":51,"tag":104,"props":4579,"children":4580},{},[4581,4593,4604],{"type":51,"tag":110,"props":4582,"children":4583},{},[4584,4586],{"type":57,"value":4585},"CLI Publishing: ",{"type":51,"tag":97,"props":4587,"children":4591},{"href":4588,"rel":4589},"https:\u002F\u002Faptos.dev\u002Fbuild\u002Fcli\u002Fworking-with-move-contracts",[4590],"nofollow",[4592],{"type":57,"value":4588},{"type":51,"tag":110,"props":4594,"children":4595},{},[4596,4598],{"type":57,"value":4597},"Network Endpoints: ",{"type":51,"tag":97,"props":4599,"children":4602},{"href":4600,"rel":4601},"https:\u002F\u002Faptos.dev\u002Fnodes\u002Fnetworks",[4590],[4603],{"type":57,"value":4600},{"type":51,"tag":110,"props":4605,"children":4606},{},[4607,4609],{"type":57,"value":4608},"Gas and Fees: ",{"type":51,"tag":97,"props":4610,"children":4613},{"href":4611,"rel":4612},"https:\u002F\u002Faptos.dev\u002Fconcepts\u002Fgas-txn-fee",[4590],[4614],{"type":57,"value":4611},{"type":51,"tag":67,"props":4616,"children":4617},{},[4618],{"type":51,"tag":73,"props":4619,"children":4620},{},[4621],{"type":57,"value":4622},"Explorers:",{"type":51,"tag":104,"props":4624,"children":4625},{},[4626,4637,4648],{"type":51,"tag":110,"props":4627,"children":4628},{},[4629,4631],{"type":57,"value":4630},"Mainnet: ",{"type":51,"tag":97,"props":4632,"children":4635},{"href":4633,"rel":4634},"https:\u002F\u002Fexplorer.aptoslabs.com\u002F?network=mainnet",[4590],[4636],{"type":57,"value":4633},{"type":51,"tag":110,"props":4638,"children":4639},{},[4640,4642],{"type":57,"value":4641},"Testnet: ",{"type":51,"tag":97,"props":4643,"children":4646},{"href":4644,"rel":4645},"https:\u002F\u002Fexplorer.aptoslabs.com\u002F?network=testnet",[4590],[4647],{"type":57,"value":4644},{"type":51,"tag":110,"props":4649,"children":4650},{},[4651,4653],{"type":57,"value":4652},"Devnet: ",{"type":51,"tag":97,"props":4654,"children":4657},{"href":4655,"rel":4656},"https:\u002F\u002Fexplorer.aptoslabs.com\u002F?network=devnet",[4590],[4658],{"type":57,"value":4655},{"type":51,"tag":67,"props":4660,"children":4661},{},[4662],{"type":51,"tag":73,"props":4663,"children":4664},{},[4665],{"type":57,"value":4666},"Related Skills:",{"type":51,"tag":104,"props":4668,"children":4669},{},[4670,4680],{"type":51,"tag":110,"props":4671,"children":4672},{},[4673,4678],{"type":51,"tag":124,"props":4674,"children":4676},{"className":4675},[],[4677],{"type":57,"value":129},{"type":57,"value":4679}," - Audit before deployment",{"type":51,"tag":110,"props":4681,"children":4682},{},[4683,4689],{"type":51,"tag":124,"props":4684,"children":4686},{"className":4685},[],[4687],{"type":57,"value":4688},"generate-tests",{"type":57,"value":4690}," - Ensure tests exist",{"type":51,"tag":4692,"props":4693,"children":4694},"hr",{},[],{"type":51,"tag":67,"props":4696,"children":4697},{},[4698,4703],{"type":51,"tag":73,"props":4699,"children":4700},{},[4701],{"type":57,"value":4702},"Remember:",{"type":57,"value":4704}," Security audit → 100% tests → Testnet → Thorough testing → Mainnet. Never skip testnet.",{"type":51,"tag":4706,"props":4707,"children":4708},"style",{},[4709],{"type":57,"value":4710},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":4712,"total":2178},[4713,4726,4745,4751,4762,4776,4790,4804,4818,4833,4843,4853],{"slug":4714,"name":4714,"fn":4715,"description":4716,"org":4717,"tags":4718,"stars":23,"repoUrl":24,"updatedAt":4725},"analyze-gas-optimization","optimize Aptos Move contracts for gas","Analyze and optimize Aptos Move contracts for gas efficiency, identifying expensive operations and suggesting optimizations. Triggers on: 'optimize gas', 'reduce gas costs', 'gas analysis', 'make contract cheaper', 'gas efficiency', 'analyze gas usage', 'reduce transaction costs'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4719,4721,4724],{"name":4720,"slug":30,"type":16},"Blockchain",{"name":4722,"slug":4723,"type":16},"Performance","performance",{"name":21,"slug":22,"type":16},"2026-07-12T08:07:14.117466",{"slug":4727,"name":4727,"fn":4728,"description":4729,"org":4730,"tags":4731,"stars":23,"repoUrl":24,"updatedAt":4744},"create-aptos-project","scaffold new Aptos dApp projects","Scaffolds new Aptos projects using npx create-aptos-dapp. Supports fullstack (Vite or Next.js) and contract-only templates with network selection and optional API key. Triggers on: 'build app', 'create app', 'make app', 'new app', 'build dApp', 'create dApp', 'new dApp', 'build project', 'new project', 'create project', 'scaffold', 'start project', 'set up project', 'build me a', 'I want to build', 'make me a', 'help me build'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4732,4735,4738,4741],{"name":4733,"slug":4734,"type":16},"Next.js","next-js",{"name":4736,"slug":4737,"type":16},"TypeScript","typescript",{"name":4739,"slug":4740,"type":16},"Vite","vite",{"name":4742,"slug":4743,"type":16},"Web3","web3","2026-07-12T08:07:30.595111",{"slug":4,"name":4,"fn":5,"description":6,"org":4746,"tags":4747,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4748,4749,4750],{"name":14,"slug":15,"type":16},{"name":18,"slug":19,"type":16},{"name":21,"slug":22,"type":16},{"slug":4688,"name":4688,"fn":4752,"description":4753,"org":4754,"tags":4755,"stars":23,"repoUrl":24,"updatedAt":4761},"generate test suites for Move contracts","Creates comprehensive test suites for Move contracts with 100% coverage requirement. Triggers on: 'generate tests', 'create tests', 'write test suite', 'test this contract', 'how to test', 'add test coverage', 'write unit tests'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4756,4757,4760],{"name":18,"slug":19,"type":16},{"name":4758,"slug":4759,"type":16},"QA","qa",{"name":200,"slug":197,"type":16},"2026-07-12T08:07:18.0205",{"slug":4763,"name":4763,"fn":4764,"description":4765,"org":4766,"tags":4767,"stars":23,"repoUrl":24,"updatedAt":4775},"modernize-move","modernize Move V1 contracts to V2","Detects and modernizes outdated Move V1 syntax, patterns, and APIs to Move V2+. Use when upgrading legacy contracts, migrating to modern syntax, or converting old patterns to current best practices. NOT for writing new contracts (use write-contracts) or fixing bugs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4768,4771,4772],{"name":4769,"slug":4770,"type":16},"Code Analysis","code-analysis",{"name":18,"slug":19,"type":16},{"name":4773,"slug":4774,"type":16},"Migration","migration","2026-07-12T08:07:10.226223",{"slug":4777,"name":4777,"fn":4778,"description":4779,"org":4780,"tags":4781,"stars":23,"repoUrl":24,"updatedAt":4789},"search-aptos-examples","search Aptos reference implementations","Searches aptos-core and daily-move for reference implementations before writing contracts. Triggers on: 'search examples', 'find example', 'check aptos-core', 'is there an example', 'reference implementation', 'how does aptos implement', 'similar contract', 'daily-move'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4782,4783,4786],{"name":4720,"slug":30,"type":16},{"name":4784,"slug":4785,"type":16},"Documentation","documentation",{"name":4787,"slug":4788,"type":16},"Search","search","2026-07-12T08:07:15.382039",{"slug":129,"name":129,"fn":4791,"description":4792,"org":4793,"tags":4794,"stars":23,"repoUrl":24,"updatedAt":4803},"audit Move smart contracts for security","Audits Move contracts for security vulnerabilities before deployment using 7-category checklist. Triggers on: 'audit contract', 'security check', 'review security', 'check for vulnerabilities', 'security audit', 'is this secure', 'find security issues'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4795,4798,4799,4802],{"name":4796,"slug":4797,"type":16},"Audit","audit",{"name":4769,"slug":4770,"type":16},{"name":4800,"slug":4801,"type":16},"Security","security",{"name":21,"slug":22,"type":16},"2026-07-12T08:07:11.680215",{"slug":4805,"name":4805,"fn":4806,"description":4807,"org":4808,"tags":4809,"stars":23,"repoUrl":24,"updatedAt":4817},"smoothsend-gasless","sponsor gas fees for Aptos dApps","How to sponsor gas fees for Aptos dApp users using SmoothSend. Paid commercial service: free on testnet, credit-based on mainnet. Covers 3-line wallet adapter integration (transactionSubmitter), Script Composer for fee-in-token stablecoin transfers. Triggers on: 'gasless', 'sponsor gas', 'users pay no APT', 'transactionSubmitter', 'SmoothSend', 'fee payer', 'pay gas for users', 'no gas required'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4810,4813,4816],{"name":4811,"slug":4812,"type":16},"API Development","api-development",{"name":4814,"slug":4815,"type":16},"Payments","payments",{"name":4742,"slug":4743,"type":16},"2026-07-12T08:07:31.843242",{"slug":4819,"name":4819,"fn":4820,"description":4821,"org":4822,"tags":4823,"stars":23,"repoUrl":24,"updatedAt":4832},"ts-sdk-account","manage Aptos accounts with TS SDK","How to create and use Account (signer) in @aptos-labs\u002Fts-sdk. Covers Account.generate(), fromPrivateKey(), fromDerivationPath(), Ed25519 vs SingleKey vs MultiKey vs Keyless, serialization (fromHex\u002FtoHex). Triggers on: 'Account.generate', 'Account.fromPrivateKey', 'Ed25519PrivateKey', 'SDK account', 'mnemonic', 'SingleKeyAccount', 'KeylessAccount'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4824,4827,4828,4831],{"name":4825,"slug":4826,"type":16},"Auth","auth",{"name":4720,"slug":30,"type":16},{"name":4829,"slug":4830,"type":16},"SDK","sdk",{"name":4736,"slug":4737,"type":16},"2026-07-12T08:07:29.297415",{"slug":4834,"name":4834,"fn":4835,"description":4836,"org":4837,"tags":4838,"stars":23,"repoUrl":24,"updatedAt":4842},"ts-sdk-address","manage AccountAddress in Aptos TypeScript SDK","How to create and use AccountAddress in @aptos-labs\u002Fts-sdk. Covers address format (AIP-40), from\u002FfromString\u002FfromStrict, special addresses, LONG vs SHORT form, and derived addresses (object, resource, token, user-derived). Triggers on: 'AccountAddress', 'AccountAddress.from', 'AIP-40', 'derived address', 'createObjectAddress', 'createResourceAddress', 'createTokenAddress'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4839,4840,4841],{"name":4720,"slug":30,"type":16},{"name":4829,"slug":4830,"type":16},{"name":4736,"slug":4737,"type":16},"2026-07-12T08:07:26.430378",{"slug":4844,"name":4844,"fn":4845,"description":4846,"org":4847,"tags":4848,"stars":23,"repoUrl":24,"updatedAt":4852},"ts-sdk-client","configure Aptos SDK clients","How to create and configure the Aptos client (Aptos, AptosConfig) in @aptos-labs\u002Fts-sdk. Covers Network, fullnode\u002Findexer\u002Ffaucet URLs, singleton pattern, and Bun compatibility. Triggers on: 'Aptos client', 'AptosConfig', 'SDK client', 'client setup', 'new Aptos(', 'Network.TESTNET', 'Network.MAINNET'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4849,4850,4851],{"name":4811,"slug":4812,"type":16},{"name":4829,"slug":4830,"type":16},{"name":4736,"slug":4737,"type":16},"2026-07-12T08:07:21.933342",{"slug":4854,"name":4854,"fn":4855,"description":4856,"org":4857,"tags":4858,"stars":23,"repoUrl":24,"updatedAt":4862},"ts-sdk-transactions","manage Aptos blockchain transactions","How to build, sign, submit, and simulate transactions in @aptos-labs\u002Fts-sdk. Covers build.simple(), signAndSubmitTransaction(), waitForTransaction(), simulate, sponsored (fee payer), and multi-agent. Triggers on: 'build.simple', 'signAndSubmitTransaction', 'transaction.build', 'waitForTransaction', 'signAsFeePayer', 'SDK transaction', 'sponsored transaction', 'multi-agent transaction'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4859,4860,4861],{"name":4811,"slug":4812,"type":16},{"name":4736,"slug":4737,"type":16},{"name":4742,"slug":4743,"type":16},"2026-07-12T08:07:23.774257",{"items":4864,"total":2112},[4865,4871,4878,4884,4890,4896,4902],{"slug":4714,"name":4714,"fn":4715,"description":4716,"org":4866,"tags":4867,"stars":23,"repoUrl":24,"updatedAt":4725},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4868,4869,4870],{"name":4720,"slug":30,"type":16},{"name":4722,"slug":4723,"type":16},{"name":21,"slug":22,"type":16},{"slug":4727,"name":4727,"fn":4728,"description":4729,"org":4872,"tags":4873,"stars":23,"repoUrl":24,"updatedAt":4744},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4874,4875,4876,4877],{"name":4733,"slug":4734,"type":16},{"name":4736,"slug":4737,"type":16},{"name":4739,"slug":4740,"type":16},{"name":4742,"slug":4743,"type":16},{"slug":4,"name":4,"fn":5,"description":6,"org":4879,"tags":4880,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4881,4882,4883],{"name":14,"slug":15,"type":16},{"name":18,"slug":19,"type":16},{"name":21,"slug":22,"type":16},{"slug":4688,"name":4688,"fn":4752,"description":4753,"org":4885,"tags":4886,"stars":23,"repoUrl":24,"updatedAt":4761},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4887,4888,4889],{"name":18,"slug":19,"type":16},{"name":4758,"slug":4759,"type":16},{"name":200,"slug":197,"type":16},{"slug":4763,"name":4763,"fn":4764,"description":4765,"org":4891,"tags":4892,"stars":23,"repoUrl":24,"updatedAt":4775},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4893,4894,4895],{"name":4769,"slug":4770,"type":16},{"name":18,"slug":19,"type":16},{"name":4773,"slug":4774,"type":16},{"slug":4777,"name":4777,"fn":4778,"description":4779,"org":4897,"tags":4898,"stars":23,"repoUrl":24,"updatedAt":4789},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4899,4900,4901],{"name":4720,"slug":30,"type":16},{"name":4784,"slug":4785,"type":16},{"name":4787,"slug":4788,"type":16},{"slug":129,"name":129,"fn":4791,"description":4792,"org":4903,"tags":4904,"stars":23,"repoUrl":24,"updatedAt":4803},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4905,4906,4907,4908],{"name":4796,"slug":4797,"type":16},{"name":4769,"slug":4770,"type":16},{"name":4800,"slug":4801,"type":16},{"name":21,"slug":22,"type":16}]