Snippets

chromawallet Mortgage Deed contract 2.0

Created by LudvigOberg last modified
(defcontract mortgage_deed_sub_contract ()
  (fields
      (sellers_bank :type pubkey :init nil)
      (buyers_bank :type pubkey :init nil)
      (land_registry :type pubkey :init nil)
      (future_deed_holders :type (array pubkey) :init nil)
      (future_second_hand_deed_holders :type (array pubkey) :init nil)
      (current_deed_holders :type (array pubkey) :init nil)
      (buyers :type (array pubkey) :init nil)
      (property_owners :type (array pubkey)

      (property_ID :type string :init nil)
      (mortgage_deed_IDs :type string :init nil)
      (deed_amounts :type integer :init nil)
      (second_hand_deed_amounts :type integer :init nil)
      (contract_date :type integer :init nil)
      (aktnummer :type integer :init nil)
      (state :type string :init nil))
      
  (actions

    (intiate ((land-registry-pk pubkey) (sellers-bank-pk pubkey) (future-deed-holders-pk pubkey) (future-second-hand-deed-holders-pk pubkey) (current-deed-holders-pk pubkey) (buyers-local-pk pubkey) (buyers-bank-local-pk pubkey))
        "Invite Land registry, Sellers bank, deed holders,property_owners and buyers"
     (guard
        (signatures property_owners)
        (eql state nil))

    (locally
        (invite land-registry-pk 
                sellers-bank-pk
                future-deed-holders-pk
                future-second-hand-deed-holders-pk
                current-deed-holders-pk
                buyers-local-pk
                buyers-bank-local-pk))
                
    (update land_registry land-registry-pk
            sellers_bank sellers-bank-pk
            future_deed_holders future-deed-holders-pk
            future_second_hand_deed_holders future-second-hand-deed-holders-pk
            current_deed_holders current-deed-holders-pk
            buyers buyers-local-pk
            buyers_bank buyers-bank-local-pk
            state :set_deed-information)
       )

    (set-deed-information
        ((property-id string) (contract-date integer) (deed-amounts integer) (second-hand-deed-amounts integer) (mortgage-deed-ids string) 
            "Input property id, contract date, deed amount and aktnummer" 
      (guard
          (signatures buyers_bank)
          (eql state :set_deed-information)
          (eql property_ID nil)
          (eql deed_amounts nil) 
          (eql contract_date nil)
          (eql second_hand_deed_amounts nil)
          (eql mortgage_deed_IDs nil)
        )
      (update property_ID property-id
          contract_date contract-date
          deed_amounts deed-amounts
          second_hand_deed_amounts second-hand-deed-amounts
          mortgage_deed_ids mortgage-deed-ids
          state :approve-deed-transfer)
    )
          
      (approve-deed-transfer ()
        "actors approve deed transfers"
      (guard
          (signatures buyers_bank sellers_bank future_deed_holders current_deed_holders buyers property_owners )
          (eql state :approve-deed-transfer))
      (update state :land-registry-process-deed)
      )
      
     (land-registry-process-deed (
     (aktnummer-local integer))
        "Land registry sets deed as pending"
      (guard
          (signatures land_registry)
          (eql aktnummer nil)
          (eql state :land-registry-process-deed))
          (update
          aktnummer aktnummer-local
          state :land-registry-set-deed-as-pending)
          )
          
     (land-registry-denies-deed ()
        "Land registry denies deed"
      (guard
          (signatures land_registry)
          (eql state :land-registry-process-deed))
          
          (updatestate :deed-denied)
          )
          
    (land-registry-approves-deed ()
        "Land registry approves deed"
      (guard
          (signatures land_registry)
          (eql state :land-registry-set-deed-as-pending))
          (update state :deed-has-been-approved)
          )
   
))

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.