sky-lending
Pre-flight Dependencies (auto-injected by Plugin Store CI)
Run once per session before first use. These checks ensure required tools are installed.
Install onchainos CLI + Skills (auto-injected)
# 1. Install onchainos CLI
onchainos --version 2>/dev/null || curl -fsSL https://raw.githubusercontent.com/okx/onchainos-skills/main/install.sh | sh
# 2. Install onchainos skills (enables AI agent to use onchainos commands)
npx skills add okx/onchainos-skills --yes --global
# 3. Install plugin-store skills (enables plugin discovery and management)
npx skills add MigOKG/plugin-store --skill plugin-store --yes --global
Install sky-lending binary (auto-injected)
if ! command -v sky-lending >/dev/null 2>&1; then
OS=$(uname -s | tr A-Z a-z)
ARCH=$(uname -m)
case "${OS}_${ARCH}" in
darwin_arm64) TARGET="aarch64-apple-darwin" ;;
darwin_x86_64) TARGET="x86_64-apple-darwin" ;;
linux_x86_64) TARGET="x86_64-unknown-linux-gnu" ;;
linux_aarch64) TARGET="aarch64-unknown-linux-gnu" ;;
esac
curl -fsSL "https://github.com/MigOKG/plugin-store/releases/download/plugins/sky-lending@0.1.0/sky-lending-${TARGET}" -o ~/.local/bin/sky-lending
chmod +x ~/.local/bin/sky-lending
fi
Report install (auto-injected, runs once)
REPORT_FLAG="$HOME/.plugin-store/reported/sky-lending"
if [ ! -f "$REPORT_FLAG" ]; then
mkdir -p "$HOME/.plugin-store/reported"
# Device fingerprint → SHA256 → 32-char device ID
DEV_RAW="$(hostname):$(uname -s):$(uname -m):$HOME"
DEV_ID=$(echo -n "$DEV_RAW" | shasum -a 256 | head -c 32)
# HMAC signature (obfuscated key, same as CLI binary)
_K=$(echo 'OE9nNWFRUFdfSVJkektrMExOV2RNeTIzV2JibXo3ZWNTbExJUDFIWnVoZw==' | base64 -d 2>/dev/null || echo 'OE9nNWFRUFdfSVJkektrMExOV2RNeTIzV2JibXo3ZWNTbExJUDFIWnVoZw==' | openssl base64 -d)
HMAC_SIG=$(echo -n "${_K}${DEV_ID}" | shasum -a 256 | head -c 8)
DIV_ID="${DEV_ID}${HMAC_SIG}"
unset _K
# Report to Vercel stats
curl -s -X POST "https://plugin-store-dun.vercel.app/install" \
-H "Content-Type: application/json" \
-d '{"name":"sky-lending","version":"0.1.0"}' >/dev/null 2>&1 || true
# Report to OKX API (with HMAC-signed device token)
curl -s -X POST "https://www.okx.com/priapi/v1/wallet/plugins/download/report" \
-H "Content-Type: application/json" \
-d '{"pluginName":"sky-lending","divId":"'"$DIV_ID"'"}' >/dev/null 2>&1 || true
touch "$REPORT_FLAG"
fi
Sky Lending Plugin (MakerDAO CDP)
Overview
Sky Lending is the rebrand of MakerDAO's CDP (Collateralized Debt Position) system. Users deposit collateral into vaults and borrow DAI stablecoins against it. The protocol runs on Ethereum mainnet (chain ID 1).
Key facts:
- Sky = MakerDAO rebrand; core contracts (Vat, DssCdpManager) remain unchanged
- CDP = Collateralized Debt Position: lock collateral → draw DAI debt
- Liquidation risk: if collateral value falls below the liquidation ratio, the vault gets liquidated
- Stability fees accrue continuously on debt (currently ~2-5% APY depending on collateral type)
- All write operations in this plugin are dry-run only for safety
Pre-flight Checks
Before any command:
- Verify
onchainosis installed:onchainos --version - For operations requiring wallet:
onchainos wallet balance --chain 1 --output json - If wallet check fails: "Please log in with
onchainos wallet loginfirst."
Contract Addresses (Ethereum Mainnet)
| Contract | Address |
|---|---|
| DssCdpManager | 0x5ef30b9986345249bc32d8928B7ee64DE9435E39 |
| Vat (core accounting) | 0x35D1b3F3D7966A1DFe207aa4514C12a259A0492B |
| Jug (stability fees) | 0x19c0976f590D67707E62397C87829d896Dc0f1F |
| ETH-A Join | 0x2F0b23f53734252Bda2277357e97e1517d6B042A |
| DAI Join | 0x9759A6Ac90977b93B58547b4A71c78317f391A28 |
| DAI Token | 0x6B175474E89094C44Da98b954EedeAC495271d0F |
Commands
ilks — List Collateral Types
Query on-chain parameters for all supported collateral types.
Usage:
sky-lending ilks [--chain 1]
Returns per ilk: total debt, rate accumulator, spot price, debt ceiling, minimum vault debt, and approximate stability fee APY.
Supported ilks: ETH-A, WBTC-A, USDC-A, WSTETH-A
Example:
sky-lending ilks --chain 1
vaults — List CDP Vaults
Query all CDP vaults for a given address.
Usage:
sky-lending vaults [--chain 1] [--address <ADDR>]
Parameters:
| Parameter | Required | Description |
|---|---|---|
--chain |
No | Chain ID (default: 1) |
--address |
No | Owner address (resolved from onchainos if omitted) |
Returns per vault: CDP ID, urn address, ilk type, collateral amount (ink), DAI debt (art * rate).
Example:
sky-lending vaults --chain 1
sky-lending vaults --address 0xYourAddress
open-vault — Open New CDP Vault (Dry-Run)
Generate calldata to open a new CDP vault.
Usage:
sky-lending open-vault [--chain 1] [--ilk ETH-A] [--from <ADDR>] [--dry-run]
Parameters:
| Parameter | Required | Description |
|---|---|---|
--chain |
No | Chain ID (default: 1) |
--ilk |
No | Collateral type (default: ETH-A) |
--from |
No | Wallet address |
--dry-run |
No | Default true — always dry-run for safety |
WARNING: Ask user to confirm before submitting any real transaction. CDP operations carry liquidation risk.
Example:
sky-lending open-vault --ilk ETH-A --dry-run
deposit-collateral — Deposit ETH Collateral (Dry-Run)
Generate calldata to lock ETH collateral into a vault.
Usage:
sky-lending deposit-collateral --amount-eth <ETH> [--urn <URN>] [--from <ADDR>] [--dry-run]
Parameters:
| Parameter | Required | Description |
|---|---|---|
--amount-eth |
Yes | ETH amount to deposit (e.g. 1.5) |
--urn |
No | Vault urn address (from sky-lending vaults) |
--from |
No | Wallet address |
--dry-run |
No | Default true — always dry-run for safety |
WARNING: Ask user to confirm before submitting. Depositing incorrect amounts or to wrong vaults is irreversible.
Steps:
- Calls
GemJoin.join(address urn)with ETH value (payable) - ETH is locked in the Vat as collateral
Example:
sky-lending deposit-collateral --amount-eth 1.0 --urn 0xUrnAddress --dry-run
draw-dai — Draw (Mint) DAI (Dry-Run)
Generate calldata to borrow DAI against collateral.
Usage:
sky-lending draw-dai --amount-dai <DAI> [--ilk ETH-A] [--urn <URN>] [--to <ADDR>] [--from <ADDR>] [--dry-run]
Parameters:
| Parameter | Required | Description |
|---|---|---|
--amount-dai |
Yes | DAI amount to draw (e.g. 500.0) |
--ilk |
No | Collateral type (default: ETH-A) |
--urn |
No | Vault urn address |
--to |
No | Recipient address for DAI |
--from |
No | Wallet address |
--dry-run |
No | Default true — always dry-run for safety |
WARNING: Ask user to confirm before submitting. Drawing too much DAI risks liquidation if collateral price drops.
Steps:
Vat.frob(ilk, urn, urn, urn, 0, dart)— increase debt in VatDaiJoin.exit(recipient, amount)— mint DAI to wallet
Example:
sky-lending draw-dai --amount-dai 500.0 --ilk ETH-A --dry-run
repay-dai — Repay DAI Debt (Dry-Run)
Generate calldata to repay DAI debt.
Usage:
sky-lending repay-dai --amount-dai <DAI> [--ilk ETH-A] [--urn <URN>] [--from <ADDR>] [--dry-run]
Parameters:
| Parameter | Required | Description |
|---|---|---|
--amount-dai |
Yes | DAI amount to repay (e.g. 100.0) |
--ilk |
No | Collateral type (default: ETH-A) |
--urn |
No | Vault urn address |
--from |
No | Wallet address |
--dry-run |
No | Default true — always dry-run for safety |
WARNING: Ask user to confirm before submitting. Ensure sufficient DAI balance first.
Steps:
DAI.approve(DaiJoin, amount)— allow DaiJoin to pull DAIDaiJoin.join(urn, amount)— burn DAI, credit VatVat.frob(ilk, urn, urn, urn, 0, -dart)— reduce debt
Example:
sky-lending repay-dai --amount-dai 100.0 --ilk ETH-A --dry-run
withdraw-collateral — Withdraw Collateral (Dry-Run)
Generate calldata to withdraw ETH collateral from a vault.
Usage:
sky-lending withdraw-collateral --amount-eth <ETH> [--ilk ETH-A] [--urn <URN>] [--to <ADDR>] [--from <ADDR>] [--dry-run]
Parameters:
| Parameter | Required | Description |
|---|---|---|
--amount-eth |
Yes | ETH amount to withdraw (e.g. 0.5) |
--ilk |
No | Collateral type (default: ETH-A) |
--urn |
No | Vault urn address |
--to |
No | Recipient for withdrawn ETH |
--from |
No | Wallet address |
--dry-run |
No | Default true — always dry-run for safety |
WARNING: Ask user to confirm before submitting. Withdrawing collateral lowers collateralization ratio and increases liquidation risk.
Steps:
Vat.frob(ilk, urn, urn, urn, -dink, 0)— free collateral in VatGemJoin.exit(recipient, amount)— withdraw ETH to wallet
Example:
sky-lending withdraw-collateral --amount-eth 0.5 --ilk ETH-A --dry-run
Error Handling
| Error | Cause | Resolution |
|---|---|---|
| "Cannot get wallet address" | Not logged in to onchainos | Run onchainos wallet login |
| "Unknown ilk: X" | Invalid collateral type | Use: ETH-A, WBTC-A, USDC-A, WSTETH-A |
| "eth_call RPC error" | RPC node issue | Retry; check network |
| "Return data too short" | Contract returned empty | Verify contract address and chain ID |
Risk Warnings
- CDP operations carry real liquidation risk in production
- All write operations in this plugin are dry-run only
- Never submit CDP transactions without verifying your collateralization ratio
- Minimum collateralization ratios: ETH-A 150%, WBTC-A 150%, WSTETH-A 160%
Suggested Follow-ups
After ilks: suggest viewing your vaults with sky-lending vaults.
After vaults: if vault has debt, suggest checking collateralization ratio; if empty, suggest sky-lending deposit-collateral.
After open-vault (dry-run): suggest sky-lending deposit-collateral to add collateral.
After deposit-collateral (dry-run): suggest sky-lending draw-dai to borrow DAI.
After draw-dai (dry-run): remind user to monitor their vault health regularly.
Skill Routing
- For ETH staking → use
lidoskill - For savings rate on DAI → use
spark-savingsskill - For wallet balance → use
onchainos wallet balance