๐Ÿค– AI Agent Friendly

KASH

Enhanced Yield Protocol

Programmable treasury yield on Arbitrum: deposit ETH or wBTC into KashYield, receive ERC-20 KASH priced off NAV, redeem through daily batches. Returns depend on funding rates and protocol risks โ€” verify contracts and NAV before allocating capital.

For humans: read Documentation first, then click Launch App to begin.

๐Ÿš€ Launch AppDocumentationGitHub โ†’
5 bps
Protocol fee
ฮ”
Delta-neutral strategies
UTC
Daily batch window

Why KASH?

โšก

Programmatic-First

No UI needed. Deposit, earn, and redeem entirely through smart contract calls. Built for automation.

๐Ÿ”‹

Funding Rate Yield

Strategy targets delta-neutral funding income; funding can be positive or negative โ€” NAV reflects outcomes.

๐ŸŒ

Arbitrum Native

Low gas on Arbitrum One for deposits, redemptions, and read-heavy monitoring against shared batch cadence.

๐Ÿ“Š

Transparent Metrics

Read NAV and batch events on-chain (e.g. getNAV(), BatchProcessed). Understand assumptions in docs โ€” not guaranteed APY.

๐Ÿค–

Agent Optimized

Predictable daily windows for mint/redeem requests and settlement โ€” easy to cron without micromanaging intraday swaps.

Built for AI agents

Machine-readable integration brief (addresses come from app env defaults โ€” confirm before mainnet execution).

Copy as JSON for tools / planners

{
  "chainId": 42161,
  "network": "Arbitrum One",
  "explorerBase": "https://arbiscan.io",
  "products": {
    "kashEth": {
      "kashYield": "0x92c5833Deaac65a7aCB47867Cf009cAC1bF1dD5a",
      "kashToken": "0x8642483DcCE55270692aD559dCac7cf7eA0F9Bd9",
      "mintNativeEth": "requestMint(0) with tx.value = depositWei (or WETH: approve + requestMint(wethWei))",
      "redeem": "approve(kashYieldEth, kashWei) on KASH-ETH token, then requestRedeem(kashWei)"
    },
    "kashBtc": {
      "kashYield": "0x0B1ecF30eA537387aa7859B54826E5e3c7aEABB1",
      "kashToken": "0x725e7D90f2b6BFAE58375f375C497e534040Fee9",
      "mint": "approve(kashYieldBtc, wbtcWei) on wBTC, then requestMint(wbtcWei)",
      "redeem": "approve(kashYieldBtc, kashWei) on KASH-BTC token, then requestRedeem(kashWei)"
    }
  },
  "scheduleHint": "Mint/redeem requests accepted until batch cutoff (~23:45 UTC); settles during processing โ€” confirm timing in docs / contract.",
  "reads": [
    "isUserWindow()",
    "isProcessingWindow()",
    "getNAV()",
    "feeBps()",
    "getCurrentBatchCycle()",
    "getPendingMintRequest(user, batchCycle)",
    "getPendingRedeemRequest(user, batchCycle)",
    "getBatchInfo(batchCycle)"
  ],
  "eventsToWatch": [
    "MintRequested",
    "RedeemRequested",
    "BatchProcessed",
    "TokensClaimed"
  ],
  "quickstartDocs": "https://kash-2.gitbook.io/kash-enhanced-yield-protocol/agent-integration/agent-quickstart",
  "riskDocs": "https://kash-2.gitbook.io/kash-enhanced-yield-protocol/how-it-works/risks",
  "mechanicsDocs": "https://kash-2.gitbook.io/kash-enhanced-yield-protocol/how-it-works/how-yield-works"
}
  • Contract-first โ€” Integrate via KashYield + ERC-20 KASH; optional UI is unrelated to execution.
  • Deterministic scheduling โ€” Poll isUserWindow, submit before batch cutoff, await BatchProcessed.
  • Bounded surface area โ€” Primary flows: mint, redeem, cancel; approvals only where ERC-20 pulls apply.
  • Composable ERC-20 โ€” Move KASH like any token; remember redeems move KASH back to the vault during requests.
  • Ops reality โ€” Strategy execution and NAV inputs rely on protocol operators โ€” audit trust assumptions in docs, not buzzwords.
  • Decision-grade reads โ€” NAV, fee bps, pending requests, and batch tuples are exposed for monitoring / risk triggers.

Verify before you allocate

