Mortgage Loan Origination Distributed Ledger running on Hyperledger Fabric
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
models
test
.eslintrc.yml
README.md
mortgage-network@0.0.1.bna
networkadmin.card
package.json
permissions.acl

README.md

Selling homes the {"Blockchain": "DLT"} way

UML Diagram of the model

UML Design of the Ledger Model

UML Diagram of the model

Read the introduction here at https://www.devb.com/devbpaper-blockchain.php

Install the business application

Download the Mortgage-Network application from github

$ cd ~/fabric-tools

$ curl -LJO https://github.com/snoborder/mortgage-network/archive/master.zip

$ mv mortgage-network-master.zip mortgage-network.zip

$ unzip mortgage-network.zip

Start Hyperledger Fabric

$ ./startFabric.sh

$ ./createPeerAdminCard.sh

$ cd mortgage-network

$ composer runtime install --card PeerAdmin@hlfv1 --businessNetworkName mortgage-network

$ composer network start --card PeerAdmin@hlfv1 --networkAdmin admin --networkAdminEnrollSecret adminpw --archiveFile

$ composer card import --file networkadmin.card

$ composer network ping --card admin@mortgage-network

$ composer-rest-server (enter admin@mortgage-network)

Restarting

$ composer network start --card PeerAdmin@hlfv1 --networkAdmin admin --networkAdminEnrollSecret adminpw --archiveFile mortgage-network@0.0.1.bna --file networkadmin.card

$ composer network ping --card admin@mortgage-network

$ composer-rest-server -c admin@mortgage-network -n never -w true

Use Cases

Seller John Doe owns a Condo on a lake property. Listing agent Jane Smith creates the initial listing of the property. Potential Buyer is Rod Stewart.

Persons

PS001 - Seller - John Doe PS002 - Listing Agent - Jane Smith PS003 - Buyer - Rod Stewart

Party

PT001 - Party of Rod Stewart

PropertyHome

H001 - Condo on Lake

Transaction (CreateULDD)

U001

Data and Posts

Create the Seller, Listing Agent and Buyer

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ "$class": "com.devb.mortgage.Person", \ "personId": "PS001", \ "personRoleType": "SELLER", \ "governmentId": "string", \ "firstName": "John", \ "lastName": "Doe" \ }' 'http://localhost:3000/api/Person'

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ "$class": "com.devb.mortgage.Person", \ "personId": "PS002", \ "personRoleType": "LISTING_AGENT", \ "governmentId": "string", \ "firstName": "Jane", \ "lastName": "Smith" \ }' 'http://localhost:3000/api/Person'

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ "$class": "com.devb.mortgage.Person", \ "personId": "PS003", \ "personRoleType": "BUYER", \ "governmentId": "string", \ "firstName": "Rod", \ "lastName": "Stewart" \ }' 'http://localhost:3000/api/Person'

Data: { "$class": "com.devb.mortgage.Person", "personId": "PS003", "personRoleType": "BUYER", "governmentId": "string", "firstName": "Rod", "lastName": "Stewart" }

Create the Party

Data: { "$class": "com.devb.mortgage.Party", "partyId": "PT001", "persons": ["resource:com.devb.mortgage.Person#P003" ], "contactPoint": [ { "$class": "com.devb.mortgage.ContactPoint", "contactId": "CT001", "contactPoint": "string", "id": "string" } ], "name": "string", "address": [ { "$class": "com.devb.mortgage.Address", "addressId": "string", "addressLine1": "string", "addressLine2": "string", "city": "string", "state": "string", "postalCode": "string", "id": "string" } ], "role": "ASSET_OWNER", "taxIdentifier": "string" }

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ "$class": "com.devb.mortgage.Party", \ "partyId": "PT001", \ "persons": ["resource:com.devb.mortgage.Person#P003" \ ], \ "contactPoint": [ \ { \ "$class": "com.devb.mortgage.ContactPoint", \ "contactId": "CT001", \ "contactPoint": "string", \ "id": "string" \ } \ ], \ "name": "string", \ "address": [ \ { \ "$class": "com.devb.mortgage.Address", \ "addressId": "string", \ "addressLine1": "string", \ "addressLine2": "string", \ "city": "string", \ "state": "string", \ "postalCode": "string", \ "id": "string" \ } \ ], \ "role": "ASSET_OWNER", \ "taxIdentifier": "string" \ }' 'http://localhost:3000/api/Party'

Create the Property

