This commit is contained in:
Piotr Włodarek 2017-12-28 22:23:29 +01:00
parent c73258f1e7
commit 69a2ec1f07
16 changed files with 34 additions and 3601 deletions

View file

@ -1,646 +0,0 @@
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="description" content="Unofficial Monero Documentation">
<link rel="canonical" href="https://monerodocs.org/Multisignature/">
<meta name="author" content="Piotr 'Qertoip' Włodarek">
<meta name="lang:clipboard.copy" content="Copy to clipboard">
<meta name="lang:clipboard.copied" content="Copied to clipboard">
<meta name="lang:search.language" content="en">
<meta name="lang:search.result.none" content="No matching documents">
<meta name="lang:search.result.one" content="1 matching document">
<meta name="lang:search.result.other" content="# matching documents">
<meta name="lang:search.tokenizer" content="[\s\-]+">
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-0.17.2, mkdocs-material-2.2.1">
<title>Multisignature - Monero Docs</title>
<link rel="stylesheet" href="../assets/stylesheets/application.41c6761c.css">
<link rel="stylesheet" href="../assets/stylesheets/application-palette.792431c1.css">
<script src="../assets/javascripts/modernizr.1aa3b519.js"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="../extra.css">
</head>
<body data-md-color-primary="indigo" data-md-color-accent="indigo">
<svg class="md-svg">
<defs>
<svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg>
</defs>
</svg>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<header class="md-header" data-md-component="header">
<nav class="md-header-nav md-grid">
<div class="md-flex">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="https://monerodocs.org/" title="Monero Docs" class="md-header-nav__button md-logo">
<i class="md-icon"></i>
</a>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label>
</div>
<div class="md-flex__cell md-flex__cell--stretch">
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
<span class="md-header-nav__topic">
Monero Docs
</span>
<span class="md-header-nav__topic">
Multisignature
</span>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="search"></label>
<div class="md-search__inner">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" required placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query">
<label class="md-icon md-search__icon" for="search"></label>
<button type="reset" class="md-icon md-search__icon" data-md-component="reset">&#xE5CD;</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="result">
<div class="md-search-result__meta">
Type to start searching
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<div class="md-header-nav__source">
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
monerodocs/md
</div>
</a>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container">
<main class="md-main">
<div class="md-main__inner md-grid" data-md-component="container">
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="drawer">
<span class="md-nav__button md-logo">
<i class="md-icon"></i>
</span>
Monero Docs
</label>
<div class="md-nav__source">
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
monerodocs/md
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." title="Home" class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item">
<a href="../Technical-Specs/" title="Technical Specs" class="md-nav__link">
Technical Specs
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
<label class="md-nav__link" for="nav-3">
Primitives
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-3">
Primitives
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../primitives/Base58/" title="Base 58" class="md-nav__link">
Base 58
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
<label class="md-nav__link" for="nav-4">
Address
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-4">
Address
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../public-address/Standard-Address/" title="Standard" class="md-nav__link">
Standard
</a>
</li>
<li class="md-nav__item">
<a href="../public-address/Integrated-Address/" title="Integrated" class="md-nav__link">
Integrated
</a>
</li>
<li class="md-nav__item">
<a href="../public-address/Subaddress/" title="Subaddress" class="md-nav__link">
Subaddress
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc">
<label class="md-nav__link md-nav__link--active" for="toc">
Multisignature
</label>
<a href="./" title="Multisignature" class="md-nav__link md-nav__link--active">
Multisignature
</a>
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#monero-multisignature" title="Monero multisignature" class="md-nav__link">
Monero multisignature
</a>
</li>
<li class="md-nav__item">
<a href="#multisig-wallet-setup" title="Multisig wallet setup" class="md-nav__link">
Multisig wallet setup
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#1-prepare_multisig" title="1. prepare_multisig" class="md-nav__link">
1. prepare_multisig
</a>
</li>
<li class="md-nav__item">
<a href="#2-make_multisig" title="2. make_multisig" class="md-nav__link">
2. make_multisig
</a>
</li>
<li class="md-nav__item">
<a href="#3-finalize_multisig" title="3. finalize_multisig" class="md-nav__link">
3. finalize_multisig
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#receiving-funds" title="Receiving funds" class="md-nav__link">
Receiving funds
</a>
</li>
<li class="md-nav__item">
<a href="#spending-funds" title="Spending funds" class="md-nav__link">
Spending funds
</a>
</li>
<li class="md-nav__item">
<a href="#reference" title="Reference" class="md-nav__link">
Reference
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#monero-multisignature" title="Monero multisignature" class="md-nav__link">
Monero multisignature
</a>
</li>
<li class="md-nav__item">
<a href="#multisig-wallet-setup" title="Multisig wallet setup" class="md-nav__link">
Multisig wallet setup
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#1-prepare_multisig" title="1. prepare_multisig" class="md-nav__link">
1. prepare_multisig
</a>
</li>
<li class="md-nav__item">
<a href="#2-make_multisig" title="2. make_multisig" class="md-nav__link">
2. make_multisig
</a>
</li>
<li class="md-nav__item">
<a href="#3-finalize_multisig" title="3. finalize_multisig" class="md-nav__link">
3. finalize_multisig
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#receiving-funds" title="Receiving funds" class="md-nav__link">
Receiving funds
</a>
</li>
<li class="md-nav__item">
<a href="#spending-funds" title="Spending funds" class="md-nav__link">
Spending funds
</a>
</li>
<li class="md-nav__item">
<a href="#reference" title="Reference" class="md-nav__link">
Reference
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/monerodocs/md/edit/master/docs/Multisignature.md" title="Edit this page" class="md-icon md-content__icon">&#xE3C9;</a>
<h1 id="multisignature">Multisignature</h1>
<p><strong>!! This is unreleased feature !!</strong></p>
<p>In cryptocurrencies, multisig feature allows to sign transaction with more than one private key. Funds protected with multisig can only be spent by signing with M-of-N keys.</p>
<p>Example use cases:</p>
<ul>
<li>shared account (1-of-2; both husband and wife individually have full access to their funds)</li>
<li>consensus account (2-of-2; both husband and wife must agree to spend their funds)</li>
<li>threshold account (2-of-3; an escrow service is involved as an independent 3rd party, to co-sign with either the seller, or with the buyer, if seller and buyer do not agree)</li>
<li>secure account (2-of-3; a single owner controlls all 3 keys but secures them via a different means to diversify risks)</li>
<li>arbitrary threshold account (M-of-N; some cryptocurrencies provide full flexibility on the number of signers)</li>
</ul>
<h2 id="monero-multisignature">Monero multisignature</h2>
<p>Monero doesn't directly implement multisignatures (at least not in a classical sense). Monero emulates the feature by secret splitting.</p>
<p>Transactions are still signed with a single spend key. The spend key is a sum of all N private keys. The rationale for such design is to decouple multisig from ring signatures.</p>
<p>Let's consider the 2-of-3 scheme. We have 3 participants. Each participant is granted exactly 2 private keys in a way that pairs do not repeat between participants. This way any 2 participants together have all 3 private keys required to create the private spend key.</p>
<p>Multi-signing is a wallet-level feature. There is no way to learn from the blockchain which transactions were created using multiple signatures.</p>
<p>It is also worth noting in Monero there is no multisig addresses as such. <a href="../Public-Address">Address structure</a> does not care how the underlying private spend key got created.</p>
<p>In Monero, only N-of-N and (N-1)-of-N multisignature schemes are supported. This covers all common scenarios mentioned above but does not allow for arbitrary voting (like "3-of-5 board members").</p>
<p>After multisig wallet setup every participant ends up knowing the public address and private view key. This is necessary for participants to recognize and decipher transactions they are supposed to co-sign.</p>
<h2 id="multisig-wallet-setup">Multisig wallet setup</h2>
<p>Let's consider a 2-of-3 scheme as it generalizes well. There will be three CLI wallet commands involved:</p>
<h3 id="1-prepare_multisig">1. prepare_multisig</h3>
<p>Every participant independently generates <strong>initialization data</strong>. This is <strong>not</strong> an address.</p>
<p>Every participant sends his initialization data manually to all other participants over secure channel.</p>
<h3 id="2-make_multisig">2. make_multisig</h3>
<p>Every participant applies initialization data from other participants. This results in a <strong>second round of initialization data</strong>. This is still <strong>not</strong> an address.</p>
<p>Every participants sends his second round of init data to all other participants over secure channel.</p>
<h3 id="3-finalize_multisig">3. finalize_multisig</h3>
<p>Every participant finalizes wallet creation by applying the second round of init data from all other participants. This finally results in a wallet <strong>public address</strong> and <strong>private view key</strong> to be known for all participants. </p>
<p>Please note actions are symmetric for all participants. Even though we considered a 2-of-3 scheme, every participant cooperates with everyone else. The secret splitting is performed internally by the wallet.</p>
<p>Secure sharing of initialization data between participants is manual. The wallet itself does not provide any secure communication channel. This is out of scope.</p>
<h2 id="receiving-funds">Receiving funds</h2>
<p>Address built by multisig setup is like any other address.</p>
<p>You can generate integrated addresses and subaddresses based on it.</p>
<p>All participants are able to see incoming funds as they share the private view key.</p>
<p>With a CLI, use the following commands to see incoming payments:</p>
<pre><code>address
refresh
show_transfers
</code></pre>
<h2 id="spending-funds">Spending funds</h2>
<p>TODO</p>
<h2 id="reference">Reference</h2>
<ul>
<li><a href="https://monero.stackexchange.com/questions/5646/how-to-use-monero-multisignature-wallets-2-2-2-3">https://monero.stackexchange.com/questions/5646/how-to-use-monero-multisignature-wallets-2-2-2-3</a></li>
</ul>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="../public-address/Subaddress/" title="Subaddress" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
</div>
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Previous
</span>
Subaddress
</span>
</div>
</a>
</nav>
</div>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
powered by
<a href="http://www.mkdocs.org">MkDocs</a>
and
<a href="https://squidfunk.github.io/mkdocs-material/">
Material for MkDocs</a>
</div>
</div>
</div>
</footer>
</div>
<script src="../assets/javascripts/application.5165553b.js"></script>
<script>app.initialize({version:"0.17.2",url:{base:".."}})</script>
</body>
</html>

