Rapid-fire tech tour!

https://spritely.institute

Christine's background

Randy's background

Spritely's higher-level goals

Goblins: distributed, cooperative, transactional programming

Distributed security you can understand

  • If you don't have it, you can't use it
  • It's just argument passing!

Transactionality

(define (^mint _bcom)
  (define-values (decr-seal decr-unseal _decr-sealed?)
    (make-sealer-triplet 'mint))
  (define (^purse _bcom initial-balance)
    (define-cell balance
      initial-balance)
    (define (<=-balance? amount)
      (<= amount (#,($) balance)))
    (define/contract (decr amount)
      (-> (and/c integer? (>=/c 0) <=-balance?)
          any/c)
      (#,($) balance (- (#,($) balance) amount)))
    (define/contract (deposit-method amount src)
      (-> (and/c integer? (>=/c 0)) any/c any/c)
      ((decr-unseal (#,($) src 'get-decr)) amount)
      (#,($) balance (+ (#,($) balance) amount)))
    (methods
     [(get-balance) (#,($) balance)]
     [(sprout) (spawn ^purse 0)]
     [deposit deposit-method]
     [(get-decr) (decr-seal decr)]))
  (define/contract (fiat-make-purse initial-balance)
    (-> (and/c integer? (>=/c 0)) any/c)
    (spawn ^purse initial-balance))
  (methods [new-purse fiat-make-purse]))

goblin-chat demo

Thirsty for more?

Let's make a better future together!