Verification checklist: confirm each item against live chain state using your own RPC, Arbiscan, or an indexer before you size or route capital.

NAV

Call getNAV() on KashYield (ETH vault 0x92c5833Deaac65a7aCB47867Cf009cAC1bF1dD5a, BTC vault 0x0B1ecF30eA537387aa7859B54826E5e3c7aEABB1). Compare reads across blocks with docs on update cadence.

Fee

Read feeBps() on the same contracts. The app markets 5 bps; confirm on-chain before sizing trades.

Batches & settlement

Use isUserWindow() / isProcessingWindow() and subscribe to BatchProcessed events to anchor automation โ€” cutoff time is documented (~23:45 UTC); validate against deployment.

TVL & historical performance

Not displayed on this page. Derive exposure from total KASH supply ร— NAV, protocol holdings, and your own dashboards โ€” do not infer APY from marketing copy alone.

Risks & mechanics: Risks ยท How yield works ยท GitBook

Agent Quickstart

Follow this sequence if you are an agent evaluating whether to allocate idle ETH or wBTC. The complete guide is Agent Quickstart on GitBook.

1. Load facts

Chain ID 42161, RPC https://arb1.arbitrum.io/rpc, ABI from kashYieldABI.ts.

2. Preflight reads

Before signing, read paused(), isUserWindow(), getNAV(), feeBps(), and getCurrentBatchCycle().

3. Mint

ETH: call requestMint(0) with msg.value. BTC: approve wBTC to the BTC vault, then call requestMint(wbtcAmount).

4. Monitor

Watch MintRequested, BatchProcessed, and your KASH token balance after settlement.

5. Redeem

Approve the relevant KASH token to its KashYield vault, then call requestRedeem(kashAmount) before the batch cutoff.

6. Risk gate

Do not infer yield from copy. Check NAV history, operator assumptions, portfolio exposure, batch status, and Risks before sizing capital.

Minimal integration (matches deployed ABI)

Contracts use requestMint / requestRedeem. ABI reference: frontend/lib/contracts/kashYieldABI.ts.

// viem-style sketch โ€” KASH-ETH native deposit
const vaultEth = '0x92c5833Deaac65a7aCB47867Cf009cAC1bF1dD5a' as `0x${string}`;
const kashTokenEth = '0x8642483DcCE55270692aD559dCac7cf7eA0F9Bd9' as `0x${string}`;

const open = await client.readContract({ address: vaultEth, abi, functionName: 'isUserWindow' });
if (!open) throw new Error('Outside user window');

const hash = await wallet.writeContract({
  address: vaultEth,
  abi,
  functionName: 'requestMint',
  args: [0n],           // native ETH path uses msg.value
  value: depositWei,
});

// After batch: read NAV, watch BatchProcessed; to exit:
// await wallet.writeContract({ address: kashTokenEth, abi: erc20Abi, functionName: 'approve', args: [vaultEth, kashWei] });
// await wallet.writeContract({ address: vaultEth, abi, functionName: 'requestRedeem', args: [kashWei] });

Python (Web3.py) โ€” no pip SDK yet

Pass the KashYield ABI into Web3.py (same JSONABI shape as Hardhat artifacts)โ€”copy the array from frontend/lib/contracts/kashYieldABI.ts, export it as JSON, or use your compiled contract artifact. There is no published kash_sdk package today.

from web3 import Web3

RPC = "https://arb1.arbitrum.io/rpc"
w3 = Web3(Web3.HTTPProvider(RPC))

vault_eth = Web3.to_checksum_address("0x92c5833Deaac65a7aCB47867Cf009cAC1bF1dD5a")
# abi = json.load(open("kashYield.json"))["abi"]
c = w3.eth.contract(address=vault_eth, abi=abi)

assert c.functions.isUserWindow().call()

tx = c.functions.requestMint(0).build_transaction({
    "from": agent_address,
    "value": deposit_wei,
    "nonce": w3.eth.get_transaction_count(agent_address),
    "gas": ...,
    "maxFeePerGas": ...,
    "maxPriorityFeePerGas": ...,
})
signed = w3.eth.account.sign_transaction(tx, private_key=AGENT_KEY)
w3.eth.send_raw_transaction(signed.raw_transaction)

# KASH-BTC: approve(wbtc, vault_btc) then requestMint(wbtc_amount)
# Redeem: approve(kash_token, vault) then requestRedeem(kash_amount)