From a0b55ea862a98a80e28bb2be541c588d6324d2cc Mon Sep 17 00:00:00 2001 From: xhipster <410789+xhipster@users.noreply.github.com> Date: Wed, 13 Feb 2019 22:36:00 +0700 Subject: [PATCH 1/2] Almost nothing chainged --- docs/cyb.md | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/docs/cyb.md b/docs/cyb.md index 076edd0..c38daee 100644 --- a/docs/cyb.md +++ b/docs/cyb.md @@ -14,24 +14,32 @@ Cyb is a friendly software robot who helps you explore the universes. Put it sim Current state of web3 experience is non satisfactory. Still [we did not meet](https://github.com/cybercongress/cyb/blob/master/docs/comparison.md) any piece of software that is able to deliver deep, emotional web3 experience. So we decide to bring to the table one contender that strictly follows web3 principles defined by ourselves ;-) In a rush for this passion we define the following web3 apps which we believe together implement the full web3 vision in the context of a browsing for web3 agents and app developers: -- `.main`: main page for every joe -- `.path`: navigation bar and its backend -- `.connect`: connection manager and state widget -- `.keys`: keystore interface and id widget +- `main.cyb`: main page for every joe +- `keys.cyb`: keystore interface +- `root.cyb`: cyb root registry +- `apps.cyb`: app discovery app with access control +- `state.cyb`: cyb state sync, import and export +- `source.cyb`: cyb source code +- `blog.cyb`: cyb community blog +- `knowledge.cyb`: cyb community knowledge base +- `path.cyb`: navigation bar and its backend => merge txq.cyb and history.cyb and feed.cyb for messages and transactions with scheduler +- `pins.cyb`: pinned file explorer +- `connect.cyb`: connection manager and state widget +- `sign.cyb`: phishing resistant signer with different signatures support +- `wallet.cyb`: embedded cyb wallet +- `ipfs.cyb`: ipfs node manager and agent experience +- `dev.cyb`: web3 development tool with support of contracts +- `help.cyb`: cyb educational library and feedback mechanism including `roadmap.cyb` - cyb community roadmap + + +Experimental not cyb team: +- `.dragons`: Dragonereium with `is cyb` +- `.chaingear`: all the things chaingearable - `.cyber`: cyberd node manager and app for link chains -- `.pins`: favourites backend and application bar -- `.sign`: phishing resistant signer for messages and transactions with scheduler -- `.crr`: cyb root registry -- `.cyb`: origianl web3 appstore -- `.access`: permission manager that respects agents' resources -- `.feed`: notification backend and feed app -- `.ipfs`: ipfs node manager and agent experience - `.eth`: ethereum node manager + ens resolver -- `.wallet`: universal wallet ux -- `.help`: cyb educational library and feedback mechanism -- `.dev`: web3 development tool with support of contracts -- `.cg`: all the things chaingearable -- `.settings`: cyb settings +- `.wiki`: snapshot of some wikipedia state + + All this apps are considered as core apps and are included in every Cyb distribution. Let us describe in details every app as a pure concept. From ae63a76123b9a26c1b4cedb092915f488613d683 Mon Sep 17 00:00:00 2001 From: xhipster <410789+xhipster@users.noreply.github.com> Date: Fri, 24 May 2019 19:51:37 +0200 Subject: [PATCH 2/2] Dura definition is almost done. In browser implementation need to updated --- docs/dura.md | 142 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 docs/dura.md diff --git a/docs/dura.md b/docs/dura.md new file mode 100644 index 0000000..e09cca5 --- /dev/null +++ b/docs/dura.md @@ -0,0 +1,142 @@ +# DURA: a missing piece for "The Great Web" + +[@xhipster](0x7C4401aE98F12eF6de39aE24cf9fc51f80EBa16B) +[cyberCongress](https://github.com/cybercongress) + +## Abstract + +Originally an [idea of web3](http://gavwood.com/web3lt.html) was inspired by Gavin Wood in 2014. A vision of Gavin was around 4 implementable concepts: content addressing, cryptographic identities, consensus computing and browsers. In parallel an idea of [Interplanetary File System](https://ipfs.io/ipfs/QmV9tSDx9UiPeWExXEeH6aoDvmihvx6jD5eLb4jbTaKGps) has been developed by Juan Benet. IPFS creates a foundation for web3: a system of content addressing and cryptographic identities. Since 2014 consensus computing has suffered insanely rapid development so one more missing piece is also in place. Still missing piece is a web3 browsing. Some projects such as Metamask has demonstrated a taste of web3. But one critical component in terms of browsing is just not there. URL scheme is outdated in terms of desired web3 properties and needs a drop in replacement. In this paper we propose DURA scheme aka Distributed Unified Resource Address as drop in replacement for URLs based on desired properties of "The Great Web" some of them has been defined in an article [An idea of decentralized search for web3](https://steemit.com/web3/@hipster/an-idea-of-decentralized-search-for-web3-ce860d61defe5est). DURA is being implemented in web3 browser [Cyb](/cyb.md). We believe DURA is a dump enough scheme (your captain) which can bring up basic consensus across web3 browser vendors due to simplicity, openness and protocol agnostic approach. + +## Introduction + +Current state of DNS root management is outdated. The most bad thing is that we still must to trust the most important things in our lives to strange organizations such as ICANN, IANA. + +We can ask ourselves why after 40 years of ubiquitous computer movement we still don't have simple common knowledge about what file extensions must be used with what software? + +Distributed Unified Resource Address or put simply DURA is a more simpler and trustful scheme then the scheme which has been used in a conventional web. In it's root it doesn't requires central authorities such as ICANN. Also, proposed approach do not depends on any blockchain based registry such as [ENS](https://docs.ens.domains/), [Chaingear](https://github.com/cybercongress/chaingear/blob/master/whitepaper.md) or [Handshake](https://handshake.org/files/handshake.txt) though. Only agents define which content type is being processed by which app. Using "Cascading Name Registries" technique the principle can be practical enough to become universal without harming a will of agents. + +## DURA scheme + +``` +[protocol]://[query].[app] +``` + +We believe that a term `cyberlink` can be used for DURA links in order to differentiate with `hyperlinks` of previous internet architecture. Further we discuss some details of a proposed linking convention. + +## Protocol + +``` +dura:// +``` + +It is a local handler that every os can handle. Being fully optional it can be very important in the very beginning of web3. If a browser do not know the protocol handler of a link it can look up the handler in a root registry. + +## Query + +``` +dura://QmQLXHs7K98JNQdWrBB2cQLJahPhmupbDjRuH1b9ibmwVa +``` + +If a browser is able to understand in which network she can resolve this particular content hash it can resolve it without much ado. Though we expect that IPFS will be not the only system and it become practically hard to say with 100% certainty whether given hash is ipfs hash or swarm or torrent or some other address type. That is there the concept of a root registry came into the game. In some sense it serves as an alternative to a self describing scheme used in CIDs. In some sense it is not, as it offers visually more sound links for agents. We believe that the root registry and self description concepts are complementary to each other. + +## App + +The key in our proposal is a concept of a root register. Structure of root register is a simple map between short name and ipfs hash of a program that is being triggered: + +``` +com:QmQLXHs7K98JNQdWrBB2cQLJahPhmupbDjRuH1b9ibmwVa +io:QmQLXHs7K98JNQdWrBB2cQLJahPhmupbDjRuH1b9ibmwVa +exe:QmQLXHs7K98JNQdWrBB2cQLJahPhmupbDjRuH1b9ibmwVa +pdf:QmQLXHs7K98JNQdWrBB2cQLJahPhmupbDjRuH1b9ibmwVa +eth:QmQLXHs7K98JNQdWrBB2cQLJahPhmupbDjRuH1b9ibmwVa +``` + +A name must be letter, number or hypen. + +Purpose of a root register is bring to reach some very basic os and network agnostic agreement about what extensions with what programs must be used. Of course the problem with such registry is that it must be somehow and somewhere maintained. + +``` +dura://QmQLXHs7K98JNQdWrBB2cQLJahPhmupbDjRuH1b9ibmwVa.ipfs +``` + +This is an example of full DURA link that is able get hash of `ipfs` app in a root registry, than throw predicate into this app and get a desired resource from a peer to peer network. + + +## Implementation in browsers + +1. Software vendors must compete for a better root registry. +2. Software vendors must add setting with a change of a root registry. +3. Agents of browsers and operation systems must have ability to overwrite maps for local pleasure. + +One of the implementation is a [cyb](QmQLXHs7K98JNQdWrBB2cQLJahPhmupbDjRuH1b9ibmwVa.md) root registry + +Cascading name registries + +## DURA extensions + +A lot of cool stuff can be implemented using extensions. Extension is any symbol that adds predictable and logical behavior for parsing and rendering of requests. + +The following extensions can demonstrate the flexibility of an approach: + +- app navigation +- app state +- local paths +- link chains +- URL parameters + +Key principle is that semantics is programmable and can be delivered from a distributed network using symbols that has been registered in a root registry. + +## App navigation + +Traditionally it is up to developers how to structure navigation within an app. + +Keyword: +- `/` after the main body + +Example: +cybernode.ai/dashboard + +## App state + +It can be useful to have simple convention on how to reflect state of an app on a particular block. + +Keyword: +- `!` + +Example: +cybernode.ai/dashboard!1567485 + +## Local paths + +Dura can be easily extended with conventional requirement of pointing to a certain place in a current device directory structure: + +Keyword: +- `/` before the main body + +Examples: +/users/xhipster/cybernode.ai +/ethereum/cybersearch.eth + +## Link chains + +Keyword: +- `@` between DURA statements + +Example: +xhipster.eth@cybercongress.ai + +## Key-value parameters + +Keywords: +- `?` start of kv params +- `&` start of kv clause +- `=` denote key and value + +Example: +- page?name=ferret&color=purple + +## Reference + +1. [Idea of web3](http://gavwood.com/web3lt.html) +2. [Interplanetary File System](https://ipfs.io/ipfs/QmV9tSDx9UiPeWExXEeH6aoDvmihvx6jD5eLb4jbTaKGps) +3. [Cyb](https://github.com/cybercongress/cyb/blob/dev/docs/cyb.md)