Source Code

(define-fungible-token btf-token)
(define-constant ERR-PERMISSION-DENIED (err u1000)) 
(define-constant ERR-PRECONDITION-FAILED (err u1001)) 
(define-constant ERR-CONTRACT-NOT-FOUND (err u1002)) 
(define-constant ERR-NOT-TOKEN-OWNER (err u1003)) 
(define-constant ERR-TOKEN-NOT-EXIST (err u1004)) 
(define-data-var token-name (string-ascii 32) "BitFund")
(define-data-var token-symbol (string-ascii 10) "BTF")
(define-data-var token-uri (optional (string-utf8 256)) (some u"https://storage.googleapis.com/bitfund/btf-token-metadata.json"))
(define-constant token-decimals u8) 
(define-constant ERR-CONTRACT-LOCKED (err u1999))
(define-public (mint (amount uint) (recipient principal))
    (begin
        (asserts! (as-contract (contract-call? .btf-protocol-cpc-001 is-contract-unlocked tx-sender)) ERR-CONTRACT-LOCKED)
        (asserts! (contract-call? .btf-protocol-cpc-001 has-permission contract-caller u1) ERR-PERMISSION-DENIED)
        (ft-mint? btf-token amount recipient)
    )
)
(define-public (transfer (amount uint) (sender principal) (recipient principal) (memo (optional (buff 34))))
    (begin
        (asserts! (is-eq tx-sender sender) ERR-NOT-TOKEN-OWNER)
        (try! (ft-transfer? btf-token amount sender recipient))
        (match memo to-print (print to-print) 0x)
        (ok true)
    ))
(define-read-only (get-balance (owner principal))
    (ok (ft-get-balance btf-token owner)))
(define-read-only (get-total-supply)
    (ok (ft-get-supply btf-token)))
(define-read-only (get-name)
	(ok (var-get token-name))
)
(define-read-only (get-symbol)
	(ok (var-get token-symbol))
)
(define-read-only (get-decimals)
	(ok token-decimals)
)
(define-read-only (get-token-uri)
	(ok (var-get token-uri))
)
(define-public (set-token-uri (new-uri (optional (string-utf8 256))))
    (begin
        (asserts! (as-contract (contract-call? .btf-protocol-cpc-001 is-contract-unlocked tx-sender)) ERR-CONTRACT-LOCKED)
        (asserts! (contract-call? .btf-protocol-cpc-001 has-permission contract-caller u10) ERR-PERMISSION-DENIED)
        (var-set token-uri new-uri)
        (ok true)
    ))
(define-public (set-token-name (new-name (string-ascii 32)))
    (begin
        (asserts! (as-contract (contract-call? .btf-protocol-cpc-001 is-contract-unlocked tx-sender)) ERR-CONTRACT-LOCKED)
        (asserts! (contract-call? .btf-protocol-cpc-001 has-permission contract-caller u10) ERR-PERMISSION-DENIED)
        (var-set token-name new-name)
        (ok true)
    ))
(define-public (burn (amount uint))
    (begin
        (asserts! (as-contract (contract-call? .btf-protocol-cpc-001 is-contract-unlocked tx-sender)) ERR-CONTRACT-LOCKED)
        (asserts! (> amount u0) ERR-PRECONDITION-FAILED)
        (ft-burn? btf-token amount tx-sender)
    ))

Functions (11)

FunctionAccessArgs
mintpublicamount: uint, recipient: principal
transferpublicamount: uint, sender: principal, recipient: principal, memo: (optional (buff 34
get-balanceread-onlyowner: principal
get-total-supplyread-only
get-nameread-only
get-symbolread-only
get-decimalsread-only
get-token-uriread-only
set-token-uripublicnew-uri: (optional (string-utf8 256
set-token-namepublicnew-name: (string-ascii 32
burnpublicamount: uint