Source Code

;; @contract Block Info Nakamoto
;; @version 1
;;
;; Contract to get info at given block

;;-------------------------------------
;; Constants
;;-------------------------------------

(define-constant ERR_BLOCK_INFO u42001)

;;-------------------------------------
;; User Info - Points
;;-------------------------------------

(define-read-only (get-user-wallet (account principal) (block uint))
  (let (
    (block-hash (unwrap! (get-stacks-block-info? id-header-hash block) (err ERR_BLOCK_INFO)))
  )
    (at-block block-hash (get-wallet-balance account))
  )
)

(define-read-only (get-wallet-balance (account principal))
  (contract-call? .ststx-token get-balance account)
)

;;-------------------------------------
;; Bitflow
;;-------------------------------------

(define-read-only (get-user-bitflow (account principal) (block uint))
  (let (
    (block-hash (unwrap! (get-stacks-block-info? id-header-hash block) (err ERR_BLOCK_INFO)))
  )
    (if (< block u132631)
      (ok u0)
      
      (if (< block u135640)
        (at-block block-hash (get-bitflow-lp-1 account))

        (let (
          (balance-bitflow-1 (unwrap-panic (at-block block-hash (get-bitflow-lp-1 account))))
          (balance-bitflow-2 (unwrap-panic (at-block block-hash (get-bitflow-lp-2 account))))
        )
          (ok (+ balance-bitflow-1 balance-bitflow-2))
        )
      )
    )
  )
)

