Source Code

;; Staking Pool V38 - DeFi Contract
;; Generated by Clarity Hub
;; Category: DeFi


(define-constant ERR_UNAUTHORIZED (err u100))
(define-constant ERR_NOT_OWNER (err u101))
(define-constant ERR_INVALID_AMOUNT (err u102))
(define-constant ERR_ALREADY_EXISTS (err u103))
(define-constant ERR_NOT_FOUND (err u104))


(define-data-var contract-owner principal tx-sender)
(define-public (set-owner (new-owner principal))
    (begin
        (asserts! (is-eq tx-sender (var-get contract-owner)) ERR_NOT_OWNER)
        (var-set contract-owner new-owner)
        (ok true))
)


(define-map stakes principal { amount: uint, staked-at: uint })
(define-constant REWARD_RATE u10) ;; 10% per 100 blocks (example)
(define-public (stake (amount uint))
    (begin
        (try! (stx-transfer? amount tx-sender (as-contract tx-sender)))
        (map-set stakes tx-sender { amount: amount, staked-at: block-height })
        (ok true)
    )
)
(define-public (unstake)
    (let ((stake-info (unwrap! (map-get? stakes tx-sender) ERR_NOT_FOUND)))
        (as-contract (stx-transfer? (get amount stake-info) tx-sender tx-sender))
    )
)

Functions (3)

FunctionAccessArgs
set-ownerpublicnew-owner: principal
stakepublicamount: uint
unstakepublic