monero-docs/public/infrastructure/monero-pulse/index.html

1208 lines
34 KiB
HTML
Raw Normal View History

<!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/infrastructure/monero-pulse/">
<link rel="shortcut icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.1.2, mkdocs-material-6.2.5">
<title>MoneroPulse - 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="#moneropulse" 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">
MoneroPulse
</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--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5" >
<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="../../public-address/standard-address/" class="md-nav__link">
Standard
</a>
</li>
<li class="md-nav__item">
<a href="../../public-address/subaddress/" class="md-nav__link">
Subaddress
</a>
</li>
<li class="md-nav__item">
<a href="../../public-address/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--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8" checked>
<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="../networks/" class="md-nav__link">
Mainnet, stagenet, testnet
</a>
</li>
<li class="md-nav__item">
<a href="../tor-onion-p2p-seed-nodes/" class="md-nav__link">
Tor onion seed nodes
</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">
MoneroPulse
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
MoneroPulse
</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="#what-is-moneropulse" class="md-nav__link">
What is MoneroPulse?
</a>
</li>
<li class="md-nav__item">
<a href="#moneropulse-is-dns-based" class="md-nav__link">
MoneroPulse is DNS based
</a>
</li>
<li class="md-nav__item">
<a href="#moneropulse-as-attack-vector" class="md-nav__link">
MoneroPulse as attack vector
</a>
<nav class="md-nav" aria-label="MoneroPulse as attack vector">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#who-are-moneropulse-operators" class="md-nav__link">
Who are MoneroPulse operators?
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#fixing-warning-no-two-valid-moneropulse-dns-checkpoint-records-were-received" class="md-nav__link">
Fixing "WARNING: no two valid MoneroPulse DNS checkpoint records were received"
</a>
</li>
<li class="md-nav__item">
<a href="#reference" class="md-nav__link">
Reference
</a>
</li>
</ul>
</nav>
</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="#what-is-moneropulse" class="md-nav__link">
What is MoneroPulse?
</a>
</li>
<li class="md-nav__item">
<a href="#moneropulse-is-dns-based" class="md-nav__link">
MoneroPulse is DNS based
</a>
</li>
<li class="md-nav__item">
<a href="#moneropulse-as-attack-vector" class="md-nav__link">
MoneroPulse as attack vector
</a>
<nav class="md-nav" aria-label="MoneroPulse as attack vector">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#who-are-moneropulse-operators" class="md-nav__link">
Who are MoneroPulse operators?
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#fixing-warning-no-two-valid-moneropulse-dns-checkpoint-records-were-received" class="md-nav__link">
Fixing "WARNING: no two valid MoneroPulse DNS checkpoint records were received"
</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/infrastructure/monero-pulse.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="moneropulse">MoneroPulse<a class="headerlink" href="#moneropulse" title="Permanent link">&para;</a></h1>
<h2 id="what-is-moneropulse">What is MoneroPulse?<a class="headerlink" href="#what-is-moneropulse" title="Permanent link">&para;</a></h2>
<p>MoneroPulse is infrastructure for emergency checkpointing the blockchain.</p>
<p>It aims to mitigate chain-splits resulting from consensus bugs (like <a href="https://monero.stackexchange.com/questions/421/what-happened-at-block-202612/424#424">this one from 2014</a>).</p>
<p>Effectively, MoneroPulse operators can publish which fork they consider the valid one. Technically, the "checkpoint" they publish is a block hash and the block height.</p>
<p>By default, Monero full node will simply warn users when MoneroPulse checkpoint does not match the fork it is on. The error will be present in the log and on the console in red. Users are free to discard it. Ideally though, users should consult community on what is going on, and make educated decission on whether to follow the checkpoint-compatible fork or the default fork.</p>
<p>Users can also set auto-enforcing the checkpoints via <code>--enforce-dns-checkpointing</code> option to <code>monerod</code>. In case of mismatch, <code>monerod</code> will rollback the local blockchain by a few blocks. Eventually, the alternative ("fixed") fork will get heavier and the node will follow it, leaving the "invalid" fork behind. This option is recommended for unattended full nodes.</p>
<p>Summing up, MoneroPulse is emergency checkpointing mechanism. It is opt-in for the users.</p>
<h2 id="moneropulse-is-dns-based">MoneroPulse is DNS based<a class="headerlink" href="#moneropulse-is-dns-based" title="Permanent link">&para;</a></h2>
<p>The ckeckpoints are stored as DNS TXT records for domains owned by MoneroPulse operators.</p>
<p>To get the idea you can access the checkpoints manually with any DNS client:</p>
<p>Try:</p>
<div class="highlight"><pre><span></span><code>dig -t txt checkpoints.moneropulse.net +dnssec
</code></pre></div>
<p>Result:</p>
<div class="highlight"><pre><span></span><code>(cut)
;; ANSWER SECTION:
checkpoints.moneropulse.net. 299 IN TXT &quot;1288616:875ac1bc7aa6c5eedc5410abb9c694034f9e7f79dce4c60698baf37009cb6365&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;375000:c80c23e387585e12ffb6649d678e9ba328181797b9583a6d8911b77e25375737&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;325000:4260d56368267bc2a70dd58d73c5ecf23b4e4d96e63c29a868e4a679b0741c7f&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;233000:4f69bec2af6c0852412bdd10c19e6af10c8d738fe2618b5511a98efd03ab477e&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;450000:4d098b511ca97723e81737c448343cfd4e6dadb3d8a0e757c6e4d595e6e48357&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;250000:f59d31839bd909ec8830b4f7f66ff213f0bd006334c8523daee452725e5c7a79&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;550000:c2e80a636438bd9f7a7ab432a6ad297e35540d80ff5b868bca098124cad2ff8c&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;650000:1d567f2b491324375a825895c5e7b52857b38e4fed0e42c40909c2d52240b4e0&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;800000:2ced10aa85357ab6c14bb12b6b56d1dde28940820dda30911b73a5cc9a301760&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;850000:00e2b557dde9fd4a9e2e3dd7ddac962f5ca475eb1095bc50aa757fd1218ab0a5&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;900000:d9958d0e7dcf91a5a7b11de225927bf7efc6eb26240315ce12372be902cc1337&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;913193:5292d5d56f6ba4de33a58d9a34d263e2cb3c6fee0aed2286fd4ac7f36d53c85f&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;913269:f8302e6b8ba1c49aad9a854b8d6c79d8272c6239dcbba5a75ed0784c1d4f56a1&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;350000:74da79f6a136969abd6364bd3d37af273c408d6471e8ab598e80569b42415f86&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;400000:1b2b0e7a30e59691491529a3d506d1ba3d6052d0f6b52198b7330b28a6f1b6ac&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;500000:2428f0dbe49796be05ed81b347f53e1f7f44aed0abf641446ec2b94cae066b02&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;600000:f5828ebf7d7d1cb61762c4dfe3ccf4ecab2e1aad23e8113668d981713b7a54c5&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;700000:12be9b3d210b93f574d2526abb9c1ab2a881b479131fd0d4f7dac93875f503cd&quot;
checkpoints.moneropulse.net. 299 IN TXT &quot;300000:0c1cd46df6ccff90ec4ab493281f2583c344cd62216c427628990fe9db1bb8b6&quot;
checkpoints.moneropulse.net. 299 IN RRSIG TXT 13 3 300 20180922151845 20180920131845 35273 moneropulse.net. 8CyqtsM2f9o6OHZYqtGPVf+8gcFM+eUyoMi29LlkcLtK1AXbZlKqCcdN NvdvB+4OzepmpTanSc+TbLWbz/sIzA==
</code></pre></div>
<p>Please note the DNSSEC signature entry at the end.</p>
<p>The checkpoints are mirrored on several DNS servers:</p>
<p>Mainnet:</p>
<div class="highlight"><pre><span></span><code>checkpoints.moneropulse.se
checkpoints.moneropulse.org
checkpoints.moneropulse.net
checkpoints.moneropulse.co
</code></pre></div>
<p>Stagenet:</p>
<div class="highlight"><pre><span></span><code>stagenetpoints.moneropulse.se
stagenetpoints.moneropulse.org
stagenetpoints.moneropulse.net
stagenetpoints.moneropulse.co
</code></pre></div>
<p>Testnet:</p>
<div class="highlight"><pre><span></span><code>testpoints.moneropulse.se
testpoints.moneropulse.org
testpoints.moneropulse.net
testpoints.moneropulse.co
</code></pre></div>
<h2 id="moneropulse-as-attack-vector">MoneroPulse as attack vector<a class="headerlink" href="#moneropulse-as-attack-vector" title="Permanent link">&para;</a></h2>
<p>It is worth noting that MoneroPulse does not produce blocks and cannot split the chain on its own. It only suggests the valid fork.</p>
<p>Should MoneroPulse got entirely compromised, attacker could stop all auto-enforcing nodes from advancing, by feeding them with the fake checkpoint. This is partially mitigated by DNSSEC and by operating multiple domains. Monero expects checkpoints are consistent across domains. Thus, compromising a single domain or registrar should not lead to any disruption.</p>
<p>MoneroPulse also increases the say of its operators in case of possible contentious hard forks. While well intended, this effectively centralizes more power in hands of core developers, or whomever is at the time running MoneroPulse infrastructure.</p>
<h3 id="who-are-moneropulse-operators">Who are MoneroPulse operators?<a class="headerlink" href="#who-are-moneropulse-operators" title="Permanent link">&para;</a></h3>
<p>MoneroPulse is operated by selected core developers.</p>
<h2 id="fixing-warning-no-two-valid-moneropulse-dns-checkpoint-records-were-received">Fixing "WARNING: no two valid MoneroPulse DNS checkpoint records were received"<a class="headerlink" href="#fixing-warning-no-two-valid-moneropulse-dns-checkpoint-records-were-received" title="Permanent link">&para;</a></h2>
<p>This means DNS server you are using does not ackonwledge the +dnssec flag necessary for securely query for checkpoints.</p>
<p>By default, your operating system will use DNS server provided by your Internet Service Provider.</p>
<p>To fix this warning, change your DNS server either system-wide in your network configuration, or specifically for <code>monerod</code>.</p>
<p>Many people find Google's or Cloudflare's DNS servers superior to those offered by their ISPs.</p>
<p>Using Google DNS:</p>
<div class="highlight"><pre><span></span><code>DNS_PUBLIC=tcp://8.8.8.8 ./monerod
</code></pre></div>
<p>Using Cloudflare DNS:</p>
<div class="highlight"><pre><span></span><code>DNS_PUBLIC=tcp://1.1.1.1 ./monerod
</code></pre></div>
<h2 id="reference">Reference<a class="headerlink" href="#reference" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="https://monero.stackexchange.com/questions/679/what-is-moneropulse?noredirect=1&amp;lq=1">StackExchange answer</a></li>
<li><a href="https://www.reddit.com/r/Monero/comments/419qdd/p2p4warning_no_two_valid_moneropulse_dns/">Reddit answer</a></li>
<li><a href="https://github.com/monero-project/monero/blob/ff7dc087ae5f7de162131cea9dbcf8eac7c126a1/src/checkpoints/checkpoints.cpp">Monero source code</a></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="../tor-onion-p2p-seed-nodes/" 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>
Tor onion seed nodes
</div>
</div>
</a>
<a href="../../running-node/open-node-tor-onion/" 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>
Open Node + Tor Onion
</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>