/
index.html
64 lines (61 loc) · 22.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<!doctype html>
<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-updates">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.2.0">
<title data-rh="true">Network Team Update | Cardano Development Updates</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://input-output-hk.github.io/cardano-updates/2022-11-28-network"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" property="og:title" content="Network Team Update | Cardano Development Updates"><meta data-rh="true" name="description" content="Stake-Driven Data Diffusion Release for Relays"><meta data-rh="true" property="og:description" content="Stake-Driven Data Diffusion Release for Relays"><meta data-rh="true" property="og:type" content="article"><meta data-rh="true" property="article:published_time" content="2022-11-28T00:00:00.000Z"><meta data-rh="true" property="article:author" content="https://github.com/coot"><meta data-rh="true" property="article:tag" content="network,release"><link data-rh="true" rel="icon" href="/cardano-updates/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://input-output-hk.github.io/cardano-updates/2022-11-28-network"><link data-rh="true" rel="alternate" href="https://input-output-hk.github.io/cardano-updates/2022-11-28-network" hreflang="en"><link data-rh="true" rel="alternate" href="https://input-output-hk.github.io/cardano-updates/2022-11-28-network" hreflang="x-default"><link rel="alternate" type="application/rss+xml" href="/cardano-updates/rss.xml" title="Cardano Updates Feed RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/cardano-updates/atom.xml" title="Cardano Updates Feed Atom Feed">
<link rel="alternate" type="application/json" href="/cardano-updates/feed.json" title="Cardano Updates Feed JSON Feed">
<link rel="alternate" type="application/rss+xml" href="/cardano-updates/quarterly/rss.xml" title="Cardano Development Updates RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/cardano-updates/quarterly/atom.xml" title="Cardano Development Updates Atom Feed">
<script src="https://plausible.io/js/script.js" defer="defer" data-domain="input-output-hk.github.io/cardano-updates"></script><link rel="stylesheet" href="/cardano-updates/assets/css/styles.1b2b551c.css">
<link rel="preload" href="/cardano-updates/assets/js/runtime~main.1282f806.js" as="script">
<link rel="preload" href="/cardano-updates/assets/js/main.870ab849.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/cardano-updates/"><div class="navbar__logo"><img src="/cardano-updates/img/logo.svg" alt="Cardano Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/cardano-updates/img/logo.svg" alt="Cardano Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Cardano Updates</b></a></div><div class="navbar__items navbar__items--right"><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/cardano-updates/">Home</a><a class="navbar__item navbar__link" href="/cardano-updates/quarterly">Quarterly</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__link" aria-haspopup="true" aria-expanded="false" role="button" href="/cardano-updates/tags">Topics</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/cardano-updates/tags">All Topics</a></li><li><a class="dropdown__link" href="/cardano-updates/tags/network">Network</a></li><li><a class="dropdown__link" href="/cardano-updates/tags/consensus">Consensus</a></li><li><a class="dropdown__link" href="/cardano-updates/tags/ledger">Ledger</a></li><li><a class="dropdown__link" href="/cardano-updates/tags/hydra">Hydra</a></li><li><a class="dropdown__link" href="/cardano-updates/tags/db-sync">DB Sync</a></li><li><a class="dropdown__link" href="/cardano-updates/tags/cli-api">Node CLI & API</a></li><li><a class="dropdown__link" href="/cardano-updates/quarterly/tags/cli-api-quarterly">Node CLI & API Quarterly</a></li><li><a class="dropdown__link" href="/cardano-updates/tags/crypto">Crypto</a></li></ul></div><a class="navbar__item navbar__link" href="/cardano-updates/archive">Archive</a><a href="https://github.com/input-output-hk/cardano-updates" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" aria-label="GitHub repository"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent Posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/cardano-updates/2023-03-24-hydra">Hydra Team Update</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/cardano-updates/2023-03-23-db-sync">DB-sync Team Update</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/cardano-updates/2023-03-23-mithril">Mithril Team Update</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/cardano-updates/2023-03-22-consensus">Consensus Team Update</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/cardano-updates/2023-03-22-performance-and-tracing">Performance & tracing update</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/cardano-updates/2023-03-21-network">Network Team Update</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/cardano-updates/2023-03-17-hydra">Hydra Team Update</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/cardano-updates/2023-03-17-ledger">Ledger Team Update</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/cardano-updates/2023-03-16-goedel">Goedel Team Update</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/cardano-updates/2023-03-10-hydra">Hydra Team Update</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><article itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h1 class="title_f1Hy" itemprop="headline">Network Team Update</h1><div class="container_mt6G margin-vert--md"><time datetime="2022-11-28T00:00:00.000Z" itemprop="datePublished">November 28, 2022</time> · <!-- -->4 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/coot" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/coot.png" alt="Marcin Szamotulski"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/coot" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Marcin Szamotulski</span></a></div><small class="avatar__subtitle" itemprop="description">Network Team Lead</small></div></div></div></div></header><div id="post-content" class="markdown" itemprop="articleBody"><h2 class="anchor anchorWithStickyNavbar_LWe7" id="stake-driven-data-diffusion-release-for-relays">Stake-Driven Data Diffusion Release for Relays<a class="hash-link" href="#stake-driven-data-diffusion-release-for-relays" title="Direct link to heading"></a></h2><p>IOG networking team decided to release the <em>Stake-Driven Data Diffusion with
Robust Optimised Peer Selection</em> also more commonly known as <em>P2P</em>. In the
last update, we informed about a performance regression, but it turns out it
only affects block producers, and thus we highly advise against running it on
such nodes. Further investigation is required to find the cause of it.</p><p>On IOG's benchmarking cluster we have seen quite a good performance improvement
on block propagation itself. The cluster is running a static topology with
valency 6 (each node is connected to 6 other nodes). In which every of the 50
nodes are block producers. The setup of this network is the same as mainnet.
We've seen 40-50% performance improvement on block propagation comparing to the
same cluster deployed with the same topology but using non-P2P nodes. We think
this performance improvement is caused by using full duplex connections. Quite
likely the transaction traffic floating in both directions on the same TCP
connection helps to keep the TCP window open. Note that in a cluster of 50
nodes with valency 6 the probability of having at least one duplex connection
is more than 50%. We don't expect the same improvement on mainnet because the
network is much wider and the transaction traffic is not as large.</p><p>Just before the release we squashed two small bugs:</p><ul><li><a href="https://github.com/input-output-hk/ouroboros-network/issues/4163" target="_blank" rel="noopener noreferrer">issue #4163</a> - top level integration bug in <code>keep-alive</code>;</li><li><a href="https://github.com/input-output-hk/ouroboros-network/issues/4177" target="_blank" rel="noopener noreferrer">issue #4177</a> - a bug in <code>outbound-governor</code>;</li><li><a href="https://github.com/input-output-hk/ouroboros-network/pull/4165" target="_blank" rel="noopener noreferrer">PR #4165</a> - a fix <code>cardano-ping</code> support of <code>NodeToNodeV_10</code>.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="peer-sharing">Peer Sharing<a class="hash-link" href="#peer-sharing" title="Direct link to heading"></a></h3><p>We were carrying a review of <a href="https://github.com/input-output-hk/ouroboros-network/pull/4019" target="_blank" rel="noopener noreferrer">peer sharing PR</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="deltaq">DeltaQ<a class="hash-link" href="#deltaq" title="Direct link to heading"></a></h3><p>Neil Davies was invited to give a guest lecture entitled <code>Avoiding System Catastrophes</code> at <a href="https://uclouvain.be/en/index.html" target="_blank" rel="noopener noreferrer">UCLouvain</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-have-we-achieve-last-sprint">What have we achieve last sprint<a class="hash-link" href="#what-have-we-achieve-last-sprint" title="Direct link to heading"></a></h2><ul><li><p><a href="https://github.com/input-output-hk/ouroboros-network/issues/4163" target="_blank" rel="noopener noreferrer">issue #4163</a>: we found out that a control message is not passed to the
<code>keep-alive</code> mini-protocol, this results in every demotion executing demotion
timeout rather than a graceful termination. With the fix the node will no longer log:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"kind"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"PeerStatusChangeFailure"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"peerStatusChangeType"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"WarmToCold (ConnectionId {localAddress = 192.168.0.10:7000, remoteAddress = 3.129.186.40:3000})"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"reason"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"TimeoutError"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p><a href="https://github.com/input-output-hk/ouroboros-network/issues/4177" target="_blank" rel="noopener noreferrer">issue #4177</a>: we fixed an assertion failure in the <code>outbound-governor</code>; now
we don't try demoted peers which are being demoted already.</p></li><li><p><a href="https://github.com/input-output-hk/ouroboros-network/pull/4155" target="_blank" rel="noopener noreferrer">PR #4155</a>: we refactored <code>ouroboros-network</code> packages. There's a top level
<code>ouroboros-consensus-diffusion</code> package which integrates <code>network</code>
& <code>consensus</code> code. We also introduced:</p><ul><li><code>ouroboros-network-api</code> package which contains the API shared between
<code>network</code> & <code>conensus</code>;</li><li><code>ouroboros-network-mock</code> package which contains mock API used for testing
(e.g. a mock chain & chain producer, etc.)</li><li><code>ouroboros-network-protocols</code> package which contains implementation of all
(but <code>handshake</code>) mini-protocols, exposes a <code>testlib</code> and contains <code>test</code>
and <code>cddl</code> components.</li></ul><p>This made the dependency tree of <code>network</code> & <code>consensus</code> packages much
cleaner.</p></li><li><p><a href="https://github.com/input-output-hk/ouroboros-network/pull/4169" target="_blank" rel="noopener noreferrer">PR #4169</a>: we described the usage of release branches in <code>CONTRIBUTING.md</code>
doc.</p></li><li><p><a href="https://github.com/input-output-hk/ouroboros-network/pull/4165" target="_blank" rel="noopener noreferrer">PR #4165</a>: we fixed <code>cardano-ping</code> support of <code>NodeToNodeV_10</code> protocol.</p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="deltaq-1">DeltaQ<a class="hash-link" href="#deltaq-1" title="Direct link to heading"></a></h3><p>The abstract of the talk:</p><blockquote><p>An essential step to ensuring that distributed systems are fit for
purpose.</p><p>Distributed systems have become an integral part of our society and
daily lives. We are, both implicitly and explicitly, individually as well as
collectively, placing ever more trust in them.</p><p>Are they worthy of this trust? Our need for them to be ‘fit-for-purpose’ goes
well beyond notions of functional correctness (i.e. never getting the wrong
answer). We need them to deliver the desired outcomes in a timely, robust,
reliable, resilient fashion, at scale and in a sustainable way (both
economically and environmentally).</p><p>This all sounds like a worthy aspiration, but what would be a practical
approach to capturing and reasoning about these issues? How can we ensure that
systems can meet their fit-for-purpose objectives, not just in their design but
as they are deployed, encounter the imperfect world, are scaled to become
economic, and proceed into ongoing maintenance?</p><p>This talk will illustrate how the notions of Outcomes and Quality Attenuation
(as captured by ‘∆Q’) are being used to both frame the necessary notions and
provide a basis for assuring the refinement and reification of such systems,
from initial concept to operational infrastructure.</p></blockquote><p>You can download the slides from <a target="_blank" href="/cardano-updates/assets/files/2022-11-24-UCL-60c46564c5dee25b0060304c060ab1cf.pdf">here</a>.</p></div><footer class="row docusaurus-mt-lg blogPostFooterDetailsFull_mRVl"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/cardano-updates/tags/network">network</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/cardano-updates/tags/release">release</a></li></ul></div><div class="col margin-top--sm"><a href="https://github.com/input-output-hk/cardano-updates/tree/main/blog/2022-11-28-network.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/cardano-updates/2022-11-30-performance-and-tracing"><div class="pagination-nav__sublabel">Newer Post</div><div class="pagination-nav__label">Performance & tracing update</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/cardano-updates/2022-11-25-crypto"><div class="pagination-nav__sublabel">Older Post</div><div class="pagination-nav__label">Crypto Team Update</div></a></nav></main><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#stake-driven-data-diffusion-release-for-relays" class="table-of-contents__link toc-highlight">Stake-Driven Data Diffusion Release for Relays</a><ul><li><a href="#peer-sharing" class="table-of-contents__link toc-highlight">Peer Sharing</a></li><li><a href="#deltaq" class="table-of-contents__link toc-highlight">DeltaQ</a></li></ul></li><li><a href="#what-have-we-achieve-last-sprint" class="table-of-contents__link toc-highlight">What have we achieve last sprint</a><ul><li><a href="#deltaq-1" class="table-of-contents__link toc-highlight">DeltaQ</a></li></ul></li></ul></div></div></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Blog</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/cardano-updates/">Home</a></li><li class="footer__item"><a class="footer__link-item" href="/cardano-updates/archive">Archive</a></li><li class="footer__item"><a class="footer__link-item" href="/cardano-updates/tags">Tags</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Input Output Global, Inc. Built with Docusaurus.</div></div></div></footer></div>
<script src="/cardano-updates/assets/js/runtime~main.1282f806.js"></script>
<script src="/cardano-updates/assets/js/main.870ab849.js"></script>
</body>
</html>