Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document Attestation Service #1

Open
mitchellolsthoorn opened this issue Mar 24, 2019 · 1 comment
Open

Document Attestation Service #1

mitchellolsthoorn opened this issue Mar 24, 2019 · 1 comment
Assignees

Comments

@mitchellolsthoorn
Copy link
Member

mitchellolsthoorn commented Mar 24, 2019

Introduction

Some of the more important concepts:

Overlay network (called community in our implementation): A network of computers working together for a specific purpose (for example signing documents)
Trustchain: Our blockchain implementation.
IPV8: Our abstraction layer for writing overlay networks that handles all the cryptographic functionality and network communication. It also allows multiple overlay networks to be run on a single port.
Peer: a node/computer in the overlay network
Walker: Strategies to determine which nodes are directly connected to you in the network graph
Network graph: A way to represent the overlay network, where peers are circles and the connections between peers are lines between the corresponding circles. This can both be used for visualization and as a data structure
Lamport clock: Global incrementer in distributed networks used as an example in the tutorial
Reactor: Major network component of one of the dependencies of IPV8
I gave them some links to documentation of the different components that would be related to the project:
https://github.com/Tribler/py-ipv8/blob/master/doc/overlay_tutorial.md
https://github.com/Tribler/py-ipv8/blob/master/doc/attestation_tutorial.md

Both of these resources use git submodules to install the ipv8 library, which can be quite hard to work with. So I would suggest you install the library through pip with the following command:

pip install pyipv8

This will also install all its requirements.

Because the library is now installed differently the tutorial needs to be changed a little. Everything you see an import statement like this:

from pyipv8.ipv8_service

That starts with pyipv8, you can remove the first part like:

from ipv8_service

Objective is a working demo of a trusted elektronic document signature through a third-party (in this case a notary).

An example of a centralised variant of this is: Ondertekenen.nl

To accomplish that the following steps are necessary:

  • Represent the document with an identifier based on its contents (hashing can be used for this).
  • Sign the identifier with your cryptographic key as a signature.
  • Request the notary to verify (cryptographically sign/attest to) your signature, to make the signature trustworthy.
  • Transfer the document to the notary.
  • Let others check that this signature is valid and trusted.
  • Create an interface to let users initiate these actions.
@mitchellolsthoorn
Copy link
Member Author

Meeting minutes 15-3

We discussed the progress on getting the tutorials to run on their own computers. Some of the problems that were encountered:

  • Not changing the identifiers that were used as an example in the tutorial
  • Undocumented behaviour that the attribute can be seen on both sides of the transaction, because of how it is implemented.

Plan for current sprint:

  • Implement the sequence of actions that the tutorial explains in code instead of executing them manually
  • Create a web GUI to initiate these actions using e.g. Angular or another platform.

Next sprints:

  • Implementing a document transfer mechanism
    • Through libtorrent
    • Through IPFS
    • Through directly connecting to the notary peers (start with this approach)
    • Through an encrypted tunnel
  • Implement a IPV8 overlay and a Twisted plugin

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants