mirror of https://github.com/status-im/specs.git
2 lines
18 KiB
HTML
2 lines
18 KiB
HTML
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <title>13/3RD-PARTY-USAGE - Status Specification</title> <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> <link rel="stylesheet" href="/assets/css/just-the-docs-default.css"> <script type="text/javascript" src="/assets/js/vendor/lunr.min.js"></script> <script type="text/javascript" src="/assets/js/just-the-docs.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Begin Jekyll SEO tag v2.7.1 --> <title>13/3RD-PARTY-USAGE | Status Specification</title> <meta name="generator" content="Jekyll v4.2.1" /> <meta property="og:title" content="13/3RD-PARTY-USAGE" /> <meta property="og:locale" content="en_US" /> <link rel="canonical" href="https://specs.status.im/draft/13" /> <meta property="og:url" content="https://specs.status.im/draft/13" /> <meta property="og:site_name" content="Status Specification" /> <meta name="twitter:card" content="summary" /> <meta property="twitter:title" content="13/3RD-PARTY-USAGE" /> <script type="application/ld+json"> {"@type":"WebPage","url":"https://specs.status.im/draft/13","headline":"13/3RD-PARTY-USAGE","@context":"https://schema.org"}</script> <!-- End Jekyll SEO tag --> </head> <body> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol id="svg-link" viewBox="0 0 24 24"> <title>Link</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"> <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path> </svg> </symbol> <symbol id="svg-search" viewBox="0 0 24 24"> <title>Search</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"> <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <symbol id="svg-doc" viewBox="0 0 24 24"> <title>Document</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file"> <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline> </svg> </symbol> </svg> <div class="side-bar"> <div class="site-header"> <a href="https://specs.status.im/" class="site-title lh-tight"> Status Specification </a> <a href="#" id="menu-button" class="site-button"> <svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-menu"></use></svg> </a> </div> <nav role="navigation" aria-label="Main" id="site-nav" class="site-nav"> <ul class="nav-list"><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://specs.status.im/spec/" class="nav-list-link">Stable specs</a><ul class="nav-list "><li class="nav-list-item "><a href="https://specs.status.im/spec/1" class="nav-list-link">1/CLIENT</a></li><li class="nav-list-item "><a href="https://specs.status.im/spec/10" class="nav-list-link">10/WAKU-USAGE</a></li><li class="nav-list-item "><a href="https://specs.status.im/spec/11" class="nav-list-link">11/WAKU-MAILSERVER</a></li><li class="nav-list-item "><a href="https://specs.status.im/spec/15" class="nav-list-link">15/NOTIFICATIONS</a></li><li class="nav-list-item "><a href="https://specs.status.im/spec/2" class="nav-list-link">2/ACCOUNT</a></li><li class="nav-list-item "><a href="https://specs.status.im/spec/3" class="nav-list-link">3/WHISPER-USAGE</a></li><li class="nav-list-item "><a href="https://specs.status.im/spec/4" class="nav-list-link">4/WHISPER-MAILSERVER</a></li><li class="nav-list-item "><a href="https://specs.status.im/spec/5" class="nav-list-link">5/SECURE-TRANSPORT</a></li><li class="nav-list-item "><a href="https://specs.status.im/spec/6" class="nav-list-link">6/PAYLOADS</a></li><li class="nav-list-item "><a href="https://specs.status.im/spec/8" class="nav-list-link">8/EIPS</a></li><li class="nav-list-item "><a href="https://specs.status.im/spec/9" class="nav-list-link">9/ETHEREUM-USAGE</a></li></ul></li><li class="nav-list-item active"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://specs.status.im/draft/" class="nav-list-link">Draft specs</a><ul class="nav-list "><li class="nav-list-item "><a href="https://specs.status.im/draft/12" class="nav-list-link">12/IPFS gateway for Sticker Pack</a></li><li class="nav-list-item active"><a href="https://specs.status.im/draft/13" class="nav-list-link active">13/3RD-PARTY-USAGE</a></li><li class="nav-list-item "><a href="https://specs.status.im/draft/14" class="nav-list-link">14/Dapp browser API usage</a></li><li class="nav-list-item "><a href="https://specs.status.im/draft/16" class="nav-list-link">16/Keycard Usage for Wallet and Chat Keys</a></li><li class="nav-list-item "><a href="https://specs.status.im/draft/3" class="nav-list-link">3/WHISPER-USAGE</a></li><li class="nav-list-item "><a href="https://specs.status.im/draft/6" class="nav-list-link">6/PAYLOADS</a></li><li class="nav-list-item "><a href="https://specs.status.im/draft/7" class="nav-list-link">7/GROUP-CHAT</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="https://specs.status.im/raw/" class="nav-list-link">Raw specs</a><ul class="nav-list "><li class="nav-list-item "><a href="https://specs.status.im/raw/16" class="nav-list-link">16/PUSH-NOTIFICATION-SERVER</a></li></ul></li><li class="nav-list-item"><a href="https://specs.status.im/development" class="nav-list-link">DEVELOPMENT</a></li><li class="nav-list-item"><a href="https://specs.status.im/style-guideline" class="nav-list-link">STYLE-GUIDELINE</a></li></ul> </nav> <footer class="site-footer"> This site uses <a href="https://github.com/pmarsceill/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </footer> </div> <div class="main" id="top"> <div id="main-header" class="main-header"> <div class="search"> <div class="search-input-wrap"> <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search Status Specification" aria-label="Search Status Specification" autocomplete="off"> <label for="search-input" class="search-label"><svg viewBox="0 0 24 24" class="search-icon"><use xlink:href="#svg-search"></use></svg></label> </div> <div id="search-results" class="search-results"></div> </div> </div> <div id="main-content-wrap" class="main-content-wrap"> <nav aria-label="Breadcrumb" class="breadcrumb-nav"> <ol class="breadcrumb-nav-list"> <li class="breadcrumb-nav-list-item"><a href="https://specs.status.im/draft/">Draft specs</a></li> <li class="breadcrumb-nav-list-item"><span>13/3RD-PARTY-USAGE</span></li> </ol> </nav> <div id="main-content" class="main-content" role="main"> <h1 id="133rd-party"> <a href="#133rd-party" class="anchor-heading" aria-labelledby="133rd-party"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> 13/3RD-PARTY </h1> <blockquote> <p>Version: 0.1</p> <p>Status: Draft</p> <p>Authors: Volodymyr Kozieiev <a href="mailto:volodymyr@status.im">volodymyr@status.im</a></p> </blockquote> <h1 id="third-party-apis-used-for-core-functionality"> <a href="#third-party-apis-used-for-core-functionality" class="anchor-heading" aria-labelledby="third-party-apis-used-for-core-functionality"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Third party APIs used for core functionality </h1> <h2 id="table-of-contents"> <a href="#table-of-contents" class="anchor-heading" aria-labelledby="table-of-contents"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Table of Contents </h2> <ol> <li><a href="#abstract">Abstract</a></li> <li><a href="#definitions">Definitions</a></li> <li><a href="#why-3rd-party-api-can-be-a-problem">Why 3rd party API can be a problem?</a></li> <li><a href="#3rd-party-apis-used-by-current-status-app">3rd party APIs used by Status</a> <ul> <li><a href="#infura">Infura</a></li> <li><a href="#etherscan">Etherscan</a></li> <li><a href="#cryptocompare">CryptoCompare</a></li> <li><a href="#collectibles">Collectibles</a></li> <li><a href="#iubenda">Iubenda</a></li> </ul> </li> <li><a href="#changelog">Changelog</a></li> <li><a href="#copyright">Copyright</a></li> </ol> <h2 id="abstract"> <a href="#abstract" class="anchor-heading" aria-labelledby="abstract"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Abstract </h2> <p>This specification discusses 3rd party APIs that Status relies on. These APIs provide various capabilities such as:</p> <ul> <li>communicate with the Ethereum network</li> <li>allow users to see address and transaction details on external website</li> <li>get fiat/crypto exchange rates</li> <li>get information about collectibles</li> <li>hosts privacy policy</li> </ul> <h2 id="definitions"> <a href="#definitions" class="anchor-heading" aria-labelledby="definitions"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Definitions </h2> <div class="table-wrapper"><table> <thead> <tr> <th>Term</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>Fiat money</td> <td>Currency which established as money, often by government regulation, but that has no intrinsic value</td> </tr> <tr> <td>Full node</td> <td>Any computer, connected to the Ethereum network, which fully enforces all the consensus rules of Ethereum.</td> </tr> <tr> <td>Crypto-collectible</td> <td>A cryptographically unique, non-fungible digital asset . Unlike cryptocurrencies, which require all tokens to be identical, each crypto-collectible token is unique or limited in quantity.</td> </tr> </tbody> </table></div> <h2 id="why-3rd-party-api-can-be-a-problem"> <a href="#why-3rd-party-api-can-be-a-problem" class="anchor-heading" aria-labelledby="why-3rd-party-api-can-be-a-problem"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Why 3rd party API can be a problem? </h2> <p>Relying on 3rd party APIs interferes with <code class="language-plaintext highlighter-rouge">censorship resistance</code> Status principle. Since Status aims to avoid suppression of information it is important to reduce amount of 3rd parties crucial for app functionality.</p> <h2 id="3rd-party-apis-used-by-current-status-app"> <a href="#3rd-party-apis-used-by-current-status-app" class="anchor-heading" aria-labelledby="3rd-party-apis-used-by-current-status-app"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> 3rd party APIs used by current Status app </h2> <h3 id="infura"> <a href="#infura" class="anchor-heading" aria-labelledby="infura"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Infura </h3> <h5 id="what-is-it"> <a href="#what-is-it" class="anchor-heading" aria-labelledby="what-is-it"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> What is it? </h5> <p>Infura hosts a collection of full nodes for the Ethereum network and provides an API to access both the Ethereum and IPFS networks without having to run a full node.</p> <h5 id="how-status-use-it"> <a href="#how-status-use-it" class="anchor-heading" aria-labelledby="how-status-use-it"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> How Status use it? </h5> <p>Status works on mobile devices and therefore can’t rely on local node. So all communication to Ethereum network happens via Infura.</p> <h5 id="concerns"> <a href="#concerns" class="anchor-heading" aria-labelledby="concerns"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Concerns </h5> <p>Making a HTTP request means that a user leaks metadata, which can be used in various attacks if an attacker hacks the service. Infura hosts on centralized providers. If these fail or the provider cuts off service, then Status features requiring Ethereum calls will.</p> <h3 id="etherscan"> <a href="#etherscan" class="anchor-heading" aria-labelledby="etherscan"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Etherscan </h3> <h5 id="what-is-it-1"> <a href="#what-is-it-1" class="anchor-heading" aria-labelledby="what-is-it-1"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> What is it? </h5> <p>Etherscan is a service that allows user to explore and search the Ethereum blockchain for transactions, addresses, tokens, prices and other activities taking place on Ethereum.</p> <h5 id="how-status-use-it-1"> <a href="#how-status-use-it-1" class="anchor-heading" aria-labelledby="how-status-use-it-1"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> How Status use it? </h5> <p>Status Wallet allows users to view details of addresses and transactions on Etherscan.</p> <h5 id="concerns-1"> <a href="#concerns-1" class="anchor-heading" aria-labelledby="concerns-1"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Concerns </h5> <p>If Etherscan fails user won’t be able to view address or transaction details with it. But inside the app this info will still be available.</p> <h3 id="cryptocompare"> <a href="#cryptocompare" class="anchor-heading" aria-labelledby="cryptocompare"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> CryptoCompare </h3> <h5 id="what-is-it-2"> <a href="#what-is-it-2" class="anchor-heading" aria-labelledby="what-is-it-2"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> What is it? </h5> <p>CryptoCompare is a service that shows live streaming prices, charts and analysis from top crypto exchanges.</p> <h5 id="how-status-use-it-2"> <a href="#how-status-use-it-2" class="anchor-heading" aria-labelledby="how-status-use-it-2"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> How Status use it? </h5> <p>Status regularly fetches crypto prices from CryptoCompare. Using that info Status calculates fiat value for transaction or wallet assets.</p> <h5 id="concerns-2"> <a href="#concerns-2" class="anchor-heading" aria-labelledby="concerns-2"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Concerns </h5> <p>Making a HTTP request means that a user leaks metadata, which can be used in various attacks if an attacker hacks the service. If CryptoCompare fails Status won’t be able to show fiat equivalent of crypto in wallet.</p> <h3 id="collectibles"> <a href="#collectibles" class="anchor-heading" aria-labelledby="collectibles"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Collectibles </h3> <p>There is a set of services that used for getting information about collectibles:</p> <ul> <li>https://api.pixura.io/graphql</li> <li>https://www.etheremon.com/api</li> <li>https://us-central1-cryptostrikers-prod.cloudfunctions.net/cards/</li> <li>https://api.cryptokitties.co/</li> </ul> <h5 id="concerns-3"> <a href="#concerns-3" class="anchor-heading" aria-labelledby="concerns-3"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Concerns </h5> <p>Making a HTTP request means that a user leaks metadata, which can be used in various attacks if an attacker hacks the service.</p> <h3 id="iubenda"> <a href="#iubenda" class="anchor-heading" aria-labelledby="iubenda"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Iubenda </h3> <h5 id="what-is-it-3"> <a href="#what-is-it-3" class="anchor-heading" aria-labelledby="what-is-it-3"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> What is it? </h5> <p>Service that helps in creating documents that make websites and apps compliant with the law across multiple countries and legislations.</p> <h5 id="how-status-use-it-3"> <a href="#how-status-use-it-3" class="anchor-heading" aria-labelledby="how-status-use-it-3"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> How Status use it? </h5> <p>Privacy policy of Status hosted on Iubenda.</p> <h5 id="concerns-4"> <a href="#concerns-4" class="anchor-heading" aria-labelledby="concerns-4"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Concerns </h5> <p>If Iubenda fails Status users won’t be able to navigate to app’s privacy policy.</p> <h2 id="changelog"> <a href="#changelog" class="anchor-heading" aria-labelledby="changelog"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Changelog </h2> <div class="table-wrapper"><table> <thead> <tr> <th style="text-align: center">Version</th> <th>Comment</th> </tr> </thead> <tbody> <tr> <td style="text-align: center"><a href="https://github.com/status-im/specs/blob/master/docs/draft/9-3rd-party.md">0.1.0</a></td> <td>Initial Release</td> </tr> </tbody> </table></div> <h2 id="copyright"> <a href="#copyright" class="anchor-heading" aria-labelledby="copyright"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Copyright </h2> <p>Copyright and related rights waived via <a href="https://creativecommons.org/publicdomain/zero/1.0/">CC0</a>.</p> </div> </div> <div class="search-overlay"></div> </div> </body> </html>
|