August in review – Knowledge Identifiers

For August in Review, we’ve been quietly working on our next product, Knowledge Identifiers, a decentralized proof of ownership of scholarly works. Knowledge Identifiers work like similar systems such as Digital Object Identifiers or Handle.net, but are not controlled by a single authority. Instead, a combination of smart contracts, decentralized file storage and database systems as well as traditional web apps will power this new permanent identification solution.

We will be making our functional specification for the development of Knowledge Identifiers publicly available, and we will post the link to this document shortly. We welcome participation in developing this new solution.

You can also follow our technical progress on Gitlab.

Other Developments for August in Review

We continue to discuss the coming decentralization of archived information with key players in the industry. We seek their expertise on how legacy systems function and how they can be improved through the use of blockchain technologies.

July 2019 in review

July may have been light on news but there have been a lot of developments which will improve KnowledgeArc.Network’s technology moving forward.

Using ARCH for covering Ethereum network costs

We have been investigating the concept of zero gas charges for our upcoming smart contracts. This means that you will not have to hold Ether, the default currency for handling any transaction fees on the Ethereum blockchain, when dealing with our smart contracts. Instead, all fees will be handled using Archive (ARCH) tokens which should aid in onboarding new users to the decentralized archive.

OrbitDB CLI

One of our developers has been working with the OrbitDB community to develop another way to communicate with the decentralized database system. For developers and technical users, you can find out more at https://github.com/orbitdb/go-orbit-db/.

Knowledge Identifiers

We’re working on a decentralized digital asset identification system using Ethereum smart contracts and OrbitDB. Knowledge Identifiers will provide an alternative to existing, centralized solutions such as Handle.net and DOI.

Such a system will provide immutable, permanent identification of digital assets, collections and even users in a trustless way, which means users won’t be beholden to a single point of failure; instead they will be able to manage their identifiers on chain with no 3rd party dependency.

This opens up exciting new use cases; identifiers will no longer simply be permanent links to an item. Instead they could potentially open up licensing, citation and other opportunities.

June 2019 in review

June was an important month in the evolution of KnowledgeArc.Network. We review some of the highlights from the month.

Whitepaper

We released our whitepaper early in June. This was an important step; even though we had been developing features and software for over two years, the whitepaper captured the reason behind KnowledgeArc.Network and distilled what our ecosystem is all about at a higher level.

Deploying our whitepaper to IPFS also highlighted our commitment to distributed technologies.

Exchange Listings

We’re committed to decentralization, distribution and democracy. Therefore, we are excited to see our cryptocurrency, Archive (ARCH), listed on two decentralized exchanges; SwitchDex and Ethermium.

We hope this will make it easier for our community to obtain Archive for ongoing development in the KnowledgeArc.Network ecosystem.

OrbitDB

It’s important for decentralized applications to move forward, and to be actively developed and supported. However, with dApps and other distributed applications being nascent technologies, not all of the underlying architecture is ready for production. As is often the case, software is still going through active development and requires a lot of resources to get it to a stable, production-ready state. This can mean that projects look stagnant even though developers are hard at work on various, related projects.

KnowledgeArc.Network is using IPFS as the underlying storage mechanism. This includes OrbitDB, a decentralized, peer-to-peer database system, which uses IPFS for replication. OrbitDB is a powerful technology and will be one of the cornerstones of the new Web3, similar to what MySQL did for the Internet v1.

OrbitDB will be KnowledgeArc.Network’s decentralized storage layer, storing metadata and other supporting information. The ecosystem will be able to replicate these OrbitDB data stores as well as combine them to form larger databases.

OrbitDB is under active development. That is why we have contributed time and resources to assist with the success of this project. Some of our work includes co-contributing to the HTTP API and field manual as well as maintaining the Go implementation of OrbitDB.

The KnowledgeArc.Network Working Group

We have started a working group, a place for advisors and experts to discuss ways to decentralize archiving, peer review and journalling.

During June, we invited some project managers and librarians who work in the archiving space to join our working group and we welcome these new members. We hope to expand this group of experts and look forward to seeing what insights they can provide to this new ecosystem.

Taking back ownership of your data

The convenience of hosted solutions for digital assets and archiving can hide a major problem; do you control the data you own? KnowledgeArc.Network’s decentralized architecture ensures you are in full control of your data.

Do you really own your data?

Hosting digital assets in the cloud has become a popular and cost-effective solution. But what happens when you decide the host you are with is no longer providing the level of service you expect?

You may think migration is as simple as your existing host dumping the data out to a backup file and making it available for your new provider to restore. Unfortunately, the reality isn’t that simple; closed source applications often have proprietary formats which make them difficult or even impossible to import into other systems.

On the other hand, some open source systems are customized, but the customizations might not be publicly available, so backups only capture a subset of your data. For example, there are archive hosting providers who have built multi-tenant data storage on top of a single application. Databases in such a system cannot simply be lifted and re-implemented on other infrastructure. This results in broken features and crucial data being excluded from the system.

Even if migrating from one system to another runs smoothly, complex backups and time-consuming debugging are often required. Export/import tools need constant maintenance, but with niche products such as digital asset systems, maintenance of these ancillary tools can often be ignored.

A distributed solution

The KnowledgeArc.Network platform makes centralized storage obsolete. Data is replicated in multiple locations whilst still being owned of the original creator.

Replication allows application managers, developers and system administrators to build a variety of user experiences on top of the data. There is no need to set up complex data structures, import and export data, or work around missing data. Instead, the user simply replicates an existing database and works directly on top of it.

Data can also remain private even though it is stored in a public way. By encrypting data, the owner is the only one with access to this information and can grant other users varying degrees of control. For example, perhaps certain users might only be able to read data. Others might be able to update existing data but not delete it.

