Terms of Use

Last updated: April 2025 — ZIRA Protocol

1. Scope and acceptance

These Terms of Use (“Terms”) govern your access to and use of the ZIRA Protocol website (zira.network), the ZIRA Foundation participation process, and any related services (collectively, the “Service”). By accessing the Service or submitting a Foundation position request, you agree to these Terms in full. If you do not agree, do not use the Service.

We may update these Terms at any time. Continued use of the Service after changes constitutes acceptance of the revised Terms.

2. What ZIRA is — and is not

ZIRA is an open-source, decentralized protocol designed to enable trustless economic coordination between humans and AI agents. It is not a company, investment fund, bank, exchange, or financial services provider. The Foundation team built and maintains the protocol code but does not operate, control, or guarantee the outcome of the network once activated.

ZIR tokens are protocol-native utility tokens used for staking, governance, fee payment, and network access. They are not shares, bonds, securities, or financial instruments of any kind under this characterization. Whether ZIR tokens constitute securities in your jurisdiction is your responsibility to determine before participating.

3. Foundation Round participation

The Foundation Round allows participants to secure a ZIR token allocation at the Foundation price of $0.028 per ZIR, with a minimum of $100 USDT and a maximum of $5,000 USDT per participant. Participation is subject to the following conditions:

4. Vesting and distribution

Foundation ZIR tokens are subject to the following schedule after ZIRA activates:

5. Activation threshold

ZIRA activates when the Foundation participation threshold is reached. We do not guarantee a specific activation date. If the threshold is not reached, all confirmed participants are entitled to a full refund of their confirmed USDT payment. Refund requests must be submitted within 60 days of the formal announcement of non-activation, using the securing code from the registration email as proof.

6. Not financial advice

Nothing on this website or in any ZIRA communication constitutes financial, investment, legal, or tax advice. All participation in the Foundation Round is at your own risk. You should conduct your own due diligence and, if appropriate, consult qualified professionals before participating.

7. Risk disclosure

Participation in the Foundation Round involves significant risks, including but not limited to:

By participating, you acknowledge and accept all of these risks.

8. Prohibited jurisdictions and participants

You may not participate in the Foundation Round if you are:

By submitting a Foundation position request, you represent and warrant that none of the above applies to you. If any restriction applies to you after submission, you must immediately cease participation and notify the ZIRA team.

9. One position per participant

The maximum position is $5,000 USDT per participant. Creating multiple registrations under different identities to circumvent this limit is prohibited and will result in cancellation of all associated positions without refund.

10. Intellectual property

The ZIRA name, logo, website design, and documentation are the intellectual property of the ZIRA Foundation. The protocol code is open-source and governed by its published license. You may not use ZIRA branding for commercial purposes without written permission.

11. No warranties

The Service is provided “as is” and “as available” without any warranties of any kind, express or implied, including but not limited to warranties of merchantability, fitness for a particular purpose, or non-infringement. We do not warrant that the Service will be uninterrupted, error-free, or free of harmful components.

12. Limitation of liability

To the maximum extent permitted by applicable law, the ZIRA Foundation, its contributors, advisors, and associated entities shall not be liable for any indirect, incidental, special, consequential, or punitive damages arising from your use of, or inability to use, the Service or the ZIRA protocol, even if advised of the possibility of such damages. Our total aggregate liability to you for any claim arising out of or related to these Terms shall not exceed the amount you paid to participate in the Foundation Round.

13. Governing law and disputes

These Terms are governed by the laws of the jurisdiction in which the ZIRA Foundation is registered, without regard to conflict of law principles. Any dispute arising from these Terms shall be resolved through binding arbitration, except where prohibited by applicable law. You waive any right to participate in a class action lawsuit or class-wide arbitration.

14. Entire agreement

These Terms, together with the Privacy Policy, constitute the entire agreement between you and ZIRA with respect to the subject matter herein. If any provision is found unenforceable, the remainder of the Terms continues in full effect.

15. Contact

Questions about these Terms may be directed to legal@zira.network. For Foundation Round support, use foundation@zira.network and include your securing code in all correspondence.

