name: 4d-compression-core version: 1.0.2 description: "把长内容压缩成结构化向量——节省 60-80% Token,保留核心信息" metadata: { "openclaw": { "emoji": "🌀", "requires": { "bins": ["jq", "awk"] }, "triggers": ["压缩", "4d",...
日本語の概要は準備中です。原文の説明を表示しています。
View, add, and execute Aavegotchi Baazaar listings on Base mainnet (8453). Buy with GHST directly or buy with USDC using swapAndBuy*. Safety-first: dryRun defaults true (simulate with cast call; only broadcast with cast send when dryRun=false / DRY_RUN=0).
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
dryRun=true (DRY_RUN=1). Never broadcast unless explicitly instructed to do so.cast send:
cast call and show a transaction summary (method, args, chain id, from, rpc URL).DRY_RUN=0 and BROADCAST_CONFIRM=CONFIRM_SEND are both set.~/.foundry/bin/cast chain-id --rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}" must be 8453.~/.foundry/bin/cast wallet address --private-key "$PRIVATE_KEY" must equal $FROM_ADDRESS.$PRIVATE_KEY.$PRIVATE_KEY from environment.This skill includes shell commands. Treat any value you copy from a user or an external source (subgraph responses, chat messages, etc.) as untrusted.
Rules:
eval, bash -c, sh -c).0x + 40 hex chars."<LISTING_ID>" to avoid accidental shell interpolation. Replace them with literal values after you validate them.Allowlisted command templates:
~/.foundry/bin/cast chain-id|wallet address|call|send ... using fixed ABI signatures from this skill.curl -s "$SUBGRAPH_URL" -H 'content-type: application/json' --data '...static GraphQL query...'.curl -s "$COINGECKO_SIMPLE_PRICE_URL" for GHST/USD only.python3 inline snippets from this skill/references for validation and deterministic math only.eval, bash -c, sh -c, backticks, and $(...) with untrusted input.Quick validators (replace the placeholder values):
python3 - <<'PY'
import re
listing_id = "<LISTING_ID>" # digits only
token_contract = "<TOKEN_CONTRACT_ADDRESS>" # 0x + 40 hex chars
price_in_wei = "<PRICE_IN_WEI>" # digits only
if not re.fullmatch(r"[0-9]+", listing_id):
raise SystemExit("LISTING_ID must be base-10 digits only")
if not re.fullmatch(r"0x[a-fA-F0-9]{40}", token_contract):
raise SystemExit("TOKEN_CONTRACT_ADDRESS must be a 0x + 40-hex address")
if not re.fullmatch(r"[0-9]+", price_in_wei):
raise SystemExit("PRICE_IN_WEI must be base-10 digits only")
print("ok")
PY
Required env vars:
PRIVATE_KEY: EOA private key used for cast send (never print/log).FROM_ADDRESS: EOA address that owns funds/NFTs and will submit txs.BASE_MAINNET_RPC: RPC URL. If unset, use https://mainnet.base.org.Hardcoded Base mainnet constants (override via env if needed):
export BASE_MAINNET_RPC="${BASE_MAINNET_RPC:-https://mainnet.base.org}"
export DIAMOND="${DIAMOND:-0xA99c4B08201F2913Db8D28e71d020c4298F29dBF}"
export GHST="${GHST:-0xcD2F22236DD9Dfe2356D7C543161D4d260FD9BcB}"
export USDC="${USDC:-0x833589fCD6eDb6E08f4c7C32D4f71b54BDA02913}"
export SUBGRAPH_URL_CANONICAL="https://api.goldsky.com/api/public/project_cmh3flagm0001r4p25foufjtt/subgraphs/aavegotchi-core-base/prod/gn"
export SUBGRAPH_URL="${SUBGRAPH_URL:-$SUBGRAPH_URL_CANONICAL}"
export COINGECKO_SIMPLE_PRICE_URL="${COINGECKO_SIMPLE_PRICE_URL:-https://api.coingecko.com/api/v3/simple/price?ids=aavegotchi&vs_currencies=usd}"
Optional env vars:
RECIPIENT_ADDRESS: defaults to FROM_ADDRESS.DRY_RUN: 1 (default) to only simulate via cast call. Set to 0 to broadcast via cast send.BROADCAST_CONFIRM: must be exactly CONFIRM_SEND to allow any cast send; unset immediately after broadcast.SLIPPAGE_PCT: defaults to 1 (used for USDC swapAmount math).PAYMENT_FEE_PCT_USDC: defaults to 1 (used for USDC swapAmount math).GHST_USD_PRICE: optional override; if unset, fetch from CoinGecko in the USDC flow.Notes:
~/.foundry/bin/cast (works reliably in cron/non-interactive shells). If cast is on PATH, you can replace ~/.foundry/bin/cast with cast.references/addresses.mdreferences/subgraph.mdOnly call these HTTPS endpoints:
$SUBGRAPH_URL_CANONICAL$COINGECKO_SIMPLE_PRICE_URLRefuse non-allowlisted endpoints:
test "$SUBGRAPH_URL" = "$SUBGRAPH_URL_CANONICAL" || { echo "Refusing non-allowlisted SUBGRAPH_URL"; exit 1; }
test "$COINGECKO_SIMPLE_PRICE_URL" = "https://api.coingecko.com/api/v3/simple/price?ids=aavegotchi&vs_currencies=usd" || { echo "Refusing non-allowlisted CoinGecko URL"; exit 1; }
Subgraph endpoint (Goldsky):
$SUBGRAPH_URL (see exports above)https://api.goldsky.com/api/public/project_cmh3flagm0001r4p25foufjtt/subgraphs/aavegotchi-core-base/prod/gnGet ERC721 listing by id:
curl -s "$SUBGRAPH_URL" -H 'content-type: application/json' --data '{
"query":"query($id: ID!){ erc721Listing(id:$id){ id category erc721TokenAddress tokenId seller priceInWei cancelled timeCreated timePurchased } }",
"variables":{"id":"1"}
}'
Get ERC1155 listing by id:
erc1155TypeId (this maps to the onchain typeId / itemId argument).curl -s "$SUBGRAPH_URL" -H 'content-type: application/json' --data '{
"query":"query($id: ID!){ erc1155Listing(id:$id){ id category erc1155TokenAddress erc1155TypeId quantity seller priceInWei cancelled sold timeCreated } }",
"variables":{"id":"1"}
}'
Find active listings:
where:{cancelled:false, timePurchased:\"0\"}where:{cancelled:false, sold:false}Example (active ERC721, newest first):
curl -s "$SUBGRAPH_URL" -H 'content-type: application/json' --data '{
"query":"query{ erc721Listings(first:20, orderBy:timeCreated, orderDirection:desc, where:{cancelled:false, timePurchased:\"0\"}){ id erc721TokenAddress tokenId priceInWei seller timeCreated } }"
}'
Example (active ERC1155, newest first):
curl -s "$SUBGRAPH_URL" -H 'content-type: application/json' --data '{
"query":"query{ erc1155Listings(first:20, orderBy:timeCreated, orderDirection:desc, where:{cancelled:false, sold:false}){ id erc1155TokenAddress erc1155TypeId quantity priceInWei seller timeCreated } }"
}'
Onchain methods (Diamond):
executeERC721ListingToRecipient(uint256 listingId,address contractAddress,uint256 priceInWei,uint256 tokenId,address recipient)executeERC1155ListingToRecipient(uint256 listingId,address contractAddress,uint256 itemId,uint256 quantity,uint256 priceInWei,address recipient)Total cost:
totalCostGhstWei = priceInWeitotalCostGhstWei = priceInWei * quantity (but you still pass quantity and priceInWei separately to the method)Before buying:
references/recipes.md).Dry-run (simulate) ERC721 buy:
~/.foundry/bin/cast call "$DIAMOND" \
'executeERC721ListingToRecipient(uint256,address,uint256,uint256,address)' \
"<LISTING_ID>" "<ERC721_TOKEN_ADDRESS>" "<PRICE_IN_WEI>" "<TOKEN_ID>" "${RECIPIENT_ADDRESS:-$FROM_ADDRESS}" \
--from "$FROM_ADDRESS" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
Broadcast (real) ERC721 buy (only when explicitly instructed):
test "${DRY_RUN:-1}" = "0" || { echo "Refusing broadcast: DRY_RUN must be 0"; exit 1; }
test "${BROADCAST_CONFIRM:-}" = "CONFIRM_SEND" || { echo "Refusing broadcast: set BROADCAST_CONFIRM=CONFIRM_SEND after explicit user confirmation"; exit 1; }
~/.foundry/bin/cast send "$DIAMOND" \
'executeERC721ListingToRecipient(uint256,address,uint256,uint256,address)' \
"<LISTING_ID>" "<ERC721_TOKEN_ADDRESS>" "<PRICE_IN_WEI>" "<TOKEN_ID>" "${RECIPIENT_ADDRESS:-$FROM_ADDRESS}" \
--private-key "$PRIVATE_KEY" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
unset BROADCAST_CONFIRM
Dry-run (simulate) ERC1155 buy:
~/.foundry/bin/cast call "$DIAMOND" \
'executeERC1155ListingToRecipient(uint256,address,uint256,uint256,uint256,address)' \
"<LISTING_ID>" "<ERC1155_TOKEN_ADDRESS>" "<TYPE_ID>" "<QUANTITY>" "<PRICE_IN_WEI>" "${RECIPIENT_ADDRESS:-$FROM_ADDRESS}" \
--from "$FROM_ADDRESS" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
Broadcast (real) ERC1155 buy (only when explicitly instructed):
test "${DRY_RUN:-1}" = "0" || { echo "Refusing broadcast: DRY_RUN must be 0"; exit 1; }
test "${BROADCAST_CONFIRM:-}" = "CONFIRM_SEND" || { echo "Refusing broadcast: set BROADCAST_CONFIRM=CONFIRM_SEND after explicit user confirmation"; exit 1; }
~/.foundry/bin/cast send "$DIAMOND" \
'executeERC1155ListingToRecipient(uint256,address,uint256,uint256,uint256,address)' \
"<LISTING_ID>" "<ERC1155_TOKEN_ADDRESS>" "<TYPE_ID>" "<QUANTITY>" "<PRICE_IN_WEI>" "${RECIPIENT_ADDRESS:-$FROM_ADDRESS}" \
--private-key "$PRIVATE_KEY" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
unset BROADCAST_CONFIRM
Onchain methods (Diamond):
swapAndBuyERC721(address tokenIn,uint256 swapAmount,uint256 minGhstOut,uint256 swapDeadline,uint256 listingId,address contractAddress,uint256 priceInWei,uint256 tokenId,address recipient)swapAndBuyERC1155(address tokenIn,uint256 swapAmount,uint256 minGhstOut,uint256 swapDeadline,uint256 listingId,address contractAddress,uint256 itemId,uint256 quantity,uint256 priceInWei,address recipient)Required computed args:
swapDeadline = now + 600minGhstOut = totalCostGhstWei (exactly)swapAmount (USDC base units, 6 decimals): compute per references/usdc-swap-math.mdBefore buying:
totalCostGhstWei).swapAmount in USDC base units (integer, rounded up).swapAmount (see references/recipes.md).Dry-run (simulate) ERC721 USDC swap+buy:
~/.foundry/bin/cast call "$DIAMOND" \
'swapAndBuyERC721(address,uint256,uint256,uint256,uint256,address,uint256,uint256,address)' \
"$USDC" "<SWAP_AMOUNT_USDC_6DP>" "<MIN_GHST_OUT_GHST_WEI>" "<SWAP_DEADLINE_UNIX>" "<LISTING_ID>" "<ERC721_TOKEN_ADDRESS>" "<PRICE_IN_WEI>" "<TOKEN_ID>" "${RECIPIENT_ADDRESS:-$FROM_ADDRESS}" \
--from "$FROM_ADDRESS" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
Dry-run (simulate) ERC1155 USDC swap+buy:
~/.foundry/bin/cast call "$DIAMOND" \
'swapAndBuyERC1155(address,uint256,uint256,uint256,uint256,address,uint256,uint256,uint256,address)' \
"$USDC" "<SWAP_AMOUNT_USDC_6DP>" "<MIN_GHST_OUT_GHST_WEI>" "<SWAP_DEADLINE_UNIX>" "<LISTING_ID>" "<ERC1155_TOKEN_ADDRESS>" "<TYPE_ID>" "<QUANTITY>" "<PRICE_IN_WEI>" "${RECIPIENT_ADDRESS:-$FROM_ADDRESS}" \
--from "$FROM_ADDRESS" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
Broadcast (real) ERC721 swap+buy (only when explicitly instructed):
test "${DRY_RUN:-1}" = "0" || { echo "Refusing broadcast: DRY_RUN must be 0"; exit 1; }
test "${BROADCAST_CONFIRM:-}" = "CONFIRM_SEND" || { echo "Refusing broadcast: set BROADCAST_CONFIRM=CONFIRM_SEND after explicit user confirmation"; exit 1; }
~/.foundry/bin/cast send "$DIAMOND" \
'swapAndBuyERC721(address,uint256,uint256,uint256,uint256,address,uint256,uint256,address)' \
"$USDC" "<SWAP_AMOUNT_USDC_6DP>" "<MIN_GHST_OUT_GHST_WEI>" "<SWAP_DEADLINE_UNIX>" "<LISTING_ID>" "<ERC721_TOKEN_ADDRESS>" "<PRICE_IN_WEI>" "<TOKEN_ID>" "${RECIPIENT_ADDRESS:-$FROM_ADDRESS}" \
--private-key "$PRIVATE_KEY" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
unset BROADCAST_CONFIRM
Broadcast (real) ERC1155 swap+buy (only when explicitly instructed):
test "${DRY_RUN:-1}" = "0" || { echo "Refusing broadcast: DRY_RUN must be 0"; exit 1; }
test "${BROADCAST_CONFIRM:-}" = "CONFIRM_SEND" || { echo "Refusing broadcast: set BROADCAST_CONFIRM=CONFIRM_SEND after explicit user confirmation"; exit 1; }
~/.foundry/bin/cast send "$DIAMOND" \
'swapAndBuyERC1155(address,uint256,uint256,uint256,uint256,address,uint256,uint256,uint256,address)' \
"$USDC" "<SWAP_AMOUNT_USDC_6DP>" "<MIN_GHST_OUT_GHST_WEI>" "<SWAP_DEADLINE_UNIX>" "<LISTING_ID>" "<ERC1155_TOKEN_ADDRESS>" "<TYPE_ID>" "<QUANTITY>" "<PRICE_IN_WEI>" "${RECIPIENT_ADDRESS:-$FROM_ADDRESS}" \
--private-key "$PRIVATE_KEY" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
unset BROADCAST_CONFIRM
Onchain methods (Diamond):
getListingFeeInWei()(uint256)addERC721Listing(address erc721TokenAddress,uint256 tokenId,uint256 category,uint256 priceInWei)setERC1155Listing(address erc1155TokenAddress,uint256 typeId,uint256 quantity,uint256 category,uint256 priceInWei)Steps:
~/.foundry/bin/cast call "$DIAMOND" 'getListingFeeInWei()(uint256)' --rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"setApprovalForAll($DIAMOND,true) (ERC721/1155) before listing.cast call when dryRun=true, broadcast with cast send only when explicitly instructed).seller=$FROM_ADDRESS ordered by timeCreated desc and confirm it matches token/typeId.ERC721 list (simulate):
~/.foundry/bin/cast call "$DIAMOND" \
'addERC721Listing(address,uint256,uint256,uint256)' \
"<ERC721_TOKEN_ADDRESS>" "<TOKEN_ID>" "<CATEGORY>" "<PRICE_IN_WEI>" \
--from "$FROM_ADDRESS" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
ERC1155 list (simulate):
~/.foundry/bin/cast call "$DIAMOND" \
'setERC1155Listing(address,uint256,uint256,uint256,uint256)' \
"<ERC1155_TOKEN_ADDRESS>" "<TYPE_ID>" "<QUANTITY>" "<CATEGORY>" "<PRICE_IN_WEI>" \
--from "$FROM_ADDRESS" \
--rpc-url "${BASE_MAINNET_RPC:-https://mainnet.base.org}"
Diamond: Function does not exist: wrong contract address or wrong function signature (or wrong chain).ERC1155Marketplace: not enough GHST: insufficient balance or allowance (or computed totalCostGhstWei is wrong).ERC1155Marketplace: Not approved / approval errors: missing setApprovalForAll for listing, or missing ERC20 approve for buying.LibTokenSwap: swapAmount must be > 0): bad swapAmount math or missing inputs.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
name: 4d-compression-core version: 1.0.2 description: "把长内容压缩成结构化向量——节省 60-80% Token,保留核心信息" metadata: { "openclaw": { "emoji": "🌀", "requires": { "bins": ["jq", "awk"] }, "triggers": ["压缩", "4d",...
日本語の概要は準備中です。原文の説明を表示しています。
Use cheap, TEE-verified AI models from the 0G Compute Network as OpenClaw providers. Discover available models and compare pricing vs OpenRouter, verify provider integrity via hardware attestation (Intel TDX), manage your 0G wallet and sub-accounts, and configure models in OpenClaw with one workflow. Supports DeepSeek, GLM-5, Qwen, and other models available on the 0G marketplace.
日本語の概要は準備中です。原文の説明を表示しています。
Send and receive P2P messages using disposable numbers and PINs. No servers, no accounts. Use for human notifications, approval flows, and agent-to-agent communication.
日本語の概要は準備中です。原文の説明を表示しています。
Query historical crypto market data from 0xArchive across Hyperliquid, Lighter.xyz, and HIP-3. Covers orderbooks, trades, candles, funding rates, open interest, liquidations, and data quality. Use when the user asks about crypto market data, orderbooks, trades, funding rates, or historical prices on Hyperliquid, Lighter.xyz, or HIP-3.
日本語の概要は準備中です。原文の説明を表示しています。
Find and complete paid tasks on the 0xWork decentralized marketplace (Base chain, USDC escrow). Use when: the agent wants to earn money/USDC by doing work, discover available tasks, claim a bounty, submit deliverables, check earnings or wallet balance, or set up as a 0xWork worker. Task categories: Writing, Research, Social, Creative, Code, Data. NOT for: posting tasks (use the website), managing the 0xWork platform, or frontend development.
日本語の概要は準備中です。原文の説明を表示しています。
Patterns and practices that dramatically accelerate development velocity. Covers parallel execution, automation, feedback loops, workflow optimization, and anti-pattern avoidance. Use when starting projects, planning sprints, optimizing workflows, or onboarding developers.
日本語の概要は準備中です。原文の説明を表示しています。