Professional Documents
Culture Documents
A Capstone Report
presented to the
In Partial Fulfillment
Bachelor of Science
in
Computer Science
by
Summer 2021
ii
Copyright © 2021
by
Blokshare
by
The purpose of this project is to develop a platform that creates an alternative method for
internet users to share files between them. The main goal of this project is to develop a reliable
method of sharing files that is trusted in maintaining the file’s authenticity and reliability for the
receiving user of the shared file. This will be achieved by designing and implementing
technology that can be used to create a decentralized system that is not owned or controlled by
The scope of this project has limited the use case of this platform to the sharing of college
transcripts and degree verifications between students, schools, and organizations. Transferring of
transcripts and sending degree verifications to potential employers has introduced challenges for
current and former students. Blokshare aims at making this process easier on all parties involved
all while maintaining, if not improving, the authenticity and reliability of the current processes
Table of Contents
PAGE
PAGE
Part I
Introduction
sending text messages, visiting social media sites, sending email, and browsing the web are tasks
that people take part in daily with their cell phones and computers. With the growth of
technology comes the increase of security risks and vulnerability for the users of this technology.
Emails, online accounts, and other services are at risk of becoming compromised. Due to recent
breaches of large and trusted institutions, it is becoming more complicated to trust who we think
is on the other side and validate the legitimacy of the different forms of electronic
communication we are receiving. We need a way that we can share forms of electronic
communication, have the ability to validate that what we have received originated from the
person that sent it to us, that we are the intended recipient, and that the data is in its original state
and has not been tampered with. These needs are paving the way for a more decentralized
Most file-sharing systems rely on a kind of cloud data storage. With the growth of
technology, cloud storage has become one of the most convenient methods to store data. Cloud
data is typically stored in a centralized manner. Centralized systems also pose a single point of
failure and, most of the time, lead to data unavailability and eventually to collapse the system.
Data is the basic building block for any technological system and should be handled in a
secure way. If this does not happen, then it will lead to insecurities and threats to existing
file-sharing systems. It is essential to provide users with a system that can overcome these
Issue:
Due to recent events, we’ve seen the need to move more processes into the digital world.
The increase in cybercrime such as data breaches, ransomware, email phishing, and others has
eroded the trust we once had in large centralized institutions. We’ve seen data breaches from
Equifax and Experian, major credit reporting agencies that exposed the personal data of millions
of people. The Solarwinds hack exposed thousands of government agencies and corporations to
hackers with unknown consequences. Also, with centralized systems, there can be a concern
about availability. The user’s access to data that is stored in this method can easily be disrupted
with a distributed denial-of-service (DDoS) attack. This can lead to unavailability and reliability
of data.
For most people, it is common now to receive an email with an important document
attached. At times the process is more involved; we must print, sign, and return. But, with the
constant threat of phishing, can we trust that we know who is on the other side of electronic
communications? Can we trust that our critical private documents will be available to us at a
moment's notice?
Blokshare will help with the reliability and trust of the data being shared between users.
This system aims to create a web application that allows users to share files or information in a
secure and trusted way. This system will perform data validation, and transactions will be
completed against a distributed blockchain technology. Users will be able to share data with
other users. Only those authenticated users can access that particular data by successfully
3
decrypting the cryptographic hash key stored on the blockchain. With Blokshare, data will be
stored in a decentralized file storage system by replicating it across redundant nodes. This
method helps overcome the potential security risks associated with a traditional cloud data
storage solution.
Goals
blockchain technology.
● Give users peace of mind that the files they are receiving have not been intercepted and
● Remove the “middleman” that is present with the current centralized authentication
systems.
● Allow users to upload and share secure and encrypted documents with other users.
● Only originating users and designated users will have the ability to download and decrypt
Objectives
● Create a simple decentralized file-sharing protocol to store and retrieve files from the
network.
● Develop a simple user interface using React to allow users to upload, review, and store
Several stakeholders will benefit from the completion of a product resembling the one
that is being developed in this project. The span of stakeholders that could benefit from a product
such as Blokshare is quite broad. In this project, the scope will be reduced and limited to one
targeted group of stakeholders that would benefit from a particular use case of this type of
technology. They are part of the process for transmission and sharing of college transcripts and
degrees needed by schools that students are trying to transfer their credits to, or for potential
employers that need verification of degrees as a condition of hire. Each of these stakeholders has
a different position, stance, and benefit from what they would gain by using this product directly
or indirectly. These stakeholders include the individuals that could be classified as students,
Today students have several ways that they can request the transfer of transcripts. One
way is by picking up officially sealed transcripts from one school and dropping them off at
another. The other method is an electronic request that is completed by accessing a centralized
service. Blokshare would take away any manual process that a student would have to complete
and migrate to a decentralized system that they could rely on. This method of transfer would
decrease the steps needed in the process and would speed up the time that a student normally
must wait for either the sending or receiving of transcripts between schools.
Schools today receive electronic, paper, and in-person requests for official transcript
prints in paper or electronic format that can be received by other schools. Blokshare would allow
for a more streamlined request for transcripts to be received by schools. It would alleviate the
5
need for paper and the questioning of the reliability of the transcripts that are received. It would
cut down on the cost of materials needed to print and send transcripts to the necessary parties.
The queue of paper transcripts to be entered would change to a new method of validation and
electronic processing of transcripts into the appropriate college systems. This is in replacement
of the task of a person completing data entry that can be prone to errors.
Companies that are potential employers for a student that needs verification of a degree
would also gain benefits from Blokshare and this reliable method of sharing data. The student or
company would not have to struggle with release forms such that the potential employer has the
right to request the verification of the degree. The student would have the ability to easily request
the proof that needs to be shared with the company. Students can be given on-demand access to
their degrees and authorize the automatic sending and transfer to the receiving individual without
Evidence of Need
As the world’s paperwork becomes more digitized, the increased convenience comes at a
risk. The same advances in technology that give us the ability to digitize our world also give bad
actors the opportunity and tools to commit fraud. Scans of paper documents are easy to edit
using tools like Photoshop. Digital or electronic documents can also easily be altered without
anyone being the wiser. For this reason trusted third parties are required to authenticate the
integrity of digital documents. Our project is needed to facilitate the transition to our digitized
world without the cost or hassle of third parties when sharing documents. A great example is the
transcript and degree verification. For a student to transfer credits between schools they must
first get a transcript for the school they are transferring from and send it to the school they are
transferring to. Many times in order to guarantee the authenticity of transcripts schools use a
6
trusted third party. A similar process is used for credentials/ degree verification. This platform
would facilitate the sharing of transcripts, credentials, as well as provide authentication directly
Feasibility
authentication and distributed storage solutions. One company using blockchain technology for
file storage purposes is Filecoin. Filecoin is a similar product to what is defined by this project.
Filecoin is a platform by Protocol Labs that is decentralized and used for data storage. The
purpose of Filecoin was to create an efficient solution for storing data based on the IPFS
decentralized network (“How Filecoin Works” 2021). Protocol Labs also developed the IPFS
product to substitute the existing HTTP protocol with a content-addressable peer-to-peer method
of storing and sharing hypermedia in a distributed file system. Unlike Filecoin, blokshare does
not have a cryptocurrency tied to file storage. Another significant difference is that Blokshare is
for securely sharing private files and not storing large files.
Another company using blockchain technology for secure record-keeping is the software
company Guardtime. However, instead of observing the traditional centralized system, the
company uses blockchain technology and distributes data to different nodes across the system.
They have various products, including cybersecurity, patient health care record auditing, and
supply chain solutions (“Guardtime: the world’s largest blockchain company” 2017). The main
difference between Blokshare and the Guardtime products is the target audience. Guardtime
and decentralized file-sharing solution. The platform enables users to have more control over
their sensitive files and provides tools to quickly share and validate shared files. For example, it
will allow students to easily share degree verification and transcript without the need for
third-party intermediaries.
Part II
Design Requirements
Functional Decomposition
The design team developed the user stories because they fall into the target audience for
the Blokshare platform. From the user stories, the team determined the project's functional
requirements.
Functional Requirements
Users will be able to create a file cube.
Users will be able to log in to their file cube.
Users will be able to select a local file and upload it to their file cube.
Users will be able to see a list of all the files in their file cube.
Users will be able to preview a file from their file cube in the browser.
User will share a file with another user using the user's cube address or public key.
Users will verify authenticity by viewing the hash of the current file and the hash
created in the storing transaction.
Files will be encrypted before being stored in the distributed database.
Transactions will be displayed after a file is stored, shared, or deleted.
A unique transaction will be created when a file is stored, shared, or deleted.
File validations will be performed to limit file size and type.
8
● The team selected Python as the preferred backend programming language because of its
● Due to the project's time constraints, the team opted to use third-party services to handle
container.
Final Deliverables
The final deliverables for this project are the source code for Blokshare. The deliverables
include the blockchain, file system, and web application. In addition, the development team has
included access to the working prototype of the Blokshare platform, sample accounts, and data
The development team used the agile methodology to create Blokshare—small sprints
allowed for a more flexible method for software development. In addition, the smaller sprints
9
helped the development team focus on smaller milestones for the project and change priorities
Blokshare is based on the decentralized concept of the blockchain that is typically used in
cryptocurrency. Therefore, with the development of Blokshare also comes the growth of
technology along with the iterative agile process allowed the development team to enhance
There will be different technologies and concepts that were combined to achieve the
anticipated result of Blokshare. These include the data structure idea of a blockchain built using
the Python programming language. Python was the primary language of the backend. Python
libraries were used for different aspects of the project as needed. These include Flask as a
webserver to build a REST API, Pytest used to create automated tests in code, and cryptography
libraries to create public and private keys used by users to secure and access privileged
information. Blokshare uses a PubSub network for communication between the Blokshare nodes
to publish additions to the chain and sync the blockchain data at each node.
Ethical Considerations
Blokshare was built as a product using blockchain as the underlying foundation. With the term
system that many individuals associate with the exchange of currency-related illegal activity.
Hackers use cryptocurrencies as a form of ransom payment against companies and individuals
because it is deemed untraceable and typically cannot be tracked back to the user. Individuals
10
need not be considered with any illegal activities being associated with Blokshare. Blokshare is
not a system that is designed for the exchange of currencies between individuals or companies.
Ethical concerns could also include how the implementation of this system would affect potential
users required to use it. The future users of the product could be currently underprivileged or
individuals that do not have easy access to computers and other electronic equipment or have a
disability that prevents them from using either. The scope of this project limits Blokshare to
current and former students at colleges. Limiting the use to college students raises concern about
how the implementation of Blokshare will affect these underprivileged college students.
Colleges, being the hosts of Blokshare, would develop solutions to help these disadvantaged
individuals. They would provide students a place to access the system on college campuses.
They would also set up a program that college faculty would have the ability to assist individuals
Legal Considerations
The user privacy-oriented design of the Blokshare file sharing platform guarantees that
the service provider has no visibility of what users store on the network. This key feature of the
platform creates a major legal consideration for Blokshare. Not knowing what users store on the
network means that there is a possibility that users may share illegal content, such as copyrighted
materials, without the platform's knowledge. The intended use of Blokshare is mainly for sharing
documents. Document file sizes are generally small. To mitigate the risk of sharing copyrighted
content, Blokshare will impose a file size limitation. Another deterrent for sharing illegal content
11
Blokshare must take proper steps before and after the signing process to adhere to the ESign Act
of 2000 (Electronic Signatures in Global and National Commerce Act, n.d.) and other such
electronic signature laws. Such actions include acquiring user consent to use electronic
signatures and providing all signers with copies of signed documents. These requirements are
crucial to guarantee the validity of the platform's electronic signatures under law.
Blokshare must also consider the handling of private information protected by law, such
as with the use case of sharing college transcripts. The FERPA (Family Educational Rights and
Privacy Act (FERPA), n.d.) act protects the privacy of educational information. The FERPA act
limits who can access academic records and for what reasons with and without the parent and
eligible student consent. The individual users of Blokshare grant and revoke access to shared
documents. Therefore, there may be a need to add the option to limit the number of times a user
Part III
Timeline and Budget
The project team developed Blokshare using the agile software development
methodology. The original timeline consisted of five seven-day sprints. As shown below (Figure
1), each sprint encompasses fundamental components of the platform. By using the iterative
agile process, there was a working prototype of Blokshare after each sprint. The project had no
budget but very limited time constraints. Unfortunately, the development team was unable to
12
meet the self-imposed deadline of July 29th. Development spanned into August, which caused
Figure 1: Milestones
Usability testing was completed on Blokshare to assist with completing evaluations of the
product. For usability testing, focus groups and individual testing was completed. Focus group
and individual members were tasked with using Blokshare to upload a file to their cube, viewing
files in their cube, and sharing their file in their cubes to other member's cubes. Focus group tests
were completed in person and remotely using screen share platforms. Users were mostly able to
complete all usability tests that they were tasked with. These tasks were completed with limited
help mostly because of the users not fully understanding the product.
Suggestions for improvement of Blokshare were generated by the focus group usability
testing. Most users suggested improvements in the user interface and features. The user interface
was not as intuitive that the users found confusing. Another suggestion was for additional
features to be built into the web user interface that would interact with the Blokshare backend.
These features would include the user the ability to create their own new file cubes if needed.
13
Another recommendation from the focus group users was to create a mobile app that would be
able to interact with Blokshare. Most of the focus group users stated the increased use of their
mobile phone over their computer in their personal life. This is because of the ease of ability to
Final Implementation
The project consists of three major components, the React frontend, backend, and a
docker container that hosts the mongo database. To facilitate the deployment and scaling of the
From the frontend, when a new user registers, the platform creates a unique personal file
cube. A user is limited to blockchain-related functionality without signing in, such as viewing the
transaction pool and mining new blocks. Upon signing in, the user will access the platform's full
functionality, such as viewing the files in their file cube and updating their user-specific address
book.
All of the functionality of Blokshare resides in the backend. The team used the Python
micro web server Flask to create the platform's API. Due to the encryption size limitations of
asymmetric encryption, Blokshare uses both asymmetric RSA public/private key encryption and
symmetric Fernet encryption. Symmetric encryption is used to encrypt files before storing them
in the distributed mongo database and the file information stored in the blockchain. Then the key
generated for symmetric encryption is encrypted using the recipient's public key and stored on
the blockchain.
connecting to the network, the node requests the current blockchain from a master node. The
blockchain uses transactions to store important file and sharing information. These transactions
are automatically generated when a user performs a file-related task, such as storing or sharing a
file. After a transaction is generated it is broadcasted throughout the network using PubNub.
Nodes connected to the network receive the transaction, validate it, and add it to their transaction
pool. Because file access information is stored on the blockchain, a file is not immediately
15
available to a user after it is stored or shared. Instead, the file becomes available after a block
immutability, transaction validation, and block validation. When created, transactions are signed
using the sender's private key, which guarantees that malicious users cannot alter file information
stored on the transaction. In addition, the integrity of transactions is also protected by chain
validations which occur when a new block is mined. These protections of transaction integrity
allow Blokshare to use the information stored in the transactions to authenticate files. Whenever
a file is retrieved from the distributed storage, the file is automatically authenticated.
Figure 4: Transaction
16
Discussion
technical problems revolved around the development team's lack of understanding of the
blockchain and how to implement the idea of blokshare. As for non-technical issues, those
involved work-related circumstances. Issues like having to work more hours meant less time to
In the planning phase, the primary issue was the lack of understanding of implementing a
blockchain. The plan appeared to be solid but left some gaps that needed to be addressed on the
fly during implementation. There was also more learning than expected to utilize technologies
like Docker, MongoDB, and React. Overall the team underestimated the difficulty of
During implementation, the gaps in planning and unexpected work caused the project to
fall behind schedule. One example was the team's limited knowledge of implementing encoding
and encryption. The encryption library utilized in the project and the distributed storage had
specific requirements for the types of data they could handle. The team learned the limitations of
asymmetric encryption, which is required for the blockchain, and then also had to implement
symmetric encryption.
Although it had some unforeseen challenges, the project was a great learning experience.
The team was able to get hands-on experience working with blockchain technology and
encryption. However, in hindsight, it would have been better to use an existing blockchain such
as Ethereum or Hyperledger.
17
References
http://www.investopedia.com/terms/b/blockchain.asp.
https://www.govinfo.gov/content/pkg/PLAW-106publ229/pdf/PLAW-106publ229.pdf
https://studentprivacy.ed.gov/node/548/
http://www.digitalinsuranceagenda.com/featured-insurtechs/guardtime-the-worlds-largest
-blockchain-company/.
https://docs.filecoin.io/about-filecoin/how-filecoin-works/.
18
19
Appendix A
Usability Test Survey
Link to google forms: https://forms.gle/bPDrnyEMRrgafAPa6
20
21
Appendix B
Division of Work
Jordan Bienz
● Project Proposal
● Project Report
● Capstone Presentation
● Blockchain implementation
● Frontend implementation
Miguel Solis
● Project Proposal
● Project Report
● Capstone Presentation
● Blockchain implementation
● Frontend implementation