Centralized vs decentralized

Recently there has been a move to more centralized archiving solutions. Instead of disparate systems talking to one another or federated systems being established to support a “go-to” repository of information, a number of governments and bureaucracies are pushing for everything to be centralized. This results in a stagnation of innovation and, more importantly, a single point of failure.

Figure 1: Legacy Archives

KnowledgeArc.Network decentralized databases will capture the best of both worlds; every archive is unique but their records can easily be merged into a single, federated archive. This federated archive can then be replicated further so that multiple user interfaces can be created on top of the same data.

KnowledgeArc.Network captures the best of every model. Decentralized, independent databases provide institutions with full control and ownership of their data. Federated archives simply merge distributed databases into a single data store. And, finally, the entire community can build their own user experiences on top of any archived data by simply replicating an existing database.

Figure 2: Decentralized Archive

Self-signed certificates with local root CA

This tutorial briefly covers the creating and trusting your own certificate authority (CA) for issuing self-signed SSL certificates, and is designed to work with OribitDB’s new REST API HTTP/2 push services.

This tutorial is aimed at Unix-based systems, in particular Ubuntu and other Debian-based Linux distributions so you will need to modify the commands for your own platform. All code examples are intended to be copied and pasted directly to the command line and will generate certificates in your current working directory.

To get started, we are going to create a root certificate which we will use to sign additional SSL certificates with.

First, create your root CA private key:

openssl genrsa -des3 -out rootSSL.key 2048
Generating RSA private key, 2048 bit long modulus
………………+++
………………………………………………………………………+++
e is 65537 (0x010001)
Enter pass phrase for rootSSL.key:

You will be prompted for a password. Be sure to specify one that is long enough as you may encounter errors if your password is too short.

Next, use your CA private key to create a root certificate:

openssl req -x509 -new -nodes -key rootSSL.key -sha256 -days 1024 -out rootSSL.pem

Once launched, you will need to re-enter the password you assigned to your private key:

Enter pass phrase for rootSSL.key:

If successful, provide information about your certificate:

 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 Country Name (2 letter code) [AU]:
 State or Province Name (full name) [Some-State]:WA
 Locality Name (eg, city) []:
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:
 Organizational Unit Name (eg, section) []:
 Common Name (e.g. server FQDN or YOUR name) []:localhost
 Email Address []:

You are now ready to install the new CA certificate into your CA trust store. The following commands will copy the root certificate into Ubuntu’s CA store so you may need to modify the paths if you are on a different distribution or OS platform:

sudo mkdir /usr/local/share/ca-certificates/extra
sudo cp rootSSL.pem \/usr/local/share/ca-certificates/extra/rootSSL.crt
sudo update-ca-certificates

Now it is time to generate a certificate for your development environment. Create a private key for your new certificate:

openssl req \
 -new -sha256 -nodes \
 -out localhost.csr \
 -newkey rsa:2048 -keyout localhost.key \
 -subj "/C=AU/ST=WA/L=City/O=Organization/OU=OrganizationUnit/CN=localhost/emailAddress=demo@example.com"

Next, create the certificate, signing it with your Root CA:

openssl x509 \
 -req \
 -in localhost.csr \
 -CA rootSSL.pem -CAkey rootSSL.key -CAcreateserial \
 -out localhost.crt \
 -days 500 \
 -sha256 \
 -extfile <(echo " \
    [ v3_ca ]\n \
    authorityKeyIdentifier=keyid,issuer\n \
    basicConstraints=CA:FALSE\n \
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment\n \
    subjectAltName=DNS:localhost \
   ")

Your SSL certificate is now ready for use. To use it with OrbitDB’s REST API, launch the cli.js script with the flags –https-key and –https-cert, using the new localhost.key and localhost.crt files we just created:

node src/cli.js api --ipfs-host localhost --orbitdb-dir ./orbitdb --https-cert ./localhost.crt --https-key ./localhost.key

The certificates should validate against your Root CA when used with tools such as curl:

curl -vs --http2 -X POST https://localhost:3000/db/my-feed --data 'create=true' --data 'type=feed'
 successfully set certificate verify locations:
 CAfile: /etc/ssl/certs/ca-certificates.crt
 CApath: /etc/ssl/certs
 ...
 SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
 ALPN, server accepted to use h2
 Server certificate:
 subject: C=AU; ST=WA; L=Ellenbrook; O=Organization; OU=OrganizationUnit; CN=localhost; emailAddress=demo@example.com
 start date: May 25 14:56:35 2019 GMT
 expire date: Oct  6 14:56:35 2020 GMT
 common name: localhost (matched)
 issuer: C=AU; ST=WA; L=Ellenbrook; O=Internet Widgits Pty Ltd; CN=Local Certificate
 SSL certificate verify ok. 

In the above, you can see the CA being loaded from the correct location (/etc/ssl/certs) and details about the certificate (Server certificate:).

You can now successfully run the new OrbitDB HTTP API with self-signed certificates on your development environment.

References

How to get HTTPS working in localhost development environment, secureend.com, https://reactpaths.com/how-to-get-https-working-in-localhost-development-environment-f17de34af046

Decentralizing DSpace Backups using IPFS

With the Archive token (ARCH) deployed and https://knowledgearc.io live, the team is now focussed on implementing our decentralized archiving ecosystem.

In the beginning…

KnowledgeArc.Network is already under development. We have spent the past year tokenizing various academic material. Using a combination of ERC721 non-fungible tokens, IPFS and OrbitDB, we have been developing an open-source, distributed archiving ecosystem that can be implemented by anyone. Using our Archive token, community members will be incentivized to participate in the creation of a truly open, decentralized academic platform.

Read More