LCOV - code coverage report
Current view: top level - contracts/extensions - bme010-0-liquidity-contribution.clar (source / functions) Coverage Total Hit
Test: lcov.info Lines: 55.2 % 29 16
Test Date: 2025-11-05 13:50:37 Functions: 20.0 % 5 1
Branches: 0.0 % 4 0

             Branch data     Line data    Source code
       1                 :             : ;; Title: BME010 Reputation-Gated Liquidity Contribution
       2                 :             : ;; Synopsis:
       3                 :             : ;; Accept STX from contributors and reward them with BIGR reputation tokens
       4                 :             : ;; Description:
       5                 :             : ;; Users are rewarded with BIGR by contributing STX to the DAO treasury.
       6                 :             : ;; BIGR is used to claim BIG through the main reputation contract.
       7                 :             : ;; The rate is set by the DAO and can be updated as needed.
       8                 :             : 
       9                 :             : (impl-trait 'SP3JP0N1ZXGASRJ0F7QAHWFPGTVK9T2XNXDB908Z.extension-trait.extension-trait)
      10                 :             : 
      11                 :             : ;; Constants and Errors
      12                 :             : (define-constant err-unauthorised (err u5000))
      13                 :             : (define-constant err-zero-amount (err u5001))
      14                 :             : (define-constant err-minimum-stx (err u5002))
      15                 :             : 
      16                 :             : (define-constant MICROSTX u1000000)
      17                 :             : (define-constant SCALE u1000000)
      18                 :             : 
      19                 :             : ;; 10,10 -- > 1 STX = 1 BIGR, 10 STX = 3 BIGR, 100 STX = 10 BIGR
      20                 :             : (define-data-var stx-to-bigr-rate uint u10)
      21                 :             : (define-data-var stx-to-bigr-dampener uint u10)
      22                 :             : 
      23                 :             : (define-map stx-contributions {who: principal} uint)
      24                 :             : 
      25                 :             : ;; Authorization check
      26                 :           0 : (define-public (is-dao-or-extension)
      27    [ - ][ -  - ]:           0 :   (ok (asserts! (or (is-eq tx-sender .bigmarket-dao) (contract-call? .bigmarket-dao is-extension contract-caller)) err-unauthorised))
      28                 :             : )
      29                 :             : 
      30                 :             : ;; DAO can update the reward rate
      31                 :           0 : (define-public (set-liquidity-reward-params (params {rate: uint, dampener: uint}))
      32                 :           0 :   (begin
      33                 :           0 :     (try! (is-dao-or-extension))
      34                 :           0 :     (var-set stx-to-bigr-rate (get rate params))
      35                 :           0 :     (var-set stx-to-bigr-dampener (get dampener params))
      36                 :           0 :     (ok true)
      37                 :             :   )
      38                 :             : )
      39                 :             : ;; DAO can update the reward dampener
      40                 :           0 : (define-read-only (get-liquidity-reward-params)
      41                 :             :   {
      42                 :           0 :     rate: (var-get stx-to-bigr-rate),
      43                 :           0 :     dampener: (var-get stx-to-bigr-dampener)
      44                 :             :   }
      45                 :             : )
      46                 :             : 
      47                 :           2 : (define-public (contribute-stx (amount uint))
      48                 :           8 :   (let (
      49                 :           8 :         (user tx-sender)
      50                 :           8 :         (rate (var-get stx-to-bigr-rate))
      51                 :           8 :         (dampener (var-get stx-to-bigr-dampener))
      52                 :           8 :         (amount-stx (/ amount MICROSTX))
      53                 :             :         ;;(bigr-earned (/ (* (sqrti amount-stx) rate) dampener))
      54                 :             : 
      55                 :           8 :         (sqrt-amount (sqrti amount-stx))
      56                 :           8 :         (bigr-earned-scaled (/ (* (* sqrt-amount rate) SCALE) dampener))
      57                 :           8 :         (bigr-earned (/ bigr-earned-scaled SCALE))
      58                 :             : 
      59                 :           8 :         (existing (default-to u0 (map-get? stx-contributions {who: user})))
      60                 :             :       )
      61            [ - ]:           8 :     (asserts! (>= amount MICROSTX) err-minimum-stx)
      62                 :             : 
      63                 :           8 :     (try! (stx-transfer? amount user .bme006-0-treasury))
      64                 :           8 :     (map-set stx-contributions {who: user} (+ existing amount))
      65                 :             : 
      66                 :           8 :     (try! (contract-call? .bme030-0-reputation-token mint user u4 bigr-earned))
      67                 :             : 
      68                 :           8 :     (print {event: "liquidity_contribution", from: user, amount: amount, bigr: bigr-earned})
      69                 :           8 :     (ok bigr-earned)
      70                 :             :   )
      71                 :             : )
      72                 :             : 
      73                 :             : ;; Extension trait callback stub
      74                 :           0 : (define-public (callback (sender principal) (memo (buff 34)))
      75                 :           0 :   (ok true)
      76                 :             : )
        

Generated by: LCOV version 2.3.2-1