Data: { "$class": "com.devb.mortgage.PropertyHome", "propertyId": "H001", "propertyName": "Great Condo on Lake", "propertyType": "CONDOMINIUM", "propertyState": "PENDING", "isListed": true, "listingAgent": "resource:com.devb.mortgage.Person#002", "address": "63 Lake Shore Road", "city": "Rockaway", "state": "NJ", "zip": "07866", "value": 300000.00, "listingStart": "2018-02-12T20:58:19.955Z", "listingEnd": "2018-02-12T20:58:19.955Z" }

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ "$class": "com.devb.mortgage.PropertyHome", \ "propertyId": "H001", \ "propertyName": "Great Condo on Lake", \ "propertyType": "CONDOMINIUM", \ "propertyState": "PENDING", \ "isListed": true, \ "listingAgent": "resource:com.devb.mortgage.Person#002", \ "address": "63 Lake Shore Road", \ "city": "Rockaway", \ "state": "NJ", \ "zip": "07866", \ "value": 300000.00, \ "listingStart": "2018-02-12T20:58:19.955Z", \ "listingEnd": "2018-02-12T20:58:19.955Z" \ }' 'http://localhost:3000/api/PropertyHome'

Fire the transactions (ULDD Document)

Data: { "$class": "com.devb.mortgage.ULDD30", "loanId": "U001", "loadIdType": "FHA", "aboutVersion": "MISMO 3.0", "dealSets": { "$class": "com.devb.mortgage.DealSets", "dealSetsId": "DLS001", "dealSet": { "$class": "com.devb.mortgage.DealSet", "dealSetId": "DL001", "deal": { "$class": "com.devb.mortgage.Deal", "dealId": "D001", "otherAsset": { "$class": "com.devb.mortgage.OtherAsset", "assetId": "string", "assetName": "string", "id": "string" }, "collateral": "resource:com.devb.mortgage.PropertyHome#H001", "loan": { "$class": "com.devb.mortgage.Loan", "loanId": "L001", "loanType": "ADJUSTMENT", "investorFeature": "string", "loanComments": "string", "loanDetail": "string", "loanLevelCredit": "string", "loanPrograms": "string", "loanState": "NONE", "ltv": 0, "maturity": "string", "mers_registrations": "string", "mi_data": "string", "modifications": "string", "optional_products": "string", "payment": 0, "prepayment_Penalty": "string", "qualification": "string", "servicing": "string", "termsOfMortgage": "string", "underwriting": "string", "id": "string" }, "combinedLTV": 0, "partyRoles": "resource:com.devb.mortgage.Party#PT001", "id": "string" }, "investorFeature": "resource:com.devb.mortgage.Person#PS001", "partyRoles": "resource:com.devb.mortgage.Party#PT001", "pool": "string", "id": "string" }, "partyRoles": "resource:com.devb.mortgage.Party#PT001", "ulddGovtMonitoring": { "$class": "com.devb.mortgage.ULDDGovernmentMonitoring", "ulddGovtId": "string", "hmdaEthnicity": "string", "hmdaEthnicityOrigin": "string", "hmdaRaceDesignation": "string", "hmdaRaceDetail": "string", "id": "string" }, "id": "string" } }

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ "$class": "com.devb.mortgage.ULDD30", \ "loanId": "U001", \ "loadIdType": "FHA", \ "aboutVersion": "MISMO 3.0", \ "dealSets": { \ "$class": "com.devb.mortgage.DealSets", \ "dealSetsId": "DLS001", \ "dealSet": { \ "$class": "com.devb.mortgage.DealSet", \ "dealSetId": "DL001", \ "deal": { \ "$class": "com.devb.mortgage.Deal", \ "dealId": "D001", \ "otherAsset": { \ "$class": "com.devb.mortgage.OtherAsset", \ "assetId": "string", \ "assetName": "string", \ "id": "string" \ }, \ "collateral": "resource:com.devb.mortgage.PropertyHome#H001", \ "loan": { \ "$class": "com.devb.mortgage.Loan", \ "loanId": "L001", \ "loanType": "ADJUSTMENT", \ "investorFeature": "string", \ "loanComments": "string", \ "loanDetail": "string", \ "loanLevelCredit": "string", \ "loanPrograms": "string", \ "loanState": "NONE", \ "ltv": 0, \ "maturity": "string", \ "mers_registrations": "string", \ "mi_data": "string", \ "modifications": "string", \ "optional_products": "string", \ "payment": 0, \ "prepayment_Penalty": "string", \ "qualification": "string", \ "servicing": "string", \ "termsOfMortgage": "string", \ "underwriting": "string", \ "id": "string" \ }, \ "combinedLTV": 0, \ "partyRoles": "resource:com.devb.mortgage.Party#PT001", \ "id": "string" \ }, \ "investorFeature": "resource:com.devb.mortgage.Person#PS001", \ "partyRoles": "resource:com.devb.mortgage.Party#PT001", \ "pool": "string", \ "id": "string" \ }, \ "partyRoles": "resource:com.devb.mortgage.Party#PT001", \ "ulddGovtMonitoring": { \ "$class": "com.devb.mortgage.ULDDGovernmentMonitoring", \ "ulddGovtId": "string", \ "hmdaEthnicity": "string", \ "hmdaEthnicityOrigin": "string", \ "hmdaRaceDesignation": "string", \ "hmdaRaceDetail": "string", \ "id": "string" \ }, \ "id": "string" \ } \ }' 'http://localhost:3000/api/ULDD30'

Congratulations