+ (n / 1000).toFixed(1) + 'k'; return ' + n; } function genCode() { var chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; var code = 'ZIRA-'; for (var i = 0; i < 6; i++) code += chars[Math.floor(Math.random() * chars.length)]; return code; } /* -- SCROLL REVEAL (bulletproof) ----------------------- */ function initReveal() { var wrapper = qs('.zira-page') || qs('#zira-root'); var fades = qsa('.z-fade'); if (!fades.length) return; // Step 1: pre-mark elements already in viewport BEFORE enabling CSS hiding fades.forEach(function (el) { var r = el.getBoundingClientRect(); if (r.top < window.innerHeight + 20) { el.classList.add('z-up'); } }); // Step 2: enable CSS-based hiding (only elements without z-up will hide) if (wrapper) wrapper.classList.add('z-js-loaded'); // Step 3: observe remaining elements if (!window.IntersectionObserver) { // Fallback: make everything visible fades.forEach(function (el) { el.classList.add('z-up'); }); return; } var io = new IntersectionObserver(function (entries) { entries.forEach(function (e) { if (e.isIntersecting) { e.target.classList.add('z-up'); io.unobserve(e.target); } }); }, { threshold: 0.04, rootMargin: '0px 0px -8px 0px' }); fades.forEach(function (el) { if (!el.classList.contains('z-up')) io.observe(el); }); } /* -- SCROLL PROGRESS ----------------------------------- */ function initProgress() { var bar = qs('#z-progress'); if (!bar) return; function update() { var s = document.documentElement.scrollTop || document.body.scrollTop; var h = document.documentElement.scrollHeight - window.innerHeight; bar.style.width = (h > 0 ? (s / h * 100) : 0) + '%'; } window.addEventListener('scroll', update, { passive: true }); update(); } /* -- SECTION DOTS -------------------------------------- */ function initDots() { var nav = qs('#z-dots'); if (!nav) return; var sections = CONFIG.SECTIONS.map(function (id) { return qs('#' + id); }).filter(Boolean); if (!sections.length) return; sections.forEach(function (sec, i) { var lbl = (sec.getAttribute('data-dot') || sec.id); var btn = document.createElement('button'); btn.setAttribute('aria-label', lbl); btn.title = lbl; btn.addEventListener('click', function () { sec.scrollIntoView({ behavior: 'smooth' }); }); nav.appendChild(btn); }); var btns = qsa('button', nav); function update() { var mid = window.scrollY + window.innerHeight / 2; var active = 0; sections.forEach(function (sec, i) { if (sec.offsetTop <= mid) active = i; }); btns.forEach(function (b, i) { b.classList.toggle('z-on', i === active); }); } window.addEventListener('scroll', update, { passive: true }); update(); } /* -- FLOATING CTA -------------------------------------- */ function initFloat() { var el = qs('#z-float'); if (!el) return; var hero = qs('#home'); function update() { var heroH = hero ? hero.offsetTop + hero.offsetHeight : 400; el.classList.toggle('z-show', window.scrollY > heroH - 100); } window.addEventListener('scroll', update, { passive: true }); update(); } /* -- TYPEWRITER ---------------------------------------- */ function initTypewriter() { var el = qs('#z-typewriter'); if (!el) return; var phrases = CONFIG.TYPEWRITER; var pi = 0, ci = 0, deleting = false; var SPEED_TYPE = 38, SPEED_DEL = 18, PAUSE = 2800; function tick() { var phrase = phrases[pi]; if (!deleting) { el.textContent = phrase.slice(0, ci + 1); ci++; if (ci >= phrase.length) { deleting = true; setTimeout(tick, PAUSE); return; } setTimeout(tick, SPEED_TYPE); } else { el.textContent = phrase.slice(0, ci - 1); ci--; if (ci <= 0) { deleting = false; pi = (pi + 1) % phrases.length; setTimeout(tick, 400); return; } setTimeout(tick, SPEED_DEL); } } setTimeout(tick, 900); } /* -- NAV ----------------------------------------------- */ function initNav() { var nav = qs('#z-nav'); if (!nav) return; function update() { nav.classList.toggle('z-scrolled', window.scrollY > 60); } window.addEventListener('scroll', update, { passive: true }); update(); } /* -- MENU ---------------------------------------------- */ function initMenu() { var burger = qs('#z-burger'); var drawer = qs('#z-drawer'); var overlay = qs('#z-overlay'); var closeBtn = qs('#z-drawer-close'); if (!burger || !drawer) return; function open() { burger.classList.add('open'); drawer.classList.add('open'); if (overlay) overlay.classList.add('open'); document.body.style.overflow = 'hidden'; } function close() { burger.classList.remove('open'); drawer.classList.remove('open'); if (overlay) overlay.classList.remove('open'); document.body.style.overflow = ''; } burger.addEventListener('click', function () { drawer.classList.contains('open') ? close() : open(); }); if (closeBtn) closeBtn.addEventListener('click', close); if (overlay) overlay.addEventListener('click', close); qsa('a', drawer).forEach(function (a) { a.addEventListener('click', close); }); } /* -- COUNTDOWN ----------------------------------------- */ function initCountdown() { var dEl = qs('#z-cd-d'), hEl = qs('#z-cd-h'), mEl = qs('#z-cd-m'), sEl = qs('#z-cd-s'); if (!dEl) return; var end = CONFIG.FOUNDATION_END.getTime(); function update() { var diff = end - Date.now(); if (diff <= 0) { dEl.textContent = hEl.textContent = mEl.textContent = sEl.textContent = '00'; return; } var d = Math.floor(diff / 86400000); var h = Math.floor((diff % 86400000) / 3600000); var m = Math.floor((diff % 3600000) / 60000); var s = Math.floor((diff % 60000) / 1000); dEl.textContent = pad(d); hEl.textContent = pad(h); mEl.textContent = pad(m); sEl.textContent = pad(s); } update(); setInterval(update, 1000); } /* -- CALCULATOR ---------------------------------------- */ function initCalc() { var sel = qs('#z-amount'); var usdEl = qs('#z-calc-usd'); var zirEl = qs('#z-calc-zir'); var incEl = qs('#z-calc-income'); if (!sel) return; function update() { var usd = parseFloat(sel.value) || 500; var zir = Math.round(usd / CONFIG.ZIR_PRICE); var income = Math.round(zir * CONFIG.YIELD); if (usdEl) usdEl.textContent = ' + usd.toLocaleString() + ' USDT'; if (zirEl) zirEl.textContent = zir.toLocaleString() + ' ZIR'; if (incEl) incEl.textContent = income.toLocaleString() + ' ZIR / year + fee share'; } sel.addEventListener('change', update); update(); } /* -- FORM ---------------------------------------------- */ function initForm() { var form = qs('#z-form'); var formState = qs('#z-form-state'); var confirmState = qs('#z-confirm-state'); if (!form || !confirmState) return; form.addEventListener('submit', function (e) { e.preventDefault(); var btn = qs('#z-submit-btn'); if (btn) { btn.disabled = true; btn.textContent = 'Securing\u2026'; } var email = (qs('#z-email', form) || {}).value || ''; var usd = parseFloat((qs('#z-amount', form) || {}).value) || 500; var code = genCode(); var addr = CONFIG.USDT_ADDRESS; setTimeout(function () { // show confirmation if (formState) formState.style.display = 'none'; confirmState.style.display = 'block'; var codeEl = qs('#z-code-display'); var addrEl = qs('#z-addr-display'); var usdEl2 = qs('#z-confirm-usd-display'); var emailEl = qs('#z-confirm-email-display'); if (codeEl) codeEl.textContent = code; if (addrEl) addrEl.textContent = addr; if (usdEl2) usdEl2.textContent = ' + usd.toLocaleString() + ' USDT'; if (emailEl) emailEl.textContent = email; // copy button var copyBtn = qs('#z-copy-addr'); if (copyBtn) { copyBtn.addEventListener('click', function () { if (navigator.clipboard) { navigator.clipboard.writeText(addr).then(function () { copyBtn.textContent = '\u2713 Copied!'; setTimeout(function () { copyBtn.textContent = '\uD83D\uDCCB Copy address'; }, 2000); }); } }); } // 48-hour deadline var ddlEl = qs('#z-confirm-ddl'); if (ddlEl) { var deadline = new Date(Date.now() + 48 * 3600 * 1000); ddlEl.textContent = '\u23F3 This address is valid until ' + deadline.toUTCString() + '. After that, contact support with your securing code.'; } }, 1200); }); } /* -- MONITOR ------------------------------------------- */ function initMonitor() { var totalEl = qs('#z-m-total'); var usdEl = qs('#z-m-usd'); var zirEl = qs('#z-m-zir'); var avgEl = qs('#z-m-avg'); var barEl = qs('#z-m-bar'); var pctEl = qs('#z-m-pct'); var tbody = qs('#z-pos-tbody'); var progFill = qs('#z-prog-fill'); var progCnt = qs('#z-prog-count'); var m = CONFIG.MONITOR; var total = m.total; var totalUsd = m.totalUsd; var avgUsd = Math.round(totalUsd / total); var totalZir = Math.round(totalUsd / CONFIG.ZIR_PRICE); var pct = m.poolPct; if (totalEl) totalEl.textContent = total; if (usdEl) usdEl.textContent = ' + totalUsd.toLocaleString(); if (zirEl) zirEl.textContent = fmtZir(totalZir); if (avgEl) avgEl.textContent = fmtUsd(avgUsd); if (pctEl) pctEl.textContent = pct.toFixed(1) + '%'; if (progCnt) progCnt.textContent = total + ' / est. 350 total'; // Animate bars on visibility function animateBars() { if (barEl) barEl.style.width = pct + '%'; if (progFill) progFill.style.width = (pct / 1 > 100 ? 100 : pct) + '%'; } var barObserver = new IntersectionObserver(function (entries) { if (entries[0].isIntersecting) { animateBars(); barObserver.disconnect(); } }, { threshold: 0.3 }); var monitorEl = qs('.z-monitor'); if (monitorEl) barObserver.observe(monitorEl); // Table if (!tbody) return; tbody.innerHTML = ''; CONFIG.POSITIONS.forEach(function (p) { var zir = Math.round(p.usd / CONFIG.ZIR_PRICE); var tr = document.createElement('tr'); tr.innerHTML = '' + p.id + '' + '' + p.init + '' + ' + p.usd.toLocaleString() + '' + '' + zir.toLocaleString() + ' ZIR' + ' Confirmed' + '' + p.ts + ''; tbody.appendChild(tr); }); } /* -- ZTI BARS ------------------------------------------ */ function initZTI() { var bars = qsa('.z-zti-fill'); if (!bars.length) return; var io = new IntersectionObserver(function (entries) { if (entries[0].isIntersecting) { bars.forEach(function (b) { b.style.width = (b.getAttribute('data-w') || 0) + '%'; }); io.disconnect(); } }, { threshold: 0.3 }); var container = qs('#z-zti-bars'); if (container) io.observe(container); } /* -- HERO CANVAS --------------------------------------- */ function initHeroCanvas() { var canvas = qs('#z-hero-canvas'); if (!canvas || !canvas.getContext) return; var ctx = canvas.getContext('2d'); function resize() { canvas.width = canvas.offsetWidth; canvas.height = canvas.offsetHeight; } resize(); window.addEventListener('resize', resize); // Floating node graph var nodes = []; var NODE_COUNT = 38; var COLORS = ['rgba(0,216,196,', 'rgba(123,92,240,', 'rgba(232,168,60,']; for (var i = 0; i < NODE_COUNT; i++) { nodes.push({ x: Math.random() * canvas.width, y: Math.random() * canvas.height, vx: (Math.random() - .5) * .4, vy: (Math.random() - .5) * .4, r: Math.random() * 2.5 + 1, c: COLORS[Math.floor(Math.random() * COLORS.length)], a: Math.random() * .5 + .2 }); } var raf; function draw() { if (document.hidden) { raf = requestAnimationFrame(draw); return; } ctx.clearRect(0, 0, canvas.width, canvas.height); // Move nodes.forEach(function (n) { n.x += n.vx; n.y += n.vy; if (n.x < 0 || n.x > canvas.width) n.vx *= -1; if (n.y < 0 || n.y > canvas.height) n.vy *= -1; }); // Edges var MAX_DIST = 140; for (var i = 0; i < nodes.length; i++) { for (var j = i + 1; j < nodes.length; j++) { var dx = nodes[i].x - nodes[j].x; var dy = nodes[i].y - nodes[j].y; var d = Math.sqrt(dx * dx + dy * dy); if (d < MAX_DIST) { var alpha = (1 - d / MAX_DIST) * 0.12; ctx.beginPath(); ctx.moveTo(nodes[i].x, nodes[i].y); ctx.lineTo(nodes[j].x, nodes[j].y); ctx.strokeStyle = nodes[i].c + alpha + ')'; ctx.lineWidth = 0.8; ctx.stroke(); } } } // Nodes nodes.forEach(function (n) { ctx.beginPath(); ctx.arc(n.x, n.y, n.r, 0, Math.PI * 2); ctx.fillStyle = n.c + n.a + ')'; ctx.fill(); }); raf = requestAnimationFrame(draw); } draw(); } /* -- NETWORK CANVAS ------------------------------------ */ function initNetCanvas() { var canvas = qs('#z-net-canvas'); if (!canvas || !canvas.getContext) return; var ctx = canvas.getContext('2d'); function resize() { canvas.width = canvas.offsetWidth; canvas.height = canvas.offsetHeight; } resize(); window.addEventListener('resize', resize); var ROLES = [ { label: 'Validator', x: .5, y: .18, color: '#00D8C4' }, { label: 'Validator', x: .18, y: .42, color: '#00D8C4' }, { label: 'Validator', x: .82, y: .42, color: '#00D8C4' }, { label: 'Operator', x: .35, y: .68, color: '#7B5CF0' }, { label: 'Operator', x: .65, y: .68, color: '#7B5CF0' }, { label: 'LP', x: .2, y: .82, color: '#E8A83C' }, { label: 'LP', x: .8, y: .82, color: '#E8A83C' }, { label: 'Governor', x: .5, y: .88, color: '#34D399' } ]; var EDGES = [[0,1],[0,2],[1,2],[1,3],[2,4],[3,4],[3,5],[4,6],[5,7],[6,7],[0,3],[0,4]]; var packets = []; setInterval(function () { if (packets.length < 12) { var e = EDGES[Math.floor(Math.random() * EDGES.length)]; packets.push({ from: e[0], to: e[1], t: 0, speed: 0.012 + Math.random() * 0.012 }); } }, 600); function getPos(node) { return { x: node.x * canvas.width, y: node.y * canvas.height }; } function draw() { ctx.clearRect(0, 0, canvas.width, canvas.height); // Edges EDGES.forEach(function (e) { var a = getPos(ROLES[e[0]]), b = getPos(ROLES[e[1]]); ctx.beginPath(); ctx.moveTo(a.x, a.y); ctx.lineTo(b.x, b.y); ctx.strokeStyle = 'rgba(30,43,96,.8)'; ctx.lineWidth = 1; ctx.stroke(); }); // Packets packets.forEach(function (p, i) { p.t += p.speed; if (p.t >= 1) { packets.splice(i, 1); return; } var a = getPos(ROLES[p.from]), b = getPos(ROLES[p.to]); var x = a.x + (b.x - a.x) * p.t; var y = a.y + (b.y - a.y) * p.t; ctx.beginPath(); ctx.arc(x, y, 3, 0, Math.PI * 2); ctx.fillStyle = ROLES[p.from].color + 'CC'; ctx.fill(); }); // Nodes ROLES.forEach(function (n) { var p = getPos(n); var sz = canvas.width < 400 ? 26 : 34; ctx.beginPath(); ctx.arc(p.x, p.y, sz / 2, 0, Math.PI * 2); ctx.fillStyle = '#0B1130'; ctx.fill(); ctx.strokeStyle = n.color + '88'; ctx.lineWidth = 1.5; ctx.stroke(); ctx.fillStyle = n.color; ctx.font = 'bold ' + (canvas.width < 400 ? 8 : 9) + 'px Inter,sans-serif'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.fillText(n.label, p.x, p.y); }); requestAnimationFrame(draw); } draw(); } /* -- FAQ ----------------------------------------------- */ function initFAQ() { qsa('.z-faq-item').forEach(function (item) { var btn = item.querySelector('.z-faq-q'); if (!btn) return; btn.addEventListener('click', function () { var isOpen = item.classList.contains('open'); qsa('.z-faq-item.open').forEach(function (o) { o.classList.remove('open'); }); if (!isOpen) item.classList.add('open'); }); }); } /* -- USE CASE TABS ------------------------------------- */ function initTabs() { var tabs = qsa('.z-uc-tab'); var panels = qsa('.z-uc-panel'); tabs.forEach(function (tab) { tab.addEventListener('click', function () { var key = tab.getAttribute('data-tab'); tabs.forEach(function (t) { t.classList.remove('z-on'); }); panels.forEach(function (p) { p.classList.remove('z-on'); }); tab.classList.add('z-on'); var panel = document.querySelector('.z-uc-panel[data-tab="' + key + '"]'); if (panel) panel.classList.add('z-on'); }); }); } /* -- SMOOTH SCROLL ------------------------------------- */ function initSmoothScroll() { qsa('a[href^="#"]').forEach(function (a) { a.addEventListener('click', function (e) { var id = a.getAttribute('href').slice(1); var target = id ? document.getElementById(id) : null; if (target) { e.preventDefault(); target.scrollIntoView({ behavior: 'smooth' }); } }); }); } /* -- BOOT ---------------------------------------------- */ function boot() { initReveal(); // FIRST -- fixes content visibility initProgress(); initDots(); initFloat(); initNav(); initMenu(); initCountdown(); initTypewriter(); initCalc(); initForm(); initMonitor(); initZTI(); initHeroCanvas(); initNetCanvas(); initFAQ(); initTabs(); initSmoothScroll(); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', boot); } else { boot(); } })();