| Transaction Data | {:origin #133,:sequence 1,:command (deploy (quote (do (def next-id 1) (def registry {}) (def ownership {}) (defn ^{:callable true} register [user-id metadata-hash title-hint] (let [id next-id cert {:timestamp *timestamp*,:user-id user-id,:registered-by *caller*,:metadata-hash metadata-hash,:title title-hint,:id id}] (set! next-id (inc id)) (set! registry (assoc registry id cert)) (set! ownership (assoc ownership user-id (conj (or (get ownership user-id) #{}) id))) cert)) (defn ^{:callable true} lookup [id] (get registry id)) (defn ^{:callable true} transfer-cert [id new-user-id] (let [cert (get registry id)] (when (nil? cert) (fail :NOT-FOUND "Certificate does not exist")) (let [old-user (get cert :user-id) updated (assoc cert :user-id new-user-id)] (set! registry (assoc registry id updated)) (set! ownership (assoc ownership old-user (disj (get ownership old-user) id))) (set! ownership (assoc ownership new-user-id (conj (or (get ownership new-user-id) #{}) id))) updated))) (defn ^{:callable true} owned-by [user-id] (or (get ownership user-id) #{})) (defn ^{:callable true} total-issued [] (dec next-id)) (defn ^{:callable true} update-cert [id new-metadata-hash new-title] (let [cert (get registry id)] (when (nil? cert) (fail :NOT-FOUND "Certificate does not exist")) (let [updated (assoc cert :metadata-hash new-metadata-hash :title new-title :updated-at *timestamp*)] (set! registry (assoc registry id updated)) updated))) (defn ^{:callable true} init-next-id [start-id] (set! next-id start-id) start-id))))} | CVX representation of the transaction |