View file

@ -1,700 +0,0 @@
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="description" content="Unofficial Monero Documentation">
<link rel="canonical" href="https://monerodocs.org/Technical-Specs/">
<meta name="author" content="Piotr 'Qertoip' Włodarek">
<meta name="lang:clipboard.copy" content="Copy to clipboard">
<meta name="lang:clipboard.copied" content="Copied to clipboard">
<meta name="lang:search.language" content="en">
<meta name="lang:search.result.none" content="No matching documents">
<meta name="lang:search.result.one" content="1 matching document">
<meta name="lang:search.result.other" content="# matching documents">
<meta name="lang:search.tokenizer" content="[\s\-]+">
<link rel="shortcut icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-0.17.2, mkdocs-material-2.2.1">
<title>Technical Specs - Monero Docs</title>
<link rel="stylesheet" href="../assets/stylesheets/application.41c6761c.css">
<link rel="stylesheet" href="../assets/stylesheets/application-palette.792431c1.css">
<script src="../assets/javascripts/modernizr.1aa3b519.js"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="../extra.css">
</head>
<body data-md-color-primary="indigo" data-md-color-accent="indigo">
<svg class="md-svg">
<defs>
<svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg>
</defs>
</svg>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<header class="md-header" data-md-component="header">
<nav class="md-header-nav md-grid">
<div class="md-flex">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="https://monerodocs.org/" title="Monero Docs" class="md-header-nav__button md-logo">
<i class="md-icon"></i>
</a>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label>
</div>
<div class="md-flex__cell md-flex__cell--stretch">
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
<span class="md-header-nav__topic">
Monero Docs
</span>
<span class="md-header-nav__topic">
Technical Specs
</span>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="search"></label>
<div class="md-search__inner">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" required placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query">
<label class="md-icon md-search__icon" for="search"></label>
<button type="reset" class="md-icon md-search__icon" data-md-component="reset">&#xE5CD;</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="result">
<div class="md-search-result__meta">
Type to start searching
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<div class="md-header-nav__source">
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
monerodocs/md
</div>
</a>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container">
<main class="md-main">
<div class="md-main__inner md-grid" data-md-component="container">
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="drawer">
<span class="md-nav__button md-logo">
<i class="md-icon"></i>
</span>
Monero Docs
</label>
<div class="md-nav__source">
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
monerodocs/md
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." title="Home" class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc">
<label class="md-nav__link md-nav__link--active" for="toc">
Technical Specs
</label>
<a href="./" title="Technical Specs" class="md-nav__link md-nav__link--active">
Technical Specs
</a>
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#no-premine-no-instamine-no-token" title="No premine, no instamine, no token" class="md-nav__link">
No premine, no instamine, no token
</a>
</li>
<li class="md-nav__item">
<a href="#proof-of-work" title="Proof of Work" class="md-nav__link">
Proof of Work
</a>
</li>
<li class="md-nav__item">
<a href="#difficulty-retarget" title="Difficulty retarget" class="md-nav__link">
Difficulty retarget
</a>
</li>
<li class="md-nav__item">
<a href="#block-time" title="Block time" class="md-nav__link">
Block time
</a>
</li>
<li class="md-nav__item">
<a href="#block-reward" title="Block reward" class="md-nav__link">
Block reward
</a>
</li>
<li class="md-nav__item">
<a href="#block-size" title="Block size" class="md-nav__link">
Block size
</a>
</li>
<li class="md-nav__item">
<a href="#emission-curve" title="Emission curve" class="md-nav__link">
Emission curve
</a>
</li>
<li class="md-nav__item">
<a href="#max-supply" title="Max supply" class="md-nav__link">
Max supply
</a>
</li>
<li class="md-nav__item">
<a href="#sender-privacy" title="Sender privacy" class="md-nav__link">
Sender privacy
</a>
</li>
<li class="md-nav__item">
<a href="#recipient-privacy" title="Recipient privacy" class="md-nav__link">
Recipient privacy
</a>
</li>
<li class="md-nav__item">
<a href="#amount-obfuscation" title="Amount obfuscation" class="md-nav__link">
Amount obfuscation
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
<label class="md-nav__link" for="nav-3">
Primitives
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-3">
Primitives
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../primitives/Base58/" title="Base 58" class="md-nav__link">
Base 58
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
<label class="md-nav__link" for="nav-4">
Address
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-4">
Address
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../public-address/Standard-Address/" title="Standard" class="md-nav__link">
Standard
</a>
</li>
<li class="md-nav__item">
<a href="../public-address/Integrated-Address/" title="Integrated" class="md-nav__link">
Integrated
</a>
</li>
<li class="md-nav__item">
<a href="../public-address/Subaddress/" title="Subaddress" class="md-nav__link">
Subaddress
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../Multisignature/" title="Multisignature" class="md-nav__link">
Multisignature
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#no-premine-no-instamine-no-token" title="No premine, no instamine, no token" class="md-nav__link">
No premine, no instamine, no token
</a>
</li>
<li class="md-nav__item">
<a href="#proof-of-work" title="Proof of Work" class="md-nav__link">
Proof of Work
</a>
</li>
<li class="md-nav__item">
<a href="#difficulty-retarget" title="Difficulty retarget" class="md-nav__link">
Difficulty retarget
</a>
</li>
<li class="md-nav__item">
<a href="#block-time" title="Block time" class="md-nav__link">
Block time
</a>
</li>
<li class="md-nav__item">
<a href="#block-reward" title="Block reward" class="md-nav__link">
Block reward
</a>
</li>
<li class="md-nav__item">
<a href="#block-size" title="Block size" class="md-nav__link">
Block size
</a>
</li>
<li class="md-nav__item">
<a href="#emission-curve" title="Emission curve" class="md-nav__link">
Emission curve
</a>
</li>
<li class="md-nav__item">
<a href="#max-supply" title="Max supply" class="md-nav__link">
Max supply
</a>
</li>
<li class="md-nav__item">
<a href="#sender-privacy" title="Sender privacy" class="md-nav__link">
Sender privacy
</a>
</li>
<li class="md-nav__item">
<a href="#recipient-privacy" title="Recipient privacy" class="md-nav__link">
Recipient privacy
</a>
</li>
<li class="md-nav__item">
<a href="#amount-obfuscation" title="Amount obfuscation" class="md-nav__link">
Amount obfuscation
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/monerodocs/md/edit/master/docs/Technical-Specs.md" title="Edit this page" class="md-icon md-content__icon">&#xE3C9;</a>
<h1 id="technical-specs">Technical Specs</h1>
<h2 id="no-premine-no-instamine-no-token">No premine, no instamine, no token</h2>
<ul>
<li>Monero had no premine or instamine</li>
<li>Monero did not sell any token</li>
<li>Monero had no presale of any kind</li>
</ul>
<h2 id="proof-of-work">Proof of Work</h2>
<ul>
<li>CryptoNight</li>
<li>may change in the future</li>
</ul>
<h2 id="difficulty-retarget">Difficulty retarget</h2>
<ul>
<li>every block</li>
<li>based on the last 720 blocks, excluding 20% of the timestamp outliers</li>
</ul>
<h2 id="block-time">Block time</h2>
<ul>
<li>2 minutes</li>
<li>may change in the future as long as emission curve is preserved</li>
</ul>
<h2 id="block-reward">Block reward</h2>
<ul>
<li>~6 XMR as of Dec 2017, see the <a href="https://moneroblocks.info/">latest block</a> coinbase transaction amount for current reward</li>
<li>smoothly decreasing and subject to penalties for blocks greater then median size of the last 100 blocks (M100)</li>
</ul>
<h2 id="block-size">Block size</h2>
<ul>
<li>dynamic, maximum of two times median size of the last 100 blocks (2 * M100)</li>
</ul>
<h2 id="emission-curve">Emission curve</h2>
<p><strong>Main curve</strong></p>
<p>First, the main emission is about to produce ~18.132 million coins by the end of May 2022.</p>
<p>As of Dec 2017 the emission is about 30 XMR per 10 minutes.</p>
<p>See <a href="https://www.reddit.com/r/Monero/comments/512kwh/useful_for_learning_about_monero_coin_emission/">charts and details</a>.</p>
<p><strong>Tail curve</strong></p>
<p>The tail emission kicks in once main emission is done.</p>
<p>It will produce 0.6 XMR per 2-minute block.</p>
<p>This translates to &lt;1% inflation decreasing over time.</p>
<h2 id="max-supply">Max supply</h2>
<ul>
<li>infinite</li>
</ul>
<h2 id="sender-privacy">Sender privacy</h2>
<ul>
<li>Ring signatures</li>
</ul>
<h2 id="recipient-privacy">Recipient privacy</h2>
<ul>
<li>Stealth addresses</li>
</ul>
<h2 id="amount-obfuscation">Amount obfuscation</h2>
<ul>
<li>Ring confidential transactions</li>
</ul>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href=".." title="Home" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
</div>
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Previous
</span>
Home
</span>
</div>
</a>
<a href="../primitives/Base58/" title="Base 58" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Next
</span>
Base 58
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
</div>
</a>
</nav>
</div>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
powered by
<a href="http://www.mkdocs.org">MkDocs</a>
and
<a href="https://squidfunk.github.io/mkdocs-material/">
Material for MkDocs</a>
</div>
</div>
</div>
</footer>
</div>
<script src="../assets/javascripts/application.5165553b.js"></script>
<script>app.initialize({version:"0.17.2",url:{base:".."}})</script>
</body>
</html>

