|
1 |
| -;; This is sample contract found in the sBTC tutorial: https://stacks-network.github.io/sbtc-docs/tutorial.html |
2 |
| -;; It is not directly used in this frontend app but provided here is reference for you to implement |
3 |
| -;; in your local sBTC devenv setup |
4 |
| - |
5 | 1 | ;; Define the contract's data variables
|
6 | 2 | (define-map deposits { owner: principal } { amount: uint })
|
7 |
| -(define-map loans { owner: principal } { amount: uint, last-interaction-block: uint }) |
| 3 | +(define-map loans principal { amount: uint, last-interaction-block: uint }) |
8 | 4 |
|
9 | 5 | (define-data-var total-deposits uint u0)
|
10 | 6 | (define-data-var total-loans uint u0)
|
|
28 | 24 | (let (
|
29 | 25 | (user-deposit (default-to u0 (get amount (map-get? deposits { owner: tx-sender }))))
|
30 | 26 | (allowed-borrow (/ user-deposit u2))
|
31 |
| - (current-loan-details (default-to { amount: u0, last-interaction-block: u0 } (map-get? loans { owner: tx-sender }))) |
| 27 | + (current-loan-details (default-to { amount: u0, last-interaction-block: u0 } (map-get? loans tx-sender ))) |
32 | 28 | (accrued-interest (calculate-accrued-interest (get amount current-loan-details) (get last-interaction-block current-loan-details)))
|
33 | 29 | (total-due (+ (get amount current-loan-details) (unwrap! accrued-interest (err u8))))
|
34 | 30 | (new-loan (+ total-due amount))
|
35 | 31 | )
|
36 | 32 | (asserts! (<= amount allowed-borrow) (err u7))
|
37 | 33 | (try! (contract-call? .asset transfer amount (as-contract tx-sender) tx-sender none))
|
38 |
| - (map-set loans { owner: tx-sender } { amount: new-loan, last-interaction-block: block-height }) |
| 34 | + (map-set loans tx-sender { amount: new-loan, last-interaction-block: block-height }) |
39 | 35 | (ok true)
|
40 | 36 | )
|
41 | 37 | )
|
|
44 | 40 | ;; Users can repay their sBTC loans
|
45 | 41 | (define-public (repay (amount uint))
|
46 | 42 | (let (
|
47 |
| - (current-loan-details (default-to { amount: u0, last-interaction-block: u0 } (map-get? loans { owner: tx-sender }))) |
| 43 | + (current-loan-details (default-to { amount: u0, last-interaction-block: u0 } (map-get? loans tx-sender ))) |
48 | 44 | (accrued-interest (calculate-accrued-interest (get amount current-loan-details) (get last-interaction-block current-loan-details)))
|
49 | 45 | (total-due (+ (get amount current-loan-details) (unwrap! accrued-interest (err u8))))
|
50 | 46 | )
|
51 | 47 | (asserts! (>= total-due amount) (err u4))
|
52 | 48 | (try! (contract-call? .asset transfer amount tx-sender (as-contract tx-sender) none))
|
53 |
| - (map-set loans { owner: tx-sender } { amount: (- total-due amount), last-interaction-block: block-height }) |
| 49 | + (map-set loans tx-sender { amount: (- total-due amount), last-interaction-block: block-height }) |
54 | 50 | (var-set total-loans (- (var-get total-loans) amount))
|
55 | 51 | (ok true)
|
56 | 52 | )
|
|
0 commit comments