specs/docs/spec/8-eips.md

240 lines
11 KiB
Markdown
Raw Permalink Normal View History

2020-03-30 05:25:32 +00:00
---
permalink: /spec/8
2020-03-30 05:45:38 +00:00
title: 8/EIPS
parent: Stable specs
layout: default
2020-03-30 05:25:32 +00:00
---
2019-11-26 13:47:24 +00:00
2020-03-31 04:20:46 +00:00
# 8/EIPS
2019-11-26 13:47:24 +00:00
2020-03-24 06:25:08 +00:00
> Version: 0.2
>
> Status: Stable
2019-11-26 13:47:24 +00:00
>
> Authors: Ricardo Guilherme Schmidt <ricardo3@status.im>
## Abstract
Remove personal pronouns (#132) Resolves #115 * Rewrote 'you' and 'your' personal pronouns Additionally I've made related sentences more concise. NOTE I've ignored usages of you and your in comments and in links and section titles * Rewrote 'we' personal pronouns Again not changing usages in comments * Removed 'passive' and/or ambiguous language * Added README information about language mode * Added prepend to word list * Update README.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/draft/3-whisper-usage.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/draft/3-whisper-usage.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Added missing 'a's * Moved style related README info into STYLE-GUIDELINE.md * Added reference to Google Technical Writing * Tweaks to maintain consistency of changes across related specs * Addressed spelling and added link to the Discord server * Update docs/draft/12-sticker-pack.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/stable/11-waku-mailserver.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Addressed feedback Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Kim De Mey <kim.demey@gmail.com>
2020-06-03 22:02:45 +00:00
This specification describes how Status relates with EIPs.
2019-11-26 13:47:24 +00:00
## Table of Contents
2020-05-21 09:44:13 +00:00
- [Abstract](#abstract)
- [Table of Contents](#table-of-contents)
- [Introduction](#introduction)
- [Components](#components)
2019-11-26 13:47:24 +00:00
## Introduction
Remove personal pronouns (#132) Resolves #115 * Rewrote 'you' and 'your' personal pronouns Additionally I've made related sentences more concise. NOTE I've ignored usages of you and your in comments and in links and section titles * Rewrote 'we' personal pronouns Again not changing usages in comments * Removed 'passive' and/or ambiguous language * Added README information about language mode * Added prepend to word list * Update README.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/draft/3-whisper-usage.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/draft/3-whisper-usage.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Added missing 'a's * Moved style related README info into STYLE-GUIDELINE.md * Added reference to Google Technical Writing * Tweaks to maintain consistency of changes across related specs * Addressed spelling and added link to the Discord server * Update docs/draft/12-sticker-pack.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/stable/11-waku-mailserver.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Addressed feedback Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Kim De Mey <kim.demey@gmail.com>
2020-06-03 22:02:45 +00:00
Status should follow all standards as possible. Whenever the Status app needs a feature, it should be first checked if there is a standard for that, if not, Status should propose a standard.
2019-11-26 13:47:24 +00:00
### Support table
2020-05-06 14:45:52 +00:00
| | Status v0 | Status v1 | Other | State |
|----------|-----------|-----------|----------| -------- |
| BIP32 | N | Y | N | `stable` |
| BIP39 | Y | Y | Y | `stable` |
| BIP43 | N | Y | N | `stable` |
| BIP44 | N | Y | N | `stable` |
| EIP20 | Y | Y | Y | `stable` |
| EIP55 | Y | Y | Y | `stable` |
| EIP67 | P | P | N | `stable` |
| EIP137 | P | P | N | `stable` |
| EIP155 | Y | Y | Y | `stable` |
| EIP165 | P | N | N | `stable` |
| EIP181 | P | N | N | `stable` |
| EIP191 | Y? | N | Y | `stable` |
| EIP627 | Y | Y | N | `stable` |
| EIP681 | Y | N | Y | `stable` |
| EIP712 | P | P | Y | `stable` |
| EIP721 | P | P | Y | `stable` |
| EIP831 | N | Y | N | `stable` |
| EIP945 | Y | Y | N | `stable` |
| EIP1102 | Y | Y | Y | `stable` |
| EIP1193 | Y | Y | Y | `stable` |
| EIP1577 | Y | P | N | `stable` |
| EIP1581 | N | Y | N | `stable` |
| EIP1459 | N | | N | `raw` |
2019-11-26 13:47:24 +00:00
## Components
### BIP32 - Hierarchical Deterministic Wallets
2019-11-28 03:58:37 +00:00
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.
2019-11-26 13:47:24 +00:00
### BIP39 - Mnemonic code for generating deterministic keys
2019-11-28 03:58:37 +00:00
Support: Dependency.
Reference: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
2019-11-26 13:47:24 +00:00
Description: Enable wallet to create private key based on a safe seed phrase.
2019-11-27 06:19:44 +00:00
Used for: Security and user experience.
2019-11-26 13:47:24 +00:00
### BIP43 - Purpose Field for Deterministic Wallets
2019-11-28 03:58:37 +00:00
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.
2019-11-26 13:47:24 +00:00
### BIP44 - Multi-Account Hierarchy for Deterministic Wallets
2019-11-28 03:58:37 +00:00
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-mobile/blob/develop/src/status_im/constants.cljs#L240
2019-11-28 03:58:37 +00:00
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.
2019-11-26 13:47:24 +00:00
### EIP20 - Fungible Token
2019-11-28 03:58:37 +00:00
Support: Full.
Reference: https://eips.ethereum.org/EIPS/eip-20
Description: Enable wallets to use tokens based on smart contracts compliant with this standard.
2019-11-28 03:58:37 +00:00
Used for: Wallet feature.
Sourcecode: https://github.com/status-im/status-mobile/blob/develop/src/status_im/ethereum/tokens.cljs
2019-11-26 13:47:24 +00:00
### EIP55 - Mixed-case checksum address encoding
2019-11-28 03:58:37 +00:00
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-mobile/issues/4959 https://github.com/status-im/status-mobile/issues/8707
Sourcecode: https://github.com/status-im/status-mobile/blob/develop/src/status_im/ethereum/eip55.cljs
2019-11-26 13:47:24 +00:00
### EIP67 - Standard URI scheme with metadata, value and byte code
2019-11-28 03:58:37 +00:00
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-mobile/issues/875
2019-11-26 13:47:24 +00:00
### EIP137 - Ethereum Domain Name Service - Specification
2019-11-28 03:58:37 +00:00
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-mobile/blob/develop/src/status_im/ethereum/ens.cljs#L86
2019-11-26 13:47:24 +00:00
### EIP155 - Simple replay attack protection
2019-11-28 03:58:37 +00:00
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-mobile/blob/develop/src/status_im/ethereum/core.cljs
2019-11-26 13:47:24 +00:00
### EIP165 - Standard Interface Detection
2019-11-28 03:58:37 +00:00
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-mobile/blob/develop/src/status_im/ethereum/eip165.cljs
2019-11-26 13:47:24 +00:00
### EIP181 - ENS support for reverse resolution of Ethereum addresses
2019-11-28 03:58:37 +00:00
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-mobile/blob/develop/src/status_im/ethereum/ens.cljs#L86
2019-11-26 13:47:24 +00:00
### EIP191 - Signed Message
2019-11-28 03:58:37 +00:00
Support: Full.
Reference: https://eips.ethereum.org/EIPS/eip-191
Description: Contract signature standard, adds an obligatory padding to signed message to differentiate from Ethereum Transaction messages.
2019-11-28 03:58:37 +00:00
Used for: Dapp support, security, dependency of ERC712.
2019-11-26 13:47:24 +00:00
### EIP627 - Whisper Specification
2019-11-28 03:58:37 +00:00
Support: Full.
Reference: https://eips.ethereum.org/EIPS/eip-627
Description: format of Whisper messages within the ÐΞVp2p Wire Protocol.
Used for: Chat protocol.
2019-11-26 13:47:24 +00:00
### EIP681 - URL Format for Transaction Requests
2019-11-28 03:58:37 +00:00
Support: Partial.
2019-11-26 13:47:24 +00:00
Reference: https://eips.ethereum.org/EIPS/eip-681
2019-11-28 03:58:37 +00:00
Description: A link that pop up a transaction in the wallet.
Used for: Useful as QR code data for transaction requests, chat transaction requests and for dapp links to transaction requests.
Sourcecode: https://github.com/status-im/status-mobile/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-mobile/issues/9183) https://github.com/status-im/status-mobile/pull/9240 https://github.com/status-im/status-mobile/issues/9238 https://github.com/status-im/status-mobile/issues/7214 https://github.com/status-im/status-mobile/issues/7325 https://github.com/status-im/status-mobile/issues/8150
2019-11-26 13:47:24 +00:00
### EIP712 - Typed Signed Message
2019-11-28 03:58:37 +00:00
Support: Partial.
Reference: https://eips.ethereum.org/EIPS/eip-712
Description: Standardize types for contract signature, allowing users to easily inspect whats being signed.
2019-11-28 03:58:37 +00:00
Used for: User experience, security.
Related: https://github.com/status-im/status-mobile/issues/5461 https://github.com/status-im/status-mobile/commit/ba37f7b8d029d3358c7b284f6a2383b9ef9526c9
2019-11-26 13:47:24 +00:00
### EIP721 - Non Fungible Token
2019-11-28 03:58:37 +00:00
Support: Partial.
Reference: https://eips.ethereum.org/EIPS/eip-721
Description: Enable wallets to use tokens based on smart contracts compliant with this standard.
2019-11-28 03:58:37 +00:00
Used for: Wallet feature.
Related: https://github.com/status-im/status-mobile/issues/8909
Sourcecode: https://github.com/status-im/status-mobile/blob/develop/src/status_im/ethereum/erc721.cljs https://github.com/status-im/status-mobile/blob/develop/src/status_im/ethereum/tokens.cljs
2019-11-26 13:47:24 +00:00
### EIP945 - Web 3 QR Code Scanning API
2019-11-28 03:58:37 +00:00
Support: Full.
Reference: https://github.com/ethereum/EIPs/issues/945
Used for: Sharing contactcode, reading transaction requests.
Related: https://github.com/status-im/status-mobile/issues/5870
2019-11-26 13:47:24 +00:00
### EIP1102 - Opt-in account exposure
2019-11-28 03:58:37 +00:00
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-mobile/issues/7985
2019-11-26 13:47:24 +00:00
### EIP1193 - Ethereum Provider JavaScript API
2019-11-28 03:58:37 +00:00
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-mobile/pull/7246
2019-11-26 13:47:24 +00:00
### EIP1577 - contenthash field for ENS
2019-11-28 03:58:37 +00:00
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-mobile/issues/6688
Sourcecode: https://github.com/status-im/status-mobile/blob/develop/src/status_im/utils/contenthash.cljs https://github.com/status-im/status-mobile/blob/develop/test/cljs/status_im/test/utils/contenthash.cljs#L5
2019-11-26 13:47:24 +00:00
### EIP1581 - Non-wallet usage of keys derived from BIP-32 trees
2019-11-28 03:58:37 +00:00
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 (don't reuse wallet key) and user experience (don't request keycard every login).
Related: https://github.com/status-im/status-mobile/issues/9088 https://github.com/status-im/status-mobile/pull/9096
Sourcecode: https://github.com/status-im/status-mobile/blob/develop/src/status_im/constants.cljs#L242
2019-11-26 13:47:24 +00:00
2020-01-16 21:04:12 +00:00
### EIP1459 - Node Discovery via DNS
Support: -
Reference: https://eips.ethereum.org/EIPS/eip-1459
Description: Allows the storing and retrieving of nodes through merkle trees stored in TXT records of a domain.
2020-01-16 21:04:12 +00:00
Used for: Finding Waku nodes.
Related: -
Sourcecode: -
## Copyright
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).