block-info-velar-nakamoto-v1

SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG

Source Code

;; @contract Block Info Velar Nakamoto
;; @version 1
;;
;; Contract to get info stSTX/STX on Velar at given block

(define-public (get-user-velar (account principal) (block uint))
  (let (
    (ratio (try! (contract-call? .data-core-v1 get-stx-per-ststx .reserve-v1)))
    (block-hash (unwrap! (get-stacks-block-info? id-header-hash block) (err u666)))
  )
    (if (< block u243045)
      (ok u0)
      (ok (at-block block-hash (get-user-velar-helper account block ratio)))
    )
  )
)

(define-read-only (get-user-velar-helper (account principal) (block uint) (ratio uint))
  (let (
    (total-lp-supply (unwrap-panic (contract-call? 'SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.curve-lp-token-v1_0_0_ststx-0001 get-total-supply)))
    (user-wallet (unwrap-panic (contract-call? 'SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.curve-lp-token-v1_0_0_ststx-0001 get-balance account)))
    (user-staked (if (< block u243045)
      u0
      (get end (contract-call? 'SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.curve-farming-core-v1_1_1_ststx-0001 get-user-staked account))
    ))
    (pool-info (contract-call? 'SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.curve-pool-v1_0_0_ststx-0001 do-get-pool))
    (reserve0 (get reserve0 pool-info))
    (reserve0-ststx (/ (* reserve0 u1000000) ratio))
    (reserve1 (get reserve1 pool-info))
    (total-in-pool (+ reserve0-ststx reserve1))

    (user-total (+ user-wallet user-staked))
  )
    (/ (* user-total total-in-pool) total-lp-supply)
  )
)

Functions (2)

FunctionAccessArgs
get-user-velarpublicaccount: principal, block: uint
get-user-velar-helperread-onlyaccount: principal, block: uint, ratio: uint