iuna

iuna

iuna - experimental devnet protocol
git clone https://getiuna.org/git/iuna.git
Log | Files | Refs | README | LICENSE

index.html (16029B)


      1 <!doctype html>
      2 <html lang="en">
      3 <head>
      4   <meta charset="utf-8">
      5   <meta name="viewport" content="width=device-width, initial-scale=1">
      6   <meta name="color-scheme" content="dark">
      7   <meta name="description" content="iuna is an experimental cryptocurrency devnet that combines VDF finalization, a burn lottery, and proof-of-work issuance.">
      8   <title>iuna Devnet</title>
      9   <style>
     10     :root {
     11       color-scheme: dark;
     12       font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
     13       background: #0d0f10;
     14       color: #edf2f5;
     15       --bg: #0d0f10;
     16       --panel: #15191b;
     17       --panel-2: #101315;
     18       --line: #273036;
     19       --muted: #98a6ad;
     20       --text: #edf2f5;
     21       --green: #d5f55f;
     22       --cyan: #8de9cd;
     23       --blue: #8bdcff;
     24       --amber: #ffd070;
     25     }
     26     * { box-sizing: border-box; }
     27     html {
     28       max-width: 100%;
     29       overflow-x: hidden;
     30       scroll-padding-top: 76px;
     31     }
     32     body {
     33       margin: 0;
     34       max-width: 100%;
     35       overflow-x: hidden;
     36       background: var(--bg);
     37       color: var(--text);
     38     }
     39     a { color: var(--green); text-decoration-thickness: 1px; text-underline-offset: 3px; }
     40     code {
     41       color: #c7f5ea;
     42       overflow-wrap: anywhere;
     43       font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
     44     }
     45     pre {
     46       max-width: 100%;
     47       margin: 0;
     48       overflow-x: auto;
     49       border: 1px solid var(--line);
     50       border-radius: 8px;
     51       padding: 14px;
     52       background: #0b0d0e;
     53       box-shadow: inset 0 1px 0 rgba(255, 255, 255, .03);
     54     }
     55     .wrap { width: min(1060px, calc(100% - 44px)); margin: 0 auto; }
     56     .topbar {
     57       position: sticky;
     58       top: 0;
     59       z-index: 2;
     60       border-bottom: 1px solid rgba(39, 48, 54, .9);
     61       background: rgba(13, 15, 16, .82);
     62       backdrop-filter: blur(12px);
     63     }
     64     .topbar .wrap {
     65       display: flex;
     66       justify-content: space-between;
     67       gap: 18px;
     68       align-items: center;
     69       min-height: 58px;
     70     }
     71     .brand { display: flex; gap: 10px; align-items: center; font-weight: 900; }
     72     .mark {
     73       position: relative;
     74       width: 32px;
     75       height: 32px;
     76       display: grid;
     77       place-items: center;
     78       overflow: hidden;
     79       border: 1px solid #e8ff8d;
     80       border-radius: 8px;
     81       background: linear-gradient(145deg, #ecff8a 0%, var(--green) 54%, var(--cyan) 100%);
     82       box-shadow: inset 0 1px 0 rgba(255, 255, 255, .38), 0 9px 20px rgba(213, 245, 95, .14);
     83     }
     84     .mark::after {
     85       content: "";
     86       position: absolute;
     87       inset: -40% -70%;
     88       background: linear-gradient(100deg, transparent 42%, rgba(255, 255, 255, .34) 50%, transparent 58%);
     89       transform: translateX(-58%) rotate(8deg);
     90       opacity: 0;
     91       pointer-events: none;
     92     }
     93     .mark svg { position: relative; z-index: 1; width: 21px; height: 21px; display: block; }
     94     .mark .mark-loop { fill: none; stroke: #101315; stroke-width: 4.2; stroke-linecap: round; stroke-linejoin: round; }
     95     .mark .mark-dot { fill: #101315; }
     96     .brand:hover .mark::after { animation: mark-sheen .72s ease both; }
     97     @keyframes mark-sheen { from { opacity: 0; transform: translateX(-58%) rotate(8deg); } 32% { opacity: 1; } to { opacity: 0; transform: translateX(58%) rotate(8deg); } }
     98     nav { display: flex; gap: 16px; flex-wrap: wrap; color: var(--muted); font-size: 13px; font-weight: 750; }
     99     nav a { color: var(--muted); text-decoration: none; }
    100     nav a:hover { color: var(--green); }
    101     .hero { padding: 92px 0 48px; }
    102     .hero-grid {
    103       display: grid;
    104       grid-template-columns: minmax(0, 760px);
    105       gap: 32px;
    106       align-items: end;
    107     }
    108     .hero-grid > * { min-width: 0; }
    109     .eyebrow {
    110       display: inline-flex;
    111       gap: 8px;
    112       align-items: center;
    113       margin-bottom: 18px;
    114       color: var(--green);
    115       font-size: 12px;
    116       font-weight: 900;
    117       text-transform: uppercase;
    118     }
    119     .dot { width: 8px; height: 8px; border-radius: 999px; background: var(--green); box-shadow: 0 0 18px rgba(213, 245, 95, .75); }
    120     h1 {
    121       max-width: 760px;
    122       margin: 0 0 8px;
    123       font-size: clamp(48px, 9vw, 104px);
    124       line-height: .92;
    125       letter-spacing: 0;
    126     }
    127     .pronunciation {
    128       margin: 0 0 20px;
    129       color: var(--muted);
    130       font-size: 15px;
    131       font-weight: 700;
    132     }
    133     h2 { margin: 0 0 12px; font-size: 28px; line-height: 1.1; letter-spacing: 0; }
    134     h3 { margin: 0 0 8px; font-size: 16px; letter-spacing: 0; }
    135     p { max-width: 720px; color: #b7c3c9; font-size: 17px; line-height: 1.6; }
    136     .lead { color: #eef4f6; font-size: 21px; }
    137     .actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }
    138     .button {
    139       display: inline-flex;
    140       align-items: center;
    141       gap: 8px;
    142       min-height: 42px;
    143       border: 1px solid var(--line);
    144       border-radius: 8px;
    145       padding: 0 14px;
    146       background: var(--panel);
    147       color: var(--text);
    148       font-size: 14px;
    149       font-weight: 850;
    150       text-decoration: none;
    151     }
    152     .button.primary { border-color: var(--green); background: var(--green); color: #11140c; }
    153     .button:hover { border-color: var(--green); }
    154     .button.discord {
    155       border-color: rgba(88, 101, 242, .72);
    156       background: linear-gradient(180deg, rgba(88, 101, 242, .24), rgba(88, 101, 242, .14));
    157       color: #eef1ff;
    158       box-shadow: 0 10px 28px rgba(88, 101, 242, .16), inset 0 1px 0 rgba(255, 255, 255, .08);
    159     }
    160     .button.discord:hover {
    161       border-color: #8e99ff;
    162       background: linear-gradient(180deg, rgba(88, 101, 242, .34), rgba(88, 101, 242, .2));
    163       box-shadow: 0 12px 34px rgba(88, 101, 242, .22), inset 0 1px 0 rgba(255, 255, 255, .1);
    164     }
    165     .button-icon {
    166       width: 18px;
    167       height: 18px;
    168       flex: 0 0 auto;
    169       fill: currentColor;
    170     }
    171     .repo-link {
    172       color: var(--text);
    173       text-decoration: none;
    174     }
    175     .repo-link:hover { color: var(--green); }
    176     section { padding: 38px 0; border-top: 1px solid rgba(39, 48, 54, .9); scroll-margin-top: 76px; }
    177     .section-head { display: grid; gap: 8px; margin-bottom: 18px; }
    178     .section-head p { margin: 0; max-width: 680px; font-size: 15px; }
    179     .grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
    180     .card {
    181       min-width: 0;
    182       border: 1px solid var(--line);
    183       border-radius: 8px;
    184       padding: 16px;
    185       background: rgba(21, 25, 27, .88);
    186     }
    187     .card p { margin: 0; font-size: 15px; }
    188     .card .button { margin-top: 16px; }
    189     .tag {
    190       display: inline-flex;
    191       margin-bottom: 12px;
    192       border: 1px solid #3b464d;
    193       border-radius: 999px;
    194       padding: 3px 8px;
    195       color: var(--muted);
    196       font-size: 11px;
    197       font-weight: 850;
    198       text-transform: uppercase;
    199     }
    200     .tag.green { border-color: rgba(213, 245, 95, .42); color: var(--green); }
    201     .tag.cyan { border-color: rgba(141, 233, 205, .4); color: var(--cyan); }
    202     .tag.blue { border-color: rgba(139, 220, 255, .4); color: var(--blue); }
    203     .split {
    204       display: grid;
    205       grid-template-columns: minmax(0, 1fr) minmax(260px, .54fr);
    206       gap: 18px;
    207       align-items: start;
    208     }
    209     .steps {
    210       display: grid;
    211       gap: 18px;
    212       margin: 18px 0;
    213     }
    214     .step {
    215       display: grid;
    216       gap: 10px;
    217     }
    218     .step p { margin: 0; }
    219     .join-panel {
    220       display: grid;
    221       grid-template-columns: minmax(0, 1fr) minmax(280px, .7fr);
    222       gap: 18px;
    223       border: 1px solid var(--line);
    224       border-radius: 8px;
    225       padding: 18px;
    226       background: rgba(21, 25, 27, .88);
    227     }
    228     .join-steps {
    229       display: grid;
    230       gap: 14px;
    231       counter-reset: join-step;
    232     }
    233     .join-step {
    234       position: relative;
    235       display: grid;
    236       gap: 4px;
    237       padding-left: 42px;
    238     }
    239     .join-step::before {
    240       counter-increment: join-step;
    241       content: counter(join-step);
    242       position: absolute;
    243       left: 0;
    244       top: 1px;
    245       width: 28px;
    246       height: 28px;
    247       display: grid;
    248       place-items: center;
    249       border: 1px solid rgba(213, 245, 95, .42);
    250       border-radius: 999px;
    251       color: var(--green);
    252       font-size: 12px;
    253       font-weight: 900;
    254     }
    255     .join-step h3, .role-row h3 { margin: 0; }
    256     .join-step p, .role-row p { margin: 0; font-size: 15px; }
    257     .join-actions { margin-top: 18px; }
    258     .role-list {
    259       display: grid;
    260       gap: 10px;
    261       border-left: 1px solid var(--line);
    262       padding-left: 18px;
    263     }
    264     .role-row {
    265       display: grid;
    266       gap: 4px;
    267       border: 1px solid #2d373d;
    268       border-radius: 8px;
    269       padding: 12px;
    270       background: #101315;
    271     }
    272     .note {
    273       border-left: 3px solid var(--green);
    274       padding-left: 14px;
    275       color: #cbd3d7;
    276       font-size: 15px;
    277     }
    278     .footer { padding-bottom: 60px; color: #87949b; font-size: 14px; }
    279     .footer .wrap {
    280       display: flex;
    281       justify-content: space-between;
    282       gap: 14px;
    283       flex-wrap: wrap;
    284     }
    285     @media (max-width: 820px) {
    286       .hero { padding-top: 58px; }
    287       .hero-grid, .split, .grid, .join-panel { grid-template-columns: 1fr; }
    288       nav { display: none; }
    289       .wrap { width: min(100% - 32px, 1060px); }
    290       h1 { font-size: clamp(44px, 18vw, 78px); }
    291       .lead { font-size: 19px; }
    292       .button { max-width: 100%; justify-content: center; }
    293       .role-list { border-left: 0; border-top: 1px solid var(--line); padding-left: 0; padding-top: 16px; }
    294     }
    295   </style>
    296 </head>
    297 <body>
    298   <svg width="0" height="0" aria-hidden="true" focusable="false" style="position:absolute">
    299     <symbol id="discord-icon" viewBox="0 0 24 24">
    300       <path d="M19.54 5.34A16.9 16.9 0 0 0 15.35 4a11.7 11.7 0 0 0-.54 1.1 15.8 15.8 0 0 0-4.62 0A11.7 11.7 0 0 0 9.65 4a16.9 16.9 0 0 0-4.19 1.34C2.81 9.28 2.09 13.12 2.45 16.9A16.8 16.8 0 0 0 7.59 19.5a12.8 12.8 0 0 0 1.1-1.79 10.9 10.9 0 0 1-1.73-.83c.14-.1.28-.21.42-.32a12.1 12.1 0 0 0 9.24 0c.14.11.28.22.42.32-.55.32-1.13.6-1.74.83.32.63.69 1.23 1.1 1.79a16.8 16.8 0 0 0 5.15-2.6c.42-4.38-.72-8.18-2.01-11.56ZM9.32 14.57c-1 0-1.82-.92-1.82-2.04 0-1.13.8-2.05 1.82-2.05 1.02 0 1.84.92 1.82 2.05 0 1.12-.8 2.04-1.82 2.04Zm5.36 0c-1 0-1.82-.92-1.82-2.04 0-1.13.8-2.05 1.82-2.05 1.02 0 1.84.92 1.82 2.05 0 1.12-.8 2.04-1.82 2.04Z"></path>
    301     </symbol>
    302   </svg>
    303   <div class="topbar">
    304     <div class="wrap">
    305       <a class="brand repo-link" href="/"><span class="mark" aria-label="iuna"><svg viewBox="0 0 32 32" aria-hidden="true" focusable="false"><circle class="mark-dot" cx="9.4" cy="7.6" r="2.8"></circle><path class="mark-loop" d="M9.4 13v7.1c0 3.7 2.9 6.4 6.6 6.4s6.6-2.7 6.6-6.4V13"></path></svg></span><span>iuna</span></a>
    306       <nav aria-label="Page sections">
    307         <a href="#whatisiuna">What is iuna</a>
    308         <a href="#howtojoin">Join</a>
    309         <a href="/git/iuna/file/docs/protocol.md.html">Protocol</a>
    310         <a href="/git/iuna/file/README.md.html">Source</a>
    311         <a href="/downloads/">Downloads</a>
    312       </nav>
    313     </div>
    314   </div>
    315 
    316   <header class="hero">
    317     <div class="wrap hero-grid">
    318       <div>
    319         <div class="eyebrow"><span class="dot"></span> Devnet prototype</div>
    320         <h1>iuna</h1>
    321         <p class="pronunciation" aria-label="Pronounced yoo-nuh">/ˈjuː.nə/</p>
    322         <p class="lead">An experimental cryptocurrency devnet that combines VDF finalization, a burn lottery, and open proof-of-work issuance.</p>
    323         <p>iuna is not a mainnet and not money yet. It is a small L1 lab for learning how a wallet, node, finalizer, miner, mempool, and peer network behave when real people run it on real machines.</p>
    324         <div class="actions">
    325           <a class="button primary" href="/downloads/">Download builds</a>
    326           <a class="button" href="/git/iuna/file/docs/protocol.md.html">Read protocol</a>
    327           <a class="button discord" href="https://discord.gg/JcXRSSDhS" target="_blank" rel="noopener noreferrer"><svg class="button-icon" aria-hidden="true" focusable="false"><use href="#discord-icon"></use></svg><span>Join Discord</span></a>
    328         </div>
    329       </div>
    330     </div>
    331   </header>
    332 
    333   <main>
    334     <section id="whatisiuna">
    335       <div class="wrap">
    336         <div class="section-head">
    337           <h2>What Is iuna?</h2>
    338           <p>iuna combines proof-of-burn finalization, a VDF clock, and proof-of-work issuance. Burns turn capital into temporary timing power that must be paid for again, rather than a permanent stake position.</p>
    339         </div>
    340         <div class="grid">
    341           <div class="card">
    342             <span class="tag green">PoB</span>
    343             <h3>Proof Of Burn</h3>
    344             <p>Nodes burn IUNA to enter the block lottery. The top-ranked burner finalizes first; lower ranks can take over with extra VDF delay if the first one disappears.</p>
    345           </div>
    346           <div class="card">
    347             <span class="tag cyan">VDF</span>
    348             <h3>Verifiable Delay</h3>
    349             <p>The selected finalizer must run sequential VDF work before publishing a block. That delay is the chain's clock and gives fallback finalizers a clean way to take over.</p>
    350           </div>
    351           <div class="card">
    352             <span class="tag blue">PoW</span>
    353             <h3>Proof Of Work Issuance</h3>
    354             <p>PoW mine actions introduce new IUNA. Each action issues 2 IUNA: 1 IUNA goes to the miner and 1 IUNA is paid as a fixed fee to the block finalizer.</p>
    355           </div>
    356         </div>
    357       </div>
    358     </section>
    359 
    360     <section id="howtojoin">
    361       <div class="wrap">
    362         <div class="section-head">
    363           <h2>How To Join</h2>
    364           <p>Download the latest available build from <a href="/downloads/">Downloads</a>, start it, and follow setup. Choose how much of the network you want to run.</p>
    365         </div>
    366         <div class="join-panel">
    367           <div>
    368             <div class="join-steps">
    369               <div class="join-step">
    370                 <h3>Download</h3>
    371                 <p>Get the latest available build from the local downloads page.</p>
    372               </div>
    373               <div class="join-step">
    374                 <h3>Set Up</h3>
    375                 <p>Create or import a wallet, back up your recovery phrase, and connect to the devnet.</p>
    376               </div>
    377               <div class="join-step">
    378                 <h3>Choose Your Role</h3>
    379                 <p>Start simple as a wallet, then switch to node mode whenever you want to do more.</p>
    380               </div>
    381             </div>
    382             <div class="actions join-actions">
    383               <a class="button primary" href="/downloads/">Download builds</a>
    384               <a class="button" href="/git/iuna/">Browse source</a>
    385               <a class="button discord" href="https://discord.gg/JcXRSSDhS" target="_blank" rel="noopener noreferrer"><svg class="button-icon" aria-hidden="true" focusable="false"><use href="#discord-icon"></use></svg><span>Join Discord</span></a>
    386             </div>
    387           </div>
    388           <div class="role-list" aria-label="iuna roles">
    389             <div class="role-row">
    390               <span class="tag green">Wallet</span>
    391               <h3>Wallet</h3>
    392               <p>Send, receive, and inspect activity.</p>
    393             </div>
    394             <div class="role-row">
    395               <span class="tag cyan">Node</span>
    396               <h3>Private Node</h3>
    397               <p>Mine new coins with PoW actions or earn finalizer rewards by burning, without opening an inbound P2P port.</p>
    398             </div>
    399             <div class="role-row">
    400               <span class="tag blue">Public Peer</span>
    401               <h3>Public Node</h3>
    402               <p>Help strengthen the network by opening TCP port <code>9444</code> and sharing your public P2P address.</p>
    403             </div>
    404           </div>
    405         </div>
    406         <p class="note">Keep the management UI local. Only the P2P listener should be reachable by other nodes.</p>
    407       </div>
    408     </section>
    409   </main>
    410 
    411   <section class="footer">
    412     <div class="wrap">
    413       <span>iuna devnet prototype.</span>
    414       <a href="/git/iuna/file/README.md.html">Source</a>
    415     </div>
    416   </section>
    417 </body>
    418 </html>