From 96d5f489bf540c67d0f0b7e32868d1ec83791ab3 Mon Sep 17 00:00:00 2001 From: Ricardo Guilherme Schmidt Date: Tue, 26 Nov 2019 11:47:24 -0200 Subject: [PATCH 1/6] draft of EIPs list --- status-EIPs.md | 211 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 status-EIPs.md diff --git a/status-EIPs.md b/status-EIPs.md new file mode 100644 index 0000000..39eafc6 --- /dev/null +++ b/status-EIPs.md @@ -0,0 +1,211 @@ +# Status EIPs standards + +> Version: 0.1 (Draft) +> +> Authors: Ricardo Guilherme Schmidt + +## Abstract + +In this specification, we describe how Status relates with EIPs. + +## Table of Contents +- [Status EIPs standards ](#status-client-specification) + - [Abstract](#abstract) + - [Table of Contents](#table-of-contents) + - [Introduction](#introduction) + - [Components](#components) + - [Security Considerations](#security-considerations) + - [Design Rationale](#design-rationale) + - [Footnotes](#footnotes) + - [Acknowledgements](#acknowledgements) + +## Introduction + +Status should follow all standards as possible. Whenever a feature is needed, it should be first checked if there is a standard for that, if not, Status should propose a standard. + +### Support table + +| | BIP32 | BIP39 | BIP43 | BIP44 | EIP20 | EIP55 | EIP67 | EIP137 | EIP155 | EIP165 | EIP181 | EIP191 | EIP627 | EIP681 | EIP712 | EIP721 | EIP831 | EIP945 | EIP1102 | EIP1193 | EIP1577 | EIP1581 | +| --------- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------- | ------- | ------- | ------- | +| Status v0 | N | Y | N | N | Y | Y | P | P | Y | P | P | Y? | Y | Y | P | P | N | Y | Y | Y | Y | N | +| Status v1 | Y | Y | Y | Y | Y | Y | P | P | Y | N | N | N | Y | N | P | P | Y | Y | Y | Y | P | Y | +| Other | N | Y | N | N | Y | Y | N | N | Y | N | N | Y | N | Y | Y | Y | N | N | Y | Y | N | N | + +## Components + +### BIP32 - Hierarchical Deterministic Wallets + +Support: Dependency +Reference: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki +Description: Enable wallets to derive multiple private keys from the same seed. +Used for: Dependency of BIP39 and BIP43 + +### BIP39 - Mnemonic code for generating deterministic keys + +Support: Dependency +Reference: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki +Description: Enable wallet to create private key based on a safe seed phrase. +Used for: Important for security and user experience. + +### BIP43 - Purpose Field for Deterministic Wallets + +Support: Dependency +Reference: https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki +Description: Enable wallet to create private keys branched for a specific purpose. +Used for: Dependency of BIP44, uses "ethereum" coin. + +### BIP44 - Multi-Account Hierarchy for Deterministic Wallets + +Support: Dependency +Reference: https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki +Description: Enable wallet to derive multiple accounts in top of BIP39 +Used for: Important as a privacy feature. +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/constants.cljs#L240 +Observation: BIP44 don't solve privacy issues regarding the transparency of transactions, therefore directly connected addresses through a transactions can be identifiable by a "network reconnaissance attack" over transaction history, this attack together with leakage of information from centralized services, such as exchanges, would be fatal against the whole privacy of users, regardless of BIP44. + +### EIP20 - Fungible Token + +Support: Full +Reference: https://eips.ethereum.org/EIPS/eip-20 +Description: Enable wallets to use tokens based on smart contracts compilant with this standard. +Used for: Important as wallet feature. +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/tokens.cljs + +### EIP55 - Mixed-case checksum address encoding + +Support: Full +Reference: https://eips.ethereum.org/EIPS/eip-55 +Description: Checksum standard that uses lowercase and uppercase inside address hex value. +Used for: Important for sanity check of forms using ethereum address. +Related: https://github.com/status-im/status-react/issues/4959 https://github.com/status-im/status-react/issues/8707 +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/eip55.cljs + +### EIP67 - Standard URI scheme with metadata, value and byte code + +Support: Partial +Reference: https://github.com/ethereum/EIPs/issues/67 +Description: A standard way of creating Ethereum URIs for various use-cases. +Used for: web3 feature +https://github.com/status-im/status-react/issues/875 + +### EIP137 - Ethereum Domain Name Service - Specification + +Support: Partial +Reference: https://eips.ethereum.org/EIPS/eip-137 +Description: Enable wallets to lookup ENS names. +Used for: important for user experience, as a wallet and identity feature. +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/ens.cljs#L86 + +### EIP155 - Simple replay attack protection + +Support: Full +Reference: https://eips.ethereum.org/EIPS/eip-155 +Description: Defined chainId parameter in the singed ethereum transaction payload. +Used for: signing transactions, crucial to safety of users against replay attacks. +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/core.cljs + +### EIP165 - Standard Interface Detection + +Support: Dependency/Partial +Reference: https://eips.ethereum.org/EIPS/eip-165 +Description: Standard interface for contract to answer if it supports other interfaces. +Used for: a dependency of ENS and EIP721. +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/eip165.cljs + +### EIP181 - ENS support for reverse resolution of Ethereum addresses + +Support: Partial +Reference: https://eips.ethereum.org/EIPS/eip-181 +Description: Enable wallets to render reverse resolution of Ethereum addresses +Used for: important as feature +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/ens.cljs#L86 + +### EIP191 - Signed Message + +Support: Full +Reference: https://eips.ethereum.org/EIPS/eip-191 +Description: Contract signature standard, adds an obrigatory padding to signed message to differentiate from Ethereum Transaction messages. +Used for: Important for Dapp support and security, dependency of ERC712. + +### EIP627 - Whisper Specification + +Support: Full +Reference: https://eips.ethereum.org/EIPS/eip-627 +Description: format of Whisper messages within the ÐΞVp2p Wire Protocol +Used for: chat protocol + +### EIP681 - URL Format for Transaction Requests + +Support: Partial +Reference: https://eips.ethereum.org/EIPS/eip-681 +Description: A link that pop up a transaction in the wallet. +Used for: Useful as QRCode data for tranasction requests, chat transaction requests and for dapp links to transaction requests. +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/eip681.cljs +Related: [Issue #9183: URL Format for Transaction Requests (EIP681) is poorly supported](https://github.com/status-im/status-react/issues/9183) https://github.com/status-im/status-react/pull/9240 https://github.com/status-im/status-react/issues/9238 https://github.com/status-im/status-react/issues/7214 https://github.com/status-im/status-react/issues/7325 https://github.com/status-im/status-react/issues/8150 + +### EIP712 - Typed Signed Message + +Support: Partial +Reference: https://eips.ethereum.org/EIPS/eip-712 +Description: Standarize types for contract siganture, allowing users to easily inspect whats being signed. +Used for: important for user experience and safety. +Related: https://github.com/status-im/status-react/issues/5461 https://github.com/status-im/status-react/commit/ba37f7b8d029d3358c7b284f6a2383b9ef9526c9 + +### EIP721 - Non Fungible Token + +Support: Partial +Reference: https://eips.ethereum.org/EIPS/eip-721 +Description: Enable wallets to use tokens based on smart contracts compilant with this standard. +Used for: Important as wallet feature. +Related: https://github.com/status-im/status-react/issues/8909 +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/erc721.cljs https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/tokens.cljs + +### EIP945 - Web 3 QR Code Scanning API + +Support: Full +Reference: https://github.com/ethereum/EIPs/issues/945 +Used for: web3 feature +Related: https://github.com/status-im/status-react/issues/5870 + +### EIP1102 - Opt-in account exposure + +Support: Full +Reference: https://eips.ethereum.org/EIPS/eip-1102 +Description: Allow users to opt-in the exposure of their ethereum address to dapps they browse. +Used for: important for user privacy. +Related: https://github.com/status-im/status-react/issues/7985 + +### EIP1193 - Ethereum Provider JavaScript API + +Support: Full +Reference: https://eips.ethereum.org/EIPS/eip-1193 +Description: Allows dapps to recognize event changes on wallet +Used for: important for DApps work properly. +Related: https://github.com/status-im/status-react/pull/7246 + +### EIP1577 - contenthash field for ENS + +Support: Partial +Reference: https://eips.ethereum.org/EIPS/eip-1577 +Description: Allows users browse ENS domains using contenthash standard. +Used for: important as feature +Related: https://github.com/status-im/status-react/issues/6688 +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/utils/contenthash.cljs https://github.com/status-im/status-react/blob/develop/test/cljs/status_im/test/utils/contenthash.cljs#L5 + +### EIP1581 - Non-wallet usage of keys derived from BIP-32 trees + +Support: Partial +Reference: https://eips.ethereum.org/EIPS/eip-1581 +Description: Allow wallet to derive keys that are less sensible (non wallet) +Used for: important for security (dont reuse wallet key) and user experience (dont request keycard every login) +Related: https://github.com/status-im/status-react/issues/9088 https://github.com/status-im/status-react/pull/9096 +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/constants.cljs#L242 + + +## Security Considerations + +## Design Rationale + +## Footnotes + +## Acknowledgements From 4bfcee80e1a881503c9c281a75c5c0ade128b723 Mon Sep 17 00:00:00 2001 From: Ricardo Guilherme Schmidt Date: Wed, 27 Nov 2019 03:54:04 -0200 Subject: [PATCH 2/6] add EIPs link to readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 372b184..c80294d 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ The following SIPs are under consideration for standardization. - [Status Account Specification](status-account-spec.md). What a Status account is and how trust is established. - [Status Whisper Usage Specification](status-whisper-usage-spec.md). How we use Whisper to do routing, metadata protection and provide 1:1/group/public chat. - [Status Whisper Mailserver Specification](status-whisper-mailserver-spec.md). How we use Whisper mailservers to provide offline inboxing. - +- [Status EIPs Standards](status-EIPs.md). Ethereum Improvement Proposals used in Status. ## Protocol Research From d5448a7ce28b1eb9b832014b7a010b82d318807b Mon Sep 17 00:00:00 2001 From: Ricardo Guilherme Schmidt Date: Wed, 27 Nov 2019 04:19:44 -0200 Subject: [PATCH 3/6] Review all "used for" --- status-EIPs.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/status-EIPs.md b/status-EIPs.md index 39eafc6..224a5e1 100644 --- a/status-EIPs.md +++ b/status-EIPs.md @@ -38,28 +38,28 @@ Status should follow all standards as possible. Whenever a feature is needed, it Support: Dependency Reference: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki Description: Enable wallets to derive multiple private keys from the same seed. -Used for: Dependency of BIP39 and BIP43 +Used for: Dependency of BIP39 and BIP43 ### BIP39 - Mnemonic code for generating deterministic keys Support: Dependency Reference: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki Description: Enable wallet to create private key based on a safe seed phrase. -Used for: Important for security and user experience. +Used for: Security and user experience. ### BIP43 - Purpose Field for Deterministic Wallets Support: Dependency Reference: https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki Description: Enable wallet to create private keys branched for a specific purpose. -Used for: Dependency of BIP44, uses "ethereum" coin. +Used for: Dependency of BIP44, uses "ethereum" coin. ### BIP44 - Multi-Account Hierarchy for Deterministic Wallets Support: Dependency Reference: https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki Description: Enable wallet to derive multiple accounts in top of BIP39 -Used for: Important as a privacy feature. +Used for: Privacy Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/constants.cljs#L240 Observation: BIP44 don't solve privacy issues regarding the transparency of transactions, therefore directly connected addresses through a transactions can be identifiable by a "network reconnaissance attack" over transaction history, this attack together with leakage of information from centralized services, such as exchanges, would be fatal against the whole privacy of users, regardless of BIP44. @@ -68,7 +68,7 @@ Observation: BIP44 don't solve privacy issues regarding the transparency of tran Support: Full Reference: https://eips.ethereum.org/EIPS/eip-20 Description: Enable wallets to use tokens based on smart contracts compilant with this standard. -Used for: Important as wallet feature. +Used for: Wallet feature. Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/tokens.cljs ### EIP55 - Mixed-case checksum address encoding @@ -76,7 +76,7 @@ Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im Support: Full Reference: https://eips.ethereum.org/EIPS/eip-55 Description: Checksum standard that uses lowercase and uppercase inside address hex value. -Used for: Important for sanity check of forms using ethereum address. +Used for: Sanity check of forms using ethereum address. Related: https://github.com/status-im/status-react/issues/4959 https://github.com/status-im/status-react/issues/8707 Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/eip55.cljs @@ -85,7 +85,7 @@ Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im Support: Partial Reference: https://github.com/ethereum/EIPs/issues/67 Description: A standard way of creating Ethereum URIs for various use-cases. -Used for: web3 feature +Used for: Legacy support https://github.com/status-im/status-react/issues/875 ### EIP137 - Ethereum Domain Name Service - Specification @@ -93,7 +93,7 @@ https://github.com/status-im/status-react/issues/875 Support: Partial Reference: https://eips.ethereum.org/EIPS/eip-137 Description: Enable wallets to lookup ENS names. -Used for: important for user experience, as a wallet and identity feature. +Used for: User experience, as a wallet and identity feature, usernames. Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/ens.cljs#L86 ### EIP155 - Simple replay attack protection @@ -101,7 +101,7 @@ Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im Support: Full Reference: https://eips.ethereum.org/EIPS/eip-155 Description: Defined chainId parameter in the singed ethereum transaction payload. -Used for: signing transactions, crucial to safety of users against replay attacks. +Used for: Signing transactions, crucial to safety of users against replay attacks. Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/core.cljs ### EIP165 - Standard Interface Detection @@ -109,7 +109,7 @@ Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im Support: Dependency/Partial Reference: https://eips.ethereum.org/EIPS/eip-165 Description: Standard interface for contract to answer if it supports other interfaces. -Used for: a dependency of ENS and EIP721. +Used for: Dependency of ENS and EIP721. Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/eip165.cljs ### EIP181 - ENS support for reverse resolution of Ethereum addresses @@ -117,7 +117,7 @@ Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im Support: Partial Reference: https://eips.ethereum.org/EIPS/eip-181 Description: Enable wallets to render reverse resolution of Ethereum addresses -Used for: important as feature +Used for: Wallet feature Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/ens.cljs#L86 ### EIP191 - Signed Message @@ -125,21 +125,21 @@ Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im Support: Full Reference: https://eips.ethereum.org/EIPS/eip-191 Description: Contract signature standard, adds an obrigatory padding to signed message to differentiate from Ethereum Transaction messages. -Used for: Important for Dapp support and security, dependency of ERC712. +Used for: Dapp support, security, dependency of ERC712. ### EIP627 - Whisper Specification Support: Full Reference: https://eips.ethereum.org/EIPS/eip-627 Description: format of Whisper messages within the ÐΞVp2p Wire Protocol -Used for: chat protocol +Used for: Chat protocol ### EIP681 - URL Format for Transaction Requests Support: Partial Reference: https://eips.ethereum.org/EIPS/eip-681 Description: A link that pop up a transaction in the wallet. -Used for: Useful as QRCode data for tranasction requests, chat transaction requests and for dapp links to transaction requests. +Used for: Useful as QRCode data for tranasction requests, chat transaction requests and for dapp links to transaction requests. Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/eip681.cljs Related: [Issue #9183: URL Format for Transaction Requests (EIP681) is poorly supported](https://github.com/status-im/status-react/issues/9183) https://github.com/status-im/status-react/pull/9240 https://github.com/status-im/status-react/issues/9238 https://github.com/status-im/status-react/issues/7214 https://github.com/status-im/status-react/issues/7325 https://github.com/status-im/status-react/issues/8150 @@ -148,7 +148,7 @@ Related: [Issue #9183: URL Format for Transaction Requests (EIP681) is poorly su Support: Partial Reference: https://eips.ethereum.org/EIPS/eip-712 Description: Standarize types for contract siganture, allowing users to easily inspect whats being signed. -Used for: important for user experience and safety. +Used for: User experience, security. Related: https://github.com/status-im/status-react/issues/5461 https://github.com/status-im/status-react/commit/ba37f7b8d029d3358c7b284f6a2383b9ef9526c9 ### EIP721 - Non Fungible Token @@ -156,7 +156,7 @@ Related: https://github.com/status-im/status-react/issues/5461 https://github.co Support: Partial Reference: https://eips.ethereum.org/EIPS/eip-721 Description: Enable wallets to use tokens based on smart contracts compilant with this standard. -Used for: Important as wallet feature. +Used for: Wallet feature. Related: https://github.com/status-im/status-react/issues/8909 Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/erc721.cljs https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/tokens.cljs @@ -164,7 +164,7 @@ Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im Support: Full Reference: https://github.com/ethereum/EIPs/issues/945 -Used for: web3 feature +Used for: Sharing contactcode, reading transaction requests. Related: https://github.com/status-im/status-react/issues/5870 ### EIP1102 - Opt-in account exposure @@ -172,7 +172,7 @@ Related: https://github.com/status-im/status-react/issues/5870 Support: Full Reference: https://eips.ethereum.org/EIPS/eip-1102 Description: Allow users to opt-in the exposure of their ethereum address to dapps they browse. -Used for: important for user privacy. +Used for: Privacy, DApp support. Related: https://github.com/status-im/status-react/issues/7985 ### EIP1193 - Ethereum Provider JavaScript API @@ -180,7 +180,7 @@ Related: https://github.com/status-im/status-react/issues/7985 Support: Full Reference: https://eips.ethereum.org/EIPS/eip-1193 Description: Allows dapps to recognize event changes on wallet -Used for: important for DApps work properly. +Used for: DApp support. Related: https://github.com/status-im/status-react/pull/7246 ### EIP1577 - contenthash field for ENS @@ -188,7 +188,7 @@ Related: https://github.com/status-im/status-react/pull/7246 Support: Partial Reference: https://eips.ethereum.org/EIPS/eip-1577 Description: Allows users browse ENS domains using contenthash standard. -Used for: important as feature +Used for: Browser, DApp support Related: https://github.com/status-im/status-react/issues/6688 Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/utils/contenthash.cljs https://github.com/status-im/status-react/blob/develop/test/cljs/status_im/test/utils/contenthash.cljs#L5 @@ -197,7 +197,7 @@ Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im Support: Partial Reference: https://eips.ethereum.org/EIPS/eip-1581 Description: Allow wallet to derive keys that are less sensible (non wallet) -Used for: important for security (dont reuse wallet key) and user experience (dont request keycard every login) +Used for: Security (dont reuse wallet key) and user experience (dont request keycard every login) Related: https://github.com/status-im/status-react/issues/9088 https://github.com/status-im/status-react/pull/9096 Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/constants.cljs#L242 From 43f36b73ac5129e927db789a906297ea182796fb Mon Sep 17 00:00:00 2001 From: Oskar Thoren Date: Thu, 28 Nov 2019 11:53:01 +0800 Subject: [PATCH 4/6] add link to eips from client spec --- status-client-spec.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/status-client-spec.md b/status-client-spec.md index 5d2e194..dec16d4 100644 --- a/status-client-spec.md +++ b/status-client-spec.md @@ -199,6 +199,11 @@ payload formats for things like 1:1 chat, group chat and public chat. These have various degrees of standardization. Please refer to [Initial Message Payload Specification](status-payloads-spec.md) for more details. +### BIPs and EIPs Standards support + +For a list of EIPs and BIPs that SHOULD be supported by Status client, please +see [Status EIPs Standards](status-EIPs.md). + ## Security Considerations TBD. From 39b73ce15602d4d4d91782ee83bb4042c7e83a0b Mon Sep 17 00:00:00 2001 From: Ricardo Guilherme Schmidt Date: Thu, 28 Nov 2019 01:58:37 -0200 Subject: [PATCH 5/6] add spaces at end lines --- status-EIPs.md | 204 ++++++++++++++++++++++++------------------------- 1 file changed, 102 insertions(+), 102 deletions(-) diff --git a/status-EIPs.md b/status-EIPs.md index 224a5e1..791609d 100644 --- a/status-EIPs.md +++ b/status-EIPs.md @@ -35,171 +35,171 @@ Status should follow all standards as possible. Whenever a feature is needed, it ### BIP32 - Hierarchical Deterministic Wallets -Support: Dependency -Reference: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki -Description: Enable wallets to derive multiple private keys from the same seed. -Used for: Dependency of BIP39 and BIP43 +Support: Dependency. +Reference: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki +Description: Enable wallets to derive multiple private keys from the same seed. +Used for: Dependency of BIP39 and BIP43. ### BIP39 - Mnemonic code for generating deterministic keys -Support: Dependency -Reference: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki +Support: Dependency. +Reference: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki Description: Enable wallet to create private key based on a safe seed phrase. Used for: Security and user experience. ### BIP43 - Purpose Field for Deterministic Wallets -Support: Dependency -Reference: https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki -Description: Enable wallet to create private keys branched for a specific purpose. -Used for: Dependency of BIP44, uses "ethereum" coin. +Support: Dependency. +Reference: https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki +Description: Enable wallet to create private keys branched for a specific purpose. +Used for: Dependency of BIP44, uses "ethereum" coin. ### BIP44 - Multi-Account Hierarchy for Deterministic Wallets -Support: Dependency -Reference: https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki -Description: Enable wallet to derive multiple accounts in top of BIP39 -Used for: Privacy -Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/constants.cljs#L240 -Observation: BIP44 don't solve privacy issues regarding the transparency of transactions, therefore directly connected addresses through a transactions can be identifiable by a "network reconnaissance attack" over transaction history, this attack together with leakage of information from centralized services, such as exchanges, would be fatal against the whole privacy of users, regardless of BIP44. +Support: Dependency. +Reference: https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki +Description: Enable wallet to derive multiple accounts in top of BIP39. +Used for: Privacy. +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/constants.cljs#L240 +Observation: BIP44 don't solve privacy issues regarding the transparency of transactions, therefore directly connected addresses through a transactions can be identifiable by a "network reconnaissance attack" over transaction history, this attack together with leakage of information from centralized services, such as exchanges, would be fatal against the whole privacy of users, regardless of BIP44. ### EIP20 - Fungible Token -Support: Full -Reference: https://eips.ethereum.org/EIPS/eip-20 -Description: Enable wallets to use tokens based on smart contracts compilant with this standard. -Used for: Wallet feature. -Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/tokens.cljs +Support: Full. +Reference: https://eips.ethereum.org/EIPS/eip-20 +Description: Enable wallets to use tokens based on smart contracts compilant with this standard. +Used for: Wallet feature. +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/tokens.cljs ### EIP55 - Mixed-case checksum address encoding -Support: Full -Reference: https://eips.ethereum.org/EIPS/eip-55 -Description: Checksum standard that uses lowercase and uppercase inside address hex value. -Used for: Sanity check of forms using ethereum address. -Related: https://github.com/status-im/status-react/issues/4959 https://github.com/status-im/status-react/issues/8707 -Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/eip55.cljs +Support: Full. +Reference: https://eips.ethereum.org/EIPS/eip-55 +Description: Checksum standard that uses lowercase and uppercase inside address hex value. +Used for: Sanity check of forms using ethereum address. +Related: https://github.com/status-im/status-react/issues/4959 https://github.com/status-im/status-react/issues/8707 +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/eip55.cljs ### EIP67 - Standard URI scheme with metadata, value and byte code -Support: Partial -Reference: https://github.com/ethereum/EIPs/issues/67 -Description: A standard way of creating Ethereum URIs for various use-cases. -Used for: Legacy support -https://github.com/status-im/status-react/issues/875 +Support: Partial. +Reference: https://github.com/ethereum/EIPs/issues/67 +Description: A standard way of creating Ethereum URIs for various use-cases. +Used for: Legacy support. +https://github.com/status-im/status-react/issues/875 ### EIP137 - Ethereum Domain Name Service - Specification -Support: Partial -Reference: https://eips.ethereum.org/EIPS/eip-137 -Description: Enable wallets to lookup ENS names. -Used for: User experience, as a wallet and identity feature, usernames. -Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/ens.cljs#L86 +Support: Partial. +Reference: https://eips.ethereum.org/EIPS/eip-137 +Description: Enable wallets to lookup ENS names. +Used for: User experience, as a wallet and identity feature, usernames. +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/ens.cljs#L86 ### EIP155 - Simple replay attack protection -Support: Full -Reference: https://eips.ethereum.org/EIPS/eip-155 -Description: Defined chainId parameter in the singed ethereum transaction payload. -Used for: Signing transactions, crucial to safety of users against replay attacks. -Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/core.cljs +Support: Full. +Reference: https://eips.ethereum.org/EIPS/eip-155 +Description: Defined chainId parameter in the singed ethereum transaction payload. +Used for: Signing transactions, crucial to safety of users against replay attacks. +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/core.cljs ### EIP165 - Standard Interface Detection -Support: Dependency/Partial -Reference: https://eips.ethereum.org/EIPS/eip-165 -Description: Standard interface for contract to answer if it supports other interfaces. -Used for: Dependency of ENS and EIP721. -Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/eip165.cljs +Support: Dependency/Partial. +Reference: https://eips.ethereum.org/EIPS/eip-165 +Description: Standard interface for contract to answer if it supports other interfaces. +Used for: Dependency of ENS and EIP721. +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/eip165.cljs ### EIP181 - ENS support for reverse resolution of Ethereum addresses -Support: Partial -Reference: https://eips.ethereum.org/EIPS/eip-181 -Description: Enable wallets to render reverse resolution of Ethereum addresses -Used for: Wallet feature -Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/ens.cljs#L86 +Support: Partial. +Reference: https://eips.ethereum.org/EIPS/eip-181 +Description: Enable wallets to render reverse resolution of Ethereum addresses. +Used for: Wallet feature. +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/ens.cljs#L86 ### EIP191 - Signed Message -Support: Full -Reference: https://eips.ethereum.org/EIPS/eip-191 -Description: Contract signature standard, adds an obrigatory padding to signed message to differentiate from Ethereum Transaction messages. -Used for: Dapp support, security, dependency of ERC712. +Support: Full. +Reference: https://eips.ethereum.org/EIPS/eip-191 +Description: Contract signature standard, adds an obrigatory padding to signed message to differentiate from Ethereum Transaction messages. +Used for: Dapp support, security, dependency of ERC712. ### EIP627 - Whisper Specification -Support: Full -Reference: https://eips.ethereum.org/EIPS/eip-627 -Description: format of Whisper messages within the ÐΞVp2p Wire Protocol -Used for: Chat protocol +Support: Full. +Reference: https://eips.ethereum.org/EIPS/eip-627 +Description: format of Whisper messages within the ÐΞVp2p Wire Protocol. +Used for: Chat protocol. ### EIP681 - URL Format for Transaction Requests -Support: Partial +Support: Partial. Reference: https://eips.ethereum.org/EIPS/eip-681 -Description: A link that pop up a transaction in the wallet. -Used for: Useful as QRCode data for tranasction requests, chat transaction requests and for dapp links to transaction requests. -Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/eip681.cljs -Related: [Issue #9183: URL Format for Transaction Requests (EIP681) is poorly supported](https://github.com/status-im/status-react/issues/9183) https://github.com/status-im/status-react/pull/9240 https://github.com/status-im/status-react/issues/9238 https://github.com/status-im/status-react/issues/7214 https://github.com/status-im/status-react/issues/7325 https://github.com/status-im/status-react/issues/8150 +Description: A link that pop up a transaction in the wallet. +Used for: Useful as QRCode data for tranasction requests, chat transaction requests and for dapp links to transaction requests. +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/eip681.cljs +Related: [Issue #9183: URL Format for Transaction Requests (EIP681) is poorly supported](https://github.com/status-im/status-react/issues/9183) https://github.com/status-im/status-react/pull/9240 https://github.com/status-im/status-react/issues/9238 https://github.com/status-im/status-react/issues/7214 https://github.com/status-im/status-react/issues/7325 https://github.com/status-im/status-react/issues/8150 ### EIP712 - Typed Signed Message -Support: Partial -Reference: https://eips.ethereum.org/EIPS/eip-712 -Description: Standarize types for contract siganture, allowing users to easily inspect whats being signed. -Used for: User experience, security. -Related: https://github.com/status-im/status-react/issues/5461 https://github.com/status-im/status-react/commit/ba37f7b8d029d3358c7b284f6a2383b9ef9526c9 +Support: Partial. +Reference: https://eips.ethereum.org/EIPS/eip-712 +Description: Standarize types for contract siganture, allowing users to easily inspect whats being signed. +Used for: User experience, security. +Related: https://github.com/status-im/status-react/issues/5461 https://github.com/status-im/status-react/commit/ba37f7b8d029d3358c7b284f6a2383b9ef9526c9 ### EIP721 - Non Fungible Token -Support: Partial -Reference: https://eips.ethereum.org/EIPS/eip-721 -Description: Enable wallets to use tokens based on smart contracts compilant with this standard. -Used for: Wallet feature. -Related: https://github.com/status-im/status-react/issues/8909 -Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/erc721.cljs https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/tokens.cljs +Support: Partial. +Reference: https://eips.ethereum.org/EIPS/eip-721 +Description: Enable wallets to use tokens based on smart contracts compilant with this standard. +Used for: Wallet feature. +Related: https://github.com/status-im/status-react/issues/8909 +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/erc721.cljs https://github.com/status-im/status-react/blob/develop/src/status_im/ethereum/tokens.cljs ### EIP945 - Web 3 QR Code Scanning API -Support: Full -Reference: https://github.com/ethereum/EIPs/issues/945 -Used for: Sharing contactcode, reading transaction requests. -Related: https://github.com/status-im/status-react/issues/5870 +Support: Full. +Reference: https://github.com/ethereum/EIPs/issues/945 +Used for: Sharing contactcode, reading transaction requests. +Related: https://github.com/status-im/status-react/issues/5870 ### EIP1102 - Opt-in account exposure -Support: Full -Reference: https://eips.ethereum.org/EIPS/eip-1102 -Description: Allow users to opt-in the exposure of their ethereum address to dapps they browse. -Used for: Privacy, DApp support. -Related: https://github.com/status-im/status-react/issues/7985 +Support: Full. +Reference: https://eips.ethereum.org/EIPS/eip-1102 +Description: Allow users to opt-in the exposure of their ethereum address to dapps they browse. +Used for: Privacy, DApp support. +Related: https://github.com/status-im/status-react/issues/7985 ### EIP1193 - Ethereum Provider JavaScript API -Support: Full -Reference: https://eips.ethereum.org/EIPS/eip-1193 -Description: Allows dapps to recognize event changes on wallet -Used for: DApp support. -Related: https://github.com/status-im/status-react/pull/7246 +Support: Full. +Reference: https://eips.ethereum.org/EIPS/eip-1193 +Description: Allows dapps to recognize event changes on wallet. +Used for: DApp support. +Related: https://github.com/status-im/status-react/pull/7246 ### EIP1577 - contenthash field for ENS -Support: Partial -Reference: https://eips.ethereum.org/EIPS/eip-1577 -Description: Allows users browse ENS domains using contenthash standard. -Used for: Browser, DApp support -Related: https://github.com/status-im/status-react/issues/6688 -Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/utils/contenthash.cljs https://github.com/status-im/status-react/blob/develop/test/cljs/status_im/test/utils/contenthash.cljs#L5 +Support: Partial. +Reference: https://eips.ethereum.org/EIPS/eip-1577 +Description: Allows users browse ENS domains using contenthash standard. +Used for: Browser, DApp support. +Related: https://github.com/status-im/status-react/issues/6688 +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/utils/contenthash.cljs https://github.com/status-im/status-react/blob/develop/test/cljs/status_im/test/utils/contenthash.cljs#L5 ### EIP1581 - Non-wallet usage of keys derived from BIP-32 trees -Support: Partial -Reference: https://eips.ethereum.org/EIPS/eip-1581 -Description: Allow wallet to derive keys that are less sensible (non wallet) -Used for: Security (dont reuse wallet key) and user experience (dont request keycard every login) -Related: https://github.com/status-im/status-react/issues/9088 https://github.com/status-im/status-react/pull/9096 -Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/constants.cljs#L242 +Support: Partial. +Reference: https://eips.ethereum.org/EIPS/eip-1581 +Description: Allow wallet to derive keys that are less sensible (non wallet). +Used for: Security (dont reuse wallet key) and user experience (dont request keycard every login). +Related: https://github.com/status-im/status-react/issues/9088 https://github.com/status-im/status-react/pull/9096 +Sourcecode: https://github.com/status-im/status-react/blob/develop/src/status_im/constants.cljs#L242 ## Security Considerations From b337c17fcbad5985b8155d604a69d690281be12a Mon Sep 17 00:00:00 2001 From: Ricardo Guilherme Schmidt Date: Thu, 28 Nov 2019 02:03:26 -0200 Subject: [PATCH 6/6] transpose table --- status-EIPs.md | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/status-EIPs.md b/status-EIPs.md index 791609d..ec62c22 100644 --- a/status-EIPs.md +++ b/status-EIPs.md @@ -25,11 +25,30 @@ Status should follow all standards as possible. Whenever a feature is needed, it ### Support table -| | BIP32 | BIP39 | BIP43 | BIP44 | EIP20 | EIP55 | EIP67 | EIP137 | EIP155 | EIP165 | EIP181 | EIP191 | EIP627 | EIP681 | EIP712 | EIP721 | EIP831 | EIP945 | EIP1102 | EIP1193 | EIP1577 | EIP1581 | -| --------- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------- | ------- | ------- | ------- | -| Status v0 | N | Y | N | N | Y | Y | P | P | Y | P | P | Y? | Y | Y | P | P | N | Y | Y | Y | Y | N | -| Status v1 | Y | Y | Y | Y | Y | Y | P | P | Y | N | N | N | Y | N | P | P | Y | Y | Y | Y | P | Y | -| Other | N | Y | N | N | Y | Y | N | N | Y | N | N | Y | N | Y | Y | Y | N | N | Y | Y | N | N | +| | Status v0 | Status v1 | Other | +|----------|-----------|-----------|----------| +| BIP32 | N | Y | N | +| BIP39 | Y | Y | Y | +| BIP43 | N | Y | N | +| BIP44 | N | Y | N | +| EIP20 | Y | Y | Y | +| EIP55 | Y | Y | Y | +| EIP67 | P | P | N | +| EIP137 | P | P | N | +| EIP155 | Y | Y | Y | +| EIP165 | P | N | N | +| EIP181 | P | N | N | +| EIP191 | Y? | N | Y | +| EIP627 | Y | Y | N | +| EIP681 | Y | N | Y | +| EIP712 | P | P | Y | +| EIP721 | P | P | Y | +| EIP831 | N | Y | N | +| EIP945 | Y | Y | N | +| EIP1102 | Y | Y | Y | +| EIP1193 | Y | Y | Y | +| EIP1577 | Y | P | N | +| EIP1581 | N | Y | N | ## Components