Source Code

;; Stake pool contract
(define-map stakes principal uint)
(define-data-var total-staked uint u0)
(define-data-var reward-rate uint u1)

(define-read-only (get-stake (user principal))
  (default-to u0 (map-get? stakes user))
)

(define-read-only (get-total-staked)
  (var-get total-staked)
)

(define-public (stake (amount uint))
  (begin
    (asserts! (> amount u0) (err u1))
    (let ((current (get-stake tx-sender)))
      (begin
        (map-set stakes tx-sender (+ current amount))
        (ok (var-set total-staked (+ (var-get total-staked) amount)))
      )
    )
  )
)

(define-public (unstake (amount uint))
  (let ((current (get-stake tx-sender)))
    (begin
      (asserts! (>= current amount) (err u2))
      (map-set stakes tx-sender (- current amount))
      (ok (var-set total-staked (- (var-get total-staked) amount)))
    )
  )
)

Functions (4)

FunctionAccessArgs
get-stakeread-onlyuser: principal
get-total-stakedread-only
stakepublicamount: uint
unstakepublicamount: uint