Skip to content

Commit

Permalink
Docs - Improve SEO (#380)
Browse files Browse the repository at this point in the history
* * Browser friendly descriptive urls
* Removed duplicate onBrokenLinks declaration in config

* * Removed Docusarus assets.
* Added description, image and keywords for all docs.
* Added alt attribute to images
* Upgraded to docusarus beta 4
* Added png identity icon

* Apply suggestions from code review

Co-authored-by: charlesthompson3 <74603461+charlesthompson3@users.noreply.github.com>

Co-authored-by: charlesthompson3 <74603461+charlesthompson3@users.noreply.github.com>
  • Loading branch information
lucas-tortora and charlesthompson3 authored Sep 8, 2021
1 parent 1816a72 commit 73c192d
Show file tree
Hide file tree
Showing 61 changed files with 623 additions and 770 deletions.
6 changes: 6 additions & 0 deletions documentation/docs/contact.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
---
title: Contact
sidebar_label: Contact
description: Get in touch with the project maintainers.
image: /img/Identity_icon.png
keywords:
- Contact
- GitHub
- Maintainers
---

TODO: Add ways to contact the maintainers
8 changes: 8 additions & 0 deletions documentation/docs/contribute.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
---
title: Contribute to the project
sidebar_label: Contribute
description: Contribute to IOTA Identity by joining the Identity initiative, via the projects GitHub repository, documentation, or sharing your knowledge.
image: /img/Identity_icon.png
keywords:
- Contribute
- GitHub
- Identity Initiative
- Documentation
- Discord
---

**Thanks for thinking about contributing to the project! We have the following ways that you can contribute.**
Expand Down

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions documentation/docs/faq.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
---
title: Frequently Asked Questions
sidebar_label: FAQ
description: Frequently Asked Question regardging IOTA Identity.
image: /img/Identity_icon.png
keywords:
- FAQ
- Frequently Asked Question
- Troubleshooting
- IOTA Identity
---

TODO: Add list of frequently asked questions and there answers
6 changes: 0 additions & 6 deletions documentation/docs/getting-started/advanced/README.md

This file was deleted.

5 changes: 5 additions & 0 deletions documentation/docs/getting-started/advanced/client.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
---
title: IOTA Client
sidebar_label: IOTA Client
description: Explain what the IOTA Client does and how the features such as ZMQ and promoting should be used.
image: /img/Identity_icon.png
keywords:
- IOTA Client
- ZMQ
---

TODO: Explain what the IOTA Client does and how the features such as ZMQ and promoting should be used.
14 changes: 12 additions & 2 deletions documentation/docs/getting-started/advanced/did_messages.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
---
title: DID Messages
sidebar_label: DID Messages
description: Learn how IOTA Identity recreates and validates the state from it's origin to the current version using Integration and Differentiation Chains.
image: /img/Identity_icon.png
keywords:
- Diff Chain
- Differentiation Chain
- Integration Chain
- smart contracts
- Chronicle
- state
- stateless
---

TODO: Explain the concept of DID Messages and how they can be used to optimize DID updates.
Expand All @@ -9,15 +19,15 @@ TODO: Explain the concept of DID Messages and how they can be used to optimize D

Most DID methods are implemented on a Distributed Ledger Technology (DLT), such as Bitcoin, Ethereum or IOTA. Most common DID implementation on DLTs are based on fit-for-purpose Blockchains that store the state of a DID Document in the ledger, or a general purpose Blockchain that utilize smart contracts to store the state. Updating a DID Document where the state is understood by the network is straightforward. The network can determine if an action is legal and if a cryptographic signature is provided correctly, as it understands the underlying data structure, and can update the state accordingly. The individual state updates, or transactions, can be forgotten.

The IOTA Tangle is unable to track state or the understand the data structure. Storing the state is neither possible in the ledger, nor via a Smart contract (yet). Therefore, IOTA Identity has to recreate and validate the state from the origin of the Identity to the current version. The process involves querying all the relevant transactions from the Tangle, ordering them, filtering out the transactions that perform illegal actions or have an incorrect signature and then recreate state. As this requires the full history of the Identity, we recommend utilizing [Chronicle](https://github.com/iotaledger/chronicle.rs), an IOTA permanode, which stores the entire history of the Tangle. Further research will be performed to reduce storage requirements for IOTA Identity based applications.
The IOTA Tangle is unable to track, state, or understand the data structure. Storing the state is neither possible in the ledger, nor via a Smart contract (yet). Therefore, IOTA Identity has to recreate and validate the state from the origin of the Identity to the current version. The process involves querying all the relevant transactions from the Tangle, ordering them, filtering out the transactions that perform illegal actions or have an incorrect signature and then recreate state. As this requires the full history of the Identity, we recommend utilizing [Chronicle](https://github.com/iotaledger/chronicle.rs), an IOTA permanode, which stores the entire history of the Tangle. Further research will be performed to reduce storage requirements for IOTA Identity based applications.

### DID Messages

Due to this constant need for state recreating, unique performance improvements have been design and implemented for IOTA Identity. Most DID Documents will need few to no updates, however identities that sign a lot of Verifiable Credentials might update more frequently, as will be explained in the Verifiable Credentials section. To support higher frequency identity updates, we have introduced a unique solution called the “Integration Chain” and the “Differentiation Chain” (Diff Chain).

The Integration Chain is a chain of transactions that contain full DID Documents. They are unrestricted in what they can add or remove from the DID Document. Every Integration Chain transaction points to a separate new Diff Chain. These Diff Chain transactions only list the changes to a DID Document and are therefore more compact. It is, however, restricted in rotating the signing key, making it fast and easy to validate the transaction.

Once a new Integration chain transaction is created, it will take all Diff Chain updates and compress them into a new DID Document, essentially combining them all into a single transaction. This reduces the amount of updates that need to be queried and validated tremendously. For example, lets assume every Diff chain contains 100 updates. Then validating a DID that has done 1050 updates, only requires the validation of 10 Integration Chain updates and 40 Diff Chain updates (The latest Diff Chain). We skipped out on 10 Diff Chains each containing 100 updates, and only validated the 10 Integration Chain updates and the last Diff Chain containing 40 updates. If we estimate every update to be on average 1 Kb, we only have to download 50 kb of information and validate it, which is signficantly less then the otherwise 1.025 Mb of information.
Once a new Integration chain transaction is created, it will take all Diff Chain updates and compress them into a new DID Document, essentially combining them all into a single transaction. This reduces the amount of updates that need to be queried and validated tremendously. For example, lets assume every Diff chain contains 100 updates. Then validating a DID that has done 1050 updates, only requires the validation of 10 Integration Chain updates and 40 Diff Chain updates (The latest Diff Chain). We skipped out on 10 Diff Chains each containing 100 updates, and only validated the 10 Integration Chain updates and the last Diff Chain containing 40 updates. If we estimate every update to be on average 1 Kb, we only have to download 50 kb of information and validate it, which is significantly less than the otherwise 1.025 Mb of information.

The improved performance and ability to handle frequently updated DID Documents is especially beneficial for Verifiable Credential Revocation, by utilizing revocation flags. These concepts will be explained in the Verifiable Credentials and Key Collections sections.

Expand Down
11 changes: 11 additions & 0 deletions documentation/docs/getting-started/advanced/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: Advanced Concepts Overview
sidebar_label: Overview
description: Provide overview of the advanced concepts
image: /img/Identity_icon.png
keywords:
- advanced
- concepts
---

TODO: Provide overview of the advanced concepts
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
---
title: Signature Schemes
sidebar_label: Signature Schemes
description: Explain what signature schemes are available and how a new one can be added locally (and to the repo).
image: /img/Identity_icon.png
keywords:
- signature
- local
- schemes
---

TODO: Explain what signature schemes are avaliable and how a new one can be added locally (and to the repo).
TODO: Explain what signature schemes are available and how a new one can be added locally (and to the repo).
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
---
title: Storage Adapter
sidebar_label: Storage Adapter
description: Explain the need for the storage adapter and how it can used to store account data differently
image: /img/Identity_icon.png
keywords:
- storage adapter
- account
- data
---

TODO: Explain the need for the storage adapter and how it can used to store account data differently
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
---
title: Creating a Decentralized Identity
sidebar_label: Create and Publish
description: DID Documents and publishing them to the Tangle
image: /img/Identity_icon.png
keywords:
- Documents
- DID
- Tangle
- Publish
---

TODO: Explain DID, DID Documents and publishing them to the Tangle.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: Merkle Key Collection
sidebar_label: Merkle Key Collection
description: Explain why, how to use and how merkle key collections work.
image: /img/Identity_icon.png
keywords:
- Merkle Key Collections
- DID
---

TODO: Explain why, how to use and how merkle key collections work.
Original file line number Diff line number Diff line change
@@ -1,28 +1,36 @@
---
title: Decentralized Identifiers (DID)
sidebar_label: Overview
description: The Decentralized Identifiers (DID) standard from W3C is the fundamental standard that supports the concept of a decentralized digital identity. Explore the basic aspects of the DID standard.
image: /img/Identity_icon.png
keywords:
- public keys
- Method Specification
- Decentralized Identifiers
- overview
- DLT
---

The Decentralized Identifiers (DID) standard from W3C is the fundamental standard that supports the concept of a decentralized digital identity. A DID is a unique identifier that contains information that can be resolved to a DID Document. This document contains data such as public keys, enabling the holder to prove ownership over their personal data, but also URIs that link to public information about the identity. This implementation complies to the [DID specifications v1.0 Working](https://www.w3.org/TR/did-core//).
# Decentralized Identifiers (DID)

In the IOTA Identity framework, we have implemented the DID standard according to the `iota` DID Method Specification, which can be viewed [here](./specs/iota_did_method_spec.md). We recommend to see the `iota` DID Method Specification as the golden standard for DID on IOTA. Other implementations of DID on IOTA is recommended to follow the `iota` DID Method Specification. However, it is not necassary to implement a novel Method implementation for every project, so feel free to utilize this framework directly.
The Decentralized Identifiers (DID) standard from W3C is the fundamental standard that supports the concept of a decentralized digital identity. A DID is a unique identifier that contains information that can be resolved to a DID Document. This document contains data such as public keys, enabling the holder to prove ownership over their personal data, but also URIs that link to public information about the identity. This implementation complies to the [DID specifications v1.0 Working](https://www.w3.org/TR/did-core//).

In the IOTA Identity framework, we have implemented the DID standard according to the `iota` [DID Method Specification](./specs/iota_did_method_spec.md). We recommend seeing the `iota` DID Method Specification as the golden standard for DID on IOTA. Other implementations of DID on IOTA are recommended to follow the `iota` DID Method Specification. However, it is not necassary to implement a novel Method implementation for every project, so feel free to utilize this framework directly.

An example of DID conforming to the `iota` method specification:
`did:iota:8dQAzVbbf6FLW9ckwyCBnKmcMGcUV9LYJoXtgQkHcNQy`

### Chapter overview
## Chapter Overview

In this chapter we will explain the basic aspects of the DID standard. We will explore the how and why of DID Documents and why IOTA is a very suitable technology to host the DID Documents and the rest of a Self Sovereign Identity Framework.

### Decentralized Identifiers
## Decentralized Identifiers

A Decentralized Identifier, or DID, is a unique identifier that is tied to a subject. This subject can be anything, like a person, an organization, an IoT device or even an object. The identifier can be used by the subject to identify themselves through a digital format, providing a basis for online identification. The identifier looks like a set of random characters that includes some prefixes to determine which standard and implementation is used:

`did:iota:8dQAzVbbf6FLW9ckwyCBnKmcMGcUV9LYJoXtgQkHcNQy`

The World Wide Web Consortium (W3C) is a well-known standardization body that has standardized how DIDs should look like and work. This provides a basis for different technologies that implement the DID standard to achieve interoperability. A full list of all implementations can be found [here.](https://www.w3.org/TR/did-spec-registries/#did-methods) Please keep in mind that unfortuanetly most of these methods are outdated and not maintained.

### DID Documents
## DID Documents

The purpose of a DID is to help navigate to a DID Document, which is a document containing more information regarding the identity subject. This document contains data such as public keys, enabling the subject to prove ownership over their personal data, but also URIs that link to public information about the identity.

Expand All @@ -44,25 +52,25 @@ Never share your private keys, seeds, passphrases with anyone. Not even IOTA Fou

Services are URIs that point to more information about the identity. This could be something as simple as a website for a organizational identity. These services are publicly avaliable for all to read and should therefore not contain Personal Identifiable Information (PII) in the case of human identities.

### Why use DIDs?
## Why use DIDs?

DIDs have some limited use cases. It allows any subject to have a unique identifier, that they can prove ownership off and at the same time provide a way to send them encrypted messages. The Identity is Self Sovereign, meaning the subject is control of when the identity is created, but also destroyed.

DIDs become really interesting in combination with Verifiable Credentials, that will be covered in a later section. In essence, Verifiable Credentials (VCs) are signed statements by trusted third parties about a certain identity. The signer, or Issuer, is referenced by DID and so is the subject, often called the Holder. The Holder can control a copy of this statement and share this with other parties, the Verifiers, that can verify the statement and check which party gave out the statement, without having to ask the Issuer. Instead, they can verify the signature of the Issuer by checking the Issuers DID Document. This whole set up puts Holders back into control over their own data, but also makes the data much more trustworthy as it has become verifiable.

### Why use IOTA Identity over other implementations?
## Why use IOTA Identity over other implementations?

IOTA Identity is a framework to implement Self Sovereign Identities on IOTA. Inheritly, IOTA provides some unique features that have a major impact on the usability of the framework.
IOTA Identity is a framework to implement Self Sovereign Identities on IOTA. Inherently, IOTA provides some unique features that have a major impact on the usability of the framework.

#### Feeless
### Feeless

IOTA is a feeless Distributed Ledger Technology, that means that messages can immutably be stored inside the Tangle at no-cost, nor a requirements of holding any cryptocurrency tokens. That means that SSI applications can directly deploy towards the main network without any problems, as compared to most other SSI solutions running on a test network or having cryptocurrency requirements. This doesn't just make IOTA Identity have predictable costs and prevent issues around cryptocurrency holding taxes and legislation, it also makes it a fair network as anyone would be able to create one or more identities at no costs. The wealth of someone is irrelevant, making it the most inclusive SSI solution.

#### Ease-of-use
### Ease-of-use

Without the need for a token, IOTA Identity can directly be used on the main network without having to purchase and manage a cryptocurrency token. In addition, the framework provides easy-to-use APIs that allow both standardized behavior or flexible, yet more complex access. Lastly, IOTA Identity provides a Stronghold solution for managing secrets in a secure manner, without requiring developers to reinvent the security wheel.

#### General Purpose DLT
### General Purpose DLT

IOTA is a general purpose DLT as compared to some for-purpose DLTs with restricted use cases. That means that SSI can easily be combined with other DLT features such as payments, data streams, smart contracts and access control. It will no longer be needed to utilize multiple DLT projects alongside each other.

Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
---
title: Resolve an IOTA Identity
sidebar_label: Resolve
description: Explain how resolving works including arguments.
image: /img/Identity_icon.png
keywords:
- Resolve
---

TODO: Explain how resolving works including arguments.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
title: Update DID Documents
sidebar_label: Update
description: How DID Documents can be manipulated and how updates should be published.
image: /img/Identity_icon.png
keywords:
- Documents
- DID
- Tangle
- Update
- Publish
---

TODO: Explain how DID Documents can be manipulated and how updates should be published.

This file was deleted.

6 changes: 0 additions & 6 deletions documentation/docs/getting-started/did/update.md

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: DID Comm messages
sidebar_label: DID Comm messages
description: Explain how to create and verify DID Comm messages
image: /img/Identity_icon.png
keywords:
- communication
- message
- Create
---

TODO: Explain how to create and verify DID Comm messages
12 changes: 12 additions & 0 deletions documentation/docs/getting-started/did_communications/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: DID Communications Overview
sidebar_label: Overview
description: Explain the DID Communications standard and what it is useful for
image: /img/Identity_icon.png
keywords:
- communication
- message
- standard
---

TODO: Explain the DID Communications standard and what it is useful for
12 changes: 12 additions & 0 deletions documentation/docs/getting-started/did_communications/protocols.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: DID Comm Protocols
sidebar_label: Protocols
description: Provide an overview of the DID Comm protocols
image: /img/Identity_icon.png
keywords:
- communication
- communications
- protocols
- Create
---
TODO: Provide an overview of the DID Comm protocols
6 changes: 0 additions & 6 deletions documentation/docs/getting-started/didcomm/README.md

This file was deleted.

This file was deleted.

5 changes: 0 additions & 5 deletions documentation/docs/getting-started/didcomm/protocols.md

This file was deleted.

Loading

0 comments on commit 73c192d

Please sign in to comment.