mirror of
https://github.com/monero-project/monero-docs.git
synced 2025-01-10 12:54:41 +00:00
1339 lines
No EOL
37 KiB
HTML
1339 lines
No EOL
37 KiB
HTML
|
|
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
<meta name="description" content="Unofficial Monero Documentation">
|
|
|
|
|
|
|
|
<meta name="author" content="Piotr 'Qertoip' Włodarek">
|
|
|
|
|
|
<link rel="canonical" href="https://monerodocs.org/public-address/subaddress/">
|
|
|
|
<link rel="shortcut icon" href="../../assets/images/favicon.png">
|
|
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.2.5">
|
|
|
|
|
|
|
|
<title>Subaddress - Monero Documentation</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../assets/stylesheets/main.15aa0b43.min.css">
|
|
|
|
|
|
<link rel="stylesheet" href="../../assets/stylesheets/palette.75751829.min.css">
|
|
|
|
|
|
|
|
<meta name="theme-color" content="#ffffff">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
|
|
<style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style>
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../overrides.css">
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="white" data-md-color-accent="indigo">
|
|
|
|
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#subaddress" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<header class="md-header" data-md-component="header">
|
|
<nav class="md-header-nav md-grid" aria-label="Header">
|
|
<a href="https://monerodocs.org" title="Monero Documentation" class="md-header-nav__button md-logo" aria-label="Monero Documentation">
|
|
|
|
<img src="../../images/monero.svg" alt="logo">
|
|
|
|
</a>
|
|
<label class="md-header-nav__button md-icon" for="__drawer">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
|
|
</label>
|
|
<div class="md-header-nav__title" data-md-component="header-title">
|
|
<div class="md-header-nav__ellipsis">
|
|
<div class="md-header-nav__topic">
|
|
<span class="md-ellipsis">
|
|
Monero Documentation
|
|
</span>
|
|
</div>
|
|
<div class="md-header-nav__topic">
|
|
<span class="md-ellipsis">
|
|
|
|
Subaddress
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<label class="md-header-nav__button md-icon" for="__search">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
|
|
</label>
|
|
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
|
|
</label>
|
|
<button type="reset" class="md-search__icon md-icon" aria-label="Clear" data-md-component="search-reset" tabindex="-1">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
|
|
</button>
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" data-md-scrollfix>
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="md-header-nav__source">
|
|
|
|
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></svg>
|
|
</div>
|
|
<div class="md-source__repository">
|
|
monerodocs/md
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
</nav>
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<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" aria-label="Navigation" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a href="https://monerodocs.org" title="Monero Documentation" class="md-nav__button md-logo" aria-label="Monero Documentation">
|
|
|
|
<img src="../../images/monero.svg" alt="logo">
|
|
|
|
</a>
|
|
Monero Documentation
|
|
</label>
|
|
|
|
<div class="md-nav__source">
|
|
|
|
<a href="https://github.com/monerodocs/md/" title="Go to repository" class="md-source">
|
|
<div class="md-source__icon md-icon">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 00-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 01-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 000 40.81l195.61 195.6a28.86 28.86 0 0040.8 0l194.69-194.69a28.86 28.86 0 000-40.81z"/></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="../.." class="md-nav__link">
|
|
Home
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-2" type="checkbox" id="nav-2" >
|
|
|
|
<label class="md-nav__link" for="nav-2">
|
|
Interacting
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav class="md-nav" aria-label="Interacting" data-md-level="1">
|
|
<label class="md-nav__title" for="nav-2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Interacting
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../interacting/download-monero-binaries/" class="md-nav__link">
|
|
Download
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../interacting/verify-monero-binaries/" class="md-nav__link">
|
|
Verify
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../interacting/overview/" class="md-nav__link">
|
|
Overview
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../interacting/monero-config-file/" class="md-nav__link">
|
|
Config file
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../interacting/monerod-reference/" class="md-nav__link">
|
|
monerod
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../interacting/monero-wallet-cli-reference/" class="md-nav__link">
|
|
monero-wallet-cli
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../interacting/monero-wallet-gui-reference/" class="md-nav__link">
|
|
monero-wallet-gui
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../interacting/monero-wallet-rpc-reference/" class="md-nav__link">
|
|
monero-wallet-rpc
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../interacting/monero-blockchain-export-reference/" class="md-nav__link">
|
|
monero-blockchain-export
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../interacting/monero-blockchain-import-reference/" class="md-nav__link">
|
|
monero-blockchain-import
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../technical-specs/" class="md-nav__link">
|
|
Technical specs
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-4" type="checkbox" id="nav-4" >
|
|
|
|
<label class="md-nav__link" for="nav-4">
|
|
Cryptography
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav class="md-nav" aria-label="Cryptography" data-md-level="1">
|
|
<label class="md-nav__title" for="nav-4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Cryptography
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../cryptography/introduction/" class="md-nav__link">
|
|
Introduction
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-4-2" type="checkbox" id="nav-4-2" >
|
|
|
|
<label class="md-nav__link" for="nav-4-2">
|
|
Asymmetric
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav class="md-nav" aria-label="Asymmetric" data-md-level="2">
|
|
<label class="md-nav__title" for="nav-4-2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Asymmetric
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../cryptography/asymmetric/introduction/" class="md-nav__link">
|
|
Introduction
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../cryptography/asymmetric/private-key/" class="md-nav__link">
|
|
Private keys
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../cryptography/asymmetric/public-key/" class="md-nav__link">
|
|
Public keys
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../cryptography/asymmetric/edwards25519/" class="md-nav__link">
|
|
Edwards25519 curve
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../cryptography/asymmetric/key-image/" class="md-nav__link">
|
|
Key image
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../cryptography/base58/" class="md-nav__link">
|
|
Base58
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../cryptography/prng/" class="md-nav__link">
|
|
PRNG
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../cryptography/keccak-256/" class="md-nav__link">
|
|
Keccak-256
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5" checked>
|
|
|
|
<label class="md-nav__link" for="nav-5">
|
|
Address
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav class="md-nav" aria-label="Address" data-md-level="1">
|
|
<label class="md-nav__title" for="nav-5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Address
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../standard-address/" class="md-nav__link">
|
|
Standard
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active">
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
Subaddress
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="./" class="md-nav__link md-nav__link--active">
|
|
Subaddress
|
|
</a>
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#learn-for-what-you-are-being-paid" class="md-nav__link">
|
|
Learn for what you are being paid
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#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-funds-into-accounts" class="md-nav__link">
|
|
Group funds into accounts
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#why-not-multiple-wallets" class="md-nav__link">
|
|
Why not multiple wallets?
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#wallet-level-feature" class="md-nav__link">
|
|
Wallet level feature
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#data-structure" class="md-nav__link">
|
|
Data structure
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#generating" class="md-nav__link">
|
|
Generating
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Generating">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#private-view-key" class="md-nav__link">
|
|
Private view key
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#public-spend-key" class="md-nav__link">
|
|
Public spend key
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#public-view-key" class="md-nav__link">
|
|
Public view key
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#special-case-for-0-0" class="md-nav__link">
|
|
Special case for (0, 0)
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#building-the-address-string" class="md-nav__link">
|
|
Building the address string
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#caveats" class="md-nav__link">
|
|
Caveats
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#reference" class="md-nav__link">
|
|
Reference
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../integrated-address/" class="md-nav__link">
|
|
Integrated
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6" >
|
|
|
|
<label class="md-nav__link" for="nav-6">
|
|
Proof of Work
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav class="md-nav" aria-label="Proof of Work" data-md-level="1">
|
|
<label class="md-nav__title" for="nav-6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Proof of Work
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../proof-of-work/what-is-pow/" class="md-nav__link">
|
|
What is PoW?
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../proof-of-work/pow-in-cryptocurrencies/" class="md-nav__link">
|
|
PoW in Cryptocurrencies
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../proof-of-work/cryptonight/" class="md-nav__link">
|
|
CryptoNight
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../proof-of-work/random-x/" class="md-nav__link">
|
|
RandomX
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../multisignature/" class="md-nav__link">
|
|
Multisignature
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8" >
|
|
|
|
<label class="md-nav__link" for="nav-8">
|
|
Infrastructure
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav class="md-nav" aria-label="Infrastructure" data-md-level="1">
|
|
<label class="md-nav__title" for="nav-8">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Infrastructure
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../infrastructure/networks/" class="md-nav__link">
|
|
Mainnet, stagenet, testnet
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../infrastructure/tor-onion-p2p-seed-nodes/" class="md-nav__link">
|
|
Tor onion seed nodes
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../infrastructure/monero-pulse/" class="md-nav__link">
|
|
MoneroPulse
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9" >
|
|
|
|
<label class="md-nav__link" for="nav-9">
|
|
Running a Node
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav class="md-nav" aria-label="Running a Node" data-md-level="1">
|
|
<label class="md-nav__title" for="nav-9">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Running a Node
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../running-node/open-node-tor-onion/" class="md-nav__link">
|
|
Open Node + Tor Onion
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10" >
|
|
|
|
<label class="md-nav__link" for="nav-10">
|
|
Accepting Monero
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
<nav class="md-nav" aria-label="Accepting Monero" data-md-level="1">
|
|
<label class="md-nav__title" for="nav-10">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Accepting Monero
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../accepting-monero/overview/" class="md-nav__link">
|
|
Overview
|
|
</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" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#learn-for-what-you-are-being-paid" class="md-nav__link">
|
|
Learn for what you are being paid
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#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-funds-into-accounts" class="md-nav__link">
|
|
Group funds into accounts
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#why-not-multiple-wallets" class="md-nav__link">
|
|
Why not multiple wallets?
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#wallet-level-feature" class="md-nav__link">
|
|
Wallet level feature
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#data-structure" class="md-nav__link">
|
|
Data structure
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#generating" class="md-nav__link">
|
|
Generating
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Generating">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#private-view-key" class="md-nav__link">
|
|
Private view key
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#public-spend-key" class="md-nav__link">
|
|
Public spend key
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#public-view-key" class="md-nav__link">
|
|
Public view key
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#special-case-for-0-0" class="md-nav__link">
|
|
Special case for (0, 0)
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#building-the-address-string" class="md-nav__link">
|
|
Building the address string
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#caveats" class="md-nav__link">
|
|
Caveats
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#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-content__button md-icon">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
|
|
</a>
|
|
|
|
|
|
<h1 id="subaddress">Subaddress<a class="headerlink" href="#subaddress" title="Permanent link">¶</a></h1>
|
|
<p>Subaddress is what you should be using by default to receive Monero.</p>
|
|
<h2 id="learn-for-what-you-are-being-paid">Learn for what you are being paid<a class="headerlink" href="#learn-for-what-you-are-being-paid" title="Permanent link">¶</a></h2>
|
|
<p>By providing a unique subaddress for each anticipated payment you will know for what you are being paid.</p>
|
|
<p>This use case overlaps with integrated addresses. Subaddresses are generally prefered for reasons outlined below.</p>
|
|
<h2 id="prevent-payer-from-linking-your-payouts-together">Prevent payer from linking your payouts together<a class="headerlink" href="#prevent-payer-from-linking-your-payouts-together" title="Permanent link">¶</a></h2>
|
|
<p>To prevent the payer from linking your payouts together simply generate a new subaddress for each payout.
|
|
This way specific service (like anonymous exchange) that sends you Monero won't (easilly) know it is you again receving Monero.</p>
|
|
<p>The exception to this is when a service (or group of colluding services) decides to actively attack you, one address at the time, with the so cold <a href="https://web.getmonero.org/2019/10/18/subaddress-janus.html">Janus attack</a>, which risks them losing funds. If you need perfect unlinkability of your receivables, the only solution remains to use a separate seed (separate Monero wallet).</p>
|
|
<p>Also, note it won't help if you have an account with the service. Then your payouts are already linked in the service database, regardless of Monero.</p>
|
|
<h2 id="group-funds-into-accounts">Group funds into accounts<a class="headerlink" href="#group-funds-into-accounts" title="Permanent link">¶</a></h2>
|
|
<p><strong>Accounts</strong> are a convenience wallet-level feature to group subaddresses under one label and balance.</p>
|
|
<p>You may want to organize your funds into accounts like "cash", "work", "trading", "mining", "donations", etc.</p>
|
|
<p>As accounts are only groupings of subaddresses, they themselves do not have an address.</p>
|
|
<p>Accounts are deterministically derived from the root private key along with subaddresses.</p>
|
|
<p>Accounts are similar to subaccounts in your classic bank account. There is a very important difference though. In Monero funds don't really sit on accounts or public addresses. Public addresses are conceptually a gateway or a routing mechanism. Funds sit on transactions' unspent outputs. Thus, a single transaction can - in principle - aggregate and spend outputs from multiple addresses (and by extension from multiple accounts). The CLI or GUI wallet may not directly support creating such transactions for simplicity.</p>
|
|
<p>In short, think of accounts as a <strong>soft</strong> grouping of your funds.</p>
|
|
<h2 id="why-not-multiple-wallets">Why not multiple wallets?<a class="headerlink" href="#why-not-multiple-wallets" title="Permanent link">¶</a></h2>
|
|
<p>The advantage over creating multiple wallets is that you only have a <strong>single seed</strong> to manage.
|
|
All subaddresses can be derived from the wallet seed.</p>
|
|
<p>Additionally, you conveniently manage your subaddresses within a single user interface.</p>
|
|
<h2 id="wallet-level-feature">Wallet level feature<a class="headerlink" href="#wallet-level-feature" title="Permanent link">¶</a></h2>
|
|
<p>Subaddresses and accounts are a wallet-level feature to construct and interpret transactions. They do not affect the consensus. </p>
|
|
<h2 id="data-structure">Data structure<a class="headerlink" href="#data-structure" title="Permanent link">¶</a></h2>
|
|
<p>Subaddress has a dedicated "network byte":</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/31bdf7bd113c2576fe579ef3a25a2d8fef419ffc/src/cryptonote_config.h#L171">42</a> - mainnet; <a href="https://github.com/monero-project/monero/blob/31bdf7bd113c2576fe579ef3a25a2d8fef419ffc/src/cryptonote_config.h#L200">36</a> - stagenet; <a href="https://github.com/monero-project/monero/blob/31bdf7bd113c2576fe579ef3a25a2d8fef419ffc/src/cryptonote_config.h#L185">63</a> - testnet</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>Otherwise the data structure is the same as for the <a href="/public-address/standard-address/#data-structure">standard address</a>.</p>
|
|
<h2 id="generating">Generating<a class="headerlink" href="#generating" title="Permanent link">¶</a></h2>
|
|
<p>Each subaddress conceptually has:</p>
|
|
<ul>
|
|
<li>account index (also known as "major" index)</li>
|
|
<li>subaddress index within the account (also known as "minor" index)</li>
|
|
</ul>
|
|
<p>The indexes are 0-based. By default wallets use account index 0.</p>
|
|
<p>The indexes are not directly included in the subaddress data structure.
|
|
Instead, they are used as input to generating subaddress keys.</p>
|
|
<h3 id="private-view-key">Private view key<a class="headerlink" href="#private-view-key" title="Permanent link">¶</a></h3>
|
|
<p>A per-subaddress scalar <code>m</code> is derived as follows:</p>
|
|
<div class="highlight"><pre><span></span><code>m = Hs("SubAddr" || a || account_index || subaddress_index_within_account)
|
|
</code></pre></div>
|
|
<p>Where:</p>
|
|
<ul>
|
|
<li><code>Hs</code> is a Keccak-256 hash function interpreted as integer and modulo <code>l</code> (maximum edwards25519 scalar)</li>
|
|
<li><code>||</code> is a byte array concatenation operator</li>
|
|
<li><code>SubAddr</code> is a 0-terminated fixed string (8 bytes total)</li>
|
|
<li><code>a</code> is a private view key of the standard address (a 32 byte little endian unsigned integer)</li>
|
|
<li><code>account_index</code> is index of an account (a 32 bit little endian unsigned integer)</li>
|
|
<li><code>subaddress_index_within_account</code> is index of the subaddress within the account (a 32 bit little endian unsigned integer)</li>
|
|
</ul>
|
|
<p>Deriving "sub view keys" from the main view key allows for creating a view only wallet that monitors the entire wallet including subaddresses.</p>
|
|
<h3 id="public-spend-key">Public spend key<a class="headerlink" href="#public-spend-key" title="Permanent link">¶</a></h3>
|
|
<p>The subaddress public spend key <code>D</code> is derived as follows:</p>
|
|
<div class="highlight"><pre><span></span><code>D = B + m*G
|
|
</code></pre></div>
|
|
<p>Where:</p>
|
|
<ul>
|
|
<li><code>B</code> is standard address public spend key</li>
|
|
<li><code>m</code> is a per-subaddress scalar that is derived from the private spend key</li>
|
|
<li><code>G</code> is the "base point"; this is simply a constant specific to <a href="/cryptography/asymmetric/edwards25519">edwards25519</a></li>
|
|
</ul>
|
|
<h3 id="public-view-key">Public view key<a class="headerlink" href="#public-view-key" title="Permanent link">¶</a></h3>
|
|
<p>The subaddress public view key <code>C</code> is derived as follows:</p>
|
|
<div class="highlight"><pre><span></span><code>C = a*D
|
|
</code></pre></div>
|
|
<p>Where:</p>
|
|
<ul>
|
|
<li><code>a</code> is a private view key of the standard address</li>
|
|
<li><code>D</code> is a public spend key of the subaddress</li>
|
|
</ul>
|
|
<h3 id="special-case-for-0-0">Special case for (0, 0)<a class="headerlink" href="#special-case-for-0-0" title="Permanent link">¶</a></h3>
|
|
<p>The subaddress #0 on the account #0 is the <a href="/public-address/standard-address">standard address</a>.
|
|
As standard address has different generation rules, this is simply implemented via an <code>if</code> statement.</p>
|
|
<h3 id="building-the-address-string">Building the address string<a class="headerlink" href="#building-the-address-string" title="Permanent link">¶</a></h3>
|
|
<p>The procedure is the same as for the <a href="/public-address/standard-address">standard address</a>.</p>
|
|
<h2 id="caveats">Caveats<a class="headerlink" href="#caveats" title="Permanent link">¶</a></h2>
|
|
<ul>
|
|
<li>It is not recommended to sweep all the balances of subaddress to standard 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>
|
|
<li>Convenience labels are not preserved when recreating from seed.</li>
|
|
</ul>
|
|
<h2 id="reference">Reference<a class="headerlink" href="#reference" title="Permanent link">¶</a></h2>
|
|
<ul>
|
|
<li><a href="https://github.com/emesik/monero-python/blob/125d5eac0d4583b586b98e21b28fb9a291db26e5/monero/wallet.py#L195">monero-python</a> - the easiest to follow implementation by Michał Sałaban</li>
|
|
<li><a href="https://github.com/monero-project/monero/blob/16dc6900fb556b61edaba5e323497e9b8c677ae2/src/device/device_default.cpp#L143">get_subaddress_spend_public_key()</a> - Monero reference implementation</li>
|
|
<li><a href="https://github.com/monero-project/monero/pull/2056">historical discussion on Github</a> - gives context but is not up to date with all details</li>
|
|
<li><a href="https://monero.stackexchange.com/questions/10674/how-are-subaddresses-and-account-addresses-generated-from-master-wallet-keys/10676#10676">StackExchange answer</a> - excellent summary by knaccc</li>
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
|
|
|
|
<footer class="md-footer">
|
|
|
|
<div class="md-footer-nav">
|
|
<nav class="md-footer-nav__inner md-grid" aria-label="Footer">
|
|
|
|
<a href="../standard-address/" class="md-footer-nav__link md-footer-nav__link--prev" rel="prev">
|
|
<div class="md-footer-nav__button md-icon">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
|
|
</div>
|
|
<div class="md-footer-nav__title">
|
|
<div class="md-ellipsis">
|
|
<span class="md-footer-nav__direction">
|
|
Previous
|
|
</span>
|
|
Standard
|
|
</div>
|
|
</div>
|
|
</a>
|
|
|
|
|
|
<a href="../integrated-address/" class="md-footer-nav__link md-footer-nav__link--next" rel="next">
|
|
<div class="md-footer-nav__title">
|
|
<div class="md-ellipsis">
|
|
<span class="md-footer-nav__direction">
|
|
Next
|
|
</span>
|
|
Integrated
|
|
</div>
|
|
</div>
|
|
<div class="md-footer-nav__button md-icon">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
|
|
</div>
|
|
</a>
|
|
|
|
</nav>
|
|
</div>
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-footer-copyright">
|
|
|
|
Made with
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
Material for MkDocs
|
|
</a>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
|
|
<script src="../../assets/javascripts/vendor.93c04032.min.js"></script>
|
|
<script src="../../assets/javascripts/bundle.83e5331e.min.js"></script><script id="__lang" type="application/json">{"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script>
|
|
|
|
<script>
|
|
app = initialize({
|
|
base: "../..",
|
|
features: [],
|
|
search: Object.assign({
|
|
worker: "../../assets/javascripts/worker/search.8c7e0a7e.min.js"
|
|
}, typeof search !== "undefined" && search)
|
|
})
|
|
</script>
|
|
|
|
|
|
</body>
|
|
</html> |