The Jade Specification
Supported by ETC Labs
Table of Contents
Contributing
Definitions
Introduction
What are the goals of the Jade
The goal of Jade is to enable the creation of decentralized, peer to peer applications built for ethereum classic.
Jade should solve the following problems:
- dapp users should have control over their accounts. This means fine grain controls over:
- Where the private keys are stored. (local or remote?, via 3rd party service? Hardware?)
- When and how the private key may be used to sign transactions/messages.
- dapp developers should have uniformly documented interfaces for the blockchain, accounts and all other software required to build dapps. They should use OpenRPC.
- dapp developers should have an easy way of deploying their applications. This means reducing scope of concerns, and enabling dapp developers to ignore the problem of where to get blockchain info from, or where the users account lives.
- dapps should be able to run nearly anywhere -- browsers, phones, desktops, etc.
- dapp users should choose the security model that fits them, not the dapp developer.
- dapp users should have tools at their disposal that makes all of the above easy enough for your grandpa
What influenced the design decisions
What are the tradeoffs
Jade Specification
All Projects:
- follow pristine
Jade Common
Jade
- No code, just readme and links to all the goods. This is the first thing you want a google of Jade Etc to see
- contains github pages site that would be the root of the projects subdomaining (jade.etclabs.org)
Jade-service-runner
- runs any jade-{project}-rpc service on any platform
- provides a 'meta rpc' or rpc gateway for any services being. It would be an aggregate of all the jade-{project}s that it is currently running
- provides a configuration layer for easily maintaining data directories / named environments. In practice, this would be used for things like dev env that has seperate accounts / chain data / etc
Jade-ui-{platform}-wrapper
note: platform
here is one of: 'electron', 'mobile'
- Anything that takes the web based ui exported by jade-{project}-ui and produces a platform specific wrapper for it
- web application electron wrapper
An Individual Jade Project Architecture
Jade-{project}
- Top level of a project.
- place you want people to see first
- contains github pages site that would be the root of the projects subdomaining ({projectname}.jade.etclabs.org)
Jade-{project}-{language}
- Exports a package for the language specified by
language
.
- May use a compiled and wrapped build to provide the requisite functions of the project. For example, a jade-{project}-js where the js package is really just the jade-{project}-rust crate compiled to wasm and documented / pushed to npm
- Includes github pages / generated docs.
Jade-{project}-rpc
- First place you want people to see about RPC server for this project.
- Should define the OpenRPC schema file.
- contains github pages site that would be the root of the projects subdomaining ((docs | playground).{projectname}.jade.etclabs.org)
- MUST expose functionality provided by Jade-{project}-{language} via json rpc server
- exposes json rpc with service discovery
Jade-{project}-client-{language}
- Library that implements a client to use the json rpc service.
- one per language generated
- packages are published to package manager based on language of implementation
Jade-{project}-ui
- UI tailored to dapp users or developers that is built ontop of the json rpc
- packaged as web application
- uses
Jade-{project}-client-{language}
s
proposed 1.0.0
The first Jade-{project}:
- Jade-signer
- Jade-signer-rs
- Jade-signer-rpc
- Jade-signer-rpc-clients
- Jade-signer-ui
- Jade-ui-electron-wrapper
- Jade-service-runner
Jade-signer
- lightweight account management that doesn't require ethereum rpc.
- Ideally is agnostic to the network onwhich the account would be used...
- pretty much only has: account crud, signTransaction, signMessage
Jade-service-runner
- runs any jade-{project} service on any platform
- provides a 'meta rpc' or rpc gateway for any services.