;; V1
(define-read-only (get-bitflow-lp-1 (account principal))
  (let (    
    ;; Wallet
    (balance (unwrap-panic (contract-call? 'SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.stx-ststx-lp-token-v-1-1 get-balance account)))

    ;; Staked
    (user-data (contract-call? 'SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.earn-stx-ststx-v-1-1 get-user-data
      .ststx-token
      'SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.stx-ststx-lp-token-v-1-1
      account
    ))

    ;; Staked
    (staked (if (is-some user-data)
      (get total-currently-staked (unwrap-panic user-data))
      u0
    ))
  )
    (ok (+ balance staked))
  )
)

;; V2
(define-read-only (get-bitflow-lp-2 (account principal))
  (let (    
    ;; Wallet
    (balance (unwrap-panic (contract-call? 'SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.stx-ststx-lp-token-v-1-2 get-balance account)))

    ;; Staked
    (user-data (contract-call? 'SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.earn-stx-ststx-v-1-2 get-user-data
      .ststx-token
      'SPQC38PW542EQJ5M11CR25P7BS1CA6QT4TBXGB3M.stx-ststx-lp-token-v-1-2
      account
    ))

    (staked (if (is-some user-data)
      (get total-currently-staked (unwrap-panic user-data))
      u0
    ))
  )
    (ok (+ balance staked))
  )
)

;;-------------------------------------
;; Zest
;;-------------------------------------

(define-read-only (get-user-zest (account principal) (block uint))
  (let (
    (block-hash (unwrap! (get-stacks-block-info? id-header-hash block) (err u666)))
  )
    (if (< block u140111)
      (ok u0)
      (if (< block u143343)
        (at-block block-hash (get-user-zest-helper-1 account))
        (if (< block u149387)
          (at-block block-hash (get-user-zest-helper-2 account))
          (at-block block-hash (get-user-zest-helper-3 account))
        )
      )
    )
  )
)

(define-read-only (get-user-zest-helper-1 (account principal))
  (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zststx get-balance account)
)

(define-read-only (get-user-zest-helper-2 (account principal))
  (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zststx-v1-0 get-balance account)
)

(define-read-only (get-user-zest-helper-3 (account principal))
  (contract-call? 'SP2VCQJGH7PHP2DJK7Z0V48AGBHQAW3R3ZW1QF4N.zststx-v1-2 get-balance account)
)

;;-------------------------------------
;; Arkadiko
;;-------------------------------------

(define-read-only (get-user-arkadiko (account principal) (block uint))
  (let (
    (block-hash (unwrap! (get-stacks-block-info? id-header-hash block) (err u666)))
  )
    (if (< block u142425)
      (ok u0)
      (ok (at-block block-hash (get-user-arkadiko-helper account)))
    )
  )
)

(define-read-only (get-user-arkadiko-helper (account principal))
  (let (
    (vault-info (unwrap-panic (contract-call? 'SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-vaults-data-v1-1 get-vault account .ststx-token)))
  )
    (get collateral vault-info)
  )
)

;;-------------------------------------
;; Velar
;;-------------------------------------

(define-read-only (get-user-velar (account principal) (block uint))
  (let (
    (block-hash (unwrap! (get-stacks-block-info? id-header-hash block) (err u666)))
  )
    (if (< block u143600)
      (ok u0)
      (ok (at-block block-hash (get-user-velar-helper account block)))
    )
  )
)

(define-read-only (get-user-velar-helper (account principal) (block uint))
  (let (
    (total-lp-supply (unwrap-panic (contract-call? 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.ststx-aeusdc get-total-supply)))
    (user-wallet (unwrap-panic (contract-call? 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.ststx-aeusdc get-balance account)))
    (user-staked (if (< block u143607)
      u0
      (get end (contract-call? 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-ststx-aeusdc-core get-user-staked account))
    ))
    (user-total (+ user-wallet user-staked))

    (pool-info (contract-call? 'SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-core do-get-pool u8))
  )

    (/ (* user-total (get reserve0 pool-info)) total-lp-supply)
  )
)

;;-------------------------------------
;; Hermetica
;;-------------------------------------

(define-read-only (get-user-hermetica (account principal) (block uint))
  (let (
    (block-hash (unwrap! (get-stacks-block-info? id-header-hash block) (err u666)))
  )
    (if (< block u146526)
      (ok u0)
      (ok (at-block block-hash (get-user-hermetica-helper account)))
    )
  )
)

(define-read-only (get-user-hermetica-helper (account principal))
  (let (
    (token-balance (unwrap-panic (contract-call? 'SPZA22A4D15RKH5G8XDGQ7BPC20Q5JNMH0VQKSR6.token-ststx-earn-v1 get-balance account)))
    (ratio (contract-call? 'SPZA22A4D15RKH5G8XDGQ7BPC20Q5JNMH0VQKSR6.vault-ststx-earn-v1 get-underlying-per-token))
    (wallet-amount (/ (* token-balance ratio) u1000000))

    (queued-amount (get-queued-hermetica-helper account))
  )
    (+ wallet-amount queued-amount)
  )
)

(define-read-only (get-queued-hermetica-helper (account principal))
  (let (
    (deposit-claims (get deposit-claims (contract-call? 'SPZA22A4D15RKH5G8XDGQ7BPC20Q5JNMH0VQKSR6.vault-ststx-earn-v1 get-claims-for-address account)))
  )
    (fold + (map get-claim-iter deposit-claims) u0)
  )
)

(define-read-only (get-claim-iter (claim-id uint))
  (let (
    (claim (contract-call? 'SPZA22A4D15RKH5G8XDGQ7BPC20Q5JNMH0VQKSR6.vault-ststx-earn-v1 get-claim claim-id))
  )
    (get underlying-amount (unwrap-panic claim))
  )
)

Functions (17)

FunctionAccessArgs
get-user-walletread-onlyaccount: principal, block: uint
get-wallet-balanceread-onlyaccount: principal
get-user-bitflowread-onlyaccount: principal, block: uint
get-bitflow-lp-1read-onlyaccount: principal
get-bitflow-lp-2read-onlyaccount: principal
get-user-zestread-onlyaccount: principal, block: uint
get-user-zest-helper-1read-onlyaccount: principal
get-user-zest-helper-2read-onlyaccount: principal
get-user-zest-helper-3read-onlyaccount: principal
get-user-arkadikoread-onlyaccount: principal, block: uint
get-user-arkadiko-helperread-onlyaccount: principal
get-user-velarread-onlyaccount: principal, block: uint
get-user-velar-helperread-onlyaccount: principal, block: uint
get-user-hermeticaread-onlyaccount: principal, block: uint
get-user-hermetica-helperread-onlyaccount: principal
get-queued-hermetica-helperread-onlyaccount: principal
get-claim-iterread-onlyclaim-id: uint