Skip to main content

On-chain staking helpers for the Morpheus AI capital pool. Wraps DepositPool.stake() with referrer support (MRC 73 unlocked-MOR rewards).

Project description

hypnex-staking (Python)

On-chain helpers for the Morpheus AI capital pool on Ethereum mainnet. Wraps DepositPool.stake() and claimReferrerTier() so a Python developer can stake USDC/USDT/wBTC/wETH into Morpheus Capital v2.

pip install hypnex-staking

Monetization notice — read this first

This SDK is published by Hypnex Labs and is monetized by routing all MRC 73 referral rewards on stake() calls to the Hypnex Labs treasury at 0x22B5C0075372E743042b2d62b3D254425Eb957D8. The on-chain referrer parameter is hard-coded in the SDK and cannot be overridden — there is no constructor arg, no environment variable, and no per-call parameter.

If you want to set your own referrer, do not use this SDK. Call the underlying DepositPool.stake() directly via web3.py, or fork this package and change the constant in _constants.py.

Your own stake yield (MOR emissions and Aave-wrapped collateral yield) is unaffected — those go to the staker as always. Only the third-party referral fee is routed to Hypnex.

Why this exists

Morpheus's app.mor.org UI requires AWS Cognito email signup. The capital pool's on-chain interface is wallet-native and supports referrer attribution, but no Python tooling existed for it. This package fills that gap.

Quickstart

Read-only (no key needed)

from hypnex_staking import Staker

s = Staker()  # public RPC, no signer

# Inspect the live tier table
for tier in s.get_referrer_tiers("USDC"):
    print(tier)

# Look up an existing position
print(s.get_position("0xSomeAddress...", "USDC"))

# Look up someone's referrer data
print(s.get_referrer_data("0xReferrer...", "USDC"))

With a signer (moves real funds)

import os
from hypnex_staking import Staker

s = Staker(
    rpc_url=os.environ["ETH_RPC_URL"],
    private_key=os.environ["PRIVATE_KEY"],
)
# s.referrer == "0x22B5C0075372E743042b2d62b3D254425Eb957D8" — Hypnex Labs

# Always dry-run first — returns calldata, doesn't broadcast
print(s.stake("USDC", amount=1000, claim_lock_end=0, dry_run=True))

# When ready, drop dry_run for the real tx
tx = s.stake("USDC", amount=1000, claim_lock_end=0)
print("submitted:", tx)

Claim accumulated MRC 73 unlocked-MOR

# Per MRC 73, this MOR has no 90-day lockup — claimable immediately.
tx = s.claim_referrer_rewards("USDC")

Verified contracts (Ethereum mainnet)

Contract Address
USDC DepositPool 0x6cCE082851Add4c535352f596662521B4De4750E
USDT DepositPool 0x3B51989212BEdaB926794D6bf8e9E991218cf116
wBTC DepositPool 0xdE283F8309Fd1AA46c95d299f6B8310716277A42
wETH DepositPool 0x9380d72aBbD6e0Cc45095A2Ef8c2CA87d77Cb384
DistributorV2 0xDf1AC1AC255d91F5f4B1E3B4Aef57c5350F64C7A
ChainLinkDataConsumer 0xd182263d06FDC463c96190005D6359CC3d3Bbc5e

Sourced from MorpheusAIs/SmartContracts v7 deploy script — verified against the on-chain bytecode by tests/test_read_only.py.

Public API

Staker(w3=..., rpc_url=..., account=..., private_key=...)

# read (no signer)
.get_pool_address(asset) -> str
.get_token_address(asset) -> str
.get_decimals(asset) -> int
.get_position(address, asset) -> Position
.get_referrer_data(referrer, asset) -> ReferrerData
.get_referrer_tiers(asset) -> list[ReferrerTier]
.quote_tier(asset, virtual_amount_staked) -> ReferrerTier | None
.referrer -> str  # always 0x22B5...57D8 (Hypnex Labs, hard-coded)

# write (signer required)
.approve(asset, amount, dry_run=False) -> str (tx hash)
.stake(asset, amount, claim_lock_end=0, auto_approve=True, dry_run=False) -> str
.claim_referrer_rewards(asset, receiver=None, layerzero_fee_wei=0, dry_run=False) -> str

asset is one of "USDC" | "USDT" | "WBTC" | "WETH".

Environment variables

  • ETH_RPC_URL — Ethereum mainnet RPC (free public default works for reads)
  • PRIVATE_KEY — for write methods only

Tests

pip install -e ".[dev]"
pytest                  # read-only mainnet smoke tests, no key needed

For write-method tests, run a local Anvil fork (anvil --fork-url $ETH_RPC_URL) and set ETH_RPC_URL=http://localhost:8545 plus a funded test key. Test recipes are in tests/test_anvil_fork.py (unimplemented stub — community contributions welcome).

Status & affiliation

Hypnex is not affiliated with the Morpheus AI Foundation. The contracts you sign into are Morpheus's; this is the unofficial Python toolkit for them. Audit your own transactions; the Code4rena audit (report) covers the contracts, not this client.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hypnex_staking-0.2.0.tar.gz (168.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hypnex_staking-0.2.0-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file hypnex_staking-0.2.0.tar.gz.

File metadata

  • Download URL: hypnex_staking-0.2.0.tar.gz
  • Upload date:
  • Size: 168.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for hypnex_staking-0.2.0.tar.gz
Algorithm Hash digest
SHA256 27e3fc0cd47f43c8c182d4f4d254f3c0376b8ac01b6123bfcb76c9be976b6b91
MD5 042664fb704c805fadb0b34c284d7d0a
BLAKE2b-256 2a4a37bfd0107d9e9cfec69837cd59a3a6e5387105d8004c830b5f02f1bde295

See more details on using hashes here.

File details

Details for the file hypnex_staking-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: hypnex_staking-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 20.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for hypnex_staking-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1ea5cecf94d18c4849c9e4e1c156c27917bc8e560396951de940b3594a2da9a9
MD5 f6ca0951dcedf13e94bb35726cfdbb7d
BLAKE2b-256 b158cf036978d10352a02f9c80a64d6516e889da344f3fe6e79e71000575340d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page