View file

@ -0,0 +1,5 @@
# monerod
https://www.reddit.com/r/Monero/comments/3jhyqc/0mq_help_share_this_exciting_news/
The Monero daemon is the piece of software that keeps you synced up with the Monero network. That's all it does, it doesn't know about "you" or "your funds" or "your transactions". If you want to do anything on the Monero network, and thus on the Monero blockchain, you have to talk to this daemon that will then talk to the network as a whole by rebroadcasting transactions you initiate. Similarly, if you want to get history from the blockchain, or the current memory pool of transactions, or outputs to mix with, you can ask the daemon for that information.

View file

@ -0,0 +1,19 @@
# Monero directory overview
This considers the released version of Monero software. Once unpacked, directory structure looks like:
![Monero Directory](/images/monero-dir.png "Logo Title Text 1")
## Separation of node and wallet
Monero project nicely decouples node logic `monerod` from wallet logic `monero-wallet-*`.
Wallet logic is offered through three independent user interfaces - the GUI, the CLI, and the HTTP API.
| Executable | Description
| -------------------------- |:-----------------------------------------------------------------------------------------------------------------------------------
| `monerod` | The full node daemon. Does not require a wallet.
| `monero-wallet-gui` | Wallet logic and graphical user interface. Requires `monerod` running.
| `monero-wallet-cli` | Wallet logic and commandline user interface. Requires `monerod` running.
| `monero-wallet-rpc` | Wallet logic and HTTP API (JSON-RPC protocol). Requires `monerod` running.
| `monero-blockchain-export` | Tool to export synchronized blockchain to `blockchain.raw` file.
| `monero-blockchain-import` | Tool to import [blockchain.raw](https://downloads.getmonero.org/blockchain.raw) - ideally your own trusted copy.

BIN
docs/images/monero-dir.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -25,7 +25,7 @@ Index | Size in bytes | Description
65 | 8 | compact payment ID - 8 bytes randomly generated by the recipient; note that it does not need encryption in the address itself but it is hidden in a transaction paying to integrated address to prevent linking payment with the address by external observers
73 | 4 | checksum ([Keccak-f[1600] hash](https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L261) of the previous 73 bytes, trimmed to first [4](https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L53) bytes)
It totals to 78 bytes. The bytes are then encoded ([src](https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L240)) in [Monero specific Base58](/primitives/Base58) format, resulting in a 106 chars long string. Example integrated address:
It totals to 78 bytes. The bytes are then encoded ([src](https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L240)) in [Monero specific Base58](/primitives/base58) format, resulting in a 106 chars long string. Example integrated address:
`4LL9oSLmtpccfufTMvppY6JwXNouMBzSkbLYfpAV5Usx3skxNgYeYTRj5UzqtReoS44qo9mtmXCqY45DJ852K5Jv2bYXZKKQePHES9khPK`

View file

@ -33,7 +33,7 @@ Index | Size in bytes | Description
33 | 32 | public view key
65 | 4 | checksum ([Keccak-f[1600] hash](https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L261) of the previous 65 bytes, trimmed to first [4](https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L53) bytes)
It totals to 69 bytes. The bytes are then encoded ([src](https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L240)) in [Monero specific Base58](/primitives/Base58) format, resulting in a 95 chars long string. Example standard address:
It totals to 69 bytes. The bytes are then encoded ([src](https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L240)) in [Monero specific Base58](/primitives/base58) format, resulting in a 95 chars long string. Example standard address:
`4AdUndXHHZ6cfufTMvppY6JwXNouMBzSkbLYfpAV5Usx3skxNgYeYTRj5UzqtReoS44qo9mtmXCqY45DJ852K5Jv2684Rge`

View file

@ -40,7 +40,7 @@ Index | Size in bytes | Description
------------|------------------|-------------------------------------------------------------
0 | 1 | identifies the network and address type; [42](https://github.com/monero-project/monero/blob/784f7b07f05a645d43f62ed3a9cefda4b0c57825/src/cryptonote_config.h#L153) - main chain; [63](https://github.com/monero-project/monero/blob/784f7b07f05a645d43f62ed3a9cefda4b0c57825/src/cryptonote_config.h#L167) - test chain
Otherwise the data structure is the same as for [standard address](public-address/standard-address).
Otherwise the data structure is the same as for [standard address](/public-address/standard-address/).
Each subaddress conceptually has an index (with 0 being the base standard address).
The index is not directly included in subaddress structure but is used as input to create the private spend key.

View file

@ -6,14 +6,15 @@ site_url: 'https://monerodocs.org/'
pages:
- Home: 'index.md'
- Technical Specs: 'Technical-Specs.md'
- Technical Specs: 'technical-specs.md'
- Primitives:
- 'Base 58': 'primitives/Base58.md'
- 'Base58': 'primitives/base58.md'
- Address:
- 'Standard': 'public-address/Standard-Address.md'
- 'Integrated': 'public-address/Integrated-Address.md'
- 'Subaddress': 'public-address/Subaddress.md'
- 'Multisignature': 'Multisignature.md'
- 'Standard': 'public-address/standard-address.md'
- 'Integrated': 'public-address/integrated-address.md'
- 'Subaddress': 'public-address/subaddress.md'
- 'Multisignature': 'multisignature.md'
- 'Directory': 'directory/overview.md'
theme:
name: 'material' # 'material'

View file

@ -1,516 +0,0 @@
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="description" content="Unofficial Monero Documentation">
<link rel="canonical" href="https://monerodocs.org/primitives/Base58/">
<meta name="author" content="Piotr 'Qertoip' Włodarek">
<meta name="lang:clipboard.copy" content="Copy to clipboard">
<meta name="lang:clipboard.copied" content="Copied to clipboard">
<meta name="lang:search.language" content="en">
<meta name="lang:search.result.none" content="No matching documents">
<meta name="lang:search.result.one" content="1 matching document">
<meta name="lang:search.result.other" content="# matching documents">
<meta name="lang:search.tokenizer" content="[\s\-]+">
<link rel="shortcut icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-0.17.2, mkdocs-material-2.2.1">
<title>Base 58 - Monero Docs</title>
<link rel="stylesheet" href="../../assets/stylesheets/application.41c6761c.css">
<link rel="stylesheet" href="../../assets/stylesheets/application-palette.792431c1.css">
<script src="../../assets/javascripts/modernizr.1aa3b519.js"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="../../extra.css">
</head>
<body data-md-color-primary="indigo" data-md-color-accent="indigo">
<svg class="md-svg">
<defs>
<svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg>
</defs>
</svg>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<header class="md-header" data-md-component="header">
<nav class="md-header-nav md-grid">
<div class="md-flex">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="https://monerodocs.org/" title="Monero Docs" class="md-header-nav__button md-logo">
<i class="md-icon"></i>
</a>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label>
</div>
<div class="md-flex__cell md-flex__cell--stretch">
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
<span class="md-header-nav__topic">
Monero Docs
</span>
<span class="md-header-nav__topic">
Base 58
</span>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="search"></label>
<div class="md-search__inner">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" required placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query">
<label class="md-icon md-search__icon" for="search"></label>
<button type="reset" class="md-icon md-search__icon" data-md-component="reset">&#xE5CD;</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="result">
<div class="md-search-result__meta">
Type to start searching
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<div class="md-header-nav__source">
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
monerodocs/md
</div>
</a>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container">
<main class="md-main">
<div class="md-main__inner md-grid" data-md-component="container">
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="drawer">
<span class="md-nav__button md-logo">
<i class="md-icon"></i>
</span>
Monero Docs
</label>
<div class="md-nav__source">
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
monerodocs/md
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." title="Home" class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item">
<a href="../../Technical-Specs/" title="Technical Specs" class="md-nav__link">
Technical Specs
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3" checked>
<label class="md-nav__link" for="nav-3">
Primitives
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-3">
Primitives
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active">
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc">
<label class="md-nav__link md-nav__link--active" for="toc">
Base 58
</label>
<a href="./" title="Base 58" class="md-nav__link md-nav__link--active">
Base 58
</a>
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#base58-in-monero" title="Base58 in Monero" class="md-nav__link">
Base58 in Monero
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4">
<label class="md-nav__link" for="nav-4">
Address
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-4">
Address
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../public-address/Standard-Address/" title="Standard" class="md-nav__link">
Standard
</a>
</li>
<li class="md-nav__item">
<a href="../../public-address/Integrated-Address/" title="Integrated" class="md-nav__link">
Integrated
</a>
</li>
<li class="md-nav__item">
<a href="../../public-address/Subaddress/" title="Subaddress" class="md-nav__link">
Subaddress
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../Multisignature/" title="Multisignature" class="md-nav__link">
Multisignature
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#base58-in-monero" title="Base58 in Monero" class="md-nav__link">
Base58 in Monero
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/monerodocs/md/edit/master/docs/primitives/Base58.md" title="Edit this page" class="md-icon md-content__icon">&#xE3C9;</a>
<h1 id="base58">Base58</h1>
<p>Base58 is a binary-to-text encoding scheme. It is similar to Base64 but has been modified to avoid both non-alphanumeric characters and letters which might look ambiguous when printed. The characters excluded in relation to Base64 are: <code>IOl0+/</code></p>
<p>Base58 does not strictly specify the format. This results in some implementations being incompatible with others, for example with regard to alphabet order.</p>
<p>For details, see <a href="https://en.wikipedia.org/wiki/Base58">Wikipedia</a>.</p>
<h2 id="base58-in-monero">Base58 in Monero</h2>
<p>Monero has its own variant of Base58.</p>
<p>In Monero the Base58 encoding is performed in 8-byte blocks, except the last block which is the remaining (8 or less) bytes .</p>
<p>The 8-byte block converts to 11 or less Base58 characters. If the block converted to less then 11 characters, the output is padded with "1"s (0 in Base58). The final block is padded as well to whatever would be the maximum size of this number of bytes encoded in Base58.</p>
<p>The advantage of Monero implementation is that output is of a fixed size which is not the case with plain Base58. The disadvantage is that default libraries won't work.</p>
<p>For details, see <a href="https://github.com/monero-project/monero/blob/master/src/common/base58.cpp">reference C++ Base58</a> implementation and <a href="https://github.com/bigreddmachine/MoneroPy/blob/master/moneropy/base58.py">unofficial Python Base58</a> implementation.</p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="../../Technical-Specs/" title="Technical Specs" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
</div>
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Previous
</span>
Technical Specs
</span>
</div>
</a>
<a href="../../public-address/Standard-Address/" title="Standard" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Next
</span>
Standard
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
</div>
</a>
</nav>
</div>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
powered by
<a href="http://www.mkdocs.org">MkDocs</a>
and
<a href="https://squidfunk.github.io/mkdocs-material/">
Material for MkDocs</a>
</div>
</div>
</div>
</footer>
</div>
<script src="../../assets/javascripts/application.5165553b.js"></script>
<script>app.initialize({version:"0.17.2",url:{base:"../.."}})</script>
</body>
</html>

View file

@ -1,552 +0,0 @@
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="description" content="Unofficial Monero Documentation">
<link rel="canonical" href="https://monerodocs.org/public-address/Integrated-Address/">
<meta name="author" content="Piotr 'Qertoip' Włodarek">
<meta name="lang:clipboard.copy" content="Copy to clipboard">
<meta name="lang:clipboard.copied" content="Copied to clipboard">
<meta name="lang:search.language" content="en">
<meta name="lang:search.result.none" content="No matching documents">
<meta name="lang:search.result.one" content="1 matching document">
<meta name="lang:search.result.other" content="# matching documents">
<meta name="lang:search.tokenizer" content="[\s\-]+">
<link rel="shortcut icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-0.17.2, mkdocs-material-2.2.1">
<title>Integrated - Monero Docs</title>
<link rel="stylesheet" href="../../assets/stylesheets/application.41c6761c.css">
<link rel="stylesheet" href="../../assets/stylesheets/application-palette.792431c1.css">
<script src="../../assets/javascripts/modernizr.1aa3b519.js"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="../../extra.css">
</head>
<body data-md-color-primary="indigo" data-md-color-accent="indigo">
<svg class="md-svg">
<defs>
<svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg>
</defs>
</svg>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<header class="md-header" data-md-component="header">
<nav class="md-header-nav md-grid">
<div class="md-flex">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="https://monerodocs.org/" title="Monero Docs" class="md-header-nav__button md-logo">
<i class="md-icon"></i>
</a>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label>
</div>
<div class="md-flex__cell md-flex__cell--stretch">
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
<span class="md-header-nav__topic">
Monero Docs
</span>
<span class="md-header-nav__topic">
Integrated
</span>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="search"></label>
<div class="md-search__inner">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" required placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query">
<label class="md-icon md-search__icon" for="search"></label>
<button type="reset" class="md-icon md-search__icon" data-md-component="reset">&#xE5CD;</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="result">
<div class="md-search-result__meta">
Type to start searching
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<div class="md-header-nav__source">
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
monerodocs/md
</div>
</a>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container">
<main class="md-main">
<div class="md-main__inner md-grid" data-md-component="container">
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="drawer">
<span class="md-nav__button md-logo">
<i class="md-icon"></i>
</span>
Monero Docs
</label>
<div class="md-nav__source">
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
monerodocs/md
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." title="Home" class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item">
<a href="../../Technical-Specs/" title="Technical Specs" class="md-nav__link">
Technical Specs
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
<label class="md-nav__link" for="nav-3">
Primitives
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-3">
Primitives
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../primitives/Base58/" title="Base 58" class="md-nav__link">
Base 58
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4" checked>
<label class="md-nav__link" for="nav-4">
Address
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-4">
Address
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Standard-Address/" title="Standard" class="md-nav__link">
Standard
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc">
<label class="md-nav__link md-nav__link--active" for="toc">
Integrated
</label>
<a href="./" title="Integrated" class="md-nav__link md-nav__link--active">
Integrated
</a>
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#reference" title="Reference:" class="md-nav__link">
Reference:
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../Subaddress/" title="Subaddress" class="md-nav__link">
Subaddress
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../Multisignature/" title="Multisignature" class="md-nav__link">
Multisignature
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#reference" title="Reference:" class="md-nav__link">
Reference:
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/monerodocs/md/edit/master/docs/public-address/Integrated-Address.md" title="Edit this page" class="md-icon md-content__icon">&#xE3C9;</a>
<h1 id="integrated-address">Integrated address</h1>
<p>Monero integrated address embeds a compact payment ID.</p>
<p>Monero integrated address obsoletes the former practice of using full 32-bytes payment ID in a transaction extra field (where it was not encrypted).</p>
<p>Data structure (<a href="https://github.com/monero-project/monero/blob/f7b9f44c1b0d53170fd7f53d37fc67648f3247a2/src/cryptonote_basic/cryptonote_basic_impl.cpp#L172">src</a>):</p>
<table>
<thead>
<tr>
<th>Index</th>
<th>Size in bytes</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>1</td>
<td>identifies the network and address type; <a href="https://github.com/monero-project/monero/blob/793bc973746a10883adb2f89827e223f562b9651/src/cryptonote_config.h#L150">19</a> - main chain; <a href="https://github.com/monero-project/monero/blob/793bc973746a10883adb2f89827e223f562b9651/src/cryptonote_config.h#L162">54</a> - test chain</td>
</tr>
<tr>
<td>1</td>
<td>32</td>
<td>public spend key</td>
</tr>
<tr>
<td>33</td>
<td>32</td>
<td>public view key</td>
</tr>
<tr>
<td>65</td>
<td>8</td>
<td>compact payment ID - 8 bytes randomly generated by the recipient; note that it does not need encryption in the address itself but it is hidden in a transaction paying to integrated address to prevent linking payment with the address by external observers</td>
</tr>
<tr>
<td>73</td>
<td>4</td>
<td>checksum (<a href="https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L261">Keccak-f[1600] hash</a> of the previous 73 bytes, trimmed to first <a href="https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L53">4</a> bytes)</td>
</tr>
</tbody>
</table>
<p>It totals to 78 bytes. The bytes are then encoded (<a href="https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L240">src</a>) in <a href="../Monero-Base58">Monero specific Base58</a> format, resulting in a 106 chars long string. Example integrated address:</p>
<p><code>4LL9oSLmtpccfufTMvppY6JwXNouMBzSkbLYfpAV5Usx3skxNgYeYTRj5UzqtReoS44qo9mtmXCqY45DJ852K5Jv2bYXZKKQePHES9khPK</code></p>
<h2 id="reference">Reference:</h2>
<ul>
<li>question on <a href="https://monero.stackexchange.com/questions/3179/what-is-an-integrated-address">StackExchenge</a> </li>
</ul>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="../Standard-Address/" title="Standard" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
</div>
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Previous
</span>
Standard
</span>
</div>
</a>
<a href="../Subaddress/" title="Subaddress" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Next
</span>
Subaddress
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
</div>
</a>
</nav>
</div>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
powered by
<a href="http://www.mkdocs.org">MkDocs</a>
and
<a href="https://squidfunk.github.io/mkdocs-material/">
Material for MkDocs</a>
</div>
</div>
</div>
</footer>
</div>
<script src="../../assets/javascripts/application.5165553b.js"></script>
<script>app.initialize({version:"0.17.2",url:{base:"../.."}})</script>
</body>
</html>

View file

@ -1,561 +0,0 @@
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="description" content="Unofficial Monero Documentation">
<link rel="canonical" href="https://monerodocs.org/public-address/Standard-Address/">
<meta name="author" content="Piotr 'Qertoip' Włodarek">
<meta name="lang:clipboard.copy" content="Copy to clipboard">
<meta name="lang:clipboard.copied" content="Copied to clipboard">
<meta name="lang:search.language" content="en">
<meta name="lang:search.result.none" content="No matching documents">
<meta name="lang:search.result.one" content="1 matching document">
<meta name="lang:search.result.other" content="# matching documents">
<meta name="lang:search.tokenizer" content="[\s\-]+">
<link rel="shortcut icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-0.17.2, mkdocs-material-2.2.1">
<title>Standard - Monero Docs</title>
<link rel="stylesheet" href="../../assets/stylesheets/application.41c6761c.css">
<link rel="stylesheet" href="../../assets/stylesheets/application-palette.792431c1.css">
<script src="../../assets/javascripts/modernizr.1aa3b519.js"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="../../extra.css">
</head>
<body data-md-color-primary="indigo" data-md-color-accent="indigo">
<svg class="md-svg">
<defs>
<svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg>
</defs>
</svg>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<header class="md-header" data-md-component="header">
<nav class="md-header-nav md-grid">
<div class="md-flex">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="https://monerodocs.org/" title="Monero Docs" class="md-header-nav__button md-logo">
<i class="md-icon"></i>
</a>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label>
</div>
<div class="md-flex__cell md-flex__cell--stretch">
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
<span class="md-header-nav__topic">
Monero Docs
</span>
<span class="md-header-nav__topic">
Standard
</span>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="search"></label>
<div class="md-search__inner">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" required placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query">
<label class="md-icon md-search__icon" for="search"></label>
<button type="reset" class="md-icon md-search__icon" data-md-component="reset">&#xE5CD;</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="result">
<div class="md-search-result__meta">
Type to start searching
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<div class="md-header-nav__source">
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
monerodocs/md
</div>
</a>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container">
<main class="md-main">
<div class="md-main__inner md-grid" data-md-component="container">
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="drawer">
<span class="md-nav__button md-logo">
<i class="md-icon"></i>
</span>
Monero Docs
</label>
<div class="md-nav__source">
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
monerodocs/md
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." title="Home" class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item">
<a href="../../Technical-Specs/" title="Technical Specs" class="md-nav__link">
Technical Specs
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
<label class="md-nav__link" for="nav-3">
Primitives
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-3">
Primitives
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../primitives/Base58/" title="Base 58" class="md-nav__link">
Base 58
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4" checked>
<label class="md-nav__link" for="nav-4">
Address
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-4">
Address
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active">
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc">
<label class="md-nav__link md-nav__link--active" for="toc">
Standard
</label>
<a href="./" title="Standard" class="md-nav__link md-nav__link--active">
Standard
</a>
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#standard-address" title="Standard address" class="md-nav__link">
Standard address
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../Integrated-Address/" title="Integrated" class="md-nav__link">
Integrated
</a>
</li>
<li class="md-nav__item">
<a href="../Subaddress/" title="Subaddress" class="md-nav__link">
Subaddress
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../Multisignature/" title="Multisignature" class="md-nav__link">
Multisignature
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#standard-address" title="Standard address" class="md-nav__link">
Standard address
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/monerodocs/md/edit/master/docs/public-address/Standard-Address.md" title="Edit this page" class="md-icon md-content__icon">&#xE3C9;</a>
<h1 id="address">Address</h1>
<p>Monero public address is what you publish to get paid.</p>
<p>An address can be generated offline and for free. It boils down to generating a large random number representing your private spending key.</p>
<p>Publishing your Monero address does <strong>not</strong> endanger your privacy. That's because in Monero transactions go to stealth addresses which are decoupled from your public address.</p>
<p>There are a few types of public addresses in Monero:</p>
<ul>
<li>Standard address - the basic type of the address, also refered to as raw address</li>
<li>Integrated address - embeds payment ID so you can learn for what you are being paid</li>
<li>Subaddress - allows for organizing your funds in subaccounts within a single wallet</li>
</ul>
<h2 id="standard-address">Standard address</h2>
<p>Monero standard ("raw") address is composed of two public keys:</p>
<ul>
<li>public spend key</li>
<li>public view key</li>
</ul>
<p>It also contains a checksum and a "network byte" which actually identifies both the network and the address type.</p>
<p>Data structure (<a href="https://github.com/monero-project/monero/blob/f7b9f44c1b0d53170fd7f53d37fc67648f3247a2/src/cryptonote_basic/cryptonote_basic_impl.cpp#L159">src</a>):</p>
<table>
<thead>
<tr>
<th>Index</th>
<th>Size in bytes</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>1</td>
<td>identifies the network and address type; <a href="https://github.com/monero-project/monero/blob/793bc973746a10883adb2f89827e223f562b9651/src/cryptonote_config.h#L149">18</a> - main chain; <a href="https://github.com/monero-project/monero/blob/793bc973746a10883adb2f89827e223f562b9651/src/cryptonote_config.h#L161">53</a> - test chain</td>
</tr>
<tr>
<td>1</td>
<td>32</td>
<td>public spend key</td>
</tr>
<tr>
<td>33</td>
<td>32</td>
<td>public view key</td>
</tr>
<tr>
<td>65</td>
<td>4</td>
<td>checksum (<a href="https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L261">Keccak-f[1600] hash</a> of the previous 65 bytes, trimmed to first <a href="https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L53">4</a> bytes)</td>
</tr>
</tbody>
</table>
<p>It totals to 69 bytes. The bytes are then encoded (<a href="https://github.com/monero-project/monero/blob/8f1f43163a221153403a46902d026e3b72f1b3e3/src/common/base58.cpp#L240">src</a>) in <a href="../Monero-Base58">Monero specific Base58</a> format, resulting in a 95 chars long string. Example standard address:</p>
<p><code>4AdUndXHHZ6cfufTMvppY6JwXNouMBzSkbLYfpAV5Usx3skxNgYeYTRj5UzqtReoS44qo9mtmXCqY45DJ852K5Jv2684Rge</code></p>
<p>Reference:</p>
<ul>
<li><a href="https://xmr.llcoins.net/addresstests.html">https://xmr.llcoins.net/addresstests.html</a></li>
</ul>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="../../primitives/Base58/" title="Base 58" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
</div>
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Previous
</span>
Base 58
</span>
</div>
</a>
<a href="../Integrated-Address/" title="Integrated" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Next
</span>
Integrated
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
</div>
</a>
</nav>
</div>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
powered by
<a href="http://www.mkdocs.org">MkDocs</a>
and
<a href="https://squidfunk.github.io/mkdocs-material/">
Material for MkDocs</a>
</div>
</div>
</div>
</footer>
</div>
<script src="../../assets/javascripts/application.5165553b.js"></script>
<script>app.initialize({version:"0.17.2",url:{base:"../.."}})</script>
</body>
</html>

View file

@ -1,617 +0,0 @@
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="description" content="Unofficial Monero Documentation">
<link rel="canonical" href="https://monerodocs.org/public-address/Subaddress/">
<meta name="author" content="Piotr 'Qertoip' Włodarek">
<meta name="lang:clipboard.copy" content="Copy to clipboard">
<meta name="lang:clipboard.copied" content="Copied to clipboard">
<meta name="lang:search.language" content="en">
<meta name="lang:search.result.none" content="No matching documents">
<meta name="lang:search.result.one" content="1 matching document">
<meta name="lang:search.result.other" content="# matching documents">
<meta name="lang:search.tokenizer" content="[\s\-]+">
<link rel="shortcut icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-0.17.2, mkdocs-material-2.2.1">
<title>Subaddress - Monero Docs</title>
<link rel="stylesheet" href="../../assets/stylesheets/application.41c6761c.css">
<link rel="stylesheet" href="../../assets/stylesheets/application-palette.792431c1.css">
<script src="../../assets/javascripts/modernizr.1aa3b519.js"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="../../extra.css">
</head>
<body data-md-color-primary="indigo" data-md-color-accent="indigo">
<svg class="md-svg">
<defs>
<svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg>
</defs>
</svg>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<header class="md-header" data-md-component="header">
<nav class="md-header-nav md-grid">
<div class="md-flex">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="https://monerodocs.org/" title="Monero Docs" class="md-header-nav__button md-logo">
<i class="md-icon"></i>
</a>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label>
</div>
<div class="md-flex__cell md-flex__cell--stretch">
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
<span class="md-header-nav__topic">
Monero Docs
</span>
<span class="md-header-nav__topic">
Subaddress
</span>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="search"></label>
<div class="md-search__inner">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" required placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query">
<label class="md-icon md-search__icon" for="search"></label>
<button type="reset" class="md-icon md-search__icon" data-md-component="reset">&#xE5CD;</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="result">
<div class="md-search-result__meta">
Type to start searching
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<div class="md-header-nav__source">
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
monerodocs/md
</div>
</a>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container">
<main class="md-main">
<div class="md-main__inner md-grid" data-md-component="container">
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="drawer">
<span class="md-nav__button md-logo">
<i class="md-icon"></i>
</span>
Monero Docs
</label>
<div class="md-nav__source">
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
monerodocs/md
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." title="Home" class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item">
<a href="../../Technical-Specs/" title="Technical Specs" class="md-nav__link">
Technical Specs
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-3" type="checkbox" id="nav-3">
<label class="md-nav__link" for="nav-3">
Primitives
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-3">
Primitives
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../primitives/Base58/" title="Base 58" class="md-nav__link">
Base 58
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4" checked>
<label class="md-nav__link" for="nav-4">
Address
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-4">
Address
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Standard-Address/" title="Standard" class="md-nav__link">
Standard
</a>
</li>
<li class="md-nav__item">
<a href="../Integrated-Address/" title="Integrated" class="md-nav__link">
Integrated
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc">
<label class="md-nav__link md-nav__link--active" for="toc">
Subaddress
</label>
<a href="./" title="Subaddress" class="md-nav__link md-nav__link--active">
Subaddress
</a>
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#prevent-payer-from-linking-your-payouts-together" title="Prevent payer from linking your payouts together" class="md-nav__link">
Prevent payer from linking your payouts together
</a>
</li>
<li class="md-nav__item">
<a href="#group-incoming-payments" title="Group incoming payments" class="md-nav__link">
Group incoming payments
</a>
</li>
<li class="md-nav__item">
<a href="#why-not-multiple-wallets" title="Why not multiple wallets?" class="md-nav__link">
Why not multiple wallets?
</a>
</li>
<li class="md-nav__item">
<a href="#caveates" title="Caveates" class="md-nav__link">
Caveates
</a>
</li>
<li class="md-nav__item">
<a href="#implementation" title="Implementation" class="md-nav__link">
Implementation
</a>
</li>
<li class="md-nav__item">
<a href="#reference" title="Reference" class="md-nav__link">
Reference
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../Multisignature/" title="Multisignature" class="md-nav__link">
Multisignature
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#prevent-payer-from-linking-your-payouts-together" title="Prevent payer from linking your payouts together" class="md-nav__link">
Prevent payer from linking your payouts together
</a>
</li>
<li class="md-nav__item">
<a href="#group-incoming-payments" title="Group incoming payments" class="md-nav__link">
Group incoming payments
</a>
</li>
<li class="md-nav__item">
<a href="#why-not-multiple-wallets" title="Why not multiple wallets?" class="md-nav__link">
Why not multiple wallets?
</a>
</li>
<li class="md-nav__item">
<a href="#caveates" title="Caveates" class="md-nav__link">
Caveates
</a>
</li>
<li class="md-nav__item">
<a href="#implementation" title="Implementation" class="md-nav__link">
Implementation
</a>
</li>
<li class="md-nav__item">
<a href="#reference" title="Reference" class="md-nav__link">
Reference
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/monerodocs/md/edit/master/docs/public-address/Subaddress.md" title="Edit this page" class="md-icon md-content__icon">&#xE3C9;</a>
<h1 id="subaddress">Subaddress</h1>
<p>Subaddresses serve two purposes.</p>
<h2 id="prevent-payer-from-linking-your-payouts-together">Prevent payer from linking your payouts together</h2>
<p>To prevent the payer from linking your payouts together simply generate a new subaddress for each payout. This way services like <a href="https://shapeshift.io">Shapeshift</a> wouldn't know it is you again receving Monero.</p>
<h2 id="group-incoming-payments">Group incoming payments</h2>
<p>Think income streams.</p>
<p>Subaddresses allow you to group your incoming transactions within a single wallet.</p>
<p>You may want to organize your incoming funds into a streams like "donations", "work", "pool payouts", etc.</p>
<p>At first glance this is similar to subaccounts in your bank account. There is a very important difference though.</p>
<p>In Monero funds don't really sit on public addresses. Public addresses are conceptually a gateway or a routing mechanism. Funds sit on the unspent outputs. Thus, a single transaction can aggregate and spent outputs from multiple addresses. This means you can spend more than any individual address balance.</p>
<h2 id="why-not-multiple-wallets">Why not multiple wallets?</h2>
<p>The advantage over creating multiple wallets is that you only have a single seed to manage. All subaddresses can be derived from the wallet seed.</p>
<h2 id="caveates">Caveates</h2>
<ul>
<li>Subaddress <strong>cannot</strong> be used to receive transactions having multiple destinations (e.g. pool payouts). Only the standard address (the one with index == 0) can receive such transactions.</li>
<li>It is not recommended to sweep all the balances of subaddress to main address in a single transaction. That links the subaddresses together on the blockchain. However, this only concerns privacy against specific sender and the situation will never get worse than not using subaddresses in the first place. If you need to join funds while preserving maximum privacy do it with individual transactions (one per subaddress).</li>
</ul>
<h2 id="implementation">Implementation</h2>
<p>Each subaddress has an index (with 0 being the base standard address). User interface allows to assign convenience labels to subaddresses. However, labels are not preserved when recreating from seed.</p>
<table>
<thead>
<tr>
<th>Index</th>
<th>Size in bytes</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>1</td>
<td>identifies the network and address type; <a href="https://github.com/monero-project/monero/blob/784f7b07f05a645d43f62ed3a9cefda4b0c57825/src/cryptonote_config.h#L153">42</a> - main chain; <a href="https://github.com/monero-project/monero/blob/784f7b07f05a645d43f62ed3a9cefda4b0c57825/src/cryptonote_config.h#L167">63</a> - test chain</td>
</tr>
</tbody>
</table>
<p>TODO: finish</p>
<h2 id="reference">Reference</h2>
<ul>
<li><a href="https://github.com/monero-project/monero/pull/2056">https://github.com/monero-project/monero/pull/2056</a></li>
<li><a href="https://www.reddit.com/r/Monero/comments/5vgjs2/subaddresses_and_disposable_addresses/">https://www.reddit.com/r/Monero/comments/5vgjs2/subaddresses_and_disposable_addresses/</a></li>
</ul>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="../Integrated-Address/" title="Integrated" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
</div>
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Previous
</span>
Integrated
</span>
</div>
</a>
<a href="../../Multisignature/" title="Multisignature" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Next
</span>
Multisignature
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
</div>
</a>
</nav>
</div>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
powered by
<a href="http://www.mkdocs.org">MkDocs</a>
and
<a href="https://squidfunk.github.io/mkdocs-material/">
Material for MkDocs</a>
</div>
</div>
</div>
</footer>
</div>
<script src="../../assets/javascripts/application.5165553b.js"></script>
<script>app.initialize({version:"0.17.2",url:{base:"../.."}})</script>
</body>
</html>