chore: sponsored services (#733)

* feat: add readonly call for frontend

* refactor: claim

* client can set custom fee, floored by sponsored-fee

* amm-swap-pool-b

* chore: custom fees for sponsored services

---------

Co-authored-by: Kyle Fang <zhigang1992@gmail.com>
This commit is contained in:
fiftyeightandeight
2024-02-15 13:44:06 +04:00
committed by GitHub
parent 936a122f57
commit b0efa27ef8
5 changed files with 291 additions and 18 deletions

View File

@@ -1271,24 +1271,6 @@ depends_on = [ "trait-ownable", "trait-sip-010", "token-leo"]
clarity_version = 2
epoch = 2.4
[contracts.sponsored-amm-swap-pool]
path = 'contracts/sponsored/sponsored-amm-swap-pool.clar'
depends_on= ["amm-swap-pool"]
clarity_version = 2
epoch = 2.4
[contracts.sponsored-swap-helper]
path = 'contracts/sponsored/sponsored-swap-helper.clar'
depends_on= ["swap-helper-v1-03", "swap-helper-bridged-v1-1", "swap-helper-bridged"]
clarity_version = 2
epoch = 2.4
[contracts.sponsored-alex-launchpad-v1-7]
path = 'contracts/sponsored/sponsored-alex-launchpad-v1-7.clar'
depends_on = ["alex-launchpad-v1-7"]
clarity_version = 2
epoch = 2.4
[contracts.alex-launchpad-v1-7]
path = "contracts/pool/alex-launchpad-v1-7.clar"
depends_on = ["trait-sip-010", "token-apower"]
@@ -1322,6 +1304,30 @@ depends_on = []
path = "contracts/helpers/launchpad-buyback-helper-v1-7.clar"
depends_on = ["alex-launchpad-v1-7"]
[contracts.sponsored-amm-swap-pool-v1-1a]
path = 'contracts/sponsored/sponsored-amm-swap-pool-v1-1a.clar'
depends_on= ["amm-swap-pool-v1-1"]
clarity_version = 2
epoch = 2.4
[contracts.sponsored-amm-swap-pool-a]
path = 'contracts/sponsored/sponsored-amm-swap-pool-a.clar'
depends_on= ["amm-swap-pool"]
clarity_version = 2
epoch = 2.4
[contracts.sponsored-swap-helper-a]
path = 'contracts/sponsored/sponsored-swap-helper-a.clar'
depends_on= ["swap-helper-v1-03", "swap-helper-bridged-v1-1", "swap-helper-bridged"]
clarity_version = 2
epoch = 2.4
[contracts.sponsored-alex-launchpad-v1-7a]
path = 'contracts/sponsored/sponsored-alex-launchpad-v1-7a.clar'
depends_on = ["alex-launchpad-v1-7"]
clarity_version = 2
epoch = 2.4
[contracts.token-wlong]
path = "contracts/wrapped-token/token-wlong.clar"
depends_on = [ "trait-ownable", "trait-sip-010"]

View File

@@ -0,0 +1,43 @@
(use-trait ft-trait .trait-sip-010.sip-010-trait)
(define-constant err-not-authorized (err u1000))
(define-data-var contract-owner principal tx-sender)
(define-data-var sponsored-fee uint u0)
;; read-only calls
(define-read-only (get-sponsored-fee)
(var-get sponsored-fee)
)
;; governance calls
(define-public (set-sponsored-fee (fee uint))
(begin
(try! (check-is-owner))
(ok (var-set sponsored-fee fee))))
;; sponsored / public calls
(define-public (register (launch-id uint) (payment-amount uint) (payment-token-trait <ft-trait>) (fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .alex-launchpad-v1-7 register launch-id payment-amount payment-token-trait)))
;; private calls
(define-private (check-is-owner)
(ok (asserts! (is-eq tx-sender (var-get contract-owner)) err-not-authorized))
)
(define-private (pay-to-sponsor (fee (optional uint)))
(match tx-sponsor?
sponsor
(let (
(fee-floored (match fee some-value (max some-value (var-get sponsored-fee)) (var-get sponsored-fee))))
(ok (and (> fee-floored u0) (try! (contract-call? .token-abtc transfer-fixed fee-floored tx-sender sponsor none)))))
(ok false)))
(define-private (max (a uint) (b uint))
(if (<= a b) b a))

View File

@@ -0,0 +1,75 @@
(use-trait ft-trait .trait-sip-010.sip-010-trait)
(define-constant err-not-authorized (err u1000))
(define-data-var contract-owner principal tx-sender)
(define-data-var sponsored-fee uint u0)
;; read-only calls
(define-read-only (get-sponsored-fee)
(var-get sponsored-fee))
;; governance calls
(define-public (set-sponsored-fee (fee uint))
(begin
(try! (check-is-owner))
(ok (var-set sponsored-fee fee))))
;; sponsored / public calls
(define-public (reduce-position (token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (factor uint) (percent uint) (fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .amm-swap-pool reduce-position token-x-trait token-y-trait factor percent)))
(define-public (swap-helper (token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (factor uint) (dx uint) (min-dy (optional uint)) (fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .amm-swap-pool swap-helper token-x-trait token-y-trait factor dx min-dy)))
(define-public (swap-helper-a (token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (token-z-trait <ft-trait>) (factor-x uint) (factor-y uint) (dx uint) (min-dz (optional uint)) (fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .amm-swap-pool swap-helper-a token-x-trait token-y-trait token-z-trait factor-x factor-y dx min-dz)))
(define-public (swap-helper-b
(token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (token-z-trait <ft-trait>) (token-w-trait <ft-trait>)
(factor-x uint) (factor-y uint) (factor-z uint)
(dx uint) (min-dw (optional uint))
(fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .amm-swap-pool swap-helper-b token-x-trait token-y-trait token-z-trait token-w-trait factor-x factor-y factor-z dx min-dw)))
(define-public (swap-helper-c
(token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (token-z-trait <ft-trait>) (token-w-trait <ft-trait>) (token-v-trait <ft-trait>)
(factor-x uint) (factor-y uint) (factor-z uint) (factor-w uint)
(dx uint) (min-dv (optional uint))
(fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .amm-swap-pool swap-helper-c token-x-trait token-y-trait token-z-trait token-w-trait token-v-trait factor-x factor-y factor-z factor-w dx min-dv)
)
)
;; private calls
(define-private (check-is-owner)
(ok (asserts! (is-eq tx-sender (var-get contract-owner)) err-not-authorized))
)
(define-private (pay-to-sponsor (fee (optional uint)))
(match tx-sponsor?
sponsor
(let (
(fee-floored (match fee some-value (max some-value (var-get sponsored-fee)) (var-get sponsored-fee))))
(ok (and (> fee-floored u0) (try! (contract-call? .token-abtc transfer-fixed fee-floored tx-sender sponsor none)))))
(ok false)))
(define-private (min (a uint) (b uint))
(if (> a b) b a))
(define-private (max (a uint) (b uint))
(if (<= a b) b a))

View File

@@ -0,0 +1,82 @@
(use-trait ft-trait .trait-sip-010.sip-010-trait)
(define-constant err-not-authorized (err u1000))
(define-data-var contract-owner principal tx-sender)
(define-data-var sponsored-fee uint u0)
;; read-only calls
(define-read-only (get-sponsored-fee)
(var-get sponsored-fee))
;; governance calls
(define-public (set-sponsored-fee (fee uint))
(begin
(try! (check-is-owner))
(ok (var-set sponsored-fee fee))))
;; sponsored / public calls
(define-public (create-pool (token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (factor uint) (pool-owner principal) (dx uint) (dy uint) (fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .amm-swap-pool-v1-1 create-pool token-x-trait token-y-trait factor pool-owner dx dy)))
(define-public (add-to-position (token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (factor uint) (dx uint) (max-dy (optional uint)) (fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .amm-swap-pool-v1-1 add-to-position token-x-trait token-y-trait factor dx max-dy)))
(define-public (reduce-position (token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (factor uint) (percent uint) (fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .amm-swap-pool-v1-1 reduce-position token-x-trait token-y-trait factor percent)))
(define-public (swap-helper (token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (factor uint) (dx uint) (min-dy (optional uint)) (fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .amm-swap-pool-v1-1 swap-helper token-x-trait token-y-trait factor dx min-dy)))
(define-public (swap-helper-a (token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (token-z-trait <ft-trait>) (factor-x uint) (factor-y uint) (dx uint) (min-dz (optional uint)) (fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .amm-swap-pool-v1-1 swap-helper-a token-x-trait token-y-trait token-z-trait factor-x factor-y dx min-dz)))
(define-public (swap-helper-b
(token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (token-z-trait <ft-trait>) (token-w-trait <ft-trait>)
(factor-x uint) (factor-y uint) (factor-z uint)
(dx uint) (min-dw (optional uint))
(fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .amm-swap-pool-v1-1 swap-helper-b token-x-trait token-y-trait token-z-trait token-w-trait factor-x factor-y factor-z dx min-dw)))
(define-public (swap-helper-c
(token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (token-z-trait <ft-trait>) (token-w-trait <ft-trait>) (token-v-trait <ft-trait>)
(factor-x uint) (factor-y uint) (factor-z uint) (factor-w uint)
(dx uint) (min-dv (optional uint))
(fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .amm-swap-pool-v1-1 swap-helper-c token-x-trait token-y-trait token-z-trait token-w-trait token-v-trait factor-x factor-y factor-z factor-w dx min-dv)))
;; private calls
(define-private (check-is-owner)
(ok (asserts! (is-eq tx-sender (var-get contract-owner)) err-not-authorized)))
(define-private (pay-to-sponsor (fee (optional uint)))
(match tx-sponsor?
sponsor
(let (
(fee-floored (match fee some-value (max some-value (var-get sponsored-fee)) (var-get sponsored-fee))))
(ok (and (> fee-floored u0) (try! (contract-call? .token-abtc transfer-fixed fee-floored tx-sender sponsor none)))))
(ok false)))
(define-private (min (a uint) (b uint))
(if (> a b) b a))
(define-private (max (a uint) (b uint))
(if (<= a b) b a))

View File

@@ -0,0 +1,67 @@
(use-trait ft-trait .trait-sip-010.sip-010-trait)
(define-constant err-not-authorized (err u1000))
(define-data-var contract-owner principal tx-sender)
(define-data-var sponsored-fee uint u0)
;; read-only calls
(define-read-only (get-sponsored-fee)
(var-get sponsored-fee)
)
;; governance calls
(define-public (set-sponsored-fee (fee uint))
(begin
(try! (check-is-owner))
(ok (var-set sponsored-fee fee))))
;; sponsored / public calls
(define-public (swap-helper-v1-03 (token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (dx uint) (min-dy (optional uint)) (fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .swap-helper-v1-03 swap-helper token-x-trait token-y-trait dx min-dy)))
(define-public (swap-helper-to-amm-v1-1 (token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (token-z-trait <ft-trait>) (factor-y uint) (dx uint) (min-dz (optional uint))
(fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .swap-helper-bridged-v1-1 swap-helper-to-amm token-x-trait token-y-trait token-z-trait factor-y dx min-dz)))
(define-public (swap-helper-from-amm-v1-1 (token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (token-z-trait <ft-trait>) (factor-x uint) (dx uint) (min-dz (optional uint))
(fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .swap-helper-bridged-v1-1 swap-helper-from-amm token-x-trait token-y-trait token-z-trait factor-x dx min-dz)))
(define-public (swap-helper-to-amm (token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (token-z-trait <ft-trait>) (factor-y uint) (dx uint) (min-dz (optional uint))
(fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .swap-helper-bridged swap-helper-to-amm token-x-trait token-y-trait token-z-trait factor-y dx min-dz)))
(define-public (swap-helper-from-amm (token-x-trait <ft-trait>) (token-y-trait <ft-trait>) (token-z-trait <ft-trait>) (factor-x uint) (dx uint) (min-dz (optional uint))
(fee (optional uint)))
(begin
(try! (pay-to-sponsor fee))
(contract-call? .swap-helper-bridged swap-helper-from-amm token-x-trait token-y-trait token-z-trait factor-x dx min-dz)))
;; private calls
(define-private (check-is-owner)
(ok (asserts! (is-eq tx-sender (var-get contract-owner)) err-not-authorized))
)
(define-private (pay-to-sponsor (fee (optional uint)))
(match tx-sponsor?
sponsor
(let (
(fee-floored (match fee some-value (max some-value (var-get sponsored-fee)) (var-get sponsored-fee))))
(ok (and (> fee-floored u0) (try! (contract-call? .token-abtc transfer-fixed fee-floored tx-sender sponsor none)))))
(ok false)))
(define-private (max (a uint) (b uint))
(if (<= a b) b a))