<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel><title>Althea</title><link>https://blog.althea.net/</link><description>Transforming Connectivity</description><language>en</language>
<atom:link href="https://blog.althea.net/rss.xml" rel="self" type="application/rss+xml"/>
<item><title>Althea: 2025 in Review</title><link>https://blog.althea.net/althea-2025-in-review/</link><guid isPermaLink="true">https://blog.althea.net/althea-2025-in-review/</guid><pubDate>Thu, 08 Jan 2026 05:04:29 GMT</pubDate><description>As we step into 2026, we want to take a moment to reflect on 2025, a pivotal year for Althea’s infrastructure and ecosystem. The past year brought volatility and pressure to both the telecom and blockchain industries, but within the Althea ecosystem, deliberate, long-term work reached a defining milestone. Althea L1 was unlocked, and the Althea protocol is now ready to expand scalable and sovereign infrastructure on the L1 blockchain.

Transforming the intrinsic systems of funding and operating </description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>As we step into 2026, we want to take a moment to reflect on 2025, a pivotal year for Althea’s infrastructure and ecosystem. The past year brought volatility and pressure to both the telecom and blockchain industries, but within the Althea ecosystem, deliberate, long-term work reached a defining milestone. Althea L1 was unlocked, and the Althea protocol is now ready to expand scalable and sovereign infrastructure on the L1 blockchain.</p><p>Transforming the intrinsic systems of funding and operating utilities and telecom is no small feat, nor is it a quick process. Since its development, the Althea protocol has changed how critical infrastructure is funded, owned, and operated. The protocol empowers operators of all sizes to build locally owned networks while returning choice for end users. Now with Althea L1, a purpose-built platform reliable enough to scale, the Althea protocol will finally be ready to reach its full potential.&nbsp;</p><h2 id="2025-a-year-in-review">2025: A Year in Review</h2><p>Over the course of the year, the Althea protocol and its ecosystem crossed several major milestones:</p><ul><li>Unlock of Althea L1, after a year of preparation Althea L1 is ready to enable new scale, reliability, and DeFi capabilities for Althea Protocol users.</li><li>Deployment of the <a href="http://althea.link/?ref=blog.althea.net"><strong><u>iFi DEX</u></strong></a>, an exchange purpose-built for the needs of utilities and telecom. Designed for efficiency, it features Liquidity Fusion, which combines ambient liquidity with knock-out and limit orders in a single pool.</li><li>Community governance decisions, including votes to:<ul><li>Manage the iFi DEX parameters</li><li>Launch an incentives program for the iFi DEX</li><li>Unlock transfers of the Althea token, now listed on Kraken</li></ul></li><li>Final prep of Althea L1 firmware for routers, enabling machine-to-machine payments directly between network devices using the Althea L1 blockchain.</li><li>Expansion of Liquid Infrastructure, which uses the Althea L1 blockchain and the EVM (Ethereum Virtual Machine) compatibility to bring the power of DeFi financing to broadband networks. <a href="https://blog.althea.net/financing-the-next-frontier-liquid-infrastructure-fuels-broadband-expansion-in-arizona/"><strong><u>Read the Arizona case study</u></strong></a><strong>.</strong></li></ul><h2 id="expanding-the-stack-cellular-mobility">Expanding the Stack: Cellular &amp; Mobility</h2><p>2025 also delivered meaningful progress in cellular infrastructure. Enhancements to the cellular stack now enable roaming between private and public mobile networks. Enabling unprecedented access to powerful cellular tools to build in the mobile space, use licensed frequencies, and connect a variety of devices. Contact the Althea Foundation if you are interested in building using roaming cellular on Althea L1 - more to come on this in 2026!&nbsp;</p><h2 id="looking-ahead-to-2026">Looking Ahead to 2026</h2><p>In 2026, the work will continue to evolve Liquid Infrastructure for scale and to connect DeFi directly to telecom and utilities revenue.</p><p>Users of Althea L1 continue to innovate DeFi primitives with pooled Liquid Infrastructure Tokens (LITs) that represent diversified revenue streams. This could include applications such as lending or auction markets, or wrapped pooled tokens. Development of applications for Althea is permissionless, and the Althea L1 platform can be utilized for a wide variety of DeFi and RWA applications. Apps and tokens can be added to the <a href="http://althea.link/?ref=blog.althea.net"><u>althea.link</u></a> front-end through token holder governance.&nbsp;</p><p>Through real-world deployments and operator adoption, the Althea protocol has demonstrated a vital alternative to brittle legacy systems, one that preserves local ownership, user choice, and sovereignty. We build because this movement matters. The fundamentals are now in place, and the Althea protocol is ready to scale on its rightful home: the Althea L1 blockchain.</p><p>Participate in the discussion at <a href="http://forum.althea.net/?ref=blog.althea.net"><u>forum.althea.net</u></a> to add your voice to Althea’s evolution.</p>]]></content:encoded></item>
<item><title>Evolution of Liquid Infrastructure</title><link>https://blog.althea.net/evolution-of-liquid-infrastructure/</link><guid isPermaLink="true">https://blog.althea.net/evolution-of-liquid-infrastructure/</guid><pubDate>Wed, 05 Nov 2025 17:06:58 GMT</pubDate><description>Liquid Infrastructure: Aligning Capital, Operators, and Users

Funding, building, and operating infrastructure, especially in telecom, has long been brittle and broken, leading to unhappy users and operators struggling under unsustainable economics. Liquid Infrastructure was developed as a set of tools that enable programmatic revenue sharing among stakeholders, aligning incentives between users and operators to create more sustainable systems.

Already, Liquid Infrastructure is being deployed a</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<h3 id="liquid-infrastructure-aligning-capital-operators-and-users"><strong>Liquid Infrastructure: Aligning Capital, Operators, and Users</strong></h3><p>Funding, building, and operating infrastructure, especially in telecom, has long been brittle and broken, leading to unhappy users and operators struggling under unsustainable economics. Liquid Infrastructure was developed as a set of tools that enable programmatic revenue sharing among stakeholders, aligning incentives between users and operators to create more sustainable systems.</p><p>Already, Liquid Infrastructure is being deployed across the U.S. to build, operate, and expand networks in ways that preserve local sovereignty and management autonomy, resulting in more resilient operations and sustainable growth for all participants.</p><hr><h3 id="evolution-of-liquid-infrastructure"><strong>Evolution of Liquid Infrastructure</strong></h3><p>Liquid Infrastructure is defined by three key characteristics: on-chain, programmatic, and transparent. Revenue sharing occurs almost instantly as income flows into the LISC (Liquid Infrastructure Smart Contract) on Althea L1, directly from customers paying for services. This creates a seamless coordination mechanism among stakeholders, mitigating counterparty risk and enabling operational flexibility.</p><p>These on-chain fundamentals also support the evolution of LIT (Liquid Infrastructure Tokens) as usage scales. Future developments could include the creation of on-chain markets for buying, selling, and lending LIT, such as auction modules or decentralized lending pools, enhancing liquidity and capital efficiency.</p><p>As a native Althea L1 primitive, Liquid Infrastructure is open to development teams building applications and user interfaces. It can be adapted to a wide range of use cases, including data centers, large-scale infrastructure projects, metered billing in energy grids, fleet coordination, and vending network management.</p><p>Each LIT is specific to a given deployment and fully transferable, unlocking the potential for secondary markets and asset exchanges. Historically, telecom and fixed assets have been discounted due to illiquidity, and evolving Liquid Infrastructure into a framework that includes on-chain auctions and marketplaces could transform the sector and drive new growth.</p><hr><h3 id="defi-meets-real-world-assets-rwa"><strong>DeFi Meets Real-World Assets (RWA)</strong></h3><p>The programmable nature of LIT on Althea L1 introduces new DeFi applications, such as lending, applied for the first time to telecom and infrastructure assets. Just as RWA assets like Treasury notes are used in on-chain lending protocols, LIT can bring telecom revenues into the DeFi ecosystem. This removes the manual friction of traditional infrastructure financing, expanding growth and improving capital efficiency.</p><p>Althea L1, purpose-built for telecom and utilities, provides the ideal platform for this convergence of DeFi and infrastructure finance. It integrates machine-to-machine settlement directly into its architecture and prioritizes utility-grade transactions, avoiding the congestion and high fees typical of general-purpose blockchains.</p><p>Additionally, the iFi DEX (Infrastructure Finance Decentralized Exchange) introduces seamless stablecoin swaps and native integration with the Althea ecosystem. With these purpose-built tools, we can envision a future where DeFi’s flexibility and liquidity solve systemic inefficiencies in infrastructure finance, building a stronger foundation for the emerging machine economy.</p><hr><h3 id="next-steps"><strong>Next Steps</strong></h3><p>The upcoming Cardinal Update marks the next milestone in Althea L1’s evolution. This update introduces:</p><ul><li>Enhanced UX and governance capabilities for the iFi DEX</li><li>Improved support for machine-to-machine payments</li><li>Foundational upgrades for future DeFi applications built on Liquid Infrastructure</li></ul>]]></content:encoded></item>
<item><title>Althea Update: Cardinal</title><link>https://blog.althea.net/althea-update-cardinal/</link><guid isPermaLink="true">https://blog.althea.net/althea-update-cardinal/</guid><pubDate>Thu, 09 Oct 2025 19:36:33 GMT</pubDate><description>The upcoming Althea L1 Cardinal Update is a minor feature upgrade for the Althea L1 blockchain with improvements for the dex and machine to machine payment flow.

Auto Swapping and Stablecoin Fees: DeFi for Machines

This new feature provides a stablecoin fee only path for unwrapping tokens from the EVM. Tokens bridged into Althea L1 are automatically wrapped into the EVM for DeFi ease of use. For embedded devices with wallets using the Althea L1 that swap on the micro-payments layer, this upgra</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>The upcoming <strong>Althea L1 Cardinal Update</strong> is a minor feature upgrade for the Althea L1 blockchain with improvements for the dex and machine to machine payment flow.</p><p><strong>Auto Swapping and Stablecoin Fees: DeFi for Machines</strong></p><p>This new feature provides a stablecoin fee only path for unwrapping tokens from the EVM. Tokens bridged into Althea L1 are automatically wrapped into the EVM for DeFi ease of use. For embedded devices with wallets using the Althea L1 that swap on the micro-payments layer, this upgrade allows those routers to pay USDC/stablecoins in fees directly. This increases reliability and reduces response time, making it seamless and practical for Machine-to-Machine devices to move funds into and out of the micro-transaction layer more frequently.<br><br>One of the biggest lessons we've learned designing M2M payment systems is that workflow complexity spirals fast. We designed <a href="https://blog.althea.net/universal-permit-tx-support-on-althea-l1/" rel="noreferrer">universal permit tx</a> support to allow M2M devices to make swaps without having to manage an ALTHEA balance themselves. Instead paying their fees in stablecoins to a relayer who pays fees in ALTHEA on their behalf.<br><br>But for a very common flow, like adding funds to an on chain router the complexity should be absolutely minimized for high reliability.</p><p><strong>Governance for the iFi DEX</strong></p><p>Initializes the NativeDex module to allow parameter and config changes to be sent to the iFi DEX via easy-to-use governance proposals. This means anyone can submit an easy to understand proposal to increase or decrease fees or change any other parameter in the iFi DEX.&nbsp;</p><p>These updates support the routers and machines that use the micro-transaction platform and the usability of iFi DEX with Liquid Infrastructure. </p><hr><p>Learn More about Althea L1 - <a href="https://blog.althea.net/althea-l1-a-focused-chain/">https://blog.althea.net/althea-l1-a-focused-chain/</a></p><p>Liquid Infrastructure - <a href="https://medium.com/althea-mesh/introducing-liquid-infrastructure-a-new-defi-primitive-f4e2df14088b?ref=blog.althea.net">https://medium.com/althea-mesh/introducing-liquid-infrastructure-a-new-defi-primitive-f4e2df14088b</a></p><p>iFi DEX - <a href="https://blog.althea.net/liquidity-fusion-in-the-ifi-dex-2/">https://blog.althea.net/liquidity-fusion-in-the-ifi-dex-2/</a></p><hr><h2 id="come-build-with-us">Come Build With Us!</h2><p>Are you building in the iFi space? We are actively looking for builders and projects to take part in an upcoming iFi whitepaper. Contact us at hello@althea.net.</p><ul><li><a href="https://discord.gg/hHx7HxcycF?ref=blog.althea.net" rel="noopener ugc nofollow">Discord</a>: Join our community</li><li>Learn More about how Althea works:&nbsp;<a href="https://althea.net/?ref=blog.althea.net" rel="noopener ugc nofollow">website</a>,&nbsp;<a href="http://docs.althea.net/?ref=blog.althea.net" rel="noopener ugc nofollow">docs</a></li><li>Participate as a&nbsp;<a href="https://github.com/althea-net/althea-L1?ref=blog.althea.net" rel="noopener ugc nofollow">validator</a></li><li>Launch an Althea network:&nbsp;<a href="https://hawknetworks.net/?ref=blog.althea.net" rel="noopener ugc nofollow">Hawk Networks</a></li></ul>]]></content:encoded></item>
<item><title>Financing the Next Frontier: Liquid Infrastructure Fuels Broadband Expansion in Arizona</title><link>https://blog.althea.net/financing-the-next-frontier-liquid-infrastructure-fuels-broadband-expansion-in-arizona/</link><guid isPermaLink="true">https://blog.althea.net/financing-the-next-frontier-liquid-infrastructure-fuels-broadband-expansion-in-arizona/</guid><pubDate>Tue, 16 Sep 2025 15:35:33 GMT</pubDate><description>Althea’s Liquid Infrastructure is redefining how broadband, cellular and infrastructure networks are funded by turning physical assets into blockchain-backed, revenue-generating digital instruments. Rather than relying on slow-moving grants or rigid bank loans, Liquid Infrastructure combines tokenized real-world assets (RWA), programmable finance, and instant revenue distribution to create a transparent, automated ecosystem for financing connectivity at scale.

Kamui Finance, a pioneer instituti</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<h1 id=""></h1><p><strong>Althea’s Liquid Infrastructure</strong> is redefining how broadband, cellular and infrastructure networks are funded by turning physical assets into blockchain-backed, revenue-generating digital instruments. Rather than relying on slow-moving grants or rigid bank loans, Liquid Infrastructure combines tokenized real-world assets (RWA), programmable finance, and instant revenue distribution to create a transparent, automated ecosystem for financing connectivity at scale.</p><p><strong>Kamui Finance</strong>, a pioneer institutional investor in tokenized real world assets, led the investment backing the first large scale deployment in Liquid Infrastructure. The support of Kamui Finance represents growing institutional confidence in tokenized finance solutions.</p><p>“The Althea and Hawk Networks teams’ innovative, blockchain-based solution provides exactly the kinds of advantages we seek when investing in tokenized and on-chain finance. Transparent, predictable and automated distributions derived daily from infrastructure provide a higher level of investment security than typically available in traditional finance structures. We are proud to be able to support the deployment of Liquid Infrastructure RWA and support them in their future growth” said Hadi Kabalan, Director at Kamui Finance.&nbsp;</p><h2 id="why-a-new-model-was-needed"><strong>Why a New Model Was Needed</strong></h2><p>Despite billions in federal and state broadband programs, many communities remain underserved. Traditional funding sources like grants, subsidies, and bank credit often come with delays, rigid terms, and bureaucratic hurdles that small and mid-sized ISPs struggle to navigate.</p><p>Broadband is one of the fastest-growing infrastructure sectors in the U.S., with market growth projected at ~10% annually, yet operators with strong customer loyalty and localized expertise are routinely locked out of capital markets. Althea’s Liquid Infrastructure closes this gap by making digital networks as investable and trackable as traditional financial assets—unlocking growth potential for both funders and operators.</p><hr><h2 id="how-it-works"><strong>How It Works</strong></h2><p>Liquid Infrastructure is a suite of blockchain-based tools that transform physical networks—fiber routes, towers, routers—into programmable financial assets:</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2025/09/Althea-Announcment.png" class="kg-image" alt="" loading="lazy" width="1920" height="1080" decoding="async"></figure><ol><li><strong>NFT-Backed Assets:</strong> Each network or utility asset is represented by a non-fungible token (ERC721 NFT) on the Althea L1 blockchain, anchoring its identity and revenue stream on-chain.</li><li><strong>Fractionalization via Smart Contracts:</strong> The <strong>Liquid Infrastructure Smart Contract (LISC)</strong> fractionalizes the NFT into fungible<strong> </strong>tokens, allowing multiple investors to share in top-line revenue.</li><li><strong>Machine-to-Machine Billing:</strong> Althea’s payment system automatically collects user payments and distributes funds directly to token holders in near real-time.</li><li><strong>Keystone Liquidity Platform:</strong> Hawk Networks’ interface for viewing performance metrics, claiming revenue, and managing tokens brings transparency and accessibility to both operators and investors.</li><li><strong>Non-Custodial &amp; Trustless:</strong> Smart contracts are non-upgradable and verifiable, giving investors direct control over their tokens and earnings without intermediaries.</li></ol><hr><h2 id="arizona-case-study"><strong>Arizona Case Study</strong></h2><p>In Southern Arizona, a regional ISP with ~1,000 subscribers near a large market was able to scale operations and upgrade technology using Liquid Infrastructure. Hawk Networks leveraged blockchain-powered transparency and on-chain mechanics into tokenized RWA backed by institutional investors led by Kamui Finance to super-charge growth, add value to users and derive superior returns on investment.&nbsp;</p><p>“What’s exciting about this model is that we can now align investment with impact. Local ISPs keep their identity and autonomy, while investors gain confidence from blockchain-level transparency. It’s a win for communities and capital,” said Deborah Simpier, CEO of Hawk Networks.</p><p>This approach has already accelerated the rollout of advanced connectivity solutions like KeyLTE/5G and Althea Mobile, proving Liquid Infrastructure’s value as a financing model for high growth areas.</p><h2 id="why-it-matters"><strong>Why It Matters</strong></h2><ul><li><strong>For Investors:</strong> Liquid Infrastructure offers access to a <strong>$3T+ infrastructure market</strong> with unparalleled visibility and automated risk management.</li><li><strong>For Operators:</strong> Smaller ISPs finally have access to scalable, flexible funding that doesn’t compromise their independence.</li><li><strong>For Communities:</strong> This model prioritizes local agency and governance, while enabling faster deployments, with happier, more long-term customers. </li></ul><p>Liquid Infrastructure shows that infrastructure can be financed as dynamically as it’s used, transforming broadband, utilities, and smart-city services into programmable financial ecosystems.</p>]]></content:encoded></item>
<item><title>Introducing The Althean Archetypes: A Limited NFT Collection Celebrating Our Community</title><link>https://blog.althea.net/introducing-the-althean-archetypes-a-limited-nft-collection-celebrating-our-community/</link><guid isPermaLink="true">https://blog.althea.net/introducing-the-althean-archetypes-a-limited-nft-collection-celebrating-our-community/</guid><pubDate>Fri, 12 Sep 2025 21:27:06 GMT</pubDate><description>The Althea ecosystem has grown from a bold vision of decentralized infrastructure into a thriving global community of builders, validators, network operators, and believers. Today, we&apos;re proud to introduce The Althean Archetypes - a limited collection of 18 unique NFTs that celebrate the diverse roles and contributions that make our community extraordinary.

Ready to claim yours? Apply here 


Celebrating Every Kind of Althean

From the developers coding our iFi DEX to the technicians climbing t</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<h1 id=""></h1><p>The Althea ecosystem has grown from a bold vision of decentralized infrastructure into a thriving global community of builders, validators, network operators, and believers. Today, we're proud to introduce <strong>The Althean Archetypes</strong> - a limited collection of 18 unique NFTs that celebrate the diverse roles and contributions that make our community extraordinary.</p><p>Ready to claim yours? <a href="https://docs.google.com/forms/d/e/1FAIpQLSdDxZqhmUC9MpxTZNTXaV2y-lQF1tX9_g1Rntd_T2YEsLfx4g/viewform?ref=blog.althea.net"><u>Apply here</u></a>&nbsp;</p><h2 id="celebrating-every-kind-of-althean"><strong>Celebrating Every Kind of Althean</strong></h2><p>From the developers coding our iFi DEX to the technicians climbing towers in remote locations, from the validators securing our network to the voices spreading our message across social media - every Althean plays a vital role in building the future of Infrastructure Finance. These NFTs aren't just digital collectibles; they're recognition tokens that honor the real work our community does every day.</p><p>Each archetype represents a different way our community members contribute to Althea's mission of democratizing infrastructure and connectivity:</p><h3 id="the-builder"><strong>The Builder</strong></h3><p><em>"The future isn't just imagined, it's compiled."</em></p><p>The Builder forges the tools that power the machine economy. From crafting smart contracts for Liquid Infrastructure to optimizing our blockchain architecture, they transform ideas into code and possibilities into realities.</p><h3 id="the-guardian"><strong>The Guardian</strong></h3><p><em>"Silent sentinels making decentralization possible."</em></p><p>The Guardian secures our digital cosmos as validators on Althea L1. Through constant vigilance and technical expertise, they ensure every micropayment, every governance vote, and every Liquid Infrastructure token mint happens safely and reliably.</p><h3 id="the-weaver"><strong>The Weaver</strong></h3><p><em>"True decentralization happens one community, one installation, one connection at a time."</em></p><p>The Weaver transforms vision into connectivity. Whether they're planning network deployments, negotiating community partnerships, or physically installing infrastructure, they bridge the gap between digital innovation and real-world implementation.</p><h3 id="the-explorer"><strong>The Explorer</strong></h3><p><em>"At the bleeding edge of innovation, venturing where others fear to tread."</em></p><p>The Explorer pushes the boundaries of what's possible with Infrastructure Finance. First to test new features, break things that need breaking, and experiment with ambitious deployments, they help shape our future through curiosity and courage.</p><h3 id="the-voice"><strong>The Voice</strong></h3><p><em>"The bridge between builders and believers."</em></p><p>The Voice makes complex technology accessible to all. Through social media, blog posts, community calls, and countless conversations, they translate technical innovation into human stories that inspire others to join our movement.</p><h3 id="the-believer"><strong>The Believer</strong></h3><p><em>"Seeing the impossible and making it inevitable."</em></p><p>The Believer envisions a world where infrastructure is truly decentralized - where smart cities run themselves, where communities own their connectivity, and where machine-to-machine payments enable new economic models. Their unwavering faith in our mission keeps the entire ecosystem moving forward.</p><h2 id="recognition-not-sale"><strong>Recognition, Not Sale</strong></h2><p>These NFTs are not for sale. Instead, we'll be distributing them on a case-by-case basis to recognize outstanding contributions to the Althea ecosystem. Whether you've been validating since our early days, building crucial infrastructure, creating educational content, or championing our vision in your community - your contributions matter, and these NFTs are our way of saying thank you.</p><p>Community members can receive multiple NFTs from the collection if their contributions span different archetypes. A developer who also runs a validator node might receive both The Builder and The Guardian. A network operator who creates educational content could earn both The Weaver and The Voice. The goal is to authentically recognize the diverse ways our community members contribute to Althea's success.</p><p>If you think you're eligible for one (or more), <a href="https://docs.google.com/forms/d/e/1FAIpQLSdDxZqhmUC9MpxTZNTXaV2y-lQF1tX9_g1Rntd_T2YEsLfx4g/viewform?ref=blog.althea.net"><u>apply here</u></a>.</p><h2 id="which-archetype-are-you"><strong>Which Archetype Are You?</strong></h2><p>As we prepare to launch this collection, we're curious: which archetype resonates most with your contributions to Althea? Are you The Builder crafting the next generation of iFi applications? The Guardian securing our network? The Weaver connecting communities? The Explorer testing our latest innovations? The Voice spreading our message? Or The Believer holding the vision that guides us all?</p><p>These archetypes aren't just NFT categories - they're a reflection of the incredible diversity and dedication that makes the Althea community unique. Each represents a different path toward the same goal: building a more open, accessible, and decentralized future for connectivity and infrastructure.</p><h2 id="ready-to-join-the-althean-archetypes"><strong>Ready to join The Althean Archetypes?</strong></h2><p>Think you embody one of these archetypes? We want to recognize your contributions to the Althea ecosystem. <a href="https://docs.google.com/forms/d/e/1FAIpQLSdDxZqhmUC9MpxTZNTXaV2y-lQF1tX9_g1Rntd_T2YEsLfx4g/viewform?ref=blog.althea.net"><u>Claim your NFT here</u></a></p><hr><p><strong>Follow our progress:</strong></p><ul><li>Join our Discord:<a href="https://discord.gg/althea?ref=blog.althea.net"> </a><u>discord.gg/hHx7HxcycF</u></li><li>Follow us on X:<a href="https://twitter.com/AltheaNetwork?ref=blog.althea.net"> <u>@AltheaNetwork</u></a></li><li>Visit our forum:<a href="https://forum.althea.net/?ref=blog.althea.net"> <u>forum.althea.net</u></a></li></ul>]]></content:encoded></item>
<item><title>Dev Update: Althea L1 Unlock!</title><link>https://blog.althea.net/dev-update-althea-l1-unlock/</link><guid isPermaLink="true">https://blog.althea.net/dev-update-althea-l1-unlock/</guid><pubDate>Fri, 12 Sep 2025 19:59:41 GMT</pubDate><description>As September 8th 2025 Althea L1 governance has voted to enable transfers. This makes ALTHEA token transferable and allows for EVM transactions (which require ALTHEA) to pay gas.

With the chain now unlocked it&apos;s time to deploy the technology that we&apos;ve been working on, including the iFi DEX and new firmware for the Althea telecom routing and billing protocol and integrate Liquid Infrastructure to Althea L1, enabling revenue on chain.



The iFi DEX

The iFi DEX is the foundation of DeFi on Althe</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>As September 8th 2025 Althea L1 governance has <a href="https://www.mintscan.io/althea/proposals/19?ref=blog.althea.net" rel="noreferrer">voted to enable transfers</a>. This makes ALTHEA token transferable and allows for EVM transactions (which require ALTHEA) to pay gas.<br><br>With the chain now unlocked it's time to deploy the technology that we've been working on, including the <a href="https://blog.althea.net/introducing-the-ifi-dex/" rel="noreferrer">iFi DEX</a> and new firmware for the <a href="https://blog.althea.net/appliance-exits-for-althea/" rel="noreferrer">Althea telecom routing and billing protocol</a> and integrate Liquid Infrastructure to Althea L1, enabling revenue on chain. </p><h3 id="the-ifi-dex"><br>The iFi DEX </h3><p>The iFi DEX is the foundation of DeFi on Althea L1, allowing users and machines to onboard and interact with Althea L1 and other protocols, such as Liquid Infrastructure,  on the chain smoothly and automatically.<br><br>The DEX itself has been<a href="https://explorer.althea.link/address/0xd263DC98dEc57828e26F69bA8687281BA5D052E0?tab=contract&amp;ref=blog.althea.net" rel="noreferrer"> deployed</a> and <a href="https://www.mintscan.io/althea/proposals/16?ref=blog.althea.net" rel="noreferrer">adopted by governance</a>.  The creation of new pools, and swapping on existing ones is permissionless with settings such as fees <a href="https://blog.althea.net/governance-integration-for-ifi-dex/" rel="noreferrer">directly controlled by governance vote</a>.<br><br>Currently v0.5 of <a href="https://althea.link/?ref=blog.althea.net" rel="noreferrer">Althea.link</a> is deployed, with governance and staking functionality designed to operate while the chain was not yet unlocked. Version 1.0 of Althea.link, which includes bridging, LP, and swap pages has not yet been deployed for mainnet. You can check out v1.0 of Althea.link on the testnet at <a href="https://test.althea.link/?ref=blog.althea.net" rel="noreferrer">test.althea.link</a><br><br>Right now we're working on v1.5 of Althea.link, which dramatically simplifies the internal data handling and resolves some of the data dependency loops that can make v1.0 less responsive than we would like. Version 1.5 is expected to be the next version deployed live to Althea.link. <br><br>We're excited to take community feedback on what features we should be looking at in v2.0. Here are some that have already been proposed.<br><br>* More in depth trading view<br>* Chain activity and fees page<br><br><strong>Althea Firmware</strong></p><p>We've been working on a lot of new features for the Althea Firmware (for embedded devices like routers in telecom networks) in preparation for Althea L1. The most substantial feature is <a href="https://blog.althea.net/appliance-exits-for-althea/" rel="noreferrer">appliance exits</a> which allows new networks to onboard to Althea L1 entirely out of the box, instead of requiring significant technical knowledge to setup an exit. <br><br>Now that the chain is unlocked and various constants like the stablecoin addresses and DEX addresses are known we can move forward with deploying the <a href="https://exitroot.althea.net/?ref=blog.althea.net" rel="noreferrer">exit root of trust</a> on Althea L1 and preparing firmware with out of the box configuration for Althea L1. <br><br>We hope to have images ready, tested, and distributed by the end of the month.<br></p><h3 id="althea-l1-relayer"><br>Althea L1 Relayer</h3><p>We've talked about <a href="https://blog.althea.net/universal-permit-tx-support-on-althea-l1/" rel="noreferrer">universal permit tx support</a> before - this is an ecosystem of tools on Althea L1 that allows anyone to interact with the chain without having to already hold ALTHEA. This is essential for a chain with many machine users and real world applications, as acquiring some native token dust for fees can often be complicated so Althea L1 has an ecosystem wide solution.<br><br>That solution is the <a href="https://github.com/AltheaFoundation/althea-l1-relayer?ref=blog.althea.net" rel="noreferrer">Althea L1 relayer</a>. This program, which anyone can run to permissionlessly, relays gassless transactions, paying some ALTHEA in exchange for another token amount of slightly greater value. <br><br>These initial relayer tool is very straightforward and lacks fun features, like auto swap for the reward token back to ALTEHA, but is functionally complete. Looking forward to more polish and extra features in the next version.</p><h2 id="next-up">Next up</h2><p>If you're interested in more updates, have questions, or just want to interact with the Althea L1 community drop by the <a href="https://forum.althea.net/?ref=blog.althea.net" rel="noreferrer">forum</a> and <a href="https://discord.com/invite/hHx7HxcycF?ref=blog.althea.net" rel="noreferrer">discord</a>!</p><p><br></p><h3 id=""><br><br></h3>]]></content:encoded></item>
<item><title>Resilient and Sovereign Infrastructure Is the Next  Frontier for Fintech</title><link>https://blog.althea.net/resilient-and-sovereign-infrastructure-is-the-next-frontier-for-fintech/</link><guid isPermaLink="true">https://blog.althea.net/resilient-and-sovereign-infrastructure-is-the-next-frontier-for-fintech/</guid><pubDate>Wed, 11 Jun 2025 18:00:38 GMT</pubDate><description>While much of fintech focuses on applications—payments, wallets, digital banking—a deeper shift is happening beneath the surface. The next frontier isn&apos;t in app design or user onboarding. It&apos;s in the infrastructure itself.

Telecom systems—fiber, radios, routers—have long been treated as utilities. They move data, but they’ve had no agency, no embedded logic, and no role in finance. That’s no longer sustainable. If fintech is to reach its full potential—truly global, decentralized, and programma</description><dc:creator>Devon Malick</dc:creator><content:encoded><![CDATA[<p>While much of fintech focuses on applications—payments, wallets, digital banking—a deeper shift is happening beneath the surface. The next frontier isn't in app design or user onboarding. It's in the infrastructure itself.</p><p>Telecom systems—fiber, radios, routers—have long been treated as utilities. They move data, but they’ve had no agency, no embedded logic, and no role in finance. That’s no longer sustainable. If fintech is to reach its full potential—truly global, decentralized, and programmable—it needs infrastructure that can match that ambition.</p><p>Thanks to technology like Althea, today's networks are empowered to operate like economic agents. They can earn revenue, repay capital, split payments among stakeholders, and dynamically price services, all without human oversight. What was once passive infrastructure now plays an active role in creating and exchanging value.</p><p>We refer to this as resilient and sovereign infrastructure: networks that can govern, finance, and sustain themselves. It is infrastructure with financial logic built into the foundation.</p><h2 id="ifi-when-infrastructure-becomes-financially-aware">iFi: When Infrastructure Becomes Financially Aware</h2><p>Web3 takes the traditional fintech principles to new levels of autonomy and cooperation across a global landscape. At Althea, we’ve taken that concept further by developing a framework for Infrastructure Finance, or iFi.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2025/06/Screenshot-2025-06-11-at-12.55.49-PM.png" class="kg-image" alt="" loading="lazy" width="2000" height="969" decoding="async"><figcaption><span style="white-space: pre-wrap;">On-chain capital builds the network. Usage generates revenue. Payments flow directly to investors, operators, and stakeholders, all governed by the network itself.</span></figcaption></figure><p>Here’s how it works in practice:</p><ol><li>A telecom network, such as a rural cellular deployment, is funded using on-chain capital.</li><li>These funders receive Liquid Infrastructure Tokens (LITs), which entitle them to a share of that network’s future revenue.</li><li>As users pay for service, the network streams small payments directly to all stakeholders: lenders, spectrum providers, equipment partners, and operators.</li><li>Once the target repayment is met, control of the asset shifts automatically—no manual billing, no reconciliation delays.</li></ol><p>Each LIT is backed by actual usage and tied to the economic activity of a working network. These tokens reflect real performance, not speculation.</p><h2 id="the-network-keeps-the-books">The Network Keeps the Books</h2><p>Legacy infrastructure relies on layers of billing departments, contracts, and delayed settlements. Funds often move more slowly than the services they are intended to support.</p><p>Althea’s model removes those frictions. Revenue splits, debt repayment, and capital recycling are handled directly by the network itself. A router can send payments upstream as soon as a user connects. A radio can track its own payback schedule and fulfill it automatically. A network can continuously adjust how earnings are distributed based on performance, demand, or updated terms, without requiring human input.</p><p>With financial intelligence woven into the infrastructure layer, Althea enables systems to adapt, scale, and support new services as conditions evolve.</p><h2 id="building-the-right-rails-the-ifi-dex">Building the Right Rails: The iFi DEX</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2025/06/Screenshot-2025-06-11-at-12.56.38-PM.png" class="kg-image" alt="" loading="lazy" width="2000" height="1066" decoding="async"><figcaption><span style="white-space: pre-wrap;">The iFi DEX: A purpose-built exchange for infrastructure assets. Real-time revenue distribution, machine-to-machine payments, and liquidity rails for sovereign infrastructure.</span></figcaption></figure><p>To support this model of autonomous finance, we developed the iFi DEX, a decentralized exchange designed explicitly for infrastructure tokens, bandwidth markets, and machine-to-machine payments.</p><p>Off-the-shelf DEXs weren’t built for these kinds of users. Routers, sensors, and radios aren’t speculators—they need simple, predictable tools to manage cash flow and liquidity.</p><p>The iFi DEX is designed for that environment. It enables:</p><ul><li>Swaps of stablecoins and other revenue</li><li>Real-time revenue distribution to token holders</li><li>Programmatic settlement for services purchasing bandwidth</li></ul><p>It also supports gasless transactions and stable, yield-bearing assets—critical features enabling machines, not just human traders, to interact with financial markets.</p><h2 id="what-this-unlocks">What This Unlocks</h2><p>6G is often noted as the evolution that brings intelligence to the edge of connectivity. It enables dynamic and programmatic features on the radio that directly connect to the device. Instead of performing complex logic or operations at the data center or cloud, operations can be performed in real time, improving latency and maintaining the security and sovereignty of the data.&nbsp;</p><p>Combined with Althea’s embedded financial design, we can envision key performance unlocks, such as dynamic spectrum sharing, supply chain tracking, or private cellular networks owned by multiple stakeholders.&nbsp;&nbsp;</p><p>By embedding finance directly into the network’s operation, we make it possible to deploy high-performance infrastructure with less overhead, faster coordination, and a clear path to return on investment.</p><p>We’re already seeing this approach in action across apartment buildings, tribal lands, remote agricultural corridors, and dense urban environments. These aren’t pilots. These are active, growing networks built on principles of local ownership, open finance, and technological resilience.</p><h2 id="real-yield-real-assets-real-sovereignty">Real Yield, Real Assets, Real Sovereignty</h2><p>Infrastructure is no longer just a cost center or public utility. It’s becoming an asset class with programmable cash flow, clear performance metrics, and built-in governance.</p><p>This model changes who can deploy networks, how capital is raised and repaid, and the role connectivity plays in global finance.</p><p>The financial systems of tomorrow won’t just depend on infrastructure. They’ll be built directly inside it.</p>]]></content:encoded></item>
<item><title>Althea L1—iFi DEX Testnet Launches April 15th</title><link>https://blog.althea.net/althea-l1-ifi-dex-testnet-launches-april-15th/</link><guid isPermaLink="true">https://blog.althea.net/althea-l1-ifi-dex-testnet-launches-april-15th/</guid><pubDate>Wed, 02 Apr 2025 14:00:12 GMT</pubDate><description>The iFi DEX testnet opens April 15th, marking a key step in Althea L1&apos;s development of infrastructure finance on-chain.


What Sets iFi DEX Apart

Althea L1 is focused on Infrastructure Finance (iFi), a new category of blockchain applications that combines concepts from DeFi (Decentralized Finance), Physical Infrastructure, and RWA (on-chain Real World Assets).  

Like most innovations, iFi builds on what came before it. One key foundational piece is a decentralized exchange (DEX) — essential fo</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>The iFi DEX testnet opens April 15th, marking a key step in Althea L1's development of infrastructure finance on-chain.</p><h2 id="what-sets-ifi-dex-apart"><strong>What Sets </strong><a href="https://medium.com/althea-mesh/introducing-the-ifi-dex-42e9108df9f9?ref=blog.althea.net"><strong><u>iFi DEX Apart</u></strong></a></h2><p>Althea L1 is focused on <a href="https://medium.com/althea-mesh/introducing-ifi-infrastructure-finance-4e23056ca114?ref=blog.althea.net"><u>Infrastructure Finance (iFi)</u></a>, a new category of blockchain applications that combines concepts from DeFi (Decentralized Finance), Physical Infrastructure, and RWA (on-chain Real World Assets).&nbsp;&nbsp;</p><p>Like most innovations, iFi builds on what came before it. One key foundational piece is a decentralized exchange (DEX) — essential for Althea L1 users to buy gas for EVM interactions, swap stablecoins for iFi transactions, and participate in DeFi built around iFi.</p><p>iFi DEX combines three liquidity types in a single pool through its <a href="https://medium.com/althea-mesh/the-machine-to-machine-payment-ecosystem-on-althea-l1-e74ca356f92e?ref=blog.althea.net"><u>Liquidity Fusion model</u></a>: Each pool can be composed of ambient, concentrated and knockout liquidity—the latter also allows for limit order and for limit orders to function as liquidity. When all three work together, swaps are executed using the optimal mix of the three types of available liquidity and are executed in a single transaction. Liquidity Fusion enables greater efficiency, faster execution, lower gas costs while minimizing slippage. You can read more about how <a href="https://medium.com/althea-mesh/the-machine-to-machine-payment-ecosystem-on-althea-l1-e74ca356f92e?ref=blog.althea.net"><u>liquidity fusion pools work here</u></a>.</p><h2 id="testnet-opportunities"><strong>Testnet Opportunities</strong></h2><p>iFi DEX will be launching soon, and we’re inviting you to participate in the upcoming testnet, scheduled to begin April 15th, 2025. As a testnet participant, you would test out the core features and functionalities of the iFi DEX. This includes…</p><ul><li>Test the Liquidity Fusion model firsthand</li><li>Provide liquidity across all three types</li><li>Execute swaps and measure system efficiency</li><li>Shape the final product through direct feedback</li></ul><h2 id="join-as-an-ifi-explorer"><strong>Join as an iFi Explorer</strong></h2><p>Participation offers clear benefits:</p><ul><li>Early access to next-generation DEX technology</li><li>Direct influence on infrastructure finance development</li><li>Identification of improvements before mainnet</li><li>Practical experience with production tools</li></ul><h2 id="how-to-participate"><strong>How to Participate</strong></h2><p>Register using<a href="https://docs.google.com/forms/d/e/1FAIpQLScK7RYG3bpYtv0VD-1TMAmPrFr8X60UibcQxDVy5sGGAUbu5w/viewform?ref=blog.althea.net"> <u>this form</u></a>.&nbsp;</p><p>Please also join the Althea L1 Discord server, where most of the Testnet coordination will be happening: <a href="https://discord.gg/2pQPDxGDqT?ref=blog.althea.net"><u>invite link</u></a>.</p><p>All participants will receive testnet connection instructions, test tokens, and access to documentation and support.</p><h2 id="the-road-ahead"><strong>The Road Ahead</strong></h2><p>User feedback from the testnet will shape the final iFi DEX before its production launch. This completes a crucial piece of Althea L1's vision: bridging real-world assets with decentralized finance through a comprehensive infrastructure finance ecosystem.</p><p>Become an iFi Explorer and test the future of infrastructure finance on-chain with us.</p>]]></content:encoded></item>
<item><title>The Machine to Machine payment ecosystem on Althea L1</title><link>https://blog.althea.net/the-machine-to-machine-payment-ecosystem-on-althea-l1/</link><guid isPermaLink="true">https://blog.althea.net/the-machine-to-machine-payment-ecosystem-on-althea-l1/</guid><pubDate>Tue, 25 Mar 2025 14:46:23 GMT</pubDate><description>Machine-to-Machine (M2M) payments use digital wallets to facilitate real-time, trustless, and programmable financial transactions between devices and represent one of the most compelling and natural use cases for blockchain technology—enabling exciting new economic models for smart infrastructure, IoT interoperability and a tremendous diversity of potential on-demand services.

Despite this untapped potential, the industry as a whole has thus far made surprisingly little progress in developing r</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Machine-to-Machine (M2M) payments use digital wallets to facilitate real-time, trustless, and programmable financial transactions between devices and represent one of the most compelling and natural use cases for blockchain technology—enabling exciting new economic models for smart infrastructure, IoT interoperability and a tremendous diversity of potential on-demand services.</p><p>Despite this untapped potential, the industry as a whole has thus far made surprisingly little progress in developing real-world M2M payment applications. While DeFi has made great strides in innovation, adoption and functionality, its focus remains centered on individual actions, not machines or automation. These priorities, while essential for human-driven finance, do not translate well to autonomous devices that require lightweight, continuous, and self-executing payment mechanisms.</p><p>Althea L1 is a purpose-built, scalable M2M payment solution, designed specifically to service applications like the Althea Protocol, which require secure, real-time, automated financial transactions between devices.</p><p>In this post we will talk about the software ecosystem that runs on Althea L1 and a little bit about the design of M2M applications themselves.</p><h2 id="billing-vs-blockchain-consensus">Billing vs Blockchain consensus</h2><p>Over the last seven years spent developing and using the <a href="https://www.youtube.com/watch?v=G4EKbgShyLw&amp;ref=blog.althea.net"><u>Althea routing and billing protocol</u></a>, we’ve learned a lot about developing M2M applications. One of the biggest lessons is the tradeoff between on-chain and off-chain billing logic.&nbsp;</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2025/03/signal-2025-03-25-195622_002.png" class="kg-image" alt="" loading="lazy" width="1479" height="673" decoding="async"></figure><p>Regardless of how payments are ultimately settled on Althea L1, development has focused on the balance of programmable blockchain logic that the M2M application uses and the way that it is embedded into the billing process. In general the more on-device logic is used, the more difficult application development will be. Blockchain consensus is extremely powerful, which is what makes consensus worth the tradeoffs around speed and cost of execution.The Althea protocol’s multi hop routing and billing system for internet payments is pretty far <a href="https://www.youtube.com/watch?v=G4EKbgShyLw&amp;ref=blog.althea.net"><u>over to the left</u></a> on this chart. It’s not until you climb up the stack into things like the <a href="https://blog.althea.net/appliance-exits-for-althea/"><u>exit layer</u></a> or <a href="https://docs.althea.net/pages/L1/althea-l1-li.html?ref=blog.althea.net"><u>liquid infrastructure</u></a> that the Althea protocol uses significant amounts of on-chain logic. </p><p>While this approach adds design complexity, it yields enormous scalability advantages. Althea protocol could scale to handle the traffic and payments of the entire global internet, something infeasible for an architecture relying solely on on-chain logic.</p><p>No M2M application on Althea L1 will be entirely on one side or the other of this spectrum, but it’s important to keep the spectrum in mind when working on M2M application design. This insight is what led to Althea L1’s hybrid design, where microtransactions for on-device logic are prioritized, with programmable EVM logic running at a slower pace.&nbsp;</p><p>This tradeoff makes Althea L1 significantly more appropriate for applications generating revenue rather than applications focusing on blockchain incentives for real-world goods.</p><p>Incentive mechanisms are extremely chain-logic heavy by nature and inherently constrain the capacity of their host chain for M2M applications that focus on IRL revenue, which generally cannot be proven on chain.&nbsp;</p><p>As an example, imagine a vending machine. On chain proof of sold candy bars is essentially impossible. But using on device logic the vending machine can determine it has been paid and release the item to the customer.</p><h2 id="more-powerful-applications-require-better-tools">More powerful applications require better tools</h2><p><br>Developing M2M applications that rely heavily on on-chain logic plays to the strengths of general-purpose Layer 1 blockchains—primarily because blockchain developer tooling is far more robust than embedded device tooling. However, this convenience comes at a cost as discussed in the previous section: scalability and efficiency.This challenge became especially clear during the Althea protocol’s development. Existing tooling simply did not provide the level of control needed to implement Althea’s device-centric design. Without off-the-shelf solutions to turn to, we had to build our own libraries for interacting with both EVM and CosmosSDK-based chains.</p><h2 id="clarity"><a href="https://github.com/althea-net/clarity?ref=blog.althea.net"><u>Clarity</u></a></h2><p>Clarity is an ultra-lightweight, ultra-portable transaction generation library for the EVM that is fully compliant with the Ethereum consensus client test suite.</p><p>What makes Clarity unique is that it is fully cross-platform, meaning it is free of any CPU architecture-specific instructions across its entire implementation. We originally required this to support routers using MIPS CPUs, and while the rise of ARM powered hardware means this is no longer mandatory, It continues to be useful when porting to unique architectures and maintaining lightweight operation.Clarity is also extremely light weight, with only 36 dependencies it is ideal for embedded environments down to as little as a few hundred kilobytes of ram.&nbsp;</p><h2 id="web30"><a href="https://github.com/althea-net/clarity?ref=blog.althea.net"><u>Web30</u></a></h2><p>Web30 is the request library companion for Clarity. Handling the network functions and <em>jsonrpc</em> interaction. The key design aspect of Web30 is a focus on robust response to a variety of network outages and conditions.Web30 exposes all network calls to the user in such a way that any failure can be handled gracefully with a complete understanding by the caller of how and when transactions are signed, submitted, and executed. This is a problem with other request libraries that include a very high level of abstraction—making it difficult, or even impossible, to handle a network failure at the wrong time, or an unexpected disconnection.</p><h2 id="deep-space"><a href="https://github.com/althea-net/deep_space?ref=blog.althea.net"><u>Deep Space</u></a></h2><p>Deep Space was the first <a href="https://docs.cosmos.network/?ref=blog.althea.net"><u>CosmosSDK</u></a>-compatible transaction generation library to use Rust and also the first to make exclusive use of the GRPC interface for communicating with full nodes.</p><p>Unlike Clarity and Web30, Deep Space is a single library, because transaction encoding in CosmosSDK requires <em>protobuf</em> definitions that already pulled in network libraries there was no point in separating them.</p><p>Deep Space is the most <a href="https://github.com/althea-net/deep_space_demo?ref=blog.althea.net"><u>performant</u></a> library for interacting with CosmosSDK chains, capable of indexing 10 million blocks in roughly 100 minutes, utilizing even mediocre hardware.</p><h1 id="ecosystem-infrastructure">Ecosystem infrastructure</h1><p>In addition to the foundational libraries, Althea L1 includes several pieces of infrastructure designed for easy integration by M2M applications.</p><h2 id="the-ifi-dex"><a href="https://blog.althea.net/introducing-the-ifi-dex/"><u>The iFi Dex</u></a></h2><p>Every design choice for the iFi DEX was made in favor of optimization for M2M devices, payments and swaps. The topic of the high-speed backend is covered in detail in our <a href="https://blog.althea.net/introducing-the-ifi-dex/"><u>introductory blog post</u></a>.Higher speed and lower resource usage are nice to have for a DeFi platform, but they are essential for M2M applications that should successfully build swaps themselves rather than relying on less reliable centralized infrastructure.</p><p>For Althea L1 applications, the swap complexity is pushed to the DEX side. By taking advantage of the multiple liquidity types aggregated using <a href="https://blog.althea.net/liquidity-fusion-in-the-ifi-dex-2/"><u>Liquidity Fusion</u></a>, devices can perform a single swap that is both routed across many different types of liquidity and potentially multiple pools without using a separate dex aggregator —thereby eliminating significant complexity from the device side of the equation.</p><p><a href="https://blog.althea.net/universal-permit-tx-support-on-althea-l1/"><u>Permit TX Aggregator</u></a></p><p>All DeFi infrastructure on Althea L1 supports <em>Permit TX</em>, which allows ALTHEA gas to be paid on your behalf by a relayer. This means that M2M application developers can spend less time writing gas handling code and more time working on their application.</p><h2 id="liquid-infrastructure"><a href="https://docs.althea.net/pages/L1/althea-l1-li.html?ref=blog.althea.net"><u>Liquid Infrastructure</u></a></h2><p>Liquid Infrastructure is the vanguard feature of Althea L1’s iFi DEX, enabling seamless integration between on-device revenue streams and on-chain DeFi applications. Even more importantly, it achieves this without hindering the <a href="https://blog.althea.net/throughput-scaling-on-althea-l1/"><u>overall performance of the chain.</u></a></p><h1 id="conclusion">Conclusion</h1><p>Althea L1’s ecosystem is purpose-built, from top to bottom, to support M2M applications, with a unique focus on revenue-generating devices and bringing off-chain businesses on-chain. The enticement to Web3 in this case is not through incentives—but by delivering a superior customer experience, superior performance, lower cost of operation, and deep integrating with decentralized finance (DeFi)—powering a new era of iFi (infrastructure finance), enabling fully on-chain businesses to flourish.</p>]]></content:encoded></item>
<item><title>Liquidity Fusion in the iFi DEX</title><link>https://blog.althea.net/liquidity-fusion-in-the-ifi-dex-2/</link><guid isPermaLink="true">https://blog.althea.net/liquidity-fusion-in-the-ifi-dex-2/</guid><pubDate>Wed, 12 Mar 2025 23:43:01 GMT</pubDate><description>Althea L1 iFi DEX combines three different types of liquidity models into a single liquidity pool, making it much more efficient and flexible compared to traditional DEXs that usually would require multiple separate pools or a swap aggregator to deliver the same swap quality. We call this synthesis of liquidity types and functionality Liquidity Fusion.


Three Types of Liquidity

 1. Ambient Liquidity (Uniswap V2 Style)

What is it? This is the &quot;always available&quot; liquidity that spreads across th</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p><a href="https://blog.althea.net/introducing-the-ifi-dex/"><strong><u>Althea L1 iFi DEX</u></strong></a> combines three different types of liquidity models into a <strong>single</strong> liquidity pool, making it much more efficient and flexible compared to traditional DEXs that usually would require multiple separate pools or a swap aggregator to deliver the same swap quality. We call this synthesis of liquidity types and functionality <strong><em>Liquidity Fusion.</em></strong></p><h2 id="three-types-of-liquidity">Three Types of Liquidity</h2><ol><li><strong>Ambient Liquidity (Uniswap V2 Style)</strong></li></ol><p><strong>What is it?</strong> This is the "always available" liquidity that spreads across the entire spectrum of possible prices.</p><p><strong>Advantages:</strong> Trades can happen regardless of the price the pool is at&nbsp;</p><p><strong>Disadvantages:</strong> Liquidity providers are more exposed to impermanent loss. Traders can experience inefficient swaps unless pools are large.<br></p><ol start="2"><li><strong>Concentrated Liquidity (Uniswap V3 Style)</strong></li></ol><p><strong>What is it?</strong> Rather than spreading liquidity across the entire spectrum of potential exchange rates, liquidity providers <em>select a specific price range</em> where they want their liquidity to be active. Providers can also overlap multiple liquidity positions, allowing for a more nuanced approach when deploying liquidity.</p><p><strong>Advantages:</strong> This makes the provided liquidity more efficient. It’s only used for swaps in the desired price range. Traders experience very efficient swaps and liquidity providers have more control over their exposure.</p><p><strong>Disadvantages:</strong> If the price moves outside of the range, the liquidity becomes inactive and swaps can not execute (unless/until the price returns within the specified range). Concentrated Liquidity is also more complicated to manage for liquidity providers.<br></p><ol start="3"><li><strong>Knockout Liquidity (Limit Orders as Liquidity, Ambient / Ambient derivatives)</strong></li></ol><p><strong>What is it?</strong> Knockout liquidity is a concentrated liquidity position with a very narrow price range that starts as entirely one token, and is removed from the pool when it becomes entirely made up of the other token. What this means is that it acts as both a liquidity position and as a limit order. For example, if someone wants to swap a large amount of a token at a set price, they can create a knockout liquidity position. This enables buyers to execute potentially enormous trades <em>without slippage</em> as long as there is sufficient knockout liquidity to cover the trade. Knockout liquidity will continue to be used as pool liquidity as long as the price stays within the defined range (think fractions of a cent price change). Once the price of the pool moves through the full range of the knockout position, the liquidity is automatically removed.. This allows the creator of the position to come by and withdraw their swapped tokens, in addition to any fees they may have earned for providing liquidity while the knockout liquidity position was active. If the price fails to move through the full range of the knockout position, it is also possible to withdraw early and get a mix of tokens and fees, much like how concentrated burns work.</p><p><strong>Advantages:</strong> Knockout liquidity allows buyers and sellers to make large trades hyper-efficiently, and also provides improved swap quality to regular traders at the same time.&nbsp;</p><p><strong>Disadvantages:</strong> Knockout liquidity is not an instant swap, it requires buyers or sellers willing to move the price from one side of the range limit to the other.</p><h2 id="liquidity-fusion-ambient-concentrated-and-knockout-liquidity-work-together"><em>Liquidity Fusion</em>: Ambient, Concentrated and Knockout Liquidity work together</h2><p>Every pool in the iFi DEX uses liquidity fusion, applying the optimal mix of the three liquidity types to execute every swap.&nbsp;</p><ul><li>If the trade is within range of a knockout liquidity position, it will be used first reducing the price impact to effectively zero.<br><br></li><li>If there is no knockout liquidity available iFi DEX will utilize concentrated liquidity provided that the price is within the range of the available concentrated liquidity.<br><br></li><li>If the price moves outside the concentrated liquidity range, iFi DEX can still execute the trade using the ambient liquidity in the pool, even if it’s less efficient.</li></ul><p>Liquidity Fusion provides an experience for swappers that is equal to or better than even the best DEX aggregators. DEX aggregators direct your swap across multiple pools and multiple DEXs in order to generate the best price. Liquidity Fusion can do that all in a single pool, faster, requiring less gas, and also provides knockout liquidity.</p><p>Limit order functionality in other DEXs (e.g. Uniswap) is limited to signing a normal swap that will execute at a later time. Knockout liquidity allows the user to trade time for efficiency that DEXs ordinarily cannot provide.</p><h2 id="ambient-liquidity-rewards">Ambient liquidity rewards</h2><p>The iFi DEX is an <a href="https://us.ambient.finance/?ref=blog.althea.net"><u>Ambient DEX</u></a> fork, with a new and completely unique feature only in the iFi DEX fork is integrated <a href="https://blog.althea.net/expanding-ifi-dex-open-rewards-on-althea-l1/"><u>liquidity rewards</u></a>. Ambient or Uniswap v2 style liquidity has two major advantages. It’s simple for liquidity providers to manage, and it’s fungible which makes liquidity rewards much easier to provide. With a concentrated liquidity position, every position is unique and is making a unique amount of swap fees based on the exact price range that was selected. Furthermore optimal utilization of the liquidity requires the price range of the liquidity providers position to be adjusted frequently. This can be a very active operation requiring weekly or even daily attention.</p><p>Ambient style liquidity on the other hand is a set it and forget it operation. Everyone providing ambient liquidity to a pool will have the same outcome, and receive the same amount of fees per unit of liquidity.&nbsp; Some protocols and communities continue to use ambient style liquidity exclusively despite its reduced efficiency because participation is so much easier.</p><p>With Liquidity Fusion in each iFi DEX pool there would normally not be many good reasons to use ambient liquidity. The more efficient concentrated liquidity positions would earn the vast majority of the fees and discourage less specialized and infrequently active liquidity providers from being involved at all. This is a problem, because ambient liquidity can act as a strategic reserve for trading when a large price swing reduces active concentrated and knockout liquidity.Using the iFi DEX incentives program, governance or any other sponsor can provide rewards to be distributed to all ambient liquidity participants in a pool, encouraging liquidity providers to participate and allowing traders to take full advantage of all types of liquidity.&nbsp;</p><h2 id="a-focused-dex">A focused DEX</h2><p>Althea L1 is a platform <a href="https://blog.althea.net/althea-l1-a-focused-chain/"><u>focused on providing an efficient</u></a>, effective, and easy infrastructure platform. To fit into that mold the iFi DEX is designed as a one stop shop that replaces an entire ecosystem of liquidity pools and DEX aggregation. With the iFi DEX applications on Althea L1 can focus on building effective and reliable infrastructure for their customers.&nbsp;</p>]]></content:encoded></item>
<item><title>Appliance Exits for Althea</title><link>https://blog.althea.net/appliance-exits-for-althea/</link><guid isPermaLink="true">https://blog.althea.net/appliance-exits-for-althea/</guid><pubDate>Thu, 06 Mar 2025 20:02:24 GMT</pubDate><description>The Althea Whitepaper 2.0 introduced several enhancements to the original Althea protocol, expanding its capabilities while maintaining its core design principles:

 * Althea L1: A layer 1 protocol designed for machine-to-machine payments
 * Liquid Infrastructure: A native feature of Althea L1 that bridges the gap between RWA and DeFi
 * Improved appliance exit architecture

Though the core feature set has grown and new functionalities added, the foundational design of the Althea Protocol has re</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>The <a href="https://blog.althea.net/content/files/2024/06/Althea-Whitepaper-v2.0.pdf"><u>Althea Whitepaper 2.0</u></a> introduced several enhancements to the original Althea protocol, expanding its capabilities while maintaining its core design principles:</p><ul><li><a href="https://blog.althea.net/althea-l1-a-focused-chain/"><u>Althea L1</u></a>: A layer 1 protocol designed for machine-to-machine payments</li><li><a href="https://docs.althea.net/pages/L1/althea-l1-li.html?ref=blog.althea.net"><u>Liquid Infrastructure</u></a>: A native feature of Althea L1 that bridges the gap between RWA and DeFi</li><li>Improved appliance exit architecture</li></ul><p>Though the core feature set has grown and new functionalities added, the foundational design of the Althea Protocol has remained remarkably consistent since the original whitepaper seven years ago and the first <a href="https://www.youtube.com/watch?v=G4EKbgShyLw&amp;pp=ygUYYnVpbGRpbmcgYW4gaXNwIGluIGEgYm94&amp;ref=blog.althea.net"><u>operational prototype</u></a> five years ago.&nbsp;</p><p>This stability is a testament to the strength and foresight of our initial design.</p><p>A recent upgrade to appliance exits marks the most notable refinement in how Althea Networks operate, aligning even more closely with real-world operator needs.</p><p>Right now Althea networks are structured like this:&nbsp;</p><p>Gateways provide an internet bridge that pulls nodes not physically connected to the network into the local network, where clients can talk to them. The <a href="https://blog.althea.net/content/files/2024/06/Althea-Whitepaper-v2.0.pdf"><u>Althea Whitepaper 2.0</u></a> provides further details on gateways and the network structure.</p><h3 id="bootstrapping-trust">Bootstrapping Trust</h3><p>Bandwidth <a href="https://blog.althea.net/going-the-distance/"><u>flows like water</u></a> in an Althea network. It automatically traverses the path of lowest cost and highest quality, shifting constantly to find the sweet spot for the user, balancing cost, throughput and latency.. Your home internet traffic could take any route, even several different routes, through the network throughout the day.</p><p>Privacy is of course an essential consideration for any network, as no one should rely on a network that allows others to snoop on their internet activity. All traffic on an Althea network, from source to exit node, is encrypted using <a href="https://www.wireguard.com/?ref=blog.althea.net"><u>Wireguard</u></a> and all Althea routers come pre-programmed with the public encryption key of an exit node to avoid <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack?ref=blog.althea.net"><u>man-in-the-middle</u></a> attacks.</p><p>While this approach to routing and security is excellent from a technical perspective, it has an unintended effect on network operator behavior, who are more inclined to use exit nodes that are already programmed into the firmware.</p><p>Although it is fairly straightforward to add a new or additional exit node to a router—and takes less than a minute to do—in practice no operator to date has elected to do this at scale. Anything beyond the absolute minimum amount of configuration per user is a burden best avoided. For this reason, operators routinely request that their exit node details are added to the default build of the firmware.</p><p>This isn’t ideal, both because building a new version of the firmware takes time, but also because it simply doesn’t scale operationally. An ever longer list of exits to select just increases the chance of error during setup.</p><h3 id="far-far-away">Far, Far Away</h3><p>While deploying an exit server with <a href="https://github.com/althea-net/rita-installer?ref=blog.althea.net"><u>simple automation</u></a> is not particularly complex, in practice we find that network operators tend to put more focus on network management and less on server infrastructure, often relying on others to set up and maintain an exit at a strategically convenient location.This approach works well in well connected areas, but we have found that setting up an exit in more remote regions of Africa or South America can be a bit more challenging.</p><p>If a network relies on exits that are too far away or hosted in cloud data centers, network performance can be significantly impacted. Optimizing exit placement becomes crucial, and tolerating a sub-optimally configured network is simply not viable.</p><p>Until now a pre-configured exit was typically shipped, or a system administrator would remotely configure one for a given deployment, but these are added steps that hinder the speed and ease of network deployment.</p><p>Compare this with the steps involved to setup a typical Althea router:</p><p>1) Add firmware (using the browser-based UI)</p><p>2) Explore Internet</p><p>The challenge therefore is to enable simple and optimized deployment to any new network, regardless of geography.</p><h3 id="appliance-exits-bootstrapped-by-althea-l1">Appliance Exits, Bootstrapped by Althea L1</h3><p>This brings us to our solution: appliance exits. With appliance exits, we areredefining what it means to run an Althea network. This innovation introduces a new type of Althea firmware—exit firmware—which transforms any compatible router, not just server hardware, into a fully functional exit.</p><p>For operators, this means seamless integration of the exit and gateway roles, allowing them to directly route and exit customer traffic without additional infrastructure.</p><p>This simplifies setup and operation, reduces hardware costs, and presents more options for customers, whose routers are free to roam to any other exit over the internet.</p><p>Gone are the days of shipping specialized servers for each deployment. Now, any off-the-shelf $30 WiFi router can be flashed as an exit in minutes.</p><p>Exit Database Smart Contract</p><p>In the traditional server-based exit model, each exit required a backend database (PostgreSQL) and an authentication method to verify users, such as an SMS API key or an email account.</p><p>For most users, this authentication step was the only time they even noticed they were connecting to an exit. Often, this was handled during installation, making it an invisible part of the Althea experience.</p><p>Because Althea clients can seamlessly roam between exits using a shared customer database, operators naturally gravitated toward a single, unified database. This ensured users could always switch to the best available exit without re-registering or any other additional steps.</p><p>To simplify this process, we designed a solution eliminating the need for individual exit registration. Instead of signing up for just one exit, users now instantly register for all possible exits.</p><p>Appliance exits leverage an <a href="https://github.com/althea-net/rita/blob/master/solidity/contracts/AltheaDB.sol?ref=blog.althea.net"><u>exit database smart contract</u></a> on Althea L1, serving as a decentralized user database. Clients register directly to the smart contract on the Althea L1 EVM, which allows any exit to serve any user simply by referring to the smart contract data. The exits themselves also register to the same smart contract, enabling clients to retrieve a list of available exits and seamlessly connect to the best one available.</p><p>This approach removes <em>nearly all manual configuration from exit operations</em>. Exit Appliance images can now simply start up and go—no extra setup required.</p><h3 id="solving-bootstrapping">Solving Bootstrapping</h3><p>Even with the exit database smart contract, bootstrapping is not entirely solved. Sure, once a client is online, they can simply query the smart contract and get a list of exits to trust, but they need to query this list before they can get online.To resolve this Catch-22, we mirrored the concept of https <a href="https://knowledge.digicert.com/solution/how-certificate-chains-work?ref=blog.althea.net"><u>certificate chains</u></a> and created root trust servers for Althea exits.&nbsp;</p><p>Instead of being built with the exit public key, Althea router firmware is now built with a number of root keys. The root trust servers simply grab the latest copy of the exit database smart contract data off of the Althea L1 EVM, sign it, and pass this data onto an exit. The exits hold these signed copies of the exit server list from the exit database and provide them to Althea routers as they come online. From there, the router can verify the signature, get online, and query updated data for themselves.</p><h3 id="cgnat-and-snat">CGNAT and SNAT</h3><p>In addition to the new appliance design, we’ve bundled significant feature improvements into this release. This includes support for <a href="https://en.wikipedia.org/wiki/Carrier-grade_NAT?ref=blog.althea.net"><u>CGNAT</u></a> and SNAT IP assignment modes.For a quick introduction to why this matters, start with <a href="https://en.wikipedia.org/wiki/IPv4_address_exhaustion?ref=blog.althea.net"><u>Why 32 Bits Wasn’t Enough</u></a>, and the concept of <a href="https://en.wikipedia.org/wiki/Network_address_translation?ref=blog.althea.net"><u>NAT (Network Address Translation)</u></a>.Exits can now use multiple external IPv4 addresses in tandem and assign users their exclusive static IPv4 address out of the pool while doing it. Even better, this can all be configured from the router dashboard like any other feature.This is a huge jump for exit operators in terms of ease of use. Before the appliance exits, there was no GUI of any kind and a new exit would need to be added for every 400 or so Althea users that were connected to it.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/e5e0fdcf54639a640b8e.png" class="kg-image" alt="" loading="lazy" width="2048" height="1495" decoding="async"></figure><p>With this new feature improvement, there is no longer any practical limitation to the number of users connected to a single exit in terms of software, as long as sufficient IPv4 space is available.</p><p>Native IPv6 has been supported since Beta 20 and will also be possible to configure from the UI.</p><h3 id="conclusion">Conclusion</h3><p>Althea has always been about helping people build systems that work for them. We are excited to apply five years of operational experience to design refinement, optimization and simplification: making it faster and easier for our network operators to building new networks, deploy new infrastructure, in new and more challenging places with more customers than ever before!</p><p>Coming up next week is a deep dive on <strong>*Liquid Infrastructure*</strong> and exactly how the account abstraction on Althea L1 is designed.<br></p>]]></content:encoded></item>
<item><title>Universal Permit TX Support on Althea L1</title><link>https://blog.althea.net/universal-permit-tx-support-on-althea-l1/</link><guid isPermaLink="true">https://blog.althea.net/universal-permit-tx-support-on-althea-l1/</guid><pubDate>Tue, 25 Feb 2025 20:35:58 GMT</pubDate><description>One of the core design goals of Althea L1 is to support machine-to-machine payments, in stablecoins, with high reliability and low operational difficulty. Every component of the chain has been evaluated with this goal in mind, including the iFi DEX and the EVM entry and exit points.

A key challenge in this design is preventing both users and automated systems from being stranded without ALTHEA tokens to pay gas. No one wants a smart electric car charger that requires &quot;dust&quot; (tiny amounts of gas</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>One of the core design goals of <a href="https://blog.althea.net/althea-l1-a-focused-chain/"><u>Althea L1</u></a> is to support machine-to-machine payments, in stablecoins, with high reliability and low operational difficulty. Every component of the chain has been evaluated with this goal in mind, including the iFi DEX and the EVM entry and exit points.</p><p>A key challenge in this design is preventing both users and automated systems from being stranded without ALTHEA tokens to pay gas. No one wants a smart electric car charger that requires "dust" (tiny amounts of gas tokens) before it can function.</p><p>The <a href="https://blog.althea.net/content/files/2024/06/Althea-Whitepaper-v2.0.pdf"><u>Althea L1 Whitepaper</u></a> covers why paying gas in ALTHEA is essential to operate a sustainable operating environment in a programmable blockchain.Given these requirements we set out to ensure that every component in the Althea L1 ecosystem supported delegated gas (permit) transactions. Where a user or machine can create and sign a transaction that pays a tip, using the tokens they have, to a relayer who pays the actual fee in ALTHEA when submitting the transaction.</p><p>This post will cover the various components and strategies we have implemented to enable users to pay transaction fees with stablecoins, or a token of their choice at every step of their on-chain journey.</p><h1 id="bridge-in-bridge-out">Bridge In, Bridge Out</h1><p>As discussed in the original <a href="https://blog.althea.net/althea-l1-a-focused-chain/"><u>Althea L1 design blog</u></a>, the chain features two execution environments that coexist within a single blockchain. When a bridge transfer arrives on Althea L1—whether from Ethereum via Gravity Bridge or from any IBC-compatible chain—tokens from that transaction can be used in either the MicroTX environment or within the EVM.</p><p>The MicroTX module on Althea L1 directly accepts governance-approved stablecoins as fees. This allows automated machine-to-machine payments to begin immediately upon bridging, with no need for token swaps or additional actions.</p><p>All other transactions do require ALTHEA for fees. These are handled through either EIP712 permit transactions or Cosmos SDK transaction tips. Both of these are methods where a user can sign a tx paying fees in a token of their choice and have a relayer submit the actual transaction.</p><p>This is where EIP-712 is applicable. Both the iFi DEX and the native ERC-20 implementations for bridged tokens support delegated transaction fees, allowing users to pay for swaps using the assets they’ve bridged in—without needing to acquire ALTHEA first.</p><p>If a user only needs to perform a single swap and then exit the EVM, they can swap and return to the MicroTx layer without directly paying gas fees. Once out of the EVM, users can bridge out of the chain using a Cosmos SDK transaction tip funded IBC send.The iFi DEX is just the first DeFi application on Althea L1. Moving forward, we strongly encourage all iFi ecosystem applications to implement the EIP-712 standard and integrate with Althea L1’s relaying infrastructure.</p><h1 id="canonical-relaying-infrastructure">Canonical Relaying Infrastructure</h1><p>Without an active marketplace of transaction relayers, EIP-712 or Cosmos tip transactions wouldn’t be that practical.In the past the relaying infrastructure like this has been exclusively the domain of the app operator. With each app operator making their own infrastructure and backend to execute the transactions. For Althea L1 this is insufficient.&nbsp;</p><p>Althea L1 users can submit their transaction to any one of several “indexing” endpoints. These endpoints do not perform the relaying themselves. Instead, they validate transactions and serve the set of submitted transactions for any relayer to request and relay.</p><p>By creating this separation between the relayer and the indexer, and providing them as infrastructure rather than a bespoke part of an application, relayers can easily enter and exit a market that represents the combined relaying needs of all applications on Althea L1 with no significant barrier to entry beyond setting up the reference relayer implementation.</p><p>Indexers, on the other hand, offer a low-cost public service by simplifying the user experience. Instead of requiring users to hunt for active relayers, they can submit their transaction to one or two indexers and be assured that it will reach every available relayer.</p><h1 id="on-chain-indexer-list">On-Chain Indexer List</h1><p>Althea L1 governance can provide a canonical list of active indexers through a simple smart contract. This allows DeFi applications on Althea L1 to fetch the latest indexer list dynamically, rather than hardcoding a list of indexers that may change over time.</p><p>This ensures long-term reliability and makes it easier for new relayers to integrate seamlessly into the network.</p><h1 id="conclusion">Conclusion</h1><p>Building sustainable blockchain infrastructure requires long-term vision. Instead of rushing to launch quick fixes like a token faucet, Althea L1 is creating an ecosystem where permit transactions are seamlessly integrated at every level and the flow of these transactions is open to a relayer community.</p><p>A true machine economy demands automation, reliability, and seamless execution. Each point of friction that requires human intervention diminishes the value of decentralized innovation.</p><p>By designing long-term solutions for fee payments, relaying, and governance, Althea L1 ensures that developers can build high-reliability applications—without being blocked by bootstrapping limitations.</p>]]></content:encoded></item>
<item><title>Expanding iFi DEX: Open Rewards on Althea L1</title><link>https://blog.althea.net/expanding-ifi-dex-open-rewards-on-althea-l1/</link><guid isPermaLink="true">https://blog.althea.net/expanding-ifi-dex-open-rewards-on-althea-l1/</guid><pubDate>Wed, 19 Feb 2025 20:05:32 GMT</pubDate><description>While the iFi DEX was initially forked from Ambient, we have made two major advancements. The first is integrating events for an ultra-fast backend and long-term operational stability. The second is introducing a first-of-its-kind open rewards system.


What Do You Mean by “Open Rewards”?

Many DEXes incorporate rewards mechanisms to incentivize liquidity providers and bootstrap liquidity. What makes the iFi DEX rewards system unique is its open interface for third-party reward contracts.

Inste</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>While the iFi DEX was initially forked from Ambient, we have made two major advancements. The first is <a href="https://blog.althea.net/introducing-the-ifi-dex/" rel="noreferrer">integrating events for an ultra-fast backend and long-term operational stability</a>. The second is introducing a first-of-its-kind <em>open rewards system</em>.</p><h1 id="what-do-you-mean-by-%E2%80%9Copen-rewards%E2%80%9D">What Do You Mean by “Open Rewards”?</h1><p>Many DEXes incorporate rewards mechanisms to incentivize liquidity providers and bootstrap liquidity. What makes the iFi DEX rewards system unique is its open interface for third-party reward contracts.</p><p>Instead of defining a series of incentive parameters and building them into the main contract, the iFi DEX tracks metrics, such as liquidity provided and fees collected, and exposes them to any third-party contract that wishes to use them.The typical drawback of read-only interfaces is that rewards contracts must be triggered at precise moments in order to capture reward data. However, we have developed innovative ways to mitigate this limitation, while maintaining the flexibility of an external rewards system.</p><h1 id="delegated-liquidity-position-ownership">Delegated Liquidity Position Ownership</h1><p>Ambient DEX supports using various account abstractions and external routers. This makes it possible to layer this functionality with the iFi rewards system—delivering an experience that is as simple to operate as a native rewards system, yet infinitely more flexible.From a user’s perspective, they simply create their liquidity position through the rewards contract, and call their rewards claiming function there. This flow allows the rewards contract to trigger data storage and snapshotting as needed, throughout the entire lifetime of the liquidity position.</p><h1 id="dealing-with-in-range-and-out-of-range-positions">Dealing With In-Range and Out-of-Range Positions</h1><p>Due to Ambient’s highly efficient architecture, it is impractical to track which concentrated liquidity positions are in range at all times. Instead, we use concentrated liquidity fee collection—an already optimized process—as a proxy to determine if a position is in range.</p><p>Though it adds significant complexity to the rewards contract implementation, by exposing both the amount of concentrated liquidity and fees collected (on a per account basis), API callers can determine if a position was in-range and reward them appropriately.</p><p>This approach keeps the gas cost of these incentive extensions low—an approximate 9% increase in swap gas and 16% increase on LP position operations.</p><h1 id="rewards-contracts">Rewards Contracts</h1><p>As part of these changes to the iFi DEX we have two simple rewards contract implementations, one that focuses on incentivizing ambient liquidity in a pool and one that focuses on concentrated liquidity. Neither of these take into account fee collection. They provide simple incentives for liquidity which has been locked for a duration.</p><p>The implementation of both is straightforward. The contract owner creates and funds a rewards program which enables liquidity providers to register all their concentrated or ambient liquidity at once, then rewards accumulate for each registered liquidity provider until they are claimed. Liquidity providers must claim their rewards before changing their&nbsp; positions, so that the rewards contract can be sure that no updates have been made to the liquidity provided and therefore can calculate rewards on the most recent liquidity amount.</p><p>In short, the flow is: Create LP -&gt; register for rewards -&gt; wait some time -&gt; claim rewards -&gt; modify LP if needed -&gt; repeatThe concentrated liquidity rewards contract is only appropriate for stableswap pools, because it does not take into account fees or in-range positions. The ambient rewards can be applied to any type of pool.</p><p>The best thing about this split approach to rewards contracts is that rewards system upgrades are performed independently, without the need to upgrade to the main DEX contract. In fact, they do not require an upgrade to any contracts. The old rewards contracts are simply phased out and new ones are deployed. This design not only allows for faster iteration and greater flexibility, but also the power to run multiple distinct rewards programs, in parallel, on the same pool, to provide incentives for different types of behavior.</p><p>These reference contracts will be integrated with Althea L1 governance as part of the first-generation iFi DEX rewards program (after the proposal to operate a rewards program passes).</p><p>You can find these simple contracts <a href="https://github.com/AltheaFoundation/althea-dex?ref=blog.althea.net"><u>here</u></a>.&nbsp;</p><h1 id="conclusion">Conclusion</h1><p>We’re nearing the final installment of our iFi DEX blog series. Next week, we’ll dive into our last topic: EIP-712 transaction support!</p>]]></content:encoded></item>
<item><title>Governance Integration for iFi DEX</title><link>https://blog.althea.net/governance-integration-for-ifi-dex/</link><guid isPermaLink="true">https://blog.althea.net/governance-integration-for-ifi-dex/</guid><pubDate>Wed, 12 Feb 2025 21:06:29 GMT</pubDate><description>The iFi DEX offers an unprecedented level of configurability—including features like modifying the fee tiers of an active pool, a capability not possible in a Uniswap v3-based DEX.



Beyond configurability, the iFi DEX is also upgradeable, allowing for functionality expansions and bug fixes. Typically, such admin functions are managed by multisigs controlled by a handful of voters.



For the iFi DEX, we’ve taken a different approach. We’ve built a native governance bridge that makes all admin </description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p><a href="https://blog.althea.net/introducing-the-ifi-dex/" rel="noreferrer">The iFi DEX</a> offers an unprecedented level of configurability—including features like modifying the fee tiers of an active pool, a capability not possible in a Uniswap v3-based DEX.</p><p></p><p>Beyond configurability, the iFi DEX is also upgradeable, allowing for functionality expansions and bug fixes. Typically, such admin functions are managed by multisigs controlled by a handful of voters.</p><p></p><p>For the iFi DEX, we’ve taken a different approach. We’ve built a native governance bridge that makes all admin functions fully accessible through on-chain governance.</p><h1 id="how-does-althea-l1-governance-work">How Does Althea L1 Governance Work?</h1><p>Althea L1 uses the <a href="https://blog.cosmos.network/a-beginners-guide-to-cosmos-governance-26c5d767633a?ref=blog.althea.net"><u>Cosmos-SDK governance framework</u></a>, which integrates governance with delegated proof-of-stake (DPOS) voting and staking. In other words, anyone who has staked/delegated tokens to a validator can vote on governance proposals, including proposals that are critical to DEX maintenance, management and growth.</p><p></p><p>This means that multitudes of stakers can now actively participate in iFi DEX governance decisions! This is a great improvement, but also one that presents a new problem: Enabling stakeholders to truly understand the proposals they are voting on.</p><h1 id="easily-readable-custom-proposal-types-for-ifi-dex-governance"><em>Easily Readable</em> Custom Proposal Types for iFi DEX Governance</h1><p>The ability to see what bytecode a proposal passes to the iFi DEX does not make it inherently transparent, for not all users will be able to correctly interpret what they are looking at. To that end, we have integrated easily readable proposal types for the most important DEX functions.</p><p></p><p>High risk proposals, such as pausing DEX operation and adding or removing addresses that can change specific parameters, now have their own easily readable proposal types. Initially less critical functions, like simple pool fee changes, will still use standard proposal types, but can be upgraded to easily readable proposal functions in the future.</p><p>When a proposal passes on-chain natively, it calls the iFi DEX and applies the changes directly and automatically. There is no second step, or trusted party, required to carry out the voted upon changes.</p><h1 id="what-are-these-configuration-options-anyway">What Are These Configuration Options, Anyway?</h1><p>The iFi DEX is a fork of <a href="https://docs.ambient.finance/?ref=blog.althea.net"><u>Ambient DEX</u></a>, with several modifications. One of Ambient’s best properties is its stupendous configurability. For example, unlike Uniswap, it is possible to change many properties of pools after creation and overlay Uniswap v2 and v3 style liquidity positions in a single pool. This means that governance can fine-tune fee tiers or tick sizes in active pools, eliminating the painful need to create new pools and migrate liquidity between them to accommodate changing needs over the lifetime of a pool.</p><h1 id="conclusion">Conclusion</h1><p>Decentralized governance is essential to making a DEX “canonical.” Since the iFi DEX is part of the chain itself, it needs to be held to the same governance structure and standards as Althea L1.</p><p></p><p>In addition to this alignment of standards and principles, distributed governance enables more advanced configurability options, which can be used with confidence by all stakers, eliminating reliance on a small, centralized group of decision makers.</p>]]></content:encoded></item>
<item><title>Introducing the iFi DEX</title><link>https://blog.althea.net/introducing-the-ifi-dex/</link><guid isPermaLink="true">https://blog.althea.net/introducing-the-ifi-dex/</guid><pubDate>Thu, 06 Feb 2025 18:53:33 GMT</pubDate><description>If you have already read the previous blog posts on Althea L1’s design and scalability, you’ve likely noticed a recurring theme: Althea L1 is built for practical, robust problem-solving, with a focus on meeting real-world customer needs today.

Althea L1 is focused on Infrastructure Finance (iFi), a new category of blockchain applications that combines concepts from DeFi (Decentralized Finance), Physical Infrastructure, and RWA (on-chain Real World Assets).

Like most innovations, iFi builds on </description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>If you have already read the previous blog posts on <a href="https://blog.althea.net/althea-l1-a-focused-chain/"><u>Althea L1’s design</u></a> and <a href="https://blog.althea.net/throughput-scaling-on-althea-l1/"><u>scalability</u></a>, you’ve likely noticed a recurring theme: Althea L1 is built for practical, robust problem-solving, with a focus on meeting real-world customer needs today.</p><p>Althea L1 is focused on <a href="https://medium.com/althea-mesh/introducing-ifi-infrastructure-finance-4e23056ca114?ref=blog.althea.net"><u>Infrastructure Finance (iFi)</u></a>, a new category of blockchain applications that combines concepts from DeFi (Decentralized Finance), Physical Infrastructure, and RWA (on-chain Real World Assets).</p><p>Like most innovations, iFi builds on what came before it. One key foundational piece is a decentralized exchange (DEX)—essential for Althea L1 users to buy gas for EVM interactions, swap stablecoins for iFi transactions, and participate in DeFi built around iFi.</p><p>To power this, <a href="https://us.ambient.finance/?ref=blog.althea.net"><u>Ambient Finance</u></a> was selected as a base due to its combination of concentrated liquidity, incredible feature density, and copyleft licensing. But we didn’t just stop there—we made major improvements to ensure the DEX fully aligns with Althea L1’s standards for reliability, decentralization, and performance.</p><p>This series of blog posts will introduce the <a href="https://github.com/AltheaFoundation/althea-dex?ref=blog.althea.net"><u>iFi DEX</u></a>. Althea L1’s canonical DEX. We’ve made significant changes to the Ambient base, focused on providing an experience that compliments iFi and meets the Althea ecosystem standard for reliability and decentralization.</p><h1 id="supercharging-the-dex-backend">Supercharging the DEX Backend</h1><p>This first blog post in the series focuses on the Ambient <a href="https://github.com/CrocSwap/graphcache-go?ref=blog.althea.net"><u>graphcache-go</u></a> backend and our work to create a drop-in replacement that syncs 1000x faster and uses 1000x less disk space. Every DEX interaction—whether querying a pool, performing a swap, or adding/removing liquidity—relies on the backend for data. Ambient Finance’s strength lies in its feature density and efficiency, but that also adds backend complexity. We tackled this challenge head-on, ensuring the iFi DEX backend is not only ultra-fast and scalable but also operationally seamless for users and developers alike.</p><h1 id="phenomenal-cosmic-power-itty-bitty-living-space"><a href="https://www.youtube.com/watch?v=SfTfXLLJlzM&amp;ref=blog.althea.net"><u>Phenomenal Cosmic Power</u></a>, Itty-Bitty Living Space</h1><p>Ambient is a single-contract DEX, meaning all the pools and functionality exist as a single contract. Unlike decentralized exchanges such as Uniswap v2 where each pool is its own contract, Ambient pools exist as structured data in one giant contract. As deployed, the main Ambient contract is 23.824KB in size, just shy of the Solidity contract size limit of 24KB. This size does not include ‘sidecar’ contracts used to move code out of the main contract. Events are costly in terms of contract size. While the number of lines it may take to describe events is small, adding enough events to describe the full state of swaps and LP actions on the DEX would add roughly 1KB of storage to the main contract. Furthermore, this 1KB cannot be moved to sidecar contracts without resulting in a confusing experience where event consumers have to track events across multiple contracts.</p><p>Because of this, the canonical Ambient backend does not use events at all. Instead, it leverages an incredible level of EVM introspection provided by a <a href="https://thegraph.com/?ref=blog.althea.net"><u>Graph Protocol</u></a> subgraph and a custom caching layer called <a href="https://github.com/CrocSwap/graphcache-go?ref=blog.althea.net"><u>graphcache-go</u></a>. The subgraph doesn’t read the status of the DEX, it infers behavior directly from transaction stack traces and generates pseudo-events through a method much like forensic analysis of closed-source contracts. From this introspection, the graphcache-go backend can quickly and simply index the DEX history, simulate transactions to query live state, and generate up-to-date trading information. Additionally, graphcache-go stores historical information and serves most of its data as of a previous block upon request.This level of introspection comes at a steep operational cost, where graphcache-go and its subgraph:&nbsp;</p><ul><li>Require an Archive Node for detailed transaction inspection</li><li>Can only sync blocks serially in order, limiting parallel processing</li><li>Must be fully resynced from scratch to compute new data</li></ul><p>None of these are bad design decisions; they are the inevitable result of not having events. At first, this might not seem problematic. However, things go sideways when dealing with older instances of Ambient. By the time a DEX is just 2-3 years old, it can take more than a month to sync a new graphcache-go instance from scratch.This places enormous centralizing pressure on operating an Ambient frontend. Fast iteration is difficult, and operators must invest in significant hardware or hosting costs just to get started. As the DEX ages, these barriers will only grow.</p><h1 id="change-your-perspective-change-the-problem">Change Your Perspective, Change the Problem</h1><p>Imagine a day five years after an Ambient instance launches. A major sporting event is driving high iFi transaction volumes. One by one, overloaded graphcache-go instances fail. Even with state snapshots, new instances require over an hour just to copy the data and start syncing. User experience and iFi applications suffer.<br></p><p>This is not the future we want to build. A key design goal for iFi DEX is to ensure the frontend and backend are deployable with full automation on a low-cost VM (under $15/month) in under 15 minutes.</p><p>Part of the reason we chose Ambient as our base is that its primary limitation—contract size— is something we could adjust within the Althea L1 EVM. However, to our surprise, that adjustment wasn’t necessary.</p><p>In the time since Ambient’s initial deployment, Solidity has advanced from v0.8.19 to v0.8.28. Simply upgrading to the latest compiler shrinks the main contract from 23.824KB → 23.376KB.</p><p>The real breakthrough came with Solidity’s new via-IR compiler optimization, which translates Solidity code into an intermediate representation (IR) before converting it into EVM bytecode.</p><p>Enabling via-IR freed an additional 2.236KB of contract space. The result? The same functionality, the same operations—now using just 21.558KB instead of 23.824KB.</p><p>This unexpectedly large reduction in contract size gave us more than enough room to add events and additional features without sacrificing performance.</p><h1 id="ultra-fast-event-based-backend">Ultra-Fast, Event-Based Backend</h1><p>With this newly available space, we added essential events to the iFi DEX codebase and built a pure Rust backend that mirrors the graphcache-go API. This creates a seamless drop-in replacement, ensuring compatibility with existing Ambient DEX tooling and frontends.</p><p>The iFi DEX backend is a monolithic, statically linked Rust application with an embedded RocksDB database. This means no local dependencies, and the same binary can be deployed across any Linux distribution—or even on Mac and Windows.</p><p>Even with basic event syncing, processing 10,000 blocks per second is trivial. With highly parallelized logic, the only constraints become network bandwidth and disk write speed.</p><p>Unlike graphcache-go, iFi DEX can sync using any full node, making high-throughput infrastructure far easier to build.</p><p>From a storage perspective, only the data necessary to serve queries is retained, leading to disk usage that is approximately 1000x lower than a graphcache-go subgraph.</p><p>Operationally, a full sync that previously took 10 days or more now completes in just 10 minutes—on dramatically lower-cost hardware.</p><h1 id="conclusion">Conclusion</h1><p>The next generation of DEX software is about abstraction— allowing users to swap seamlessly as part of larger applications, whether cross-chain or within iFi on Althea L1.</p><p>Achieving this requires better tooling and reliability. Open access, combined with ease of deployment, fosters greater decentralization and better user outcomes. We’re excited that iFi DEX is pushing the boundaries here.</p><p>When we set out to replace the original Ambient backend for iFi DEX, we didn’t expect to find a practical solution for Ethereum mainnet. But we now anticipate Ambient deployments transitioning to event-based backends and contracts using the strategy we have pioneered here.</p><p>Next week, we’ll be diving into iFi DEX’s governance integration!</p>]]></content:encoded></item>
<item><title>Throughput Scaling on Althea L1</title><link>https://blog.althea.net/throughput-scaling-on-althea-l1/</link><guid isPermaLink="true">https://blog.althea.net/throughput-scaling-on-althea-l1/</guid><pubDate>Tue, 24 Dec 2024 05:17:11 GMT</pubDate><description>In my last blog I talked about Althea L1 and the Althea Protocol . In this post we will discuss transaction throughput, focusing on Althea L1&apos;s real capacity requirements needed to facilitate iFi (Infrastructure Finance) at scale.

This topic is covered more concisely in the Althea whitepaper, but I wanted to take the opportunity to talk about the Althea L1 scaling philosophy and detail how it provides similar scaling performance as ZKP (zero knowledge proof) rollup based solutions while also be</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>I<em>n my last blog I talked about </em><a href="https://blog.althea.net/althea-l1-a-focused-chain/" rel="noreferrer"><em>Althea L1 and the Althea Protocol</em></a><em> . In this post we will discuss transaction throughput, focusing on Althea L1's real capacity requirements needed to facilitate iFi (Infrastructure Finance) at scale.</em></p><p><em>This topic is covered more concisely in the </em><a href="https://github.com/althea-net/althea-whitepaper/blob/master/Althea-Whitepaper-v2.0.pdf?ref=blog.althea.net"><em><u>Althea whitepaper</u></em></a><em>, but I wanted to take the opportunity to talk about the Althea L1 scaling philosophy and detail how it provides similar scaling performance as ZKP (zero knowledge proof) rollup based solutions while also being better suited to the iFi use case.</em></p><h3 id="the-zkp-tradeoff-space">The ZKP tradeoff space</h3><p></p><p>First, some ZKP context. For programmable transactions such as DeFi, ZKP (zero knowledge proof) technology provides an attractive scaling option, because programmable transactions can be difficult to execute and require significant permanent storage. A ZK proof of the same transaction has a fixed size and a fixed cost to verify which is significantly smaller than the average transaction, much less the largest transactions.</p><p>The downside is that computing the ZK proofs takes time, and the storage requirement is not so much reduced as it is moved around. Someone still has to store the original transaction information to understand what the ZKP validates.</p><p>I think this is a really undertold point around ZKP scalability. State growth, not immediate throughput, is the real problem that ZKP ‘solves’.</p><p>For Ethereum, every validator currently stores every transaction. Ethereum could easily operate with dramatically larger blocks with moderate impact to centralization, but over time the storage size increase would become fatal. As long as the state growth of a blockchain occurs at the same rate digital storage costs decrease, the cost of operating the chain stays the same. Once a blockchain has state growth that occurs faster than technological advancement in storage, the cost to operate will eventually become insurmountable.</p><p>Using a ZKP rollup strategy it is easy to ensure that the state growth of the L1 is very low. So low, in fact, that operating the chain would become cheaper and cheaper over time. Even better, since ‘rollups’ roll many transactions into a single ZKP state, growth on the roll-up chain is completely decoupled from the number and complexity of transactions.&nbsp;</p><p>But now we come back to the inconvenient details: in this new ZKP paradigm the storage has to go somewhere. Transactions are no longer being stored by every validator, they now only store proofs. Now the user, or more likely some data availability layer, must store actual transaction data. Otherwise, the ZKP stored on the chain can be verified, but don’t provide any info about what has actually happened to your wallet in the past, or even your present value of tokens. <em>The “Zero Knowledge" part of ZKP cuts both ways. </em>Before ZKP, data could never be lost from an operational blockchain. So long as a new block could be produced, all data would be retained. But with ZKP rollips, the responsibility of retaining historical data has moved from everyone to a few parties, potentially even no one at all. Without a hard requirement to maintain historical data, chain history can be entirely lost over time.</p><p>This is where data availability layers come in as an answer to ?. These are conceptually similar to a Filecoin, except with the ZKP rollup chain itself as a sovereign customer. Node operators are then paid to store some subset of the chain state with some number of copies for redundancy.</p><p>A chain may choose to pay for only a year of state storage, leaving clients to pay for storing their own data themselves if they want more. Alternatively, the chain could trade indefinite storage availability for a better user experience at the cost of higher fees.From the perspective of a DeFi user, a ZKP rollup is not particularly lower cost, faster, or otherwise better to use. But from the perspective of the roll-up chain itself capacity is hugely increased.An apt comparison here may be with road expansion. Drivers are always convinced that one extra lane will reduce their commute times. But in reality the average commute time remains constant and the extra lane is consumed to support more people making the same commute in the same amount of time. The benefit of ZKP is ultimately not really user facing in the scaling sense. ZKP for privacy is a separate discussion.</p><h3 id="the-althea-l1-scaling-design">The Althea L1 scaling design</h3><h4 id="cometbft-provides-instant-finality-and-decouples-state-growth-from-validation">CometBFT provides instant finality and decouples state growth from validation</h4><p></p><p>The major theme in Althea L1’s design is the tension between programmable transactions and simple transfers for real world goods like bandwidth in the case of the Althea Protocol.</p><p>As discussed in the previous blog (link again here) DeFi transactions are much less sensitive to finality latency. If a DEX swap doesn’t finalize you don’t lose the input tokens for the trade. If a customer’s payment for a candy bar fails to finalize, they have already left with the product..</p><p>This makes the computational latency of a ZKP rollup much less attractive for Althea L1. iFi programs, specifically micro-transaction generating applications like the Althea Protocol, are limited by the latency of finality.No one wants to wait around several minutes for a prover to finish generating a proof of their candy bar purchase. Solutions to mitigate this latency in ZK would&nbsp; involve a prover effectively promising to include your transaction in the next rollup proof.These promises do meet the speed and finality requirements for transfers of goods, but not the decentralized trust requirements. In order to generate a decentralized, guaranteed promise of inclusion at low latency you would effectively need a smaller blockchain just for returning inclusion promises.</p><p>In this case, Althea L1 replicates the most critical component of ZKP rollups for scalability, without sacrificing time to finality or trust. It does so through controlling state growth by allowing the chain to operate without the entire history.</p><p>Althea L1 uses <a href="https://cometbft.com/?ref=blog.althea.net"><u>CometBFT</u></a>, a DPoS (Delegated Proof of Stake) consensus engine. A key concept of CometBFT is that in order for the chain to move forward, ⅔ of validator voting power must sign the next block. This means every block is instantly final, but comes with the consequence that it is relatively easy to halt a CometBFT-based chain. Compare this with alternatives likeETH2 consensus where the <a href="https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/?ref=blog.althea.net#inactivity-leak"><u>inactivity leak</u></a> concept ensures that the chain automatically forks if finality fails.While the ETH2 solution may seem immediately more attractive, it’s this property of ETH2 consensus that really drives the need for keeping state growth on the main chain low. If it is possible for multiple forks to be valid, a node requires the entire history to determine which one to follow.&nbsp;</p><p>For CometBFT chains, instant finality makes extremely compact proofs of chain state trivial. A proof must simply provide a history of validators entering and exiting the set (an infrequent operation in DPoS chains). Even for chains with a long history this proof is only a few kilobytes. The small size of these proofs is extremely important for bootstrapping light clients quickly and easily, a strong requirement for IoT, machine-to-machine payments, &nbsp; and embedded applications.&nbsp;</p><p>These compact light client proofs allow Althea L1 validators to operate without all historical blocks,opening up Althea L1 to utilize data availability layers in the same way a ZKP rollup chain would and meeting that same critical property where the minimum operational state grows more slowly than storage technology advances.&nbsp;</p><h4 id="resolving-transaction-capacity">Resolving transaction capacity</h4><p></p><p>Now that the problem of storage growth is resolved, short-term throughput comes into focus as the next problem to tackle.While a ZKP rollup chain can process a theoretically infinite amount of transactions while moving around a fixed amount of data between the validators, Althea L1 validators still need to gossip about all constituent transactions.</p><p>We’ll discuss three solutions to this: first, a simple sanity check to evaluate the performance an ideal implementation should be able to achieve; second, load reduction strategies using payment channels; and finally, an exploration of Interchain Security, which is essentially Ethereum sharding made significantly easier by CometBFT’s instant finality and native IBC bridging.</p><h5 id="theoretical-capacity-of-an-ideal-implementation">Theoretical capacity of an ideal implementation</h5><p></p><p>The minimum encoded size of an Althea L1 MicroTx is 137 bytes: 40 bytes for the addresses, 33 bytes for the signer's public key, and 64 bytes for signatures.</p><p>Assuming the limiting factor is bandwidth capacity between validators, and all validators have a&nbsp; 10Gbps connection, this gives a theoretical capacity of about 10 million MicroTx transactions per second. This estimate assumes that validators generate and agree on a 6.25GB block every 5 seconds.The current block creation and tx gossip code in CometBFT is nowhere near this efficient, but improvements over time will bring it closer to ideal theoretical capacity.&nbsp;</p><p>It’s entirely possible that cheaply available server bandwidth will grow faster than the rate of block size increase. In the whitepaper we roughly estimate that 3 million TPS would be sufficient to cover all home internet users in the United States fully saturating a gigabit connection each.</p><h5 id="load-reduction-via-payment-size-adjustments-and-using-payment-channels">Load reduction via payment size adjustments and using payment channels</h5><p></p><p>Simple two party payment channels enshrined on chain with as a prioritized transaction type provide a viable solution here that not only increases capacity, but also reduces latency.Let’s use an Althea Protocol node as an example. As transaction throughput on the Althea L1 network becomes more congested with micro-transactions, the node can respond by reducing the frequency of its payments.</p><p>To do this, the node extends slightly more trust to the counterparty purchasing bandwidth, in exchange for paying fewer transaction fees. Specifically, it increases the settlement period—shifting from processing payments every few minutes to processing them every few hours.Since Althea L1 validators are incentivied to include MicroTx payments based on a fee percentage (link to whitepaper), rational actors will fill blocks with MicroTx payments in order of decreasing size and a client can simply observe the minimum fee included in the last block.Once this is no longer practical, the node can set up a two-party payment channel where funds are locked into the channel and the last channel signature can be submitted by either party to the chain at any time to pay out the channel balances.Presently, only an EVM<a href="https://github.com/althea-net/guac?ref=blog.althea.net"><u> implementation</u></a> of payment channels is available, though translating this implementation to a native MicroTx module transaction can be done at any time chain capacity seems insufficient.</p><p>Combine these load reduction strategies with high bandwidth requirements for validator nodes and a very efficient gossip implementation and it starts to look eminently possible to serve the entire world's bandwidth needs with a single chain.&nbsp;</p><h5 id="interchain-security">Interchain Security</h5><p>Using <a href="https://duckduckgo.com/?t=ffab&amp;q=interchain+security&amp;ia=web&amp;ref=blog.althea.net"><u>Interchain Security</u></a> the main chain and its validator set effectively become a rollup chain, although one that uses CometBFT light client proofs instead of ZKP.</p><p>The sidechains would regularly post state proofs and cross sidechain transactions to the main Althea L1 chain. To ensure efficiency, blocks on the main chain would be kept extremely small, allowing payments made on the sidechain to finalize on the Althea L1 chain within just a few seconds.</p><p>Clients would be able to verify the inclusion of payments directed to them on any sidechain by maintaining only a light client for the main chain. As previously discussed, both the sidechains and the main chain could still leverage data availability services in this setup. This approach ensures that state growth on each individual sidechain remains highly manageable.</p><p>While the Interchain Security solution has all of the same scaling properties as a ZKP rollup it is significantly less power hungry, lower latency, and doesn’t require specialized hardware such as GPU or ASIC to settle quickly.</p><p></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/aed64aedd66a6743b95e.png" class="kg-image" alt="" loading="lazy" width="683" height="499" decoding="async"><figcaption><i><em class="italic" style="white-space: pre-wrap;">One must imagine the sidechains happy</em></i></figcaption></figure><p>In general, we anticipate scaling optimizations, plus payment channels, will allow Althea L1 to operate at scale without having to add the complexity of an interchain security / sidechain design.</p><h4 id="hey-what-about-the-evm">Hey, what about the EVM?</h4><p>The MicroTx module was designed to be easy to scale, and transactions are a fixed small size. But what about the EVM?</p><p>While Althea L1’s MicroTx history can be safely discarded, the validators must have the entire EVM state in order to correctly compute the results of future EVM transactions.This is true, and part of why DeFi on Althea L1 is relatively expensive. The goal is to maintain EVM state growth at or below the level of storage media improvements and potentially implement a state sunset procedure.Sidechains could be used to design specific shards for EVM and DeFi operations, fees would then be slowly increased over time on each of these EVM shards to push users to a younger shard with lower fees.&nbsp;</p><h3 id="conclusion">Conclusion</h3><p>As someone with years of experience designing and building in the blockchain industry, this topic has been on my mind for quite a while—mainly because of its surprising conclusion. From a technical standpoint, blockchain scaling, at least for the capacity that Althea L1 might ever realistically need, is essentially a solved problem.</p><p>Moreso, it’s a solved problem without even having to reach for the most bleeding edge solutions. We have the luxury of tailoring the Althea L1 scaling design for lower latency and power usage by avoiding ZKP.&nbsp;</p><p>This speaks to how much blockchain technology has improved over the last decade, and it also exemplifies an industry that has built superior technical solutions faster than it has secured wide adoption.</p><p>The Althea Protocol's design focus on implementing practical iFi, exemplifies an inflection point in blockchain technology, driving the utility and power of that technology to users and places where it was not before imagined</p><hr><hr><p><strong>About Althea</strong>: Since 2018, Althea’s technology has brought blockchain-enabled internet access to thousands of homes and even the most challenging topographies. To read more, go to <a href="http://althea.net/?ref=blog.althea.net" rel="noopener">althea.net</a>.&nbsp;</p><p>To get involved, join Althea’s Discord: <a href="https://discord.gg/dT3sxP5gAw?ref=blog.althea.net">https://discord.gg/dT3sxP5gAw</a></p>]]></content:encoded></item>
<item><title>Althea L1, A Focused Chain</title><link>https://blog.althea.net/althea-l1-a-focused-chain/</link><guid isPermaLink="true">https://blog.althea.net/althea-l1-a-focused-chain/</guid><pubDate>Mon, 16 Dec 2024 14:51:54 GMT</pubDate><description>The best technology makes something completely new possible. It represents a radical departure from existing paradigms to create a new way of thinking.

Introducing Althea L1

Althea L1 is a groundbreaking blockchain designed to support Infrastructure Finance (iFi) a new category of blockchain applications that combines concepts from DeFi (Decentralized Finance), DePIN (Decentralized Physical Infrastructure), and RWA (on-chain Real World Assets) to deliver an end-to-end, on-chain application. Th</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>The best technology makes something completely new possible. It represents a radical departure from existing paradigms to create a new way of thinking.</p><p><strong>Introducing Althea L1</strong></p><p>Althea L1 is a groundbreaking blockchain designed to support Infrastructure Finance (iFi) a new category of blockchain applications that combines concepts from DeFi (Decentralized Finance), DePIN (Decentralized Physical Infrastructure), and RWA (on-chain Real World Assets) to deliver an end-to-end, on-chain application. This spans the entire value chain, from customer payments to the capital and financing of building infrastructure.</p><p>In 2017, Hawk Networks developed the Althea Protocol, which commoditizes bandwidth. It enables seamless, autonomous data purchasing by the byte from one or multiple providers with high reliability. The protocol facilitates programmatic and transparent transactions, revolutionizing how telecom is funded, built, and operated.</p><p>The innovative design of the Althea Protocol allows it to operate efficiently between machines in a network and at the scale of the entire internet. It’s not just an alternative form of customer billing but an entirely new approach to payment and settlement between internet service providers.</p><p><strong>Why Althea L1 Requires a New Settlement Layer</strong></p><p>This unique machine-to-machine billing system demands a radically different settlement layer. Comparing blockchain throughput to credit card settlement is a common exercise, as both measure capacity in “transactions per second.” However, the similarities end there. The definition of a transaction and the limitations of its execution differ significantly in the blockchain environment.</p><p>The goal of Althea L1 is to bridge the gap between real-world transactions and programmable DeFi transactions. It enables applications like the Althea Protocol to thrive by using an account abstraction called Liquid Infrastructure, which integrates seamlessly with both domains.</p><p><strong>A Hybrid Approach for Two Distinct Transaction Types</strong></p><p>Serving these two types of transactions on the same platform creates inherent tensions, as each has unique requirements and optimizations. These differences may not be immediately obvious but can prevent scalability if overlooked. By carefully designing an environment tailored to each use case, Althea L1 stands out as a platform capable of hosting both types of transactions effectively.</p><h3 id="defi-transaction-properties"><strong>DeFi Transaction Properties</strong></h3><ul><li>Finality can be slow because internal consistency matters more than absolute certainty of execution.</li><li>Failing transactions do not disrupt general operation.</li><li>Fees can vary widely, with user activity adapting to fee changes.</li><li>Parallelism is in tension with composability: the more parallel a programmable transaction, the fewer applications it can interact with simultaneously.</li></ul><h3 id="real-world-transaction-properties"><strong>Real-World Transaction Properties</strong></h3><ul><li>Finality time is critical; payments must be final within a few seconds.</li><li>Reliability is essential; fast finality must be consistently available.</li><li>Fees must be predictable; user activity cannot adapt but must be facilitated. For example, a payment method failing while buying gas is unacceptable.</li><li>Payments are easy to parallelize without losing functionality. Sequencing is only relevant in a minority of transactions.</li></ul><p><strong>How Althea L1 Balances These Needs</strong></p><p>Althea L1 provides a hybrid environment where payments for real-world goods are processed quickly and efficiently while connecting to a programmable environment that can be dynamically throttled based on payment demand. This allows iFi applications like the Althea Protocol + Liquid Infrastructure to operate reliably for business use while remaining natively linked to DeFi capabilities.</p><p>As revenue from real-world transactions is fed into DeFi primitives like Liquid Infrastructure, layers of composable DeFi can be seamlessly integrated without disrupting customer transactions for bandwidth or other off-chain goods.</p><p><strong>Dynamic Blockspace Allocation</strong></p><p>Althea L1 assigns blockspace differently based on transaction type, creating an incentive structure that prioritizes the reliability of microtransactions used in utilities and telecom while balancing DeFi usage dynamically.</p><p>For example, separating Althea Protocol transactions from other on-chain traffic optimizes throughput and reliability for MicroTx transaction types. If Althea L1 faces high transaction demand, the protocol can raise the minimum size of a MicroTx transaction. This adjustment compels Althea Protocol clients to increase their payment threshold, ensuring the blockchain remains functional and includes Althea Protocol transactions in a timely manner.</p><p><strong>Conclusion</strong></p><p>Althea L1 is a pioneering blockchain that bridges real-world transactions and programmable DeFi, enabling applications like the Althea Protocol to thrive. Its hybrid design prioritizes reliability for microtransactions while supporting scalable DeFi applications, seamlessly integrating on-chain programmability with real-world practicality. By dynamically adapting to transaction demands, Althea L1 sets a new standard for blockchain-enabled infrastructure—purpose-built for utilities and infrastructure—transforming how networks are built and operated.</p><p>For more details about Althea L1, the Althea Protocol, and Liquid Infrastructure, refer to the <a href="https://github.com/althea-net/althea-whitepaper/blob/master/Althea-Whitepaper-v2.0.pdf?ref=blog.althea.net"><u>whitepaper</u></a>.</p><p>This is the first in a series of blog posts about Althea L1 and its features. Stay tuned for more updates here soon.</p><hr><p><strong>About Althea</strong>: Since 2018, Althea’s technology has brought blockchain-enabled internet access to thousands of homes and even the most challenging topographies. To read more, go to <a href="http://althea.net/?ref=blog.althea.net" rel="noopener">althea.net</a>.&nbsp;</p><p>To get involved, join Althea’s Discord: <a href="https://discord.gg/dT3sxP5gAw?ref=blog.althea.net">https://discord.gg/dT3sxP5gAw</a></p><p><br><br></p><p></p>]]></content:encoded></item>
<item><title>Unlocking the Future of Connectivity: How Althea is Transforming Telecom with Globalstar, Global Telecom, and Alliance</title><link>https://blog.althea.net/unlocking-the-future-of-connectivity-how-althea-is-transforming-telecom-with-globalstar-global-telecom-and-alliance/</link><guid isPermaLink="true">https://blog.althea.net/unlocking-the-future-of-connectivity-how-althea-is-transforming-telecom-with-globalstar-global-telecom-and-alliance/</guid><pubDate>Tue, 08 Oct 2024 20:00:18 GMT</pubDate><description>In a move set to transform the telecom industry, Hawk Networks, the lead contributor to the Althea ecosystem and powered by the Althea platform, has partnered with Globalstar, Global Telecom, and Alliance to create a revolutionary connectivity solution. This collaboration leverages Globalstar’s Band 53, Althea’s KeyLTE/5G, and the modular flexibility of the Althea platform to unlock previously inaccessible spectrum resources. The result is a groundbreaking opportunity for organizations of all si</description><dc:creator>Devon Malick</dc:creator><content:encoded><![CDATA[<p>In a move set to transform the telecom industry, Hawk Networks, the lead contributor to the Althea ecosystem and powered by the Althea platform, has partnered with Globalstar, Global Telecom, and Alliance to create <a href="https://www.businesswire.com/news/home/20241004039455/en/?ref=blog.althea.net"><u>a revolutionary connectivity solution</u></a>. This collaboration leverages Globalstar’s Band 53, Althea’s KeyLTE/5G, and the modular flexibility of the Althea platform to unlock previously inaccessible spectrum resources. The result is a groundbreaking opportunity for organizations of all sizes to build robust, high-performance networks in applications ranging from smart farms to underserved broadband areas.</p><p>By enabling access to licensed spectrum in flexible ways, the partnership addresses the growing need for reliable, high-capacity wireless solutions while lowering the historical barriers to entry. Once reserved for large telecom entities due to cost and complexity, licensed spectrum is now available to a much broader range of participants—making it possible for small operators, local communities, and businesses to build telecom networks that provide high performance mobile, IoT, or broadband solutions.&nbsp;</p><h2 id="democratizing-telecom-infrastructure">Democratizing Telecom Infrastructure</h2><p>This partnership signals a critical step toward realizing Althea’s vision of an open, decentralized platform that redefines how telecom networks are built, funded, and operated. Traditionally, building telecom networks required centralized coordination, costly infrastructure investments, and exclusive access to key resources like licensed spectrum. For smaller or community-driven initiatives, these hurdles were nearly insurmountable.</p><p>Now, through Althea’s collaboration with Globalstar, Global Telecom, and Alliance the barriers are significantly lowered. Access to Globalstar’s Band 53 spectrum and Althea’s KeyLTE/5G allows entities of any size to take advantage of the reliability and efficiency of licensed spectrum, a critical resource that was once out of reach. The spectrum can be used by itself, or aggregated with CBRS for higher performance. This democratization is not just a breakthrough for smaller networks—it’s a transformative shift in how telecom infrastructure can be deployed and operated across a wide variety of industries.</p><h2 id="the-althea-platform-decentralization-meets-dynamic-scalable-networks">The Althea Platform: Decentralization Meets Dynamic, Scalable Networks</h2><p>At the core of this innovation is Althea. Unlike traditional telecom models, which are controlled by centralized entities and involve complex, hierarchical management structures, the Althea blockchain-based ecosystem with its dynamic routing and machine-to-machine based payments. invites multiple participants—whether they are large telecom operators, local municipalities, or grassroots ISPs—to leverage its core protocols to build dynamic, scalable networks.</p><p>Althea automates many of the traditionally labor-intensive processes in network management, such as payment settlements, routing, and bandwidth allocation, through smart contracts. This automation dramatically reduces operational overhead, enabling a more efficient use of resources and making it easier for smaller operators to participate. As a result, network operators can focus on delivering high-quality services without the administrative burden that often comes with legacy telecom systems.</p><h2 id="unlocking-the-power-of-licensed-spectrum-with-keylte5g">Unlocking the Power of Licensed Spectrum with KeyLTE/5G</h2><p>One of the key advantages of this partnership is how Althea unlocks the power of licensed spectrum leveraging the KeyLTE/5G solution. By integrating Globalstar’s Band 53 and CBRS Band 48, Althea enables network operators to build high-capacity LTE and 5G networks without the congestion and limitations that come with unlicensed spectrum.</p><p>Historically, smaller or decentralized networks were unable to access licensed spectrum due to its high costs and the complexities involved in securing leases from large carriers. With this partnership, entities of various sizes can now access a comprehensive, off-the-shelf solution that includes the necessary radio equipment, core network components, and licensed spectrum. This streamlined offering provides an efficient way to deploy mission-critical applications—whether it’s delivering broadband to remote areas, supporting industrial IoT systems, or enhancing smart agriculture—with reliable, high-performance connectivity.</p><h2 id="building-flexible-and-inclusive-networks">Building Flexible and Inclusive Networks</h2><p>One of the most compelling aspects of the Althea platform is its flexibility, enabling participants to build telecom networks tailored to their specific needs. This “right-sizing” approach, combined with off-the-shelf tools, makes deploying broadband or IoT infrastructure both seamless and cost-effective.</p><p>For instance, a farmer looking to connect cameras, monitoring devices, and smart sensors could build an LTE network at a cost similar to setting up a Wi-Fi network. The advantage is that LTE offers superior reliability and flexibility, but now with the same affordability and ease of deployment as Wi-Fi.</p><p>Althea’s open, decentralized framework—featuring tools, smart contracts, and protocols—empowers a broad range of entities, from local ISPs to industrial IoT operators, to build and manage their telecom infrastructure. This inclusivity drives innovation and competition, ensuring no single entity dominates access to network resources or spectrum.</p><h2 id="blockchain-powered-payments-and-real-time-network-management">Blockchain-Powered Payments and Real-Time Network Management</h2><p>Another key aspect of Althea’s innovation is its blockchain-powered payment system. Traditional telecom billing models rely on rigid cycles, often charging customers for services they may not fully use or need This has created unnecessary rigidity and precluded access to nearly 1 in 4 Americans, and stymied the growth in the IoT market. . By enabling real-time micro-transactions operators have flexible choices for capturing value, and users have choice and fair value. &nbsp; Users offers a flexible, more personalized experience for customers, who can adjust their service levels on-demand without the constraints of fixed contracts or pricing plans.</p><p>Additionally, Althea’s blockchain architecture enhances the efficiency of network management. Its smart contracts make decentralized, automated decisions on routing and bandwidth allocation, optimizing network performance in real time. This decentralized routing model ensures resilience and opens up exciting markets in IoT, even in challenging environments where traditional networks might falter.</p><h2 id="harnessing-the-power-of-real-world-assets-rwa-in-telecom">Harnessing the Power of Real-World Assets (RWA) in Telecom</h2><p>Through blockchain integration,&nbsp; real-world assets like telecom towers, fiber optic cables, or even spectrum, can become tradable and programmable, unlocking new ways to utilize and earn from previously siloed infrastructure. This approach invites participants&nbsp; to join in building the future of decentralized infrastructure across industries, from telecom to utilities, enabling the use of RWAs as a critical asset class in emerging decentralized markets, and creates flexible ways to coordinate both funding and operation of infrastructure. This partnership shows how telecom companies are evolving to embrace more flexible structures for assets, including licensed spectrum assets.&nbsp;</p><p>With Althea’s Layer 1 (L1) blockchain, physical assets are seamlessly connected with decentralized network operations. This makes it easier for more participants to own, operate, and earn from telecom assets ( RWAs,) allowing them to become active stakeholders in physical infrastructure that was once the domain of large entities. This decentralized approach ensures that real-world telecom assets—like spectrum and network equipment—can be traded or leveraged efficiently, empowering even smaller operators and communities to participate&nbsp;</p><p>Althea’s Liquid Infrastructure model also creates a real-time marketplace for essential real-world assets for modern telecom systems. This marketplace allows operators to dynamically buy, sell, and manage these resources based on immediate needs. The ability to trade RWAs such as telecom towers, fiberoptic cables, and spectrum in real-time helps to create a more efficient, adaptive, and liquid telecom ecosystem. Communities can scale their networks organically, adding capacity as demand increases without the need for large upfront capital investments, making telecom infrastructure more accessible and efficient for all. Althea’s integration of RWAs positions it as a leader in transforming physical assets into dynamic, tradable resources, contributing to the growing adoption of tokenized RWAs in the decentralized economy.</p><h2 id="a-new-era-for-connectivity">A New Era for Connectivity</h2><p>With the rise of the machine economy, AI, and a future filled with seamlessly connected devices, the need for a new paradigm that democratizes access to infrastructure has never been more critical. By combining blockchain-powered network management with access to licensed spectrum, Althea is paving the way for a more inclusive telecom landscape. High-performance telecom solutions, once limited to traditional broadband providers, are now within reach for organizations of all sizes, empowering them to thrive in emerging markets like connected machines and IoT.</p><p>As telecom continues to evolve, this collaboration between Hawk Networks, Globalstar, Global Telecom, and Alliance serves as a blueprint for the future—one where technology is flexible, inclusive, and shaped by the needs of its users rather than the constraints of legacy systems. With this partnership, Althea is not just driving change; it’s crafting the blueprint for the telecom networks of tomorrow.</p><hr><p><strong>About Althea</strong>: Since 2018, Althea’s technology has brought blockchain-enabled internet access to thousands of homes and even the most challenging topographies. To read more, go to <a href="http://althea.net/?ref=blog.althea.net" rel="noopener">althea.net</a>.&nbsp;</p><p>To get involved, join Althea’s Discord: <a href="https://discord.gg/3w2ZPKue?ref=blog.althea.net" rel="nofollow noopener">https://discord.gg/3w2ZPKue</a></p>]]></content:encoded></item>
<item><title>Althea Whitepaper</title><link>https://blog.althea.net/althea-paper/</link><guid isPermaLink="true">https://blog.althea.net/althea-paper/</guid><pubDate>Wed, 05 Jun 2024 00:00:00 GMT</pubDate><description>Updated Althea and Althea L1 whitepaper</description><dc:creator>Justin Kilpatrick, Deborah Simpier</dc:creator><content:encoded><![CDATA[<p><strong>Note:</strong> This article has been updated to reflect v2 of our whitepaper</p><div class="kg-card kg-file-card"><a class="kg-file-card-container" href="https://blog.althea.net/content/files/2024/06/Althea-Whitepaper-v2.0.pdf" title="Download" download=""><div class="kg-file-card-contents"><div class="kg-file-card-title">Althea Whitepaper v2</div><div class="kg-file-card-caption">PDF version of the whitepaper</div><div class="kg-file-card-metadata"><div class="kg-file-card-filename">Althea Whitepaper v2.0.pdf</div><div class="kg-file-card-filesize">411 KB</div></div></div><div class="kg-file-card-icon"><svg viewBox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs><title>download-circle</title><polyline class="a" points="8.25 14.25 12 18 15.75 14.25"></polyline><line class="a" x1="12" y1="6.75" x2="12" y2="18"></line><circle class="a" cx="12" cy="12" r="11.25"></circle></svg></div></a></div><p>In order to maintain formatting please view the PDF version of the whitepaper linked above. </p>]]></content:encoded></item>
<item><title>Pay-As-You-Go Internet Service Expands in Las Cruces</title><link>https://blog.althea.net/pay-as-you-go-internet-service-expands-in-las-cruces/</link><guid isPermaLink="true">https://blog.althea.net/pay-as-you-go-internet-service-expands-in-las-cruces/</guid><pubDate>Sat, 03 Feb 2024 20:05:45 GMT</pubDate><description>Althea, an internet service provider with pay-as-you-go plans, expands its high-speed network in Las Cruces. </description><dc:creator>Devon Malick</dc:creator><content:encoded><![CDATA[<p>According to a report by <a href="https://broadbandnow.com/New-Mexico?ref=blog.althea.net">Broadband Now</a>, nearly nine in ten New Mexico residents cannot purchase broadband at a price of $60/month or less. Hawk Networks, also known as Althea, a small internet service provider with networks throughout the country, hopes to make the internet more affordable for Las Cruces residents by expanding their pay-as-you-go internet plans. </p><p>Althea's pay-as-you-go system is a unique billing model that allows users to pay for the internet services they consume on a usage basis rather than commit to a fixed monthly subscription. This approach to billing can be particularly helpful for households who struggle to pay the same fixed bill month after month. Customers can use services as needed without long-term commitments or contracts, and they can adjust their usage and spending based on their financial situation.</p><p>Althea is a pioneer in telecom, leveraging blockchain technology and a mesh network to provide reliable and affordable internet connectivity. Their network selects the cheapest, best connection available on a per-second basis, improving both reliability and redundancy for customers. Althea's approach means that customers will get low latency and no data cap, with the average monthly bill only costing between $30 and $40. And if customers enroll in the FCC’s Affordable Connectivity Program (ACP), their service can be free.</p><p>Customers who refer a friend to Althea will receive a one-time $50 credit towards their account and can receive up to a $250 credit if they have referred five or more friends. </p><p>Las Cruces residents interested in Althea services can go to hawknetworks.net/las-cruces and fill out the contact form. </p><h2 id="about-hawk-networks-inc">About Hawk Networks Inc.</h2><p>Founded in 2018, Hawk Networks (Althea) designs and deploys modular, open-access broadband internet and connectivity solutions, bringing fast, reliable connectivity to even the most remote and challenging environments.</p>]]></content:encoded></item>
<item><title>Althea Unlock Connectivity Grant Winners: Four our Future</title><link>https://blog.althea.net/unlock-connectivity-grant-winners-four-our-future/</link><guid isPermaLink="true">https://blog.althea.net/unlock-connectivity-grant-winners-four-our-future/</guid><pubDate>Wed, 21 Dec 2022 21:50:39 GMT</pubDate><description>Hawk Networks is pleased to announce  Four Our Future Indigenous Economics Ltd is the winner of the 2022 Unlock Connectivity Grant.  FOF will be building and supporting indigenous connectivity capacity building in Canada using KeyLTE, a revolutionary solution combining the world’s first home router embedded EPC (LTE core/Evolved Packet Core) with Althea’s innovative routing and billing platform.


Althea is a holistic system for building networks with a unique set of “broadband legos” to build n</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>Hawk Networks is pleased to announce &nbsp;Four Our Future Indigenous Economics Ltd is the winner of the 2022 Unlock Connectivity Grant. &nbsp;FOF will be building and supporting indigenous connectivity capacity building in Canada using KeyLTE, a revolutionary solution combining the world’s first home router embedded EPC (LTE core/Evolved Packet Core) with Althea’s innovative routing and billing platform. <br></p><p>Althea is a holistic system for building networks with a unique set of “broadband legos” to build networks that work with communities, instead of a top-down solution that doesn’t fit for many indigenous networks. KeyLTE further unlocks connectivity solutions beyond broadband to the home which supports many different applications including cellular, smart and precision ag, sensors, monitoring, and smart cities applications.<br></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2022/12/Broadband-Lego-v2-dark-version-copy.png" class="kg-image" alt="" loading="lazy" width="1080" height="1080" decoding="async"></figure><p>Based in British Columbia, Four Our Future is an Indigenous-owned corporation founded by Indigenous leaders across Canada is very familiar with supporting digital equity and bridging the digital divide in a resilient and sustainable way. &nbsp;Four Our Future specializes in developing and implementing sustainably-focused strategic plans, business plans and community based economic development models. Their team identifies and addresses the dichotomy between Western-corporate business models and more ‘holistic’ Indigenous/community development models, drawing from their collective experiences living, working and learning from over 300 of Canada’s 630+ Indigenous governments.<br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2022/12/IMG_6062.jpg" class="kg-image" alt="" loading="lazy" width="2000" height="1516" decoding="async"><figcaption>The Four our Future team</figcaption></figure><p>The Unlock Connectivity Grant will provide Four Our Future with no-cost network design and support services, as well as $15,000 towards LTE hardware. &nbsp;One of the first projects that Four Our Future will embark on is a smart and connected building in Vancouver BC that will serve as a testing and educational center for broadband capacity building. This unique hands-on approach will give indigenous leadership and IT professionals the opportunity to see a network build out in real time and envision the connectivity possibilities in their communities. <br><br>Four Our Future Indigenous Economics is very pleased to accept this award and the new relationships with Hawk Networks, Althea and all the technical teams responsible for the opportunity to bring greater prosperity to First Nations communities.<br></p><p>Education and capacity building is one of the most important and overlooked parts of building community networks. These components enable anyone to use technology to solve the digital divide. This knowledge shouldn’t be siloed in big tech or academia, and the Four Our Future &lt;&gt; Althea partnership aided by the Unlock Connectivity award will make tangible steps towards the goal of democratizing access to this technology to the more than 600 First Nations in Canada. <br></p><p>The partnership will also empower web3 educational opportunities, empowering youth to enter into this emerging economic &nbsp;opportunity in a tangible way. Althea’s interoperable micro-transaction and composable billing solutions intersect with Four Our Future’s work in NFTs (400 Drums) to provide access for anyone to learn about how blockchain technology can be used in real world applications. <br></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2022/12/David-FIerro---Tamara-Goddard-1.jpg" class="kg-image" alt="" loading="lazy" width="960" height="720" decoding="async"></figure><p>400 Drums is a #web3 campaign dedicated to supporting Indigenous Elders, artists, language speakers and tour operators in harnessing new online platforms to monetize their skills while sharing their teachings and stories. Drums are handcrafted by David Fierro of the Okanagan Nation in collaboration with Tamara Goddard of the Saulteau Nation. Once done, the instruments are photographed and sold as NFTs. <br></p><p>We are excited to begin this important work with the Four Our Future team, and look forward to breaking ground on the first connected building in early 2023!<br><br></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2022/12/Screen-Shot-2022-04-07-at-10.47.42-AM.png" class="kg-image" alt="" loading="lazy" width="1748" height="1178" decoding="async"></figure><p>About Hawk Networks:</p><p>Hawk Networks develops the technology underpinning the Althea system including:</p><ul><li>Price Aware and Software Defined Routing</li><li>Peer-to-Peer Micro-transaction platform</li><li>Gravity Bridge, a decentralized blockchain bridge</li><li>KeyLTE, an embedded home router core</li><li>Network Operator Tools and Managed Router Firmware<br></li></ul><p>The Unlock Connectivity Grant will start accepting new submissions in early 2023….stay tuned!</p>]]></content:encoded></item>
<item><title>Althea Platform</title><link>https://blog.althea.net/althea-platform/</link><guid isPermaLink="true">https://blog.althea.net/althea-platform/</guid><pubDate>Thu, 03 Nov 2022 05:57:51 GMT</pubDate><description>Althea is a platform for distributed payments in a cooperative or multi-entity network. It combines a micro-transaction framework for programmatic and near real-time payments between peers. Althea network offers a powerful vision for the future by removing the friction of legacy structures and unlocking access to finance and connectivity for all. It is a solution for the inflexible payment methods and many capital inefficiencies that prohibit infrastructure investment.


The internet is the esse</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p></p><p>Althea is a platform for distributed payments in a cooperative or multi-entity network. It combines a micro-transaction framework for programmatic and near real-time payments between peers. Althea network offers a powerful vision for the future by removing the friction of legacy structures and unlocking access to finance and connectivity for all. It is a solution for the inflexible payment methods and many capital inefficiencies that prohibit infrastructure investment.<br></p><p>The internet is the essence of how we communicate, how we access interaction, speak our truths, conduct business and explore opportunities. It's where we learn, associate with others, and where the opportunities of the future are. So, it’s no surprise that a core use case of the Althea platform is connectivity. <br></p><p>The legacy structures of connectivity and the markets for last mile internet, showcase the inefficiencies common to legacy models. They are capital inefficient, the process creates friction and long sales cycles. The reasons that ISPs have some of the worst customer satisfaction scores isn’t because they are evil and malignant, but because the systems are fundamentally misaligned. <br></p><p>The current models don’t work well for last mile providers either. Take New York City for example, where roughly 29% of households lack access to broadband. That’s a market of over 3,000,000 people that legacy telecom does not serve.<br></p><p>In the core of the internet, however, where carriers charge each other, we create instances where markets are open and packets flow freely over vast interconnected networks. Costs go down, capacity goes up. It works. <br></p><h3 id="althea-is-the-thesis-that-we-can-bring-this-open-marketplace-to-the-user-and-shift-the-balance-of-power-ownership-and-choice-with-systems-that-work-well-and-align-user-and-provider"><em>Althea is the thesis that we can bring this open marketplace to the user and shift the balance of power, ownership and choice, with systems that work well and align user and provider. <br></em></h3><figure class="kg-card kg-image-card"><aside class="asset-unavailable" data-source-url="https://lh3.googleusercontent.com/azau4yq3b1zIi7Iheesd3D4PDqegQPpW0f_GiOB2Pe7pqm2SG5PBe59WAwET4vBN5u-eExaqG2TlQppefgMp4eeuLgs8HMw1Yywl4C5_17ktChZwujzoCTZRFHp3Q_STHAD8--qUSwC84YIxPEmPO3UKzLVb_URp6fzaG4VfqfJfe_pHKdaqgpM4qg">An image in the original article is no longer available from its host.</aside></figure><p><br></p><figure class="kg-card kg-image-card"><aside class="asset-unavailable" data-source-url="https://lh4.googleusercontent.com/sJ0XUoGBOW3yzCdh5s4g-3zIdT3crm1Bh4LoqUV9bcM6cQgRqBoYPpPhvI1RX0ppzr9c6g95pHYhYFJLsuJj3mtrf_v8mI2rB7E-O0Rw6mhXcl6L5MMCH1KvkXDfnRd4wjjWi8NemwFWIfDclTHkDhLZ_gSUbXKGPRHXM_861xO8JqV9IdpqHS_SLw">An image in the original article is no longer available from its host.</aside></figure><p></p><h2 id="althea-platform-overview">Althea Platform Overview</h2><p><em>Althea provides software defined networking in conjunction with tokenized “liquid” infrastructure to create fully democratized, open market network architectures </em><br><br></p><ul><li>A powerful blockchain based platform for micro-transactions, settles payments immediately, programmatically and transparently. <br></li><li>Althea’s software defined networking algorithms, built into its routers and devices, allow users to select desired cost and performance parameters and the network dynamically routes traffic to meet those requirements<br></li><li>Tokenizing the infrastructure (<strong>Liquid Infrastructure</strong>) allows anyone (operators, end users, funds, individuals) to participate in the funding and ownership of the physical assets in the network<br></li><li>Althea democratizes networks by enabling buyers of any scale to participate in the ownership and economic benefit of network assets – including new assets that potentially create competitive infrastructure or access underserved markets</li></ul><figure class="kg-card kg-image-card"><aside class="asset-unavailable" data-source-url="https://lh6.googleusercontent.com/muC9iwLEi0nTyEtF4dB0uCMVrDXU8pdb6ka8H9rayW6hphtnmw7lcDYMJjCgZ2F3fRhVs1u80O6oTlEOajjWn9LtQ0GhtKR20zU_sd96llyisgWE-VDLsnvSctAGpF_UcHH0kfN1Ly1nwOaMZ5_NABUrp7dvsTpmbvPbLB6tFkkwYs8yA40LLQnItw">An image in the original article is no longer available from its host.</aside></figure><h1 id="under-the-hood-the-althea-tech-stack"><strong>Under the Hood: The Althea Tech Stack</strong><br></h1><ul><li>Price Aware Routing and micro-transaction billing</li><li>User Focused Experience - Router dash and embedded wallet, plug-and-play implementation</li><li>Network operators: Network support and operator tools, managed routers and transparent metrics</li><li>Hardware Agnostic: Fixed wireless, fiber, NOW KeyLTE</li><li>Blockchain Interoperability: Gravity Bridge and Interchain Accounts<br><br></li></ul><p><strong>Pay Per Forward</strong>: Every router loaded with Althea software contains our unique forwarding protocol, which pays network routers for forwarding service. Creates near real-time settlement of transactions, with stable currencies, programmatically and transparently on the blockchain. <br></p><p><strong>Price Aware Routing</strong>: Althea utilizes a dynamic, distance vector routing protocol weighted by user choice of cost or latency. This agile routing system enables resiliency, reliability and modularity.<br>By default, Althea routing protocols will try to select the route with a balance in quality and cost. From the Althea Router Dashboard, individual users may set their service to prioritize quality and price on a sliding scale. <br></p><p><strong>Operator Tools</strong>: Althea’s Operator Tools is an online dashboard with a suite of tools for monitoring, managing, and deploying networks based on the Althea platform. Operator Tools provides a place to keep track of both the technical and financial aspects of your network.<br></p><p><strong>Gravity Bridge</strong>: Gravity Bridge is decentralized blockchain, bridging Ethereum and Cosmos ecosystems. &nbsp;Connected to Althea, Gravity enables distributed bandwidth networks to use stablecoins on Althea’s sovereign chain, ensuring telecom level reliability and seamless UX.<br></p><figure class="kg-card kg-image-card"><aside class="asset-unavailable" data-source-url="https://lh6.googleusercontent.com/6zzSH-SoSKAPN66xs1wNJau6zVpvVRYYXYeNr3UCVGK-lO6uQf-_XPwtROVZ4scgMvg7LufgFW9pN6uEin17MefyZrRaY7k-L0DvgNeuWSVoZn96VDYCklLfIMsR-2KvNccllHnt11FBrkRDZO2rCL8FUNkx6qWS87ACh1iGIqkXBDHB58xhcSdwfA">An image in the original article is no longer available from its host.</aside></figure><p><br></p><p><strong>KeyLTE</strong>: Althea’s KeyLTE revolutionizes the deployment of public and private LTE networks by creating a simple and flexible toolkit for LTE. Easy plug-and-play design and maintenance allows builders to scale their networks to meet their needs and aspirations. <br></p><figure class="kg-card kg-image-card"><aside class="asset-unavailable" data-source-url="https://lh4.googleusercontent.com/fWFMJ_d_m0SIF2Hr_Py0M2wwssSOSMkQl19hAGcxgSfKu1WyuuFxb4HLTARKEujbGZgyb7fedSDsHK_NbeWH7x1sQo0L-FYZ_f6uL4E8KCEJ1Wpace13zT3iLy2-3oTmWBKub2Kr1UbA_FZ2guMrCbM30Rg9ymbQVjW6ckPdQg9dCUmeQXhYkPqNIQ">An image in the original article is no longer available from its host.</aside></figure><p><br></p><p><strong>Holistic Network Implementation</strong><br></p><p>This modularity of design becomes the building blocks of holistic networks. Pay-for-forward billing enables a variety of different investment structures, while the service can be maintained sustainably locally. The distributed, capital efficient design and flexible payment implementation opens new markets that were previously siloed behind rigid rental structures. <br></p><p>The network operator support software and plug-and-play design empowers more entities to build and encourages new entrants to the market, blending the distinction of public and private networks. <br></p><p>With KeyLTE and pay-per-forward revenue share, networks can be built and extended nearly limitlessly and used for mobile and industrial applications, including precision agriculture, smart cities, iot and broadband.<br></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2022/11/cities.png" class="kg-image" alt="" loading="lazy" width="1280" height="720" decoding="async"></figure><p></p><h3 id="user-driven-design">User Driven Design<br></h3><p>Althea was designed to provide access to the composability and modularity of blockchain systems &nbsp;with an intuitive user interface. Similar to how users can interact with browsers without the educational lift of understanding TCP/IP, Althea created an embedded, easy to use wallet that doesn’t require any special knowledge or expertise.<br></p><p>In the future, this wallet will connect with the Gravity Bridge, an interoperable blockchain bridge between ethereum and the Cosmos ecosystem. Together with Interchain accounts and single transaction signing, Althea users could access other blockchains, DEXs, and utilities all from their dashboard. <br></p><figure class="kg-card kg-image-card"><aside class="asset-unavailable" data-source-url="https://lh6.googleusercontent.com/6L-xv4V0K1RcsRwp7esXefHRzTYLm_BuD0HNX6z_PJWjFYTrFn1g6__gH52iqtCJ-bKSg99oK6MFXzT2DHKfqKVMNN-UogsgUaU8Slf3IECce4cnxiCubdFMkvHGyN1AZBBkD21BWRdZm1kKczO46EWkk5LDPufkqfpWGOIoCwZwWNQ0QL2lHKf8XA">An image in the original article is no longer available from its host.</aside></figure><p><br></p><p>Currently, users pay in stable digital currency “digital dollars” which is distributed to entities with infrastructure in the network or who maintain the service components. This creates an equitable, transparent, and programmatic coordination layer for distributing network revenue. &nbsp;An easy-to-use payment widget allows users to load routers using a debit card, and available customer service provides all expected functions of a legacy ISP, with the added benefits of a decentralized network, instead of a monopolistic one.<br></p><p><strong>The Future of the Platform</strong></p><p>Althea was founded in 2018 and since its inception, networks using the platform have been built across the US in 8 states, as well as Africa, proving that better systems can not only open new markets in challenging areas, but can flourish. <br></p><p>With the upcoming launch of Althea’s blockchain for telecom, the platform will migrate from it’s home on xdai to Althea chain and connect to the Gravity Bridge, opening up new opportunities for growth and welcoming new ecosystem participants.<br></p><p>Althea is a paradigm shift from brittle and inefficient legacy systems, to open and accessible structures, that unlock the future of finance and connectivity.</p>]]></content:encoded></item>
<item><title>Unlock Connectivity Grant 2022</title><link>https://blog.althea.net/unlock-connectivity-grant-2022/</link><guid isPermaLink="true">https://blog.althea.net/unlock-connectivity-grant-2022/</guid><pubDate>Fri, 29 Jul 2022 18:55:45 GMT</pubDate><description>Application window is open 8/1/2022 through 10/01/2022 @ 5pm PDT

Application link: https://forms.gle/9mmyuAWgaNjvL1Rm9

Who can apply: New and existing network operators including municipalities, cooperatives, tribal, non-profit, and other organizational structures that operate a network.


Award: up to $15,000 of LTE Equipment to build an Althea KeyLTE deployment.  Design and planning support for the build would be included with impact on your proposed grant budget.


Impact: Provide a unique </description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2022/07/keyLTE-1.png" class="kg-image" alt="" loading="lazy" width="489" height="220" decoding="async"></figure><p><strong>Application window is open 8/1/2022 through 10/01/2022 @ 5pm PDT</strong></p><p><strong>Application link: </strong><a href="https://forms.gle/9mmyuAWgaNjvL1Rm9?ref=blog.althea.net">https://forms.gle/9mmyuAWgaNjvL1Rm9</a></p><p><strong>Who can apply: </strong>New and existing network operators including municipalities, cooperatives, tribal, non-profit, and other organizational structures that operate a network.<br></p><p><strong>Award:</strong> up to $15,000 of LTE Equipment to build an Althea KeyLTE deployment. &nbsp;Design and planning support for the build would be included with impact on your proposed grant budget.<br></p><p><strong>Impact:</strong> Provide a unique and/or creative solution use case for the use of Althea’s flexible KeyLTE core that meets a connectivity pain point. Show a pathway to a heterogeneous network, serving broadband to fixed locations, as well as IoT or smart (anything). &nbsp;Whether it’s a farming community who’s looking to expand smart and precision ag or a rural area looking to provide connectivity to EV charging stations and remote wildfire cameras, your unique challenges are what we are looking to assist you to solve. <br></p><p><strong>What is KeyLTE:</strong> &nbsp;Althea is a platform for solving the "last mile" problem for broadband internet. &nbsp;Hawk Networks Inc. derived the IP for a medium-agnostic revenue share and SDN routing, with a resilient and flexible blockchain settlement layer. &nbsp;The concept we are submitting for this challenge is a solution for building plug-and-play, heterogeneous LTE networks that are capital efficient and agile, empowering any size entity to build and maintain a sovereign network. Althea technology is in production in six US states, Puerto Rico, and Africa and we are iterating on the authentication process for 5G networks.</p><p>KeyLTE revolutionizes the deployment of public and private LTE networks by creating a simple and flexible toolkit for network design and deployment. &nbsp;Instead of expensive, unwieldy legacy core topologies, KeyLTE networks can be built easily and affordably in a variety of environments. KeyLTE is agile and lightweight enough to embed the EPC (Evolved Packet Core) in the Althea smart, home router (with an average cost of $200) and flexible enough to scale to nationwide deployments.</p><p>By embedding the EPC into the home Althea router instance, LTE networks can be deployed as inexpensively as you would install a home user, or even convert a subscriber or home deployment into an edge core with a simple firmware upgrade. This minimizes power consumption and footprint, further reducing capital outlay. &nbsp;The KeyLTE router needs minimal configuration and can be maintained remotely in the Althea Operator Tools dashboard.</p><p>Network operators and private enterprise can utilize system integration and support from Hawk Networks, or utilize the open access framework and decoupled customer service layer, to partner and revenue share with other entities. This supports network builds from entities of many different sizes and capabilities, and empowers private enterprise to leverage existing assets to participate in offsetting their connectivity costs. From the construction site to rural fixed wireless, KeyLTE and Althea’s dynamic mesh routing empowers self-healing, agile, and resilient topologies all without manual configuration.</p><p>KeyLTE can be deployed on the edge, extending out a fixed wireless network, or as a flexible private LTE core. <strong>Read More about Althea and KeyLTE with the links below.</strong></p><p><a href="https://www.althea.net/?ref=blog.althea.net">Althea</a></p><p><a href="https://twitter.com/AltheaNetwork?ref=blog.althea.net">Social Media</a></p><p><a href="https://docs.althea.net/?ref=blog.althea.net">Documents</a></p><p><a href="https://blog.althea.net/case-study-nevada-city-ca/">Case Study</a></p>]]></content:encoded></item>
<item><title>Case Study - TreeLink in California</title><link>https://blog.althea.net/case-study-nevada-city-ca/</link><guid isPermaLink="true">https://blog.althea.net/case-study-nevada-city-ca/</guid><pubDate>Mon, 25 Jul 2022 18:53:44 GMT</pubDate><description>The Althea technology and platform is a powerful set of composable tools for building networks in even the most challenging environments. Components like a flexible billing system, automatic revenue share system, smart routing and monitoring are like “broadband legos” for building networks virtually anywhere.

In 2020, that’s exactly what Thomas Spellman needed for his rural community in Nevada County, nestled in the Northern California mountains. Nevada City is a small town of roughly 3,500 peo</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>The Althea technology and platform is a powerful set of composable tools for building networks in even the most challenging environments. Components like a flexible billing system, automatic revenue share system, smart routing and monitoring are like “broadband legos” for building networks virtually anywhere.</p><p>In 2020, that’s exactly what Thomas Spellman needed for his rural community in Nevada County, nestled in the Northern California mountains. Nevada City is a small town of roughly 3,500 people with hills, valleys and tall pine trees.</p><h2 id="the-challenge">The Challenge:</h2><p>Build a broadband network for a community of 3,500 people with very few alternatives.</p><p>Initial Capital: $10,000</p><p>Terrain: Rugged, tall trees, hills &amp; valleys</p><h2 id="the-solution">The Solution:</h2><p>Althea Platform</p><p>Medium: Fixed wireless solutions from Ubiquiti</p><p>Network Operator: Yuba Village Internet LLC, d.b.a. TreeLink, a private small business</p><p>Users and Relays: 146 total users, with 26 Relays</p><p><br>Althea is medium agnostic, and Thomas chose a fixed wireless solution for the initial build out, which provided flexibility and allowed for resilient and redundant failover as well as an agile build to the outlying areas of the network. In a legacy network, central towers would provide one point of coverage to the area. These towers are often expensive and don’t provide adequate coverage in challenging topology, like rural Nevada county.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2022/07/heatmap2-2.png" class="kg-image" alt="" loading="lazy" width="2000" height="1669" decoding="async"><figcaption>A network of distributed antennas creates a wide coverage area in challenging terrain</figcaption></figure><p><br>With Althea, many homes, farms and businesses can become relays (hosted broadcasting antennas) and Althea’s payment system pays them for contributing to the network. &nbsp;Similar to a distributed solar system, which pays users for providing solar energy back on the grid by measuring and remitting credit, Althea’s smart and price aware routing protocol, measures the amount of data forwarded through the relay antenna and compensates the relay host automatically in micro-transactions. Some relays in the TreeLink network are able to offset their internet costs and even earn extra money.</p><p><br>This relay system made it possible to build into hard to reach areas, and easy for the network operator, TreeLink, to negotiate roof leases without having to worry about sending payments to each relay, or manually calculate profit shares.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2022/07/map1-cropped.png" class="kg-image" alt="" loading="lazy" width="794" height="1324" decoding="async"><figcaption>The Althea platform makes it easy to create mesh networks from a small number of relays</figcaption></figure><p><br>This also added flexibility to the capital needed to build out the network. Because the infrastructure of the network’s billing is separate from the customer service and governance layers, many unique funding mechanisms can be used. &nbsp;Each user and relay pays for and owns the equipment needed to be part of the network, so a large initial investment wasn’t needed; the network grew organically, according to the needs of the community. When ATT DSL began shutting down older connections, TreeLink was there and able to rapidly expand to meet the needs of the community.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2022/07/New-Chart-v1-r1.png" class="kg-image" alt="" loading="lazy" width="2000" height="1199" decoding="async"><figcaption>The Althea platform allows for simple and customizable profit sharing</figcaption></figure><p><br>Thomas did have a tech background, but not experience with building ISPs, so he was looking for an easy-to-use solution that met the needs of the rural community, both from a technological and economical perspective.</p><blockquote><br>I chose Althea mainly for the integrated metering and micropayment billing, as well as the smart throttling and secure VPN. &nbsp;These features in every Althea router made it easy to build a mesh network of neighbors helping neighbors. &nbsp;Another primary reason is because it's open source, which allows me to fix problems if needed, but the dev team has been great at continually evolving the system. &nbsp;Last but not least, Althea's customer support has made it possible for me to focus on maintaining the network without needing to hire extra support staff. - Thomas Spellman, TreeLink</blockquote><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2022/07/treeninja.jpg" class="kg-image" alt="" loading="lazy" width="1440" height="1440" decoding="async"><figcaption>Thomas Spellman building the TreeLink network!</figcaption></figure><p><br>The Althea platform made it easy to not only build a network in this agile way, but also to monitor and maintain a diverse set of networking hardware from one platform. From the Althea Operator Tools dashboard, the network operator can monitor a variety of metrics related to network health, equipment temperature, link performance,and perform troubleshooting and maintenance. Because Thomas’ network is maintained by just him and another technician, it was important that the platform selected was easy to learn and also made it possible to operate and fix the network remotely.</p><p>As the network expands, Thomas plans to work with a community fiber network, Northern Sierra Broadband, and the open access Althea infrastructure will interconnect. He’ll also be deploying CBRS in the non-line-of-sight areas.</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.althea.net/content/images/2022/07/treeradios.png" width="1536" height="2048" loading="lazy" alt="" decoding="async"></div><div class="kg-gallery-image"><img src="https://blog.althea.net/content/images/2022/07/treeradio2.png" width="2000" height="1500" loading="lazy" alt="" decoding="async"></div><div class="kg-gallery-image"><img src="https://blog.althea.net/content/images/2022/07/sunset.png" width="2000" height="1500" loading="lazy" alt="" decoding="async"></div></div></div><figcaption>Some Ubiquiti radios with RF Elements horns, providing long-distance PTP backhaul and subscriber PTMP coverage in the TreeLink network</figcaption></figure>]]></content:encoded></item>
<item><title>End of Year Recap 2021</title><link>https://blog.althea.net/end-of-year-recap-2021/</link><guid isPermaLink="true">https://blog.althea.net/end-of-year-recap-2021/</guid><pubDate>Thu, 30 Dec 2021 20:17:56 GMT</pubDate><description>Along the journey we have pushed the boundaries of interoperability and shared infrastructure and boldly established new networks where legacy telco could not. I am excited to share with you the new frontiers we explored in 2021 and an ambitious roadmap to 2022. </description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>Althea has always been a mission driven organization, built with a primary directive to protect the openness and freedom of the internet and to create protocols that align both users and participants in broadband systems. Along the journey we have pushed the boundaries of interoperability and shared infrastructure and <strong>boldly established new networks where legacy telco could not</strong>. I am excited to share with you the new frontiers we explored in 2021 and an ambitious roadmap to 2022. </p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.althea.net/content/images/2021/12/FB_IMG_1637192168924.jpg" width="728" height="728" loading="lazy" alt="" decoding="async"></div><div class="kg-gallery-image"><img src="https://blog.althea.net/content/images/2021/12/IMG_20211015_161705_744.jpg" width="763" height="954" loading="lazy" alt="" decoding="async"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.althea.net/content/images/2021/12/TacomaLaunch.jpg" width="2000" height="1125" loading="lazy" alt="" decoding="async"></div><div class="kg-gallery-image"><img src="https://blog.althea.net/content/images/2021/12/terry.jpg" width="2000" height="2667" loading="lazy" alt="" decoding="async"></div></div></div><figcaption>A few of the many diverse Althea deployments.&nbsp;</figcaption></figure><p>2021 saw new Althea networks in remote areas like Warner Valley in southeastern Oregon or the hillsides of northeastern California. These areas are representative examples, where centralized topologies failed to be capex efficient and as a result, these communities were left behind. Because of Althea’s platform, this is no longer the case.<br></p><p>Althea’s decentralized structure enables users to participate in hosting infrastructure and earning revenue, leveraging a community’s existing assets, and making it possible to build to the furthest frontier. The Warner Valley network is a particularly exciting example, as Althea serves the business, farms and even the emergency management and ambulance services across a 40 mile region of canyons and hills. </p><!--kg-card-begin: html--><iframe width="560" height="315" src="https://www.youtube.com/embed/OKD-QLChID0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" loading="lazy"></iframe><!--kg-card-end: html--><p><em>Let’s look back on the events of 2021:</em> <br></p><h2 id="2021-recap"><strong>2021 Recap</strong></h2><p><em><strong>Partnerships and Grants </strong></em><br></p><ul><li><a href="https://blog.althea.net/netequity-and-althea/">NetEquity and Althea partnered</a> to finance, build and operate last-mile broadband networks. Our first project will be in rural Nebraska where we will leverage the fiber optic network owned by OPTK Networks (“OPTK”). Utilizing Althea’s protocol to connect middle and last mile networks opens up new market opportunities for both the last and middle mile operators.</li><li>Althea and George Mason University partnered with People Centered Internet and received a grant for the build out of a <a href="https://peoplecentered.net/the-tribal-resource-center-digital-opportunities-through-tribal-broadband/?ref=blog.althea.net">Tribal Resource Center, supporting Tribal Broadband Networks</a> with technical expertise, particularly in the deployment of LTE networks.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/12/signal-2021-11-09-12-38-13-461--1-.jpg" class="kg-image" alt="" loading="lazy" width="1184" height="1184" decoding="async"><figcaption>Althea recently supported Bear River Band's LTE 2.5GHz network, produced LTE <a href="https://youtu.be/RZ6UEoKDEr0?ref=blog.althea.net">educational content</a>, and participated in the first Tribal Bootcamp, a training summit for network building.&nbsp;</figcaption></figure><ul><li>Althea partner network, Wave 7 Communications, in Enfield North Carolina<a href="https://blog.althea.net/north-carolina-althea-network-wins-epic-grant/"> was awarded the Epic Grant</a> to further the growth of the network there.</li><li>Althea announced <a href="https://youtu.be/hQvxE1TZ3mA?ref=blog.althea.net">a strategic partnership with Mohuman</a>, a nonprofit focused on digital equity, &nbsp;to build networks in underserved urban areas, starting in San Diego, California.</li><li>Althea announced <a href="https://blog.althea.net/althea-hub-advanced-networks-announce-commitment-to-puerto-rico-5g-zone-initiative/">a new partnership with 5G zone contributor, Hub Advanced Networks</a>, to build and expand new broadband networks and support telecom innovation as part of the Puerto Rico 5G Zone &amp; Blockchain Ignition Lab initiative. </li><li>Althea announced <a href="https://www.businesswire.com/news/home/20210909005860/en/Introducing-Althea-AgFiber?ref=blog.althea.net">the launch of AgFiber</a> and its partnership with Silo Communications to build out the first Althea fiber network in rural Illinois.</li><li>Althea acquired a fixed wireless network in Washington state, which will be &nbsp;an excellent opportunity to explore the tangible benefits of transitioning from a legacy to the Althea protocol &nbsp;- announcement coming soon! <br><br></li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/12/signal-2021-09-21-115308.jpg" class="kg-image" alt="" loading="lazy" width="1682" height="1128" decoding="async"><figcaption>Althea's first fiber network gets underway in Illinois.</figcaption></figure><p><em><strong>…And Product Launches!</strong></em></p><ul><li><strong>Operator tools features, </strong>including port liveness and LTE EPC monitoring, empower a vendor agnostic platform for network operators. A key advantage of Althea’s platform is the decoupling and incentivization of the customer service layers, systemizing not only the infrastructure build out, but also the coordination and support of broadband networks.</li><li><strong><a href="https://www.businesswire.com/news/home/20210909005860/en/Introducing-Althea-AgFiber?ref=blog.althea.net">Althea AgFiber</a> </strong>combines a distributed fiber infrastructure with LTE to grow networks organically and expand the capabilities to the device level. Althea is an agnostic metering and billing platform, flexible across any medium and throughput, whether it’s 10GBps fiber networks or fixed wireless, the Althea protocol makes any network more cost efficient, agile, and opens new markets in traditionally underserviced areas.</li><li><strong><a href="https://www.businesswire.com/news/home/20211119005274/en/Introducing-the-World%E2%80%99s-Smartest-Router?ref=blog.althea.net">KeyLTE</a></strong> is the world’s first integrated home router LTE core, making expansion of IOT, private LTE and mobility networks plug and play. By embedding Althea’s KeyLTE core technology into our Smart Router, we've created the only home router in the world that gives you full ownership over your internet and full autonomy from traditional ISPs.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/12/Introducing-the-World-s-Smartest-Router---Full-Router.png" class="kg-image" alt="" loading="lazy" width="2000" height="2000" decoding="async"><figcaption>Learn more - https://www.althea.net/keylte</figcaption></figure><ul><li><strong><strong><strong><a href="https://twitter.com/gravity_bridge/status/1470896532257861635?s=20&amp;ref=blog.althea.net">Gravity Bridge</a> </strong></strong></strong>Together with an amazing group of validators and community members, Althea supported the launch of the Cosmos® Gravity Bridge™, a decentralized, neutral blockchain, bridging assets between the Ethereum and Cosmos ecosystems. Althea users pay for their internet using stable coins, so a bridge between the ethereum ecosystem (with its proven stable coins), and the Cosmos ecosystem was a needed pillar of the Althea ecosystem. After almost two years of development and over 70,000 lines of code, this important component of the system is now live and operational as an independent, purpose-built blockchain–providing precisely this needed functionality. The Gravity Bridge is an innovative and decentralized approach to blockchain bridges. In 2022 it will continue to thrive as an independent ecosystem, supporting not only Althea, but also many other blockchains and DEXs in the Cosmos ecosystem.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://twitter.com/gravity_bridge/status/1470896532257861635?s=20&amp;ref=blog.althea.net"><img src="https://blog.althea.net/content/images/2021/12/GravityMainnet.png" class="kg-image" alt="" loading="lazy" width="585" height="448" decoding="async"></a><figcaption>Learn more at www.gravitybridge.net</figcaption></figure><p>With the foundational work on the systemization of Althea deployments, firmware components, and blockchain infrastructure completed, we are ready for the next chapter of Althea expansion in 2022. <br></p><h2 id="the-year-ahead">The Year Ahead</h2><p><em><strong>The Althea Blockchain Launch</strong></em></p><p>Althea users require a blockchain that is purpose-built to deliver the constant uptime and reliability needed for broadband networks. The Althea blockchain will be built for the many micro transactions of distributed telco, prioritizing quick and reliable settlement, unlike other blockchains that exist for financial transactions, where variable fees and uncertain settlement times are commonplace. Built with the Cosmos SDK, the Althea token will secure this settlement layer and Althea token holders will earn a small fee for each transaction, thus aligning the interests of all participants with the healthy growth and sustainability of the network. <br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/12/New-Chart-v1-r1.png" class="kg-image" alt="" loading="lazy" width="2000" height="1199" decoding="async"><figcaption>Althea's protocol coordinates many different entities in a network.&nbsp;</figcaption></figure><p>This underlying blockchain infrastructure not only supports the metering and billing aspects of Althea’s networks, but also enables potential innovations in investment in long term fiber and vertical asset infrastructure. We expect some early applications on the Althea blockchain to explore new models of lending and funding infrastructure with fiber infrastructure, that can have recurring revenue for decades. This is another way that the Althea platform mitigates the demand risk of building networks, and aligns the interests of participants in the network.<br></p><p>Althea is also a portal for everyday users to benefit from seamless blockchain onboarding and access to decentralized financial tools. <a href="https://economicinclusion-staging.fdic.gov/?ref=blog.althea.net">According to a recent FDIC study</a>, roughly 6% or 14 million people in the US are unbanked, and a great deal more are under-banked. In fact, one of the most unanticipated aspects of our network roll outs was the surprisingly high contingent of users that relied on local corner stores or gas stations to access financial services.</p><p>Althea can address this need as well, by providing permissionless access to the empowering tools of decentralized finance. We will be looking for opportunities to gradually introduce these features to Althea users as the networks grow. <br></p><p>It is through this agnostic and open lens that Althea sees the future of internet infrastructure, and we have taken the path of supporting any medium of packet transmission, whether through fiber, LTE, fixed wireless, or even CanTenna! It was this hardware flexibility that enabled us to bootstrap through much of 2020 and to open markets where legacy models could not. While many of our early networks had focused on fixed wireless networks, Althea sees the future in dense fiber networks and LTE* at the edges. <br></p><p><strong>What does that future look like?</strong></p><p>Imagine stepping off a plane in a new state, and instead of your phone locating a compatible network signal negotiated by deals and roaming agreements, you will configure <em>your choice </em>of cost and latency and Althea’s price aware routing protocol will automatically connect to the best tower and cost automatically. The municipality you are visiting hosts infrastructure with 5G LTE antennas and they earn a portion of the revenue generated from your connection as well. <br></p><p>You jump into your Althea empowered electric vehicle with your synced Althea wallet. While idling and waiting for your passenger, your vehicle’s hotspot provides connectivity to nearby phones and IOT devices, earning you and the auto manufacturer revenue automatically. As you drive along, your phone and car connect to different network infrastructure and pay-as-you-use the infrastructure, your priority and tower connection set by your choices of cost and latency. <br></p><p>Once home, your Althea home router blinks cheerfully - the LEDs indicating you earned revenue by leveraging the balance you keep in the embedded blockchain wallet. On your roof are LTE antennas that also provide coverage in your neighborhood. You earn passive revenue, and your <em>local</em> network operators provide support and answer the 3 am phone call, should anything need repair or maintenance.<br></p><p>This is the Althea future - the foundations of LTE and fiber, blockchain and interoperability laid in 2021, now systemized and coming to fruition starting in 2022. </p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/12/FDnPSR6WQAskvXM.jpeg" class="kg-image" alt="" loading="lazy" width="680" height="383" decoding="async"></figure><h2 id="2022-roadmap"><strong>2022 Roadmap</strong></h2><p>We have seven new markets planned in 2022, the Althea blockchain launch is imminent and some exciting new partnership announcements are coming soon.</p><p>Q1 2022</p><ul><li>Launch of Althea blockchain!</li><li>Althea networks live in Centralia and Tacoma Washington</li><li>KeyLTE routers and available, expanding private LTE and fixed wireless use cases</li><li>Development of LTE capable IOT devices</li><li>KeyLTE pilots of Smart Ag integrations in Illinois, Oregon and Indiana<br></li></ul><p>Q2 2022</p><ul><li>Introduction of new smart contracts for infrastructure investment</li><li>New fiber network build outs</li><li>Early tests of Public/Private LTE networks</li><li>Expansion of LTE use cases</li><li>Launches in Atlanta and Denver and rural Nebraska</li><li>Puerto Rico networks<br></li></ul><p>Q3 2022</p><ul><li>Integration of Althea blockchain in routers with a more seamless fiat on and off ramps</li><li>MVP of integrated Defi with Althea routers</li><li>Launches in San Diego, Puerto Rico and expansion in rural Oregon<br><br></li></ul><p>Q4 2022</p><ul><li>Production public/private LTE instances</li><li>Plug and play LTE for Smart Ag and Private LTE</li><li>New Market launches possible in Carson City, rural Georgia and North Carolina.</li><li>Support for partner networks and systemization of network protocol transition with existing networks<br><br></li></ul><p>The current legacy models don’t work for either the shareholders (large telco companies <a href="https://www.lightreading.com/financial/the-telco-debt-binge-may-end-badly/a/d-id/743972?ref=blog.althea.net">shoulder huge amounts of debt</a> and incur a high demand risk) or anyone that uses the internet. Siloing users into a monthly “rental” model encourages unnatural dead ends to network growth and the under-utilization of bandwidth and infrastructure. Althea opens up these markets, and gives back ownership, sovereignty and choice to the people who rely on them, much the same way that iTunes and YouTube revolutionized how we consume and purchase media content. <br></p><p>I was drawn to Althea for the importance of the key freedoms we have online and the impact that access to the internet brings. It is singularly powerful in it’s significance to a more equitable and thriving future. I have been proud to work alongside some amazing people towards this goal and I look forward to the continuing journey in the coming year.<br></p><hr><p><a href="https://www.althea.net">Website</a></p><p><a href="https://blog.althea.net/altheafaq/">Althea FAQ</a></p><p><a href="https://discord.gg/hHx7HxcycF">Discord</a></p><p><a href="https://twitter.com/AltheaNetwork">Twitter</a><br><br></p><p><em>* &nbsp;LTE vs “5G” - Why do we talk about LTE instead of the usual “5G” that is used in most marketing campaigns?</em></p><p><em>You may have noticed we talk a lot about Althea’s LTE stack instead of putting “5G” or 5th Generation, front and center. There are two reasons for this deliberate nomenclature. First of all, 5G as a 5th Generation LTE protocol does bring interesting and exciting improvements, and Althea will be capable of utilizing those and supporting these 5th generation capabilities, but Althea’s agnostic protocol is also expansive and agnostic to generation past or present. Secondly, 5G has become such an overused term as to become relatively meaningless. Althea has a strong engineering and technical approach to building better systems, and we believe that accurate nomenclature with more specificity is a better way to operate.</em></p><p><em><em>*COSMOS is the registered trademark of the Interchain Foundation, and is being used by permission. GRAVITY BRIDGE is the trademark of Gravity Bridge.</em></em><br></p>]]></content:encoded></item>
<item><title>Althea + Hub Advanced Networks Announce Commitment to Puerto Rico 5G Zone Initiative</title><link>https://blog.althea.net/althea-hub-advanced-networks-announce-commitment-to-puerto-rico-5g-zone-initiative/</link><guid isPermaLink="true">https://blog.althea.net/althea-hub-advanced-networks-announce-commitment-to-puerto-rico-5g-zone-initiative/</guid><pubDate>Sat, 18 Dec 2021 01:31:30 GMT</pubDate><description>Althea is announcing a new partnership with 5G zone contributor, Hub Advanced
Networks, to build and expand new broadband networks and support telecom
innovation as part of the Puerto Rico 5G Zone &amp; Blockchain Ignition Lab
initiative. PR5G Zone &amp; Blockchain Ignition Lab is a new, non-profit, Advanced
Innovation Development and Test Lab creating opportunities for individuals,
products, and companies to develop cost-effective, disruptive  global solutions
on the island of Puerto Rico. 


This coll</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>Althea is announcing a new partnership with 5G zone contributor, Hub Advanced Networks, to build and expand new broadband networks and support telecom innovation as part of the Puerto Rico 5G Zone &amp; Blockchain Ignition Lab initiative. PR5G Zone &amp; Blockchain Ignition Lab is a new, non-profit, Advanced Innovation Development and Test Lab creating opportunities for individuals, products, and companies to develop cost-effective, disruptive &nbsp;global solutions on the island of Puerto Rico. <br></p><p>This collaboration focuses not only on improving the resilience of Puerto Rico’s communications infrastructure, but also pioneering innovative approaches to internet access, smart Ag, and LTE networks. This 5G and blockchain research and development initiative will improve the quality of life for the people and businesses of Puerto Rico and extend coverage and affordable opportunities to even the most remote and challenging areas of the island.</p><p>Althea Network’s unique plug-and-play ISP platform utilizes blockchain technology to decouple the service and infrastructure layers of internet delivery, empowering end users to revenue-share by hosting network infrastructure. This is all accomplished in a user-friendly device that requires little to no training for blockchain novices to manage, thereby demystifying blockchain technology.</p><p>Powered by Althea’s Smart Routers and connected to Hub Networks’ vast fiber resources, last mile networks can be built in a flexible and agile way, delivering high broadband speeds and low latency. What’s more, users can choose to earn revenue by adding infrastructure to expand network coverage further. Each Althea Smart Router also features an easy to use blockchain wallet and firmware to meter usage and billing, allowing for the rapid and cost-efficient deployment of large, fast, and economically accessible broadband networks.</p><p>Althea is a leader in open telecom innovation and recently announced the introduction of the world’s first integrated LTE core. By embedding the LTE core directly in the home router, KeyLTE creates a small cell anywhere and enables the rapid and seamless deployment of LTE networks for data, mobile devices and IOT management.</p><p>“Access to connectivity and broadband is essential to business development, education and daily life ,” says Deborah Simpier, CEO and co-founder of Althea. “Althea and Hub Advanced Networks are committed to connecting more people through our work together in Puerto Rico”</p><p>“Althea’s wireless infrastructure expands the <em>geographic</em> reach of our broadband networks, but just as importantly, our unique, <em>no contract</em> billing protocol expands the <em>demographic</em> of people who will have access to fast and affordable broadband.”</p><p>“Althea is excited to work with Hub Advanced Networks and proud to contribute to the success of the Puerto Rico 5G Zone &amp; Blockchain Ignition Lab.”</p><p>About Althea</p><p><a href="http://althea.net/?ref=blog.althea.net">Althea</a> is a new way to access broadband internet that enables growth in the network through a unique system of revenue sharing. Althea was founded in 2017 with the vision to bring the open market and interoperable peering from the data center to the field and empower communities to build multi-stakeholder networks faster and more affordably than legacy telecom models.</p><p>Kenneth Gal: kgal@shinyobjectsinc.com</p><p>######.	######. &nbsp; #####</p><p><br></p><p>About Hub Advanced Networks</p><p>Hub Advanced Networks is an Advanced Telecommunications and Technology company committed to enabling business leaders with the digital infrastructure and reliable connectivity needed to bring innovative services to market in Puerto Rico and the Caribbean.</p><p>Our mission is to make Puerto Rico the main telecommunications hub of the Caribbean Region by providing the most reliable telecommunications infrastructure and technology services.</p><p>-------------------<br></p>]]></content:encoded></item>
<item><title>Althea FAQ</title><link>https://blog.althea.net/altheafaq/</link><guid isPermaLink="true">https://blog.althea.net/altheafaq/</guid><pubDate>Mon, 04 Oct 2021 04:34:55 GMT</pubDate><description>Althea: Frequently Asked Questions
The FAQ for you

We are excited to begin preparations for the Althea blockchain launch! The
Althea blockchain is the future of telecommunications and consumer financial
services. Creating a decentralized, secure, and reliable platform for Althea’s
pay-per-forward bandwidth market.‌

What is Althea?
Why does Althea have a blockchain?
Do I need to know about or own crypto-currency to use Althea?
How does Althea currently operate?
How will Althea operate in the fu</description><dc:creator>Will Moglia, Deborah Simpier</dc:creator><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p><font size="5"><strong>Althea: Frequently Asked Questions</strong></font><br>
<font size="4"><strong>The FAQ for you</strong></font></p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/09/newlogo-1-2.png" class="kg-image" alt="" loading="lazy" width="512" height="197" decoding="async"></figure><p>We are excited to begin preparations for the Althea blockchain launch! The Althea blockchain is the future of telecommunications and consumer financial services. Creating a decentralized, secure, and reliable platform for Althea’s pay-per-forward bandwidth market.‌</p><!--kg-card-begin: html--><p style="padding-left: 40px;"><a href="#whatisalthea">What is Althea?</a><br> 
<a href="#whyblockchain">Why does Althea have a blockchain?</a><br>
<a href="#needtoknow">Do I need to know about or own crypto-currency to use Althea?</a><br>
<a href="#howuoperate">How does Althea currently operate?</a><br>
<a href="#whatfuturelike">How will Althea operate in the future?</a><br>
<a href="#howisinternet">How does the end user experience Althea Internet?</a><br>
<a href="#whyubetter">Why is Althea better than x, y and z?</a><br>
<a href="#how2participate">How can I participate in the Althea Network?</a><br>
<a href="#whohawk">Who is Hawk Networks?</a><br><a href="#how2involve">How can I get involved in the Althea community?</a></p><!--kg-card-end: html--><p></p><p></p><!--kg-card-begin: html--><p><font size="5"><a name="whatisalthea">What is Althea?</a></font></p>
<p style="display: none;">#whatisalthea</p><!--kg-card-end: html--><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/09/Antenna.jpeg" class="kg-image" alt="A black and white logo

Description automatically generated with low confidence" loading="lazy" width="2000" height="1125" decoding="async"></figure><hr><p>Althea is an Internet Service Provider (ISP) platform and blockchain that enables the coordination of multi-stakeholder networks. Althea decouples the service and infrastructure layers of Internet delivery, and coordinates transparent and programmatic revenue sharing. <br></p><p>Using Althea’s platform, networks can be built faster and more economically than ever before.</p><p>Althea’s flexible payment structure opens new markets and supports new entrants into the market, by enabling them to capitalize on underutilized bandwidth and real estate.</p><p><br></p><!--kg-card-begin: html--><p><font size="5"><a name="whyblockchain">Why does Althea have a blockchain?</a></font></p>
<p style="display: none;">#whyblockchain</p> <!--kg-card-end: html--><p>Last mile telecom infrastructure is siloed behind restrictive contracts and agreements that preclude an open bandwidth market. However, at deeper layers of the internet, bandwidth is sold between carriers as a metered commodity. Althea creates an open marketplace: from the data center down to the last mile of internet access. &nbsp;Althea D-LTE (distributed LTE) will allow seamless carrier roaming, without cumbersome roaming agreements, directly to the device in your pocket.<br><br>This open telecom marketplace allows for both new entrants and existing carriers to interoperate and earn revenue. Althea’s multi-stakeholder model solves the friction of accessing revenue from rural, low income, emerging markets, and the complexity of capex and coordination of infrastructure build outs, including 5G and fiber.<br><br>The Althea blockchain is secured by a distributed network of token holders and validators that process transactions. By contrast, centralized payment solutions require permissioned coordination, and are often restricted by bespoke regulation or restrictions.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/1d759e9ce08400bc2e11.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Similar to how the internet has allowed for global, open e-commerce, industry and trade—this borderless, robust and resilient payment layer will open new markets and increase revenue for a diverse group of participants.</p><p>Althea’s telecom blockchain will also open DeFi functionality to telecom carriers and users with <a href="https://www.gravitybridge.net/?ref=blog.althea.net">Gravity, the Ethereum to Cosmos Bridge</a>, where they can seamlessly leverage the liquidity of their networks for additional investment strategies. Because Althea is built using the Cosmos SDK and with Gravity functionality, carriers can also interoperate easily with other Cosmos blockchains using IBC (inter blockchain communication).<br></p><!--kg-card-begin: html--><p><font size="5"><a name="needtoknow">Do I need to know about or own cryptocurrency to use Althea?</a></font></p><!--kg-card-end: html--><p>Althea is easy for anyone to use, even if they don’t know about cryptocurrency. &nbsp;Althea features an intuitive payment portal to add or remove funds, and payments within the network use stable coins, so the value doesn’t fluctuate. &nbsp;A text message alerts users when their balance is low and users can add more funds using the onboard payment system and a debit card.<br><br>Althea participants who earn revenue for forwarding bandwidth or maintaining the network automatically receive payments to their router wallet.<br></p><!--kg-card-begin: html--><p><font size="5"><a name="howuoperate">How does Althea currently operate?</a></font></p><!--kg-card-end: html--><p>Althea’s novel <em>pay-per-forward</em> model operates on the xDai blockchain, representing 70% of xDai’s microtransaction volume over the last year (as of January, 2021). Althea routers seamlessly bridge payments in Ethereum and Dai to the xDai platform.<br></p><!--kg-card-begin: html--><p><font size="5"><a name="whatfuturelike">How will Althea operate in the future?</a></font></p><!--kg-card-end: html--><p>A typical Althea user will use a payment portal to add funds to their account. These will be transparently converted to Dai and, using Althea’s cross-chain Gravity Bridge, will be sent to the Althea blockchain. The Althea blockchain will be secured by a distributed network of token holders and validators that process transactions.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/09/gravity_logo_space.jpg" class="kg-image" alt="" loading="lazy" width="1920" height="1080" decoding="async"></figure><!--kg-card-begin: html--><p><font size="5"><a name="howisinternet">How does the end user experience Althea Internet?</a></font></p><!--kg-card-end: html--><p>Quickly, easily and seamlessly. Althea’s network delivers high-speed broadband to the end user, and &nbsp;Althea’s upcoming distributed LTE service brings seamless carrier roaming to your mobile phone and smart devices, without cumbersome roaming agreements.<br></p><!--kg-card-begin: html--><p><font size="5"><a name="whyubetter">How does Althea improve on services provided by traditional ISPs?</a></font></p><!--kg-card-end: html--><ul><li>Structured as a smart contract on a blockchain, Althea’s innovative model for internet delivery decouples the service layer of the network from the underlying infrastructure, enabling investment into fiber networks in unique and sustainable ways.</li><li>Althea’s pay-per-forward protocol allows a radical new approach to coordinating payments with bandwidth and network routing. This method is radical in its simplicity and efficient enough for near limitless scalability.</li><li>Althea's pre-paid model and always-on Free Tier enable flexible payments for any budget and enable broadband access for more people. </li><li>Hardware agnostic, Althea's platform can be utilized with fiber, LTE, and fixed wireless, enabling networks to grow and carriers to capture markets that were difficult to access. <br></li></ul><!--kg-card-begin: html--><p><font size="5"><a name="how2participate">How can I participate in the Althea Network?</a></font></p><!--kg-card-end: html--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/10/New-Chart-v1-r1.png" class="kg-image" alt="" loading="lazy" width="2000" height="1199" decoding="async"><figcaption>Example of a revenue share and roles in an Althea Network.&nbsp;</figcaption></figure><p>There are four roles in an Althea network:</p><ol><li><em>Bandwidth provider</em>: Bandwidth providers play a passive role by running an <em>Althea Node</em>. They purchase a wholesale internet connection or serve as a <em>middle mile</em> provider and connect to an Althea Network.</li><li><em>Relay</em>: Providing real estate and an Althea node which forwards bandwidth. </li><li><em>Network operator</em>: A network operator gets paid for supporting and installing users (on a daily "uptime" basis) from live routers in the network. This role is supported by the Network Operations Center. (OSHA approved picture of installer)</li><li><em>Network Operations Center</em>: A Network Operations Center (NOC) is run by companies who support the operators with technical support, logistics and planning. Currently Althea’s parent corporation Hawk Networks is the primary NOC, but we anticipate an ecosystem to grow.**</li></ol><!--kg-card-begin: html--><p><font size="5"><a name="whohawk">Who is Hawk Networks?</a></font></p><!--kg-card-end: html--><p>Hawk Networks Inc., is a Delaware corporation that has built the open source core, blockchain bridges and supporting software for Althea. Hawk Networks ensures that its development is supported and that end users can reliably use the system.<br><br>Hawk Networks also operates a Network Operations Center, NOC, that supports the build of new internet networks and forms strategically aligned partnerships.<br><br>While Hawk Networks is the first NOC, other NOCs will form to support additional networks, and large carriers will utilize the underlying protocol and blockchain as well.</p><!--kg-card-begin: html--><p><font size="5"><a name="how2involve">How can I get involved in the Althea community?</a></font></p><!--kg-card-end: html--><p>If you’re feeling social and would like to come chat with us and the rest of the Althea community, you can visit our &nbsp;or our Telegram (need invite link) or <a href="https://discord.gg/hHx7HxcycF">Discord</a> channels.<br><br>If you'd like to read more, you might enjoy a <a href="https://blog.althea.net/">visit to our blog</a>. Feeling social? Find us on <a href="https://facebook.com/altheanetwork">Facebook</a> or <a href="https://instagram.com/altheanet/">Instagram</a>. A little more visual? Visit our <a href="https://youtube.com/channel/UC9B6l5k2NF2Gu_aCRBhe9Gw">YouTube channel</a>.<br><br>Link reference </p><p>Blog:		<a href="https://blog.althea.net/">blog.althea.net</a><br>Twitter:	<a href="https://www.twitter.com/AltheaNetwork?ref=blog.althea.net">twitter.com/AltheaNetwork</a><br>Medium:	<a href="https://www.medium.com/althea-mesh?ref=blog.althea.net">medium.com/althea-mesh</a><br>FB:					<a href="https://www.facebook.com/altheanetwork">facebook.com/altheanetwork</a><br>Instagram: &nbsp;	<a href="https://www.instagram.com/altheanet/?ref=blog.althea.net">instagram.com/altheanet/</a><br>discord:			<a href="https://discord.com/invite/hHx7HxcycF?ref=blog.althea.net">discord.gg/hHx7HxcycF</a><br>Reddit:			<a href="https://www.reddit.com/r/altheamesh/?ref=blog.althea.net">reddit.com/r/altheamesh/</a><br>Youtube:		<a href="https://www.youtube.com/c/AltheaNet?ref=blog.althea.net">youtube.com/c/AltheaNet</a></p>]]></content:encoded></item>
<item><title>Althea Blockchain : Time to Claim for 2019 airdrop!</title><link>https://blog.althea.net/althea/</link><guid isPermaLink="true">https://blog.althea.net/althea/</guid><pubDate>Thu, 16 Sep 2021 01:30:54 GMT</pubDate><description>

Announcing the upcoming Althea blockchain launch! 


We are excited to begin preparations for the Althea blockchain launch! The
Althea blockchain is the future of telecommunications and consumer financial
services. Creating a decentralized, secure, and reliable platform for Althea’s
pay-per-forward bandwidth market.


About the Althea Blockchain:
Last mile telecom infrastructure is siloed behind restrictive contracts and
agreements that preclude an open bandwidth market. However, at deeper lay</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p></p><p><strong><em>Announcing the upcoming Althea blockchain launch! <br></em></strong></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/09/newlogo-1.png" class="kg-image" alt="" loading="lazy" width="512" height="197" decoding="async"></figure><p>We are excited to begin preparations for the Althea blockchain launch! The Althea blockchain is the future of telecommunications and consumer financial services. Creating a decentralized, secure, and reliable platform for Althea’s pay-per-forward bandwidth market.<br></p><h3 id="about-the-althea-blockchain">About the Althea Blockchain:</h3><p>Last mile telecom infrastructure is siloed behind restrictive contracts and agreements that preclude an open bandwidth market. However, at deeper layers of the internet, bandwidth is sold between carriers as a metered commodity. Althea creates an open marketplace: from the data center down to the last mile of internet access. &nbsp;Althea D-LTE (distributed LTE) will allow seamless carrier roaming, without cumbersome roaming agreements, directly to the device in your pocket.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/09/coin-1.png" class="kg-image" alt="" loading="lazy" width="512" height="341" decoding="async"></figure><p>This open telecom marketplace allows for both new entrants and existing carriers to interoperate and earn revenue. Althea’s multi-stakeholder model solves the friction of accessing revenue from rural, low income, emerging markets, and the complexity of capex and coordination of infrastructure build outs, including 5G and fiber.</p><p>The Althea blockchain is secured by a distributed network of token holders and validators that process transactions. By contrast, centralized payment solutions require permissioned coordination, and are often restricted by bespoke regulation or restrictions.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/09/0_ebcji68mbSL0wxzf--1-.png" class="kg-image" alt="" loading="lazy" width="769" height="225" decoding="async"></figure><p>Similar to how the internet has allowed for global, open e-commerce, industry and trade<em>—</em>this borderless, robust and resilient payment layer will open new markets and increase revenue for a diverse group of participants.</p><p>Althea’s telecom blockchain further opens DeFi functionality to telecom carriers with Gravity, the Ethereum to Cosmos Bridge, where they can seamlessly leverage the liquidity of their networks for additional investment strategies. Because Althea is built using the Cosmos SDK and with Gravity functionality, carriers can also interoperate easily with other Cosmos blockchains using IBC (inter blockchain communication).</p><p><em>Interoperable blockchain built for interoperable telecommunications. </em><br><br></p><p>To claim your tokens from the airdrop:</p><ol><li><strong><strong><strong>Visit https://keys.althea.net/ and follow the instructions to create your wallet address</strong></strong></strong></li><li><strong><strong><strong>Copy your wallet address</strong></strong></strong></li><li><strong><strong><strong>Log in to your Republic account and visit</strong><a href="https://republic.co/portfolio/althea?ref=blog.althea.net"><strong> https://republic.co/portfolio/althea</strong></a></strong></strong></li><li><strong><strong><strong>In the field provided, paste your wallet address and submit! [Note: Republic will never ask for your seed phrase. You should store this in a secure, private location and never share it with a third party.]</strong></strong></strong></li><li><strong><strong><strong>Expect an update on your distribution in the coming weeks!</strong></strong></strong></li><li><strong><strong><strong>To modify your address, visit</strong><a href="https://republic.co/portfolio/althea?ref=blog.althea.net"><strong> https://republic.co/portfolio/althea</strong></a><strong> and click the pencil icon next to 'Wallet'</strong></strong></strong><br></li></ol><p>Tokens will be deposited to your public address upon launch of the Althea blockchain. <br></p><p>Questions? Navigate to the FAQ below to learn more.<br></p><p>We look forward to launching the blockchain with the Republic airdrop participants and together changing the future of blockchain and telecommunications! <br><br></p><h2 id="faq">FAQ</h2><h3 id="what-is-the-althea-blockchain"><br>What is the Althea blockchain?</h3><p>The Althea blockchain is the technology powering Althea’s holistic, multi-stakeholder ecosystem. Thanks to this network, Althea can successfully align incentives as a decentralized ISP that empowers communities to build sustainable networks — both quicker and more affordably than any traditional internet service provider. Learn more at www.althea.net<br></p><h3 id="what-is-a-seed-phrase">What is a seed phrase?</h3><p>A seed phrase is an input given to derive a <a href="https://kb.myetherwallet.com/en/getting-started/glossary-of-common-terms/?ref=blog.althea.net">private key</a>. This is often a string of randomly generated words, which you need to use in order to access your tokens at your address.<br></p><h3 id="why-do-i-need-an-address">Why do I need an address?</h3><p>An address is sometimes referred to as the "public key." This is like an email address, or a digital wallet, and you need it because this is what enables you to claim your tokens as a participant of the Althea airdrop. <br></p><h3 id="what-should-i-do-once-i%E2%80%99ve-generated-an-address">What should I do once I’ve generated an address?</h3><p>Once you’ve generated an address, we recommend that you physically write down both your address and seed phrase on a piece of paper. After you’ve written them both down, you will want to input <em>just your address</em> into the Republic page where you will claim your tokens. Important: never share your seed phrase or private key! In the event you lose your seed phrase or private key, your public key/digital wallet may become irrevocably locked, resulting in a &nbsp;total loss of its contents.<br></p><h3 id="where-should-i-store-my-address-and-seed-phrase">Where should I store my address and seed phrase?</h3><p>We encourage you to write these down and put them in a safe place. Copy your address, being sure to “select all” and save to a secure location on your computer.</p><p>The safest and most secure place to store your sensitive seed phrase is offline, off of your computer, and on something physical, like a piece of paper.</p><p>Neither Althea or Republic have access to your address and seed phrase and will not be able to recover them. <br></p><h3 id="what-happens-when-i-refresh-the-address-generator">What happens when I refresh the address generator?</h3><p>Please note that when you refresh the address generator page, you will generate a new public-private key pair. This means that if you leave or refresh the page you will get a new address, and will lose all information from the previously generated address, including the seed phrase. This is because the page generates keys locally on your computer, and does not store anything itself. <br></p><h3 id="when-do-i-need-to-generate-an-address-by">When do I need to generate an address by?</h3><p>You can submit and/or update your address via the Republic page up to the Last Call date. You will be notified of when the Last Call date is set, and reminded beforehand that the Last Call to submit an address is approaching to claim your tokens.<br></p><h3 id="why-can%E2%80%99t-i-check-my-token-balance-yet">Why can’t I check my token balance yet?</h3><p>Once the Althea blockchain launches, you will be able to check your token balance. Until the network is live, it’s not yet possible to check any token balances on-chain. <br></p><h3 id="when-will-the-althea-blockchain-be-ready">When will the Althea blockchain be ready?</h3><p>We’re excited for the Althea blockchain to launch soon! Once the network is live, your token balance will be viewable and your tokens will be locked pending a network-wide governance proposal to activate them. You will need to use a Cosmos capable wallet, like <a href="https://guide.cosmostation.io/web_wallet_en.html?ref=blog.althea.net">Cosmostation</a> or Keplr, to view your token balance. <br><br></p><h3 id="how-do-i-reach-out-with-further-questions">How do I reach out with further questions?</h3><p><a href="mailto:Hello@althea.net">Hello@althea.net</a></p><p>Discord:: &nbsp; &nbsp; &nbsp;discord.gg/hHx7HxcycF</p><h3 id="how-do-i-stay-on-top-of-althea-updates">How do I stay on top of Althea updates?</h3><p>Blog: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; blog.althea.net</p><p>Twitter: &nbsp; &nbsp;	twitter.com/AltheaNetwork</p><p>Discord:: &nbsp; &nbsp; &nbsp;discord.gg/hHx7HxcycF</p><p></p><p>Disclaimer and Limitation of Liability<br>The tokens granted to you through the Althea airdrop are provided ”as is ” and without warranty of any kind, either express or implied. To the fullest extent permitted by law, Althea discards all warranties, express or implied, regarding your use of the tokens. Althea does not warrant that the tokens accessible via the Althea airdrop are free of viruses or any other harmful components. You agree that your use of the wallet and tokens will be at your sole risk. Althea shall have no liability or responsibility for any: (i) user error such as forgotten passwords/seed phrase, defective transactions, or mistyped addresses; (ii) any unauthorized access to an address; (iii) server failure or data loss; (iv) any interruption, viruses, phishing, scamming, brute forcing, or other attacks against the tokens or a wallet. Please be aware that certain jurisdiction legislation does not allow the disclaimer of implied warranties, so the foregoing disclaimers may not apply to you.<br></p><p>To the fullest extent permitted by applicable law: (i) in no event will Althea be liable for any indirect, special, incidental, consequential, or exemplary damages of any kind (including, but not limited to, where related to loss of revenue, income or profits, loss of use or data, or damages for business interruption) arising out of or in any way related to the sale of the tokens or otherwise related to these terms, regardless of the form of action, whether based in contract, tort (including, but not limited to, simple negligence, whether active, passive or imputed), or any other legal or equitable theory (even if the party has been advised of the possibility of such damages and regardless of whether such damages were foreseeable); and (ii) in no event will Althea’s aggregate liability, whether in contract, warranty, tort (including negligence, whether active, passive or imputed), or other theory, arising out of or relating to these terms exceed the amount paid you for the tokens. The limitations set forth this paragraph will not limit or exclude liability for fraud or intentional misconduct of Althea. Some jurisdictions do not allow the limitation or exclusion of liability for incidental or consequential damages. Accordingly, some of the limitations of this paragraph may not apply to you.</p><p><br></p>]]></content:encoded></item>
<item><title>Gravity Bridge</title><link>https://blog.althea.net/the-gravity-bridge-blockchain/</link><guid isPermaLink="true">https://blog.althea.net/the-gravity-bridge-blockchain/</guid><pubDate>Fri, 20 Aug 2021 18:48:45 GMT</pubDate><description>


Infrastructure is a shared dream for a better tomorrow, built today. It requires
long term thinking, solid engineering, and most of all a shared dream for a
better future.

Althea created Cosmos Gravity Bridge as infrastructure for the Cosmos community.

We are proud to announce Gravity Bridge - an independent and credibly neutral
Cosmos-SDK blockchain providing the entire SDK community with a neutral bridge
to Ethereum and eventually all major EVM chains.

Learn more about the exciting futur</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p><br></p><p>Infrastructure is a shared dream for a better tomorrow, built today. It requires long term thinking, solid engineering, and most of all a shared dream for a better future.</p><p>Althea created Cosmos Gravity Bridge as infrastructure for the Cosmos community.</p><p><strong>We are proud to announce Gravity Bridge</strong> - an independent and credibly neutral Cosmos-SDK blockchain providing the entire SDK community with a neutral bridge to Ethereum and eventually all major EVM chains.<br><br>Learn more about the exciting future at:<br><a href="https://www.gravitybridge.net/post/the-gravity-bridge-blockchain?ref=blog.althea.net">https://www.gravitybridge.net/post/the-gravity-bridge-blockchain</a><br><br></p>]]></content:encoded></item>
<item><title>North Carolina Althea Network wins EPIC grant</title><link>https://blog.althea.net/north-carolina-althea-network-wins-epic-grant/</link><guid isPermaLink="true">https://blog.althea.net/north-carolina-althea-network-wins-epic-grant/</guid><pubDate>Tue, 20 Jul 2021 14:44:52 GMT</pubDate><description>

FOR IMMEDIATE RELEASE
Contact: LaShawn Williamson Wave 7 Communications, LLC
Phone: 877-356-0741 ext. 1012 3125 Kathleen Ave, Suite 229
Email: lashawn@wave7comm.net Greensboro, NC 27408


Wave 7 Communications, LLC is an Internet Service Provider, empowering the rural
community of Enfield, NC to not only become users of their high-speed internet,
but also serve as a key part of how the network expands and grows in their town
through a $154,000 grant awarded to Wave 7 from the Internet Society </description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p></p><p>FOR IMMEDIATE RELEASE<br>Contact: LaShawn Williamson Wave 7 Communications, LLC<br>Phone: 877-356-0741 ext. 1012 3125 Kathleen Ave, Suite 229<br>Email: <a>lashawn@wave7comm.net</a> Greensboro, NC 27408</p><p><br>Wave 7 Communications, LLC is an Internet Service Provider, empowering the rural community of Enfield, NC to not only become users of their high-speed internet, but also serve as a key part of how the network expands and grows in their town through a $154,000 grant awarded to Wave 7 from the Internet Society and Truist. The Expanding Potential in Communities (EPIC) Grant program supports broadband initiatives in the southeastern United States, funded by Truist Financial Corporation’s Truist Cares* initiative, a $50 million philanthropic pledge to help rebuild communities in the company’s markets affected by COVID-19. </p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/07/terry.jpg" class="kg-image" alt="" loading="lazy" width="2000" height="2667" decoding="async"></figure><p><br>Wave 7 Communications was founded in February of 2020. The network was launched in June of 2020 as an answer to the lack of internet access in the rural town of Enfield. Wave 7’s innovative approach partners closely with organizations, businesses, residents and municipalities to locate infrastructure to deploy internet coverage.</p><p><br>“Residents living in rural areas often have limited choices for internet service, which results in slow speeds and a lack of flexible options. Our company is excited to serve the town of Enfield and surrounding areas with faster and more affordable internet. We understand the importance of broadband to the economy, e-Learning, and telehealth. Our goal is to give the town a community-based option for internet service,” said LaShawn Williamson, CEO of Wave 7 Communications.</p><p><br>A local non-profit organization, Community of Hope Center (COHC) has partnered with Wave 7 on this initiative by providing digital literacy classes. COHC will also assist with identifying 25 families who will be the recipients of one year of free-internet service from Wave 7 and receive one Chromebook per household as part of the grant funding.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/07/coh.jpg" class="kg-image" alt="" loading="lazy" width="2000" height="1500" decoding="async"></figure><p><br>As part of Wave 7’s further expansion in the town of Enfield, users will receive the internet via a small antenna on their roof and a smart router using the Althea system, which selects the most affordable, best connection available automatically. Members can control the cost of their service with no contracts. The average speed is 50-70Mbps, with many people receiving 100Mbps, and costs around $50 a month. The Wave 7 network ensures that none of their customers are without internet by providing an “always-on free tier” that delivers access to the basics of the internet at no charge. </p><p><br>For more information or to request a site survey at your location for internet service visit wave7comm.net. </p><p><br>About Wave 7 Communications<br>Wave 7 Communications, LLC (Wave 7) is a minority woman owned, internet service provider founded in February 2020 by LaShawn Williamson. Wave 7 is powered by Althea and provides an innovative mesh network solution to bring low cost, high-speed broadband access. Our mission is to deliver internet services in a sustainable way while greatly improving the overall connectivity of high-speed, secure, and affordable internet service. The goal is not to compete with the incumbent ISPs; however, Wave 7 is committed to filling in the broadband access gap that exists in communities by providing them with an affordable alternative for internet services.</p><p><br>About Althea (www.althea.net)<br>Althea is a new way to access broadband internet that enables growth in the network through a unique system of revenue sharing. Althea was founded in 2017 with the vision to bring the open market and interoperable peering from the data center to the field and empowering communities to build multi-stakeholder networks faster and more affordably than legacy telecom models. </p><p><br>Residents are encouraged to visit www.althea.net/waveseven and pre-register to show their interest.</p>]]></content:encoded></item>
<item><title>How Smart Contracts on Blockchain Can Bring Broadband to All</title><link>https://blog.althea.net/how-smart-contracts-on-blockchain-can-bring-broadband-to-all/</link><guid isPermaLink="true">https://blog.althea.net/how-smart-contracts-on-blockchain-can-bring-broadband-to-all/</guid><pubDate>Sun, 27 Jun 2021 18:34:24 GMT</pubDate><description>Written by Isfandiyar Shaheen
[https://ishaheen10.medium.com/?source=post_page-----17a1e73137e0--------------------------------]
, founder of NetEquity, and shared with permission

The short answer:

 * Smart contracts on blockchain make revenue share contracts possible between
   stakeholders of a broadband network.
 * Revenue share contracts reduce the amount of risk capital required to build
   and operate a broadband network.
 * Reducing dependence on risk capital makes it feasible for stake</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>Written by <a href="https://ishaheen10.medium.com/?source=post_page-----17a1e73137e0--------------------------------">Isfandiyar Shaheen</a>, founder of NetEquity, and shared with permission</p><p><strong><strong>The short answer</strong></strong>:</p><ul><li>Smart contracts on blockchain make revenue share contracts possible between stakeholders of a broadband network.</li><li>Revenue share contracts reduce the amount of risk capital required to build and operate a broadband network.</li><li>Reducing dependence on risk capital makes it feasible for stakeholders to absorb demand risk.</li><li><a href="https://www.linkedin.com/pulse/making-cost-based-pricing-internet-access-feasible-10-shaheen/?ref=blog.althea.net" rel="noopener nofollow">Demand risk reduction</a> makes it possible to deploy broadband networks in underserved areas.</li></ul><p><strong><strong>The longer answer: </strong></strong>Broadband is as essential as electricity or water but is not as widespread. For context, 100% of homes in the U.S. have electricity and water but tens of millions do not have access to <em><em>affordable </em></em>broadband even though demand for broadband clearly exists. The unmet demand for broadband was clearly demonstrated during the COVID-19 induced lockdowns when stories of students doing homework in parking lots outside McDonalds started emerging.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/06/diner.png" class="kg-image" alt="" loading="lazy" width="700" height="454" decoding="async"></figure><p>So what is the fundamental difference between incentives of traditional infrastructure like electricity versus broadband? It boils down to demand risk.</p><blockquote><em><em>Broadband investors assume demand risk when building infrastructure. Electricity or water utility investors assume no demand risk when building infrastructure.</em></em></blockquote><h1 id="economic-incentives-of-broadband-infrastructure-versus-traditional-infrastructure">Economic incentives of broadband infrastructure versus traditional infrastructure</h1><p>To understand why unmet demand for broadband exists, let’s compare the economic incentives of broadband infrastructure with traditional infrastructure.</p><p><strong><strong>1. Revenue generation: </strong></strong>Traditional infrastructure businesses like electric utilities generate revenue by earning a fixed rate of return on assets deployed in a regulated market and not by selling units of electricity. Broadband businesses generate revenue by selling units of data or leasing their infrastructure to other providers in a competitive market.</p><p><strong><strong>2. Profit distribution: </strong></strong>Broadband investors generate 5–10x more profits in dense urban areas versus rural areas. Traditional infrastructure investors are mostly agnostic to population density because they earn a fixed rate of return based on assets deployed. Assets on which traditional infrastructure investors can earn a return is known as Rate Base or Regulated Asset Base.</p><p><strong><strong>3. Performance benchmarks: </strong></strong>Traditional infrastructure investors will keep earning a return so long as their assets remain available for use subject to pre-agreed performance benchmarks like SAIDI (System Average Interruption Duration Index). Broadband investors have no such performance benchmarks because, in theory, broadband businesses operate in a competitive market.</p><p><strong><strong>4. Demand and competition risk: </strong></strong>Broadband investors assume 100% of demand and competition risk whereas traditional infrastructure investors assume negligible competition and demand risk after infrastructure is deployed.</p><blockquote><strong>As a result, broadband infrastructure investors cannot obtain long-term debt financing the way traditional infrastructure investors can.</strong></blockquote><p><strong><strong>5. Investor objective: </strong></strong>Broadband investors aim to deploy the least amount of resources to generate the maximum profit for shareholders. Traditional infrastructure investors aim to deploy the maximum amount of capital so long as Rate Base grows.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/06/chart.png" class="kg-image" alt="" loading="lazy" width="792" height="284" decoding="async"></figure><p><strong><strong>6. Customer pricing: </strong></strong>Traditional infrastructure offers <a href="https://www.linkedin.com/pulse/making-cost-based-pricing-internet-access-feasible-10-shaheen/?ref=blog.althea.net" rel="noopener nofollow">cost-based pricing</a> to its customers because traditional infrastructure investors assume limited demand risk and therefore agree to a regulated rate of return. Cost-based pricing, as the name suggests, is price determined by what service delivery actually costs. Under cost-based pricing, the price paid per user should decline as the number of users increases.</p><p>In contrast, broadband infrastructure investors offer value-based pricing to their customers. Value based pricing is the price determined by a customer’s ability to pay for a service. Under value-based pricing there is no incentive to reduce prices other than competition risk. In the charts below, the x-axis represents years of operation and corresponding increase in customers.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/06/0_rUBbN9gSLas4XEyf.png" class="kg-image" alt="" loading="lazy" width="443" height="693" decoding="async"></figure><p>Value-based pricing can work out well for customers in a competitive market. Unfortunately, in many countries, broadband competition risk is mostly theoretical. For example, in the United States, there are over<a href="https://ilsr.org/wp-content/uploads/2020/08/2020_08_Profiles-of-Monopoly.pdf?ref=blog.althea.net" rel="noopener nofollow"> 70 million people</a> who have only one Internet Service Provider (“ISP”) serving them. When ISPs operate as a duopoly there is limited incentive to deliver better service to customers.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/06/mapus.png" class="kg-image" alt="" loading="lazy" width="700" height="383" decoding="async"><figcaption>Source:<a href="https://ilsr.org/wp-content/uploads/2020/08/2020_08_Profiles-of-Monopoly.pdf?ref=blog.althea.net" rel="noopener nofollow"> https://ilsr.org/wp-content/uploads/2020/08/2020_08_Profiles-of-Monopoly.pdf</a></figcaption></figure><p></p><h3 id="what-does-a-smart-contract-for-broadband-infrastructure-look-like">What does a smart contract for broadband infrastructure look like?</h3><p>A smart contract is a computer program or a transaction protocol that needs no external action to execute the terms of a contract. A smart contract for broadband infrastructure uses network traffic data to make programmatic payments to network stakeholders.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/06/0_ebcji68mbSL0wxzf.png" class="kg-image" alt="" loading="lazy" width="769" height="225" decoding="async"></figure><p>An example of a smart contract for telecom and broadband has been built by Althea Networks. To date, Althea has used this system to build 14 broadband networks in underserved areas including one network in Abuja, Nigeria.</p><p>To get Internet service, an Althea user (“User Node”) loads money in their Althea router through a credit/debit card. The Althea router converts this payment to stable digital currency (“stablecoin”) that is pegged to the US dollar.</p><p>This stablecoin follows a price-aware protocol to make payments to Network Stakeholders. Network Stakeholders include neighboring customers (“Relay Node”), middle-mile fiber operators, building owners, cell tower owners, network technicians, capital providers, equipment suppliers, and spectrum owners. See the <a href="https://althea.net/whitepaper?ref=blog.althea.net" rel="noopener nofollow">Althea Whitepaper</a> for more details.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/06/userrelay.png" class="kg-image" alt="" loading="lazy" width="700" height="348" decoding="async"></figure><p>Payments made through the Althea system are programmable, visible to all stakeholders, and auditable on a public blockchain. This level of transparency makes it possible for any Network Stakeholder to join a revenue share smart contract in a trust-minimized way.</p><p>The Althea blockchain is secured by validators holding the Althea governance token (“ALTG”). ALTG token holders earn 10% of transaction fees flowing through a network as compensation for maintaining trust between Network Stakeholders.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/06/altheadash.png" class="kg-image" alt="" loading="lazy" width="529" height="331" decoding="async"><figcaption>Source:<a href="https://althea.net/about?ref=blog.althea.net" rel="noopener nofollow"> https://althea.net/about</a></figcaption></figure><p>Without Althea, a revenue share contract expects a Network Stakeholder to trust an Internet Service Provider (“ISP”) in two ways:</p><ol><li>Honesty with revenue figures</li><li>Compliance with timely payments</li></ol><p>Establishing and maintaining this level of trust is costly and time consuming which is why most ISPs end up signing fixed payment contracts with Network Stakeholders. Per such agreements, an ISP assumes 100% of demand and competition risk which in turn increases the amount of risk capital required to build a network. If this ISP makes a mistake in forecasting demand it will incur financial losses. Fear of losses causes ISP investors to become overly conservative and ignore rural and underserved areas.</p><p>Broadband is a necessity and every human is hungry for it. However, broadband is hungry for infrastructure. That infrastructure is hungry for capital. Unlocking capital requires predictable cash flows, bankable contracts, aligned incentives, and most importantly, trust. Smart contracts on a blockchain make it feasible to maintain trust between stakeholders.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/06/8steps.png" class="kg-image" alt="" loading="lazy" width="700" height="686" decoding="async"></figure><h1 id="how-to-build-a-broadband-network-with-althea">How to build a broadband network with Althea</h1><p><strong><strong>Step 1</strong></strong>: Find a cell tower operator or middle-mile fiber operator (“InfraCo”) willing to enter in a revenue-share smart contract. OPTK Networks in Nebraska is one such InfraCo. OPTK’s fiber network spans over 10,000 miles and is present at several thousand points of presence (“PoPs”). These PoPs can be commercial buildings, cell towers, water towers or similar vertical assets.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/06/optk.png" class="kg-image" alt="" loading="lazy" width="700" height="337" decoding="async"></figure><p><strong><strong>Step 2</strong></strong>: Obtain a list of PoP owners and inquire which of those owners are willing to enter into a revenue share contract.</p><p><strong><strong>Step 3</strong></strong>: Invite private investors or equipment suppliers to fund/contribute Gateway Nodes and User Nodes against a revenue share. A single Gateway Node costs $3,000 and a User Node costs $500 in the U.S. Show private investors/equipment suppliers simple unit economics of a single Gateway Node at 100 users.</p><p><strong><strong>Step 4: </strong></strong>Construct Gateway Nodes at PoPs where the building/tower owner is willing to enter into a revenue-share contract.</p><p><strong><strong>Step 5</strong></strong>: Start marketing to users living within 1–2 miles of a Gateway Node. Encourage users to self-finance User Nodes and achieve bill reductions.</p><p><strong><strong>Step 6: </strong></strong>When a user signs up, send a technician to their home, install equipment and activate service.</p><p>Important to note that, other than marketing expense which also gets capitalized, there are zero operating costs in the above structure.</p><p>A user’s monthly spend on Internet service will depend on data usage. For the average user, this will be $55/month if the user chooses to not pay for the home equipment themselves (see<a href="https://medium.com/althea-mesh/metered-bandwidth-on-althea-e366219d98a6?ref=blog.althea.net" rel="noopener"> Metered Bandwidth by Justin Kilpatrick</a> for more). A single Gateway Node can support at least 100 users. Unit economics of a single Gateway Node are as follows.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/06/revsharebreakdown.png" class="kg-image" alt="" loading="lazy" width="700" height="316" decoding="async"></figure><p>To incentivize local ownership of broadband infrastructure, offer Internet users bill reductions if they self-finance a User Node. A user’s bill reduction is determined by the Network Users and Total Capital Deployed. For example, if there are 100 Network Users and 1 Gateway Node, Total Capital Deployed is $53,000. In this example, bill reduction calculation will be as follows:</p><ul><li>User capex as / Total Capital Deployed = $500 / $53,000 = 0.94%</li><li>Monthly fee for Capital Providers at 100 users = $1,500</li><li>Monthly bill reduction = 0.94% X $1,500 = $14.1/month</li><li>Net monthly bill = <strong><strong>$41/month</strong></strong></li></ul><h1 id="estimating-global-potential">Estimating global potential</h1><p>Globally there are 4.96 million cell towers that provide mobile Internet coverage to the entire world, yet there are over 3 billion people who cannot access the Internet. Majority of these cell towers have excess capacity available to host Gateway Nodes at zero marginal cost through a revenue share smart contract.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/06/tower.jpeg" class="kg-image" alt="" loading="lazy" width="355" height="393" decoding="async"></figure><p>At present, <a href="https://www.towerxchange.com/top-towercos/?ref=blog.althea.net" rel="noopener nofollow">over 70% of these cell towers are owned by tower sharing companies or InfraCos</a> while 30% are owned by telecom operators. InfraCos are incentivized to maximize tower utilization and tower cash flows but struggle to find creditworthy ISP customers as tower tenants in underserved locations. InfraCos also have full time network technicians on payroll who can do installations and maintenance.</p><p>If an InfraCo (eg Crown Castle, American Tower, Cellnex et al), a wireless equipment manufacturer (eg Ericsson, Ubiquity, Siklu, Parallel Wireless et al) and a marketing agency entered into a revenue share smart contract, they could build a broadband network without any upfront risk capital. Such networks will be able to operate profitably at much lower prices than a traditional ISP because they will not have to account for equity investor dividends, debt repayments or management salaries. Such networks can make it feasible to serve billions of people who live within a mobile Internet coverage area but are still not online.</p><p>For a further deep dive - check out the latest Althea community call with Asfi, Deborah and Justin - <a href="https://youtu.be/-Q-3-vXtyUE?ref=blog.althea.net">https://youtu.be/-Q-3-vXtyUE</a>. <br></p>]]></content:encoded></item>
<item><title>NetEquity and Althea announce strategic partnership to build broadband networks by using smart contracts</title><link>https://blog.althea.net/netequity-and-althea/</link><guid isPermaLink="true">https://blog.althea.net/netequity-and-althea/</guid><pubDate>Tue, 01 Jun 2021 19:01:39 GMT</pubDate><description>NetEquity Networks and Althea Networks have entered into a strategic partnership to finance, build and operate last-mile broadband networks. Our first project will be in rural Nebraska where we will leverage the fiber optic network owned by OPTK Networks (“OPTK”).</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p><br>NetEquity Networks and Althea Networks have entered into a strategic partnership to finance, build and operate last-mile broadband networks. Our first project will be in rural Nebraska where we will leverage the fiber optic network owned by OPTK Networks (“OPTK”).</p><p>To finance this network, we will use Althea’s system to execute a revenue share smart contract between OPTK, cell tower operators, building owners, investors and network technicians (“Network Stakeholders”). <br></p><figure class="kg-card kg-image-card"><aside class="asset-unavailable" data-source-url="https://lh6.googleusercontent.com/2BlKu7NlYZHoLLSEniqSCIXoKe8YgPbYkJBfCKc7HgVuZZvrzd7FNXc-KUbRNPvzF4-Z85rgJ2qJr0xKDxdkodMNP9OrUw1oFoM5eDPOlIbJPgqdGReVBDPNG_edfs63T25VlJOH">An image in the original article is no longer available from its host.</aside></figure><p><br><br></p><p>Althea’s system offers real-time payments and complete fund flow transparency to Network Stakeholders. This visibility makes a revenue share contract possible in a trust-minimized way. A revenue share contract for broadband matters because it reduces the amount of demand-risk assumed by broadband investors. We believe reducing and eventually eliminating demand risk assumed by broadband investors is required to bridge the digital divide. <br></p><p>“Broadband is an essential utility that should be available for everyone. Legacy models have left rural people behind, but Althea’s multi-stakeholder system empowers communities to build fast and affordable networks in sustainable ways. We are excited to work together with NetEquity and OPTK to bring better broadband to Nebraska, “ said Deborah Simpier, CEO and co-founder of Althea. <br></p><p>In the summer of 2021, Althea and NetEquity will select several areas in Nebraska to build out high speed fixed wireless and LTE networks that will use OPTK’s fiber network for backhaul. Users will receive the Internet via a small antenna on their roof and a smart router, which selects the cheapest, best connection available and pays the bill - all automatically. Customers can expect a download speed of 70-100 Mbps at a cost of $55/month. <br></p><p>“We have developed a deep appreciation of the culture and values found within the Althea community. This community is an inclusive meritocracy, it embraces diversity and is quickly becoming a talent magnet for telecom, broadband and finance professionals. This model can be operationalized and scaled globally to address the needs for fast, affordable broadband for everyone“ said Isfandiyar Shaheen, Founder and CEO of Net Equity.<br><br></p><p>About Althea:</p><p>Althea's unique cooperative vision for the internet brings peering from the data center to the field. Althea has been empowering communities to build multi-stakeholder networks faster and more affordably than legacy telecom models since 2018.</p><p>To date, the Althea platform has helped operationalize 14 networks in the United States and Nigeria.</p><p><a href="http://www.althea.net/?ref=blog.althea.net">www.althea.net</a> @AltheaNetwork <br><br></p><p>About Net Equity:</p><p>NetEquity Networks is an infrastructure sharing start-up based in San Francisco, CA. NetEquity was incorporated in 2018 while its founder was an Entrepreneur in Residence at Facebook Connectivity. NetEquity’s mission is to make high speed Internet access affordable for all within a decade.</p><p><a href="http://www.netequity.net/?ref=blog.althea.net">www.netequity.net</a> @netequity1</p>]]></content:encoded></item>
<item><title>The Gravity well: Pulling DeFi capital to Cosmos</title><link>https://blog.althea.net/the-gravity-well/</link><guid isPermaLink="true">https://blog.althea.net/the-gravity-well/</guid><pubDate>Tue, 18 May 2021 18:43:17 GMT</pubDate><description>Migrating years of infrastructure and onboarding from Ethereum is a hard climb.

Using Gravity, well, it&apos;s as easy as falling.</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p><em>A gravity well is the pull of gravity that a large body in space exerts. The larger the body (the more mass) the more of a gravity well it has. The Sun has a large (or deep) gravity well. Asteroids and small moons have much shallower gravity wells. Anything on a planet or moon is considered to be at the bottom of the gravity well. Entering space from the surface of a planet or moon means climbing out of the gravity well, something that often takes a huge amount of energy. The larger a planet or moon's gravity well is, the more energy it takes to achieve escape velocity and blast a ship off of it.</em></p><p>The Althea team along with other core Cosmos contributors chose the name 'Gravity', the logo, and imagery very intentionally for Gravity Bridge to represent the force drawing utility toward the Cosmos Hub. Gravity DEX, and all other future products coming together under the Gravity umbrella are destined to expand and enrich the utility of the Cosmos Hub and the wider ecosystem, strengthening the pull of Gravity even further.</p><p>The goal is as straightforward as it is ambitious. To build a force as inevitable as gravity. A force that pulls capital to the Cosmos Hub and IBC-enabled chains. You don't do this by forcing people to move their capital. Migrating years of infrastructure and onboarding from Ethereum is a hard climb.</p><p>Using Gravity, well, it's as easy as falling.</p><h2 id="execution-context-sharing">Execution context sharing</h2><p>Gravity Bridge unlocks enormous amounts of currently inaccessible capital on the Ethereum chain by providing a shared execution context on Ethereum, governed by the Cosmos Hub.</p><p><a href="https://eth.wiki/en/fundamentals/design-rationale?ref=blog.althea.net"><em>21000 gas is charged for any transaction as a “base fee”. This covers the cost of an elliptic curve operation to recover the sender address from the signature as well as the disk and bandwidth space of storing the transaction.</em></a><em> -- Ethereum Design Rationale</em></p><p>By using the external consensus of the Cosmos Hub blockchain to package a single Ethereum transaction out of many different users' operations, every operation becomes 21,000 gas cheaper than if it had been run individually.</p><p><br></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/05/Screen-Shot-2021-05-18-at-10.58.19-AM.png" class="kg-image" alt="" loading="lazy" width="622" height="519" decoding="async"></figure><p>We've already seen how Gravity Bridge can perform cheaper ERC20 sends. But Gravity Bridge can also execute batches of arbitrary contract calls. The value of arbitrage opportunities on Ethereum is driven by gas prices. All trades on Ethereum are arbitraged up to the point where the gas cost exceeds the value of the rewards.<br></p><p>Lower gas prices create hundreds of millions of dollars of arbitrage opportunities. This creates more traffic, which raises gas prices, which washes away potential arbitrage profits, eventually resulting in an equilibrium.<br></p><p>So what happens when we slash that cost across the board? Millions of dollars of trade opportunities that were previously unreachable become accessible.<br></p><p>Using the aggregate efficiency of the Gravity Bridge's shared execution context, provided by the Cosmos Hub validator set, this efficiency is possible and accessible to everyone. This creates a favorable situation &nbsp;for participants on either side of the bridge as the extra efficiency allows DeFi to do more.</p><h2 id="minted-rewards"><strong>Minted rewards</strong></h2><p>Gravity Bridge brings unprecedented power to the stakeholders of a Cosmos chain by giving them the ability to <em>mint tokens as a relayer reward</em>, effectively providing a gas subsidy fueled by inflation of the Cosmos chain's native token.</p><p>On its own, using inflation to drive Ethereum traders to the Cosmos side of the bridge is simply an unsustainable growth hacking strategy. But when combined with context sharing it becomes a feedback loop.</p><h2 id="its-as-easy-as-falling"><strong>It's as easy as falling</strong></h2><p>A gravity well is a feedback loop. A star brings in mass, which increases its gravitational pull, which allows it to bring in more mass. The Cosmos Hub has the 'mass' required to generate an enormous feedback loop. Gas subsidies drive more users to access Ethereum DeFi via the Cosmos Hub and Gravity Bridge.<br></p><p>More bridge users drive lower gas costs through execution context sharing. Lower gas costs open up millions of dollars of Ethereum arbitrage opportunities that are only accessible via the Cosmos Hub.<br></p><p>As this loop repeats, the gravity well grows stronger, drawing more users and capital to the Cosmos Hub. Gravity Dex gains volume, becoming a vast marketplace that grows in value as more assets are moved on to it, driving all Cosmos native DeFi, and further enhancing the capital advantages of being on the Hub.<br></p><p>"It's one of the strongest ways to add more utility to the Cosmos Hub," enthuses Tendermint CEO, Peng Zhong. "The interchain Gravity DEX connected to Ethereum via Gravity Bridge will attract new chains to start trading and creating liquidity, traders to start arbitraging, and developers, who now have a new path to start listing their tokens permissionlessly and getting people to invest."<br></p><p>All of this increases the pull of the Cosmos Hub and takes us back to the first step of this virtuous cycle.</p><p><br></p><p></p><h2 id="timelines">Timelines</h2><p><em>Protocol Audit:</em> We are working with Infomal Systems to have a protocol audit complete in early to mid June. </p><p><em>Hub signaling proposal</em>: Submit signaling proposal for Gravity on the Cosmos hub with the audit in early to mid June </p><p><em>Gravity bridge/Althea testnet</em>: The unincentivized testnet will be online with our new changes this week, as we prep for the incentivized testnet. </p><hr><p>Althea has been hard at work making this vision a reality and bringing Gravity to the Cosmos Hub and our own chain.</p><p><br>We believe in building cooperative systems that bring people together for the benefit of every user and we extend that principle beyond the internet and into financial services.</p><p><br>Our dream is to use the Gravity Well to drive enormous capital efficiency for our Althea internet users. Lowering the cost of onboarding and increasing Althea users access to financial services.</p>]]></content:encoded></item>
<item><title>Thoughts on the Interconnection between Communications and Financial Services</title><link>https://blog.althea.net/thoughts-on-the-interconnection-between-communications-and-financial-services/</link><guid isPermaLink="true">https://blog.althea.net/thoughts-on-the-interconnection-between-communications-and-financial-services/</guid><pubDate>Fri, 30 Apr 2021 23:12:27 GMT</pubDate><description>

Financial empowerment and the ownership and choice of communications are the key
pillars to solving the digital divide. Recent numbers from Microsoft
[https://blogs.microsoft.com/on-the-issues/2020/03/05/update-connecting-rural-america/] 
indicate that over forty percent of people in the US do not access the internet
at broadband speeds, a problem that is often relegated to the lack of
infrastructure, making the case that there simply isn’t enough “internet pipes”
to reach everyone. A quick gl</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p></p><p>Financial empowerment and the ownership and choice of communications are the key pillars to solving the digital divide. Recent<a href="https://blogs.microsoft.com/on-the-issues/2020/03/05/update-connecting-rural-america/?ref=blog.althea.net"> numbers from Microsoft</a> indicate that over forty percent of people in the US do not access the internet at broadband speeds, a problem that is often relegated to the lack of infrastructure, making the case that there simply isn’t enough “internet pipes” to reach everyone. A quick glance at the amount of under-served in major urban areas, where there exists a diversity of infrastructure shows the lack of nuance to this hypothesis. Portland, Oregon, for example, recently published a <a href="https://multco.us/municipal-broadband?ref=blog.althea.net">feasibility study</a> that showed that 13% lacked access to broadband and New York City’s <a href="https://www1.nyc.gov/site/sbs/about/rfp-80121p0001-broadband.page?ref=blog.althea.net">request for proposal</a> indicates that 15% of the population have no access to internet at all. This is despite billions of dollars of federal grants &nbsp;and the capital investment of many major telcos. <br></p><p>I have had the unique opportunity over these past few years to interact with both under-served rural and urban communities and have gained a much broader understanding of the extremely nuanced and interconnected problems that plague many Americans and their lack of access to broadband. The key surprise and takeaway was that it is deeply rooted in the lack of access to financial services. <br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/04/sipay.jpg" class="kg-image" alt="" loading="lazy" width="360" height="480" decoding="async"><figcaption>Easily adding funds to an Althea router.</figcaption></figure><p>For many people, we do all of our business online and use banks with ease. We can choose where to put our money, how we want to pay for things, and earn interest or invest. These financial services are empowering things - we can leverage what we have to work for us. But, for many of our neighbors (the FDIC in 2019 reports that 22% or over 60 million people in the US are underbanked or unbanked), they bank in very different ways. They use the grocery, convenience store or Walmart to cash their paychecks, pay expensive fees for pre-paid debit cards or money orders, send money to family and friends with expensive services like Western Union, and never have the opportunity to have ownership, choice, and empowerment of their money. <br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/04/signal-2020-10-17-134003-1.jpg" class="kg-image" alt="" loading="lazy" width="756" height="1008" decoding="async"><figcaption>Building a network in rural North Carolina where the household median income is $22,194.</figcaption></figure><p>With only cash in hand, this can lead to difficulty in paying for an internet bill. Exchanging cash for money orders or a prepaid debit card is expensive and has to be done in person, making that monthly internet bill even more costly and difficult to stay timely with. This rigidity of a monthly recurring payment, sent often by mail or email, can also pose a hardship for people who may have intermittent income, or work so many hours that it is difficult to take the time to exchange cash. This can lead to falling behind in the monthly internet payment and eventually to &nbsp;“broadband debt” as that bill becomes so large and goes to a collection agency. Those with large amounts of broadband debt may find that they are unable to set up any other internet services without first paying a large bill. This also preludes them from taking advantage of many subsidized programs like Comcast Essentials, which requires a monthly payment of $15 a month AND to be in good standing with Comcast. <br></p><p>We see this divide in cell phone access as well, but what has emerged are flexible payment structures, with cellular carriers seeing the opportunity for market share to the approximately 79 million prepaid subscribers in the US. In fact, “data credits” are bought and sold throughout the world in much the same way, which leads to several unique insights into the interconnection of accessibility of financial services and telecommunications.</p><p>In emerging markets with a larger underbanked population, we can look to the success of M-Pesa, a branchless mobile payment service offering an easy way to transfer money, and pay for goods and services (Lipa na M-Pesa). Further, M-Pesa users can also access the empowering functions of credit and savings, all with a mobile device. M-Pesa started in Kenya in 2007 and is now widespread, with presence in Tanzania, Mozambique, DRC, Lesotho, Ghana, Egypt, Afghanistan and South Africa. In Kenya, this has spurred adoption rates, with internet penetration growing substantially year-over-year. This example shows an interconnection of financial empowerment and telecommunications that can be translated into the US market as well.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/04/IMG-20200115-WA0006.jpg" class="kg-image" alt="" loading="lazy" width="809" height="1080" decoding="async"><figcaption>Adding funds with a nearby merchant to an Althea mobile wallet in Abuja, Nigeria.</figcaption></figure><p>The US is currently focused on enabling more broadband access, and, rightly so. Access to broadband improves outcomes in education, healthcare, and is proven to have numerous economic benefits. Broadband access is not just about building more infrastructure, however, we need to build systems that truly empower people to have ownership and choice.</p>]]></content:encoded></item>
<item><title>Gravity Bridge - V2</title><link>https://blog.althea.net/cosmos-gravity-v2/</link><guid isPermaLink="true">https://blog.althea.net/cosmos-gravity-v2/</guid><pubDate>Mon, 29 Mar 2021 18:35:55 GMT</pubDate><description>Althea is excited to announce the completion and test of the first transaction of a Cosmos based token (ALTG) to test ethereum (Goerli) using the second iteration of Althea Gravity, the Cosmos &lt;&gt; Ethereum bridge!</description><dc:creator>Deborah Simpier, Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p></p><p>Althea is excited to announce the completion and test of the first transaction of a Cosmos based token (ALTG) to test Ethereum (Goerli) using the second iteration of Althea Gravity, the Cosmos &lt;&gt; Ethereum bridge! &nbsp;Earlier this year, Althea began testing the Gravity bridge sending Ethereum to Cosmos and back again. This additional functionality of the bridge enables Cosmos native assets and Atoms to be sent to Ethereum addresses and to DEXs like Uniswap, all with significant gas savings.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/03/Screenshot-from-2021-03-29-14-25-54.png" class="kg-image" alt="" loading="lazy" width="1809" height="1291" decoding="async"><figcaption>The first ever Cosmos asset, Althea Governance Token, on an EVM based chain</figcaption></figure><p>Althea’s core principles of open, interoperable telecom systems inform everything we do, including the work on the Gravity bridge. The interoperability between Cosmos chains with IBC and the Gravity bridge's interoperability between Ethereum and erc20 tokens opens new possibilities and market opportunities. In Althea, users currently load up their routers using a debit card and a simple Wyre plugin, seamlessly onboarding liquidity which then routes through a bridge to xdai, where Althea’s router-to-router payments account for over 70% of the volume of micro-transactions of the xdai network. Now, the Gravity bridge will onboard this liquidity through Ethereum to the Althea blockchain and the Cosmos ecosystem empowering the world's bandwidth users to not only have choice and ownership of their internet, but also leverage their liquidity to work for them. <br></p><p>Gravity’s batching enables extremely gas efficient transactions from Ethereum to Cosmos and back again, enabling a variety of exciting DeFi implementations, including the work of <a href="https://sommelier.finance/?ref=blog.althea.net">Sommelier</a> and it’s “coprocessor to Ethereum”. Liquidity Providers (LPs) will be able to use the Sommelier to author and execute complex, and automated transactions, such as portfolio rebalancing, limit orders, batched orders, as well as a host of other features that traders have come to expect from CeFi, but that are not currently available in DeFi.<br></p><p>Justin Kilpatrick, Althea CTO and co-founder, remarks “Gravity is the first bridge efficient enough to *work with* Ethereum DeFi rather than just 'bring it somewhere else'. It's cheaper to do your trades through Gravity than it is to just use Ethereum.”</p><p>Because <a href="https://blog.althea.net/how-gravity-works/">batched Gravity transactions</a> share an execution context they can avoid the base fee that every Ethereum transaction pays to be processed by the network. For the vast majority of DeFi operations the base transaction fee (21,000 gas) makes up nearly half of all gas used.</p><p>With Gravity V2, native Cosmos assets can be bridged to Ethereum, which will make it easy for projects to launch a new blockchain with Starport and sell their tokens on Uniswap. Gravity v2 can also be used to compensate relayers using a chain's native token. No Cosmos chain can print more DAI, but it can obviously mint more of it’s own native token. Subsidizing gas with Gravity V2 could fundamentally change the financial dynamics of using a bridge and allow for fee-free transactions for users.<br></p><p>Gravity will also interact with upcoming Cosmos DEXs like B-Harvest’s Gravity DEX, coming as soon as Q2 this year! <br>The possibilities of Gravity and the multi-chain future are numerous. &nbsp;The open and interoperable future of connectivity and finance is here and we are excited to be contributing to that ecosystem.</p><p>*****</p><p>We have just concluded a series of test nets, with the next upgrade to pre-production and iteration planned for later this week. Incentivized test nets to follow. We had a large number of participants in these early test nets which allowed us to experience different edge cases. </p><p>Check Twitter or Discord for updates.</p><p>Join us on Discord - <a href="https://discord.gg/jnYg8dd?ref=blog.althea.net">https://discord.gg/jnYg8dd</a></p><p>Twitter <a href="https://twitter.com/altheanetwork?lang=en&amp;ref=blog.althea.net">@Altheanetwork</a></p><p></p>]]></content:encoded></item>
<item><title>How Gravity works</title><link>https://blog.althea.net/how-gravity-works/</link><guid isPermaLink="true">https://blog.althea.net/how-gravity-works/</guid><pubDate>Thu, 25 Feb 2021 01:09:17 GMT</pubDate><description>Gravity is a bridge between Ethereum and Cosmos-based blockchains. In this post, I’ll try to document how the whole system works, in an understandable way, at a medium level of detail.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>Gravity is a bridge between Ethereum and Cosmos-based blockchains. In this post, I’ll try to document how the whole system works, in an understandable way, at a medium level of detail.</p><p>First, the high level overview: Gravity lets people transfer tokens from Ethereum to Cosmos and back again by locking up tokens on the Ethereum side, and minting equivalent tokens on the Cosmos side. Unlike many bridges, Gravity is completely non-custodial- you only need to trust in the security of the Cosmos chain, not some third party bridge administrators who could run off with your funds.</p><p>Here's how Gravity can be used:</p><ul><li>You send 25 DAI to the Gravity contract on Ethereum, specifying that your address on Cosmos should receive the DAI.</li><li>Validators on the Cosmos chain see that this has happened and mint 25 DAI on Cosmos for your address.</li><li>Now the DAI can be sent to other accounts on Cosmos, used in Cosmos applications, transferred to other Cosmos chains via IBC, etc.</li><li>To go back to Ethereum, you send the DAI to Gravity module on the Cosmos chain, specifying that your address on Ethereum should receive it.</li><li>The Cosmos validators burn the DAI on the Cosmos chain, and send an Ethereum transaction causing the Gravity.sol contract to send the 25 DAI to your Ethereum address.</li></ul><h2 id="parts-of-gravity">Parts of Gravity</h2><p>Gravity consists of 4 parts: </p><ul><li>An Ethereum contract called Gravity.sol</li><li>The Gravity Cosmos module</li><li>The orchestrator program which is run by Cosmos validators alongside the Cosmos blockchain's code</li><li>A market of relayers, who compete to submit transactions to Ethereum on behalf of the Cosmos validators</li></ul><h3 id="gravity-sol">Gravity.sol</h3><p>Gravity.sol's main function is to lock up ERC20 tokens on Ethereum, so that they can be minted on Cosmos. The tokens locked in Gravity.sol back the tokens on Cosmos.</p><p>The current Cosmos validators control Gravity.sol, in proportion to their validation power on Cosmos. Gravity.sol stores a checkpoint- this corresponds to the active validator set on the Cosmos side at a given moment in time. A checkpoint is a set of addresses and their validation power. The more validation power an address has, the more its vote counts. The methods on Gravity.sol are public, and can be called by any relayer, but they must contain the signatures of 2/3s of the validator set in the current checkpoint.</p><h4 id="updatevalset">updateValset</h4><p>The validator set on Cosmos is always changing, as Cosmos token holders delegate tokens to different validators, changing their power. The Cosmos validators use a method called <code>updateValset</code> on Gravity.sol to update its stored checkpoint to the latest validator set. If a validator does not sign off on an update, or worse, signs a fraudulent update, they can be slashed, losing funds on Cosmos.</p><h4 id="sendtocosmos">sendToCosmos</h4><p>To transfer tokens from Ethereum to Cosmos, a user calls the <code>sendToCosmos</code> method. This method receives a number of ERC20 tokens from the user and locks them in Gravity.sol. It also emits an event which lets the Cosmos validators know that they should mint that number of tokens for the user on the Cosmos side.</p><h4 id="submitbatch">submitBatch</h4><p>Users send tokens on Cosmos to the Gravity module and specify which address on Ethereum should receive them. They also attach a fee to compensate whoever relays their transaction. Tokens are transferred from Cosmos to Ethereum in batches, to save on gas. &nbsp;The Gravity module creates batches of transactions of one type of token, and then the validators sign them. </p><p>Relayers can submit batches to the <code>submitBatch</code> method. Gravity.sol:</p><ul><li>First checks that a batch has signatures from 2/3s of the validator set in the current checkpoint.</li><li>Then checks that the batch has a nonce that is higher than any other batch of the same token type that was already submitted.</li><li>Then sends ERC20 Ethereum transactions transferring the tokens to their destinations. Gravity.sol also sends the fees on the transactions to <code>msg.sender</code>, the relayer.</li></ul><h3 id="the-gravity-cosmos-module-and-the-orchestrator">The Gravity Cosmos module and the orchestrator</h3><p>The Gravity module is a module built on Cosmos SDK. Cosmos blockchains consist of many such modules, being run by in lockstep by their validators. Every validator runs the exact same deterministic logic as every other validator. The validators come to consensus on the state of a key-value store. Individual modules own different parts of this state.</p><p>The Gravity module is responsible for minting Cosmos tokens representing ERC20 tokens on Ethereum. It works closely together with the orchestrator. The orchestrator is a program that runs on every validator, alongside the Cosmos code. Since Cosmos modules on every validator are running the same logic in lockstep, they cannot do things like sign messages or transactions with a validator's unique key. Validators running a chain with the Gravity module installed use the orchestrator to do these things.</p><h4 id="ethereum-oracle">Ethereum oracle</h4><p>The Gravity module must know what is going on on the Ethereum chain. This way it is able to mint tokens on Cosmos for people when they send tokens to the Gravity.sol contract on Ethereum. It also allows it to see when a batch of transactions going from Cosmos to Ethereum has been successfully processed.</p><p>Every validator on a Cosmos chain with the Gravity module must also run an Ethereum full node. The orchestrator on each validator monitors Ethereum events using this full node. There is a parameter called <code>EthBlockDelay</code>. Orchestrators monitor events this far back on the Ethereum chain. This delay is to allow the validators to have confidence that a given event is fully final on the Ethereum chain, and to make sure that every validator has the same view of the chain. When the orchestrator sees an event from the Gravity.sol contract, it puts the event into a Cosmos message, signs it, and broadcasts it to the Cosmos chain.</p><p>The Gravity module receives these messages and keeps track of which validators have voted for each individual Ethereum event. When an event crosses the threshold of 2/3s of the validation power having voted for it, it is considered "observed", and it changes the Cosmos state. </p><p>When a <code>SendToCosmosEvent</code> is observed, the Gravity module mints tokens for the destination address.</p><p>When a <code>TransactionBatchExecutedEvent</code> is observed, the Gravity module eliminates the batch that was executed from the batch pool, and cancels any earlier batches of that token type. More on this process later. </p><h4 id="transaction-batching">Transaction batching</h4><p>Transactions going from Cosmos to Ethereum are put into batches before being sent to the Ethereum chain. This is because it is expensive to process transactions on Ethereum, and batching splits most of the cost up among all transactions in the batch. </p><p>When a user wants to send tokens from Cosmos to an address on Ethereum, they send the tokens to the Gravity module. Gravity deducts the tokens from their account, then puts a transaction in the transaction pool. The transaction pool stores all Cosmos to Ethereum transactions that are not yet in a batch. </p><p>Anyone can send a transaction requesting the Gravity module assemble a batch of a particular token type. This will most likely be done by relayers who wish to relay a batch of tokens for profit. When the Gravity module receives this message, it follows this procedure to assemble the batch:</p><ul><li>Find all transactions for the token</li><li>Choose the 100 transactions with the highest fee and put them in a batch. The number of transactions may not be 1oo in the future. It may be configurable, or even dynamic.</li><li>If there is a batch in the batch pool with a higher sum of fees than the newly assembled batch, discard the new batch. If not, include it in the batch pool. More on this later.</li></ul><p>It then puts the batch into the batch pool. Once a batch is in the batch pool, all the validator's orchestrators make signatures over the batch and submit them in Cosmos messages. Each signature is stored alongside its batch.</p><p>Relayers are continually monitoring the batches in the batch pool. Once a batch has signatures from at least 2/3s of the validator set in the current checkpoint stored by Gravity.sol, it can be submitted to Gravity.sol. Relayers can choose for themselves whether submitting a given batch would be profitable, and submit the ones that are. If the fees included in the batch are higher than the cost of gas to submit it to Ethereum, it is a profitable batch. Of course, this is a very nuanced calculation which takes into account current average gas prices on the Ethereum chain, congestion on the chain, and the exchange rate between that token and Ethereum gas. This is why we have a free market of relayers.</p><p>Once a batch is executed on the Ethereum chain, Gravity.sol emits a <code>TransactionBatchExecutedEvent</code> as detailed above. After <code>EthBlockDelay</code> blocks on Ethereum, the validators submit the event to the Gravity module. When this event is fully observed (as detailed above), the batch is removed from the batch pool, since it is complete. Any batches of the same token with a lower batch nonce are also removed from the batch pool, but their transactions are also put back into the transaction pool. This is because we can be sure that it is impossible to submit them, since their batch nonces are too low. This mechanism allows transactions that were assembled into unprofitable batches to have a chance to make it into a profitable batch.</p><p>As mentioned above, the Gravity module will only assemble a new batch if there are no batches already in the batch pool with a higher sum of fees. This is to prevent the following scenario: If there were many transactions in the transaction pool with an unprofitably low fee, and a few coming in every block with a high fee, each high fee transaction might end up in a batch with a bunch of unprofitable transactions. These batches would not be profitable to submit, and so the profitable transactions would end up in unprofitable batches, and not be submitted.</p><p>By making it so that every new batch must be more profitable than any other batch that is waiting to be submitted, it gives the few profitable transactions that come in every block the chance to build up and form a batch profitable enough to submit.</p><h4 id="validator-set-updates">Validator set updates</h4><p>Validator set updates keep Gravity.sol's knowledge of the validator set on Cosmos current. This is important because Gravity's trust model requires that trusting Gravity.sol is the same as trusting the Cosmos chain running it. A validator set update must be signed by at least 2/3s of the current validator set in the checkpoint stored by Gravity.sol. </p><p>Anyone can send a Cosmos message requesting a validator set update. When this happens, the Gravity module saves a snapshot of the current validator set. The validators then sign this snapshot. Once it has the signatures of 2/3s of the validator set in Gravity.sol's current checkpoint, a relayer can submit it to the Ethereum chain. There are a few subtle points to note:</p><ul><li>The Gravity module does not actually know what the current checkpoint stored by Gravity.sol is. Because of the <code>EthBlockDelay</code>, all of the Gravity module's information about Ethereum is out of date. It is up to relayers to decide whether a validator set update has enough signatures to be submitted.</li><li>There is no reward to relayers for submitting a validator set update. Unlike a transaction batch, there are no fees. This may be fixed in a later update. There are many ways it could be done, on the Cosmos side or the Ethereum side. But for now, the validators of a Cosmos chain running Gravity will likely just set up an altruistic relayer which is responsible for submitting validator set updates.</li><li>Gravity.sol is not a Cosmos light client and it does not have knowledge of the full Cosmos consensus and staking process. It is basically a multisig whose signatories are intended to be the validator set of a particular Cosmos chain. We use some slashing on the Cosmos side to ensure that this is always the case.</li></ul><h3 id="slashing">Slashing</h3><p>Slashing is an important part of Gravity's security. Validators who behave incorrectly on the Cosmos or the Ethereum side of the bridge are slashed on the Cosmos side. This is what links the security of the Gravity bridge to the security of the Cosmos chain it is run on.</p><h4 id="liveness-slashing-for-batches-and-validator-sets">Liveness slashing for batches and validator sets</h4><p>By participating in the Cosmos consensus process, a validator is implicitly stating that all validator set updates and batches produced by that process are correct. If that validator does not sign these validator sets and batches, the validator is not operating correctly. After a grace period, it will be slashed for not signing.</p><h4 id="slashing-for-fake-batches-and-validator-sets">Slashing for fake batches and validator sets</h4><p>It is possible to submit batches and validator sets to the Gravity.sol contract which were never produced by the Cosmos chain, as long as they are signed by &gt;2/3s of the validators in the contract's current checkpoint. To prevent malicious validators from forming a cartel to steal from the bridge with a fake transaction batch or validator set update, Gravity slashes validators whose signatures appear on batches and validator set updates that were never produced by the chain. This is accomplished through an evidence mechanism, where anyone can submit evidence of a signature over a fake batch or valset, and the chain will slash the validator responsible.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/02/gravity_logo_space.jpg" class="kg-image" alt="" loading="lazy" width="1920" height="1080" decoding="async"></figure><p><a href="https://discord.gg/jnYg8dd?ref=blog.althea.net">Join us on Discord!</a> or <a href="https://airtable.com/shr86l8MZB7nLvjkH?ref=blog.althea.net">Sign up Here</a> for Validator Updates.</p><p></p><p></p>]]></content:encoded></item>
<item><title>Althea Testnet #1 Launched!</title><link>https://blog.althea.net/althea-testnet-1-launched/</link><guid isPermaLink="true">https://blog.althea.net/althea-testnet-1-launched/</guid><pubDate>Sat, 13 Feb 2021 22:47:51 GMT</pubDate><description>Today we launched Althea Testnet #1 with more than twenty validators!
A big thank you to everyone who participated and took the time to setup a node. We&apos;re looking forward to a bright future for the Althea blockchain when it&apos;s launched late next month.</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Today we launched Althea Testnet #1 with more than twenty validators!</p><p>A big thank you to everyone who participated and took the time to setup a node. We're looking forward to a bright future for the Althea blockchain when it's launched next month.</p><p>Our goal is to keep this testnet running through multiple upgrades and code changes, all the way through to the Althea Gravity Incentivized Testnet, which will be our last testnet before the launch of the Althea chain. Anyone is welcome to join at any time, simply follow the instructions at <a href="https://github.com/althea-net/althea-chain/blob/main/docs/althea/testnet-1.md?ref=blog.althea.net">github.com/althea-net/althea-chain</a>. </p><h2 id="testing-results-day-0">Testing results: Day 0</h2><p>Our first day of testing revealed several issues. Mainly around how validator set updates are generated and signed.</p><p>Validator set updates are messages that go from Cosmos -&gt; Ethereum to synchronize the validator set in the Gravity Ethereum contract with the changing validator set.</p><p>The Gravity module on the Cosmos side of the bridge will automatically generate a new update every time the validator set power changes more than 1%.</p><p>In our small scale testing this worked perfectly. But as more than 25 validators joined the set validator set updates started being generated every block.</p><p>These extra validator sets are obviously not required, since actual voting power isn't changing. But due to rounding errors involving validator rewards the condition was always tripped.</p><p>Gravity orchestrators, run by the validators. Are responsible for signing these validator set updates and then relaying them to Ethereum. Due to a design oversight the orchestrator process could only sign updates at a maximum speed of one per block.</p><p>If validator sets are generated at a rate of once per block and can only be signed at a rate of once per block, falling behind is just a matter of time.</p><p>One of our testing goals for testnet1 is to check that Gravity slashing works. One of Gravity's slashing conditions is to slash a validator who has left a validator set update unsigned for more than 16 hours.</p><p>Since no one's orchestraor could keep up 16 hours after launch everyone was slashed and the chain halted.</p><p>This is obviously really valuable testing. Informing us of both implemetnation problems and a minor design issue.</p><ul><li>we have re-architected the validator set update signature system to handle up to 100 signatures per block. Allowing validators to easily catch up and keep up.</li><li>we have tweaked the validator set generation condition not to produce spurious validator sets. This fix will need to be revisted in greater detail</li></ul><h3 id="other-fixes-from-day-one">Other fixes from day one</h3><ul><li>Properly play back interleaved events in order: If a deposit and a withdraw occur in the same block they where not brought back to the Cosmos chain in the correct order by the oracle. </li><li>Delegate Ethereum and Cosmos keys where not saved and loaded from the genesis file along with the rest of the Gravity state</li><li>Handle a condtion where event nonces could get out of sync due to an improper state lookup</li><li>Two or three obscure crashing condtions are now handled</li></ul><h3 id="what-s-next">What's next?</h3><p>Now that have these issues fixed we can move on to setting up niceties like a block explorer and web wallets. </p><p>Exciting things are coming to the Althea testnet in the next few weeks. Including the first Gravity tokens sent over IBC and the first Cosmos based asset to ever set foot on Ethereum!</p><p>Learn more about Gravity here - <a href="https://github.com/althea-net/althea-chain?ref=blog.althea.net">https://github.com/althea-net/althea-chain</a></p><p>Chat - <a href="https://discord.gg/CjJwMJdb?ref=blog.althea.net">https://discord.gg/CjJwMJdb</a></p><p></p>]]></content:encoded></item>
<item><title>Announcing the Cosmos Gravity Bridge</title><link>https://blog.althea.net/gravity-bridge/</link><guid isPermaLink="true">https://blog.althea.net/gravity-bridge/</guid><pubDate>Mon, 18 Jan 2021 21:00:43 GMT</pubDate><description>We&apos;re proud to announce the Ethereum-Cosmos bridge, Gravity, which we will to bring to the Cosmos Hub with a governance proposal later this year. </description><dc:creator>Jehan Tremback, Deborah Simpier, Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<ul><li>We're announcing Gravity, an Ethereum-Cosmos bridge designed for the Cosmos Hub</li><li>Gravity is an evolution of Althea Peggy, &nbsp;leaving the 'pegzone' concept behind</li><li>Backed by billions of dollars of Atoms staked on the Cosmos Hub, the Gravity Bridge will be the most secure, efficient, and decentralized cross chain bridge to Ethereum</li></ul><p>We're proud to announce the Ethereum-Cosmos bridge, Gravity, which we will to bring to the Cosmos Hub with a governance proposal later this year. Gravity is an evolution of the Peggy bridge, which we have been working on together with the Interchain Foundation for much of the past year. Gravity is designed specifically for the Cosmos Hub. Gravity is intended to pull as many transactions and as much value as possible into the orbit of the Hub by bridging it directly to Ethereum.</p><p>Gravity is engineered to be exactly as secure as the Cosmos Hub. That is, if you trust the Hub to secure your bridged assets, you can trust Gravity to bridge them. We are working with Informal Systems to prove that this is the case. Since the Hub is backed by billions of dollars of staked Atoms, Gravity will be very secure. Once our governance proposal passes, and Gravity is installed on the Hub, Cosmos Hub validators will directly participate in the operation of the Gravity bridge. Since the Hub is backed by billions of dollars of stake, Gravity will be the most secure bridge to Ethereum in production.</p><p>Gravity is also engineered to be very efficient. The Ethereum contract is highly optimized to use as little gas as possible, and transactions are batched. This results in very cheap and frictionless transactions from Ethereum to Cosmos and back. We believe that this is important to pull as much value onto Cosmos as possible.</p><p>Gravity will be able to bring ERC20 assets from Ethereum into Cosmos, but it will also be able to bring Cosmos assets to Ethereum. $ATOM and every other asset in Cosmos ecosystem will trade on Uniswap and other Ethereum AMMs, bringing a huge amount of liquidity and value to these assets.</p><p>At Althea, efficient and secure Ethereum to Cosmos transactions are very important because it is how our users around the world pay for their internet bandwidth. We've worked very closely with the Interchain Foundation to get to this point. We've already run two testnets, and are looking forward to hosting an incentivized testnet in late Q1 2021. There will be prizes available for validators, relayers, and hackers.</p><p>Althea will be shepherding Gravity through the testing, audit, and implementation process on the Hub. We are committed to playing a long-term roll upgrading, documenting and supporting Gravity over the coming years.</p><p>If you're interested in participating in the testnet as a validator, relayer, or hacker, get in touch at gravity@althea.net, or view the source code at <a href="https://github.com/cosmos/gravity-bridge?ref=blog.althea.net">github.com/cosmos/gravity-bridge</a>.</p>]]></content:encoded></item>
<item><title>Althea in 2020</title><link>https://blog.althea.net/althea-in-2020/</link><guid isPermaLink="true">https://blog.althea.net/althea-in-2020/</guid><pubDate>Mon, 04 Jan 2021 15:38:39 GMT</pubDate><description>2020 has been a banner year for Althea. With enormous progress and a forward looking future.</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>TL;DR</p><ul><li><em>Our original test network grew from a few dozen subscribers in one town, to hundreds of subscribers stretching across 30 linear miles and encompassing 5 towns.</em></li><li><em>Other network operators built networks throughout the US, as we refined the process of planning, deploying and growing networks, and by year’s end we had live networks in six states and Nigeria.</em></li><li><em>Althea’s unique ability to coordinate and incentivize users for hosting hardware enables the coordination and cost of numerous 5G small cells possible. </em></li><li><em>Partnering with <a href="https://www.netequity.net/?ref=blog.althea.net">NetEquity.net</a> we are developing a series of financial products, similar to the financing for solar build outs, that makes user owned Fiber to the Home not only a reality, but a scalable, repeatable process, which funnels an on-going source of capital into gigabit fiber networks. </em></li><li><em>We learned that not only could we build a payment layer that seamlessly on-boarded average internet consumers and transmitted payments to upstream providers in a permissionless, peer-to-peer way, but also that this same system could provide financial freedom to a great number of under-banked people. All of the power of a distributed &nbsp;bandwidth marketplace and home bank in one Althea box. </em></li><li><em>Althea <a href="https://blog.althea.net/building-infrastructure-collaboratively/">partnered with Iqlusion and others in the Cosmos ecosystem</a>, to build the <a href="https://blog.althea.net/tag/peggy/">Peggy bridge</a> and we closed 2020 with a fully functional test net and moving transactions from Ethereum to Cosmos and back again. </em></li><li><em>In the first quarter of 2021, we look forward to the much anticipated launch of the Althea blockchain! The Althea blockchain enables a seamless funnel for capex, that aligns the incentives of users and shareholders. </em></li></ul><figure class="kg-card kg-image-card kg-width-full"><img src="https://blog.althea.net/content/images/2021/01/IMG_20201213_144423.jpg" class="kg-image" alt="" loading="lazy" width="2000" height="1125" decoding="async"></figure><p><br>2020 was quite a year, and one that accelerated the transformation to a digital environment. This change towards distance learning, telehealth and zoom based work also highlighted what many of us working in broadband already knew - The digital divide between those who have access to great internet and those who do not, is actually a gaping chasm. Those who have access to low cost, high quality internet and those who do not is not only about the strands of glass or other infrastructure - in fact 40% of the US doesn’t access the internet at broadband speeds. </p><p>The last mile infrastructure as we know it now is brittle and siloed, making each connection to your home or device a monopoly. Althea imagines a different and better world - the same open marketplace that telecom carriers enjoy at the core of the internet, the IX, brought all the way down to your home or even your mobile device. Your router selects and pays the best upstream provider on a second-by-second basis. This unique cooperative vision also empowers many new entrants to participate and earn revenue for hosting different parts of the infrastructure of the network, enabling a multi-stakeholder model for a network, instead of the centralized and monopolized structure we see today. <br></p><p>This multi-stakeholder model utilizes existing vertical assets and infrastructure, like homes, businesses, or farms, to build these decentralized networks which results in networks that can be built much faster and with less capex than the existing, legacy models. Throughout 2020 we iterated on this core concept with fixed wireless networks. <em>Our original test network grew from a few dozen subscribers in one town, to hundreds of subscribers stretching across 30 linear miles and encompassing 5 towns.</em></p><p><br><em>Other network operators built networks throughout the US, as we refined the process of planning, deploying and growing networks, and by year’s end we had live networks in six states and Nigeria.</em> Althea networks are interconnected and decentralized - providing failover across multiple backhaul connections and seamlessly switching without end user disruption.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/01/image-1.png" class="kg-image" alt="" loading="lazy" width="2000" height="1706" decoding="async"><figcaption>New Althea network in North Carolina</figcaption></figure><p>On Christmas eve 2020 we went live with a network in the desert of SE Oregon, a very remote area with challenging hills and bluffs, proving that Althea can be built quickly and affordably just about anywhere. We have many more network operators looking to start networks in 2021 and are excited about the path to a fully operationalized network deployment process. <br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/01/IMG_20201210_085839.jpg" class="kg-image" alt="" loading="lazy" width="2000" height="1125" decoding="async"><figcaption>New Althea network in Oregon</figcaption></figure><p>The real excitement is seeing the full stack of Althea networks coming to fruition. From fiber run along the middle mile and to the home, then an interconnected fixed wireless, and finally, distributed LTE to the device level. This past year we have laid the foundation, partnering with the University of Washington and the Tacoma Althea network, we began to deploy and test different distributed core infrastructure (<a href="https://open5gs.org/?ref=blog.althea.net">open5gs.org</a>) with the Althea stack, deploying user-owned LTE infrastructure to the home. The right-of-way complexity of deploying large scale 5G networks has been the singular issue to mass 5G roll out. &nbsp;<em>Althea’s unique ability to coordinate and incentivize users for hosting hardware enables the coordination and cost of numerous 5G small cells possible. </em><br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/01/Eoe6gncUYAAES15.jpg" class="kg-image" alt="" loading="lazy" width="969" height="1114" decoding="async"><figcaption>Experimental user owned LTE being installed on a home</figcaption></figure><p>Another important upcoming milestone is user-owned, Althea fiber infrastructure. Partnering with <a href="https://www.netequity.net/?ref=blog.althea.net">NetEquity.net</a> we are very excited to build some of the first user-owned incentivized fiber networks. In fixed wireless Althea networks, users buy $200-$400 worth of antennas and can use this hardware to earn revenue, reducing their cost for bandwidth or earning income. Fiber networks can be built in similar ways, although the initial cost is higher - $1500 - $3000. <em>Partnering with <a href="https://www.netequity.net/?ref=blog.althea.net">NetEquity.net</a> we are developing a series of financial products, similar to the financing for solar build outs, that makes user owned Fiber to the Home not only a reality, but a scalable, repeatable process, which funnels an on-going source of capital into gigabit fiber networks. </em>These dense fiber networks move the middle mile from the legacy telcos to the home, pushing open access, Althea networks from the core to the end user. <br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/01/IMG_20201207_144657-1.jpg" class="kg-image" alt="" loading="lazy" width="2000" height="3556" decoding="async"><figcaption>Trenching copper for a Althea tower</figcaption></figure><p>The Althea decentralized and multi-stakeholder network revolutionizes how bandwidth is bought and sold. This open bandwidth marketplace spans hardware, technology, infrastructure and borders. The Althea blockchain is the only blockchain built for the needs of &nbsp;this robust, extremely reliable global network. <br></p><p>Over the last year, we have rolled out network after network using existing blockchain technology, such as Ethereum and xDai, so that end users can use a debit card to easily buy Ethereum that bridges seamlessly to the stable xdai currency. From these experiences, <em>we learned that not only could we build a payment layer that seamlessly on-boarded average internet consumers and transmitted payments to upstream providers in a permissionless, peer-to-peer way, but also that this same system could provide financial freedom to a great number of under-banked people. </em><br></p><p>The biggest surprise of maintaining and operating an internet network, was how many people were using the corner store for their daily banking activities, and that these same users were loading several hundred dollars into their routers. The Althea blockchain will enable these same users to do things like earn interest and take out a collateralized loan, empowering them with the financial freedom of banking all from their Althea router. <em>All of the power of a distributed &nbsp;bandwidth marketplace and home bank in one Althea box. </em><br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2021/01/EmvwZ6JUcAAVuFq.jpg" class="kg-image" alt="" loading="lazy" width="2000" height="900" decoding="async"><figcaption>Scouting a new tower location for TCN in Portland</figcaption></figure><p>To build this interoperable platform, we needed to build the Althea blockchain on the &nbsp;interoperable blockchain platform, Cosmos. For that, we needed a bridge from the ease of on-boarding and decentralized finance of Ethereum to a lower transaction cost and sovereign Althea blockchain, built on Cosmos. So, we set to work in earnest building the first decentralized Ethereum to Cosmos bridge, Peggy. <em>Althea <a href="https://blog.althea.net/building-infrastructure-collaboratively/">partnered with Iqlusion and others in the Cosmos ecosystem</a>, to build the <a href="https://blog.althea.net/tag/peggy/">Peggy bridge</a> and we closed 2020 with a fully functional test net and moving transactions from Ethereum to Cosmos and back again. </em>From this collaboration, we formed a lasting partnership that will build, maintain, and develop bridges and decentralized finance on the Cosmos platform for years to come.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2021/01/image-2.png" class="kg-image" alt="" loading="lazy" width="2000" height="1125" decoding="async"></figure><p><em>In the first quarter of 2021, we look forward to the much anticipated launch of the Althea blockchain! </em>The Althea token distribution plan focuses on progressive decentralization, ensuring an always-on robustly engineered platform that then progressively decentralizes the ownership of the network. This fairly allocates tokens to the 8400 airdrop participants, early investors, and new token holders and enables an exit to the community over time. <br></p><p>This plan is the elegant solution to funding the capex of network build out and operation, without the untenable debt that legacy telcos carry. The reality is that the legacy telco models do not work for anyone - they take on debt to build large monopolized infrastructure systems with rent that is too high, creating broken systems for users and shareholders alike. <em>The Althea blockchain enables a seamless funnel for capex, that aligns the incentives of users and shareholders. </em><br></p><p>We will also be hosting incentivized test nets, with a “honey pot” of Cosmos’ Atoms in the Peggy bridge for those who participate or who can capture the funds. After testing and auditing we will be navigating existing users to the Althea blockchain. </p><p>Althea, the platform of an open bandwidth marketplace, is ready - we have iterated on the build, operation, and market potential of decentralized networks in the field. In 2021 we will boldly launch the internet infrastructure and payment layer of the future, setting in motion something beyond our team. Myself, Justin, Jehan and the crew at Althea will continue to build tools and support the functionality of the network, but this distributed system will grow into a greater self-sustaining and governed system that will fund and support not only the internet as we know it today, but infrastructure capable of providing faster and more affordable internet for everyone. </p><hr><p><a href="https://unifidao.vc/events/unifi-dao-demo-day?ref=blog.althea.net">Join us for our upcoming Demo Day, presented by UnifiDAO on January 13th! </a></p><p>AMA - Starting your Althea network with Justin Kilpatrick, Deborah Simpier, and introducing Stephen Shumaker - January 20th! </p><p></p><p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; D<a href="https://discord.gg/NbK3Uu3?ref=blog.althea.net">iscord</a> &nbsp;*** <a href="https://twitter.com/AltheaNetwork?ref=blog.althea.net">Twitter</a> *** <a href="https://www.linkedin.com/company/altheanetwork?ref=blog.althea.net">LinkedIn</a></p><figure class="kg-card kg-image-card kg-width-full"><img src="https://blog.althea.net/content/images/2021/01/20201210_160527.jpg" class="kg-image" alt="" loading="lazy" width="2000" height="901" decoding="async"></figure>]]></content:encoded></item>
<item><title>Peggy Dev Update #4</title><link>https://blog.althea.net/peggy-dev-update-4/</link><guid isPermaLink="true">https://blog.althea.net/peggy-dev-update-4/</guid><pubDate>Mon, 21 Dec 2020 19:21:31 GMT</pubDate><description>Lets take a quick walk from Rinkeby to Peggy Testnet #1 and back.</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>We've made enormous progress on the Peggy bridge over the last few weeks. We set a goal to have the bridge production ready in January 2021 and we're on track to meet that incredible target. </p><h3 id="since-our-last-update">Since our last update</h3><p><strong>Stargate upgrade complete</strong></p><p><a href="https://github.com/althea-net/peggy/pull/120?ref=blog.althea.net">30 days and 96 commits later</a> we finished migrating the Peggy module to Stargate.</p><p><strong>Cosmos -&gt; ETH batches functional</strong></p><p>The Peggy system now correctly generates, signs, and relays batches of transactions for arbitrary ERC20 tokens to Ethereum.</p><p><strong>Many many bug fixes</strong></p><p>Using our <a href="https://github.com/althea-net/peggy/runs/1583444423?ref=blog.althea.net">fully automated all up testnets</a> we run a small testnet on every code change. Advancing these tests has allowed us to patch subtle issues very very quickly.</p><p>But no amount of automated testing is a substitute for real production!</p><h2 id="peggy-testnet1">Peggy Testnet1</h2><p>Our second Althea Peggy testnet is live now, with 13 validators live and <a href="https://docs.google.com/document/d/1M3NgtHixfxls9bBdNMFpUTqgZohf4NO-QGamDpcPccQ/edit?usp=drive_web&amp;ouid=103580187742519337919&amp;ref=blog.althea.net">still accepting more</a>. </p><p>Lets take a quick walk from Rinkeby to Peggy Testnet #1 and back.</p><p>Download the Althea Peggy client and Cosmos blockchain software.</p><pre><code>wget https://github.com/althea-net/peggy/releases/download/Testnet1/client
wget https://github.com/althea-net/peggy/releases/download/Testnet1/peggy </code></pre><p>Set them as executable.</p><pre><code>chmod +x client peggy</code></pre><p>Generate a Cosmos blockchain key, be sure to copy <strong>both</strong> the public address and the 24 word backup phrase, you'll need them soon.</p><pre><code>./peggy keys add peggytest</code></pre><p>Now let's send that address 1 ERC20 token From Rinekby to the Althea Peggy Cosmos test chain, this is a long command so you may want to edit it and then paste it into a terminal.</p><p>The provided Ethereum private key has some Rinkeby ETH on it and a few thousand Bitcoin MAXX a ERC20 token we deployed for testing. You are of course free to use any ERC20 deployed on Rinkeby.</p><pre><code class="language-bash">RUST_LOG=info ./client eth-to-cosmos \
        --ethereum-key="0xb1bab011e03a9862664706fc3bbaa1b16651528e5f0e7fbfcbfdd8be302a13e7" \
        --ethereum-rpc="http://peggy-testnet1.althea.zone:8545" \
        --contract-address="0xB411f2158e70414921BEA40bC3001F89F6595F22"\
        --erc20-address="0x3A020A6A407d145de10De0367a767611F1652c06" \
        --amount=1000000000000000000 \
        --cosmos-destination="your cosmos address!"</code></pre><p>Lets query our balance on the Cosmos chain and see those Peggy tokens! You may need to wait about 30-60 seconds for the deposit to process.</p><pre><code>./peggy query bank balances &lt;your cosmos address!&gt; --node tcp://peggy-testnet1.althea.zone:26657</code></pre><p>Congrats you now have some Bitcoin MAXX! Now let's send it back to Rinekby, generate an address with Metamask and make sure your Metamask network is set to Rinkeby.</p><pre><code>
RUST_LOG=info ./client cosmos-to-eth \
        --cosmos-phrase="The Peggy key phrase you saved earlier" \
        --cosmos-rpc="http://peggy-testnet1.althea.zone:1317"  \
        --fees="peggy/0x3A020A6A407d145de10De0367a767611F1652c06" \
        --erc20-address="0x3A020A6A407d145de10De0367a767611F1652c06" \
        --amount=900000000000000000 \
        --eth-destination="&lt;your Metamask address&gt;"</code></pre><p>You should see your tokens in Metamask in about a minute. You can also view them in the <strong>ERC20 transactions </strong>section on Etherescan. Remember that ERC20 deposits are technically calls to a different contract so they don't show on the main view.</p><h3 id="what-s-left-before-production">What's left before production?</h3><p>Before Peggy is ready we need to complete a few more tasks:</p><p><strong>Slashing</strong></p><p>Slashing is at this point well planned out and mostly an implementation task. Proof submission for some conditions may be tricky to finish implementing.</p><p><strong>Tests with full (100 transaction) batches</strong></p><p>Althea Peggy batches transactions from Cosmos to Ethereum to save on gas. This brings the fee to cross the bridge all the way down to where it's equivalent to a simple ERC20 transaction cost on Ethereum.</p><p><strong>Total system audit</strong></p><p>An audit for the Solidity code has been completed, but an audit of the entire Peggy system must of course include the slashing implementation and is therefore waiting on that.</p><h3 id="moving-forward">Moving forward</h3><p>A big thanks to our partners at UniFi DAO for working with us on Peggy development!</p><p>Althea's goal is to launch our blockchain early next year using Peggy to help power real people using crypto to solve their every day problems.</p><figure class="kg-card kg-image-card kg-width-full kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/12/Eo7Rns-U8AAshMy.jpg" class="kg-image" alt="" loading="lazy" width="2000" height="900" decoding="async"><figcaption>Construction team and equipment for an off-grid internet relay in rural Oregon.&nbsp;</figcaption></figure><p></p>]]></content:encoded></item>
<item><title>Peggy Dev update #3</title><link>https://blog.althea.net/peggy-dev-update-3/</link><guid isPermaLink="true">https://blog.althea.net/peggy-dev-update-3/</guid><pubDate>Tue, 27 Oct 2020 23:32:32 GMT</pubDate><description>Crossing the bridge: Ethereum -&gt; Cosmos on Rinkeby!
This Saturday we hosted Peggy BrokenNet #1. Over the course of our rapid 4 hour
test we

 1. Successfully deployed a 10 validator Cosmos blockchain with the Althea-Peggy
    Cosmos module
 2. Successfully deployed the Peggy Ethereum contract
    [https://rinkeby.etherscan.io/address/0x529222Ffa78B5D4d04eaA9D8037c11aAF2Fa2254] 
    to Rinkeby
 3. Successfully bridged ERC20 tokens
    [https://rinkeby.etherscan.io/tx/0x69fc04de904cf29c2301e134ca1</description><dc:creator>Deborah Simpier, Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<h3 id="crossing-the-bridge-ethereum-cosmos-on-rinkeby-">Crossing the bridge: Ethereum -&gt; Cosmos on Rinkeby!</h3><p>This Saturday we hosted Peggy BrokenNet #1. Over the course of our rapid 4 hour test we</p><ol><li>Successfully deployed a 10 validator Cosmos blockchain with the Althea-Peggy Cosmos module</li><li>Successfully deployed the <a href="https://rinkeby.etherscan.io/address/0x529222Ffa78B5D4d04eaA9D8037c11aAF2Fa2254?ref=blog.althea.net">Peggy Ethereum contract</a> to Rinkeby</li><li>Successfully bridged <a href="https://rinkeby.etherscan.io/tx/0x69fc04de904cf29c2301e134ca17ceff8424f9112af6da194152277ff9e09fd7?ref=blog.althea.net">ERC20 tokens</a> from Rinkeby to our Cosmos blockchain.</li></ol><!--kg-card-begin: html--><aside class="asset-unavailable" data-source-url="/contract-deployed.mp4">A video in the original article is no longer available from its host.</aside><!--kg-card-end: html--><p>We also found a couple of bugs that did not reveal themselves in our integration tests.</p><h3 id="validator-state-updates">Validator State Updates</h3><p>We were unable to update the validator set on the Peggy Ethereum contract, because it was deployed with the validator powers stored in the wrong order.</p><p>This means that while the signatures were correct, the sorting was not, and no validator set updates could proceed. This is a trivial problem with the contract deployment script, which grabs and sorts the validator set in order to deploy a ready-to-go Peggy contract pre-loaded with a given chain's validator set.</p><h3 id="oracle-problems">Oracle problems</h3><p>While we managed to relay a couple of ERC20 transactions, the relayers pretty quickly stopped successfully relaying Ethereum events. The problem was related to the number of messages being sent. By default the http library we use to query Ethereum logs only allocates 64k of memory for the response.</p><p>The Ethereum signer component of the Peggy Orchestrator continuously spammed failed validator set updates due to our signature ordering bug. This quickly overwhelmed the request buffer and caused all Ethereum signers to fail to relay events. </p><h3 id="stabilizing-while-developing">Stabilizing While Developing</h3><p>What we're trying to do with the BrokenNet concept is to make testnets smaller and more iterative. Instead of waiting until the module is feature complete before testing it in a production like environment and finding these sorts of issues, we can pull that development forward and test some components while we build others.</p><p>There's not a moment to waste getting Peggy into production and our goal is to do as much in parallel as possible.</p><hr><h2 id="what-s-next">What's Next?</h2><ul><li>Support for transaction batches (Cosmos -&gt; Ethereum transfers). ~2 week ETA</li><li>Upgrade from Launchpad to Stargate. ~3 week ETA</li><li>Genesis file support for chain restarts. ~3 week ETA</li><li>First proper long running Althea Peggy testnet. ~3-4 week ETA</li><li>Slashing conditions and limited auditing. ~6-8 week ETA</li></ul><p>We'd like to thank Interchain and PeggyJV for providing funding and support for this highly accelerated development schedule, our developers <a href="https://github.com/alpe?ref=blog.althea.net">alpe</a>, <a href="https://github.com/jtremback?ref=blog.althea.net">jtremback</a>, and <a href="https://github.com/jkilpatr/?ref=blog.althea.net">jkilpatr</a> who have provided invaluable assistance in meeting this schedule.</p><p>We're looking forward to seeing Peggy ready for production before the end of the year. </p>]]></content:encoded></item>
<item><title>Blockchain bridges vs payment channels</title><link>https://blog.althea.net/blockchain-bridges-vs-payment-channels/</link><guid isPermaLink="true">https://blog.althea.net/blockchain-bridges-vs-payment-channels/</guid><pubDate>Sat, 17 Oct 2020 16:22:03 GMT</pubDate><description>Bridges and payment channels (or “atomic swaps”) are both techniques to move
value and tokens from one blockchain to another (although payment channels also
have many other uses). Both techniques have different tradeoffs and do
fundamentally different things. They are both frequently hyped as providing
cross-chain compatibility, so I wanted to write this piece to explain their
differences.

Just a note on terminology in this piece- when I say “bridges”, I mean bridges
such as the xDai, wBTC, our</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>Bridges and payment channels (or “atomic swaps”) are both techniques to move value and tokens from one blockchain to another (although payment channels also have many other uses). Both techniques have different tradeoffs and do fundamentally different things. They are both frequently hyped as providing cross-chain compatibility, so I wanted to write this piece to explain their differences.<br><br>Just a note on terminology in this piece- when I say “bridges”, I mean bridges such as the xDai, wBTC, our under-development Peggy bridge, or NEAR’s Rainbow bridge. xDai and wBTC are custodial, and Peggy and Rainbow Bridge are trustless, but they work in the same basic way. When I refer to “payment channels”, I’m talking about using stuff like Connext or Interledger to move value between blockchains, although payment channels have many other uses besides cross-chain value transfer. In the context of cross-chain payments, they are also sometimes referred to as “atomic swaps”.<br><br>Let’s review how each of these techniques works.<br></p><h3 id="bridges">Bridges</h3><p>A bridge works by minting tokens on one chain when tokens are locked on another. For example, with Peggy, you send an ERC-20 token (let’s use the Dai stablecoin as an example) to a special Ethereum address, and specify which address on Cosmos should receive it. Your tokens on Ethereum are locked. Within minutes, Peggy mints tokens for you on the Cosmos side. These are not exactly the same token as the token you locked on Ethereum, but can be considered equivalent with some important caveats. We’ll call the token on the Cosmos blockchain “CosDai” for now. But in a user interface, it would simply be referred to as “Dai”, since in most cases the difference won’t matter to the end user.<br><br>You can send the CosDai tokens around on Cosmos and use them in decentralized applications there. CosDai can be sent back to an address on Ethereum by sending them to the Cosmos side of the bridge. The CosDai is then burned, and the same amount of Dai on Ethereum is unlocked. Due to this ability to exchange the synthetic Dai, CosDai, for real Dai on Ethereum, they should trade at the same price and basically be equivalent.<br><br>This is how all the bridges mentioned above work, as well as many others not mentioned. Some, like xDai and wBTC, are custodial, in that there is an administrator or group of administrators who safeguard the tokens. Peggy is considered noncustodial because the only entities that can control the bridge are the validators of the Cosmos chain that the tokens are being transferred to, and their control of the bridge is subject to the same consensus rules as the chain. This means that the bridge is no more or less secure than the chain it bridges to.<br></p><h3 id="payment-channels">Payment channels</h3><p>This method of bridging uses something called a hashlock, which is code running on a blockchain that releases some locked tokens once the pre-image of a hash has been revealed. By lining up several hashlocks on different chains, tokens can be released simultaneously. This enables trustless cross-chain transfers of value because nobody needs to trust that anyone else will hold up their end of the bargain.<br><br>Let’s say that you want to transfer Dai (a dollar-pegged stablecoin on Ethereum) to CosDollar (a different dollar-pegged stablecoin on Cosmos). To do this with channels you first need a counterparty who wants to do the opposite trade. In practice this role would be played by a market-maker type of entity who is getting a fee for providing the liquidity. This counterparty must have an amount of CosDollar equivalent to the amount of Dai that you would like to trade/move. In this example, since they are both stablecoins, this will usually be almost the same number of tokens. We’ll call this counterparty Charlie.<br><br>Now for the move. You lock up your Dai tokens in a hashlock on Ethereum which is set to release them to Charlie once you reveal the pre-image of a certain hash. Charlie now hashlocks her CosDollars on Cosmos, to be released to you <strong>using the same hash</strong>. Once this is done, you can reveal the pre-image of this hash. Once it is submitted to both blockchains, the money will be released. This is also known as an “atomic swap”, since it is atomic- it is not possible to release one of the hashlocks and not the other. You don’t have to worry that Charlie will take your Dai and not give you your CosDollars.<br><br>This example highlights one of the biggest fundamental differences between these two methods of cross-chain value transfer. Notice that you were trading Dai for CosDollars, not a representation of the actual Dai token on Cosmos. If Cosmos does not have a native stablecoin, this whole thing is not possible. This is because payment channel swaps do not issue tokens, while bridges do.<br></p><h2 id="other-details-">Other details:</h2><h3 id="bridge-bridge-theft-attack">Bridge: Bridge theft attack</h3><p>The bridge is locking a token on one side for every token it issues on the other side. This could make it a juicy target. To steal the funds in the bridge, an attacker needs to take over the validator set of the blockchain that controls it. If the market cap of the proof of stake token on that chain is a lot less than the value of the funds locked in the bridge, this could become a real possibility. <br><br>For example, let’s say that Cosmos becomes the best place for people to pay each other in Dai, due to congestion and gas fees on Ethereum. Everyone is locking their Dai in Peggy and moving it around on Cosmos. So much Dai is being locked, that the locked amount is 3x the Cosmos market cap. Mallory, an evil genius, secretly starts buying up ATOM tokens (this is the PoS token of Cosmos and determines who validates the chain). She secretly uses her ATOM supply to put her own validators in control of the Cosmos blockchain. Once she controls 2/3rd of the Cosmos validators, she can use them to submit a transaction to the bridge transferring all the locked Dai to herself. After this happens, there is a huge shitstorm and the value of ATOM falls to 0. Mallory has lost a lot of money on the ATOMs, but she has gained much more from the Dai theft.<br><br>This attack vector is not directly present with a payment channel, simply because there is no locking, and no token issuance. It may still happen though. It is a risk that is present whenever any blockchain secures value which is not its native currency. For example, in the CosDollar example, if the total supply of CosDollars was a lot higher than the market cap of ATOM, it might be possible for Mallory to use the same attack to steal CosDollars.<br><br>Aside: I’m dealing mostly with PoS chains here, but the attack described here works on PoW chains as well. Instead of buying up the PoS token, Mallory would have to buy up enough hashpower to do this attack.<br></p><h3 id="payment-channels-development-complexity">Payment channels: Development complexity</h3><p>Payment channels are quite simple in concept, but they always seem to require a lot of auxiliary development to make them actually work well in the real world. Their use for cross-chain value transfers is no different. Consider the counterparty, Charlie. Who is this? You don’t need to trust her, but you do need to find her. The easiest thing to do is for someone to run one node playing the role of Charlie. This might be the developers of the payment channel protocol. <br><br>This centralized Charlie can’t steal your money, but she can censor your transactions. So this is already more centralized than the bridge or the underlying blockchain.<br><br>One alternative could be some kind of a marketplace for counterparties like Charlie. Someone could help facilitate an exchange either because they want to move tokens the other way, or because they are playing the role of a market maker and providing liquidity for a small fee.<br><br>Again, the design of all this would be pretty complicated and in-depth, and is much more difficult than the basic functioning of the channel. I also glossed over some important details in my example. While Charlie can’t outright steal your money, she can keep in locked in her channel for an amount of time called the “challenge period”. I won’t get into the reasons for this and all the details, but it adds even more complexity.<br></p><h2 id="verdict-bridges-are-more-flexible-if-you-want-that-">Verdict: Bridges are more flexible, if you want that.</h2><p>Bridges let you transact any token across any chain that they are enabled on, but you need to keep in mind that the token you are transacting is not exactly the same as on its native chain. You need to consider the security of the chain you are transacting on as well as the security of the token’s native chain. This becomes even more complicated if the token has been sent across multiple chains (this is entirely possible!).<br><br>Cross chain value transfers with payment channels are necessarily coupled with a market exchange of one token for another, and that reduces their flexibility. They give you no ability to work with a token of your choice on a different chain. However, depending on your philosophy about what blockchains are for, this may not be a downside to you. Some people believe that there should be one token per chain, and that different tokens require different blockchains. In this philosophy, transacting with synthetic tokens minted by a bridge might seem like a bad idea or a security risk, and moving value across chains with a market exchange is the natural way to do it.<br></p>]]></content:encoded></item>
<item><title>Peggy Dev Update #2</title><link>https://blog.althea.net/peggy-dev-update-2/</link><guid isPermaLink="true">https://blog.althea.net/peggy-dev-update-2/</guid><pubDate>Sun, 27 Sep 2020 18:14:45 GMT</pubDate><description>End to end validator set updates + even more efficiency</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>In our first <a href="https://blog.althea.net/peggy-development-update/">Althea Peggy dev update</a> we highlighted the dramatic simplicity and efficiency of our Ethereum contract.</p><p>Think of the contract like a highly tuned engine. It does exactly what it needs to do without a single ounce of wasted metal. But without a car built around it our highly tuned engine is going nowhere extremely fast.</p><p>For this update we have our first end-to-end working bridge flow. Validator set updates are generated, signed, packaged, and submitted to the Althea Peggy Ethereum contract.</p><p>But don't take our word for it, you can automatically build a full Peggy dev environment and run it for yourself, you just need <a href="https://docs.docker.com/desktop/?ref=blog.althea.net">docker</a> and about 15 minutes. </p><pre><code class="language-bash">#!/bin/bash
git clone https://github.com/althea-net/peggy
cd peggy
bash tests/all-up-test.sh</code></pre><p>That's it! We use this same code to run an all up micro-testnet on <a href="https://github.com/althea-net/peggy/runs/1172808526?ref=blog.althea.net">every commit to the Peggy repo</a>. </p><p>This command will </p><ul><li>build from scratch all the Go, Solidity, and Rust code. </li><li>Deploy a Cosmos blockchain with the Peggy module installed</li><li>Deploy an Ethereum blockchain, build and deploy the Peggy contract to that Ethereum blockchain</li><li>Run the Peggy test Orchestrator</li><li>The Orchestrator then bootstraps the Peggy module and the Peggy Ethereum contract by constructing and ferrying the first validator set update between the two chains!</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/09/Screenshot-from-2020-09-27-10-01-30-1.png" class="kg-image" alt="" loading="lazy" width="1916" height="1042" decoding="async"><figcaption>Successful output of the automated test</figcaption></figure><p>I know this already sounds complicated, but the devil is the details. Specifically the details of signatures. Since the contract doesn't wasate a single extra cycle processing, sorting, or ordering it's inputs the Orchestrator has to make sure that everything is in perfect order.</p><p>This process is particularly finicky because it also involves the Peggy Cosmos module, which also has to store and verify signatures.</p><p>For a complete end to end validator set update you to synchronize signature generation and verification in the Cosmos module, Peggy Orchestrator, and of course the contract itself.</p><p>This includes every little detail from the ordering of the validators list down to even the smallest detail of parsing out the signature components and presenting them to the contract independently rather than in the compact form.</p><p>I'm very proud to say this all works now. It's a very important achievement, one of the hardest parts of getting a cross chain bridge working is getting everything talking to each other.</p><hr><p>While validator set updates are the first thing to work end to end we're making rapid progress at building out the Peggy Cosmos module. Here's a short list of things that are ready in the Cosmos module and waiting on end to end integration.</p><ul><li>More complete (but still not final) bootstrapping process</li><li>Various oracle operations (these will mostly be final)</li><li>Transaction batch generation &nbsp;(early version with minimum edge case handling)</li></ul><p>In order to meet our early October brokennet target these existing patches just need to be refined and integrated end-to-end.</p><p>You'll be sending transactions back and forth before Halloween.</p><hr><p>I almost forgot to mention, Peggy Ethereum contract gas costs are down 25% since our last update.</p><p>This is due to two optimizations a<a href="https://github.com/althea-net/peggy/commit/1970c2d499fee41f63cf688a8dd58e5d7fc21a16?ref=blog.althea.net"> community submitted optimization on fee transfer</a>, and a more complex change that <a href="https://github.com/althea-net/peggy/commit/a7812d9b85c90aa3bb4dddeff3ed431dafb14e4e?ref=blog.althea.net">allows for updating the validator set and submitted a transaction batch at the same time</a>.</p><p>By allowing validator set updates and batch submission to operate independently transaction batch fees can pay to keep the validator set updated on active bridges. Even better the total cost is lower since the combined method can share the same signature verifications.</p><p>Crossing the Peggy bridge now costs less than $1 in gas per transaction using a 100 transaction batch @300gwei. Or just 15 cents in gas @50gwei.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2020/09/Screenshot-from-2020-09-27-09-01-27.png" class="kg-image" alt="" loading="lazy" width="1662" height="956" decoding="async"></figure><hr><p>If you want to keep up with Althea's Peggy development be sure to join our next standup and keep track of our past standups on Youtube. </p><p>We keep an up to date playlist with recordings of every bi-weekly Peggy update. In general this is the most up to date source of info about development and what's going on.</p><figure class="kg-card kg-embed-card"><iframe width="612" height="344" src="https://www.youtube.com/embed/videoseries?list=PL1MwlVJloJeyeE23-UmXeIx2NSxs_CV4b" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" loading="lazy" title="Embedded video"></iframe></figure>]]></content:encoded></item>
<item><title>Building Infrastructure Collaboratively</title><link>https://blog.althea.net/building-infrastructure-collaboratively/</link><guid isPermaLink="true">https://blog.althea.net/building-infrastructure-collaboratively/</guid><pubDate>Wed, 16 Sep 2020 18:50:31 GMT</pubDate><description>Althea is excited to announce a partnership with Iqlusion and several Cosmos projects to form a new collaboration focused on the development of bridges, tools, and infrastructure for blockchain projects.</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>Althea is excited to announce a partnership with <a href="https://www.iqlusion.io/?ref=blog.althea.net">Iqlusion</a> and several Cosmos projects to form a new collaboration focused on the development of bridges, tools, and infrastructure for blockchain projects. This new collaboration is part DAO, part consortium, and a joint effort to bring the best dev teams to the table with the resources and management to complete projects in rapid succession. <br></p><p>Althea builds robust infrastructure both in code and products people use every day. We are excited to join this partnership and develop reliable technologies to empower these users. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/09/Screen-Shot-2020-09-16-at-11.30.19-AM.png" class="kg-image" alt="" loading="lazy" width="1254" height="757" decoding="async"><figcaption>Meet the team and learn more about the partnership - https://youtu.be/iTiK_8v2uUg</figcaption></figure><p>This partnership accelerates the progress of key technologies required for the launch of the Althea blockchain. We also look forward to developing blockchain infrastructure for the greater ecosystem. It is this focus on interoperability, robust engineering, and “just works” development that resonates well with our core philosophies.<br></p><p>The consortium is also taking a practical and iterative approach for collaboration, bringing great projects together to build core infrastructure and tools and experimenting with blockchain ecosystem cooperation and incentives in a decentralized way. <br></p><p>Cooperative governance and industry consortiums have, of course, been around for many years, bringing even sometimes adversarial players to the table to build or share industry resources. As we collaborate and build new things, we believe this unique partnership will be well suited to &nbsp;find new ways to adapt and refine these principles specifically for blockchain and other decentralized industries. <br></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2020/09/Screen-Shot-2020-09-16-at-11.21.21-AM.png" class="kg-image" alt="" loading="lazy" width="537" height="393" decoding="async"></figure><p><strong>So, what ARE we building?</strong><br></p><p>Over the next few months our focus is building the ethereum to cosmos bridge, <a href="https://github.com/althea-net/peggy">Peggy</a>, &nbsp;and Chainstarter, a service and tool for blockchains at launch to instantiate new cooperative cross chain applications.<br></p><p>With Peggy, we build the ability to make every Ethereum user a Cosmos user instantly, &nbsp;bringing the value of interoperability, sovereignty, and blinding speed to them. We unlock defi tools without high gas fees! The Peggy bridge gives Althea the ability to use the DAI stable coin as the native transaction token (distinct from the staking token) on the Althea blockchain, which enables Althea to launch the first decentralized blockchain for telecom. <br></p><p>Building from this interoperable eth &lt;&gt; cosmos bridge, will be <a href="https://chainstarter.zone/?ref=blog.althea.net">Chainstarter</a>, a solution for initial distribution and funding for newly launching chains. &nbsp;Using Peggy technology, any new Cosmos chain can launch initial distribution and price discovery via Ethereum’s DeFi ecosystem of automated market makers. It’s an elegant, permissionless solution for chain launch, without the burden of large listing fees.<br></p><p><strong>What’s the timeline?</strong></p><p>With the formation of this consortium and fundraise, we partnered with the amazing team at <a href="https://cosmwasm.com/?ref=blog.althea.net">Confio </a>to greatly accelerate the timeline and are looking to run initial “brokennet” test nets in mid-October and a target official launch in January of 2021 for both Chainstarter and Peggy. <br></p><p><a href="https://chainstarter.zone/?ref=blog.althea.net">To stay in touch with our progress</a>, we hold regular Peggy standup meetings with updates, and you can find us <a href="https://t.me/unificosmos">on telegram</a>. <br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/09/Peggy-Standup--3-2.jpg" class="kg-image" alt="" loading="lazy" width="960" height="540" decoding="async"><figcaption>Sign up here - https://airtable.com/shrpjZDQYQa3Xd5oe</figcaption></figure>]]></content:encoded></item>
<item><title>Contributing to Althea Peggy</title><link>https://blog.althea.net/contributing-to-althea-peggy/</link><guid isPermaLink="true">https://blog.althea.net/contributing-to-althea-peggy/</guid><pubDate>Wed, 12 Aug 2020 16:25:33 GMT</pubDate><description>Good projects are built on good tooling. In the case of the Peggy Cosmos &lt;-&gt;
Ethereum bridge developer tooling is a particularly complex problem. 

If you want to test Peggy end to end you need to build and deploy a full
software stack for two different blockchains. For the experienced this
represents hours of setup work, for the inexperienced this is an unassailable
barrier to contribution.

For this reason we&apos;ve invested a large amount of work in test tooling for Peggy
including an all up inte</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Good projects are built on good tooling. In the case of the Peggy Cosmos &lt;-&gt; Ethereum bridge developer tooling is a particularly complex problem. </p><p>If you want to test Peggy end to end you need to build and deploy a full software stack for two different blockchains. For the experienced this represents hours of setup work, for the inexperienced this is an unassailable barrier to contribution.</p><p>For this reason we've invested a large amount of work in test tooling for Peggy including an all up integration test that can be run on every commit.</p><pre><code class="language-Shell">#!/bin/bash
git clone https://github.com/cosmos/peggy/
cd peggy &amp;&amp; git checkout althea-peggy
bash tests/all-up-test.sh</code></pre><p>This one command will</p><ul><li>Build the Peggy Cosmos module</li><li>Build the Peggy Ethereum contract</li><li>Build the Peggy relayer and validator signer binaries</li><li>Setup a 3 node Cosmos testnet </li><li>Setup an Ethereum testnet</li><li>Deploy the Peggy Ethereum contract</li><li>Run tests across this testnet.</li></ul><p>Right now there isn't too much to test beyond deployment of the components. But as the project progresses we plan on automating every validation we perform so that any developer can have the advantage of an instant testnet.</p><p>To access a working development environment, where the Cosmos and Ethereum chains are already running and ready for you to poke around see the </p><details class="developer-instructions"><summary>developer instructions</summary><pre><code>./tests/build-container.sh     run ./tests/start-chains.sh     switch to a new terminal and run ./tests/run-tests.sh     Or, docker exec -it peggy_test_instance /bin/bash should allow you to access a shell inside the test container  Change the code, and when you want to test it again, restart ./tests/start-chains.sh and run ./tests/run-tests.sh.</code></pre></details>.<p></p><pre><code class="language-Shell">#!/bin/bash
bash ./tests/build-container.sh
bash ./tests/start-chains.sh
#switch to a new terminal and run 
bash ./tests/run-tests.sh
# Or this to access a shell inside the test container
docker exec -it peggy_test_instance /bin/bash 
#Change the code, and when you want to test it again, restart 
bash ./tests/start-chains.sh &amp;&amp; bash ./tests/run-tests.sh.</code></pre><p>We're organizing development in the <a href="https://discord.com/invite/W8trcGV?ref=blog.althea.net">Cosmos Peggy Discord channel</a>, so please hop in and ask for tasks, notify us of open pull requests, or just chat. Code can be found at <a href="ttps://github.com/cosmos/peggy/tree/althea-peggy">github.com/cosmos/peggy</a></p><p>Right now major next steps include</p><ul><li>Relayer logic in Rust</li><li>Transaction batch logic on the Cosmos-sdk side</li><li>Potential optimizations to the Solidity contract using bit-packing to store sigs</li><li>Tests for every case where the Solidity contract should throw</li></ul>]]></content:encoded></item>
<item><title>Peggy dev update #1:</title><link>https://blog.althea.net/peggy-development-update/</link><guid isPermaLink="true">https://blog.althea.net/peggy-development-update/</guid><pubDate>Wed, 12 Aug 2020 16:18:13 GMT</pubDate><description>75% of the cost of your transfer across the bridge is a simple state update in an ERC20 contract. We manage to fit all the hashing and verifications for 125 signatures into 25% of the cost!</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>At the moment of writing Ethereum gas is at a record 300gwei, which requires a staggering sum of $2.40 to send a base Ethereum transaction.</p><p>ERC20 transactions cost around $4.50 at 300gwei.</p><p>At the heart of Althea's design for a &nbsp;Cosmos &lt;-&gt; Ethereum bridge is an ultra efficient Ethereum contract. Built for the dual challenge of high fees and the large validator set of the Cosmos hub.</p><p>The Althea Peggy Ethereum contract can validate a weighted powers vote from the complete set of 125 validators on the Cosmos hub for a cost of $1.20 per Cosmos -&gt; Ethereum ERC20 transfer @ 300gwei. For a total cost of $5.70 per ERC20 transfer.</p><p>Consider for a moment how efficient this is. <em>75% of the cost of your transfer across the bridge is a simple state update in an ERC20 contract. We manage to fit all the hashing and verifications for 125 signatures into 25% of the cost!</em></p><p>We have another two big performance improvements to go! Potentially reducing the bridge to less than 12% of the total ERC20 cost. </p><hr><h2 id="the-optimizations">The Optimizations</h2><p>So how did we do it?</p><p>Our team is uniquely suited for this.</p><p>I worked as a performance engineer on Red Hat’s performance and scale team for two years before leaving to found Althea.</p><p>Jehan Tremback, my co-founder and advisor has been closely involved with Ethereum since it's inception, with a speciality in payment channels.</p><p>Putting our heads together we decided that rather than trying to avoid the problem of weighted powers votes on the chain we should optimize a multisig wallet for large voting sets and frequent updates.</p><ol><li><strong>The validators list is stored as a hash</strong>: Instead of storing the validator, set the contract simply hashes it and stores the hash. Emitting an event on any change, the caller must find the event and present it to the contract. This is a 100X improvement over using a storage object for each validator.</li><li><strong>Validator votes are verified in order of descending power: </strong>Once 66% of the votes are accounted for, signature verifications stop and the action passes. On average this is a 75% reduction in sig operations.</li><li><strong>Transactions are batched</strong>: By sending a batch of 12 - 100 transactions, the cost of verifying the validator votes can be amortized.</li></ol><p>Once deployed this will be the most efficient and, to my current knowledge, the largest scale multisig wallet on Ethereum. </p><p>But don't take my word for it, you can run the tests yourself.</p><pre><code class="language-Bash">#!/bin/bash
git clone https://github.com/cosmos/peggy/
cd peggy &amp;&amp; git checkout althea-peggy &amp;&amp; cd solidity
HUSKY_SKIP_INSTALL=1 npm install
npm run typechain
npm run evm &amp;
npm run tests</code></pre><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2020/08/Screenshot-from-2020-08-12-09-12-25.png" class="kg-image" alt="" loading="lazy" width="2000" height="1593" decoding="async"></figure><p>As you can see <a href="https://github.com/cosmos/peggy/blob/althea-peggy/solidity/test/happy-path.ts?ref=blog.althea.net">here</a>, this test is run against the Cosmos hub validator set as of 7/14/2020. The operation containing the ERC20 transfers is 'submitBatch' which is submitting 100 Cosmos -&gt; Ethereum ERC20 transactions as a single operation.</p><p>Those of you checking my math may note that that my estimate is coming in too high. I ran my numbers using an even 5 million gas for the 100 transaction batch. On the assumption that that the EVM will require more operations to call many ERC20 contracts than the one ERC20 contract it calls for all 100 transactions in this test batch.</p><h2 id="the-peggy-relayer">The Peggy Relayer</h2><p>At this point, active development has moved on from the Ethereum contract.</p><p>In the current state it's possible to manually progress the Peggy Cosmos module state machine and send the resulting validator set updates to the Ethereum contract.</p><p>Current progress is focused on the Peggy Cosmos module and the tooling required to operate it automatically and most importantly robustly. </p><p>When designing Althea's payment system we ran into a lot of reliability problems with Ethereum and Ethereum full nodes [see development updates <a href="https://blog.althea.net/althea-development-update--61--testnet-bandwidth-payments/">#61</a>, <a href="https://blog.althea.net/althea-development-update-70-decentralization-without-compromises/">#70</a>, <a href="https://blog.althea.net/althea-development-update-71-transaction-amnesia/">#71</a> or <a href="https://blog.althea.net/althea-development-update-73-making-payments-stable/">#73</a>].</p><p>Trying to use Ethereum sometimes and using Ethereum all the time are very different problems.</p><p>We're bringing this experience and our battle tested tooling to the Althea Peggy relayer.</p><h2 id="time-line">Time line</h2><ul><li><strong>End of August</strong>: Working relayer tooling, this means working 'valset' updates where the relayer observes the Cosmos chain, produces signatures over the validator set and ferries those to the Ethereum contract.</li><li><strong>End of September</strong>: Working transaction batches, the relayer will be both updating the voting set and ferrying transactions to the test chain</li><li><strong>End of October: </strong>Transaction batch fee market, automated testing of edgecases around bridge failure.</li><li><strong>End of November</strong>: Public testnet</li><li><strong>December-January 2021</strong>: Althea mainnet deployed with Peggy</li><li><strong>2021: </strong><a href="https://github.com/cosmosdevs/atom2021?ref=blog.althea.net">Peggy for the hub as part of Atom 2021</a></li></ul><p>If you would like to contribute, or just keep track of Peggy development join the Peggy channel on the <a href="https://discord.com/invite/W8trcGV?ref=blog.althea.net">Cosmos Discord server</a>!</p>]]></content:encoded></item>
<item><title>Solid foundations for Peggy</title><link>https://blog.althea.net/solid-foundations-for-peggy/</link><guid isPermaLink="true">https://blog.althea.net/solid-foundations-for-peggy/</guid><pubDate>Mon, 20 Jul 2020 16:45:43 GMT</pubDate><description>
this investment will support our work in deploying more decentralized internet networks and the work of interoperability with Ethereum and Cosmos by developing the Peggy bridge.
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>We are excited to announce a recent investment from Interchain Foundation! </p><p>In alignment with Althea's Cosmos based blockchain, this investment will support our work in deploying more decentralized internet networks and the work of interoperability with Ethereum and Cosmos by developing the Peggy bridge.<br></p><p>Cosmos's vision of interoperable blockchains resonates with our core vision of an open and interoperable bandwidth marketplace and we are proud to be a part of the Cosmos' ecosystem.<br></p><p>Althea makes it easy for anyone to add capacity or participate in the network. Althea’s router will always select the fastest and least expensive route on a second-by-second basis. These internet users and bandwidth providers bring a growing user base of everyday people to Cosmos, using crypto to pay for their internet.<br></p><p>Althea has established networks throughout the US and Africa and has seen accelerated growth since the post pandemic world has brought the need for high speed broadband into focus. We are excited to continue this growth trajectory along with Cosmos as we launch our Althea blockchain on Cosmos later this year.</p><p>“Althea is truly aligned with the Cosmos Network ethos to drive sustainability and sovereignty in our economy and society. They are a tangible example of how decentralized networks can improve people’s lives and their contributions to Peggy will be massively useful for the entire ecosystem.” said Billy Rennekamp, Grants Manager of the Interchain Foundation.</p><p>Let’s get to the fun stuff - What are we building and how do you run it?</p><h2 id="what-s-in-a-bridge-anyway">What’s in a bridge anyway?</h2><p>When we say that Peggy is a ‘bridge between Cosmos and Ethereum’ a lot of details get swept under the rug. Exactly what would this bridge be capable of? What parts do we need?</p><p>Major components for Peggy are.</p><ul><li>The Ethereum contract: To lock and unlock the funds on Ethereum</li><li>The relayers: To present data about what’s happening on Ethereum to the Cosmos Zone and vice versa</li><li>The Cosmos module: Determine the state of funds on Ethereum through the relayers + lock and unlock the funds on Cosmos</li><li>The Client: Software run by whoever is using the bridge</li></ul><p>For even a completely centralized Ethereum ↔ Cosmos bridge you need some version of all four of these components.</p><p>To grossly oversimplify a complicated subject all of these components exist somewhere on this scale.<br></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2020/07/Untitled-presentation-4-.png" class="kg-image" alt="" loading="lazy" width="960" height="152" decoding="async"></figure><p>In a centralized system clients simply make their contract calls and place their trust in a single manager or single key. This manager can always steal funds in the bridge.<br></p><p>In a multisig system a group of managers takes the place of a single manager. The multisig membership typically changes infrequently if at all. A multisig vote can always steal funds from the bridge. xDai, WBTC, RSK, and Liquid all work this way.<br></p><p>In a validator trusting system bridge security relies on a DPOS (Delegated proof of stake) validator set. While the bridge itself continues to act effectively as a powers-weighted-voting multisig, DPOS infrastructure allows for a much larger and more frequently changing set of voters to be practical. In addition, validator stake is now implicitly on the line, dishonesty with bridged funds may reduce the value of the validators staked native token. This is the level of security provided by standard IBC and the level of security Althea is targeting.<br></p><p>In a semi-trustful system, the clients trust a system of observers and the threat of slashing stake to prevent the validators from acting dishonestly with the bridge funds, even if a majority attempts to do so. This usually involves slashing on other chains. This is semi-trustful because not every client is observing both chains and submitting slashing proofs but the system depends on <em>someone</em> doing so. This is the level of security targeted by ChainSafe’s ChainBridge<br></p><p>In a trust-less system, the client itself can observe both blockchains in a highly efficient manner and confirm with some sort of succinct proof that funds are being properly handled. You may have heard this described as ‘atomic swaps’. As far as I’m aware there are no systems like this in production due to the extreme difficulty of performing these full verifications efficiently.</p><p>The overall trusting or trustless nature of the bridge depends on its weakest link.</p><p>Currently, different parts of Peggy are in progress at different levels of trust.</p><ul><li>The Ethereum contract: Centralized</li><li>The relayers: Unfinished semi-trustful</li><li>The Cosmos module: Unfinished semi-trustful</li><li>The Client: Validator trusting (meaning a normal Cosmos full node)</li></ul><h2 id="althea-peggy-foundations-for-the-future">Althea Peggy, foundations for the future</h2><p>The plan for Althea Peggy is to</p><ul><li>Sync up all components at the validator trusting level of security</li><li>Provide only bidirectional ERC-20 support (DAI to Cosmos and back for example)</li><li>Get the above into production in a robust, stable, and efficient way by the end of 2020</li></ul><p>This minimalist design lets us do away with laundry lists of subsystems to design and potential vulnerabilities to cover. That way we can focus on the difficult challenge of getting any version of Peggy at all ready for production use.<br></p><p>Our goal is to provide solid foundations for future development. A working system that can be iterated and production-ready code that can be run by people who need it today.<br></p><p>Over the rest of the year, we’ll be making blog posts twice a month taking you through individual components of Althea Peggy in detail. First up we’ll be showing off our highly efficient Peggy Ethereum contract.</p><p>But you don't have to wait for us to try things out, you can run the code today. Visit <a href="https://github.com/cosmos/peggy/tree/althea-peggy?ref=blog.althea.net">the Peggy repo</a> and run 'bash tests/all-up-test.sh'.</p><h2></h2>]]></content:encoded></item>
<item><title>Althea Community Update, Summer 2020</title><link>https://blog.althea.net/community-update-summer-2020/</link><guid isPermaLink="true">https://blog.althea.net/community-update-summer-2020/</guid><pubDate>Mon, 06 Jul 2020 04:43:04 GMT</pubDate><description>On a farm in Oregon, a camera system watches over a herd of goats. The does are
near their time to kid, and the farmer watches over them while on-the-go with
the nearby online cameras. Watching livestock with cameras has become relatively
easy and commonplace in modern, rural life, but what is novel here is the way
this farm gets their internet connection.

This Oregon farm is part of an Althea network, so instead of one, siloed monthly
subscription, the farmer’s Althea router selects the best u</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>On a farm in Oregon, a camera system watches over a herd of goats. The does are near their time to kid, and the farmer watches over them while on-the-go with the nearby online cameras. Watching livestock with cameras has become relatively easy and commonplace in modern, rural life, but what is novel here is the way this farm gets their internet connection.</p><p>This Oregon farm is part of an Althea network, so instead of one, siloed monthly subscription, the farmer’s Althea router selects the best upstream provider on a second-by-second basis, based on his choice of best quality or cost. For this farmer, he doesn’t need low latency for the goat cams to work well, so he sets his Althea router to prefer the more affordable rate. Then, when it’s time for gaming in the evening, he select a preference for "quality" and nearly instantly enjoys a lower latency connection.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/07/bandwidth.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Althea's innovative price aware routing protocol selects the best route based on user preference.&nbsp;</figcaption></figure><p>Most of the neighboring farms in Marshland are part of this same interconnected Althea network, and many of his neighbors earn credit in the form of Dai, a blockchain based stable coin, for hosting relay antennas that connect nearby houses.</p><p>The Althea system is much more affordable to set up than legacy ISPs and can be built faster as well. Recently, in nearby Knappa Oregon, local IT professional, Stephen, started an Althea network in about 4 weeks. For years, the people of Knappa had only slow DSL or satellite internet and when Covid hit, the digital divide became even more of a life threatening obstacle. The school district here estimated that as many as forty percent of the students lacked access to broadband. The disparate population and challenging hilly topography of the area, makes the economics of legacy ISPs difficult to pencil out. Althea’s agile and resilient approach leverages private property to build quickly and affordably. We now have a fiber backhaul online, as well as about a dozen subscribers and key relays with connected neighbors. Knappa residents can now take advantage of fast internet, 50-70Mbps, for about $35/month.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/07/KnappaNetwork.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>New subscribers in Knappa.&nbsp;</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/07/Knappa.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Subscribers in Knappa are getting speeds 10-15 times faster with Althea than the incumbent, legacy ISPs.&nbsp;</figcaption></figure><p>Althea is not just in the Northwest either! We recently celebrated the launch of an Althea network in Enfield, North Carolina, operated by Wave 7 Communications. Wave 7 is bringing high speed, affordable internet access to an area with limited options and 250GB data caps from the incumbent telco. Althea is not only a flexible model great for subscribers, it’s plug-and-play tech that makes it easy for anyone to start and manage their network. And with the launch of our new network tools, management of routers and antennas can all be done remotely.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/07/Avery.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Installing new subscribers in Enfield! www.althea.net/waveseven</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/07/netoptools.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>New network tools help operators manage their networks and revenue.</figcaption></figure><p>We’ve streamlined our process of getting started with networks, with an initial proposal, an online store, and a <a href="https://althea-routers.myshopify.com/collections/deployment-packages/products/mini-mesh?ref=blog.althea.net">pre-configured “mini-mesh” kit </a>to help get people acquainted with the system. We’ve been shipping out quite a few of those lately, and are excited about all these new networks. One of those new networks, <a href="https://www.althea.net/elwell">ElWEll</a>, looks to be live in the coming weeks, providing high speed internet for the city of Watertown, Tennessee and surrounding areas.<br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/07/Minimesh.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Mini-mesh kits ready to ship out to new Althea networks.&nbsp;</figcaption></figure><p>Networks in Tacoma and Denver had the misfortune of getting off the ground just as Covid hit, but are looking forward to installing again now as things begin to open up. The Hilltop area has almost 200 people on the sign-up sheet, waiting to be installed.</p><p>Covid hurt our supply chain and slowed the progress of our Abuja network too, but we are moving forward again, focusing on mobile users. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/07/Abujarelay.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>New relay in Abuja, powered by solar, and overlooking a nearby market.</figcaption></figure><p>We are excited to announce the launch of the new network in Lagos,the largest Nigerian city, and will be working closely with the Auranetisp team as they build out a mobile-focused network throughout the city.</p><p>We are also excited to welcome new Altheahoods in Tucson and Nevada City in the United States and Tema in Ghana. We’ll also be working together with QuillaLabs &amp; Universidad Simón Bolívar to bring affordable connectivity to the Atlantic Departament of Colombia.</p><p>The importance of high quality and affordable internet has been apparent for years, but the pandemic has highlighted just how imperative broadband is. And, until recently, building infrastructure to address the divide has involved years long planning and expensive builds. <a href="https://blog.althea.net/rapid-connectivity-response/">Althea’s agile model</a> means networks can now begin building in weeks, and decentralized ownership and commoditization<strong> </strong>of bandwidth aligns incentives so networks are sustainable and grow organically.</p><p>Ready to start building your own Althea network? Check out our <a href="https://althea.net/getting-started?ref=blog.althea.net">getting started guide</a> here and join us on<a href="https://discord.gg/NbK3Uu3?ref=blog.althea.net"> Discord for further discussion.</a></p>]]></content:encoded></item>
<item><title>Going Where Others Cannot</title><link>https://blog.althea.net/going-the-distance/</link><guid isPermaLink="true">https://blog.althea.net/going-the-distance/</guid><pubDate>Sat, 06 Jun 2020 00:10:26 GMT</pubDate><description>Althea&apos;s core premise is our &quot;neighbour to neighbour, pay-per-forward&quot; model. A model that revolutionizes how internet service is owned, provided and paid for. Why did we reinvent the wheel? What can Althea do that traditional ISPs cannot? </description><dc:creator>Justin Kilpatrick, Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>Althea's core premise is our "neighbour to neighbour, pay-per-forward" model. A model that revolutionizes how internet service is owned, provided and paid for. Why did we reinvent the wheel? What can Althea do that traditional ISPs cannot? </p><p>Let's take a trip to Marshland, OR - nestled between the Columbia river and the hills along the Oregon-Washington border. This gorgeous region is home to tall trees, sweeping farms and stunning river views. However, it is also home to people whose only option to get basic internet is to pay over a $100 per month to both satellite and cell service providers. A hefty price to pay for a crucial necessity.</p><p>The reason traditional methods for high speed internet are not available here is a combination of cost and location. Constructing a big tower is simply too expensive and you can't trench fiber into the dikes holding back the river. Rural areas like these are beyond the reach of traditional ISPs due to such geographic and economic hurdles. </p><p>Urban areas too can have their own share of hurdles - old buildings that can't be rewired, providers with monopoly on the right of way, precluding other solutions from filling the gaps, etc. </p><p><strong>This is the story underlying poor or no internet anywhere you go, be it urban or rural. </strong>The factors contributing may differ but the end result is the same - the standard solutions are simply too inflexible. </p><p>Althea offers an alternative. </p><p>Althea changes this story. &nbsp; </p><p>Althea's combination of low cost hardware and the flexible "neighbour to neighbour, pay-per-forward" model, is not only capable of operating, but thriving in places where traditional providers cannot. </p><p>To see how we accomplish this, let's look at the Althea network currently in use in Marshland as an example. </p><p>Below is the network map of our Marshland backbone link - a seven hop load balancing link between two gateways, constructed from home to home using low cost antennas. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/06/signal-attachment-2020-05-26-172259_002.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Backbone link, Marshland OR</figcaption></figure><p>Our first gateway (blue star on the map) is the antenna at a computer shop in Clatskanie. &nbsp;Our second gateway (yellow star on the map) is the antenna at a greenhouse in Marshland. </p><p>When originally setup, these Althea gateways were islands - each with its own commerical connection, serving different networks and different customers.</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.althea.net/content/images/2020/06/20190217_192323.jpg" width="1697" height="1252" loading="lazy" alt="" decoding="async"></div><div class="kg-gallery-image"><img src="https://blog.althea.net/content/images/2020/06/EUj8eG8U4AEi7bC-2.jpg" width="1536" height="2048" loading="lazy" alt="" decoding="async"></div></div></div><figcaption>Clatskanie gateway(left); Marshland gateway(right)</figcaption></figure><p>With a slew of antennas (the red stars on the map), carefully aimed at each other across the landscape - we have created a bridge that allows traffic to flow back and forth, between these two islands as one unified network. <strong>Internet</strong> <strong>traffic is like water in an Althea network and it flows freely along the path of least resistance</strong>. More gateways, means more paths, more degrees of freedom and more reliability for the whole network. </p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.althea.net/content/images/2020/05/EW47xtlU0AAPMPY.jpg" width="1151" height="2048" loading="lazy" alt="" decoding="async"></div><div class="kg-gallery-image"><img src="https://blog.althea.net/content/images/2020/05/EY5ZpV4UYAAWmpG.jpg" width="2000" height="1125" loading="lazy" alt="" decoding="async"></div><div class="kg-gallery-image"><img src="https://blog.althea.net/content/images/2020/05/EUdZli3UYAAU9-a.jpg" width="1220" height="771" loading="lazy" alt="" decoding="async"></div></div></div><figcaption>Some of the intermediary links along the link</figcaption></figure><p>This bridge not only brings internet to new customers in Marshland but provides load balancing and backup connectivity for our existing users in Clatskanie as well. They silently get the benefits of increased reliability and improved capacity as the network grows and more links are created. The network "grows" stronger. Literally.</p><p>Additionally, this system acts a distributed tower serving the whole region. We can reach almost anywhere in the general Marshland area from at least one of these antennas. The best part? It cost less than $10k to construct. Getting equivalent coverage using traditional offerings would incur around $100k in tower costs. </p><p>Althea brings together the power of high tech innovation and good old fashioned community building. It is about revolutionizing internet service to be a flexible system built by members of the community instead of a rigid system built by someone outside your community. </p><p>In Marshland, Althea goes where others could not. It's proof that local people can be a part of the solution. Building themselves better service rather than waiting for millions of dollars to be poured into stamping an inflexible solution over a local problem.</p><p>I will sign off with a beauty shot of the longest link in the Marshland - Clatskanie network that grazes the tree line and brings connectivity across this beautiful landscape. </p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.althea.net/content/images/2020/06/FB_IMG_1560231934382-2.jpg" width="832" height="1639" loading="lazy" alt="" decoding="async"></div></div></div><figcaption>Beauty shot of the longest link (yet :P) in this network.&nbsp;</figcaption></figure>]]></content:encoded></item>
<item><title>Press Release: Enfield, NC</title><link>https://blog.althea.net/press-release-enfield-nc/</link><guid isPermaLink="true">https://blog.althea.net/press-release-enfield-nc/</guid><pubDate>Thu, 04 Jun 2020 18:47:51 GMT</pubDate><description>Wave 7 New Press Release
FOR IMMEDIATE RELEASE

New Internet Service Provider (ISP) launches in Enfield N.C., offering new way
to access broadband internet.

[Enfield -- June 2nd 2020] Althea [https://althea.org/], a system that enables
communities to build and maintain their own decentralized internet
infrastructure, today announced the upcoming build out of a new network in
Enfield. Wave 7 Communications started in April 2020 is one of the first Althea
networks to launch in the Halifax County </description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<h1 id="wave-7-new-press-release"><strong>Wave 7 New Press Release</strong></h1><p>FOR IMMEDIATE RELEASE</p><p>New Internet Service Provider (ISP) launches in Enfield N.C., offering new way to access broadband internet.</p><p>[Enfield -- June 2nd 2020] <a href="https://althea.org/?ref=blog.althea.net"><u>Althea</u></a>, a system that enables communities to build and maintain their own decentralized internet infrastructure, today announced the upcoming build out of a new network in Enfield. Wave 7 Communications started in April 2020 is one of the first Althea networks to launch in the Halifax County area.</p><p>“<em>Enfield residents and those living in rural areas often have limited choices for internet service, which results in slow speeds and a lack of flexible options,”</em> said LaShawn Williamson, Partner with Wave 7 Communications.</p><p>Wave 7 Communications offers an answer. Users will receive the internet via a small antenna on their roof and a smart router, which selects the cheapest, best connection available and pays the bill - all automatically. Members only pay for what they use, so they can control the cost of their service with no contract. The average speed is 100 Mbps, with costs around $40 month.</p><p>“<em>Our company is excited to serve the town of Enfield and surrounding area with faster and more affordable internet. We understand the importance of broadband to the economy, e-Learning, and telehealth. Our goal is to give the town a community-based option for internet service.” </em>said<em> </em>Avery Williamson, Organizer at Wave 7 Communications.</p><p>Residents are encouraged to visit <u>www.althea.net/waveseven</u> and pre-register to show their interest. When enough pre-registrations have been submitted from any particular area, Wave 7 will begin the process of rolling out services in that neighborhood.</p><p>- Ends -</p><p><br>A<u>bout Wave 7 Communications</u></p><p>Our company's goal is to provide fast, secure, and inexpensive internet service to the local community. It is also to bring economic parity through internet access to communities that do not have the same advantages as cities with broadband availability. Our goal is not to compete with the incumbent ISPs, but offer an affordable alternative to customers.</p><p><br>About the organizers:</p><p><u>Avery Williamson</u></p><p>Avery loves technology and seeks to bring economic parity to rural and undeserved areas where internet access not readily available. He loves his family, church, and his community. In his free time, Avery enjoys traveling and running outdoors. He also loves helping people and seeing them embrace their full potential.</p><p><u>About Althea (</u><a href="http://www.althea.org/?ref=blog.althea.net"><u>www.althea.net</u></a>)</p><p>Althea was founded in 2017 with the mission to empower communities to build and maintain their own community-based internet infrastructure. This is done with technology which enables network routers to pay each other for bandwidth, letting a loosely affiliated group of individuals build a sustainable local network while monetizing their roof space.</p><p>Each node in an Althea network competes with its neighbors to provide the cheapest, fastest service to the network. This ensures that networks stay fast and affordable for consumers. Althea has networks in Oregon, Washington, Colorado, Ghana and Nigeria.</p><p><br></p>]]></content:encoded></item>
<item><title>Press Release: Knappa, OR</title><link>https://blog.althea.net/press-release/</link><guid isPermaLink="true">https://blog.althea.net/press-release/</guid><pubDate>Thu, 04 Jun 2020 17:50:35 GMT</pubDate><description>Clatskanie Co-op Launches High Speed Broadband Service in Knappa, OR
FOR IMMEDIATE RELEASE



Clatskanie Co-op is excited to announce that it is ready to expand its Althea
high speed fixed wireless internet service into Knappa in collaboration with
local IT professional Stephen Shumaker. The central connection to fiber, located
at the Knappa Market &amp; Chevron station, is scheduled to go live this Wednesday,
June 3rd! Once operational, they will begin installing antennas to connect
residents who w</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<h1 id="clatskanie-co-op-launches-high-speed-broadband-service-in-knappa-or"><strong>Clatskanie Co-op Launches High Speed Broadband Service in Knappa, OR</strong></h1><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2020/06/loretta.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>FOR IMMEDIATE RELEASE</strong></p><p></p><p>Clatskanie Co-op is excited to announce that it is ready to expand its Althea high speed fixed wireless internet service into Knappa in collaboration with local IT professional Stephen Shumaker. The central connection to fiber, located at the Knappa Market &amp; Chevron station, is scheduled to go live this Wednesday, June 3rd! Once operational, they will begin installing antennas to connect residents who would like to take advantage of this new service. These antennas will connect homes and businesses to the fiber backbone, and to each other, creating a resilient mesh network. Since they launched their pre-registration site about 6 weeks ago, over 100 residents of this very rural area have already pre-registered, demonstrating the demand for a better internet service here.</p><p><a href="http://althea.net/?ref=blog.althea.net" rel="noopener noreferrer">Althea</a> is a system that enables communities to build and maintain their own decentralized internet infrastructure. The Clatskanie Co-op negotiated a wholesale fiber connection after &nbsp;successfully hitting its target of pre-registrations from the community.</p><p><em>“Until now, Knappa residents have been forced to live with slow and unreliable DSL, high latency and expensive satellite internet, or 4G hotspots with extremely small data caps. The pandemic has made it clear that access to affordable, functional internet is an essential utility required to learn, work, receive healthcare and other support services, and stay connected in the modern world. Our community will finally be able to enjoy fast, reliable internet access for an affordable price,”</em> says Shumaker.</p><p>Users will receive internet access via a small antenna on their roof connected to a smart router in their home, which selects the cheapest, best connection available (on a per second basis). Customers will get typical speeds of at least 50 Mbps downstream, 20 Mbps upstream, extremely low latency, no data cap, with typical costs around $40 per month.</p><p>Knappa area residents are encouraged to visit <a href="http://althea.net/knappa?ref=blog.althea.net" rel="noopener noreferrer">althea.net/knappa</a> and pre-register to show their interest. When enough pre-registrations have been submitted from any particular area, the Clatskanie Co-op will start scheduling installations. While launching in Knappa, the service is planned to expand into Svensen and Brownsmead within a few months.</p><p><br></p><p>Stephen Shumaker</p><p><a href="mailto:knappa@althea.net" rel="noopener noreferrer">knappa@althea.net</a></p>]]></content:encoded></item>
<item><title>Press Release: Watertown, TN</title><link>https://blog.althea.net/press-release-watertown-tn/</link><guid isPermaLink="true">https://blog.althea.net/press-release-watertown-tn/</guid><pubDate>Thu, 04 Jun 2020 17:48:27 GMT</pubDate><description>


FOR IMMEDIATE RELEASE:

Elwell Internet Brings Inexpensive, Reliable Internet Access to Wilson County

Watertown,Tennessee,May 29,2020-- Co-Founders of Elwell Internet, Derek Elwell
and Dylan Thraen,have partnered with Althea Networks to provide faster, cheaper,
de-centralized wireless broadband to residents, business owners, and schools in
the Wilson County communities with little or no internet access.

Elwell Internet provides a system that lets routers pay each other for
bandwidth. This a</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/c3241ea642df5f7c365b.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><br></p><p><em><strong>FOR IMMEDIATE RELEASE:</strong></em></p><p><strong>Elwell Internet Brings Inexpensive, Reliable Internet Access to Wilson County</strong></p><p>Watertown,Tennessee,May 29,2020-- Co-Founders of Elwell Internet, Derek Elwell and Dylan Thraen,have partnered with Althea Networks to provide faster, cheaper, de-centralized wireless broadband to residents, business owners, and schools in the Wilson County communities with little or no internet access.</p><p>Elwell Internet provides a system that lets routers pay each other for bandwidth. This allows people to set up decentralized ISPs in their communities. In the Elwell network, instead of one internet service provider at the top collecting monthly payments, many different people can earn money by expanding and strengthening the network.</p><p>Today, internet access networks are owned by centralized, usually monopolistic, internet providers. The ISP owns all the routers and networking hardware, and charges for their use with a monthly fee. In most areas, there are only one or two options. If you don't like their rates or their service, there isn't much you can do about it. Competing with them would involve starting your own ISP, large enough to be a self-sustaining business — which isn't a feasible option for most.<br></p><p>Elwell expects to be open for service this summer. You can go to the Elwell Facebook page to pre-register and to obtain more information.</p><p>The target audience for Elwell are rural communities in outlying areas in Wilson County that have limited access, or no access at all, to high-speed internet. These customers include residences, businesses, and school systems.</p><p>Co-Founder Derek Elwell, long time Wilson County resident and teacher: “This initiative started with the sole purpose of connecting rural students with no internet access to the world wide web. We provide a way to do this affordably with reliability. The fact that this network is a co-op makes it perfectly suited for counties like ours.”</p><p>###</p><h3 id="contact-information-">CONTACT INFORMATION:</h3><h3 id="elwell-llc">Elwell LLC</h3><h3 id="1224-chicken-road">1224 Chicken Road</h3><h3 id="lebanon-tn-37090">Lebanon, TN 37090</h3><h3 id="e-mail-elwellnet-gmail-com">E-Mail: <a href="mailto:elwellnet@gmail.com">elwellnet@gmail.com</a></h3><h3 id="website-althea-net-elwell">Website: althea.net/elwell</h3><h3 id="facebook-facebook-com-search-elwell-">Facebook: facebook.com search “Elwell”<br></h3>]]></content:encoded></item>
<item><title>Althea Development Update #84: Operator tools, Peggy developments, and EIP-55 support</title><link>https://blog.althea.net/althea-development-update-84-eip-55-support-operator-tools-and/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-84-eip-55-support-operator-tools-and/</guid><pubDate>Mon, 25 May 2020 19:31:11 GMT</pubDate><description>A new relay is born, our networks grew 34% between March and April We&apos;ve been
extraordinarily busy working on COVID rapid response
[https://blog.althea.net/rapid-connectivity-response/] and the Peggy
[https://blog.althea.net/defi-enabled-ethereum-bridge-for-cosmos/] Ethereum to Cosmos
bridge.

Operator tools
We&apos;ve been building operator focus tools to help Althea scale. The latest
versions of the Althea firmware
[https://github.com/althea-net/althea-firmware/releases] are tightly integrated
with</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/05/EX7lw_DVcAAUB5j.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>A new relay is born, our networks grew 34% between March and April</figcaption></figure><p> We've been extraordinarily busy working on <a href="https://blog.althea.net/rapid-connectivity-response/">COVID rapid response</a> and the <a href="https://blog.althea.net/defi-enabled-ethereum-bridge-for-cosmos/">Peggy</a> Ethereum to Cosmos bridge.</p><h2 id="operator-tools">Operator tools</h2><p>We've been building operator focus tools to help Althea scale. The latest versions of the <a href="https://github.com/althea-net/althea-firmware/releases?ref=blog.althea.net">Althea firmware</a> are tightly integrated with our new management dashboard.</p><p>Once an operator is configured the router reports status infromation to an easily disgestible administrator dashboard. The dashboard even proactively detects and notifies operators of problems with links and user expeirence. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/05/Screenshot-from-2020-05-25-13-06-55-1.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The connection status for a test user</figcaption></figure><p>As our networks continue to grow rapidly we're working to help operators manage significantly more customers than before and deal with entierly new load patters.</p><p>The majority of traffic in our networks has shifted from night time Netflix to daytime Zoom calls. Netflix is TCP with large packets where as Zoom is UDP traffic made up of many small packets for voice and video. </p><p>Combine this change in load profile with dramatically more users and better tooling is the only way to keep track of who's having problems when and where. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/05/Screenshot-from-2020-05-23-17-49-03.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Info about routers and their status. Operators are notified of problems automatically</figcaption></figure><hr><h2 id="peggy">Peggy</h2><p>The Peggy Ethereum &lt;-&gt; Cosmos bridge is the key unfninished compoent for the <a href="https://blog.althea.net/althea-blockchain-update/">Althea blockchain</a>. We are working with Cosmos stake holders to produce a robust and ready to deploy design. </p><p>The existing Peggy <a href="https://github.com/cosmos/peggy?ref=blog.althea.net">codebase</a> is quite advanced feature wise. But it's missing production ready Ethereum contracts to hande the Ethereum side of the bridge.</p><p>The real challenge with producing a 'production ready' bridge is successfully mirroring the Cosmos zone validator state without consuming too much gas.</p><p>We've made significant progress implementing our highly optimized bridge design over the last few weeks. We've made enough progress to confirm that our optimizations are working as expected. Validator set updates and transaction bactches both cost under 50c which is fairly impressive considering that we're just using an optimized design and have yet to do any optimization of the implementation.</p><p>We talked at a recent <a href="https://github.com/gavinly/CosmosGWG/blob/master/README.md?ref=blog.althea.net#april-27">Cosmos governance working group meeting</a> about our plan for Peggy in more detail and we look forward to demonstrating &nbsp;working validator updates from the Cosmos Zone soon.</p><hr><h2 id="eip-55-support">EIP-55 Support</h2><p>We've updated our Ethereum transaction library <a href="https://github.com/althea-net/clarity/commit/35bb12cc8af4247cd73b1f44c477d6a1bfef3983?ref=blog.althea.net">Clarity</a> with support for the EIP-55 address encoding standard as the default. This has been an oversight in our implementation for some time and it's good to finally get it out of the way.</p><p>Clarity is the only cross-compile friendly Ethereum transaction generation library that is portable to all 32 bit platforms. Including CPU targets like PowerPC, RISCV, and MIPS.</p>]]></content:encoded></item>
<item><title>Althea Blockchain Update</title><link>https://blog.althea.net/althea-blockchain-update/</link><guid isPermaLink="true">https://blog.althea.net/althea-blockchain-update/</guid><pubDate>Sat, 09 May 2020 22:34:55 GMT</pubDate><description>We want to begin by sincerely thanking all our validators and community members
who have supported our project through many months!

TL;DR

 * In 2019, we successfully completed the testing of our custom transaction
   library and Althea testnets 1-4.
 * In late 2019, we began work on the design and evaluation of the &quot;Peggy&quot;
   ethereum-to-cosmos bridge.
 * In early 2020, we arrived at an improved Peggy design that meets all of our
   needs. However that is when COVID-19 hit.
 * Since COVID-19, </description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/b974bcd700e4a8921bf2.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>We want to begin by sincerely thanking all our validators and community members who have supported our project through many months!</p><p>TL;DR</p><ul><li>In 2019, we successfully completed the testing of our custom transaction library and Althea testnets 1-4.</li><li>In late 2019, we began work on the design and evaluation of the "Peggy" ethereum-to-cosmos bridge.</li><li>In early 2020, we arrived at an improved Peggy design that meets all of our needs. However that is when COVID-19 hit.</li><li>Since COVID-19, the demand for new Althea networks has greatly increased. All our efforts have been directed there, causing some delays in our blockchain development. </li><li>We have recently started strategic development of Peggy and reached out to Cosmos stakeholders and the Interchain foundation to support a more general purpose bridge that would benefit everyone. We welcome feedback on our <a href="https://docs.google.com/document/d/17mjvH06pZglL2PkJ013xNzFjEESqHtk3nYZ66aTR9YU/edit?usp=sharing&amp;ref=blog.althea.net">proposal</a>. </li></ul><hr><p>After the success of testnet chains altheazone1-4, we believed everyone had a good grasp of how to start and manage the Cosmos chain itself. We also performed testing on the transaction generation library <a href="https://github.com/althea-net/deep_space?ref=blog.althea.net">deep_space</a> that we will use on our routers. </p><p>While we have been quiet on the updates, we have not neglected the building and growth of our core user base - people who want faster, affordable internet! In fact, in our Oregon market we have grown by 45% since COVID-19, and have launched several new networks. </p><p>We expect to continue to grow rapidly as the need for affordable broadband in a post-COVID world is paramount. By incentivizing private property owners, Althea networks can be built faster and more affordably than legacy ISPs.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/05/Pic1.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Althea relay at a farm that gets automatically compensated for hosting antennas that relay signal to neighbors.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/05/newnetwork.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>In a decentralized network, individuals make up the infrastructure of the network, like this relay on a hill.</figcaption></figure><p>The core functionality of Althea is pay-per-forward - people get paid automatically for hosting antennas and forwarding bandwidth to their neighbors. Currently, Althea users load their routers by purchasing Ethereum with an embedded Wyre widget and a bridge converts this to stable Xdai using Uniswap. &nbsp;</p><p>While this has been working for now, to continue scaling we are building an Althea blockchain using CosmosSDK. We also need a bridge from a currency with liquidity, like Ethereum, to tokens on the Althea blockchain. For our Cosmos chain this will be Peggy - an unfinished module used by a Cosmos blockchain to bridge Ethereum assets to CosmosSDK based chains. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/05/westport.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>New network in Westport, Oregon.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/05/AbujaNetwork.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The network in Abuja, Nigeria which supports hundreds of mobile users.</figcaption></figure><p>In 2019, we launched our first test nets of the Althea blockchain with a great group of validators who helped us with deployments. At this time, we were hopeful that the Peggy module would be ready for testing and deploying our Althea blockchain in production. </p><p>In late 2019 it became apparent that Peggy was not at or near that stage and we began planning for the Althea team to complete and optimize its development. </p><p>Over the last several months, we have reached out to Cosmos stakeholders and members of the community to begin work on funding and planning the <a href="https://blog.althea.net/defi-enabled-ethereum-bridge-for-cosmos/">Peggy development with additional DeFi functionality. </a></p><p>We are excited to share with you our preliminary Cosmos Hub grant proposal and the initial planning for integrating Peggy with the Althea blockchain. We invite comments and feedback here - <a href="https://docs.google.com/document/d/17mjvH06pZglL2PkJ013xNzFjEESqHtk3nYZ66aTR9YU/edit?usp=sharing&amp;ref=blog.althea.net">https://docs.google.com/document/d/17mjvH06pZglL2PkJ013xNzFjEESqHtk3nYZ66aTR9YU/edit?usp=sharing</a></p><p>Our preliminary road map includes testnets in the summer and fall of 2020 with a goal to launch main net in late 2020. Becasue our users use Althea as their primary home internet connection we will take every precaution to ensure all aspects of the blockchain and bridge are properly tested. </p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2020/05/png-base64905bd58bd191279.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>While our core focus is to support and grow our user base, we have started working on the Ethereum side of the Peggy bridge. We expect to accelerate this development and expand its scope to include more general purpose features when additional funding becomes available. We invite validators who wish to be involved with any Althea testnets to join the <a href="https://discord.gg/NbK3Uu3?ref=blog.althea.net">Althea validator channel in Discord</a>. </p><p>Thank you all for your patience as we work towards more frequent communication. We look forward to growing the interoperable and decentralized internet with you! </p><p></p><p> </p>]]></content:encoded></item>
<item><title>Althea in Nigeria</title><link>https://blog.althea.net/althea-in-nigeria/</link><guid isPermaLink="true">https://blog.althea.net/althea-in-nigeria/</guid><pubDate>Wed, 22 Apr 2020 19:48:15 GMT</pubDate><description> Written by Yakubu Yakubu, Nigerian Network Operator/Coordinator 

Diplomats Park



Nigeria has the largest population in Africa at about 200million citizens.
However, only 46% of the population have internet access via cellular carriers.
Many people lack adequate and qualitative internet connectivity, This is due in
part to inefficiency in coming up with innovative technological solutions that
address the situation and also big telecommunication companies who would prefer
to monopolise the ind</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p> Written by Yakubu Yakubu, Nigerian Network Operator/Coordinator </p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/b4b2ab8ede4928af28bc.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>Diplomats Park</strong><br><br></p><p>Nigeria has the largest population in Africa at about 200million citizens. However, only 46% of the population have internet access via cellular carriers. Many people lack adequate and qualitative internet connectivity, This is due in part to inefficiency in coming up with innovative technological solutions that address the situation and also big telecommunication companies who would prefer to monopolise the industry and reduce healthy competition. Althea is a decentralized network which can be deployed anywhere by anyone or group of people provided there is affordable backhaul connectivity. <br></p><p>In Garki Abuja, Althea offers high speed fiber broadband connectivity down to the mobile phones at the best rates the country has ever seen by a longshot. It requires the installation and maintenance of radio equipment by participants and organizers which grants the community high speed internet access and lets them earn some money in the process.<br></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/d1b80cc34f0750a08f17.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>Althea Diplomat Park growing day by day</strong></p><p>Althea launched its first network in Africa in early November 2019. An initial pilot network will start with about 15 participants. <br></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/bd8e0df2fa813a06d803.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>The Akanyas excited for better internet</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/bc6ac9f4f445ad00d2e1.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>Musa Akanya &nbsp;purchasing Dai (Data Credits) by MakerDAO</strong><br></p><p>The Akanyas, like every average Nigerian family, only had access via cellular data and at that had to mise the data but also use it up before the month is over. They were instrumental in acquiring the base for the gateway. A local mosque with backup power supply has allowed us to host our equipment for free. The Akanyas became the first recipients of Althea in Africa and helped us acquire 6 users which became a chain reaction to getting upto 15 installations within a short time span.</p><p>Some of the residents now stream Netflix from their Android TV and the children use Khan Academy to aid with areas of struggle in school and use YouTube to learn how to code.<br></p><p>Althea has also become a new source of revenue generation by some merchants in the Area. Haruna, a merchant who handles POS point of sale transfers, now sells data credits to fixed and mobile users in the area. Haruna gets more excited about internet access than selling data credits. He has become an active promoter of Althea in the neighborhood and has brought in at least 12 mobile users. Mr. Gbadebo (an Althea organizer) was so in love with the project he left Apo to Garki to help with maintenance and new installations and get his organizer fee. The larger the network becomes, the more he earns.<br><br></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/71098bcaec4c9324b8ec.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>Yaxx and Mosque Caretaker Baba Danja</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/774fd9641c547d2a14d7.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>Backhaul Service Providers</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/7c4599a83ac1f4b80e3d.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>Radio Backhaul Connection</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/0b4e6d37c3df01e92ba7.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>Althea Gateway going live</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/88a81df08ce11bb401f9.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>Mr. Gbadebo and Mr Yaxx Althea organizers Diplomat Park</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/699e7c543136df5c78f3.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>Haruna sells data credit for the community</strong><br></p><p>Fatima, a student at Katsina State University studying computer science, became the first relay at Diplomats Park. She took a keen interest in Althea because she solves two problems unique to her. Firstly, she learns about mesh networking and is considering doing her project based on Althea as a way of getting more people in academia to learn about Althea and also to earn some money from her relay. She believes in community based internet provisioning. We also have Abdulhaqq who opted to become a relay due to the strategic positioning of his house. With a solar array for uninterrupted service delivery and a market not far away, he sees a good opportunity to beam signals from his house for affordable internet data via the Althea Mobile app and has been earning since then. His family also enjoys the service and some of them have started doing door to door marketing to get more people involved.<br><br></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/b3409b63dc410f28ad06.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>Fatima aspiring scientist and business woman is the first relay at Diplomats Park</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/0889fff66d2f516100eb.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>First relay installation by Wisdom at Fatima’s residence</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/f0da7c95b2a4f7a135b7.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>Abdulhaqq Althea’s second relay at Diplomats Park</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/d99b0452d1e2c2723d9c.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><strong>Gbenga and Wisdom installing the Solar panels with the relay</strong></p><p>The prices of internet in Nigeria was reviewed lately thanks to the intervention of the minister of communication and that has made people happy but are happier with Althea because it truly addresses the plight of the people living in their various communities.</p>]]></content:encoded></item>
<item><title>DeFi enabled Ethereum bridge for Cosmos</title><link>https://blog.althea.net/defi-enabled-ethereum-bridge-for-cosmos/</link><guid isPermaLink="true">https://blog.althea.net/defi-enabled-ethereum-bridge-for-cosmos/</guid><pubDate>Mon, 06 Apr 2020 22:23:54 GMT</pubDate><description>DeFi investment is just another set of rules and automation for the bridge. Not a giant leap in technology, but instead, of perspective.</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>In this post we outline a vision of the Ethereum ↔ Cosmos bridge (Peggy) that allows token holders to make arbitrary DeFi investments with liquid bridge capital.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/8b992f9267def601b5d0.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Photo by <a href="https://unsplash.com/@nasa?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">NASA</a> / <a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Unsplash</a></figcaption></figure><p><br>Like other transaction processing platforms, similar to VISA or Stripe, it’s fiscally advantageous for the token holders of a Cosmos zone operating Peggy to leverage the liquidity locked in the bridge to collect interest. With the rise of &nbsp;decentralized finance (DeFi) and, in particular, the Dai Savings Rate (DSR) this sort of high liquidity, low risk investment required is now available to everyone in the Ethereum ecosystem. Through the Peggy bridge, this functionality could soon be used by anyone with a Cosmos zone as well. <br><br>Peggy, the Cosmos Ethereum bridge, is a way to bridge arbitrary Ethereum ERC20 assets, like Dai, to Cosmos zones, or to bridge Cosmos assets like ATOM to Ethereum. <br></p><hr><h2 id="technical-overview">Technical overview</h2><p>Peggy is a bridge made up of an Ethereum contract, which stores the full validator state and a Cosmos module run by the validators to produce updates and send transactions to and from Ethereum.<br><br>In the most basic sense, the Peggy Ethereum contract is simply a multi-sig wallet controlled by the current Cosmos validator set plus some automation. There’s nothing stopping the validators of the Cosmos hub from getting together right now, deploying a boring old multisig, and simply running a bridge by hand. Of course, voting on each deposit and withdraw manually, while possible in theory, is impossible in practice. It is the automation provided by the Cosmos module which makes a bridge a viable tool. <br><br><strong><em>In that sense, DeFi investment is just another set of rules and automation for the bridge. Not a giant leap in technology, but instead, of perspective.</em></strong><br><br>We propose that the Peggy Cosmos module provide its own machine-readable and automatically actionable governance proposal format for the investment of bridge capital into arbitrary DeFi constructs. For example, a governance proposal could be submitted to invest half of the bridge funds into the Dai savings rate, with a liquidation preference that $1000 at time be removed from the DSR to fund bridge withdraws if required. Once that proposal was voted in, the Peggy module would accept the new ruleset and start to execute it - balancing the investment automatically, by either withdrawing or adding funds to the DSR.<br><br><br>This can be further extended by adding Uniswap support. Allowing the token holders to apply their investment goals across a variety of assets that would otherwise be locked in the Peggy Ethereum contract. <br><br>Finally we don’t even have to limit ourselves to a pre-defined series of investments, the governance proposal itself could define the required contract calls to deposit, withdraw, and monitor the balance of a proposed investment. <br><br>While it will remain possible to construct an Ethereum contract that the Peggy Cosmos module couldn’t interact with without a module upgrade, the vast majority of DeFi contracts now and in the future would be only a governance proposal and a vote away. <br></p><h2 id="althea-s-trustless-peggy-optimizations">Althea’s Trustless Peggy Optimizations<br></h2><p>We envision this Defi value capture in the context of our improved, trustless Peggy design. <br><br>The proposed security model of the Peggy Ethereum bridge uses a mix of semi-trusted parties and game theory to overcome key difficulties with the Ethereum execution environment. The main difficulty being updating the validator set on every voting power change and performing signature verification across all validators for each transaction is inordinately expensive in terms of Ethereum gas. <br><br>Althea has developed a series of optimizations that allows for the cost of validator setup updates to be reduced to 12c every 24 hours on average and for the cost of transactions to be reduced to simply the cost of the underlying ERC-20 send given a sufficiently active bridge.<br><br><br>These Ethereum contract optimizations allow for a simpler bridge design and a focus on adding extra features like the DeFi support. Working together with Interchain and Cosmos stakeholders, we hope to work over the coming year on implementation. Public tests nets are estimated in late third quarter 2020.</p><h2 id="about-althea">About Althea</h2><p><br><a href="https://althea.net">Althea</a> builds tools which allow routers to pay each other for bandwidth using micro-payments. <br><br>We specialize in producing reliable, highly optimized code that operates in harsh environments, so we are well suited to building this functionality into the bridge. Justin Kilpatrick co-founder and CTO worked as a performance engineer on Red Hat’s performance and scale team for two years before leaving to found Althea. Jehan Tremback co-founder and advisor has been closely involved with Ethereum and the programmable blockchain space since its inception. He scoured the earth for Solidity optimization tricks to create Guac. (<a href="https://github.com/althea-net/guac?ref=blog.althea.net"><u>Guac</u></a> is a highly optimized payment channels implementation for Althea. It is the most optimized non-hub payment channel library available.)<br></p>]]></content:encoded></item>
<item><title>Rapid Connectivity Response</title><link>https://blog.althea.net/rapid-connectivity-response/</link><guid isPermaLink="true">https://blog.althea.net/rapid-connectivity-response/</guid><pubDate>Wed, 25 Mar 2020 19:59:05 GMT</pubDate><description>Rapid Response
To address the immediate need for more broadband infrastructure we have put
together a Rapid Connectivity Response. This is a plan to build a 100Mbps,
affordable broadband network in as little as two weeks. This method can be
deployed in both rural and urban environments to rapidly build or expand a
network.

Althea networks are adaptable, locally based and can be deployed rapidly.
Traditional ISPs struggle to make the economics of providing connectivity to
rural communities work,</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<h1 id="rapid-response">Rapid Response</h1><p>To address the immediate need for more broadband infrastructure we have put together a <strong>Rapid Connectivity Response</strong>. This is a plan to build a 100Mbps, affordable broadband network in as little as two weeks. This method can be deployed in both rural and urban environments to rapidly build or expand a network.<br><br>Althea networks are adaptable, locally based and can be deployed rapidly. Traditional ISPs struggle to make the economics of providing connectivity to rural communities work, and build slowly - often taking years to build a network. By using private property, Althea networks lets communities build networks in an agile way, to affordably and quickly build effectively to areas with a smaller, more spread out population. Everything is plug and play and billing is automatic, so the network is easy to set up and maintain. <br></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2020/03/ruralantenna.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><br>Rapid Connectivity Response<br><br>Step 1: Assessment (2-3 days)<br>FCC and other reported data is inaccurate and often does not give a complete understanding of exactly where there is a need. <br></p><ul><li>Reach out to local school board and educational leaders who can give a quick perspective into the needs of the community. County commissioners, local city mayors and managers, and state representatives may have already identified “pain point” areas that need networks. Starting a Facebook group or page which solicits the voices of the community can also be a great place to get started.</li><li>Locate a local technical help for the management of the network. These local network operators are automatically paid a monthly fee through Althea’s software and we provide full tier one tech support for operators. This can often be some one already performing IT, camera installs, or computer services in your area. Althea is very easy to use even for someone with no prior knowledge of networking. We provide education, tier 1 support and dashboard tools for the network operator.</li></ul><p><br>Step 2: Planning (1 to 2 weeks)<br></p><ul><li>Once an area has been identified, we set up a sign-up website, like <a href="http://www.althea.net/clatskanie?ref=blog.althea.net">www.althea.net/clatskanie</a>. Interested subscribers can sign up, and get easily routed to a calendar app to sign up for an installation or a call to answer questions. This becomes an easy way to manage new potential subscribers and get the word out about the new network.</li><li>Finding a wholesale connection can often be the most challenging part of starting a network, however, there are quick options that are based on using resources that already have connection. We can find the creative solutions that are the best fit for your community.</li><li>A public building like a library, school, university, or city hall. Working together with the appropriate contacts you can build out a sustainable solution that can provide some revenue and utilize public space and bandwidth capacity. A public wifi-hotspot can be built alongside the network, providing immediate resources to people needing to access the internet. This may be a slower option, because in many cases public entities are overwhelmed with other aspects of the crisis.</li><li>An on-net business. Many businesses are experiencing slow downs and extra income from roof lease or providing free internet can be a welcome proposition. Contact the wholesale department of the fiber provider to negotiate a rapid provisioning of the connection for wholesale use. For an “on-net” building this can often be as little as 1 to 2 weeks. Building of the main infrastructure can take place while the service order for wholesale connection is moving through the system, so you are ready to provide subscribers with broadband as soon as the network comes online.</li><li>Current ISPs. Often it is not economically viable for the incumbent ISP to service an area using legacy methods, but they are happy to grow their network using Althea’s unique model. This can be a win-win situation for everyone involved and many ISPs are happy to discuss how this could be arranged.</li><li>Getting equipment and installing. Together with our consultants, we can plan, engineer, and source gear for your network. Most household equipment can then be purchased at <a href="http://buy.althea.net/?ref=blog.althea.net">buy.althea.net</a> by subscribers, and shipped pre-configured to the network operator. Because these networks can be built from “neighbor-to-neighbor” instead of large towers or along public right of way, the system is easier to maintain, and affordable and quick to build.</li></ul><p>At this point, you have a working network that can start quickly and grow sustainably. This pandemic has presented us with great tragedy, but it also has brought us an opportunity to come together to solve the digital divide in a lasting way.<br><br>With the rapid increase of e-learning, telemedicine and work from home the Covid crisis has exposed just how deep the digital divide is. Despite billion of dollars of federal grants and years of work, big telecom has still failed to make the economics of sustainable development in rural areas work. &nbsp;<br><br>There is a better way forward, and we should start now. Communities can rapidly build sustainable solutions to meet the needs of even remote areas, so that people can learn, work and receive healthcare from home.<br><br><a href="https://airtable.com/shryzLxChY0wZcE9w?ref=blog.althea.net">Contact us here to get started </a>and receive a custom plan and getting started guide for your area. <br></p>]]></content:encoded></item>
<item><title>Hardware hacking is good for business</title><link>https://blog.althea.net/hardware-hacking/</link><guid isPermaLink="true">https://blog.althea.net/hardware-hacking/</guid><pubDate>Wed, 18 Mar 2020 11:44:00 GMT</pubDate><description>Routers are, for all their specific quirks, just computers. Like your desktop, phone, or a server.</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2020/03/ERgNqRdU0AEhWJc.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>A couple of weeks ago I got a very small box in the mail. An '<a href="https://www.ui.com/accessories/aircube/?ref=blog.althea.net">airCube ISP</a>' a new $30 home router offered by Ubiquiti. I unboxed it and about two hours later it was running Althea.</p><p>Phrased that way it sounds underwhelming. Lets dig in a little.</p><ul><li>Jailbreaking the firmware using the <a href="https://openwrt.org/toh/ubiquiti/ubiquiti_aircube_isp?ref=blog.althea.net">OpenWRT wiki</a>. Ubiquiti signs each firmware with their RSA key, but by loading a specific config we can defeat the check.</li><li>Identifying and downloading the correct source code to build a x86 -&gt; MIPS cross compiler. Required to build code that will run on this devices processor.</li><li>Cross buildng the Linux kernel and userspace for the MIPS cpu architecutre.</li><li>Cross building the Althea <a href="https://github.com/althea-net/althea_rs?ref=blog.althea.net">billing software</a> and assembling specific tweaks.</li><li>Packaging all of this into a highly compressed image clocking in at a hair below 10mb.</li><li>Flashing this image to NOR flash. Unlike the NAND flash you're used to NOR flash takes minutes to write, but is more robust for long periods of reads.</li></ul><p>All of this was done via a script. Most of the two hours was sitting around browsing Reddit waiting for the system to finish compiling. This sort of tooling is increadible, it's easier to build a whole operating system from scratch for a random embedded device than it is to sort out the Javascript dependencies to build some web applications. </p><p>Now that a config has been added to our <a href="https://github.com/althea-net/althea-firmware?ref=blog.althea.net">firmware builder</a> new images and updates for this device will be produced automatically. When it comes time to deploy an update or build a new version I won't even need to consider this specific device. It just happens.</p><hr><p>I chose the airCube here for a specific reason. It's very cheap, turns out it's processor is too weak for us to use in the developed world. So we're testing out how easy it is to order in the developing world.</p><p>It cost Ubiquiti millions of dollars and years to develop this hardware and setup this supply line, their hope is that the Ubiquiti backed management software on this device will tie more ISPs into their platform.</p><p>In the ISP world appliances are king. Networks are typically bespoke for each ISP and the complexity of making general purpose appliances combined with the low risk tolerence of ISPs mean that most networks are dependent on specific vendors for each class of appliance or component.</p><p>There is no app platform for managed switches or routers. Either the manufactuer provides a protocol or your done. </p><p>Once locked into the Ubiquiti ecosystem buying Linksys consumer routers would cripple an ISPs ability to manage those customers and potentially not even work properly if they don't provide the right features to tie into your specific networking architecture. </p><p>This is why Althea's approach is as radical as it is obvious. Routers are, for all their specific quirks, just computers. Like your desktop, phone, or a server.</p><p>All of those can run huge libraries of software via Linux, Windows, or Android. Ultimately open platforms eat any market in which they are available, because the value to the customer of flexbility is unquestionable.</p><p></p>]]></content:encoded></item>
<item><title>Althea Development Update #83: Rust static binaries and OpenWRT</title><link>https://blog.althea.net/althea-development-update-83/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-83/</guid><pubDate>Fri, 13 Mar 2020 19:51:10 GMT</pubDate><description>A four car pileup of complex codebases, starting with static binary building on Rust.</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.althea.net/content/images/2020/03/text54.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>These past few weeks have been busy, technical and otherwise. But here's what I've been thinking on.</p><p>Our latest release <a href="https://github.com/althea-net/althea-firmware/releases/tag/beta11RC11?ref=blog.althea.net">Beta 11</a> contains a lot of new features and set a new record for the number of release candidate builds required to get it stable (11 to be precise).</p><p>But I'm going to focus in on a specific problem. A four car pileup of complex codebases, starting with static binary building on Rust.</p><p>A static binary has no dynamicly linked libraries from the local machine. Meaning that while it depends on features of the operating system to run all of the code it needs is carried with it.</p><p>This is a key distinction, a static binary for Linux is still useless on Windows. But a dynamicly linked binary is tied to a specific version of whatever software it is linked against.</p><p>In our case the problem is at the intersection of Rust, MIPS, and soft floating point. </p><pre><code>❯ find build/ -name rita | grep "sbin" | grep "staging_dir" | xargs file
build/staging_dir/target-arm_cortex-a9+vfpv3_musl_eabi/root-mvebu/usr/sbin/rita:         ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, no section header
build/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-ipq40xx/usr/sbin/rita:  ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, no section header
build/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/root-brcm2708/usr/sbin/rita: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, no section header
build/staging_dir/target-mips_24kc_musl/root-ath79/usr/sbin/rita:                        ELF 32-bit MSB pie executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-mips-sf.so.1, no section header
build/staging_dir/target-mips_24kc_musl/root-ar71xx/usr/sbin/rita:                       ELF 32-bit MSB pie executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-mips-sf.so.1, no section header
build/staging_dir/target-mipsel_24kc_musl/root-ramips/usr/sbin/rita:                     ELF 32-bit LSB pie executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-mipsel-sf.so.1, no section header
build/staging_dir/target-x86_64_musl/root-x86/usr/sbin/rita:                             ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, no section header
build/staging_dir/target-i386_pentium4_musl/root-x86/usr/sbin/rita:                      ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, no section header
</code></pre><p>Notice how the MIPS binaries are the only ones that are not statically linked.</p><p>Part of the problem here is that Rust doesn't have a 'build a static binary' flag, Go is famously universally staticly build. Meaning it will always build portable binaries. Rust on the other hand gives you the option of building static binaries. But that option and exactly what else impacts it isn't exactly clear. <a href="https://doc.rust-lang.org/edition-guide/rust-2018/platform-and-target-support/musl-support-for-fully-static-binaries.html?ref=blog.althea.net">Other than one rather cryptic book page</a> noting that you should use the MUSL libc implementation.</p><p>Using MUSL is not a guarantee, it's a polite request. For whatever reason the Rust soft float flag does not make it's way to LLVM for MIPS targets and we end up with.</p><pre><code>build/staging_dir/target-mips_24kc_musl/root-ath79/usr/sbin/rita:                        ELF 32-bit MSB pie executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-mips-sf.so.1, no section header</code></pre><p>Between Beta 8 and Beta 11 the OpenWRT was updated and the calling environment, specifically this floating point library, is not backwards compatible.</p><p>Binaries built against the old library work when run against the new library. But binaries built against the new library (Beta 11) don't run against the old library (Beta 8).</p><p>For this update we can hand build binaries against an older libc and ship those as special versions of Beta 11.</p><p>But how do we want to deal with this going on into the future? We do want to upgrade our MIPS building toolchain someday. </p><p>We could contribute to upstream Rust and see what it takes to get a fully static binary, or we could move in the direction of updating more packages on the local devices. After all if we ship a new libc and kernel update things should work just fine.</p><p>But that's not quite as simple as it sounds. In this act we bring in the fourth complex nuanced system in this dance. The <a href="https://openwrt.org/docs/techref/flash.layout?ref=blog.althea.net">OpenWRT flash storage layout</a> and <a href="https://openwrt.org/docs/techref/filesystems?ref=blog.althea.net">filesystems</a> pages are very educational here.</p><p>Cheaper MIPS routers typically use cheap and very small NOR flash chips. Sized 8MB, 16MB, or 32MB.</p><p>In order to better deal with this tiny amount of storage OpenWRT uses a dual filesystem setup. <a href="https://en.wikipedia.org/wiki/SquashFS?ref=blog.althea.net">SquashFS</a> a highly compressed read only file system + <a href="https://en.wikipedia.org/wiki/JFFS2?ref=blog.althea.net">JFFS2</a> for writeable storage.</p><p>SquashFS throws out everything, including the kitchen sink, in order to make files smaller on the disk. But you can never modify it after the initial flash. </p><p>This brings us back to our last issue. If we try and ship a kernel and libc update we're going to double the storage size for both items. We will have the old version in SquashFS, which we can't erase without reflashing the device (risky to do remotely) and the new version in JFFS2.</p><p>At this point I've written a lot of words on this subject but I haven't really made an engineering decision on what solution to pursue. This problem is nuanced and occurs across several domains, which is part of what makes it interesting. The easiest thing to do is figure out how to build static binaries, but doing things like kernel updates remotely on these devices isn't a task that can be ignored forever.</p><hr><p>In other development news I've made a few safety and performance patches to the main Rita codebase, the rest of my time is dedicated to the development of the nascent network operator tools codebase. The product of which I hope to reveal in a month or two.</p><pre><code>Author: Justin Kilpatrick &lt;justin@althea.net&gt;
Date:   Wed Mar 4 15:21:32 2020 -0500

    Use liboping for ping actions in althea_kernel_interface

    This change pulls in the c library oping and a Rust crate providing
    bindings.

    This lets us perform ping operations without shelling out and most
    importantly control the ping timeout with a resolution higher than
    one second.

    The one second timeout minimum is a key reason why the exits endpoint
    can run slowly. As it serially pings all the exits and the inside
    exit tunnel ip for the registered exit.

    That's at most (Num Exits + 1) * Timeout seconds of waiting time. This
    is actually a pretty rare case that all exits are inaccessible AND
    we have routes to them in Babel. But sadly this rare case is most commonly
    when people are looking at the dashboard! Strange connection troubles, bloat
    etc etc. So it has an outsized impact.

    This change uses our new found freedom of the timeout to reduce the exit ping
    timeout to 200ms. Which is pretty conservative and helps with the maximum wait
    time.

    Perf Check:
    previous common case: 1s
    previous worst case: 10s
    new common case: 900ms
    new worst case: 1.6s

    So ultimately
    +1 for less shelling out
    -1 for more C code
    +1 for more performance
</code></pre><pre><code>Author: Justin Kilpatrick &lt;justin@althea.net&gt;
Date:   Tue Mar 3 17:18:41 2020 -0500

    Forbidden settings merge values

    We're not working to give network operators more direct access to the oracle
    features. So it's important that it be a safe environment. While it's impossible
    for us to read the eth_private_key remotely from any router the settings merge json
    does provide a chance to overwrite it.

    This really isn't acceptible froma saftey perspective. This patch implements a small
    but effective blacklist of settings values where local router state is stored in such
    a way that remote updates can't possibly be anything but destructive.</code></pre>]]></content:encoded></item>
<item><title>March Community Update</title><link>https://blog.althea.net/community-update/</link><guid isPermaLink="true">https://blog.althea.net/community-update/</guid><pubDate>Wed, 04 Mar 2020 06:26:20 GMT</pubDate><description>

In the US, 65% of consumers get their internet from just two cable providers.
These providers charge too much for slow service and leave behind many Americans
who can’t access the internet due to cost. But what if anyone could start or
grow a network? What if we could take back our choice, control, and ownership of
the internet? Over the past few months, Althea has helped make that dream of
ownership and choice a reality for Americans in rural Oregon, Tacoma Washington,
and Denver, Colorado. M</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p></p><p>In the US, 65% of consumers get their internet from just two cable providers. These providers charge too much for slow service and leave behind many Americans who can’t access the internet due to cost. But what if anyone could start or grow a network? What if we could take back our choice, control, and ownership of the internet? Over the past few months, Althea has helped make that dream of ownership and choice a reality for Americans in rural Oregon, Tacoma Washington, and Denver, Colorado. More Althea networks are in the works as well - in Washington, Oregon, North Carolina, California, Pennsylvania, and many other areas. Althea’s automatic routing and billing make it easy for anyone to start a network or grow an existing one. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/03/tarantula-1.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption><em>“I always wanted to run my own WISP, Althea’s plug-and-play technology and decentralized ownership model makes that possible” - Tarantula Wireless, Denver</em><span class="-mobiledoc-kit__atom">‌‌</span></figcaption></figure><p><br>We are excited to celebrate the on-going success of our network in Abuja, Nigeria. Yakubu Yakubu, the network organizer, has done great work setting up the initial network of about 16 subscribers. People in Abuja had been paying very high prices for mobile only internet. Now, people can install Althea routers in their homes, pay affordable rates, and use the wifi-hotspot to sell internet to nearby mobile phones. In fact, in just a few weeks, we now have about 20 people using the Althea mobile app for their internet usage, and growing fast! Yakubu, or Yax, also just installed the first relay client, who is helping to expand the infrastructure of the network and make money for hosting extra antennas. The network continues to expand as fast as we can get more antennas shipped in.<br><br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/03/yax.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption><em>“I’ve always thought that blockchain technology can simplify how telco networks are built. That was a dream and Althea made that dream come true. Welcome to the new age.” - Yakubu, Althea Abuja </em><span class="-mobiledoc-kit__atom">‌‌</span></figcaption></figure><p><br>Following the Abuja network, a new Althea network in T’adi Ghana came to life in February as a small existing WISP changed over to the Althea system. By empowering local business people to own hardware and sell to their mobile-only neighbors, the network can grow organically and be a better revenue source than a traditional WISP. Getting routers and antennas on location, continues to be the biggest difficulty in both Ghana and Nigeria. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2020/03/Ghana.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Installing Althea routers in T'adi, Ghana.</figcaption></figure><p><br>We have been working hard to recognize the roadblocks and hurdles to starting a network and developing services to help smooth out barriers and support new and growing networks. For example, subscribers can now buy equipment with a six month payment plan at buy.althea.net, and relays and new networks can buy gear there too. We also have a new, ready-to-install <a href="https://althea-routers.myshopify.com/collections/deployment-packages/products/test-product?ref=blog.althea.net">“mini-mesh” package </a>available if you are looking to try out Althea or set up a small network. Digital services, like Sling, will soon be available through website links too, so subscribers can easily sign up and “cut the cord” of their existing cable providers. We help support new networks through every part of the process, from marketing to sourcing backhaul and technical support. <br><br>Our latest release features the implementation of the Wyre widget, creating a smooth way to add-funds to the router. For the user, this feels very similar to using a debit card as you normally would to buy something, abstracting away most of the cryptocurrency aspects. This is also a benefit over using the Coinbase wallet, whose interface references investor language like “portfolio and trade”. <br><br>One of our main development focuses of the coming months will be a better developed network organizer dashboard and tools to help operators manage their network. This will be comparable (and most likely better :) ) than Ubiquiti’s offering, UNMS, and will make it easier for WISPs to integrate Althea into their existing network. <br><br>The other development focus will be to begin integration and testing of our Althea blockchain built on Cosmos. This important component will allow subscribers to use the stable currency dai to pay for their internet, while transactions are processed quickly and securely using a robust proof-of-stake blockchain. <br><br>The core of the Althea system is pay-for-forward, which allows anyone to seamlessly add capacity to the network, and the price-aware routing protocol which chooses your upstream carrier dynamically based on user choice of price and quality. Instead of the locked-in monopolistic system, Althea imagines one open network made up of infrastructure with different owners that automatically routes traffic and compensates participants. We no longer have to accept the legacy system of the lowest throughput at the highest price - Althea networks can start and grow anywhere. Is it time to start your Althea network?<br><br>Go to <a href="http://www.althea.net/?ref=blog.althea.net">www.althea.net</a> to learn more. <br></p>]]></content:encoded></item>
<item><title>Althea Development Update #82: Direct router deposit with Wyre!</title><link>https://blog.althea.net/althea-development-update-82/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-82/</guid><pubDate>Tue, 18 Feb 2020 14:57:46 GMT</pubDate><description>With the new Beta 11 release users can now use the Wyre widget to buy and send
funds directly to their router. 

We&apos;ve been dreaming about a system like this for a very long time. While Wyre
pay isn&apos;t available in every state or region where it is available users won&apos;t
have to navigate Coinbase any longer.

The process of buying and then withdrawing to the router was essentailly our
largest usability barrier.

I&apos;m really looking forward to seeing this in production over the next few weeks.

Bugf</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.althea.net/content/images/2020/02/text54-1.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>With the new Beta 11 release users can now use the Wyre widget to buy and send funds directly to their router. </p><p>We've been dreaming about a system like this for a very long time. While Wyre pay isn't available in every state or region where it is available users won't have to navigate Coinbase any longer.</p><p>The process of buying and then withdrawing to the router was essentailly our largest usability barrier.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2020/02/Screenshot-from-2020-02-18-08-01-52-3.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2020/02/Screenshot-from-2020-02-18-08-00-27-3.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>I'm really looking forward to seeing this in production over the next few weeks.</p><h3 id="bugfixes-and-optimizatons">Bugfixes and optimizatons</h3><p>As we scale up our operations new bugs continue to become apparent. This is just a small selection of recently fixed bugs.</p><pre><code>commit 9ad66361da8b6dd9b3372ee64c17361281fd1e3d
Author: Justin Kilpatrick &lt;justin@althea.net&gt;
Date:   Wed Feb 5 14:31:15 2020 -0500

    Reduce unneeded database loads in status request path

    The exit was performing a db request to check if a user entry existed
    and then just a few lines later requesting that same entry. We can save
    the round trip time and grab it while we check if it exists
</code></pre><pre><code>commit 2bda1b3b232e387c70ad90e405a749ae8d63a19e
Author: Justin Kilpatrick &lt;justin@althea.net&gt;
Date:   Wed Feb 5 15:06:43 2020 -0500

    Optimize client database entry updates

    Previously several database requests would be made for every client
    checkin to potentially update the email and phone number.

    Now we only perform an update when there are actual changes and also
    only update the last seem timestamp every 12 hours.

    This required banning entry timeouts less than 24 hours but that's
    a satisfactory compromise for much faster general operation.

    The total number of database requests per endpoint hit should be
    reduced from 5 to 1 on average by this patch and the previous one.
</code></pre><pre><code>commit ee8169d3d8975982d101fbe301379dadddbab856
Author: Justin Kilpatrick &lt;justin@althea.net&gt;
Date:   Thu Feb 13 21:31:45 2020 -0500

    Correct payment validator logic to prevent double payments

    Previously we used independent do_send statements in order to validate
    payments. This is logically incorrect as it's possible for the payment
    to be accepted in debt keeper before it is removed from the validation list
    in payment validator.

    This patch corrects that error by making sure that in order to send debt
    keeper messages the removal from the existing list must first succeed.

    The next race conditon to consider is that multiple calls to remove
    may be running in parallel. We address this  by having remove return
    an error when no such transaction exists. Since Actors themselves
    serialize access to self this means removal from the list is fully
    atomic.
</code></pre><pre><code>commit e8fa2fa35e255b6f706b21c9acfbd00a1e0b17bb
Author: Justin Kilpatrick &lt;justin@althea.net&gt;
Date:   Tue Feb 11 07:48:25 2020 -0500

    Add protection for full node communication

    After discovering that nodes would overpay the exit I've been looking
    to prevent it from happening again comperhensively.

    My first attempt was to refund incoming transactions immediately and
    add long timeouts to the transaction checking. While refunding incoming
    transactions has worked quite well to unwind our overpayment balances
    long timeouts has served it's purpose but caused other problems.

    Like a generally huge number of timeouts in the common loop.

    This patch is a replacement for the long timeouts patch where instead
    of making very long lived futures we simply keep track of if we have
    actually talked to a full node about any given transaction. If we
    have not succeeded we panic.

    Both servers and clients have an auto restart catch. In some cases
    this won't help, in others where the node is merely overloaded it will

    In the specific case of the exit running slowly and not validating anything
    this would resolve the issue nicely.
</code></pre><pre><code>commit 43222e762f17aaa511534fb246fad5be079cb2b6
Author: Justin Kilpatrick &lt;justin@althea.net&gt;
Date:   Sat Feb 8 22:01:05 2020 -0500

    We set the average Xdai gas amount

    Since we make up such a large porition of the xdai transaction
    volume we effectively set the gas amount you'll get from the
    full node endpoint.

    Therefore to actually lower our own gas costs it's not enough to
    remove the constant, we must also enforce a maximum gas price.
</code></pre><pre><code>commit eb2f4282fa467be7c47ece19835ca6de6437beb1
Author: Justin Kilpatrick &lt;justin@althea.net&gt;
Date:   Mon Feb 10 13:36:45 2020 -0500

    Cache most exit vars

    This patch caches all the exit settings referneced by the endpoints.

    As exits scale more and more threads get thrown at their threadpools
    resulting in rising and eventually untenable lock contention on the main
    SETTINGS lock.

    Most things behind that lock we never really want to change at runtime.
    other things like the price we do.

    This patch isn't the best soltuion to the problem by far, moving the locks down
    to a more granular level within SETTINGS is the real solution here. But that would
    have wide reaching syntax changes throughout the codebase. No to mention a re-write
    of settings serialization as you obviously can't write locks to the disk.

    Overall I find this to be an acceptable compromise.

    Price is the only thing we must update at runtime so it is refreshed from the
    main settings object every 10 minutes. This will block one of the many worker
    threads while it waits for all other worker threads to release their read locks,
    updates the value and moves on. This only requires a single read lock on the main
    settings and won't block the main thread. Two big advantages.

    Remember actual exit billing is synced with the clients through endpoint hitting
    so this won't affect payments. But it will create slight discrepencies in the user
    local accounting since local billing won't update the updated price change.
</code></pre><p>I'm actually still in the progress of debugging a dns related issue on the exits. Hopefully our next dev update can cover that in detail as it's been an interesting ride. </p>]]></content:encoded></item>
<item><title>Deborah Simpier is Althea&apos;s new CEO!</title><link>https://blog.althea.net/deborah-ceo/</link><guid isPermaLink="true">https://blog.althea.net/deborah-ceo/</guid><pubDate>Tue, 04 Feb 2020 19:32:55 GMT</pubDate><description>I’ve been working on Althea since 2015, when I started researching what was
possible at the intersection of blockchain and networks (Justin, our CTO, had
actually been working on similar concepts since 2013, but we didn’t meet until
several years later). Justin and I wrote Althea’s whitepaper in late 2016, and
it has held up amazingly well as we’ve implemented the system and got it working
in the real world.

In early 2018, we established Hawk Networks, inc. to be the company behind the
Althea p</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>I’ve been working on Althea since 2015, when I started researching what was possible at the intersection of blockchain and networks (Justin, our CTO, had actually been working on similar concepts since 2013, but we didn’t meet until several years later). Justin and I wrote Althea’s whitepaper in late 2016, and it has held up amazingly well as we’ve implemented the system and got it working in the real world.<br><br>In early 2018, we established Hawk Networks, inc. to be the company behind the Althea protocol, and Deborah Simpier came on board as COO. We had gotten to know Deborah in 2017 when she reached out after seeing one of my talks at the BattleMesh conference and stated an Althea network in her area. Shortly after Deborah came on board, we finished raising a $1.1m seed round and got to work finishing the software and starting to get adoption.<br><br>The entire time that me and Deborah have been working together as CEO and COO, I have handled the big picture decisions around product direction and strategy, while Deborah handles most of the business development and interfaces with users. At this point, the product is relatively polished, we have several growing networks in the US and in the developing world, and the focus of the business is shifting to growth and profitability. Since Deborah has been instrumental in all relationships around user growth and partnerships, we think it’s best for her to step into the role of CEO.<br><br>I’ve worked on Althea for almost 5 years, and while I love the ISP space, I’m ready for something new. It takes a lot of grit and perseverance to operate in the ISP industry, and I’m looking forward to working on more pure-software ideas again. I’m currently doing some research on how blockchains can allow people to mine tokens for more than just hashing large numbers.<br><br>I remain heavily invested in Althea’s success and will be staying on as a super-advisor, meeting with Deborah and Justin several times a week about strategy, product direction, and other matters.</p>]]></content:encoded></item>
<item><title>Althea Development Update #81: Phone client Beta 0 and the many fixes of router Beta 11</title><link>https://blog.althea.net/althea-development-update-81-phone-client-beta-0-the-many-fixes-of-router-beta-11/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-81-phone-client-beta-0-the-many-fixes-of-router-beta-11/</guid><pubDate>Tue, 28 Jan 2020 17:14:53 GMT</pubDate><description>Without further delay, here is the Althea for Android app. You will need to use it with Beta 11 RC6 or later of the Althea router firmware. You can find a list of supported routers here.</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2020/01/Development-final.ai-3.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>It's been nearly a month since my last development update, sorry about that, it's been an incredibly busy time. </p><p>Without further delay, <a href="https://play.google.com/store/apps/details?id=com.althea.althea_android&amp;ref=blog.althea.net">here is the Althea for Android app</a>. You will need to use it with <a href="https://github.com/althea-net/althea-firmware/releases/tag/Beta11RC6?ref=blog.althea.net">Beta 11 RC6</a> or later of the Althea router firmware. You can find a list of supported routers <a href="https://althea.net/firmware?ref=blog.althea.net">here</a>.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2020/01/Screenshot_20200125-215343.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>The app is on xDai by default and I'll add a menu to change that at runtime when I get a chance. Or you can add it yourself <a href="https://github.com/althea-net/althea-android?ref=blog.althea.net">here</a>. Like everything Althea, the app is Open Source and Apache 2 licensed. It's missing some bells and whistles, but it works in a robust and secure way despite all of the <a href="https://blog.althea.net/althea-development-update-80/">roadblocks</a> Android put in our way. </p><p>I believe I could dedicate a whole series of blog posts to why Android is a fun platform when it comes to writing network applications.</p><ul><li>On Motorola phones fe80 IPv6 addresses work to contact routers without the user requesting to 'stay connected' to the WiFi. But IPv4 does not</li><li>On Samsung phones fe80 IPv6 addresses don't work at all, but you can always use the IPv4. </li><li>On Android 8 and 9 the response to the boolean function is_any_local_address() is the opposite for the same IP.</li><li>You're really better of comparing bits yourself to check what subnet an IP is in.</li><li>But haha Java has no unsigned bytes, 192 is -64 </li><li>When trying to read the current WiFi SSID name, some phones return null when WiFi is disabled, others return &lt;Unknown SSID&gt;. Even better they will continue to return &lt;Unknown SSID&gt; even when connected if the network does not provide internet.</li><li>The same function call on three different phones can be the key to everything working on phone A, do nothing on phone B, and crash the app on phone C. No - I'm not even talking about the documented API changes where they at least tell you this will happen. </li></ul><p>And many other fun things I have blocked out in order to maintain my continued sanity. Compared to all of that, the router side changes were a breeze. The addition of a very small billing module and some minor modifications to the usual neighbor tunnels was all that really needed to happen.</p><h3 id="what-s-new-in-beta-11"><a href="https://github.com/althea-net/althea-firmware/releases/tag/Beta11RC6?ref=blog.althea.net">What's new in Beta 11</a></h3><ul><li>Support for Althea android phone clients</li><li>Fixes for a bug where a node may run slowly and fail to validate all payments indefinitely</li><li>Fixes a bug where clients could build up overpayment credit with exits without using it</li><li>Fixes a bug where the clients would fail to bill correctly if the exit failed to respond</li><li>Easy exit adding interfaces now in the dashboard</li><li>Refactor of interfaces support to simplify WiFi port toggling</li><li>Support for Multi-Collateral DAI</li><li>Fixes for non-domain name manual peers</li><li>Dependency update</li><li>Usage history storage is now compressed for a 85% reduction in disk space usage</li><li>Start migration to rust std futures</li></ul><h3 id="overpayment-settling">Overpayment Settling</h3><p>When a router is paid too much by another router it puts the extra into a field called 'incoming payments' for later processing. This doesn't happen very often but I became interested what exactly was in this field while trying to clean up the debts storage files.</p><p>Routers have very limited disk space and I figured if we didn't owe anyone anything we could safely delete the entry. Like anything to do with billing, especially involving deleting data, I decided to inspect this assumption very carefully.</p><p>Incoming payments could typically get cleared out when a router is starting to get into a low balance state. Its overpayment credit is then applied by the other router before it's actually considered out of funds. Usually this is just a few cents at most. Probably due to some sort of crash or network disruption. </p><p>After more investigation I found that a small contingent of users who had always been very diligent in depositing funds into their router (never letting the balance even get close to low) were owed several dollars by their billing peers due to errors built up over the last year. Beta 11 contains a patch that will ensure these funds are applied right away so that it's no longer possible for them to bill up. These diligent users will see this as a few dollars of free service. </p><h3 id="overloaded-exit-fixes">Overloaded Exit Fixes</h3><p>Routers compute local bills for forwarded traffic, but for client traffic (download) they compute both their own bill and ask their exit server what it thinks the bill should be. This is important as it's possible for the exit to send more data than the client can see due to packet loss.</p><p>The Lagos exit in our Abuja deployment had been running rather slowly. Combined with the sudden addition of a dozen users this resulted in a short period where the exit was unable to respond to users requests to the exit. This effectively halted billing until the alarm was attended to and the exit repaired. While fixing this bug I couldn't help but think that the clients should have just gone ahead with their own estimation rather than doing nothing. </p><p>In Beta 11 routers will fall back to local billing only in the absence of an exit response to their settle-up request. </p>]]></content:encoded></item>
<item><title>Althea Development Update #80: Phone client networking, MCD upgrade</title><link>https://blog.althea.net/althea-development-update-80/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-80/</guid><pubDate>Mon, 06 Jan 2020 14:36:52 GMT</pubDate><description>Happy new year everyone! Since my last blog post
[https://blog.althea.net/althea-development-update-79/] I&apos;ve managed to implement the
alternate network design I proposed.

Phone client design proposed in update #79, now implemented and functionalThe
major hudles where as follows. 

 1. Turns out Ipv6 multicast sockets need to be rebound on all network change
    events AND on a timer in order to work consistently.
 2. Getting Android to route your app over WiFi networks that aren&apos;t detected to
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Happy new year everyone! Since my <a href="https://blog.althea.net/althea-development-update-79/">last blog post</a> I've managed to implement the alternate network design I proposed.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/12/traffic-flow-for-Althea.svg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Phone client design proposed in update #79, now implemented and functional</figcaption></figure><p>The major hudles where as follows. </p><ol><li>Turns out Ipv6 multicast sockets need to be rebound on all network change events AND on a timer in order to work consistently.</li><li>Getting Android to route your app over WiFi networks that aren't detected to have internet is possible in a limited since that's good enough to complete (1). But not good enough to go back to our original design.</li><li>There are 8 possible connectivity states between the phone and router. Handling every one correctly took some doing. </li></ol><p>I'm glad to report that everything works as expected and after some tweaking It's quite the smooth process to turn on and off. </p><p>The next major implementation step is to get into the billing code. I'm significantly less concerned about this portion of development because there aren't going to be a huge number of suprises to shake up the time line. Having a phone send transactions and act as a cryptocurrency wallet is something that lots of peole have done before and also something that doesn't need to interact with Android's restrictive network stack in any non-traditional way. </p><p>I hope to have a version with working billing out by mid January. This will be a generally usable Alpha build and at that point I will make a call for testing.</p><h2 id="multi-collateral-dai-upgrade">Multi-Collateral DAI upgrade</h2><p>We successfully updated the routers in our various networks to <a href="https://blog.makerdao.com/what-to-expect-with-the-launch-of-multi-collateral-dai/?ref=blog.althea.net">MCD</a> or 'multi collateral DAI'. The DAI stable coin works to maintain it's $1 = 1 dai exchange rate by using colateralized debt positions and up until now these positions where exlcsivley held in Ethereum. With this upgrade that is no longer the case and DAI is now backed by a mix of currencies. </p><p>Credit to the <a href="https://forum.poa.network/t/migration-of-the-xdai-tokenbridge-completed/3212?ref=blog.althea.net">POA bridge development team</a> for making backwards compatiblity happen with their bridge upgrade and saving us from a risky holiday deployment.</p><p></p><p></p>]]></content:encoded></item>
<item><title>2019 - A Year in Review</title><link>https://blog.althea.net/2019-a-year-in-review/</link><guid isPermaLink="true">https://blog.althea.net/2019-a-year-in-review/</guid><pubDate>Mon, 30 Dec 2019 07:17:03 GMT</pubDate><description>2019 has been a key year for Althea. We implemented our billing software and
grew our network in Oregon. From there, we launched a training and onboarding
program which brought in new network organizers, each starting a new Althea
network in their community. In the latter part of the year, two new networks
came to life in Tacoma and Abuja, Nigeria. In the New Year, we are looking
forward to building our own blockchain on Cosmos, wifi hotspot to phone
capability, and seeing many more of these net</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>2019 has been a key year for Althea. We implemented our billing software and grew our network in Oregon. From there, we launched a training and onboarding program which brought in new network organizers, each starting a new Althea network in their community. In the latter part of the year, two new networks came to life in Tacoma and Abuja, Nigeria. In the New Year, we are looking forward to building our own blockchain on Cosmos, wifi hotspot to phone capability, and seeing many more of these networks begin and grow.</p><p>It has been exciting to see the fulfillment of a vision in Clatskanie, Oregon. We’ve watched the network grow “block by block” as new relays connect their neighbors, and those neighbors begin connecting their neighbors. When I first started the network, I worked to get the word out and sold Althea as faster, cheaper internet made possible by neighbors selling neighbors bandwidth.</p><p>This was a simple proposition and one that resonated well with people with a 1Mbps connection. But it also caught on with many people with decent service too, because Althea gave them a local option and a way to make passive income. &nbsp;As the network grew, I noticed that people took ownership of their connection, that it was more than just great internet service. People running relays began to go door to door to sell their neighbors on bandwidth, and the network started growing organically.</p><p>We are finishing out the year with over 50 subscribers in Clatskanie, and we will be adding another high speed, fiber backhaul location, an Althea gateway, accelerating the growth to new areas. As these areas spread out, they will interconnect, giving subscribers multiple upstream providers. Althea’s price aware routing protocol will instantly switch between the faster and cheaper connection, giving people the best connection possible on a second-by-second basis.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/12/clatskrelay.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>A relay in Clatskanie overlooks the city.&nbsp;</figcaption></figure><p>During the year we made the switch from the Ethereum blockchain to the stable xDai currency. In most cases, subscribers still buy Ethereum using the Coinbase app and send it to the router, then the Ethereum is <a href="https://blog.althea.net/althea-development-update-74-automated-xdai-bridge/">converted seamlessly to xDai</a> using a Uniswap bridge. Relays and organizers who make money from the network withdraw in Ethereum using Coinbase too, and all transactions are in xDai so the price does not fluctuate and transactions are processed quickly. In early 2020 we will be implementing a Wyre widget directly on the dashboard that allows subscribers to simply use Apple Pay to load up their routers.</p><p>In August, we partnered with Republic to launch the first ever <a href="https://republic.co/althea?ref=blog.althea.net">legally compliant security airdrop </a>open to everyone. Aspiring network organizers, who perform the role of customer service and management of the network, earn tokens for learning about Althea and starting a network in their city. We now have over seven thousand participants! Twenty of these participants have started the process of gathering interested users through a pre-registration site like www.althea.net/tcn &nbsp;and two of the networks have already broken ground in Tacoma Washington and Abuja Nigeria.</p><p>The <a href="https://althea.net/tacoma-case-study?ref=blog.althea.net">launch of the Tacoma network</a> in mid-November is an excellent example of the advantage of leveraging private property and the power of neighbor-to-neighbor marketing. After initially launching their pre-registration site in July, online marketing and PR generated a buzz and pre-registrations in a spread out and sporadic way. But once the gateway (connection to wholesale fiber) at David’s house was established, David and the organizers went door-to-door, and nearly half of the block signed up!</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/12/TCNDots.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Red dots are traditional marketing sign-ups, and blue dots show the neighbor-to-neighbor sign ups.&nbsp;</figcaption></figure><p>The Tacoma network also features 60GHz, or 5G, antennas that provide fiber-like speeds at prices of around $35 dollars a month for most households. These millimeter wave antennas must be placed in line of sight and within a few hundred feet of the user. Incentivizing homeowners to re-sell to their neighbors allows Althea networks to use this technology more efficiently than cellular carriers who must pay for right-of-way on power poles or city lights for small cells. As new relays come on line in Tacoma, we will see the network spread out and grow - one high speed connected neighbor to another.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/12/silTacoma.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Installing a 60GHz antenna in Tacoma.&nbsp;</figcaption></figure><p>In December we also celebrated the launch of our <a href="https://blog.althea.net/althea-in-abuja/">first African network in Abuja</a>, Nigeria. Like much of Africa, internet speeds in Abuja are slow and most people only have access to internet on their phones. Since the launch of Althea, there has been excitement over faster and cheaper access and many people are looking forward to getting connected. Early on, there have been a few setbacks getting affordable antennas and routers to the organizers there, but waiting demand and the launch of the <a href="https://blog.althea.net/althea-development-update-78-building-a-phone-client/">wifi-to-phone capability </a>promises to bring a fast growing network in 2020. This wifi-to-phone functionality will allow anyone to use their Althea router’s wifi connection to connect and sell to nearby mobile phones, increasing the revenue for relays and broadening the market. As Althea CEO Jehan Tremback said “Any place within range of an Althea router can be an internet cafe - you just need the coffee.”</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/12/abuja.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Althea in Abuja, Nigeria.&nbsp;</figcaption></figure><p>As 2019 draws to a close, we want to thank all of our Althea organizers, subscribers, test validators and supporters. This year was a foundation year - we have set the stage, the lighting and props are ready, and the actors know their lines. In 2020, it’s curtains up and time for the networks to launch, grow and flourish. From major cities to small towns, Althea networks will spring up, and like the inevitable forward movement of a tidal wave, networks will grow as neighbors connect neighbors. Legacy monopolized ISPs will be a thing of memory, encompassed by this tidal wave of growth they will become relays in Althea networks as well. The marketplace will be fundamentally altered, and Althea will become the way all bandwidth is bought and sold.</p>]]></content:encoded></item>
<item><title>Althea Development Update #79: Things Android won&apos;t let you do</title><link>https://blog.althea.net/althea-development-update-79/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-79/</guid><pubDate>Wed, 11 Dec 2019 23:28:05 GMT</pubDate><description>Android devices as IPv6 mesh network participants
Recently we&apos;ve been working on a phone client for Althea
[https://blog.althea.net/althea-development-update-78-building-a-phone-client/]. Our first
design was to have every phone as a Babel node, advertising it&apos;s own routes and
generally functioning independently.

It turns out Android will let you do this, but only in a very specific way
that&apos;s not useful to us. Hopefully someone else finds the knowledge useful. 

The restrictions

 1. Android d</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<h2 id="android-devices-as-ipv6-mesh-network-participants">Android devices as IPv6 mesh network participants</h2><p>Recently we've been working on a <a href="https://blog.althea.net/althea-development-update-78-building-a-phone-client/">phone client for Althea</a>. Our first design was to have every phone as a Babel node, advertising it's own routes and generally functioning independently.</p><p>It turns out Android will let you do this, but only in a very specific way that's not useful to us. Hopefully someone else finds the knowledge useful. </p><p><strong>The restrictions</strong></p><ol><li>Android does not allow you to assign or modify network addresses unless you are inside a vpn tunnel. So you are at the mercy of whatever routes it decides to install into the routing table for a local network</li><li>Android does not support DHCPv6 in an attempt to force ISPs to assign IPv6 address blocks to customers rather than using nat6 or some other horrible solution, this means that even though we control the router we still can't insert routes, just addresses via SLACC.</li><li>Android only allows sufficient routing to contact immediate neighbour devices (such as to authenticate with a captive portal) until it has successfully completed a DNS lookup and https handshake with a Google server.</li></ol><p>The tl;dr of this is that you can have an IPv4 lan with Android but not an IPv6 one, IPv6 routing can either reach Google or doesn't work at all.</p><figure class="kg-card kg-image-card kg-width-full kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/12/traffic-flow-for-Althea-6-.svg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Diagram of all address types and why none are really good for what we need to do</figcaption></figure><p>As you can imagine this was a rather frustrating setback, requiring us to drop about a week of proof of concept work. Including a fully functional <a href="https://gist.github.com/jkilpatr/0d004bdbd1618ca73d5581c3f8baa0ae?ref=blog.althea.net">Babel light client</a>. Which as far as I know is the only somewhat functional implementation of the <a href="https://tools.ietf.org/html/rfc6126?ref=blog.althea.net">Babel spec</a> on Android. </p><p><strong>Ok, so what's the workaround?</strong></p><p>There are three possible paths forward for Althea.</p><ul><li>no boostrapping network, this would be like Airport WiFi, a little screen then internet. Everyone else on the network can dump your traffic and most importantly it's really easy to spoof anyone else and stick them with the bill. So that's a no go.</li><li>Bootstrapping network with IPv6 link local addresses. This is possible but only with some sort of address translation layer that's like NAT for IPv6 but even worse and more complicated. No thank you.</li><li>Bootstrapping network over IPv4. This is the one I ended up going with.</li></ul><p><strong>IPv4 light clients</strong></p><figure class="kg-card kg-image-card kg-width-full kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/12/traffic-flow-for-Althea.svg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Althea's new network diagram, with the exit tunnel servicing two different isolated NAT networks</figcaption></figure><p>This is the new design I've come up with to overcome Android's short comings, have phone clients act as a sort of light client to the host router.</p><p>The host router can then share it's IPv4 addressing to the exit and through the exit to the outside world.</p><p>This design is somewhere between the captive portal you would find at a Starbucks and the fully secure solution you find in the routers.</p><p>By using a WireGuard tunnel to the host router we get security from evesdroppers on the WiFi network, packet spoofing, and a very simple addition to our billing rules. </p><p>On the other hand the host router can still see the users packets, even if they are encrypted with HTTPS they will at least know what domains the user is visiting.</p><p>This IPv4 light client solution proposing is an improvement on the security properties of normal captive portals. But it's also a step backwards from the security promises that can be made by Althea routers.</p><p>We've decided to move forward with light clients and this security model for the time being.</p><p>Achieving the same privacy guarantees routers provide on Android would require a rewrite of <a href="https://f-droid.org/en/packages/com.wireguard.android/?ref=blog.althea.net">WireGuard Android</a> to produce nested tunnel packets natively. A task I estimate would take several months of work. </p><p>This way we can get a proof of concept out the door more quickly and easily and iterate from there.</p><p> </p>]]></content:encoded></item>
<item><title>Althea Development Update #78: Building a phone client</title><link>https://blog.althea.net/althea-development-update-78-building-a-phone-client/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-78-building-a-phone-client/</guid><pubDate>Tue, 26 Nov 2019 23:36:28 GMT</pubDate><description>It would be great for people to be able to buy a connection directly via their phone. You can’t really compete on price with something people already own.</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-image-card kg-width-full"><img src="https://blog.althea.net/content/images/2020/01/Development-final.ai.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>In the developing world smart phones are the ruling platform. Home internet and by extension home routers as a delivery method for that internet hardly exist.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/02/erx-vid-4.gif" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>An EdgerouterX running Althea starting up</figcaption></figure><p> Althea maintains an incredibly low entry price for home routers, on the order of $20. We’ve worked hard to make this low entry price possible partly because we have a aspirations of introducing much more affordable home internet into some developing markets. <br><br>But it would still be great for people to be able to buy a connection directly via their phone. You can’t really compete on price with something people already own. <br><br>With this in mind we’ve started an Althea android app.</p><p>How it’s structured code wise is pretty interesting, we’ve pulled in the userspace encryption implementation from <a href="https://f-droid.org/en/packages/com.wireguard.android/?ref=blog.althea.net">WireGuard android</a> into our own app. This provides the encryption we need to connect to Althea exit servers since we just use a standard WireGuard tunnel internally.<br><br>This means that we don’t have to re-do all the hard work of creating a WireGuard for android client in the first place and can take advantage of the excellent engineering common to all official WireGuard implementations.<br><br>Next up we implement a stub client of <a href="https://tools.ietf.org/html/rfc6126?ref=blog.althea.net">the babel routing protocol</a> I say stub because it is very much not a complete implementation and that’s intentional. This client has no support for advertising arbitrary routes or routing packets, this is intentional. <br><br>Phone WiFi systems are too weak to effectively provide internet service in a peer to peer fashion. Not to mention that Android is a pretty restrictive development environment when it comes to things like modifying WiFi and Bluetooth from inside an app. This is understandable due to the tracking possibilities <a href="https://en.wikipedia.org/wiki/Wi-Fi_positioning_system?ref=blog.althea.net">tracking people by checking nearby WiFi networks is very common</a> but unfortunate if you would like to have phones dynamically connect to each other without an existing network being shared. <br><br>By restricting the Althea phone client to ‘bandwidth buyer only’ we can get the engineering down to a manageable scope without too much trouble.<br><br>The source code can be found <a href="https://github.com/althea-net/althea-android?ref=blog.althea.net">here</a> and I encourage everyone to follow along with development. I plan to have a very rough proof of concept (hard coded user credentials) ready before Turkey day and then flesh out the UI and user experience during the first week or two of December. <br><br>Also expect an update tracking some of the difficulties of developing a networking application on Android, so far it’s been an experience full of pitfalls and unexpected behaviour. </p><h2 id="what-s-new-in-beta-10-rc4">What’s New in Beta 10 RC4</h2><ul><li>Added toggle to ease scd -&gt; mcd transition for the xdai bridge.</li><li>Added Wyre integration</li><li>Added Lagos exit</li><li>Added the ability to remotely change release feeds of routers so that releases don't have to be global</li><li>Compressed logging saves bandwidth when metrics collection is enabled, 95-99% improvement</li><li>Allow the free tier to be 'router only' when users haven't paid depending on organizer configuration</li><li>Change Oracle behaviour so that a user can refuse price oracle updates and still receive other settings updates</li></ul><p><br>Beta 10 originally had ambitions of including IPv6 support, which is &lt;languishing in this pull request&gt; right now due to lack of time to properly test. What did end up making it in are features focused on improving the developing world experience in line with our Abuja deployment and a few quality of life updates for existing users. <br><br>Logging bandwidth isn’t really a problem in the developed world as it’s only significant for relays but for deployments with more restricted bandwidth you really need to make every byte count. <br><br>Likewise the default ‘free-tier’ of 1mbps is a practical solution in markets where streaming is popular but as we try and serve a more diverse group of people it’s hardly a one size fits all. This adds a toggle option for specific networks where free bandwidth isn’t a practical choice. <br><br>The other two major changes that made it into this release are to facilitate the change to Multi-collateral DAI and allow users in the United States to buy Ethereum using a credit card directly from the router. Wyre (the payment processor that allows this) is still in the trial phase with us right now but we’re optimistic that this will make things even more seamless. <br></p>]]></content:encoded></item>
<item><title>November Community Update</title><link>https://blog.althea.net/november-community-update/</link><guid isPermaLink="true">https://blog.althea.net/november-community-update/</guid><pubDate>Fri, 22 Nov 2019 00:11:17 GMT</pubDate><description>We are excited to share the latest Althea news! Over the last few months, many
of our prospective deployments are getting close to launch, and networks in
Tacoma, Washington, and Abuja, Nigeria have broken ground. New Altheahoods have
also started in Phillipsburg, Tempe, DuBois, Grand Island, and South Africa. The
network in Clatskanie, Oregon has around 50 subscribers now and over 70 people
are waiting for Althea internet. The reach in Clatskanie continues to grow
mostly through the efforts of </description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>We are excited to share the latest Althea news! Over the last few months, many of our prospective deployments are getting close to launch, and networks in Tacoma, Washington, and Abuja, Nigeria have broken ground. New Altheahoods have also started in Phillipsburg, Tempe, DuBois, Grand Island, and South Africa. The network in Clatskanie, Oregon has around 50 subscribers now and over 70 people are waiting for Althea internet. The reach in Clatskanie continues to grow mostly through the efforts of excited relays who go door-to-door to talk about their internet and get their neighbors connected. &nbsp;Our software works well, bugs and disruptions are minimal, and people pay their neighbors for bandwidth like it's a normal thing. <br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/11/dish.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>New antenna installed in Clatskanie.</figcaption></figure><p><br>The network in Tacoma is now live! Tacoma Cooperative Network, recently launched its network in the diverse, urban neighborhood of hilltop. <em>Our community has faced a multitude of issues accessing reliable, affordable internet,”</em>said Ann Dorn, organizer at Tacoma Cooperative Network.<em><strong>“</strong>We’ve talked to several people who live in areas where there’s only one service provider, which is either too expensive or too slow. We invite residents to join us as a member, not as a customer, so they can help shape the service to best serve their needs.”</em><br><br>“<em>We’re passionate about building democracy and changing lives by making the internet affordable and accessible,”</em> said Bee Ivey.<em>“We have structured ourselves to be member-owned and run, so this is truly internet for the people, by the people.”</em><br></p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/11/20191109_192238.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p><br>Having affordable access to the internet isn’t just a rural problem. One of the first connected people, Cheryl Smith, didn't have any internet service until recently when she got connected to the Althea network. Her and her sister are both disabled and live together in a small house in hilltop. Cheryl is going to school for a master's degree in Business Management, but they have no vehicle, so she rides a bus where she can or uses an older electric wheelchair. &nbsp;To do homework, she had to go to the local library to use their computers and the internet - they just couldn't afford internet in their home. <br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/11/BeeandShaun.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Bee installing a new user in Tacoma.&nbsp;</figcaption></figure><p><br>Cheryl became one of TCN’s early supporters when Bee met Cheryl over the summer and told her about their cooperatively-owned internet network. With Althea you only pay for what you use, and the network is cheaper than other alternatives. Even if Cheryl has a hard month, she won't have to decide between feeding her, her sister, and her family of pets, or being able to comfortably do her homework and watching streaming video. With her new high-speed Althea internet, she can now access her health records online, keep in contact with family, and finish her education. <br><br>Our network in Nigeria is poised to launch! Backhaul will be installed any day now which will bring cheaper and faster internet to the residents of the capital city, Abuja. Local Althea organizer, Yakubu Yakubu or Yaxx, will be managing the deployment of the network there and earning a monthly subscription fee for every subscriber on the network. Local businesses and homeowners, like Yaxx’s cousin Usman, will put long-range wireless gear on their homes to resell bandwidth to neighbors. <br><br>We are also excited to announce that we will be partnering with MakerDAO to expand this network in Nigeria. People will be able to buy Dai directly on their home router dashboards to pay for service, or they could buy Dai in local stores with cash. <em>“Althea’s networks are exactly the kind of real-world, empowering systems where we believe Dai can truly make a difference. We are excited to continue to build out bandwidth networks with Althea in places that deserve better infrastructure,” </em>remarks Greg DiPrisco, head of business development at MakerDAO.<br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/11/Yaxx2.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Yaxx with a vendor in Abuja who will help exchange cash for dai.&nbsp;</figcaption></figure><p><br>Another key development is our partnerships with middle mile carriers and local ISPs, who will allow local organizers to buy bandwidth on a per GB basis instead of a costly long-term lease. For our Newberg network, we will be partnering with the city of Sherwood to locate the gateway, and local organizer, Austin, can get started connecting people right away. In Grand Island, New York, local wireless ISP in nearby Buffalo, Rooftop Data, will be partnering to offer wireless backhaul to the Island. As our reach grows, we are seeing that many incumbents and municipalities are interested in these partnerships. <br><br>Althea networks bring faster, cheaper internet to communities and opportunities for ongoing revenue for organizers and community members. Now is a great time to start an Althea network! You can learn more about how things work and submit a proposal at <a href="http://www.republic.co/althea?ref=blog.althea.net">www.republic.co/althea</a>. <br><br></p>]]></content:encoded></item>
<item><title>Althea and MakerDAO partner for Abuja Network powered by Dai</title><link>https://blog.althea.net/althea-in-abuja/</link><guid isPermaLink="true">https://blog.althea.net/althea-in-abuja/</guid><pubDate>Mon, 04 Nov 2019 16:43:47 GMT</pubDate><description>Althea, a system that lets routers pay each other for bandwidth, is launching
its first network in Africa in early November 2019. An initial pilot network
will start with about 15 participants. A partnership between MakerDAO and Althea
will then help bootstrap the expansion of the network, bringing in more gear and
better bandwidth. Althea is a decentralized ISP solution, operated by local
people, where neighbors resell bandwidth to neighbors, creating a distributed
network of routers paying eac</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>Althea, a system that lets routers pay each other for bandwidth, is launching its first network in Africa in early November 2019. An initial pilot network will start with about 15 participants. A partnership between MakerDAO and Althea will then help bootstrap the expansion of the network, bringing in more gear and better bandwidth. Althea is a decentralized ISP solution, operated by local people, where neighbors resell bandwidth to neighbors, creating a distributed network of routers paying each other for bandwidth. <br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/fb8e157ab9ad79dee4a6.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Usman and his family, excited for better internet.&nbsp;</figcaption></figure><p>Althea organizer, Yakubu Yakubu (or Yaxx) resides in the capital city of Abuja. It’s here that he will be launching the first Althea network in Africa. “We’re in the dark here,” Yaxx says. “Local schools and businesses can’t get the access they need to compete in today’s global economy”. Yaxx hopes that setting up an Althea network will allow his neighbors to resell bandwidth at a more affordable rate and make money too. Once the initial wireless infrastructure is built, some of the participants may elect to sell their bandwidth from their wifi hotspot to nearby mobile devices. This will increase the reach of the network and revenue for relays. <br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/bff8a15bb2a597b81ec3.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Yaxx and Ruth, one of the participants of the&nbsp;network.</figcaption></figure><p>Althea’s first node will be at an apartment complex near the heart of the city-owned by Yaxx’s cousin Usman. Small businesses and a park are nearby, with many middle-class homes and apartment buildings. Usman will set up a fiber connection to his building and place antennas on the roof. These antennas broadcast the internet to nearby homes and businesses. He’ll make about 10 cents for every GB used. Usman works at the airport and sells cars, and he’s excited about the extra income he’ll make from operating an Althea gateway.<br> <br> Yaxx doesn’t make money from reselling bandwidth like his cousin Usman. Instead, he will act as an organizer for the network — helping people install antennas and being there if something goes wrong. He earns a monthly subscription fee for this work from every router on the network. He also helps coordinate and partner with other local people who want to become relays or gateways, like Usman. <br></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/7827d199ecb4fecf7ae4.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The first gateway location in&nbsp;Abuja.&nbsp;</figcaption></figure><p><br> This network runs on Dai, a stablecoin developed by MakerDAO. This is a type of cryptocurrency that always stays equal to the US dollar, eliminating the volatility that has kept cryptocurrencies like Bitcoin from being used in everyday commerce. People will be able to buy Dai directly on their home router dashboards to pay for service, or they could buy Dai in local stores with cash. <em>“Althea’s networks are exactly the kind of real-world, empowering systems where we believe Dai can truly make a difference. We are excited to continue to build out bandwidth networks with Althea in places that deserve better infrastructure,” </em>remarks Greg DiPrisco, head of business development at MakerDAO.<br> <br> Big telecom monopolies dominate the internet landscape in Nigeria, keeping prices high and much of the population without access. Here, only 46 percent of the country are internet users and most of that usage is via cellular carriers, providing less than 1Mbps with prices around $3 a GB.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/61a92a9b520660e1abb0.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Yaxx and Ken. Ken will have great internet, and the ability to resell bandwidth and grow the&nbsp;network.</figcaption></figure><p>Having affordable, fixed internet access at home will transform people’s lives here in Abuja. Everyone in the family will have much better access to educational and economic opportunities. Businesses will be able to sell and ship products online. Hospitals and medical centers will have access to more knowledge and expertise. Using Dai to buy and sell bandwidth will quickly become the new normal here, and as the network expands in this internet vacuum, the new normal throughout Abuja, Lagos and all of Nigeria.</p>]]></content:encoded></item>
<item><title>Althea Development Update #77: Hiding in plain sight</title><link>https://blog.althea.net/althea-development-update-77-hiding-in-plain-sight/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-77-hiding-in-plain-sight/</guid><pubDate>Tue, 29 Oct 2019 22:28:06 GMT</pubDate><description>Since our last update I’ve encountered a couple of bugs  where the problem had been hiding in plain sight. In one case for weeks and another for a year or more. Discovering root causes long term subtle bugs is both satisfying and important to create a better product. </description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Since our last update I’ve encountered a couple of bugs &nbsp;where the problem had been hiding in plain sight. In one case for weeks and another for a year or more. Discovering root causes long term subtle bugs is both satisfying and important to create a better product. </p><h2 id="the-self-hiding-log-message">The self hiding log message</h2><p><br>In our second most recent release <a href="https://github.com/althea-net/althea-firmware/releases/tag/Beta8RC4?ref=blog.althea.net">Beta 8</a>, there was a neat little line the changelog mentioning </p><blockquote><em>Multihomed exits are now on by default, increasing reliability.</em></blockquote><p><br>This is a feature I've been working on in the background for quite some time. Most modern web applications are hosted in clusters of servers so that any one can fail without taking the whole service down with it.<br><br>'Multihomed exits' describes moving our exit servers into this sort of architecture, where one or more than one could fail without significant impact on it's users.<br><br>This is actually quite technically challenging because of the encryption we are using. WireGuard provides Althea connections a property called <a href="https://en.wikipedia.org/wiki/Forward_secrecy?ref=blog.althea.net">perfect forward secrecy</a>, this means the server uses it’s public encryption key to negotiate another encryption key that will be discarded by both parties at a later time. <br><br>Even if a hostile entity decides to capture traffic for years and then some day gets it’s hands on the exits encryption key it still won’t be able to decrypt the traffic captured years ago. Because the traffic is actually encrypted with a session key that was generated by both parties and then scrubbed from existence after exactly a minute. <br><br>While this is an excellent privacy feature we can’t just redirect traffic from one exit to the other, even if they share the same encryption keys, the session key will need to be securely re-negotiated on demand. A feature WireGuard does not provide. <br><br><a href="https://blog.cloudflare.com/warp-technical-challenges/?ref=blog.althea.net">Cloudflare </a>ran into this same issue with their WireGuard based WARP VPN. Their solution is actually remarkably similar to ours, which I find somewhat disappointing as I was hopping to find a superior one. <br><br>While a single Cloudflare server failing won’t take down everyone on their WARP service but it will disrupt connectivity for all the users on that machine for a minute.<br><br>Cloudflare uses their own packet tagging system we re-direct traffic with Babel to achieve the same effect that we get with Babel redirecting traffic. The connection drops for 60 seconds while the user waits for WireGuard to re-negotiate the key and then the user is back online on the other exit. <br><br>Obviously that's a pretty disruptive wait but it sounds pretty easy to deal with, just make sure that traffic doesn’t get redirected unless the primary server is actually down. <br><br>As I learned the hard way that’s not actually so easy. Babel is designed to switch connections proactively as it tries to maintain a solid network out of a series of unreliable links. <br><br>I thought I could stay ahead of this by configuring Babel with a very strong preference for one exit server. I tried this solution and after some testing and the design of a monitoring tool I moved it into production. <br><br>Everything seemed perfect, even on prolonged observation. I congratulated myself on a job well done and moved on. <br><br>Over the next few weeks reports of momentary connectivity outages rolled in. But none of my monitoring was being tripped. <br><br>I was puzzled for a few weeks. The reports where very infrequent but I couldn't’ deny that something was going on that I couldn’t see.<br><br>Eventually I realized that I had designed my monitoring with a fatal flaw. I was using the connection that was being disrupted to monitor connection disruption. Very short disruptions that resolves themselves in under a minute would have their notification messages lost as the connection to the new exit server would never finish. <br><br>After rolling back the change problems abated, Cloudflare avoided solving this problem for good reason. It’s complicated and will require nothing short of shared cryptographic session state across a cluster of exits. A challenge it seems neither of us are really prepared to take on at the moment. <br><br>For the time being we will have to satisfy ourselves with scripted fail over to our secondary exits rather than the dynamic latency and packet loss detecting fail over that Babel would have allowed.<br></p><h2 id="nodes-won-t-accept-new-connections-after-months-of-uptime">Nodes won’t accept new connections after months of uptime</h2><p>As our test network grows larger the amount of node churn any individual node sees inevitably increases. <br><br>We started to run into another puzzling bug, after several thousand different node connections and reconnection an Althea router would be unable to successfully connect with new peers.<br><br>This condition would take weeks or months of uninterrupted uptime to appear on production routers, but appear it did. The root cause turned out to be rather interesting. <br><br>Babel (our mesh daemon) needs to be started using an interface. But since all of the interfaces we talk to peers over are virtual encrypted links created by Rita (our billing daemon) its sort of a chicken and egg problem. My ‘clever’ solution was to launch Babel bound to the systems loopback interface. <br><br>This turns out to trigger buggy behaviour in Babel where any interface going from an active to an inactive state will trigger a memory allocation in Babel. &nbsp;It’s pretty similar to the bug outlined <a href="https://github.com/sudomesh/bugs/issues/24?ref=blog.althea.net">here</a>. At first glance this sounds like the sort of memory leak that would eventually crash the program. Which would be fine as it would be restarted by our downtime watchdog script. <br><br>But due to a quirk of how exactly interface pointers are allocated only additional virtual memory is consumed. Presumably because malloc is run but the memory is never written to before the handler exits. So eventually Babel would be stuck unable to allocate additional memory from the operating system but otherwise continuing to function perfectly. <br><br>Our latest stable release, Beta 9 incorporates a fix for this problem. Ironically it turns out feeding babel the name of <a href="https://github.com/althea-net/althea-firmware/commit/4632745334a7056f3753413a7069341ec6f6c564?ref=blog.althea.net">an interface that doesn’t exist</a> is much safer and more gracefully handled. <br><br>Another lesson for the ‘too clever for my own good’ pile. <br></p><h2 id="development-status">Development status</h2><p>We’ve been working on stabilizing the Beta 9 release for the last couple of weeks and with <a href="https://github.com/althea-net/althea-firmware/releases/tag/Beta9RC5?ref=blog.althea.net">Beta 9 RC5</a> we’re going to call it a wrap and move onto more ambitious features for Beta 10. We really wanted a stable base for our first Altheahoods as they get off the ground and Beta 9 will provide that. <br><br>At this point we have a pretty rock solid product where nodes can easily accumulate months of uptime without failures. The primary goal of all future development is to add new functionality without changing that.<br><br>Beta 10 &nbsp;will include compressed telemetry logging, which saves quite a bit of upload data for large nodes such as gateways which often have telemetry on. It will also include our first foray into IPv6 dualstacking for user devices. Which is something we’ve avoided so far for compatibility reasons despite our own internal network being IPv6 native. <br><br>As user counts grow we really don’t have any choice but to get dualstacking (providing user devices both an IPv4 and IPv6 default route simultaneously) figured out. Otherwise our exits will require an unsustainable number of IPv4 external IP addresses to map NAT traffic. <br><br>Beta 11 will be updating Babel to include upstream fixes and to add the ability to set per-interface prices. This is very important for relays that are both serving individual users and other relays. Otherwise you either have to provide all the direct users the wholesale rate or your wholesale buyer the user rate. Neither is sustainable as networks get deeper and less tree-shaped.<br></p>]]></content:encoded></item>
<item><title>Roles in the Althea network</title><link>https://blog.althea.net/roles-in-the-althea-network/</link><guid isPermaLink="true">https://blog.althea.net/roles-in-the-althea-network/</guid><pubDate>Tue, 15 Oct 2019 17:19:53 GMT</pubDate><description>The difference between Althea and most networks is that Althea is decentralized and so different members of the public can perform different roles. </description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>There are a lot of moving parts in Althea, just like any computer system. The difference between Althea and most networks is that Althea is decentralized and so different members of the public can perform different roles. For this reason, it’s good to understand the roles and how they interact.</p><h2 id="physical-network">Physical network</h2><p>These nodes are involved in actually connecting Althea users to the internet.</p><h3 id="subscribers-end-users-">Subscribers (end users)</h3><p>Althea’s goal is to provide faster, cheaper internet access to subscribers. A subscriber has an Althea router into which they have loaded tokens (a dollar-equivalent stablecoin). They’ll usually also have an antenna on the outside of their house, known as a CPE (customer premises equipment). This is the same kind of antenna used by centralized wireless ISPs. Some subscribers are connected over wires, for example if they are in an apartment building, or if they have run an outdoor ethernet cable from their neighbor.<br><br>Subscriber’s routers automatically pay for their service in two ways:</p><ol><li>Bandwidth payments: This is a per gigabyte price, similar to how cell phone data is billed, but much cheaper. This is paid directly to the relay(s) to which the subscriber is connected. A subscriber’s router will choose whichever relay is offering the best combination of price and quality.</li><li>Subscription fee: This is a fixed monthly fee paid by automatically the user’s router to the organizer of their local Althea network. This compensates the organizer for providing technical support and service, and allows them to spend time and money promoting the network in their area. Organizers support the network as a part time effort or full time job.</li></ol><p>Subscribers connect to the internet over exit nodes, which are just like VPN servers. A subscriber does not need to worry that the relay(s) they are getting internet access from can see their browsing history, and relays and gateways don’t have to worry about getting in trouble for anything subscribers are doing on the network. The exit node also helps keep relays honest by performing automatic speed tests behind the scenes.</p><h3 id="relays">Relays</h3><p>Relays make up the physical infrastructure of Althea. They do the work of transmitting data across town and getting internet access from gateways to subscribers. Relays can come in many shapes and sizes. A few common examples:</p><ul><li>A smaller relay that might only be connected to one other subscriber using a second CPE, helping their neighbor get access while making a little money.</li><li>A network of users who are both subscribers and relays, where every house has several links to other nearby houses. In this type of network Althea’s routing protocol balances data flows over all available links. Nodes switch from buying to selling bandwidth from second to second.</li><li>A relay that uses sector antennas to connect to up to 50 subscribers. Sector antennas have a wider beam width and are designed to have a lot of CPEs connected to them.</li><li>A relay that uses a faster point to point antenna to connect to another relay which is connected to a lot of subscribers.</li><li>A relay that is in an apartment building, selling bandwidth to tenants over the building’s wiring.</li><li>A relay that is selling bandwidth to a neighbor over an outdoor ethernet cable. These are common in the Althea network in Medellin.</li></ul><p>There’s actually no difference between subscribers and relays in the Althea firmware. In a few of the above examples, relays are subscribers partially offsetting their own internet usage by selling bandwidth. In some of the other ones, the relays are professionally run.<br><br>Every relay in an Althea network earns a profit on top of what it buys bandwidth for. For example, if you are buying bandwidth from a neighbor for $0.10/gb, you might charge a profit of $0.05/gb and earn a total of $0.15/gb.<br><br>This means that subscribers will tend to get better prices the closer they are to a gateway, but we don’t expect prices across the network to be as variable as you might think, because relays will give each other discounts in order to be able to reach new subscribers. If I’m selling you bandwidth at $0.10/gb (same as I charge the 10 other subscribers connected to me), but you have the ability to reach 50 new customers, I might want to sell you bandwidth at only $0.02/gb and make twice the money I am now.<br><br>This market based system will also incentivize “bandwidth arbitrage”- when someone realizes that they can buy bandwidth in a cheaper part of the network, set up a long range link, and sell the bandwidth in a more expensive part of the network. Althea’s price-aware routing protocol allows routers to switch over to cheaper sources of bandwidth within seconds.</p><h3 id="gateways">Gateways</h3><p>Gateways physically connect an Althea network to the Internet. The technical definition of an Althea gateway is a node that sells bandwidth using Althea, but gets the bandwidth somewhere else, usually a monthly payment to an ISP. You may be wondering- where does the internet “come from”? The short answer is that there are wholesale ISPs - known as tier 1 or tier 2, which have a nationwide and global reach. They specialize in connecting a city or a region to the whole world. Retail ISPs, or tier 3, offer plans to homes and businesses while purchasing service from the wholesale ISPs.<br><br>Althea currently competes with the retail ISPs, since they are often worse run and more monopolistic than the wholesale market. A typical Althea network has one or more gateways buying internet wholesale and selling it into the network. Any number of nodes in an Althea network can be acting as gateways, and they compete against each other to provide bandwidth to the network. <br><br>People running gateway nodes do not have to worry about what people using their bandwidth are doing, and users don’t have to worry about gateway nodes seeing their traffic because of exit nodes.</p><h3 id="network-organizers">Network Organizers</h3><p>Althea network organizers help subscribers in their area install the equipment to get on the network, and provide technical support to subscribers. They also help promote their network to get subscribers to sign up so that relays and gateways can make money. In these roles they are much like traditional ISPs, except for the important difference that they do not own the infrastructure that the network is built on (this infrastructure is owned in a distributed manner by individual relay and gateway nodes). In many traditional ISPs, the role of owning and monetizing infrastructure dominates, and customer support often falls by the wayside.<br><br>Network organizers receive a fixed monthly fee from every router on the network, in contrast to relays and gateways, which are paid directly by the subscribers and other relays connected to them. An area, and the Althea nodes in it, can actually have several different network organizers competing with one another. Organizers run virtual networks called “subnets”, and any given relay can be members of several. This means that if an organizer is not providing good customer service, subscribers can easily switch to a different organizer while remaining connected to the same relay.<br><br>This flexibility also benefits the organizers. By spreading the infrastructure investment of the network out among property owners in their community, the network can grow larger faster, while organizers focus on customer service. By aligning incentives among many people in the area, the Althea network as a whole has an advantage over traditional ISPs.</p><h3 id="exit-nodes">Exit nodes</h3><p>Exit nodes logically connect one or many Althea networks to the Internet. They often will be in another city at a data center, rather than being part of the physical network. They provide the public IP addresses used by Althea subscribers to access the public internet. They also keep subscriber’s browsing history secure from the physical nodes which make up the network, like a VPN. The Althea team runs default exit nodes, but it is also possible for a subscriber to use a different exit node. </p><h2 id="blockchain-network">Blockchain network</h2><p>The blockchain processes transactions between nodes on the physical network. The currency used in transactions between routers is a stablecoin, which maintains its value at exactly 1 US dollar. This way users do not have to deal with currency fluctuations. There is another token on the network called ALTG, or Althea Governance token. This is used to govern the network as explained below.</p><h3 id="blockchain-validators">Blockchain Validators</h3><p>Validators compile individual transactions into blocks. In this way, they are similar to miners in Bitcoin. Bitcoin miners compete to mine the next block by trying to waste the most electricity. Althea validators compete by getting the most Althea token holders to delegate coins to them. When you delegate to a validator, it’s a vote of confidence that they will create blocks correctly and stay online. If they don’t, all token holders that have delegated to them will lose 5% of their delegated coins. Validators take a small percentage of the block rewards and transaction fees they earn, and pass the rest on to the token holders delegating to them.<br><br>Validators also play an important role in governance. Token holders can vote on proposals for upgrades to the blockchain’s code (and maybe someday physical node’s code). But if a token holder doesn’t care enough about an issue to vote, the validator they have delegated their tokens to can vote with those tokens. In this way, the governance system is like a representative democracy.<br><br>The Althea blockchain is built on the Cosmos blockchain framework, so you can learn more about how it works by studying Cosmos.</p><h3 id="altg-token-holders">ALTG token holders</h3><p>As explained above, these people have the ultimate control over the Althea blockchain by staking their coins with the validators who run the blockchain software. They also receive transaction fees from every transaction between routers. These tokens will be mostly held by the Althea community. As of 2019, we are granting them to people who are working on starting Althea networks. We may also grant some to important players in the open source internet world, such as standards bodies like the IETF and others. The company behind Althea (Hawk Networks, inc) will hold 25% of these tokens to finance ongoing development from the transaction fees.</p>]]></content:encoded></item>
<item><title>Althea Development Update #76: Automatic connection tuning</title><link>https://blog.althea.net/althea-development-update-76-chasing-latency/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-76-chasing-latency/</guid><pubDate>Fri, 04 Oct 2019 18:13:14 GMT</pubDate><description>Now we&apos;re exploring that we can do with multihomed users and connections</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/10/bitmap-4.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Map of our test network about one year apart.</figcaption></figure><p>We've come a long way in the last year we now have a much more varied network. Last year we had a pretty simple tree topology with no loops or any good way to take advantage of the redundancy and routing that babel really offered. </p><p>Now we're exploring that we can do with multihomed users and connections. Which brings us to what I was talking about in <a href="https://blog.althea.net/althea-development-update-75/">my last dev update</a>. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/10/Screenshot-from-2019-10-03-07-12-31-2.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Before and after comparison of network latency spikes, you can see the transition point late Thursday</figcaption></figure><p>As promised the automatic latency tuner I was working on is out and being tested in production. The diagram above shows a 10x improvement in latency spikes after deploying our new tool. </p><p>As far as I'm aware this is the first system of it's kind deployed for the last mile. How if functions is <a href="https://github.com/althea-net/althea_rs/blob/master/rita/src/rita_common/network_monitor/mod.rs?ref=blog.althea.net">pretty straightforward</a> and for the time being flawed but still effective. </p><p>Each router passively observes the status of it's neighbors connections by scraping Babel, when the round trip time to it's neighbors starts to spike it will reduce the maximum allowed throughput on that connection by 20% in order to fight bloat. </p><p>What this is really tuning is the shaper in the Cake <a href="https://www.bufferbloat.net/projects/codel/wiki/CakeTechnical/?ref=blog.althea.net">traffic queue dicipline</a> by reducing the maximum bandwidth on the link eventually Cake becomes the bottleneck and it can carefully prioritize traffic across the limited link instead of allowing the link to increase latency and disrupt user experience. </p><p>There are several future improvements to be made to the design of this system, mostly around reducing the rate of false positives by observing things like how much traffic is actually traversing the link at any given time and by working with unidirectional latency rather than round trip time. </p><p>But for the time being it's already providing a nice improvement for users.</p><hr><h3 id="gateway-client-corner-case-billing-issues">Gateway-client corner case billing issues</h3><p>The billing issue I talked about last week has been identified as a variation on the gateway-client corner case. An edge case that <a href="https://forum.altheamesh.com/t/the-gateway-client-corner-case/35?ref=blog.althea.net">has plagued us for quite some time</a>. </p><p>It comes up when a user wants to run Althea as a standalone device on existing backhaul by being both a gateway, a relay, and a client all at the same time. This is problematic to handle for a number of reasons, the gateway must complete somewhat conflicting goals of sending all user traffic over the encrypted exit connection while still relaying packets for other routers to the exit using the backhaul directly. </p><p>At some point during this forwarding process the gateway counts it's own client traffic as a billing credit and throws the whole system off. This is pretty easy to fix by simply not using gateways as clients somthing that's already universally true in our actual deployments. </p><p>Most people don't spend their time plugged directly into a server in the back room. </p><p>We just need to finish unravelling some other technical debt and we'll completely remove this corner case from v10 of the firmware. </p><hr><h3 id="what-s-new-in-beta-9"><a href="https://github.com/althea-net/althea-firmware/releases?ref=blog.althea.net">What's new In Beta 9?</a> </h3><ul><li>Automated detection and resolution of latency spikes</li><li>Support for Multiple LAN ports</li><li>Support for WAN ports with static IPs</li><li>Logging is now easily configurable from the dashboard</li><li>Fixes for the /neighbors endpoint</li><li>Dependency updates for Clarity and Rita</li><li>Reduced image size by excluding trace level logging messages</li></ul><p> </p>]]></content:encoded></item>
<item><title>Introduction to Researching Market Potential</title><link>https://blog.althea.net/market-potential/</link><guid isPermaLink="true">https://blog.althea.net/market-potential/</guid><pubDate>Wed, 02 Oct 2019 18:26:33 GMT</pubDate><description>Researching market potential is an important part of starting an Althea network.
While adding more links to an existing Althea network is relatively easy,
setting up that network is similar to starting a wireless ISP business and
requires research and planning to ensure that take rate and revenue make sense.

The three basic things to consider when evaluating an area are wholesale
backhaul, competition, and an understanding of the community and demographics. 


Wholesale Backhaul
Buying backhaul</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>Researching market potential is an important part of starting an Althea network. While adding more links to an existing Althea network is relatively easy, setting up that network is similar to starting a wireless ISP business and requires research and planning to ensure that take rate and revenue make sense. &nbsp;<br><br>The three basic things to consider when evaluating an area are wholesale backhaul, competition, and an understanding of the community and demographics. <br></p><h3 id="wholesale-backhaul">Wholesale Backhaul</h3><p>Buying backhaul is the basic “cost of goods sold” and determining both the cost and location will impact many of the future aspects of the network. The home, business, or tower where the incoming wholesale fiber connects to an Althea router and then broadcasts to the community is referred to as the “gateway” in an Althea network. This can be in a location which the organizer directly owns or rents, or it can be a partnership with a business, homeowner, or even a school or hospital. Middle mile and backhaul providers will need a physical address to quote with, so start by locating a few different prospective locations. <br><br>A few other ideas to consider when searching for backhaul:<br></p><ul><li>Check with your municipality. Where are they getting their connection? Can they lease you their fiber? Ask them about the carriers they are aware of.</li><li>Check with nearby power companies or electrical co-ops. They sometimes have a fiber network.</li><li>Get Wireless backhaul from the next town over's WISP. Use the FCC's broadband map to find out who is operating in your area.</li><li>Find out who your competition is leasing fiber from.</li><li>What are your anchor locations, like a school or health care center - can you partner with them to lease fiber?</li><li>Get quotes from sales people who can provide multiple carrier quotes. We can help with this one if you provide addresses to quote from.</li></ul><h3 id="competition">Competition</h3><p>It’s also important to research the competitive ISP’s recurring and upfront costs, speed tiers, and customer service. In the United States, the FCC’s broadband map and <a href="http://www.broadbandnow.com/?ref=blog.althea.net">www.broadbandnow.com</a> will give you a starting point. Understanding the competitors will give you an idea of what speeds and prices you need to provide, and it may help you determine which messaging will work best in your area. Talking to local real estate agents might also provide perspective on the local competition. Keep in mind that even when people are unhappy with their current provider, the hassle of switching providers is a big barrier to changing their service. &nbsp;Anger towards incumbent providers often only results in a one to three percent take rate, so you must also be a clearly better option in terms of service, cost, or performance. <br></p><h3 id="community">Community</h3><p>Understanding your community will involve both on-ground learning and research. Starting with demographics will give you an overall picture of age groups and income, but engaging with key community members is equally important. Community members or key groups can help answer questions like &nbsp;- What can people in the area afford? Are you in a multi-lingual community? How might a new technology be perceived? Engaging with your community will also help you learn more about potential partners like universities, hospitals, or community centers who may have their own digital equity and digital inclusion projects. <br><br>From this research, you can begin to estimate take rates and target prices. Can you clearly position your Althea network to offer better prices, service, or performance? A compelling market fit is important to the start and early growth of the network. Once an Althea network is established, the relays and gateways are incentivized to promote and help your network grow organically. <br></p>]]></content:encoded></item>
<item><title>Althea Development Update #75: Chasing latency</title><link>https://blog.althea.net/althea-development-update-75/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-75/</guid><pubDate>Mon, 16 Sep 2019 15:07:03 GMT</pubDate><description>We apply latency control judiciously throughout at every Althea node in the network, with the ultimate goal of fairly allocating bandwidth at any given bottleneck.</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>I talk about this rather a lot, <a href="https://www.reddit.com/r/darknetplan/comments/d2b7nl/a_couple_of_noob_questions_about_meshnetdarknet/ezu09rh/?ref=blog.althea.net">latency is the defining factor of the modern internet &nbsp;</a>above all the internet is a low latency network which is why I think that the <a href="https://www.youtube.com/watch?v=9wZbmuXS_K0&amp;ref=blog.althea.net">way Althea handles latency </a>versus capacity is such a serious defining factor of how our system works.</p><figure class="kg-card kg-image-card"><img src="data:image/png;base64,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" class="kg-image" alt="traffic flow for Althea.png" loading="lazy" decoding="async"></figure><p>We apply latency control judiciously throughout at every Althea node in the network, with the ultimate goal of fairly allocating bandwidth at any given bottleneck. This behaves very well so long as the bottleneck is one of the Althea nodes, but the intermediate radio links don’t behave nearly as well when overloaded. </p><figure class="kg-card kg-image-card"><img src="data:image/png;base64,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" class="kg-image" alt="bufferbloat.gif" loading="lazy" decoding="async"></figure><p><br>Here’s a pretty classic example of an overloaded wireless radio introducing bufferbloat. The connection goes from a very excellent latency of 7ms to over 150ms as the wireless radio accepts more packets than it can send into it’s buffer before playing them back several hundred milliseconds later. <br><br>This is a pretty well known problem in the WISP industry. The usual solution is to over-provision backhaul links pretty significantly. There are alternatives that involve shaping traffic back at the datacenter, but those reduce capacity at the edge by deliberately reducing link over-subscription. <br><br>Both of these solutions are more manual than we would like and have costs we would prefer not to incur. We would prefer to spend that same money on extra links to simultaneously improve capacity and reliability.<br><br>So far the design of Althea has modelled antennas simply as wires. But situations like this and less subtle problems like outright bad radios will require some careful thinking and design. Ultimately our goal is to eliminate the hand tuning, over provisioning, and prolonged link investigations that WISPs often have to undertake. <br><br>Fortunately already have latency and packet loss estimations provided by Babel that should allow us to make educating tuning decisions automatically. As far as I know a system like this would be the first of it’s kind, so I’m excited to share a prototype with everyone hopefully in the next couple of weeks. <br></p><h2 id="billing-testing-and-quirks">Billing testing and quirks</h2><p>When I introduced our <a href="https://blog.althea.net/althea-development-update-72-easy-local-althea-testnet/">improved integration tests </a>a few weeks ago it was with the intent of improving billing convergence, where all nodes agree on what every other node is owed. <br><br>Thanks in large part to that improved testing framework billing convergence has been flawless for more than a month now. This is great as lack of convergence is what causes the network to be disrupted due to billing disputes. But despite the fact that nodes all agree on what they are paying each other now there are some quirks in how billing is computed that result in the numbers being inaccurate compared to what a human would expect when configuring specific values. <br><br>For example if the exit sets a fixed profit margin of 1000wei/byte on top of the cost of returning bandwidth it will end up losing money. <br><br>Intuitively this shouldn’t be possible, after all the exit is adding it’s margin on top of whatever the actual route price is. But the way we compute fees actually plays a role here. Since all nodes will spend 5% of their total payments on fees the exit charging less than 5% of the total path price ends up losing money. Other nodes are also affected by this but not nearly to the same degree. <br><br>This isn’t exactly a problem of correctness, as our prices are being expressed in exactly the way we described, but it’s definitely not what someone would expect. &nbsp;<br><br>The proper way to solve this is to change how price setting is described by the user such that the configured margin will always bake in transaction costs. I’m hoping to get a patch for this up in the next couple of days. <br><br>Over time we’ve moved from billing never working to billing being perfectly stable, hopefully this will be the last hurdle before billing is not only stable but also always works exactly as expected.<br></p>]]></content:encoded></item>
<item><title>Althea validator update: Hard fork governance proposal passed</title><link>https://blog.althea.net/althea-validator-update-hard-fork-governance-proposal-passed/</link><guid isPermaLink="true">https://blog.althea.net/althea-validator-update-hard-fork-governance-proposal-passed/</guid><pubDate>Mon, 09 Sep 2019 22:58:44 GMT</pubDate><description>A few weeks ago, we started a governance proposal on altheazone4 to vote on the
next hard fork. This time, it will be scripted. Read my summary about it here
[https://blog.althea.net/results-of-the-altheatest4-hard-fork/#next-validator-challenge].

The proposal passed [https://althea.zone/#/governance/2] last week, and we are
currently planning how to do it.

We will most likely use a script that will wrap the gaiad binary. This script,
when run, will start gaiad and also start a process that po</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>A few weeks ago, we started a governance proposal on <code>altheazone4</code> to vote on the next hard fork. This time, it will be scripted. Read my summary about it <a href="https://blog.althea.net/results-of-the-altheatest4-hard-fork/#next-validator-challenge">here</a>.</p><p>The proposal <a href="https://althea.zone/?ref=blog.althea.net#/governance/2">passed</a> last week, and we are currently planning how to do it.</p><p>We will most likely use a script that will wrap the <code>gaiad</code> binary. This script, when run, will start <code>gaiad</code> and also start a process that polls for the current block height. When a predetermined block to fork on is reached, it will swap out the <code>gaiad</code> executable for a new one, stop the chain, modify the genesis file appropriately, and start the new executable. If the script is started after the changeover, it will do these steps if necessary, or otherwise just start running the new executable. This way, it should be usable as a drop in replacement for <code>gaiad</code> with <code>systemd</code> or any other system management tools.</p><p>Once these details are finalized, we'll make another governance proposal with the exact forking height, modifications to <code>genesis.json</code>, and the recommended forking script described above.</p>]]></content:encoded></item>
<item><title>Althea Development Update #74: Automated Xdai bridge</title><link>https://blog.althea.net/althea-development-update-74-automated-xdai-bridge/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-74-automated-xdai-bridge/</guid><pubDate>Thu, 29 Aug 2019 12:34:42 GMT</pubDate><description>what we’ve done in this release is design a fully automated a bridge, the user merely has to deposit ETH and the router takes care of the rest. The money will be exchanged for DAI, then transferred across the cross-blockchain bridge to become Xdai.</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-embed-card kg-card-hascaption"><iframe width="480" height="270" src="https://www.youtube.com/embed/2rwpq1v7Km8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" loading="lazy" title="Embedded video"></iframe><figcaption>Video demo of the bridge in action</figcaption></figure><p><br>The headline feature for Beta 8 is the automated Xdai bridge. Which will allow us to provide one of the most demanded features without compromising on liquidity. <br><br>A ‘stablecoin’ is a token that attempts to have a fixed value relative to some peg, usually the US dollar. Allowing the user the advantages of transacting using cryptocurrency without the pitfalls of rapidly changing exchange rates. <br><br>There are plenty of stablecoins on the Ethereum blockchain, but you can’t generate a transaction of any kind without paying fees in ETH. <br><br>If a user deposits $50 in the DAI stablecoin into their router it's completely useless. Any transaction attempting to move it will need ETH to pay the fee.<br><br>We got around this by adding support for the Xdai blockchain, which is a side-chain where transactions can be paid for in the DAI stable coin. This also lets us get away from paying the Ethereum blockchain’s often slow transactions, roller-coaster gas prices, and lack of finality. <br><br>It did come with a catch though, users can easily aquire ETH using Coinbase or any one of many other exchanges. Buying DAI is slightly more difficult, and getting XDAI is a pretty technical process. For our main test deployment removing the easy monetary on-ramp provided by Coinbase was too big of a loss. <br><br>So what we’ve done in this release is design a fully automated a bridge, the user merely has to deposit ETH and the router takes care of the rest. The money will be exchanged for DAI, then transferred across the cross-blockchain bridge to become Xdai. <br><br>When the user wants to withdraw money the funds are brought back to the Ethereum blockchain and deposited into the users wallet as Ethereum for maximum liquidity. <br><br>You’ll notice that this is a pretty direct mirror of the setup we propose for the Althea blockchain. We intend to use Xdai as a stopgap and testing ground before moving to our own chain. &nbsp;<br><br>Xdai is an Ethereum based proof of authority chain. Whereas the Althea chain will be a Cosmos based distributed proof of stake system. <br><br>Proof of authority means that a small set of validators (currently 9 for Xdai) are the definitive validators for the blockchain. This does use a lot less power than mining, but is more centralized. Even the Althea testnet already has more than 20 validators and more are free to join at any time without lengthy vetting and manual addition. <br><br>The production Althea blockchain will have a group of at least 100 validators which anyone can join. We’re hoping to be able to expand that to 300 validators. <br><br>Cosmos should also be (at least in theory) faster and more flexible in terms of on chain contracts. But mostly we care about the more flexible and open proof of stake system. </p><h2 id="what-s-new-in-beta-8"><a href="https://github.com/althea-net/althea-firmware/releases/tag/Beta8RC1?ref=blog.althea.net">What’s New in Beta 8</a></h2><ul><li>Improved and stable Xdai bridge, with graphical cues and much better error handling.</li><li>Updated dashboard with better setup flow and checklist for items to complete.</li><li>Oracle has improved flexibility so that we can easily move existing deployments onto a subnet dao.</li><li>Fixes for Rita crashing when a password is set</li><li>Multi-homed exits are now on by default, increasing reliability.</li><li>Routers now implement a debt limit to better support running with no balance for long periods</li><li>More secure exit signup using libsodium</li></ul>]]></content:encoded></item>
<item><title>Monday&apos;s hard fork and next validator challenge</title><link>https://blog.althea.net/results-of-the-altheatest4-hard-fork/</link><guid isPermaLink="true">https://blog.althea.net/results-of-the-altheatest4-hard-fork/</guid><pubDate>Fri, 23 Aug 2019 02:55:23 GMT</pubDate><description>On Tuesday, the Althea validators finished a hard fork from altheatest3 to altheatest4.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>On Tuesday, the Althea validators finished a hard fork from <code>altheatest3</code> to <code>altheatest4</code>.</p><p>Here are the changes that were made to the chain's settings and state:</p><ul><li>Reduce governance proposal deposit to 1 ALTG. This lets us do governance proposals easily (it was 512 ALTG before, and most people only have 100 or 200 ALTG).</li><li>Reduce unbonding period to 1 day (86400000000000ns). This makes it easier to take your tokens out of delegation to send them around and stuff. It was formerly 21 days.</li><li>Minted 100 new ALTG for anyone who signed up for our validator notification mailing list at <a href="https://airtable.com/shrpjZDQYQa3Xd5oe?ref=blog.althea.net" rel="nofollow">https://airtable.com/shrpjZDQYQa3Xd5oe</a>. The newly minted tokens are to give people who weren't in altheatest3 a chance to get some tokens to start validating on altheatest4, and to give the old-timers a little extra worthless testnet pocket change.</li></ul><p>Hard forks on Comsos chains are currently a surprisingly manual process. Here are the steps:</p><ol><li>Everyone waits until the predetermined time.</li><li>Everyone stops <code>gaiad</code>, and exports a new genesis file which will be used to start the new chain.</li><li>Everyone makes any necessary changes to the new genesis file (at least updating the chain id), and replaces the old genesis file with the new one.</li><li>Everyone does <code>gaiad unsafe-reset-all</code>, and <code>gaiad start</code>.</li><li>Once validators controlling 2/3rds of the voting power on the chain have completed these steps, the chain starts again.</li></ol><p>We were stuck between steps 4 and 5 for almost 24 hours due to several factors. </p><ul><li>First of all, a lot of people had issues with the error <code>ERROR: error exporting state: failed to load Store: wanted to load target 206400 but only found up to 200000</code> &nbsp;This was caused by the state pruning algorithm. In the future, we will set the forking block in advance, and as soon as it is decided, everyone will restart their nodes with <code>gaiad start --halt_height [fork_height]</code>. This will make sure that the pruning algorithm is ready for an export at that height. &nbsp;</li><li>Because of these issues, some validators had to start using an <code>altheatest4</code> genesis file from someone else instead of exporting and processing their own. This led to some errors, such as people mistakenly running the script on the already processed <code>altheatest4</code> genesis and ending up with the wrong number of tokens in accounts. &nbsp;</li><li>Also, about 1/4 of the validators did not come online until later Tuesday. With the MIA validators, and the validators with genesis file issues, we were slightly under 2/3rds of the validators for a while. It also took a little while for the chain to start up once we got enough validation power online because it had been stalled so long (I think it's an exponential backoff thing). </li></ul><h2 id="next-validator-challenge">Next validator challenge</h2><p>I think we should do a hard fork to gaia v2.0.0, which I believe is ready. Here is the Cosmos Hub proposal about it: <a href="https://ipfs.io/ipfs/QmbXnLfx9iSDH1rVSkW5zYC8ErRZHUK4qUPfaGs4ZdHdc7?ref=blog.althea.net">https://ipfs.io/ipfs/QmbXnLfx9iSDH1rVSkW5zYC8ErRZHUK4qUPfaGs4ZdHdc7</a>. Additionally, we should do it as a scripted hard fork, which should minimize downtime, and be easier for validators. Validator Blitmore has already created a script which the Althea team can audit and possibly improve.</p><p>I've created a governance proposal to this effect: <a href="https://althea.zone/?ref=blog.althea.net#/governance/2">https://althea.zone/#/governance/2</a></p><p>I mistakenly titled it "Scripted hard fork to gaia v0.36.0". This is somewhat incorrect, since it is gaia v2.0.0, built with Cosmos-sdk v0.36.0. Now that it's on the blockchain it's permanent. Forgive my stupidity.</p>]]></content:encoded></item>
<item><title>Althea Development Update #73: For want of a transaction</title><link>https://blog.althea.net/althea-development-update-73-making-payments-stable/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-73-making-payments-stable/</guid><pubDate>Mon, 12 Aug 2019 12:46:57 GMT</pubDate><description>A minute later when the gateway tried to validate that same payment again it chose the same failed node at random. 
It wouldn&apos;t get a third chance.</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>In my last blog post <a href="https://blog.althea.net/althea-development-update-72-easy-local-althea-testnet/">I focused on improved testing</a> specifically for payment functions.</p><p>Most of my dev updates in the <a href="https://blog.althea.net/althea-development-update--42--serial-number-zero/">40</a>-<a href="https://blog.althea.net/althea-development-update--53--timelines-and-building-rock-solid-software/">60</a> range focus on stabilizing the routing software and we're getting into the tail end of that same process with payments. Many of the fixes in our Beta 7 release focus on payment bugs that affect as little as half a percent of all payments. </p><p>We're down to about one payment instability event that requires human intervention a week across the whole network. I think we'll be seeing one a month this coming month. </p><p>After more than a year of this stabilization treatment Althea's network stack is robust enough that networking failures due to the point to point radio software are more common than Althea device failure.</p><h2 id="for-want-of-a-single-transaction">For want of a single transaction</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/08/Screenshot-from-2019-08-12-08-08-56.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Graph of payments from the exit node to the gateway node</figcaption></figure><p>How two http call timeouts took down our test network for about 30 minutes. </p><p>You can see a graph of payments between the gateway and the exit here, with the debt in Wei graphed over time. You'll notice how the paymetns become more frequent as we move into internet prime time and more traffic is being moved and paid for. </p><p>Around midnight PST a confluence of high traffic activities where maxing out our backhaul connection. This wouldn't normally be a problem except for a confluence of failures.</p><p>Transaction <a href="https://etherscan.io/tx/0x744c7b7bd6e8d53d681a98916e935431ddd9ef539d8602bbed819a4d6a2db411?ref=blog.althea.net">0x744c7b7b...</a> was part of a flurry of more than 3 transactions to keep up with the traffic spike. The gateway was successfully notified of the payment, but when it went to check if the payment was valid the request to our Ethereum fullnode timed out.</p><p>This normally isn't a problem, we load balance across two providers at random.</p><p>Except a minute later when the gateway tried to validate that same payment again it chose the same failed node at random. </p><p>It wouldn't get a third chance.</p><p>Without that payment there was a very short window where the gateawy determiend the exit had exceeded it's grace payment amount. The gateway began enforcement action by reducing the exit's bandwidth. </p><p>This set off a chain reaction as a fully saturated backhaul connection was limited to a mere 1mbps. The gateway had accidentally made itself unable to check any transactions and thus made recovery impossible. </p><p>Manual intervention restored functionaltiy within 30 minutes. </p><p>In response to this incident we started running the payment validation process <a href="https://github.com/althea-net/althea_rs/commit/5e6fa28c8cbd118dd5e32b2ecbc3cef986519328?ref=blog.althea.net">every 5 seconds</a> rather than every minute. </p><p>As a longer term solution this problem is part of the <a href="https://forum.altheamesh.com/t/the-gateway-client-corner-case/35?ref=blog.althea.net">gateway client corner case</a>. Where users expect a gateawy to also act as a client and it causes no end of special case requirements. We will probably move to doing things like verifying payments over the backhaul directly rather than via an exit.</p><h2 id="headline-feature-in-beta-8-stablecoin-payments">Headline feature in Beta 8, stablecoin payments</h2><p>We've finally merged the <a href="https://github.com/althea-net/althea_rs/blob/master/rita/src/rita_common/token_bridge/mod.rs?ref=blog.althea.net">token bridge</a> module. What this does is that it takes Ethereum deposited into the router and converts it to the <a href="https://makerdao.com/en/dai/?ref=blog.althea.net">DAI</a> stable coin using <a href="https://docs.uniswap.io/?ref=blog.althea.net">Uniswap</a> before passing it over to the <a href="https://xdaichain.com/xdai?ref=blog.althea.net">Xdai</a> sidechain. </p><p>This lets users take advantage of the relative ease of buying Ethereum without having to expose themsevles to price changes while using their Althea device. </p><p>It also provides insulation from gas price changes and other network disruptions that may happen on Ethereum. &nbsp;</p><p>Transacting in native Ethereum will of course remain an option on the routers.</p><p>You may recognize that this is very similar to what we've been talking about with the <a href="https://blog.althea.net/launching-the-althea-blockchain/">Althea blockchain</a>, the main difference is that the Xdai chain is 'proof of authority' meaning you must be approved to become a validator/miner. </p><p>While this is somewhat decentralized it's not as open as we would like for a long term solution. <a href="https://blog.althea.net/althea-test-chain-olympics/">Our chain</a> will be using a more open system where anyone can join as a validator. </p><h2 id="what-s-new-in-beta-7"><a href="https://github.com/althea-net/althea-firmware/releases/tag/Beta7RC5?ref=blog.althea.net">What's new in Beta 7</a></h2><ul><li>Upgraded to OpenWrt v18.06.4</li><li>Experimental Xdai bridge support, routers in xdai mode will bridge over ETH automagically when deposited</li><li>DAO address based pricing oracle more closely reflects eventual functionality</li><li>Fixes to rare payment failures</li><li>Fixes for importing backed up private keys</li><li>Fixes for exits behaving improperly when private keys where imported</li><li>Fixes for DAO payments sometimes causing the router to crash</li><li>Long term memory for router debts to prevent restarts resulting in not paying other people</li><li>Fix for the dashboard thinking routers had a password set when they did not</li><li>Added a version toggle that allows devices to opt into early access updates</li><li>Users can now visit althearouter.net instead of 192.168.10.1 to access their own router dashboard.</li></ul>]]></content:encoded></item>
<item><title>Althea blockchain update and validator Olympics</title><link>https://blog.althea.net/althea-test-chain-olympics/</link><guid isPermaLink="true">https://blog.althea.net/althea-test-chain-olympics/</guid><pubDate>Thu, 08 Aug 2019 20:39:44 GMT</pubDate><description>We launched the altheatest3 test blockchain. We&apos;ll be having a series of collaborative challenges for the validators.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<ul><li>We launched the <code>altheatest3</code> test blockchain</li><li>We'll be having a series of collaborative challenges for the validators</li><li>The first challenge will be to hard fork the blockchain to <code>altheatest4</code> on August 19th.</li><li>Sign up on the validator email list <a href="https://airtable.com/shrpjZDQYQa3Xd5oe?ref=blog.althea.net">https://airtable.com/shrpjZDQYQa3Xd5oe</a> to get some testnet tokens and get updates. However, the #althea-validators room on our Discord chat is still the main discussion forum.</li></ul><p>Earlier this week, we launched the first public testnet of the <a href="https://blog.althea.net/launching-the-althea-blockchain/">Althea blockchain</a>, known as <code>altheatest3</code>. We had some tense moments when it wouldn't start, but in the end we got everything up smoothly. You can see our block explorer and validator list here: <a href="https://althea.zone/?ref=blog.althea.net#/staking/validators">https://althea.zone/#/staking/validators</a>. </p><p>It's quite decentralized- there are 19 separate validators, and no validator controls more than 5.97% of the voting power. 4 of those validators are run by Althea team members, but altogether, they only control 19.4% of the voting power. All of them could go offline without affecting the system, and they may.</p><p>It's now time to start stress-testing the system. We're going to be organizing a series of semi-weekly challenges for the validators. They are going to start out fun and cooperative, but will get increasingly challenging as time goes on. At some point, Justin is going to try to take down the blockchain using only a single blue wifi router.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/08/image.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Watch your back</figcaption></figure><p>We got feedback that people liked the cadence we established when spinning up the <code>altheatest3</code>: announcement, full instructions a week later, then it's go time at the beginning of the next week.</p><p>For our first challenge, we wanted to start easy. Maybe a few light governance proposals, etc. But there's a hitch in the plan- when we made the genesis file for <code>altheatest3</code>, we kept the Cosmos default that people needed to deposit at least 512 tokens. However, <code>altheatest3</code> has only about 2000 tokens total. So it's going to be really hard to make governance proposals.</p><p>So our first event is going to have to be a hard fork, to <code>altheatest4</code>. This will be the same process as when the Cosmos hub forked to enable transfers. <code>altheatest4</code> will have a few changes:</p><ul><li>Reduce governance proposal deposit to 1 ALTG. This will let us do governance proposals.</li><li>Reduce unbonding period to 1 day. This will make it easier to take your tokens out of delegation to send them around and stuff.</li><li>Mint a bunch of new testnet tokens for anyone who signs up for our validator notifications email list! The sign up form for the email list is here: <a href="https://airtable.com/shrpjZDQYQa3Xd5oe?ref=blog.althea.net">https://airtable.com/shrpjZDQYQa3Xd5oe</a>. The newly minted tokens are to give people who weren't in <code>altheatest3</code> a chance to get some tokens to start validating on <code>altheatest4</code>, and to give the old-timers a little extra worthless testnet pocket change.</li></ul><p>We'll be releasing full instructions on how to do the hard fork on Wednesday, August 14th. On Monday, August 19th at 3pm PDT, we will hopefully be switching the chain over.</p>]]></content:encoded></item>
<item><title>Althea Development Update #72: Easy local Althea testnet</title><link>https://blog.althea.net/althea-development-update-72-easy-local-althea-testnet/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-72-easy-local-althea-testnet/</guid><pubDate>Wed, 17 Jul 2019 19:15:49 GMT</pubDate><description>For this development cycle I&apos;ve focused on building a more advanced and easier
to run series of integration tests. As Althea matures the complexity of the
average bug to track down, identify and test increases so to stay one step ahead
our old integration tests needed an upgrade. 

You can now easily download and run a local Althea testnet through a series of
highly instrumented tests with a single command. 

Running the tests in one easy step
First have docker installed and running. Then run th</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>For this development cycle I've focused on building a more advanced and easier to run series of integration tests. As Althea matures the complexity of the average bug to track down, identify and test increases so to stay one step ahead our old integration tests needed an upgrade. </p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2020/03/opt.gif" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>You can now easily download and run a local Althea testnet through a series of highly instrumented tests with a single command. </p><h2 id="running-the-tests-in-one-easy-step">Running the tests in one easy step</h2><p>First have docker installed and running. Then run these commands. Word of warning this will blow away your systems docker cache so don't run it on a production server, the builds are pretty big and will fill up your root dir very quickly if we don't, you can edit <code>test.sh</code> if you want to avoid this. </p><p>Dependencies are Docker and a local <a href="https://www.wireguard.com/install/?ref=blog.althea.net">WireGuard</a> kernel module. This is mostly easily done on Linux. If you don't have a Linux machine setup you can see the test output <a href="https://travis-ci.com/github/althea-net/althea_rs/builds?ref=blog.althea.net">on Travis</a>.</p><pre><code>git clone https://github.com/althea-net/althea_rs
cd althea_rs
bash scripts/test.sh</code></pre><p>That's it! The entire test suite will run from start to finish in this order. </p><ol><li>Unit tests</li><li>Creating a docker container and building Rita our biling daemon and Babel the routing protocol from scratch</li><li>Creating a virtual network using net-namespaces to connect 7 different virtual nodes.</li><li>Checking connectivity and optimal price/paths for all nodes</li><li>Registering client nodes with the exit and checking the various http endpoints for the router dashboard</li><li>Running a series of iperf tests to generate traffic and then ensure that the resulting billing output is consistent</li></ol><p>This is a cool way to see everything at work and even mess around with it without having to get specialized hardware or do a lot of setup. The ~12 minute runtime isn't exactly ideal but it's a lot less work than any other form of of in depth testing that we have had before. </p><p>You could pretty easily generalize this test to more than the 7 nodes we test now. But I'll leave that as an exercise for the reader. </p><hr><h2 id="what-s-new-in-beta-7">What's new in Beta 7</h2><ul><li>Fixes for importing backed up private keys</li><li>Fixes for exits behaving improperly when private keys where imported</li><li>Fixes for DAO payments sometimes causing the router to crash</li><li>Long term memory for router debts to prevent restarts resulting in not paying other people</li><li>Fix for the dashboard thinking routers had a password set when they did not</li><li>Added a version toggle that allows devices to opt into early access updates</li><li>Users can now visit althearouter.net instead of 192.168.10.1 to access their own router dashboard. </li></ul><p>This is a pretty quick release hot on the heels of Beta 6, but we have a lot of fixes to roll out so I figure we'll push it out quickly.</p>]]></content:encoded></item>
<item><title>Launching the Althea blockchain</title><link>https://blog.althea.net/launching-the-althea-blockchain/</link><guid isPermaLink="true">https://blog.althea.net/launching-the-althea-blockchain/</guid><pubDate>Tue, 16 Jul 2019 18:39:48 GMT</pubDate><description>Up to now, we&apos;ve been running our networks on the Ethereum blockchain. The reality is that Ethereum simply isn&apos;t suitable for our use case. Ethereum&apos;s great for manual, medium or high value, sophisticated transactions...</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<h3 id="high-level-summary-">High level summary:</h3><ul><li>The Althea blockchain will allow subscribers to pay for internet access in a dollar equivalent token (stablecoin) rather than needing Ethereum for transaction fees</li><li>The Althea blockchain will be proof of stake, and will consume as much power as a moderately sized website.</li><li>There will be Althea Governance Tokens (ALTG). Subscribers will not need to buy these except if they wish to act as a chain validator and participate in the proof of stake system</li><li>The transaction fees from subscriber’s routers exchanging stablecoins will be paid out to the validators and used to help support further development of Althea</li></ul><p><br>Up to now, we've been running our networks on the Ethereum blockchain. The reality is that Ethereum simply isn't suitable for our use case. Ethereum's great for manual, medium or high value, sophisticated transactions, such as <a href="https://mkr.tools/?ref=blog.althea.net">MakerDAO</a> and <a href="https://uniswap.exchange/swap?ref=blog.althea.net">Uniswap</a>, but it has some issues for small automated payments such as those in Althea. At least once a week, some automated arbitrage script or token sale on the Ethereum network pumps the average gas price way up, putting router payments on hold. This destabilizes physical Althea networks which are providing the essential service of internet access.<br><br>We're doing this with <a href="https://cosmos.network/?ref=blog.althea.net">Cosmos</a>, which is a framework for making blockchains. It's proof of stake, which means it doesn't waste electricity like Bitcoin or Ethereum. Instead, the blockchain is kept secure by "staking". There is a special type of token on the blockchain that can be staked by delegating it to validators. When someone has tokens staked, they get a small percentage of the transaction fees on the network. The flip side of this is that if the validator you have staked to misbehaves, you'll lose a portion (currently 5%) of your tokens.<br><br>The staking token on Althea's blockchain will be known as "ALTG", or "Althea governance token". It's important to be clear that payments between routers will not be denominated in this token. They will be done in a stablecoin equal to the dollar. This means that users paying for internet will have an experience comparable to PayPal, Venmo, or any other electronic payment medium. ALTG is only for staking, and voting on upgrades to the blockchain software through the governance process.<br><br>You may be wondering who will get ALTG tokens. Some will go to the founders and early developers of the Althea software, some will go to investors, and we will grant 1/3 of the tokens to Althea network organizers and users over the next few years.<br><br>By using proof of stake instead of proof of work, we take transaction fees that on Ethereum would have gone to pay miners to waste electricity, and instead use that money to support development of Althea and to give control to users and organizers of Althea. <br><br>Ethereum 2.0 will also introduce a proof of stake system, which is much less wasteful. But in this case the transaction fees will still be going to early investors and traders of Ethereum. By using the Althea blockchain, these fees go to support development of the protocol. It’s important to note that subscribers will still use Ethereum to buy their stablecoins using MakerDAO and Uniswap when reloading their routers.<br><br>We are currently testing the blockchain through a series of testnets, and looking for validators. For now, there will be 100 validators on the chain. These will be the 100 validators with the most ALTG delegated to them. This set will vary over time as ALTG holders decide which validators they should delegate to. Running one requires extensive experience in devops. Mistakes as trivial-seeming as <a href="https://medium.com/@staked/slashing-risks-and-validator-diligence-f6901cc9622a?ref=blog.althea.net">running both your main and your backup server at the same time</a> can result in slashing and the loss of tokens.<br><br>If you want to become a validator on the Althea blockchain, <a href="https://blog.althea.net/validate/">read this</a>.</p><p>Questions about all of this? Join our community call and ask away! <a href="https://airtable.com/shrCyyivU2gpm0AI6?ref=blog.althea.net">https://airtable.com/shrCyyivU2gpm0AI6</a><br></p>]]></content:encoded></item>
<item><title>How to be a validator on Althea</title><link>https://blog.althea.net/validate/</link><guid isPermaLink="true">https://blog.althea.net/validate/</guid><pubDate>Fri, 12 Jul 2019 04:54:29 GMT</pubDate><description>What is a validator and what do I need?
We&apos;re currently in the process of spinning up the Althea blockchain
[https://blog.althea.net/launching-the-althea-blockchain/]. We are using Cosmos, a proof
of stake blockchain framework. This post is for those who would like to help
validate. A validator is sort of like a miner in a proof of stake blockchain.
They don&apos;t need any special hardware or a large amount of power. Instead
validators risk &apos;staked&apos; tokens. A validator will lock up staking tokens an</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<h2 id="what-is-a-validator-and-what-do-i-need">What is a validator and what do I need?</h2><p>We're currently in the process of spinning up the <a href="https://blog.althea.net/launching-the-althea-blockchain/">Althea blockchain</a>. We are using Cosmos, a proof of stake blockchain framework. This post is for those who would like to help validate. A validator is sort of like a miner in a proof of stake blockchain. They don't need any special hardware or a large amount of power. Instead validators risk 'staked' tokens. A validator will lock up staking tokens and lose 5% of them if they misbehave.<br><br>Misbehaving is defined as:</p><ul><li>Signing two blocks at the same block height (forking the chain)</li><li>Being offline (not signing any blocks) for more than 16 hours without first removing yourself from the validators list</li><li>Losing your private key</li><li>Other conditions that may compromise the security of the chain</li></ul><p>Most people will not be validating themselves but “delegating” tokens to a validator. When you delegate your tokens you are adding them to that validators stake and you will split the profits from using your tokens with the validator. <br><br>What you will need to validate is:</p><ul><li>A dedicated server a decent amount of processing power and storage</li><li>A ledger hardware wallet (optional)</li></ul><p>Generally you want a server with at least 8gb of ram and 500gb disk. SSD storage isn’t as important as it is with Ethereum.<br><br>You can use a VM from AWS or some other hosting provider but recognize that there are extra risks to doing so. First off, the hosting company will have your private key, second if the hosting company spins up two versions of your vm you will validate two blocks at one height. This is a slashing condition. If you plan to stake an amount of tokens you care about, or are providing your validating services to others, I would suggest renting a physical server. For any serious amount of money rack your own hardware at a colocation center.<br><br>Racking your own machine has a side benefit of giving you physical access. This is where the Ledger can come in. Very serious validators use a ledger to hold their private key securely while they validate. Even if their server gets hacked the key will remain secure in the ledger storage. They will probably still be slashed (lose 5%) though. <br><br>There are many many colocation and dedicated hosting providers. If you can’t identify a good host in your budget through your own research, being a validator may not be for you.<br><br>Here are some good additional resources:<br></p><ul><li><a href="https://cosmos.network/docs/cosmos-hub/validators/validator-faq.html?ref=blog.althea.net">Cosmos validator FAQ</a></li><li><a href="https://kb.certus.one/?ref=blog.althea.net">Certus One validator guide</a></li></ul><h2 id="how-exactly-do-i-validate-on-althea">How exactly do I validate on Althea?</h2><p>As you read the following instructions, please do not hesitate to reach out in our <a href="https://discord.gg/gxJhKZ2?ref=blog.althea.net">Discord channel</a>, in the #althea-validators room. We are aware that these instructions might not be perfect or might be hard to follow. We want to help you get set up. </p><p>Unlike a lot of other networks, Althea's blockchain is really one of the simplest parts of our infrastructure. Our routers do all kinds of complicated things to create autonomous local bandwidth markets, but almost none of this is on-chain. Our blockchain only needs to process transactions. Because of this, we are a very close fork of gaia, the Cosmos hub blockchain node software. <br><br>In fact, it's not even a fork right now. The only difference between the Cosmos hub and the Althea Zone is the <code>genesis.json</code> file, which defines the blockchain and it’s parameters.<br><br>Here are the instructions to join our current testnet: <a href="https://github.com/althea-net/althea-zone?ref=blog.althea.net">https://github.com/althea-net/althea-zone</a><br></p>]]></content:encoded></item>
<item><title>Getting Started with Community Outreach</title><link>https://blog.althea.net/community-outreach/</link><guid isPermaLink="true">https://blog.althea.net/community-outreach/</guid><pubDate>Tue, 09 Jul 2019 21:56:29 GMT</pubDate><description>Networks are made out of more than antennas and ethernet cables. They are homes
and business - neighbors - connected to one another. These neighbors can also
become relays, forwarding bandwidth to nearby homes and earning money. Althea
organizers are project managers that spread the word and help coordinate
installation, planning, and outreach.

Community Outreach usually starts by establishing a social media presence.  If
you are planning a network primarily comprised of businesses, you may
con</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>Networks are made out of more than antennas and ethernet cables. They are homes and business - neighbors - connected to one another. These neighbors can also become relays, forwarding bandwidth to nearby homes and earning money. Althea organizers are project managers that spread the word and help coordinate installation, planning, and outreach.</p><p>Community Outreach usually starts by establishing a social media presence. &nbsp;If you are planning a network primarily comprised of businesses, you may considering forgoing a social medial platform in lieu of a traditional website, and more direct cold calls. For this approach, it may be helpful to compile a list of nearby businesses and then send emails, call, or arrange meetings.</p><p>Facebook still is a good choice for most communities, because of it’s wide reach across broad demographics and personal approach. Facebook also has community groups, which is a great place to share your network or comment on the ubiquitous “What’s the best internet service?” post . Start by establishing your facebook page with a few introductory posts like a “get to know us” or information about the other existing Althea networks. Leverage your own social network to establish a foundation of support, even if your invited friends aren’t in the immediate area. As the project grows in scope, you can post updates, some information about how Althea works, and even some fun memes. Depending upon your community, twitter, instagram and nextdoor can also be useful.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/07/newbergpeople-1.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Althea organizers at their hazelnut farm in Newberg, Oregon.</figcaption></figure><p>Another important part of outreach is establishing a presence in the community. This can be accomplished by speaking at community events, becoming part of the chamber of commerce, or forming a partnership with an established non-profit or business. It is often said that people need to be exposed to something eight times before they are willing to commit to purchase, so it’s best to be involved in many different outreach opportunities. These partners can often help with the logistics of the network, or become your relays and gateways as well. Call or email a potential partner to set up a meeting, and then share your Althea project with them along with clear ways that you can work together.</p><p>Participating in fairs and other community events is also a great way to establish a presence and get people signed up to become a relay or subscriber. Many communities will post a calendar of events, which is a good place to find opportunities. You can also hold your own event, like a picnic or BBQ, or, in the winter, an informational event at a library. Keep your event fun or provide another benefit like a class on wireless security, so people will have a reason to attend.</p><p>The next step is to get the word out in the community. This is a direct outreach phase, and old fashioned door-to-door canvassing is often the best way to meet people. Canvassing can be intimidating, so practice before hand and follow these best practices:</p><ul><li>Make a goal and plan - How large of an area do you plan to cover? What’s the goal for number of sign-ups?</li><li>Bring a buddy - Friends provide support and make the job easier.</li><li>Write a script - We have some samples available if you are looking for ideas.</li><li>Bring a clipboard - You may want to sign people up with a tablet, but old fashioned clip boards are also great. Make sure to fill in the first few entries.</li><li>Bring materials - Have a flyer, door hanger, or other materials to leave with people you talked with.</li><li>Follow up - Make a plan to follow up with interested people. Use a CRM or spreadsheet, like Airtable, to keep contacts organized.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/07/BeeandAnn.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Hilltop Organizers door-to-door canvassing in Tacoma, Washington.&nbsp;</figcaption></figure><p>Support your canvassing and outreach efforts with traditional marketing efforts, like boosted facebook posts, flyers, and yard signs. This adds credibility and boosts name recognition. Boosted posts can include updates and short videos of canvassing and outreach, or boost a link to your sign up page directly.</p><p>This is also a good time to send out a press release or get in touch with publications to let them know about your Althea project. Don’t overlook niche publications like senior, business, or university publications or a local radio station. Often your chamber membership will help you contact the right press people, and they can also help promote your project within their own business network.</p><p>A successful community outreach project will require time, organization and a plan. We realize this often can be the most challenging part of starting a network, and we are here to help! Using our Altheahoods program, we guide you through each step of the process and support you with marketing materials, PR, encouragement, and ideas. &nbsp;The Altheahood in <a href="https://www.althea.net/hilltop?ref=blog.althea.net">hilltop</a> is a great example of what a good community outreach project looks like and with just a few weeks under their belt they are almost half way to their goal of 100 sign ups!</p><p>Sign up to become an organizer at <a href="https://www.althea.net/?ref=blog.althea.net">www.althea.net</a>.</p>]]></content:encoded></item>
<item><title>June Community Update</title><link>https://blog.althea.net/june-community-update/</link><guid isPermaLink="true">https://blog.althea.net/june-community-update/</guid><pubDate>Mon, 01 Jul 2019 18:20:59 GMT</pubDate><description>Over the last month, Althea organizers have been working to develop local
partnerships and gain traction in their communities. Several organizers have
chosen the “Altheahoods” approach to starting their networks, and have begun
gathering pre-registration sign-ups prior to build out. Using social media and
door-to-door canvassing, the hilltop organizers have gained traction at a brisk
pace with 39 sign ups and several business have stepped forward to become relays
or gateways there. In Newberg, O</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>Over the last month, Althea organizers have been working to develop local partnerships and gain traction in their communities. Several organizers have chosen the “Altheahoods” approach to starting their networks, and have begun gathering pre-registration sign-ups prior to build out. Using social media and door-to-door canvassing, the hilltop organizers have gained traction at a brisk pace with 39 sign ups and several business have stepped forward to become relays or gateways there. In Newberg, Oregon they have focused their initial outreach on forming local partnerships and have a similar positive response and a healthy start of 10 sign ups. When the goal of 100 sign ups is reached, organizers will begin building the network and installing subscribers. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/07/newbergpeople.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Althea Organizers at Perri's hazelnut farm in Newberg, Oregon</figcaption></figure><p>We also launched a <a href="https://althea.net/st-helena?ref=blog.althea.net">new Altheahood </a>last month in the Napa valley of region of California. Internet access in this rural area is expensive and very slow, well below broadband speeds. While there isn’t any fiber available to the consumer here, there is wholesale fiber connections which makes this a great area to start an Althea network. We recently published <a href="https://blog.althea.net/sustainable-network/">a blog post </a>which gives some insight about how the economics of these networks can look. </p><p>This month, Jehan Tremback visited Berlin for Interchain Conversations, a Cosmos un-conference. Over the next few months we will be building the Althea token (ALGT) using the proof of stake Cosmos platform. Althea Governance Tokens will not be used to pay for bandwidth or monthly subscription fee, instead subscribers will still use ethereum, and soon dai, to pay for their bandwidth. Validators and those delegating Althea governance tokens to them will earn transaction fees from each payment. We talked about Cosmos, links in Clatskanie, and chatted with hilltop organizer’s Bee and Ann about their deployment in our last <a href="https://www.youtube.com/watch?v=c9LDU2E42uM&amp;t=1556s&amp;ref=blog.althea.net">live community call</a>, which is available on youtube in case you missed it. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/07/Jehan.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Jehan Tremback at Interchain Conversations</figcaption></figure><p>Justin Kilpatrick has been busy working out increasingly nuanced software bugs and rolling out the latest Beta 6 release, which will include a simple “neighbors” tab showing connected users. &nbsp;The previous release included the highly requested bandwidth payment tracking to the dashboard where subscribers can view their usage and payments. Justin also recently <a href="https://www.youtube.com/watch?v=17fCmPjW-jY&amp;ref=blog.althea.net">gave a presentation </a>at the NANOG conference and shared <a href="https://www.youtube.com/watch?v=9wZbmuXS_K0&amp;ref=blog.althea.net">a fun video</a> about Althea performance with CoDel. <br><br>The Althea founder team will be in San Francisco for a meetup in July - &nbsp;details to follow soon. If you are ready to start an Althea network in your community or want to learn more about what that entails, visit our <a href="https://althea.net/getting-started?ref=blog.althea.net">updated getting started guide </a>or sign up to be an organizer at <a href="http://www.althea.net/?ref=blog.althea.net">www.althea.net</a>.</p>]]></content:encoded></item>
<item><title>Althea Development Update #71: Transaction amnesia</title><link>https://blog.althea.net/althea-development-update-71-transaction-amnesia/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-71-transaction-amnesia/</guid><pubDate>Mon, 24 Jun 2019 19:56:44 GMT</pubDate><description>As I slapped this solution together I got a bad feeling. What if the full node lied to us? I really couldn’t think of a situation in which it would but I just couldn’t shake it.</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<!--kg-card-begin: markdown--><pre><code>// removed and placed into error handling in payment controller
// time will tell if that was a good idea
// update_nonce(our_address, &amp;web3);
</code></pre>
<!--kg-card-end: markdown--><p>Lesson of the week, if your gut tells you that something might be a bad idea you should probably listen to it. <br><br>The ‘nonce’ is the sequence number of a transaction in Ethereum, they must be issued strictly in order. If you have a published transaction with nonce 1 your next transaction must contain nonce 2. <br><br>I wrote this code on May 1st, the goal was to start managing our transaction nonces locally. Previously we had been able to get away with just asking the full node what our current nonce was and using that. <br><br>But if the blockchain was congested this was a problem. The full node will happily tell you the current valid nonce, but not how many transactions you have pending. <br><br>My goal was to let Althea devices manage multiple pending transactions at the same time. If we just incremented it locally this should work perfectly. In the case that something actually did go wrong we could just update our nonce from the full node at that time.<br><br>As I slapped this solution together I got a bad feeling. What if the full node lied to us? I really couldn’t think of a situation in which it would but I just couldn’t shake it. <br><br>It's around midnight on Friday, May 24th. Nearly a month after we put this code into production. My brother is in town for the first time a year and we're out getting drinks and regaling each other with the various ridiculous failures of our respective tech jobs when I get a call. <br>Over on the west coast its 9pm and prime time for internet usage in our test network. <br><br>Unfortunately over in the rainy cascades, all is not well. The relays have not been paid by the gateway in over a day and &nbsp;high weekend usage had pushed them over the edge to demanding the late payment they where due by slowing down their connection to the gateway. <br><br>This inevitability caused the network to catch fire and my phone to ring. <br><br>It took me about 30 minutes to piece together what had happened. My gut feeling had been correct, there was a way for the full nodes to lie to us. <br><br>Remember what I said about transactions having to be in exact sequence to be valid? This was the key cause of our error. <br><br>Nonce 728 was submitted on <a href="https://etherscan.io/tx/0x0cf45d37404681d9209d324ec9c7cda77529d71969c785136e4b919a676e6956?ref=blog.althea.net">May 23rd at 5am and made it into the blockchain a few minutes later.</a><br><br>Transaction 729 was submitted shortly thereafter but after hours of waiting it never got into a block. Here’s where everything goes horribly wrong. <br><br>When a transaction so broadcast into the network of Ethereum full nodes it’s in the hope that a miner (who creates blocks) will pick it up and place it into the blockchain. Exactly how long any given miner keeps transactions around waiting to put them into a block varies, but usually isn’t longer than an hour.<br><br>Our full nodes on the other hand, are not miners. They merely keep track of blockchain data and respond to questions from Althea devices. They had no configured timeout for transactions. <br><br>So when we submitted transaction 730 our full nodes thought this was perfectly fine, after all whenever 729 got in, 730 would follow shortly thereafter. <br><br>The miners, having discarded 729 after an hour or two didn’t agree. 730 was to them a totally invalid transaction, they didn’t have a 729 and without some way to fill in the sequence there was no way to publish 730. <br><br>On and on this goes, up to nonce 1000+ until my phone rings at the bar. <br><br>In the end my late night fix simply involved manually setting the nonce to the correct value and restarting the gateway, which immediately produced a new transaction 729 which is in the blockchain to this day. This is a classic sort of distributed systems bug, correctness is a matter of perspective. </p><h2 id="development-update">Development update</h2><p><br>Since our last dev update we’ve been working to finish stabilizing payments and prepare our own infrastructure (specifically the Rita exit code) to scale as our growth rate increases. <br><br>Some of these performance improvements have trickled down into the routers, which didn’t really need them so much but hey faster is faster. <br><br>We’ve also continued to patch issues, as the payment code becomes more and more stable smaller and smaller problems become apparent and are able to be tweaked. At this point we can maintain payment consensus for several weeks on end despite whatever chaos is going on in production. 4x sweeps in the gas price or antenna degradation and packet loss. We’re well into the long tail and I would expect within an update or two we may just have nothing to patch about billing anymore. <br></p><h2 id="what-s-new-in-beta-6"><a href="https://github.com/althea-net/althea-firmware/releases/tag/Beta6RC3?ref=blog.althea.net">What's new in Beta 6?</a></h2><p>---<br></p><ul><li>Password protection support for the router dashboard!</li><li>New relay management screen to manage neighbours connections and payments</li><li>Dramatic efficiency improvements thanks to async Babel interactions</li><li>Faster saving for bandwidth use display features, now every 4 hours rather than 24 so less data is lost on reboot</li><li>Use 105% of the median gas price in order to avoid the situation described <a href="https://blog.althea.net/althea-development-update-70-decentralization-without-compromises/">in Dev update #70</a></li><li>Devices will now apply spare change from slight overpayments before instead of after enforcing</li><li>Fixed a bug where the exit may be paid twice in quick succession</li><li>Fixed a bug where the babel routing table could grow to large for Rita to read</li></ul><p><br>The Altheahoods program is going pretty well and all told. At this point it seems that getting backhaul on location will probably take longer than getting all the signups. Which is either really good or a scathing criticism of backhaul fiber providers depending on your perspective. <br><br>You will also notice that we’ve changed our domain (yet again) to althea.net, this was the result of a lot of thinking about our branding choices. We’ve needed to ‘drop the mesh’ for a while now as it tends to cause confusion in different audiences. It’s much better for us to define what we do rather than be pigeon-holed into what people think when they hear mesh (which can vary widely from venue to venue). <br><br>The bird also got dropped, since it didn’t match the new art and branding style of the website. Lets all have a moment of silence for flappy. <br><br></p>]]></content:encoded></item>
<item><title>5G brings cell carriers up to par, but it isn&apos;t a revolution</title><link>https://blog.althea.net/5g-brings-cell-carriers-up-to-par-but-it-isnt-a-revolution/</link><guid isPermaLink="true">https://blog.althea.net/5g-brings-cell-carriers-up-to-par-but-it-isnt-a-revolution/</guid><pubDate>Wed, 19 Jun 2019 22:45:07 GMT</pubDate><description>There&apos;s an amazing wireless technology that lets you download a high definition
movie to your phone or computer in seconds. This technology can send gigabits of
data over tens of miles in a tightly focused beam of millimeter-wave radio. It
will replace outdated DSL and cable home internet with faster, cheaper
alternatives and usher in a glorious age of VR, AI, and IOT.


The tech
What is this technology called? Is it 5G? No. That&apos;s just how good radio
engineering is these days. All of these capa</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>There's an amazing wireless technology that lets you download a high definition movie to your phone or computer in seconds. This technology can send gigabits of data over tens of miles in a tightly focused beam of millimeter-wave radio. It will replace outdated DSL and cable home internet with faster, cheaper alternatives and usher in a glorious age of VR, AI, and IOT.<br></p><h2 id="the-tech">The tech</h2><p>What is this technology called? Is it 5G? No. That's just how good radio engineering is these days. All of these capabilities are available in inexpensive, commonly available radio equipment today. It's in newer (<a href="https://www.cisco.com/c/en/us/solutions/collateral/enterprise-networks/802-11ac-solution/q-and-a-c67-734152.html?ref=blog.althea.net">802.11ac</a>) home wifi hotspots, and it's in the <a href="https://www.ui.com/airfiber/airfiber24-hd/?ref=blog.althea.net">outdoor</a> <a href="https://mikrotik.com/product/wireless_wire?ref=blog.althea.net">antennas</a> used by wireless ISPs to supply internet to <a href="http://www.wispa.org/Portals/37/Docs/Press%20Releases/2017/TCG's_2017_BWA_FINAL_REPORT.pdf?ref=blog.althea.net">millions of happy customers</a>. Nobody bothers to hype it up or call it by a special name. It's business as usual.<br><br>Unfortunately, cell phone companies have not been able to take full advantage of these newer radio technologies. They have been <a href="https://www.opensignal.com/reports/2018/02/state-of-lte?ref=blog.althea.net">hobbled by the aging 4G protocols</a>, which still contain some of the DNA of old-school landline telephonics.<br><br>On a technical level, the 5G protocols are simply an initiative to bring cellular technology up to the standards of modern wireless internet, without the <a href="https://www.speedtest.net/reports/united-states/2018/mobile/?ref=blog.althea.net">sub 30 megabit speeds</a> and <a href="http://www.techplayon.com/lte-control-plane-and-user-latency-calculation-fdd/?ref=blog.althea.net">70 milliseconds</a> of extra latency that dog most 4G deployments. This speedup comes from the use of higher radio frequencies, or “millimeter wave”.<br><br>It's a reality of physics that while higher frequencies have a higher data capacity, <a href="https://ieeexplore.ieee.org/document/6655403?ref=blog.althea.net">they are not able to penetrate obstacles</a>. You will not get the promised high speeds of 5G unless there is a clear line of sight between you and the tower. If you walk around the corner, or under a tree, you will be back on the same frequencies and same speeds as 4G.<br></p><h2 id="the-hype">The hype</h2><blockquote>“This network [5g] will usher in what I think will be the fourth industrial revolution” -Lowell McAdam, former Verizon CEO</blockquote><blockquote>“I see a huge quantum leap when going from 4G to 5G” -Hans Vestberg, current Verizon CEO</blockquote><p><br>Why so much hype? The simple answer is that people love to buy stuff that has a higher number on it than last year. “5G” gives carriers and cell phone makers a convenient label to hang their marketing on. Radio speeds will continue to improve, no matter the label, but someone can sell you the new 5G phone tomorrow.<br><br>5G is also a potent lobbying tool. Politicians have never been known for their firm grasp of technical subjects, and the idea of “China winning the 5G race” has allowed the cell phone companies to whip our politicians into a frenzy. For example: T-Mobile and Sprint are <a href="https://www.nytimes.com/2018/12/18/business/sprint-tmobile-approval-huawei.html?ref=blog.althea.net">currently</a> trying to get the feds to make an exception to centuries-old antitrust law because of 5G and China.<br></p><h2 id="the-reality">The reality</h2><p>The reality is that 5G is not about the 5G protocol. 5G is a coordinated marketing and lobbying push by the cell phone carriers. The benefits of 5G are enabled by basic improvements in radio technology, which will only be brought into the real world with massive investment, whether or not the 5G protocol happens to be keeping the bits straight.<br><br>That's not to say that 5G isn't a technological achievement. Letting cell phones seamlessly switch to high bandwidth millimeter waves (when they're not blocked by a window, a tree, or a passing bird) is great. The new millimeter wave towers will really shine in settings like sports and music events- where there's a high demand for bandwidth, and everyone is able to see a tower mounted over the stadium.<br><br>Given that the 5G protocol doesn't provide capacity benefits by itself, a bet on 5G is really just a bet on cell carrier's ability to allocate capital. For example, Verizon's push for home 5G is <a href="https://www.lightreading.com/mobile/5g/analyst-maps-verizon-5g-in-sacramento-finds-pretty-sparse-coverage/d/d-id/749216??ref=blog.althea.net">looking exactly like</a> how a traditional wireless ISP hooks up its customers.<br><br>It's great that the cell carriers are entering markets like IoT and home broadband that have been hampered by lack of competition for so long. But a 5G monoculture would be no better than what we have now. Our broadband future will be brightest with a healthy mix of competition. Cell carriers with 5G, wireless ISPs, <a href="https://breakermag.com/how-mesh-networks-and-crypto-can-fill-the-rural-broadband-gap/?ref=blog.althea.net">community mesh networks</a> running long range WiFi, and even the bad old cable ISP monopolies all have a role to play. More choices and more competition equals better outcomes for consumers.<br></p>]]></content:encoded></item>
<item><title>A Sustainable Network</title><link>https://blog.althea.net/sustainable-network/</link><guid isPermaLink="true">https://blog.althea.net/sustainable-network/</guid><pubDate>Mon, 17 Jun 2019 19:35:44 GMT</pubDate><description>The novelty of the Althea system [https://althea.org/how-it-works] is how it
incentivizes a diverse group of partners within the network and automates their
collaboration. Local organizers work together with home and business owners to
host infrastructure that relays bandwidth throughout the community. This unique
collaboration can give rise to a variety of different setups and economic
models. In this post, I’m going to explore two frequently used economic models,
and I encourage creativity in </description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>The novelty of <a href="https://althea.org/how-it-works?ref=blog.althea.net">the Althea system</a> is how it incentivizes a diverse group of partners within the network and automates their collaboration. Local organizers work together with home and business owners to host infrastructure that relays bandwidth throughout the community. This unique collaboration can give rise to a variety of different setups and economic models. In this post, I’m going to explore two frequently used economic models, and I encourage creativity in how these can be best applied to your community and unique situation.</p><p></p><p><strong>Small Business </strong></p><p>An Althea network could be administrated by a small business as the organizer. Althea organizers help support the network with installation and customer support and can collect a monthly “subscriber fee” for each end user. This role fits well within the the structure of a small business who may have a manager and even a few employees as it scales up. A business makes it easier to take in revenue, maintain insurance, and manage expenses and taxes. &nbsp;</p><p>One of the more challenging aspects of starting the network is finding backhaul (the fiber connection to the internet) and setting up a gateway node. For this reason, especially during the bootstrapping phase, this business may also elect to own and operate one of these gateway nodes. This <a href="https://blog.althea.org/metered-bandwidth-on-althea/?ref=blog.althea.net">gateway node collects fees for bandwidth </a>on a per GB basis, often around 15-30 cents per GB. Because usage varies, the ability of the business owner to utilize both the bandwidth fees and the monthly subscriber fee can be very helpful. </p><p>Our best usage data comes from our network in Clatskanie that demonstrates an average of 180GB of usage per month, per household. This data closely aligns with the national average of 201GB in 2017, but is below what a recent <a href="https://www.broadcastingcable.com/post-type-the-wire/openvault-broad-based-broadband-usage-acceleration-in-2018-1-tb-power-users-double-to-4-12-of-all-households?ref=blog.althea.net">OpenVault report </a>indicates is an average of 268GB in 2018. If the gateway sets a price of $0.20 per GB they could expect monthly revenue of $36/per user/month. The business could then add to this revenue with a $10 monthly fee for an average revenue (given Clatskanie’s average) of $46/month.</p><p>The major operating cost of the gateway is the backhaul itself, which is often between $1000-$2000 for a 1Gb dedicated internet transit connection. This dedicated connection allows for re-sale and isn’t oversold to many different customers. The backhaul costs can vary a great deal based on the remoteness of your location and other political factors, but we will work with a cost of $1500/Gb for our analysis here. </p><p>With just 100 users, the business can expect a gross revenue of $4600, and a net of of $3100, an average of $31/user. In many ISP businesses this initial build out to 100 subscribers can take about a year, however, with our <a href="http://blog.althea.org/april-update/?ref=blog.althea.net">Altheahoods program</a>, you can easily front load the user acquisition into the planning stages, and build out with 100 subscribers initially. </p><p>For this build out, both the gateway node and the subscribers will need equipment. The average cost for the CPE (customer premises equipment) is between $150-$200, and this includes a router, the antenna, and cable at the subscriber's home or business. Organizers can choose to use a model where subscribers buy their own equipment, organizers pay for the equipment of the subscribers outright, or organizers pay for the equipment up front but increase the monthly subscriber fee for a short time to cover. For this example, we’ll look at the most costly use case for the business - organizer paying for all equipment up front. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/06/litebeam.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>This antenna, mount, and cabling costs around $150.&nbsp;</figcaption></figure><p>Below is a bill of materials for a 100 person network with one gateway and three relays. With the total cost of the build out, including all gateway and relay nodes and all subscriber CPEs, being $19,881 and a net of $3100 a month, ROI can be expected in just under 7 months. </p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/06/Screen-Shot-2019-06-17-at-12.08.23-PM.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Of course, we are overlooking labor for installers and other costs, like insurance. These costs can be managed by increasing the length of time to ROI, charging an installation fee, or the organizers can install themselves. Once the initial build out has been completed, typical growth for wireless ISPs can be 15-30 subscribers per month, adding additional revenue. The 1Gb backhaul gateway could support between 200-400 subscribers, depending on expected throughput, until it either needs to be upgraded or more gateways built. Althea supports a sustainable implementation and scalable business model, with a short term return on investment.</p><p></p><p><strong>Cooperative or NonProfit</strong></p><p>The cooperative or non profit model is very similar to the business case, with slight differences to how costs can be shared. In the rural Oregon Clatskanie network, the organizers formed a member owned cooperative, where subscribers are members and the network is governed by an elected board. The cooperative both organizes the network and operates the main gateway. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/06/clatskanieview.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>A relay in the Clatskanie network.</figcaption></figure><p>The cost for the CPE equipment, gateway, and relays is the same as the above business case. Backhaul costs $1400/month for 500Mbps, which can support about 100 subscribers with speeds of around 50Mbps. </p><p>The Clatskanie build for it’s thirty-five users was primarily subsidized by Althea as testing grounds for our new software. This funding could be similarly achieved through a broadband grant or crowdfunded. A shared approach might look like relays that are self funded and the gateway and CPE’s equipment being a shared cost. At thirty-five users and a total cost of $7106, that would be $203 per person and easily within the scope of a crowd funded project for an under served area or one with little choice for internet access. </p><p>At 100 users, the network will be grossing approximately $4600/month and a net of $3200 which will be able to support a part-time manager/installer and the other expenses of the network. Growth can be easily scaled as more bandwidth and subscribers are added. This creates an inclusive organization able to sustainably support broadband expansion in a variety of environments, including low density or underserved low income areas.</p>]]></content:encoded></item>
<item><title>Digital Divide Narrowing Substantially?</title><link>https://blog.althea.net/digital-divide/</link><guid isPermaLink="true">https://blog.althea.net/digital-divide/</guid><pubDate>Mon, 10 Jun 2019 21:51:58 GMT</pubDate><description>

It&apos;s June 2019 and today I&apos;m going to install a new subscriber of our
cooperative ISP in rural Oregon. This family had previously only access to 1Mbps
wireless or an expensive 4Mbps DSL connection. This is not a new or isolated
incident. I receive calls every day from people in my community that are
desperate for broadband so they can access education, health care or work
online. So, when the FCC posted the results of the Broadband Deployment Report
[https://techcrunch.com/2019/05/29/fccs-broa</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p></p><p>It's June 2019 and today I'm going to install a new subscriber of our cooperative ISP in rural Oregon. This family had previously only access to 1Mbps wireless or an expensive 4Mbps DSL connection. This is not a new or isolated incident. I receive calls every day from people in my community that are desperate for broadband so they can access education, health care or work online. So, when the FCC posted the results of the <a href="https://techcrunch.com/2019/05/29/fccs-broadband-deployment-report-called-fundamentally-at-odds-with-reality/?ref=blog.althea.net">Broadband Deployment Report</a>, which was titled “Digital Divide Narrowing Substantially” and portrayed a rosy picture of internet access, we had good reason to be suspect. </p><p>The FCC and big telecom have strong incentives to show America that their policies are working, and that competition and municipal solutions aren't needed to improve access. The FCC collects the data for the Broadband Deployment Report from numbers that internet providers self report. There are strong incentives for providers to be overly optimistic about the access they provide. If an ISP in the area doesn't claim to provide access to all the nearby census blocks at broadband speeds, other carriers can receive grants to build and encroach on their “territory”. The FCC leadership also has a strong incentive to show that their <a href="https://www.eff.org/deeplinks/2017/09/just-how-unpopular-how-wrong-facts-how-misguided-fcc-proposal-rollback-network?ref=blog.althea.net">vastly unpopular policies</a> work - that allowing ISPs free reign to block and throttle data somehow translates to providing access to rural and under served areas.</p><p>A regulatory body that hears mostly from lobby and special interest groups incentivized to overstate access could benefit from hearing from the members of under served communities. I would like to extend an invitation to FCC chairman, Ajit Pai, to visit Clatskanie Oregon and hear from farmers, business people, and young students who are directly impacted by lack of broadband access. These conversation can curate a deeper understanding of the needs of rural communities and impact policy in a more meaningful way than self-reported carrier data. We look forward to the opportunity to share our first hand knowledge and engage in dialogue that can lead to real solutions to bridging the digital divide.</p>]]></content:encoded></item>
<item><title>Making a Cosmos chain</title><link>https://blog.althea.net/making-a-cosmos-chain/</link><guid isPermaLink="true">https://blog.althea.net/making-a-cosmos-chain/</guid><pubDate>Fri, 07 Jun 2019 02:06:36 GMT</pubDate><description>Cosmos is a project creating an &quot;Internet of blockchains&quot; which will be linked
together through the IBC protocol. Unlike many blockchains, where your
application will have to pay fees to some weird guys with rooms full of GPUs, on
Cosmos, you build your own chain, and most tx fees can go to your blockchain&apos;s
token holders, with validators charging 0-10% of tx fees for running the
infrastructure.

Building your own blockchain also gives you a lot of flexibility. If Bitcoin is
a pocket calculator </description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>Cosmos is a project creating an "Internet of blockchains" which will be linked together through the IBC protocol. Unlike many blockchains, where your application will have to pay fees to some weird guys with rooms full of GPUs, on Cosmos, you build your own chain, and most tx fees can go to your blockchain's token holders, with validators charging 0-10% of tx fees for running the infrastructure.</p><p>Building your own blockchain also gives you a lot of flexibility. If Bitcoin is a pocket calculator with a few functions, and Ethereum is a graphing calculator with the ability to upload some limited scripts, then Cosmos is Ruby on Rails. You start from a full-featured base application built from a robust set of libraries, and customize anything and everything about it. </p><p>The base application that you start from is called <a href="https://github.com/cosmos/gaia?ref=blog.althea.net">gaia</a>. This is the same software that the Cosmos Hub chain runs. This blog post gives instructions for starting a chain with 2 validators, although it would be easy to adapt these instructions to a larger group of validators. </p><h2 id="install">Install</h2><p>First install everything. These steps are the same if you are initializing a new Cosmos chain, or joining someone else's. They work on new DigitalOcean Ubuntu droplets, but will probably work on many other Linux systems, although you may have to install other dependencies such as Git.</p><p>Download and install Golang (from <a href="https://golang.org/doc/install?ref=blog.althea.net">https://golang.org/doc/install</a>)</p><pre><code class="language-bash">wget https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.12.5.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
</code></pre><p>Set up some required Golang environment variables (from <a href="https://github.com/cosmos/gaia/blob/master/docs/installation.md?ref=blog.althea.net">https://github.com/cosmos/gaia/blob/master/docs/installation.md</a>)</p><pre><code>mkdir -p $HOME/go/bin
echo "export GOPATH=$HOME/go" &gt;&gt; ~/.bash_profile
echo "export PATH=\$PATH:\$GOPATH/bin" &gt;&gt; ~/.bash_profile
source ~/.bash_profile
</code></pre><p>Get some build tools used to build the binaries</p><pre><code>apt install make
apt install gcc
</code></pre><p>Download gaia, the Cosmos hub codebase</p><pre><code>mkdir -p $GOPATH/src/github.com/cosmos
cd $GOPATH/src/github.com/cosmos
git clone https://github.com/cosmos/gaia
</code></pre><p>Build the binaries</p><pre><code>cd gaia &amp;&amp; make install
</code></pre><p>Check that it was installed correctly</p><pre><code>gaiad version --long
gaiacli version --long
</code></pre><p><code>gaiacli</code> for instance should output something similar to:</p><pre><code class="language-shell">cosmos-sdk: 0.33.0
git commit: 7b4104aced52aa5b59a96c28b5ebeea7877fc4f0
build tags: netgo ledger
go version go1.12 linux/amd64
</code></pre><h2 id="initializing-a-new-cosmos-chain">Initializing a new Cosmos chain</h2><p>Now it's time to set up the starting conditions for your network using a file called <code>genesis.json</code>. This is very important on a proof of stake chain, since everything else that will happen during the life of the chain will originate from the authority and value granted here. For example, on the Cosmos Hub, the <code>genesis.json</code> file contained the amounts of Atoms purchased by crowdsale participants.</p><p>The process of starting a Cosmos chain has multiple steps, but each step is important. Participants in a blockchain system trust the process instead of each other, and each step of this process lets them verify that everything is kosher.</p><ol><li>Someone creates a <code>genesis.json</code> file with initial token allocations and sends it to all the starting validators for inspection.</li><li>If the validators feel that the <code>genesis.json</code> file is valid, they sign <code>gentx</code>s to get added as validators on the chain.</li><li>Someone compiles all the <code>gentx</code>s and adds them to the <code>genesis.json</code>, again sending it out to all the validators for inspection.</li><li>If the validators feel that the <code>genesis.json</code> is still valid, they start their nodes and start producing blocks.</li></ol><p>We'll be using the instructions <a href="https://github.com/cosmos/gaia/blob/master/docs/deploy-testnet.md?ref=blog.althea.net#single-node-local-manual-testnet">here</a> for a "Single-node, Local, Manual Testnet", but we will modify them to create a multiple-node, remote, manual network. This assumes that you've got two servers set up according to the above instructions. If you only set up one, go ahead and set up another one now.</p><h5 id="step-1-">Step 1.</h5><p>Follow these instructions for validator 1:</p><pre><code class="language-bash"># These commands are run on validator 1

# You can run all of these commands from your home directory
cd $HOME

# Initialize the genesis.json file that will help you to bootstrap the network
gaiad init --chain-id=mychain validator1

# Create a key to hold your validator account
gaiacli keys add validator1

# Add that key into the genesis.app_state.accounts array in the genesis file
# NOTE: this command lets you set the number of coins. Make sure this account has some coins
# with the genesis.app_state.staking.params.bond_denom denom, the default is staking
gaiad add-genesis-account $(gaiacli keys show validator -a) 1000000000stake,1000000000footoken</code></pre><p>Now, switch to validator 2</p><pre><code class="language-bash"># These commands are run on validator 2

# Create a key to hold your validator account
gaiacli keys add validator2

# Show the address
gaiacli keys show validator2 -a</code></pre><p>Copy the key output by the second command and switch back to validator 1:</p><pre><code class="language-shell"># These commands are run on validator 1

# Add validator2's address and allocation to genesis.json
gaiad add-genesis-account &lt;address copied from validator2&gt; 1000000000stake,1000000000footoken

# Export genesis.json
gaiad export</code></pre><p>Copy the genesis.json output by the second command and switch back to validator 2:</p><pre><code class="language-bash"># These commands are run on validator 2

# Save the genesis.json from the last step in:
$HOME/.gaiad/config/genesis.json</code></pre><h4 id="step-2-">Step 2.</h4><p>Now it is time to make the <code>gentx</code>s</p><pre><code class="language-bash"># These commands are run on validator 2

gaiad gentx --name validator2

# This should output something like:
# Genesis transaction written to "/root/.gaiad/config/gentx/gentx-33e8c0fbef25d8d455aefa1fd33fb6982f5484ec.json"

# Copy the gentx from the file where it was saved</code></pre><h5 id="step-3-">Step 3.</h5><p>Switch back to validator 1</p><pre><code class="language-bash"># These commands are run on validator 1

# Save the gentx from validator2 to:
# /root/.gaiad/config/gentx/&lt;name of gentx file from validator2&gt;.json

# Now make a gentx file for validator1 as well
gaiad gentx --name jehan

# Now generate the final genesis.json
gaiad collect-gentxs</code></pre><p>Switch back to validator 2 and again save the genesis.json file produced by validator 1</p><pre><code class="language-bash"># These commands are run on validator 2

# Save the genesis.json from the last step in:
$HOME/.gaiad/config/genesis.json</code></pre><h5 id="step-4-">Step 4.</h5><p>Now, running <code>gaiad start</code> on both nodes should start your blockchain. You may have to start one or the other one first. You'll probably want to use something like <a href="https://www.devdungeon.com/content/creating-systemd-service-files?ref=blog.althea.net">systemd</a> to keep the validators running when the system restarts, but that's beyond the scope of this blog post.</p><p>In the next post, we'll talk about how to send coins to another account, and how they can get added to the validator set.</p>]]></content:encoded></item>
<item><title>Althea Development Update #70: Dueling scripts</title><link>https://blog.althea.net/althea-development-update-70-decentralization-without-compromises/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-70-decentralization-without-compromises/</guid><pubDate>Mon, 03 Jun 2019 18:45:07 GMT</pubDate><description>Put on your night time sunglasses because I have a tale from our cyberpunk future, or present as it may be. How a poorly coded smart contract disrupted an ISP in rural Oregon. </description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Put on your night time sunglasses because I have a tale from our cyberpunk future, or present as it may be. </p><p>How a poorly coded smart contract disrupted an ISP in rural Oregon.</p><p>Around 3pm this Sunday we started experiencing degraded service for the entire Clatskine test network. An automated alert notified the on call network operator and the investigate commenced. </p><p>A few minutes of fervent log searching later a pattern emerged. transactions weere being published to the Ethereum full nodes successfully but not a single Althea transaction had made it into the blockchain for the last 5 hours. </p><p>While the bandwidth billing system is very resilient to temporary failures in payment it does have to cut off users who don't pay eventually. In our case the gateway determined it was being underpaid by the exit and started limiting the connection speed to the exit as an underpayment warning. </p><p>The bigger question of course was, why were the exits payments not getting through? </p><p>The answer to that comes in two parts. A poorly coded <a href="https://www.reddit.com/r/ethereum/comments/bvkvuz/using_20_of_all_gas_atm_an_airdrop_contract_with/?ref=blog.althea.net">airdrop script</a> and someone who was exploiting it. </p><p>You see this airdrop script suffered from a vulnerability we call a 'sybil attack' it allowed anyone with a small amount of Ethereum in their account to mint some small amount of this new token for free.</p><p>An enterprising hacker simply wrote a script that would take a large amount of Ethereum, split it into many new addresses with smaller balances and then call the contract. Allowing them to collect many hundreds or thousands of times the amount of minted token they were supposed to be limited to. </p><p>This script interfered with Althea specifically because both Althea and the hacker selected the same method for determining the gas price on our transactions.</p><p>The script was producing thousands of transactions with a 1Gwei gas fee, taken from the gas_price() endpoint of an Ethereum full node. That value is computed as the median of fees paid over the last several blocks. </p><p>Althea uses the same endpoint and there is flaw we were looking for. Since we chose the same gas fee as the contract attacker, our transactions had the same priority while being hundreds of times less prevalent. Resulting in almost none of them getting through. </p><p>If we had increased our tx fee value by even 10% Althea transactions would make it into the blockchain in less than 3 minutes. But because we trusted the median gas price endpoint our transactions were directly competing with the attacker and would take over two hours to get in a block, if they got in at all. </p><p>We patched our nodes to pay 50% more for gas and had the network back up and fully operational within 15 minutes of the first service degradation. </p><p>The Althea routers advanced traffic shaping kept the network slow but usable for the duration. We actually ended up with many more complaints about this weekends <a href="https://status.cloud.google.com/incident/compute/19003?ref=blog.althea.net">Google Cloud outage. </a></p><p>But the problem here is not over. The fix required human intervention and the level of 'meta' thinking to determine what the solution would be.</p><p>Althea is unusual in that autonomous micropayments for bandwidth have higher expectations on the level of automation. People shove networking gear into a cubbord and leave it there for years unattended. No one is going to come along and refresh the page or reboot the device. </p><p>In order to achieve that reliability we've slowly been building more and more awareness of the all the failure modes of blockchain payments into our own software. Modern blockchains are simply not reliable enough to treat as an abstracted payment system where a transaction is valid, submitted, and done. </p><p>Hopefully proof of stake based systems can reduce the variability of the transaction process as well as help reducing scaling issues. In the meantime we'll need to update Althea to inspect transactions in the mempool and automatically make the gas price adjustment required to win the next duel. </p><h2 id="beta-5-released-">Beta 5 Released!</h2><p>The Beta 5 release is out with some new features, the real headliner is that routers now estimate how long your existing balance will last based on previous usage.</p><ul><li>Client devices no longer come with WAN ports by default</li><li>even more fixes to payment stability</li><li>bandwidth history and payment history now stored and displayed on the dashboard</li><li>changes to client billing that make it resilient to packet loss</li><li>fix issue with binding to ports not on built in switches</li><li>more fixes to port selection for peer discovery</li><li>protection against payment replay attacks</li><li>fix to babel parsing issue that could cause strange billing behaviour</li></ul><p>As you can see I need to top up my personal router</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/06/Screenshot_20190603-104728-1-.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure>]]></content:encoded></item>
<item><title>Althea in Los Mochis</title><link>https://blog.althea.net/althea-in-los-mochis/</link><guid isPermaLink="true">https://blog.althea.net/althea-in-los-mochis/</guid><pubDate>Sat, 01 Jun 2019 00:32:51 GMT</pubDate><description>
On a sunny day in the city of Los Mochis, Mexico, Althea organizer Raul, runs a
speed test on an expensive 20Mbps connection. 20Mbps, which is not even
considered broadband in the US, is about the fastest connection available in the
city. Today, like most days here, the speedtest shows an underwhelming 1Mbps of
download speed. Raul is here to change this - to bring real improvement to both
the cost and speed of internet, starting in Los Mochis and growing to all of
Mexico.

Raul installing a Mi</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<h1></h1><p>On a sunny day in the city of Los Mochis, Mexico, Althea organizer Raul, runs a speed test on an expensive 20Mbps connection. 20Mbps, which is not even considered broadband in the US, is about the fastest connection available in the city. Today, like most days here, the speedtest shows an underwhelming 1Mbps of download speed. Raul is here to change this - to bring real improvement to both the cost and speed of internet, starting in Los Mochis and growing to all of Mexico.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/06/IMG950586--1--1.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Raul installing a Mikrotik SXT antenna and a Western Digital N750 router.&nbsp;</figcaption></figure><p>By selecting a quality tier two connection and using Althea software, Raul is planning on offering a true 25Mbps connection at a target cost of $20 US dollars per user. This will give people access to video streaming, online commerce and education that most can afford. &nbsp;In addition, Althea's incentivized system will allow Raul to work with local partners to become relays, so the money generated from the network will stay local. These relays will help spread the word, and earn money from the bandwidth of those connected to them. </p><p>In May, Raul set up a gateway and small test network, sharing the Althea system with local people and working with local installers. A gateway is a connection to the internet that is then broadcasted with outdoor antennas to the community. People here are excited about Althea and are ready for better internet access at more affordable prices. In July, Raul will travel back to Los Mochis, this time ready to build the network. Faster, cheaper, locally run internet is coming to Los Mochis and Mexico!</p>]]></content:encoded></item>
<item><title>May Community Update</title><link>https://blog.althea.net/may-community-update/</link><guid isPermaLink="true">https://blog.althea.net/may-community-update/</guid><pubDate>Mon, 27 May 2019 18:03:19 GMT</pubDate><description>We launched six new Altheahoods communities in early May. An Altheahood
community is selected by an organizer as a potential deployment.  Local
organizers then work together with the Althea team to get people signed up and
“pre-registered” prior to committing to a buildout. One of these organizers,
Perri, had been struggling to find good internet access for her parent&apos;s 80 acre
hazelnut farm and recognized that an Althea network might be the solution for
her community of Newberg, Oregon. Perri a</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>We launched six new Altheahoods communities in early May. An Altheahood community is selected by an organizer as a potential deployment. &nbsp;Local organizers then work together with the Althea team to get people signed up and “pre-registered” prior to committing to a buildout. One of these organizers, Perri, had been struggling to find good internet access for her parent's 80 acre hazelnut farm and recognized that an Althea network might be the solution for her community of Newberg, Oregon. Perri and her fiance Dante, together with co-organizer's Joseph and Seth, launched their &nbsp;<a href="https://althea.org/newberg?ref=blog.althea.net">Altheahood</a> and look to get 100 pre-registrations over the summer. &nbsp;You can explore the Altheahoods sites by visiting the links at the top of the page, <a href="http://www.althea.org/?ref=blog.althea.net">www.althea.org</a>, including the newly added <a href="http://www.althea.org/lynn-valley?ref=blog.althea.net">www.althea.org/lynn-valley</a>.</p><p>In the end of May, another Althea organizer will be deploying a pilot program in the city of Los Mochis, Mexico. Raul hopes to start with connecting around 25 people and then quickly grow and expand into other Mexican cities. He is also planning to connect some of the nearby schools, who lack consistent internet access. Because Althea can work with a variety of hardware, he plans to use low cost routers and antennas to keep installations cheap and accessible for most people. </p><p>We also recently checked in on Tamario and the other participants in the Medellin Althea deployment. While there have been some setbacks, the Red Medellin team is working through challenges and pushing forward with their plans to make exchanging pesos for xdai easier. Althea infrastructure provides much faster home internet access, as Tamario demonstrates in this &nbsp;<a href="https://www.youtube.com/watch?v=bSFFek0HVps&amp;t=2s&amp;ref=blog.althea.net">fun video</a>. </p><p>We continue to grow into a reliable network in Clatskanie, adding a few new members weekly. (read about some of the people involved<a href="https://www.oregonbusiness.com/article/tech/item/18757-community-connector?ref=blog.althea.net"> in Oregon Business</a>) Recently we have demonstrated that even with two layers of encryption and all of our software, participants can expect the same, or even better, performance than they would get with a legacy ISP. Justin Kilpatrick takes us through all of the tech achievements in the <a href="https://blog.althea.org/althea-development-update-69/?ref=blog.althea.net">latest blog post</a>. There is a lot to celebrate, and, as he puts it, “we nailed both performance and price”. &nbsp;With those milestones reached, we now focus on adding new users, tweaking the economics, and flawless reliability.</p><p>On Wednesday May 22nd, we shared these milestones in more depth and answered your questions in our second live community call. <a href="https://www.youtube.com/watch?v=SdEPc3-R1Rs&amp;ref=blog.althea.net">Check it out here. </a>In June, Jehan Tremback will be visiting Berlin for the Cosmos conference, <a href="https://cosmos.network/events/interchain-conversations?ref=blog.althea.net">Interchain Conversations</a> and Althea CTO, Justin Kilpatrick, will be speaking at the <a href="https://www.nanog.org/?ref=blog.althea.net">NANOG conference in Washington DC</a>. </p><p>If you are interested in becoming an organizer, starting an Altheahood in your area, or have questions, send us an email or check out <a href="http://althea.org/?ref=blog.althea.net">althea.org</a>.</p>]]></content:encoded></item>
<item><title>Faster, Cheaper Internet in Medellin Colombia</title><link>https://blog.althea.net/faster-cheaper-internet-in-medellin-colombia/</link><guid isPermaLink="true">https://blog.althea.net/faster-cheaper-internet-in-medellin-colombia/</guid><pubDate>Tue, 14 May 2019 01:32:02 GMT</pubDate><description>Before the Red Medellin team brought in Althea&apos;s innovative technology, options
for internet access were limited in Comuna 13, one of the sprawling urban
communities on the hills surrounding Medellin Colombia. A few of the homes had
low-speed DSL access, but most people relied on expensive cell data plans. Many
of these data plans “zero rate”, or give free access to sites like Facebook and
WhatsApp, while charging high prices for the rest of the web. This gives people
a very narrow perception of</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>Before the Red Medellin team brought in Althea's innovative technology, options for internet access were limited in Comuna 13, one of the sprawling urban communities on the hills surrounding Medellin Colombia. A few of the homes had low-speed DSL access, but most people relied on expensive cell data plans. Many of these data plans “zero rate”, or give free access to sites like Facebook and WhatsApp, while charging high prices for the rest of the web. This gives people a very narrow perception of the internet, as they try to avoid high costs and only use these zero rated sites. Experiencing the internet only through Facebook seems dystopian to many of us who enjoy the benefits of a full range of access to the knowledge and opportunity possible on the internet.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/05/nowwithmoviestar.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Poster showing data plans with zero rated Facebook, Twitter and WhatsApp.&nbsp;</figcaption></figure><p>One young person in the Comuna, Tamario, hopes to make a living off of the internet via his Youtube channel filled with quirky videos of daily life. Like his distinctive bi-color hair style, Tamario's videos are fun, and creative - a combination of humor, music and dancing. Before Althea, he had no home access to internet, and would have to rely on a friend's slow DSL connections to upload his videos.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/05/Screen-Shot-2019-05-13-at-6.17.43-PM.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Will Tamario find <a href="https://youtu.be/bSFFek0HVps?ref=blog.althea.net">cheaper and faster internet?</a> Watch the video to find out - https://youtu.be/bSFFek0HVps</figcaption></figure><p>When Tamario was introduced to Althea's technology by members of the Red Medellin team, he was eager to help. Tamario became a key community member who not only helped build the network, but also became a relay, providing nearby homes with internet. Tamario will make a few cents a GB from each neighbor connected to him, which will pay for the electricity required by the antenna and some extra. </p><p>This project is still in it's early stages and experiences some problems that were new to us at Althea. We didn't realize how expensive power consumption can be for the people who live there. The crypto ATM downtown is also far away and difficult to use. We have been working to make the process easier, with our simple wallet, www.efectivo.cc, and an ethereum to xdai bridge in the routers. The Red Medellin team is working with local grocery stores, the tiendas, to provide liquidity and access to xdai within the Comuna as well. </p><p>Internet access that's too expensive for the community or charges more for some sites than others, is not really access at all. Althea's agile, decentralized network is helping people in the Comuna experience true access to the internet, which means people there can now use the internet for education, staying in touch with loved ones, and Tamario can share his videos with the world.</p>]]></content:encoded></item>
<item><title>Althea Development Update #69: Decentralization without compromises</title><link>https://blog.althea.net/althea-development-update-69/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-69/</guid><pubDate>Mon, 13 May 2019 16:40:00 GMT</pubDate><description>Althea has taken the same base software ISPs use and applied some modern advancements. 

In short we&apos;ve stacked our advantages and minimized our overhead to such a degree that we come out even with centralized ISP performance. </description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<h2 id="a-look-at-traffic-performance">A look at Traffic performance</h2><p>This is a node in our test network, these packets are being routed through a point to point antenna over a distance of 3 miles before reaching the gateway and peering to the internet through the exit. </p><pre><code>root@OpenWrt:~# ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 1.1.1.1: seq=0 ttl=61 time=5.529 ms
64 bytes from 1.1.1.1: seq=1 ttl=61 time=7.793 ms
64 bytes from 1.1.1.1: seq=2 ttl=61 time=7.339 ms
64 bytes from 1.1.1.1: seq=3 ttl=61 time=5.999 ms
64 bytes from 1.1.1.1: seq=4 ttl=61 time=7.361 ms
64 bytes from 1.1.1.1: seq=5 ttl=61 time=7.839 ms
--- 1.1.1.1 ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 5.529/6.976/7.839 ms</code></pre><p>Lets beak this down. Cloudflare has done it's best to put an endpoint in every internet exchange in the US. This makes 1.1.1.1 the best way to compare last mile latency since the ping packet will only traverse the distance to the datacenter and back. </p><p>Here's a sample from a traditional cable ISP. </p><pre><code>[justin@localhost ~]$ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=56 time=4.58 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=56 time=8.43 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=56 time=7.79 ms
64 bytes from 1.1.1.1: icmp_seq=4 ttl=56 time=9.90 ms
64 bytes from 1.1.1.1: icmp_seq=5 ttl=56 time=6.88 ms
64 bytes from 1.1.1.1: icmp_seq=6 ttl=56 time=4.59 ms
--- 1.1.1.1 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5005ms
rtt min/avg/max/mdev = 4.587/7.033/9.909/1.950 ms
</code></pre><p>And a Gigabit fiber connection.</p><pre><code>
[justin@DESKTOP-UALBV95 ~]$ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=55 time=12.1 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=55 time=11.7 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=55 time=12.1 ms
64 bytes from 1.1.1.1: icmp_seq=4 ttl=55 time=11.9 ms
64 bytes from 1.1.1.1: icmp_seq=5 ttl=55 time=11.9 ms
64 bytes from 1.1.1.1: icmp_seq=6 ttl=55 time=13.2 ms
--- 1.1.1.1 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 12ms
rtt min/avg/max/mdev = 11.677/12.145/13.231/0.520 ms</code></pre><p>This sort of performance strains the bounds of credulity. It's the sort of thing that makes you double check you're on the right connection. </p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/05/Screenshot-from-2019-05-13-16-55-21-1.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>We've got two layers of encryption across three nodes, for a toal of six encryption operations. Two NAT operations, three routing operations, and three traffic flow control operations. </p><p>And the wireless point to point hop between this node and the next.</p><p>How is this even possible? The answer is a combination of two factors. </p><p>Traditional ISPs don't really apply new technology very much. They update their modems for new wires but are very conservative with the networking software. </p><p>Althea has taken the same base software ISPs use and applied some modern advancements. </p><ul><li>All of our packet forwarding is in kernel, this lets us use the same highly optimized code relied upon by the rest of the industry. But we're using a version a couple of years ahead of what's in the average ISP modem. </li><li>The Cake flow control algorithm dynamically prioritizes low latency traffic, preventing other Althea users from slowing down packets while at the same time ensuring efficient sharing of connections. This is probably where our latency advantage comes from. </li><li>WireGuard has hand tuned vectorized implementations of it's cryptography, encrypting or decrypting a packet takes only a few clock cycles. This minimizes the impact of the encryption between nodes. </li><li>We racked our own exit server at the PDX data center. Mere feet from Cloudflare's 1.1.1.1 server. This means that the 'exit sever' part of Althea's archietecure does minimal damage to latency and throughput. </li></ul><p>In short we've stacked our advantages and minimized our overhead to such a degree that we come out even with centralized ISP performance. </p><p>These cheaper ($65) antennas typically go up to about 100mbps.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/05/Screenshot_20190507-125817_Gallery-1.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>TCP speedtests like this are actually the most challenging to do well on, for this user to get 500mbps or a gigabit is a matter of updating the antenna.</figcaption></figure><p>The entire set of hardware for this user cost $161, $90 for the router, $65 for the antenna, and $6 for the mount. </p><p>I'm very happy to have reached this design milestone. We knew that to be viable as a replacement for centralized ISPs we would need to nail both performance and price. </p><p>But the journey is far from over. </p><p>What we need to improve from here is reliability, we currently have 99.7% uptime, that's about 30 minutes of unexpected downtime a week.</p><p>Obviously this is a user experience issue, even if we can provide better service than an incumbent ISP we need to also be more reliable.</p><hr><h2 id="payments-have-reached-a-high-level-of-reliability">Payments have reached a high level of reliability </h2><p>Since the <a href="https://blog.althea.org/time-is-relative/?ref=blog.althea.net">last update</a> my primary focus has been getting payment convergence to hold up in turbulent production conditions. </p><p>I've been hotpatching the production exit and gateway every day for the past two weeks. There are obviously risks to doing this, but I've managed to get away without any extra downtime beyond what it takes to actually load the patches. </p><p>This is the result of Saturday's hotpatch, 0.3% bandwidth accounting divergence and 0.6% billing divergence over a period of 48 hours. Including some of the most active traffic periods of the week. </p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/05/Screenshot-from-2019-05-13-10-29-34.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Before I started this billing would drift by a couple of percent a day and on the larger nodes errors would eventually build up enough to stop normal operation. </p><p>The core set of problems that ended up requiring changes are as follows </p><ul><li>Receiving nodes checked for 1 block confirmation so uncles could cause issues. Increased to 4 blocks</li><li>Sending nodes assumed that all transactions that entered the mempool would eventually enter the blockchain, this is not the case. Sending nodes now also wait for 4 confirmations.</li><li>The state of 'payment in flight' was implicit. So sometimes a node would make many transactions during the same block period. This is now prevented. </li><li>The timing issue I resolved in my <a href="https://blog.althea.org/time-is-relative/?ref=blog.althea.net">last blog post</a>, no more time based discounts.</li><li>The accounting logic for payments didn't deal well with high rates of failed payment attempts. This logic has been simplified and made aware of in flight payments.</li></ul><p>I'm hoping to roll these changes to everyone in Beta 5 in just a week or so. </p>]]></content:encoded></item>
<item><title>Althea Development Update #68: Time is relative for computers too</title><link>https://blog.althea.net/time-is-relative/</link><guid isPermaLink="true">https://blog.althea.net/time-is-relative/</guid><pubDate>Thu, 25 Apr 2019 22:55:49 GMT</pubDate><description>This issue got me thinking about the relativity of time on the routers. Our billing algorithm made the assumption that everyone did billing computations every 5 seconds, what would happen when that didn&apos;t hold true?</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p><em>sorry for the delay between updates, pollen season hit me pretty hard and I accidentally skipped one while under the weather. </em></p><h2 id="the-billing-disagreement-mystery">The billing disagreement mystery</h2><p>For the past several weeks I've been working on figuring out why billing amounts on production routers would always diverge eventually. </p><p>All the routers would agree on who should pay who what for a few days, maybe a week. Then things would start to drift. </p><p>Routers on each side of a connection would agree about how much had been paid, but disagree about what was the correct amount. </p><p>It obviously couldn't be a simple logic error. Controlled testing stubbornly produced perfect results, even if run for days on end.</p><p>I considered and investigated the possibility that packet loss was producing the billing drift in production. But that was never borne out by the data. </p><p>After a few weeks of looking for stupid mistakes I had to accept that the problem I was seeing might be more fundamental. In the end it was a different bug that put me on the right track. </p><p>On Thursday the 18th at around 6pm everyone in our test network was just getting home from work and internet usage was at its non-weekend peak. </p><p>Things seemed to be ticking along smoothly, when system lag on the gateway suddenly began spiking. Seen here in the monitoring system we use for our infrastructure. </p><p>At first only a little and then 30 minutes later it began rising without control. </p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/04/Screenshot-from-2019-04-23-11-19-05.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Google's dns server 8.8.8.8 was behaving strangely in the Portland area. The server would accept connections but once open they would hang. </p><p>Being a multihomed major service 8.8.8.8 is not provided by a single server but a network of different machines around the country. 8.8.4.4, the fallback server, seems to have been just fine during this period. </p><p>Once the incident was over the system self recovered within 20 minutes or so. The post mortem was completed with a single line fix. </p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/04/Screenshot-from-2019-04-23-11-24-54.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><hr><p>This issue got me thinking about the relativity of time on the routers. Our billing algorithm made the assumption that everyone did billing computations every 5 seconds, what would happen when that didn't hold true?</p><p>Could small disruptions in the sampling frequency be causing our divergence? </p><p>Some quick data gathering showed that a 1 second (20%) variance in average sampling frequency was not only happening but nearly universal. </p><h2 id="breaking-the-rules">Breaking the rules</h2><p>The core of the problem was that Althea's billing was comparing two curves. </p><p>One of these was a flat line, the discount for 'free tier bandwidth' the other was a sampled curve, like the graph below each router would see a different curve depending on when and how often it sampled. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/04/1000px-AliasingSines.svg.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Because the sampling is below the Nyquist rate any change in the sampling frequency will cause the router to produce and bill using a different curve.</figcaption></figure><p>Because the free tier discount worked a 'discount per second' on bytes used it links the amount paid to the accuracy of the sampling mechanism. </p><p>Over time these differences would add up as the various routers in the field where exposed to different input. </p><p>This sort of problem is fundamental sampling theory, we need to sample at at least the <a href="https://en.wikipedia.org/wiki/Nyquist_rate?ref=blog.althea.net">Nyquist rate</a> in order to produce an accurate curve. </p><p>There's no way we can sample anywhere near that fast, nor can we guarantee a agreed-on slower schedule will be followed by all routers. </p><p>If the user decides they need to start streaming 4k Netflix the operating system will put billing on hold to deal with the traffic spike. There's nothing our billing process can (or should) do to stop this. </p><p>Thankfully there's a pretty simple solution, in order to prevent the sampling frequency from causing problems we need to avoid involving any time-denominated metrics in billing. </p><p>Bytes used is simply a scalar metric, one that will count up to be the same if sampled once a day or once a microsecond. </p><p>Sadly this means the free tier billing discount had to go.</p><h2 id="what-does-this-mean-for-users">What does this mean for users?</h2><p>In terms of networking the free tier is staying around. Relays provide 1mbps without any charge or conditions so that users will always be able to acquire and deposit more money to pay for bandwidth. It makes sense for the network and it makes sense for the relays.</p><p>We've adjusted the prices in our test networks to ensure that this change has a very minimal impact on the users bills during normal operation.</p><p>A user determined not to pay for their internet could in theory use a couple of dollars a month of bandwidth from their upstream. Previously this would have been zeroed out by the free tier discount, but now it must come out of the earnings of the upstream relay. </p><p>This isn't really a concern in our current networks as no one runs on empty for very long at all.</p><p>But over the course of several months or even a year the total amount of 'stolen' bandwidth is significant enough that we'll have to figure out how time box use of the 'free tier' bandwidth. </p><hr><h2 id="what-s-new-in-beta-4"><a href="https://github.com/althea-mesh/althea-firmware/releases?ref=blog.althea.net">What's new in Beta 4?</a></h2><ul><li>Changes to billing rules to prevent divergence over long periods</li><li>Replaced individual wifi settings endpoints with a single one, to make setting up wifi while on wifi smoother</li><li>Added simplified dao payments (just pays into a multisig)</li><li>Fixed a bug where port allocation would recurse forever in some cases</li><li>Fixed a bug where price display would overflow in Babel</li><li>Fixed a bug where gateways would hang if the dns server misbehaved</li><li>Fixed a bug where 15 minutes after port toggling all other mesh ports would cease to work</li><li>Babel now takes into account the RTT of various paths</li></ul>]]></content:encoded></item>
<item><title>April Update</title><link>https://blog.althea.net/april-update/</link><guid isPermaLink="true">https://blog.althea.net/april-update/</guid><pubDate>Mon, 22 Apr 2019 05:33:01 GMT</pubDate><description>Taking a note from Google&apos;s rollout of their fiber networks, we are introducing
the new Altheahoods program! This program supplies organizers with the marketing
tools and internet presence to get end users signed up and on board prior to
building out the network. This is a good tool to evaluate if an Althea network
will be viable in your neighborhood, and requires very little investment to get
started. Shoot us an email at hello@altheamesh.com if you are interested in
bringing a faster, cheaper,</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.althea.net/content/images/2019/04/map.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Taking a note from Google's rollout of their fiber networks, we are introducing the new Altheahoods program! This program supplies organizers with the marketing tools and internet presence to get end users signed up and on board prior to building out the network. This is a good tool to evaluate if an Althea network will be viable in your neighborhood, and requires very little investment to get started. Shoot us an email at <a href="mailto:hello@altheamesh.com">hello@altheamesh.com</a> if you are interested in bringing a faster, cheaper, and decentralized Althea network to your neighborhood.</p><p>We recently rolled out a major dashboard update and text notifications for a low balance state in the routers. Justin Kilpatrick, CTO, weighs in on this and other development updates.</p><blockquote>“The new dashboard and text notifications are the latest user facing features, with a focus on helping users have a smooth experience as we move into requiring and enforcing payments in our test networks. Behind the scenes we have continued to work on stability and performance improvements. Our new exit server architecture is significantly more resilient and client router failures are down from previous months. We are also testing an Android app to allow organizers to easily rescue broken routers in the field without a bulky laptop."</blockquote><p>As many of you know, Cosmos has now launched and we are moving forward with development of our own cosmos side chain that will allow users to more easily use stablecoins as the base currency. Payments on this blockchain are done using the stablecoin dai, which maintains its price relative to national currencies so the user's deposit to their router remains stable. This blockchain will be maintained by validators running the Althea blockchain software. These validators are given power to validate the Althea blockchain by holders of the Althea governance tokens, who delegate tokens to the validator(s) of their choice. Validators and those delegating Althea governance tokens to them earn transaction fees from each payment. You can learn more about ALGT in our <a href="https://althea.org/whitepaper?ref=blog.althea.net">whitepaper</a>.</p><p>Our first live community call is coming up! It's the perfect opportunity to get the latest Althea updates and have all your questions answered. We will be live on YouTube April 24th, 1pm PST. <a href="https://airtable.com/shrCyyivU2gpm0AI6?ref=blog.althea.net">Sign up here </a>and let us know what you want us to talk about and your questions. Looking forward to seeing many of you there!</p>]]></content:encoded></item>
<item><title>Althea Development Update #67: Chasing ghosts in the machine</title><link>https://blog.althea.net/althea-development-update-67/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-67/</guid><pubDate>Tue, 26 Mar 2019 13:14:01 GMT</pubDate><description>Once you design a distributed system to handle any one point of failure you
don&apos;t stop having failures, they just get more complicated and interconnected. 

Beta 3 is finally rolling out, after several weeks of furious QA. Here are some
example bugs.

1) Fixed a race condition where the Linux kernel won&apos;t assign fe80 local ips to
interfaces despite completing the &apos;network&apos; boot step. This occurs for no more
than one in several dozen reboot cycles. 

2) Fixed a bug where after about two years pow</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Once you design a distributed system to handle any one point of failure you don't stop having failures, they just get more complicated and interconnected. </p><p>Beta 3 is finally rolling out, after several weeks of furious QA. Here are some example bugs.</p><p>1) Fixed a race condition where the Linux kernel won't assign fe80 local ips to interfaces despite completing the 'network' boot step. This occurs for no more than one in several dozen reboot cycles. </p><p>2) Fixed a bug where after about two years power on time (across the fleet of devices) the local server will respond improperly to requests. The fix for this is actually the same as the fix to the lack of recovery bug we mentioned in the last update.</p><hr><p>There's a good reason why the basics of home networks haven't changed in decades. Debugging a program running in an uncontrolled environment out in the field requires a huge amount of intuition and often more than a little luck. </p><p>I only figured out what was going on with (1) because I stumbled on a machine that did it every single time and (2) is a bug we've been seeing in one form or another for months, we just finally caught an instance that gave us just the right data to reach conclusions. </p><p>It's great that we're fixing these sorts of long tail issues, it means we're getting close to the point where we can take Althea out of beta. </p><p></p>]]></content:encoded></item>
<item><title>Althea in Medellin</title><link>https://blog.althea.net/althea-in-medellin/</link><guid isPermaLink="true">https://blog.althea.net/althea-in-medellin/</guid><pubDate>Thu, 21 Mar 2019 23:53:45 GMT</pubDate><description>My trip to Colombia

Entonces(enˈtonses/, [ẽn̪ˈt̪õnses]) — One of my favorite Spanish words. It means
then or so. I like the cadence, how it fills the awkward space in a sentence and
how it conveys a sense of time and place. My trip in Colombia was a journey
through time and place, the logistics of project management — The first this, 
then that and the witnessing of a unique place at a unique time in history. How
Medellin, a once violent place, has transformed itself and revitalized its
economy</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>My trip to Colombia</p><p>Entonces(enˈtonses/, [ẽn̪ˈt̪õnses]) — One of my favorite Spanish words. It means then or so. I like the cadence, how it fills the awkward space in a sentence and how it conveys a sense of time and place. My trip in Colombia was a journey through time and place, the logistics of project management — The first this, <em>then</em> that and the witnessing of a unique place at a unique time in history. How Medellin, a once violent place, has transformed itself and revitalized its economy into a Mecca of progressive infrastructure and tourism.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/ef7072783e3b8f4cc2fb.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Comuna 13, Medellin&nbsp;Colombia</figcaption></figure><p><strong><strong>Day 1: Where is the Box?</strong></strong></p><p>Medellin sits in a valley at the elevation of 4,905 ft, surrounded by dark green mountains. Housing and communities are haphazardly built up from the urban center along the sides of the mountain, reminiscent of barnacles clinging to the rocks on a seashore.</p><p>I arrived after an all night flight and was greeted by our gracious hosts, Forrest, Andrew, and Kelsey, the <a href="https://www.redmedellin.com/?ref=blog.althea.net" rel="nofollow noopener">red_medellin</a> team. red_medellin is a group of American ex-pats that have coordinated with the accelerators, non-profit organizations and the local community here using Althea to bring internet to the much needed outlying poor communities. We took a winding taxi cab ride down the mountain into Medellin. Driving here has a video game quality — everyone is seemingly unaware of traffic laws, acceptable speed, and dividing lines. That’s when I saw it — an elusive horizontally aligned sector antenna! In most places, sector antennas are aligned vertically so that the beam covers the largest area possible horizontally. A horizontally aligned sector would provide coverage vertically, so it would be useful only on the sides of a steep hill or coverage to a skyscraper. I suspect there are very few places in the world where this makes sense.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/dd184175e7e778788fd8.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Flashing a Dell Optiplex with latest Althea firmware.</figcaption></figure><p>I brought with me a duffel bag full to the brim of routers, cables, and an old Thinkpad for programming radios. It’s fortunate that I did so, because the box that was shipped from the United States had not yet arrived. Neither had the boxes with Ubiquiti radios, ethernet cables, and most everything else we needed to build the network. There were other logistical issues that had manifested as well. The location for the sector antennas, a school perched on the very top of the community, has not been confirmed and Claro, the ISP providing our backhaul connection, has not yet told us when they will be installing. All was not lost, however, there were still routers to be flashed! So, we began to flash routers with the Althea firmware while Andrew and Kelsey made phone calls. The phone calls were successful and the radio equipment arrived without incident and we made a tentative appointment with Claro. As I walked back that night, I heard the band playing — Bon Jovi’s “It’s My Life”, sung in heavily accented English, from a Hard Rock Café.</p><p><strong><strong>Day 2: Shopping</strong></strong></p><p>The red_medellin team has chosen <a href="https://morada.co/?ref=blog.althea.net" rel="nofollow noopener">Casa Morad</a>a, a location nearby the Comuna, to beam the wireless backhaul to a school at the top where the sector antennas will broadcast internet throughout the community. We will need a roof mount for the RocketDish antennas chosen for Casa Morada. Jehan, who’s also working on Althea, has arrived this morning and shown some skepticism that the rocket’s antenna, a 31dbi dish which looks quite large in its cardboard packaging, is perhaps overkill for this less that 5km shot to the school. He communicates this observation through subtle chuckles and ponders whether the smaller NanoBeam antenna may have been adequate.</p><p>Andrew, Kelsey and I go to take a look at the roof at Casa Morada, and it’s determined that a non-penetrating roof mount, will do the trick. Where do you buy a non-penetrating roof mount in Medellin, though? The typical way of buying things online doesn’t work here, and even in the United States it is a specialty item not available at hardware stores.</p><p>We decide to head to the market areas of town, a place with streets of many small vendors. The vendors here typically have a small area to display their merchandise and hand you the items from behind counters. And the carts! Many sturdy, well-made carts are loaded down with fruit, vegetables or other wares and parked or rolled up and down the street. Some vendors, weary of calling out the name of their goods, have pre-recorded advertisements played on antiquated loud speakers. I’m reminded of the cart in a <a href="https://www.youtube.com/watch?v=xXkxaNL7OHs&amp;ref=blog.althea.net" rel="nofollow noopener">popular Colombian music video</a>, one laden down with a 70s era speaker system and rolled down the hill behind dancing people.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/a056b4b37d1ff203a07d.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Shopping for a roof&nbsp;mount.</figcaption></figure><p>We stop at the hardware vendor, who points us three blocks down to a sort of industrial section of town. We pass restaurant equipment, motorcycle repair shops, and finally see the welding sparks we were looking for. We show the welder a picture and Andrew, who speaks fluent Spanish, helps negotiate price and delivery. He can manufacture and deliver the stand tomorrow, so our work here is done. As we walk to a cleaner place to eat, a hat vendor keeps pace with us, in case we may change our mind about a hat purchase today, and there in a courtyard, I see a man in full armor, waiting, I surmise, for someone to take a picture and give him a tip. But, why, I wonder? Does full medieval armor have any cultural significance? He seems very out of place as he stands alone in the heat. What led him down this occupational path? I wish I spoke Spanish — I would have asked.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/dd16c571086acda0ad6a.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The man in&nbsp;armor.</figcaption></figure><p>In the afternoon, we make our first trip to Comuna 13. Comuna 13 used to be a very violent place; a place controlled by Parmilitares, FARC, and ELN because of its strategic location suited to the transport of cocaine and weaponry. Recently, the government has made many strides to improve infrastructure and transform Medellin into a what is now a popular tourist destination. The transformation of Comuna 13 is something Medellin is proud of, and there are even tourist “graffiti tours” in another part of the neighborhood, where the government has installed escalators. Something about a bunch of rich tourists on some glitzy tour of how poor people live doesn’t quite sit right with me though.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/4d4e1dce5acef29abd37.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The inclined road that leads to Son Bata and the&nbsp;school.</figcaption></figure><p>The taxi cabs stops at the bottom of the hill at an intersection and a place with a few small grocery shops and restaurants. Jehan and Forrest are there with most of the radio equipment and cabling that will be brought up to the Son Bata recording studio, which we are using as a base camp and secure place to store the equipment. And then we hike, up the steep incline of the main street and up multiple staircases and inclines. Most of the people here are under the age of sixty, and we see signs of daily life as we walk — a hair dresser is braiding hair, children are playing, and music comes from one of the many houses piled on top of each other.</p><p>We hike to the top of the Comuna where the small school is located —<em> escuelita</em>, I hear one of the children call it. The view from here is breathtaking. The dense housing, strong community and the incredible line of sight make Comuna 13 an ideal place for an Althea wireless network.</p><p><strong><strong>Day 3: Sick</strong></strong></p><p>I am sick to my stomach all night and this day is wasted time for me.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/8ed327811585592e7b32.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Tomario’s house and a LiteBeam&nbsp;antenna.</figcaption></figure><p>The rest of the team, together with a local handy man, installs the roof mount and the RocketDish at Casa Morada. They head back to the Comuna and hold a community meeting. There are about fifteen attendees at the meeting. Many here are people wishing to be an intermediary node, which is a house that connects to other houses nearby and earns some money from forwarding bandwidth along. Here in the dense housing environment, these homes will be connected with an outdoor rated ethernet cable. The team also installs the first client node at Tomario’s house. Tomario quickly takes to learning how to crimp networking cables and installing the LiteBeam antennas. It’s interesting to envision how this group of local people building and supporting the network, a <a href="https://altheamesh.com/governance-paper?ref=blog.althea.net" rel="nofollow noopener">subnet DAO</a>, might coalesce here.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/8f9acbce158e2beaed08.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The RocketDish antenna at Casa&nbsp;Morada.</figcaption></figure><p><strong><strong>Day 4: A late start</strong></strong></p><p>Forrest and I got a late start but did manage to do some shopping for supplies, flash the EdgeRouter x for use at the school, and set up the the PrismStations (the sector antennas).</p><p><strong><strong>Day 5: The school</strong></strong></p><p>We went back to Comuna 13 again. We were hoping this time to get a definitive answer from school staff that we could locate the receiving end of the wireless backhaul and the sector antennas here. Up to this point, many phone calls and conversations have gone back and forth, attempting to determine just who had the final say in the matter. Many of the critical elements of this project come down to getting the “yes” from the appropriate person. The <em>“entonces” </em>moment — the “yes” from the right person, and <em>then </em>we can move forward.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/8b62e42b2daa89beb5da.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The view from the school to Casa Morada, where the gateway internet connection is&nbsp;located.</figcaption></figure><p>When we get to the school, we are granted an audience with the school administrator and Andrew patiently explains the goal of our project and the mechanics of how we would like to mount the antenna. Many small school children flock around us, asking questions and practicing their best “hellos” in English. While the school administrator likes the project, she needs to see more diagrams and a written description of the mounting plans. There is still time in the day to do more of the LiteBeam installs. The LiteBeam is a smaller CPE radio, or customer premises equipment, for use in this case at intermediary nodes to connect them with the main sector antennas at the school. We first hook up the sector antennas temporarily at Son Bata so we can bridge them and show the home owners how they can aim the LiteBeams. Most of the people living in Comuna 13 own their homes, and I’m told a home here sells for around $5000.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/645f85c774dc94d362f1.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Jehan installs ethernet cable at an intermediary node.</figcaption></figure><p>We do a quick setup at one of the more colorful homes, set up high on the hillside where we find the antenna almost impossible to not aim correctly with such perfect line of sight. Jehan and I have to leave earlier than the rest of the group for an interview at Espacio, a local media incubator, which means we have to attempt to catch a taxi. This proves to be a rather difficult and we walk for some distance before finding success. This gives me the opportunity to spot some horses tied up at a nearby school and a poster which lists the prices for internet. red_medellin plans to provide Althea internet to the Comuna for 600 COP a GB, far lower than the current ISP’s 27,000 COP for 1.3GB. The day ends with a trip to the Blockchain Center and Andrew gives a presentation in Spanish about Althea to local Ethereum enthusiasts. There is free pizza offered here, just like Ethereum meetups in the United States.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/2a4d738c7121ed3e8964.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Kelsey, Forrest, and Andrew present Althea at the Blockchain Center.</figcaption></figure><p><strong><strong>Day 6: The Last Day</strong></strong></p><p>It’s my last full day in Medellin and we have heard that Claro might be installing the backhaul internet at Casa Morada today. We head there, hoping that is the case and that we can finish installing the Althea router. The router chosen as the Althea gateway is, in fact, just an older Dell Optiplex that has been flashed with the Althea firmware. It’s perfect for this location because we have a bit more room and we can use the extra performance a desktop can provide. Unfortunately, Claro did not keep their appointment time, or call us to let us know they would not be coming. We did, however, have a great conversation with some local young people, one of whom was holding an injured bird in his hand. Andrew and Kelsey also took the opportunity to share with me the amazing public transit system and we took a tram ride over another part of Comuna 13. Medellin’s public transport system is a source of pride, as indeed it should be — it’s kept clean and orderly and dozens of people direct traffic and keep things moving forward.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/00dc40bca5018fb727c3.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Better than two in a bush supposedly.</figcaption></figure><p>I am excited to see the progress as red_medellin continues to move things forward with their Althea deployment. The yield of their efforts will be faster, less expensive internet for the community that will provide education and economic opportunity. The financial benefit of this system will also be kept in the community instead of benefiting large, monopolistic ISPs. <em>“Entonces una mejor internet para todos.” </em>Then, a better internet for all.</p><p>Thanks to <a href="https://medium.com/@jtremback?source=post_page">Jehan</a> (hide) and <a href="https://medium.com/@kilpatrickjustin?source=post_page">Justin Kilpatrick</a> (hide).</p>]]></content:encoded></item>
<item><title>March Update</title><link>https://blog.althea.net/marchupdate/</link><guid isPermaLink="true">https://blog.althea.net/marchupdate/</guid><pubDate>Wed, 20 Mar 2019 16:33:02 GMT</pubDate><description>We were so busy building and growing I think we missed an update in February! 
We
now have 23 users in Clatskanie [https://blog.althea.org/tales-from-the-field/],
and several relays (a relay is a node that has a connecting antenna and an
antenna that broadcasts to neighbors – relays make money by forwarding
bandwidth). 

People in Clatskanie are now paying for their internet by loading Ethereum on
to
their routers [http://www.althea.org/top-up] using the Coinbase mobile app with
a debit card and</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>We were so busy building and growing I think we missed an update in February! <a href="https://blog.althea.org/tales-from-the-field/?ref=blog.althea.net">We now have 23 users in Clatskanie</a>, and several relays (a relay is a node that has a connecting antenna and an antenna that broadcasts to neighbors – relays make money by forwarding bandwidth). </p><p>People in Clatskanie are now paying for their internet by loading E<a href="http://www.althea.org/top-up?ref=blog.althea.net">thereum on to their routers</a> using the Coinbase mobile app with a debit card and scanning the QR code on the router dashboard. They are happy to leave behind their legacy providers and make the switch to faster, cheaper Althea internet. </p><p>Linda, whose farm is a relay node and also uses Althea at her business in town remarked, “The internet we get through Althea is so fast - lightning fast,” she said. One night my husband asked everyone in the family to stream video at once to see if it would slow down and we were surprised to see that it was still going strong. “I’m just in awe of the speed!”</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/03/BDQRuPsw-1.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Althea team member, Sebastian Bolanos, recently traveled to Colombia to meet with Althea users. The wireless link between the fiber connection towards the center of town and the school on the high hill in the Comuna was established. Now the members of the community are enjoying fast Althea internet. Sebastian described how people were eager to try out YouTube with their new Althea connections, and were excited when they could play their videos without buffering. Colombians are paying for their internet with the xdai stable currency and our custom made wallet, efectivo (<a href="https://efectivo.cc/?ref=blog.althea.net">https://efectivo.cc/</a>).</p><p>We are currently putting the finishing touches on a big re-design of the router dashboard. In the coming software release, we also added failover for exits and a “low balance” text notification feature. </p><p>You can keep up on all the technical details of our releases here on the<a href="https://blog.althea.org/?ref=blog.althea.net"> Althea blog</a>. </p><p>A big component of the Althea system is supporting our local organizers. To do this we are rolling out an exciting new “Altheahood” pre-registration system. Similar to “fiberhoods”, this lets our organizers get their community excited about Althea and committed to participating before building out to a certain neighborhood. We are looking for prospective people to try out this new program. Get involved by contacting us at deborah@altheamesh.com. Now is a great time to reach out and start building an Althea network in your community.</p>]]></content:encoded></item>
<item><title>Althea is about building infrastructure</title><link>https://blog.althea.net/althea-is-about-building-infrastructure/</link><guid isPermaLink="true">https://blog.althea.net/althea-is-about-building-infrastructure/</guid><pubDate>Thu, 14 Mar 2019 11:48:00 GMT</pubDate><description>When we talk about Althea&apos;s design often the first question comes down to &apos;why
home internet&apos;. Why do we focus on home networks when what people really want is
cell data, just cheaper?

Mobile data is the major driver of world internet adoption. The majority of the
world&apos;s internet users have a mobile connection
[https://techcrunch.com/2016/11/01/mobile-internet-use-passes-desktop-for-the-first-time-study-finds/]
. So why isn&apos;t Althea focused on providing mobile internet? 

The short answer is t</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>When we talk about Althea's design often the first question comes down to 'why home internet'. Why do we focus on home networks when what people really want is cell data, just cheaper?</p><p>Mobile data is the major driver of world internet adoption. <a href="https://techcrunch.com/2016/11/01/mobile-internet-use-passes-desktop-for-the-first-time-study-finds/?ref=blog.althea.net">The majority of the world's internet users have a mobile connection</a>. So why isn't Althea focused on providing mobile internet? </p><p>The short answer is that home internet is useful even if you only build infrastructure to one location. A cell provider that only works in one place is a horrible cell provider, no matter how fast that location is. </p><p>Modern cell networks simply can't service the demands of the home internet market. Leaving a major industry with little to no competition and sky high prices. </p><h2 id="why-is-internet-infrastructure-so-expensive-anyway">Why is internet infrastructure so expensive anyway?</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/03/IMG_20190202_124522361.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>outdoor fiber cabinet for a new apartment building in Raleigh NC</figcaption></figure><p>Since only about 3% of American households have access to fiber people assume it's just hideously expensive to build. </p><p>But that's not the case, <a href="http://www.wispa.org/Portals/37/Docs/Press%20Releases/2017/TCG's_2017_BWA_FINAL_REPORT.pdf?ref=blog.althea.net">The average fiber deployment pays for itself in only 5 years</a>. Any hedge fund or pension fund would love to have that sort of return, if it where simply a matter of money we would be drowning in fiber. </p><p>The real cost of fiber and other in-the-ground telecommunications infrastructure is coordination- <a href="https://techcrunch.com/2019/02/07/google-fiber-pulls-out-of-louisville/?ref=blog.althea.net">access to thousands of different pieces of public and private property</a>. </p><p>As an ISP you have to coordinate with home owners, business owners, cities, towns and counties. The enormous amount of time spent organizing a new internet service provider means that you will be paying employees to organize your network for years before you start servicing your first customer. </p><p>Internet infrastructure is very profitable to build, but organizing the construction it is such a time and money sink that even the wealthiest companies in the world have to cut their losses. This strongly advantages incumbent ISPs, who can afford to pay hundreds of different people who's only job is to keep contacts with local governments, permitting agencies, and businesses. </p><p>Then a whole other level of people whose job it is to work with each individual homeowner to make the connection happen. </p><p>The cost of the actual fiber and the construction required to put it into the ground is very small compared to the standing army required to get all the paperwork in order. </p><h2 id="what-if-we-could-make-coordination-free">What if we could make coordination free?</h2><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/03/slide6-1150.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Althea reduces the coordination problem to only you and your neighbours. The larger organization of a network is handled automatically by the system and updated second by second. </p><p>Once a home has an Althea router it will always be on the lookout for a better connection and switch to it instantly. Before Althea, getting an entire neighbourhood onto your new fiber line might take months or years to organize.</p><p>The network owner would have to visit every home, and setup every homeowner on the new, better and cheaper, connection. With Althea that can happen within 30 seconds of the new line being plugged in. </p><p>By removing the need for a single organization to coordinate every part of the network and replacing it with an automated system what was previously nearly impossibly expensive to organize becomes free. </p><h2 id="building-automatically-efficient-infrastructure">Building automatically efficient infrastructure</h2><p>Next generation telecommunications networks are all about solving or reducing the coordination problem. </p><p>5g requires microtowers on every street corner and bets on reduced cost by reducing coordination with homeowners in exchange for increased city-level permitting.</p><p>Low earth orbit satellite internet, like StarLink and OneWeb, focuses on removing the need to coordinate with cities but still requires an antenna on the roof of every house. </p><p>Althea's premise is to tackle the coordination problem directly by changing the way networks are owned and built. Comcast's value is not the 30 pounds of copper wire and two servers it uses to service your home, but the coordination required to replace them. Althea provides an alternative to the monopoly owned network, a decentralized ISP owned by it's users. </p>]]></content:encoded></item>
<item><title>Althea Development Update #66: New dashboard, exit redundancy</title><link>https://blog.althea.net/althea-development-update-66-failover-exits/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-66-failover-exits/</guid><pubDate>Mon, 04 Mar 2019 21:49:26 GMT</pubDate><description>Althea now supports multihomed exits, meaning a single exit can be run across multiple datacenters and bridged into the mesh like any other alternate route. The other major change is the creation of a &apos;low balance&apos; mode.</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<h2 id="what-s-new-in-beta-3">What's New In Beta 3?</h2><ul><li>Dashboard overhaul!</li><li>Local low balance warnings</li><li>Automated failover at the exit level</li><li>Phone registration for exits</li><li>During periods of very low balance (below 10c) routers will throttle locally, preventing disruption to downstream clients and the tricky situation of entering and leaving the free tier every time the balance hits zero</li><li>Temporary fix for peer discovery on particularly slow machines</li></ul><p>This release mostly focused on improving exit resiliency. Althea now supports multihomed exits, meaning a single exit can be run across multiple datacenters and bridged into the mesh like any other alternate route. </p><p>The other major change is the creation of a 'low balance' mode. It's mostly a solution to the problem of a relay node running their balance to zero.</p><p>Because traffic is encrypted it's actually not possible for the upstream node to identify the non-paying relays traffic and only apply the free tier to that. Instead they must put everyone south of that relay onto the free tier. </p><p>Obviously this isn't good, so by having nodes voluntarily throttle when they reach 10c balance we can at least keep this from happening by accident. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/03/signal-2019-03-02-134033-2.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Another user install, this one would not have been possible without an Althea relay upstream providing a bouncing point for the signal.&nbsp;</figcaption></figure><h2 id="what-s-coming-next">What's coming next</h2><p>Multi-homed exits where sort of an existential issue, as our networks grow downtime becomes even more critical to avoid, so they took priority over debugging some of the remaining underpayment issues. </p><p>Beta 4, if I have my way, will entirely focus on fixing two bugs.</p><ol><li>Underpayment </li></ol><p>As a pure percentage the number of users underpaying is now about 20%, down from around 50% before the last release. It's also dramatically less severe, with the average underpaying node only underpaying by 15%. </p><p>The remaining problems will require a more subtle and research-focused touch to really get this down to zero.</p><p>2. Lack of recovery </p><p>When the gateway or the exit goes down or is restarted for whatever reason there is about a 5% chance that a node will not reconnect properly. </p><p>I've been chasing this one for a long time, it's difficult to gather data on a bug when the bug is defined by a node not being online to tell you anything. </p><p>I think I've finally picked up the trail after debugging a strange issue brought on by remove the startup wait for Rita. I'm speculating that PeerListener hits some error code when sending it's multicast packet, doesn't handle it and drops the interface from it's watch list. </p><p>These are the sorts of issues you need a decent number of real users to encounter at all, so I'm glad we've gotten far enough to tackle fixing them. </p>]]></content:encoded></item>
<item><title>Tales from the Field</title><link>https://blog.althea.net/tales-from-the-field/</link><guid isPermaLink="true">https://blog.althea.net/tales-from-the-field/</guid><pubDate>Wed, 27 Feb 2019 18:44:35 GMT</pubDate><description>It was raining. It always seems to rain just as we pack up the rig with all of
the antennas, cables, and tools. My fellow subnet organizer, Shaun, and I were
heading to install a new Althea user. A few previous installs under our belt, we
are getting better at packing the necessary tools and the process of installing
seems to take less time. It&apos;s still takes about an hour and a half to install or
sometimes several hours if there are complications. 

As we pull up to the house, Shaun eyes a dense</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p>It was raining. It always seems to rain just as we pack up the rig with all of the antennas, cables, and tools. My fellow subnet organizer, Shaun, and I were heading to install a new Althea user. A few previous installs under our belt, we are getting better at packing the necessary tools and the process of installing seems to take less time. It's still takes about an hour and a half to install or sometimes several hours if there are complications. </p><p>As we pull up to the house, Shaun eyes a dense clump of trees between the house and our gateway antennas dubiously. “I bet we can't get good signal”, he says and attempts to avoid my disapproving glare by gulping his coffee. Not easily dissuaded, I have come prepared with maps and a link budget that shows we can set up a link here. &nbsp;We usually start our planning by using google maps and Ubiquiti's link budget tool, and I have done my homework. We look at Ubiquiti's app on my phone and the line indicating aiming is fortunately located just to the left of the trees. </p><p>The homeowner spots us getting our “staff of aiming” out of the car and comes to greet us. The staff (+10 to knowledge) is a Ubiquiti litebeam attached to a sturdy pvc pipe, which we use to walk around a homeowner's property to find the best signal. &nbsp;She's heard about our new type of internet service and likes the idea of being a part of a cooperative, supporting a local group of organizers, and getting great internet service. She's a real estate agent in the area, and knows how many homeowners are underserved in our area - left behind by corporate ISPs that took millions in federal tax dollars and then sold out to big national companies. We also talk about the importance of fast internet, and I tell her about the neighbor a block away that was so excited about his great speeds that he came running out of his house, laptop open in his hands, to show me the amazing improvement our new internet was.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/02/IMG_20190226_195751.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Staff of aiming</figcaption></figure><p>I waved to my nephew across the street washing his car. We will install at his house the following week. He and his roommate are excited to be a relay to the other apartments in the complex. As subnet organizers, we'll help them keep things going well, his neighbors can call us if they have any problems, and he can make a few dollars by forwarding bandwidth along. Our Althea Subnet organization is set-up as a legal cooperative and we collect revenue from a set monthly fee, which creates a sustainable source of revenue as we support the diverse set of homeowners and business who have relay antennas broadcasting throughout the community.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/02/20190220_151900.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The antenna install "across the street".</figcaption></figure><p> Despite our best efforts not to forget anything this time, we have forgotten our socket set, so we welcome the help that her and her boyfriend offer. In fact, it's very common for us to arrive and receive a helping hand with mounting or even crawling under the house to connect the cable. I think people like helping - this isn't like getting a cable hookup and &nbsp;waiting forever between the “hours of 12-4” knowing the installer will not arrive until the next day. It's a way to be a part of something, to build something meaningful and sustainable. One of the local business owners who also has an Althea relay, said “I like being a part of something bigger”. We were able to hookup a couple who hasn't had internet since the dial up days from her relay, which is definitely “something big”.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/02/20190207_162632.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>This farm hadn't seen broadband until Althea.&nbsp;</figcaption></figure><p>After mounting the antenna, Shaun and I joke about “talking to the aliens”, as what looks right for aiming the vertical axis seems a little different according to each of our perspectives. Thankfully, we can look at the radio dashboard on the laptop and slowly pan along the horizontal and vertical axis. A few db of signal strength can make a large impact on throughput, so we always take our time to find the best signal.</p><p>A quick check of the radio dashboard indicates that there are several relays nearby, and we choose the one with the best signal strength. In the future, we can set up another antenna and her Althea router will automatically route through the best and least expensive route. She can also become a a relay for her neighbors by using another antennas as an access point for other houses nearby. For now, we are just installing one antenna and Althea router. </p><p>With the radio mounted and aimed we carefully routed the ethernet cable along the siding and in to the home. I always like to make sure we are clipping the ends off of the zip ties, and that service and drain loops are tidy. While Shaun terminates the end of the ethernet cable, I tell her about how she can load her router up with tokens as she needs. I help her install the Coinbase app on her phone and show her how to scan the QR code in her router dashboard to send ethereum to her router. It doesn't take long, about 10 minutes, and she has the hang of it. All she has to do is load up the router with tokens and her router will do the job of sending micro transaction payments to any of the other relays along her route, and to the subnet organizers, for their monthly fee. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/02/20190122_180941--1-.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>One of the participants of the Clatskanie network loading up his router with ethereum.&nbsp;</figcaption></figure><p>As we finish up and begin packing up our tools, I spot another one of her neighbor's antennas and smile. It's a manifestation of Althea's decentralized system. A variety of different entities have ownership and are participating in seamlessly peering and reselling bandwidth across the network. If the dream of decentralized network ownership can happen in rural Oregon, maybe it can happen anywhere. </p>]]></content:encoded></item>
<item><title>Althea Development Update #65: The Quantum Leap</title><link>https://blog.althea.net/althea-development-update-64-beta-2/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-64-beta-2/</guid><pubDate>Thu, 14 Feb 2019 14:48:01 GMT</pubDate><description>we released payments and then immediately set about doubling the size of our test network. In doing so we had raised the bar for the quality of our features and interfaces. </description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Beta 2 is finally out and running in the wild. It's two weeks behind schedule and contains zero new features.</p><p>In retrospect why is pretty obvious, we released payments and then immediately set about doubling the size of our test network. In doing so we had raised the bar for the quality of our features and interfaces. </p><p>Many of the quirks that were previously acceptable were now major annoyances. So Beta 2 became a four week long marathon of much needed user experience polish.</p><h3 id="what-s-new-in-beta-2">What's new in Beta 2</h3><hr><ul><li>xdai support that actually works well</li><li>Fixes for various UI inconsistencies</li><li>Improvements to peer discovery</li><li>Fixes to port toggling</li><li>Much faster startup</li><li>Better detection of crashes and automated recovery</li><li>Improved firewall setup</li><li>Fixes for stuck nonce preventing payments</li><li>Performance optimizations for accounting code</li></ul><h2 id="payments-roll-out">Payments roll-out</h2><p>We are now at 100% of the network running Beta 2 and loaded with Ethereum to pay for their access. </p><p>The anti-overpay protections seem to be working flawlessly as all of the billing issues we've encountered have involved nodes underpaying. The current breakdown is about half of the network paying without any issue and the other half underpaying in some way.</p><p>Of those underpaying, a minority were underpaying dramatically due to a bug that caused their nonce values to desync from the blockchain, preventing new payments from being sent. This is fixed in Beta 2.</p><p>The rest are underpaying by a value between 5-10% which we've attributed to packet loss from radio links. This is only really a problem for exit -&gt; client traffic since that's the only pay to receive scenario. In the general case packet loss will only result in overpayment since it's pay per forward. &nbsp;</p><p>The exit-client relationship is already fairly trustful so we can just couple what the user pays to what the exit sends and not necessarily what the user receives. With the usual safeguards against wallet draining attacks.</p><h2 id="intermediary-relay">Intermediary &lt; Relay</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/02/combined-relay-pic.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Two of our new relays, with incoming and outgoing antennas. On the right the outgoing antenna is a simple point to point, on the left it's a sector antenna that could potentially serve many other users&nbsp;</figcaption></figure><p>We now have 3 relays, meaning users who are also hooking up other users. </p><p>We used to use 'intermediary' as the term for this but in the process of actually getting people started we've found that relay is more quickly understood by most people so we're switching terminology. </p><p>We also had our first completely organic install in the Clatskanie network, a relay connected and setup their user without any intervention on our part. </p><p>The friction points for that case make up about half of our beta 2 fixes. While the relay had no issues with the actual physical setup several parts of our software where mislabled or confusing. </p><h2 id="upcoming-features">Upcoming features</h2><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/02/Screenshot-from-2019-02-14-09-38-18.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>With payments out and pretty rapid expansion on the table we're mostly focusing on user facing improvements for the time being. Like this new router dashboard. </p><p>The network DAO features continue to lag behind where I would like, but with payments online I expect to have it out the door within the next two release at least. Depending on how well dialling in bandwidth payments goes. </p>]]></content:encoded></item>
<item><title>Blockchain and Broadband</title><link>https://blog.althea.net/blockchain-and-broadband/</link><guid isPermaLink="true">https://blog.althea.net/blockchain-and-broadband/</guid><pubDate>Tue, 12 Feb 2019 03:43:26 GMT</pubDate><description>It’s difficult for big telecom to make money selling bandwidth to small rural
towns or low income urban areas, otherwise they would already be there. Internet
poverty exists because there is little economic incentive for those who build
the internet infrastructure to provide service to these areas. This is further
complicated by the centralized nature of legacy ISPs, which are slow-moving and
utilize rigid and expensive pathways to build out infrastructure.

Currently, government granting progra</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/02/20181212_173448.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>It’s difficult for big telecom to make money selling bandwidth to small rural towns or low income urban areas, otherwise they would already be there. Internet poverty exists because there is little economic incentive for those who build the internet infrastructure to provide service to these areas. This is further complicated by the centralized nature of legacy ISPs, which are slow-moving and utilize rigid and expensive pathways to build out infrastructure.</p><p>Currently, government granting programs funnel billions of taxpayer dollars to big telecom in a short sighted approach to bridge this digital divide. While this has led to some infrastructure improvements, the recurring revenue per user in these areas is small enough that many of the big telecom providers build very minimally and are unwilling to invest in ongoing upgrades. There are still <a href="https://www.fcc.gov/reports-research/reports/broadband-progress-reports/2018-broadband-deployment-report?ref=blog.althea.net">24 million Americans without access to broadband internet.</a></p><p>Several blockchain Internet projects like RightMesh, Ammbrr, and my own project, Althea, are sustainably solving this problem by incentivizing people to build their own wireless internet infrastructure for their communities. By combining the user and the operator as one entity, the incentives are aligned – the interests are the same. Community members can be encouraged to setup and maintain their own networks if incentives are available for participation in a decentralized ISP.</p><p>Hardware investment and use of existing rooftop space is an important part of any wireless network. These new models look to the example of Uber or AirBnB to imagine how people could use their homes and businesses to make money by leveraging resources they already have.</p><p>Decentralized systems, which are agile, resilient, and quick moving, are more fit to provide service in many areas. It is the inherent administrative inefficiency of big telecom companies which causes excessive spending and slow implementation. Business people in offices miles away will not have an understanding of the community or how to most efficiently build a network there. Residents of a local community have a deep knowledge of the landscape and connections to property owners that big telecom will never be able to match.</p><p>In a decentralized ISP, each home or business can connect to each other, earning money with their property while competing in a decentralized bandwidth marketplace to best serve their neighbors. Community members and small business owners are motivated to create new links to nearby neighbors because they earn money for their participation and hardware. These protocols also incentivize redundant links, adding resilience, and driving prices downwards.</p><p>Healthy, thriving networks are being made possible in places that centralized telecom has failed.</p><p>*<a href="https://blocktribune.com/blockchain-and-broadband-solving-the-problem-centralized-telecom-failed/?ref=blog.althea.net">Originally published in BlockTribune December 2018 </a></p>]]></content:encoded></item>
<item><title>Althea Development Update #64: Beta 1 rollout, UI improvements, New blog platform</title><link>https://blog.althea.net/althea-development-update-64-beta-1/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-64-beta-1/</guid><pubDate>Tue, 29 Jan 2019 19:49:08 GMT</pubDate><description>&gt; Rolled out @AltheaOrg [https://twitter.com/AltheaOrg?ref_src=twsrc%5Etfw] Beta 1
today in production. Members of the Clatskanie Co-op are loading up their
routers with ethereum, which automatically pays my router for bandwidth.
Exciting stuff! pic.twitter.com/uCUftWoDDG [https://t.co/uCUftWoDDG]

— Deborah Simpier (@DeborahSimpier) January 23, 2019
[https://twitter.com/DeborahSimpier/status/1087895771502891008?ref_src=twsrc%5Etfw]
The last couple of weeks have been busy, we&apos;re at about 50% Bet</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Rolled out <a href="https://twitter.com/AltheaOrg?ref_src=twsrc%5Etfw&amp;ref=blog.althea.net">@AltheaOrg</a> Beta 1 today in production. Members of the Clatskanie Co-op are loading up their routers with ethereum, which automatically pays my router for bandwidth. Exciting stuff! <a href="https://t.co/uCUftWoDDG?ref=blog.althea.net">pic.twitter.com/uCUftWoDDG</a></p>— Deborah Simpier (@DeborahSimpier) <a href="https://twitter.com/DeborahSimpier/status/1087895771502891008?ref_src=twsrc%5Etfw&amp;ref=blog.althea.net">January 23, 2019</a></blockquote>

</figure><p>The last couple of weeks have been busy, we're at about 50% Beta 1 rollout in our test network. </p><p>Converting users has been somewhat time consuming since most need the 10 minute crypto primer. We could have probably tried to automate that but we decided that a high touch process would let us find user annoyances and problems faster. </p><p>we have our first example of an intermediary, earning ethereum ($ETH) by forwarding bandwidth to a neighbour in his apartment. In this case, it cost less than $100 to set up his neighbour with high speed internet and both he, the gateway, and the subnet organizers will make recurring revenue. &nbsp;Several larger intermediary nodes serving between 10 and 50 households will be rolling out in the coming months. </p><h3 id="bug-fixes-for-beta-2">Bug Fixes for Beta 2</h3><p>While Beta 1 had Xdai as a selectable payment currency it wasn't actually functional. Do to some quirks of how the POA public RPC is setup and our own Rust libraries we can't easily query it. </p><p>Beta 2 will include a set of fixes that use our own xdai RPC cluster as well as some user convenience features that prevent two routers form accidentally trying to pay each other in different currencies. </p><p>Our South American test network has been insistent on a stablecoin as a medium of exchange so it's been a priority to get xDai working. </p><p>Fingers crossed on a rollout next week down there. </p><p>Other improvements include drastically reduced overhead for those devices with remote logging enabled. Devices in our test networks are actively monitored for bugs, in Beta 2 we're introducing log compression, which reduces the upload overhead from this by a factor of nearly 200. </p><h3 id="ui-improvements">UI improvements</h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/images/2019/01/2019-01-28-131948_1366x768_scrot-1.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Updated Network DAO interface</figcaption></figure><p>Now that real-money operations have started we've been provided some great opportunities to do user studies on our various interfaces. </p><p>One of the larger goals with Althea is to make building a network seem as approachable as a home improvement project, rather than an arcane combination of incomprehensible systems. </p><p>With that in mind exactly how we present concepts to users is one of the most important things for us to really nail down with our test deployments before trying to address a wider audience. </p><h3 id="new-blog-platform">New blog platform</h3><p>If you haven't already noticed we finally got around to deploying our self hosted blog rather than using Medium. We originally went with Medium hoping for some organic views and to get away form our markdown powered static site. </p><p>But ultimately Ghost proved to be the better option to allow non-technical users to write posts without sacrificing control in exchange for a relatively small number of Medium referred views. </p><h3 id="ipv6-range">Ipv6 Range</h3><p>As of today we have acquired 2605:1C40::/32 for assignment to Althea routers. </p><p>We plan to peer this network using BGP and seamlessly allow all nodes within an Althea network to be fully integrated into the global internet and accessible as a first class citizen of the Ipv6 internet. </p><h3 id="facing-forward">Facing Forward</h3><p>While payment channels have made good technical progress their roll out is on hold</p><p>Transaction fees on the Ethereum network have been even lower than expected, resulting in payments every 8c to 12c when paying 5% in fees. </p><p>At that level we really can't justify focusing on channels when any user experience or other bugs remain. </p><p>Our plans for the immediate future are focused on going to market and really nailing down a playbook for quickly starting and expanding networks. </p>]]></content:encoded></item>
<item><title>Outage report: 14-Jan–2019</title><link>https://blog.althea.net/outage-report-14-jan-2019/</link><guid isPermaLink="true">https://blog.althea.net/outage-report-14-jan-2019/</guid><pubDate>Tue, 15 Jan 2019 18:36:00 GMT</pubDate><description>Starting at 8pm Pacific time yesterday through 3am Pacific time today Althea’s
exit servers were down.

This is our first major (longer than a 15 minute) outage since June of 2018. The
technical issue exposed is pretty minor, the real feedback here is about a
series of failures in our incident recovery procedure.

Primary Causes:

 * Incorrect configuration of per process file descriptor limits on the exits
 * Recovery failure of some client devices

Failures in incident response procedure:

 * </description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Starting at 8pm Pacific time yesterday through 3am Pacific time today Althea’s exit servers were down.</p><p>This is our first major (longer than a 15 minute) outage since June of 2018. The technical issue exposed is pretty minor, the real feedback here is about a series of failures in our incident recovery procedure.</p><p><strong><strong>Primary Causes:</strong></strong></p><ul><li>Incorrect configuration of per process file descriptor limits on the exits</li><li>Recovery failure of some client devices</li></ul><p><strong><strong>Failures in incident response procedure:</strong></strong></p><ul><li>Lack of validation of on call procedure</li><li>Lack of secondary emergency recovery contacts</li><li>Incorrect configuration of the service autorecovery on the exits</li></ul><p>If any one of these issues had been resolved beforehand this would have been limited to a minor outage.</p><h3 id="primary-causes">Primary Causes</h3><h4 id="incorrect-configuration-of-per-process-file-descriptor-limits-on-the-exits">Incorrect configuration of per process file descriptor limits on the exits</h4><p>Getting into the actual technical issue at the root of this. Exit servers forward connections from clients in the Althea network.</p><p>Each of these connections takes up what’s called a ‘file descriptor’. While the system wide number of file descriptors had been properly tuned to prevent issues the per-process limit of file descriptors was limited to the default 4096.</p><p>Following a momentary networking issue, either within the Clatskine test network or on the larger internet there was a rush of traffic and requests to the Rita exit process on the exit.</p><p>Since Rita exit must claim a file descriptor for each connection it has it exceeded 4096 during this period and crashed.</p><!--kg-card-begin: html--><pre>Jan 14 22:55:39 localhost.localdomain rita_exit[26857]: [2019–01–15T03:55:39Z INFO rita_exit::rita_common::network_endpoints] Got Payment from Some(“[fddf:bb15:dd3e:ebf4:2524:550:bb38:50c2]:56648”) for 6360000000 with txid None
Jan 14 22:55:39 localhost.localdomain rita_exit[26857]: thread ‘main’ panicked at ‘called `Result::unwrap()` on an `Err` value: Os { code: 24, kind: Other, message: “No file descriptors available” }’, src/libcore/result.rs:1009:5
Jan 14 22:55:39 localhost.localdomain rita_exit[26857]: note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
Jan 14 22:55:39 localhost.localdomain rita_exit[26857]: Panic in Arbiter thread, shutting down system.
Jan 14 22:55:40 localhost.localdomain systemd[1]: rita-exit.service: main process exited, code=exited, status=101/n/a</pre><!--kg-card-end: html--><p>As a major network service with potentially hundreds of clients Rita exit should have both been configured to deal with this many connections and have code to prevent too many connections from occurring at the same time in the first place.</p><p>That being said if the incident response team was on point this would have been a 5 second fix to avoid downtime.</p><!--kg-card-begin: html--><pre>service rita-exit restart</pre><!--kg-card-end: html--><h4 id="recovery-failure-of-some-client-devices">Recovery failure of some client devices</h4><p>The Clatskine gateway was also taken down by this incident and failed to automatically recover itself.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/01/code.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>This can be attributed to the watchdog script checking only the liveness of Rita and not if Babel actually has any routes.</p><p>It will be revised to more carefully check that Babel is functioning correctly and not simply limping along in a zombie state.</p><p>This was the most non-trivial failure for this incident, as it had to be recovered on site.</p><p>Remote access will be setup for the maintainer of the gateway to make this process easier in addition to better automated recovery.</p><h3 id="failures-in-incident-response">Failures in incident response</h3><p>Moving onto issues with the recovery response. Recovery for this incident should have ideally taken less than 15 minutes and as few as 5 minutes. Instead it took over 6 hours.</p><h4 id="lack-of-validation-of-on-call-procedure">Lack of validation of on call procedure</h4><p>Late last year the Android phone of the primary on call contact received an update to Android Oreo.</p><p>During this update <a href="https://www.androidcentral.com/how-adjust-do-not-disturb-settings-android-o?ref=blog.althea.net" rel="noopener nofollow">the Do-No-Disturb</a> feature had it’s behavior changed and configuration reset.</p><p>Instead of defaulting to a higher ringer volume for priority calls the call was allowed through but using the system ringer volume, resulting in a vibrating phone that did not wake the on call contact.</p><h4 id="lack-of-secondary-emergency-recovery-contacts">Lack of secondary emergency recovery contacts</h4><p>Emergency recovery documentation was in place and accessible. But the technical personnel responding to the issue did not have ssh access to the primary exit server.</p><p>A ssh key was requested at install time, but not followed up on. Resulting in only two people having access to the production system at the time of the incident.</p><p>Of these two only one was on call and as previously described the on call procedure failed.</p><h4 id="incorrect-configuration-of-the-service-autorecovery-on-the-exits">Incorrect configuration of the service autorecovery on the exits</h4><p>Due to the transient nature of this issue simply restarting the Rita exit service on the exit would have sufficed for restoring the system to functionality.</p><p>Anyone with access to the system could have done this trivially. The service itself could have also been configured to attempt a reboot upon failure.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/01/cod2.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>By adding these two lines to the service template the exit would have been automatically recovered.</p><hr><p>All services are now back online, we hope to have all issues in this post mitigated by the end of this week.</p>]]></content:encoded></item>
<item><title>Althea Development Update #63: Beta 1</title><link>https://blog.althea.net/althea-development-update-63-beta-1/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update-63-beta-1/</guid><pubDate>Fri, 11 Jan 2019 18:32:00 GMT</pubDate><description>Right now Beta 1 rc2 is churning it’s way through the build system

Once this release passes QA in a couple of days we will have out first Althea
build with feature complete routing and bandwidth payment.

Beta 1 will be able to, dynamically route, buy , and sell bandwidth with
production Ethereum. Everything described in our original demo video,
[https://www.youtube.com/watch?v=IyFEYEcHJyA&amp;t=2s]  but ready for use as the
primary ISP for the households and businesses of our test networks.

There</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Right now Beta 1 rc2 is churning it’s way through the build system</p><p>Once this release passes QA in a couple of days we will have out first Althea build with feature complete routing and bandwidth payment.</p><p>Beta 1 will be able to, dynamically route, buy , and sell bandwidth with production Ethereum. Everything described in our <a href="https://www.youtube.com/watch?v=IyFEYEcHJyA&amp;t=2s&amp;ref=blog.althea.net" rel="nofollow noopener">original demo video,</a> but ready for use as the primary ISP for the households and businesses of our test networks.</p><p>There are lots of features left to add, including proper integration for our Network DAO organizations and of course as the first Beta release there’s a non-zero chance of money eating bugs.</p><h4 id="why-real-ethereum">Why real Ethereum?</h4><p>Our last release Alpha 12 was our first and now our only testnet release.</p><p>The reason we’ve chosen to push forward with using real money so quickly is a combination of very good testing results from Alpha 12 and the high cost of downtime.</p><p>People really, really, don’t like it when their internet goes down, the cost in terms of customer dissatisfaction that comes with any service disruption is much higher than a month’s worth of internet service money.</p><p>Because of that there’s not much point in cutting over our production networks to builds that both enforce payments and still use a testnet. Once the possibility of reduction or disruption of service is there due to a major network change it’s cheaper to just compensate for lost Ethereum in our test networks than it is to risk downtime doing this all again after testing Beta 1 with testnet Eth.</p><p><strong><strong>What’s New in Beta 1</strong></strong></p><ul><li>Real eth payments</li><li>New traffic flow optimizations to improve performance</li><li>Free tier &amp; payment enforcement</li><li>Configurable maximum price</li><li>Billing code optimization</li><li>Dynamic payment adjustment, as transaction fees change the payment frequency is adjusted to keep fees at 5% of total costs</li><li>A configurable pricing oracle to compensate for swings in Eth price</li></ul><p><strong><strong>What’s not yet in Beta 1</strong></strong></p><ul><li>Updated subnet dao integration</li><li>Querying various network wide values from the subnet dao</li><li>Advanced fraud detection (subtle route degradation)</li><li>Payment channels</li></ul><h4 id="production-network-dao">Production Network DAO</h4><p>In news that would usually be important enough for it’s own update we have our Aragon Althea network app deployed to <a href="https://mainnet.aragon.org/?ref=blog.althea.net#/clatskanie.aragonid.eth" rel="nofollow noopener">mainnet</a> where it is being used as a in-production list of nodes.</p><p>Votes of the network organizers are working as well, the missing major feature is the ability to collect network fees natively. Right now they just have to be sent to the DAO manually.</p><h4 id="what-s-next">What’s Next?</h4><p>In 2019 we are setting out to demonstrate not only that normal people can build an ISP but also that decentralized cooperative networks are the superior way to do so.</p><p>Once we’ve operated Beta 1 in our test networks for a week or so I plan to cut Beta 2 with whatever bugfixes we find necessary and start recommending it for general usage by those following our project.</p>]]></content:encoded></item>
<item><title>Althea Development Update #62: Free tier design and the life of a packet</title><link>https://blog.althea.net/althea-development-update--62--free-tier-design-and-the-life-of-a-packet/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--62--free-tier-design-and-the-life-of-a-packet/</guid><pubDate>Sat, 22 Dec 2018 00:00:00 GMT</pubDate><description>
Since our last update bandwidth payments have been making their way down the stabilization pipeline we’re going to roll out Alpha 12 to…
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Since our last update bandwidth payments have been making their way down the stabilization pipeline we’re going to roll out Alpha 12 to our networks shortly after Christmas. At which point all routers will be paying for their internet access in Rinkeby Eth that we will airdrop into existing networks.</p><p>The Network DAO Aragon organization has also made significant progress it’s available on Rinkeby <a href="https://rinkeby.aragon.org/?ref=blog.althea.net#/test2.aragonid.eth/" rel="noopener">here</a>. Feel free to play around with it.</p><p>Our next release is going to be the big one. Beta 1, which is by definition feature complete and ready to be used (cautiously) with real money in the real world.</p><h4 id="implementing-the-free-tier">Implementing the free tier</h4><p>The last major feature we need to implement to reach Beta 1 is enforcement. What you actually do if people don’t pay.</p><p>Althea doesn’t ever actually cut anyone off, a free tier with limited bandwidth is provided gratis to help users get setup and generally use the internet. All the routers in the network agree not to bill each other for the free tier level of traffic.</p><p>The exact speed of the free tier is decided by the local network organization.</p><p>Having the free tier be enforced with a speed limit at all is a little anachronistic for Althea. Like I explained in our <a href="https://medium.com/althea-mesh/metered-bandwidth-on-althea?ref=blog.althea.net">billing blog post</a> connection speeds are hardly reflective of internet usage experience.</p><p>But it’s much easier to implement a speed limit than it is to make layers of prioritization based on bidding.</p><h4 id="the-life-of-a-packet-in-an-althea-network">The life of a packet in an Althea network</h4><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://blog.althea.net/content/external/948b886612db784dbca1.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Network flow for releases ≤ Alpha&nbsp;12</figcaption></figure><p>I’ll expand on each part of this diagram in later blog posts. But to focus in on what we’re changing in Beta 1 lets talk traffic queuing.</p><p>In the Alpha 12 diagram the only queue operation we have is fq_codel, which is a traffic prioritization algorithm designed to try and reduce latency and make everyone’s connection ‘feel fast’.</p><p>If you have any interest in the plumbing of the internet I recommend this talk from around the time Codel was first being designed. It’s an excelent source of background, intuition, and tooling.</p><p><a href="https://www.youtube.com/watch?v=qbIozKVz73g&amp;t=13s&amp;ref=blog.althea.net" rel="noopener">Bufferbloat: Dark Buffers in the Internet</a></p><p>As powerful as Codel-derived tools have become since that talk a careful reading of the <a href="https://www.bufferbloat.net/projects/codel/wiki/CakeTechnical/?ref=blog.althea.net" rel="noopener">documentation</a> will make it obvious that a few suboptimal decisions where made in this first network design.</p><p>The codel operator on the router side doesn’t actually serve any useful purpose as it’s can’t identify connections because of the encryption.</p><p>Likewise the codel queue operation on the exit side isn’t ideally placed. While this one can at least see the traffic it’s supposed to be managing that management is performed over every connection coming in and out of the exit.</p><p>This can lead to globally optimal decisions but is less sensitive to a single routers problems.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://blog.althea.net/content/external/12693b16f027073d692d.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Network flow for releases ≥ Beta&nbsp;1</figcaption></figure><p>Our new design for Beta 1 moves the codel operators so that they have a better view of traffic to manage and are generally closer to the ‘edge’ of the network.</p><p>With one placed in front of the router LAN and the other placed after mesh routing in order to prevent a single router from hogging traffic across the network.</p><p>I’ll be keeping a close eye on the new codel layout and hopefully find ineffective operations a little faster this time.</p><p>The other addition to our queue system is HTB (Hierarchical token bucket, no relation to crypto tokens), which is a pretty old fashioned bandwidth allocator. Using HTB we can reduce peers to the free tier level of bandwidth.</p><p>Sadly HTB isn’t really flexible enough to operate across interfaces. Meaning we can’t pool multiple interfaces worth of free tier bandwidth in such a way that also makes sense from a billing perspective.</p><p>Like I said before the use of a speed in the free tier system at all is not ideal, but it will do until we can implement a more elegant way of accounting for ‘unsold’ traffic.</p>]]></content:encoded></item>
<item><title>Metered Bandwidth on Althea</title><link>https://blog.althea.net/metered-bandwidth-on-althea/</link><guid isPermaLink="true">https://blog.althea.net/metered-bandwidth-on-althea/</guid><pubDate>Thu, 06 Dec 2018 00:00:00 GMT</pubDate><description>
In this post I’m going to explain Althea’s billing system and how it provides more transparency, choice, and control than the traditional…
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>In this post I’m going to explain Althea’s billing system and how it provides more transparency, choice, and control than the traditional methods of selling home or mobile Internet access.</p><h3 id="traditional-isp-billing">Traditional ISP billing</h3><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/66c41a0c353202d3778c.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>This is a pretty typical advertisement from an ISP. Just looking at it it’s hard to tell what you’re buying. What does ‘up to’ mean in the fine print?</p><p>ISPs universally use a tactic called ‘oversubscription’ where any given amount of speed is sold to many people at once.</p><p>For the most part this allows them to inflate their speed numbers harmlessly. Most people aren’t using their internet 24/7 and will never notice they are sharing the speed they buy.</p><p>The devil is of course in the details.</p><p>Let’s say for example that you’re a traditional ISP, you hook up a neighborhood with 100 homes using a single 1gbps connection, that’s 10mbps per person. Twenty is considered a pretty safe oversubscription ratio, so you sell each home a 200mbps connection.</p><p>Obviously not everyone can have 200mbps at once; but a HD Netflix stream is only about 6Mbps. So a family of four each streaming their own show will barely dent the capacity. Even one or two gamers downloading during peak hours won’t be enough to noticeably cause any problems.</p><p>For the most part these users will ‘get what they pay for’ in the sense that a speedtest will read 200Mbps, but what they pay for is very different from what they use.</p><p>Oversubscription breaks down when it becomes likely that a normal household will actually use the entire connection they are being sold when any regularity. For example a 20Mbps DSL connection will easily be maxed out by that same family of four we were talking about earlier.</p><p>The statistics collected by the FCC in 2016 bear this out.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/0b31c181495d5c02b991.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Chart 15.3 from the <a href="https://www.fcc.gov/reports-research/reports/measuring-broadband-america/measuring-fixed-broadband-report-2016?ref=blog.althea.net" rel="noopener">FCC 2016 broadband report</a></p><p>American cable and fiber internet users get somewhere between ~80% of their advertised download speeds during peak hours. The number for DSL is much lower, with a mere 50% of the users getting the advertised speed during peak hours (Weekdays 6:30pm — 11pm).</p><p>Oversubscription isn’t inherently evil. But it decouples what ISPs sell from what people use and even what the ISP is actually capable of delivering.</p><p>This sort of intentional obfuscation of what you are buying and what is being sold is typical of monopolies. The more clearly defined the price and service, the more easily customers can replace one provider with another.</p><h4 id="althea-s-billing-model">Althea’s billing model</h4><p>Althea works like your electricity or water bills, you pay for what you actually use.</p><p>With Althea your home WiFi router acts as a personal shopper to buy internet bandwidth over the cheapest and best path every second, seamlessly. Even if you have only one connection yourself, the router will still get faster service and cheaper prices as the network reorganizes further upstream.</p><p>If you participate in passing traffic for other people you’ll find some of the money they paid as extra money added to your account.</p><p>It’s important to focus on the ‘personal shopper’ concept. You put money into your account to be spent over the course of the month.</p><p>Like a prepaid phone plan, it’s impossible to end up paying more than you have deposited into the account. Unlike a prepaid phone plan the money doesn’t leave your home until it’s used, it lives in your Althea router.</p><p>With a traditional ISP you must trust the privacy of your web browsing to the provider of the connection to your home. In most countries major ISPs sell your browsing data to <a href="https://arstechnica.com/information-technology/2018/06/att-buying-company-that-delivers-targeted-ads-based-on-your-web-browsing/?ref=blog.althea.net" rel="noopener">advertisers</a>.</p><p>Althea uses an integrated VPN to easily and automatically protect your privacy from whomever may be carrying your traffic. While you do still have to trust the VPN provider the selection of who to trust with your browsing history is no longer limited based on your location.</p><p><strong>How does it work out for me?</strong></p><p>The biggest question that new users give in our<a href="https://medium.com/althea-mesh/althea-development-update-59-experiments-in-real-world-payments?ref=blog.althea.net"> payment experiments</a> is, “how much data do I use?”. I’m going to try and put internet usage into context using my personal internet usage as an example.</p><p>Right now I pay $70 a month for gigabit fiber to my apartment. In the grand scheme of American Internet access this puts me in the <a href="https://transition.fcc.gov/Daily_Releases/Daily_Business/2018/db0207/DOC-349074A1.pdf?ref=blog.althea.net" rel="noopener">top ~5% of households</a>.</p><p>We’ll be comparing my current internet to an Althea network charging 15 cents/GB</p><p>I’m a moderate internet user. I game, stream media exclusively for entertainment, and partake in the strange hobby of downloading Wikipedia regularly.</p><p>On average this comes out to about ~370GB a month in usage for me.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/c0d7122476ba0701258b.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Let’s look at where my 15 cents / gigabyte to the Althea network would go.</p><p>10c goes to the gateway, which is purchasing a resalable fiber connection. (about $1000/mo)</p><p>4c goes to my neighbor, Alice, who is helping get the connection from the gateway to me.</p><p>1c goes to the exit, who is peering traffic out to the internet.</p><p>During an average month my I would spend $56 on internet.</p><p>$37 of my bill goes to the gateway</p><p>$15 goes to Alice</p><p>$4 to the exit</p><p>Based on these numbers I would have saved $174 this year using Althea.</p><p>I chose to use myself as an example here because a lot of our potential users are concerned about exactly how much bandwidth they use.</p><p>Hopefully by providing a frame of reference for a pretty serious internet user we can put some of those fears to rest.</p><p><strong>Ultimately pricing is up to the market</strong></p><p>Our test network in Clatskanie is charging 20c a gigabyte, this is a non-trivially worse price than most of what the United States pays. But since most of the town is on 5mbps DSL, the network is adding a few new people every week anyway.</p><p>The market there does not demand lower prices, but instead acceptable broadband service first and price second. The prices have been set by the various equipment owners accordingly.</p><p>As the network there matures, I’m sure competitors will enter and prices will be pressed down, but ultimately Althea achieves lower prices by making it easier to compete, rather than through some inherent property of the billing system.</p>]]></content:encoded></item>
<item><title>Althea Development Update #61: Testnet bandwidth payments</title><link>https://blog.althea.net/althea-development-update--61--testnet-bandwidth-payments/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--61--testnet-bandwidth-payments/</guid><pubDate>Mon, 03 Dec 2018 00:00:00 GMT</pubDate><description>
Pragmatic bootstrapping
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<h3 id="pragmatic-bootstrapping">Pragmatic bootstrapping</h3><p>In our recent updates I’ve been talking about our metered billing tests and careful work implementing the client-side components of our payment channels.</p><p>For those that don’t already know payment channels are a blockchain application that allows two parties to create a pool of funds on the blockchain that can then be freely swapped offline. This is the foundational technology that will allow your Althea router to pay it’s neighbor fractions of a cent at a time.</p><p>Sadly payment channels are fairly complicated to setup and it’s clear that working out the logic is going to take a several more weeks. In frustration we looked up how much it would cost if we just sent the money the old fashioned way to the blockchain.</p><p>Surprisingly this was a lot more feasible than the last time we checked. Due to the current price of Ethereum it’s viable to send a transaction every <a href="https://ethgasstation.info/?ref=blog.althea.net" rel="noopener">36 cents of usage and pay a 5% fee</a>. That comes out to about once every hour.</p><p>This is nearly free compared to credit cards, which usually start at 20c or more as their minimum fee. More than good enough for us to work with for now.</p><p>Once that was decided it only took a few days to get my testbench routers to start <a href="https://rinkeby.etherscan.io/address/0xe5ccee253d929f400ad7fd1ea89eceb2f760fb5a?ref=blog.althea.net" rel="noopener">paying for their bandwidth</a>.</p><p>This lets us get onto testing the rest of the system in parallel. Accelerating our timeline by at least a month.</p><h3 id="limitations-on-channel-less-payments">Limitations on channel-less payments</h3><p>Obviously if the whole world used Althea this wouldn’t be viable, likewise it’s always possible for CryptoKitties to strike and lock up the entire blockchain again.</p><p>To remedy this temporarily I’ve added some dynamic fee computation that will keep the fees to 5% by slowing down the payment rate as the network grows more congested.</p><p>If fees increase to 10x their current amount routers will adjust to send payments for every $3.60 of bandwidth used and so on.</p><p>At a 100x increase in transaction fees this strategy is no longer viable, paying every $36 of bandwidth used simply exposes the user to too much fraud risk.</p><p>The risk of fees increasing more than 10x in the time period between now and when channels are ready is pretty small.</p><h3 id="what-s-left">What’s left?</h3><h4 id="network-dao-payments-">Network DAO payments:</h4><p>We’re doing some final patching on the Network DAO app. I wouldn’t be surprised if we had our first Network DAO up and accepting real money by my next update.</p><h4 id="bandwidth-payments">Bandwidth Payments</h4><p>With channel-less payments I estimate QA will take all of this coming week and into next week. Followed by deploying testnet payments to our Clatskanie network.</p><p>Provided that goes well we just need to finish up the free tier and enforcement. These are pretty straightforward features, hopefully we’ll be moving real money no later than the New Year.</p>]]></content:encoded></item>
<item><title>Althea Development Update #60: Teaching people to setup real gear</title><link>https://blog.althea.net/althea-development-update--60--teaching-people-to-setup-real-gear/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--60--teaching-people-to-setup-real-gear/</guid><pubDate>Sun, 18 Nov 2018 00:00:00 GMT</pubDate><description>
Globetrotting and training
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<h3 id="globetrotting-and-training">Globetrotting and training</h3><p>This update is coming a little late; it’s been a travel filled couple of weeks.</p><p>We held Altheapalooza, a small conference in Portland featuring the Althea team and Graham from <a href="https://startyourownisp.com/?ref=blog.althea.net" rel="noopener">startyourownisp.com</a>.</p><p>I also presented at the <a href="https://www.youtube.com/watch?v=Ha3O3qw-Pok&amp;ref=blog.althea.net" rel="noopener">Nashville Blockchain Developers meetup</a></p><p>The goal of Altheapalooza was to create video content about every detail of setting up an Althea network, from antenna selection to spectrum planning. This is also our first experience trying to teach all of this in a more formal setting rather than ad-hoc lessons in the field.</p><p>This was a great opportunity to get the team together, visit the network in Clatskanie and start to tackle one of the fundamental challenges of setting up an Althea network, can we effectively train people to setup real world wireless gear?</p><p>Where on the sliding scale of a two day in person course all the way down to a 15 minute video clip do we need to be?</p><p>Althea can automate every other part of the process, but point to point wireless gear is the only way to provide incumbent ISP competitive (and often superior) performance at a low cost. We need to be very effective at teaching people to use it.</p><p>We’ll let you know how this experiment progresses and once the videos of Altheapalooza are ready.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/6e8a8162c63e4161291a.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Visiting the tower in town, it’s not even fully extended&nbsp;yet!</figcaption></figure><h3 id="update-on-bandwidth-payment-experiments">Update on bandwidth payment experiments</h3><p>As expected once we started paying close attention to bandwidth payment amounts we found a few bugs. Now fixed in Alpha 11, rolling out over the next few days.</p><p><a href="https://github.com/althea-mesh/althea-firmware/releases/tag/alpha11-rc3?ref=blog.althea.net" rel="noopener">What’s New in Alpha 11</a></p><ul><li>Separate default WiFi names to prevent issues with client devices being dumb about frequency selection</li><li>New logarithm based route selection weighting prevents realistic prices (hundreds of thousands of Wei per byte) from causing routing issues</li><li>Tools in Rita for price setting and quality adjustment, updated to work with more realistic price values</li><li>Fixes to client and exit billing to properly account for nat traffic</li><li>Crash watchdog for Rita should restart Rita on crash automatically</li><li>more robust automated update script to handle some common failures we’ve seen</li></ul><hr><h3 id="technical-progress-update">Technical progress update</h3><h4 id="network-dao-payments">Network DAO Payments</h4><p>As you may have noticed <a href="https://blog.aragon.org/aragon-06-is-live-on-mainnet/?ref=blog.althea.net" rel="noopener">Aragon</a> is live on mainnet, this changes our previous timeline. Which involved figuring out how to deploy Aragon ourselves.</p><p>Right now we’re working on pretty minor integration issues, trying to get our Network DAO app and it’s assets to show up on the Aragon web interface. We have contacts on the Aragon team helping us out.</p><ol><li>Aragon deployed on mainnet</li><li>Possible to install the Althea app into an official Aragon DAO</li><li>Althea Network DAO app shows assets and is generally usable &lt; =</li><li>Billing integration with the rest of the router functions, to provide more seamless payment.</li><li>Create light client that works on routers and embedded devices.</li><li>Create a bidirectional payment channel and deploy it.</li><li>Integrate the light client and existing billing code.</li><li>Integrate the #3 with the payment channel.</li><li>Spec out channel flow in detail &lt; = forgot to do this</li><li>Integrate billing code with existing accounting code. &lt; = back here now</li><li>Comprehensively test this entire stack.</li></ol>]]></content:encoded></item>
<item><title>Althea Development Update #59: Experiments in real world payments</title><link>https://blog.althea.net/althea-development-update--59--experiments-in-real-world-payments/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--59--experiments-in-real-world-payments/</guid><pubDate>Sat, 27 Oct 2018 00:00:00 GMT</pubDate><description>
Check out our new website Althea.org
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Check out our new website <a href="https://althea.org/?ref=blog.althea.net" rel="noopener">Althea.org</a></p><p>We’re approaching testnet readiness with bandwidth payments and we’ve started working on how to present the concept of device to device payments to people in the real world.</p><p>This is an exciting milestone that brings up some very important questions.</p><ul><li>What kinds of incentives are really best at motivating people to sell bandwidth?</li><li>What kind of investment are people willing to make to do so?</li><li>What pain-points can we address in the design?</li></ul><hr><h4 id="designing-an-experiment-in-payments">Designing an experiment in payments</h4><p>Testnet bandwidth payments are on schedule to start next week, but I won’t be surprised if it’s the end of November before they are stable enough for real world testing to begin. With truly autonomous payments there’s a lot of edge cases with wallet and channel management that you have to answer correctly.</p><p>Ideally we want to work on figuring out how to present and design bandwidth payments from a human perspective in parallel to the technical completion.</p><p>So we came up with a quick and dirty idea that lets us perform a small scale experiment in our of our test networks.</p><p>The payment channel transactions aren’t quite ready but we do perform bandwidth accounting correctly. So instead of turning that into a transaction and sending it to the blockchain we send it to a server. From there we can pay users in our Clatskanie test network for bandwidth by hand.</p><p>It’s not exactly elegant and doesn’t really work well at all unless you have people on the ground. But it does allow people to be confident they will be paid for expanding the network and make money installing nodes.</p><p>Which is all we really need to observe what motivates people and iterate on how we present bandwidth payments and Althea to real people as a product to use. Not just a technical curiosity.</p><p>Some interesting lessons learned already, as we prepare to roll this out next week.</p><ul><li>People are more motivated by saving $40/mo than making $40/mo. Hooking up a single neighbor for the money is a less powerful motivator than ‘being a good neighbor’ and helping them save money.</li><li>Somewhat hilariously nearly everyone wants to help out their neighbor but almost no one totally trusts their neighbor to help them out.</li><li>Money does become a clear motivator once you reach ‘side hustle’ status of at least a couple hundred dollars a month, so hooking up several homes.</li><li>Cheaper internet is much less of a motivator than bad internet when it comes to people being interested and willing to try Althea.</li></ul><hr><h4 id="technical-progress-update">Technical Progress Update</h4><p><strong>Network DAO payments</strong></p><ol><li>Deploy Aragon OS</li><li>Deploy Aragon OS apps</li><li>Deploy Network DAO factory &lt; = we are here</li><li>Network DAO factory can be called to deploy a new Aragon DAO with the Althea DAO app preinstalled.</li><li>Create light client that works on routers and embedded devices.</li><li>Create a bidirectional payment channel and deploy it.</li><li>Integrate the light client and existing billing code.</li><li>Integrate the #3 with the payment channel.</li><li>Integrate billing code with existing accounting code. &lt; = we are here</li><li>Comprehensively test this entire stack.</li></ol>]]></content:encoded></item>
<item><title>Decentralized vs federated payment structures in Althea</title><link>https://blog.althea.net/decentralized-vs-federated-payment-structures-in-althea/</link><guid isPermaLink="true">https://blog.althea.net/decentralized-vs-federated-payment-structures-in-althea/</guid><pubDate>Sun, 21 Oct 2018 00:00:00 GMT</pubDate><description>
Me and Deborah Simpier were just talking about the role of decentralized node-to-node payments vs “federated” subnet DAO payments in…
</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>Me and <a href="https://medium.com/u/13bba445c497?ref=blog.althea.net">Deborah Simpier</a> were just talking about the role of decentralized node-to-node payments vs “federated” subnet DAO payments in Althea. For some context, we designed Althea with a vision of an autonomous network, which expands organically as people are incentivized by node-to-node bandwidth payments to build new links.</p><p>This is the vision which is front and center in our materials and which has inspired people all over the world to start planning and building Althea networks. The ideal is that if everyone in an area is incentivized to strengthen the network, then they can grow the network without the centralized coordination of a traditional ISP.</p><p>Deborah has been helping people plan these networks, alongside building her own Althea network in Clatskanie. As these networks are moving past the planning stage and into reality, we’ve been hitting up against some of the hard facts of the ISP market. One of the main points of friction that the basic Althea system has with the way business is done today, is that wholesale, resalable internet access usually involves very large connections with high monthly costs, and long minimum contracts.</p><p>For instance, a 500mbps dedicated connection in Clatskanie costs $1400 per month on a minimum 3 year term. This is not a huge impediment in starting a traditional ISP, you just plug it into a spreadsheet along with the rest of your startup costs, monthly charge, and expected user base, and either the numbers add up or they don’t.</p><p>But in the basic Althea model, we ideally want there to be different “gateways” (people paying for this large subscription and selling it into their local network), who coexist and compete to some extent. But that’s tough to bank on. While Althea’s per-gigabyte bandwidth payments promote viral growth by allowing the system to reward nodes granularly, they are also inherently somewhat uncertain. Having fixed payments can be beneficial.</p><p>That’s exactly why we designed the <a href="https://medium.com/althea-mesh/the-althea-governance-model?ref=blog.althea.net">Althea governance system</a> the way we did. The governance system works alongside the bandwidth payment and routing system, but it involves each node making fixed monthly payments to a “subnet DAO”, an on-blockchain organization run by a group of local people who are promoting the network and providing customer support. Because each node on a network is identified by an IP address, these are known as “IP leasing fees”.</p><p>These subnet DAOs are meant to be separate from the gateway nodes which are connecting to the internet and the intermediary nodes who are forwarding traffic through the network. In a large, mature Althea network, we want many different players to be able to coexist and coordinate more efficiently than they would under the roof of one monolithic firm. For example, multiple subnet DAOs could provide multiple levels of service while utilizing many of the same gateways and intermediaries in an area.</p><p>However, it’s becoming clear that in the early days, the people in a subnet DAO are often the ones coordinating a build-out of the network at all and are often taking on the cost of gateway bandwidth. We are going to start recommending a higher subnet DAO fee (30–50% instead of 5–10%), and as we guide people in starting their own networks, having them plan them more along the lines of a traditional ISP, until the network is large enough to sustain internal collaboration and competition of different independent players.</p><p>The Althea software works great in this mode as well. This doesn’t actually involve any changes to the software at all. <a href="https://medium.com/u/f1db9bdd6792?ref=blog.althea.net">Justin Kilpatrick</a> and the rest of our dev team have done a really great job writing software that helps people easily set up networks without many of the configuration and equipment selection headaches that usually come along with a new network. Althea networks configure themselves autonomously (barring a few stubborn bugs!). Network architecture is not something that the person setting up the network needs to think about with Althea.</p><p>As Althea networks mature, and people using the network understand that they can earn money reselling, strengthening, and expanding the network, bandwidth payments will become a bigger part of the picture.</p>]]></content:encoded></item>
<item><title>Althea Development Update #58: Online Port toggling, more payments progress</title><link>https://blog.althea.net/althea-development-update--58--online-port-toggling--more-payments-progress/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--58--online-port-toggling--more-payments-progress/</guid><pubDate>Mon, 08 Oct 2018 00:00:00 GMT</pubDate><description>
Deborah and Jehan spent last week in Medellin Colombia helping to setup an Althea network there. You should read Deborah’s blog post about…
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Deborah and Jehan spent last week in Medellin Colombia helping to setup an Althea network there. You should read <a href="https://medium.com/althea-mesh/althea-in-medellin?ref=blog.althea.net">Deborah’s blog post</a> about it!</p><p>As I talked about in the last update we’re trying to move quickly on payments by getting the network DAO payments onto prodnet (real money) and bandwidth payments on to testnet (fake money) this month.</p><p>Both of these are somewhat aggressive but possible.</p><p><strong>Network DAO payments</strong></p><ol><li>Deploy Aragon OS</li><li>Deploy Aragon OS apps</li><li>Deploy Network DAO factory &lt; = we are here</li><li>Network DAO factory can be called to deploy a new Aragon DAO with the Althea DAO app preinstalled.</li><li>Create light client that works on routers and embedded devices.</li><li>Create a bidirectional payment channel and deploy it.</li><li>Integrate the light client and existing billing code.</li><li>Integrate the #3 with the payment channel. &lt; = we are here</li><li>Integrate billing code with existing accounting code.</li><li>Comprehensively test this entire stack.</li></ol><hr><h4 id="what-s-new-in-alpha-10">What’s new in Alpha 10</h4><ul><li>Port toggling: The ability to switch port functions dynamically, allowing users to customize their device functions more easily.</li><li>Interface internationalization, you can now select Spanish for the Althea router interface!</li><li>Remote logging, there’s now an endpoint users can hit to send us router logs if they encounter an error in the field. We hope to put a button on the dashboard for this in the next release. It is of course totally disabled by default.</li><li>Bugfixes: very specific billing edge-cases can no longer crash routers</li></ul><hr><h4 id="thoughts-on-routers-and-pricing">Thoughts on routers and pricing</h4><p>As of about a week ago it’s possible to easily buy <a href="https://althea-routers.myshopify.com/?ref=blog.althea.net" rel="noopener">preflashed routers</a> and other networking equipment from us. There is also a hopefully complete set of documentation on how to connect to other nodes and <a href="https://forum.altheamesh.com/t/connecting-your-althea-router-to-the-network/160?ref=blog.althea.net" rel="noopener">setup your router</a>.</p><p>You’ll probably notice we’re not selling the cheapest option on our <a href="https://github.com/althea-mesh/althea-firmware?ref=blog.althea.net#supported-device-targets" rel="noopener">supported routers</a> lineup. You can generally go as low as $20 for a working device, but we’ve found that ~$100 is where you stop getting a better router for your money.</p><p>After testing dozens of routers most of the $150 — $300 routers you find at Best Buy are generally no better than the $100 option if you know what to look for.</p><p>There’s a reason why the Best Buy options are so expensive of course, having a higher priced options attracts people to the ‘middle’ of the price curve. Those shiny $300 routers are designed to justify in your mind the $150-$200 routers.</p><p>We experience this same issue putting up a $100 router next to a $25 one, except in our case we’ve made sure the $100 router is really 4x better (it’s actually 5x better according to my testing).</p><p>I suppose we could throw in a $300 router that’s not actually 3x better than a $100 router. But I find that hard to justify, so for the time being we’re going to try and steer first world buyers to the GL B1300.</p>]]></content:encoded></item>
<item><title>Althea Development Update #57: First transactions, DAO payments soon to follow</title><link>https://blog.althea.net/althea-development-update--57--first-transactions--dao-payments-soon-to-follow/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--57--first-transactions--dao-payments-soon-to-follow/</guid><pubDate>Fri, 21 Sep 2018 00:00:00 GMT</pubDate><description>
Update Summary
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<h4 id="update-summary">Update Summary</h4><p>We created <a href="https://github.com/althea-mesh/clarity?ref=blog.althea.net" rel="noopener">Clarity</a> a minimalist ultra-lightweight Ethereum transaction generation library that can run on any device powerful enough to reasonably sign translations.</p><p>In parallel to bandwidth payments our local network DAO’s should be ready to collect payments very soon. Since we are using Aragon as a framework for storing the money it’s mostly audited already. Which should dramatically reduce our time to payments with real money.</p><p>Our <a href="https://github.com/althea-mesh/althea-firmware/releases?ref=blog.althea.net" rel="noopener">latest release</a> contains only minor networking fixes, at this point networking is stable enough that we will need an order of magnitude more users to really start running into new bugs.</p><p>Two of our own will be traveling to Colombia next week to help setup our first South American deployment.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/13a7807efb1925f32022.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>High density environment in Medellín&nbsp;Colombia</figcaption></figure><h4 id="short-term-roadmap">Short term roadmap</h4><p>Our goals right now are essentially payments and documentation ASAP.</p><p>We have new networks which will quadruple our number of active users in the next few weeks but without some form of real money billing these are all experiments. Not decentralized businesses.</p><p>We’re focusing on getting Network DAO payments online and integrated with Aragon. Not only is this simpler than bandwidth payments technically since the heavy lifting has already been done for us. But it’s also better suited to bootstrapping a network. Where bandwidth payments may start very small anyways.</p><p>The other side of this problem is that unless you know how to poke around github repos or talk to us how to get started with Althea is a difficult thing to figure out. Like I said in my last update we’re really riding on our website refresh to achieve that.</p><h4 id="why-clarity">Why Clarity?</h4><p>After significant research we found that the Parity Ethereum client is simply <a href="https://github.com/paritytech/parity-common/issues/27?ref=blog.althea.net" rel="noopener">inappropriate</a> for embedded environments. This left us in the awkward position of having to furnish our own lightweight transaction generation library.</p><p>After a detour of a couple of weeks Clarity is capable sending functional <a href="https://ropsten.etherscan.io/tx/0x610d92cc64e64a4e5eac0ecd1aafbd7fb1e7b17983f15f4d6aca77a19f63897e?ref=blog.althea.net" rel="noopener">transactions</a> from a variety of environments. Most importantly for us is support for the MIPS CPU architecture which is very popular in routers for it’s ease of manufacture and low cost.</p><p>There still needs to be some work done on documentation and sending transactions to contracts specifically, but I’m very happy with the progress.</p><h4 id="dual-purpose-wifi-cards">Dual purpose WiFi cards</h4><p>Althea is transmission medium agnostic, meaning no matter what connections it is provided it will make the best use of them possible.</p><p>A connection that’s always been less useful than people seem to expect is meshing using internal omnidirectional radios. In general Althea deployments focus on high performance point to point antennas and leave the internal router radios to normal ‘home router’ tasks. Mainly home wifi.</p><p>It’s possible to use a internal wifi card for meshing with AdHoc mode but only if you give up on using it for your own Home wifi. Giving up either home radio sucks, routers obviously provide both frequencies because both are useful.</p><p>Earlier this week I decided to investigate MeshPoint (802.11s) a WiFi standard that attempts to codify those ‘whole home wifi’ setups for connection sharing by creating a group network that many access points can join and connect over.</p><p>This is of course perfect for Althea, which simply sees yet another connection to make use of.</p><p>The real surprise is that careful inspection of the driver capabilities using the iw tool reveal that with 802.11s we can have our cake and eat it to. By <a href="https://github.com/althea-mesh/althea-firmware/pull/50?ref=blog.althea.net" rel="noopener">sharing</a> the same device for multiple access points we can provide connectivity without sacrificing user radio functionality. At least on devices that have up to date WiFi hardware.</p><p>It remains to be seen if the contention of running two networks on a single WiFi card causes problems.</p>]]></content:encoded></item>
<item><title>Althea Development Update #56: Network Organization support</title><link>https://blog.althea.net/althea-development-update--56--network-organization-support/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--56--network-organization-support/</guid><pubDate>Sat, 08 Sep 2018 00:00:00 GMT</pubDate><description>
Update Summary
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<h4 id="update-summary">Update Summary</h4><p>Several new networks getting started (about 5) some made videos of their setups <a href="https://www.youtube.com/watch?v=MiFWjLk3NnY&amp;feature=youtu.be&amp;ref=blog.althea.net" rel="noopener">one</a>, <a href="https://www.youtube.com/watch?v=7wu_HP_aq5Y&amp;ref=blog.althea.net" rel="noopener">two</a>.</p><p>With network features now generally stable a lot of people are getting online and using Althea. Likewise development has shifted gears from putting out fires to cranking out actual blockchain/payment features.</p><p>In parallel we are working on documentation and additional polish to provide easier access for people who want to try Althea now that it is approaching stability.</p><h4 id="what-s-new-in-alpha-9"><a href="https://github.com/althea-mesh/althea-firmware/releases/tag/v0.1.5?ref=blog.althea.net" rel="noopener">What’s New in Alpha 9</a></h4><ul><li>Local network enforcement with early DAO contract</li><li>Checks to wifi password and name to prevent accidental breakage</li><li>Added api to view neighbours debts</li><li>Update lots of dependencies</li><li>Cleanup of old tunnels</li><li>Dashboard interface refresh</li><li>Rasbperry PI targets!</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/e73148c8e90cd8ff7ab3.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The Aragon app (before any design&nbsp;work)</figcaption></figure><p>What we have right now is a pretty barebones selection screen and code on the routers that will query neighbors for membership on the local Network DAO once you turn it on.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/d9360ed503fa5db0f414.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The DAO selection screen on a&nbsp;router</figcaption></figure><p>We’re hoping to have payments and proper voting in the next few weeks.</p><h4 id="raspberry-pi-targets">Raspberry PI targets</h4><p>As our most requested feature we now have Raspberry PI OpenWRT targets available on the releases and <a href="https://github.com/althea-mesh/althea-firmware?ref=blog.althea.net" rel="noopener">firmware</a> pages. For lack of extra ports the Ethernet jack is a meshing port and the wifi is used for LAN connections.</p><p>It’s not really useful for real world scenarios, there aren’t enough ports to resell connectivity easily and still be able to use it as a home device. But generally everyone has one lying around to play with so it’s an easy way to try things out.</p><h4 id="documentation">Documentation</h4><p>We’re hard at work on a refreshed website and updated documentation. Our landing page has become painfully out of date and now that the software is ready for people to seriously use it the difficulty of navigating and understanding what we’re trying to do with our current messaging is making itself more and more known.</p><p>I’m really happy with the designs we have so far and I think you will be too.</p><h4 id="conclusion">Conclusion</h4><p>In general I’m very impressed with the quality and speed of our progress since onboarding our new team members. At this rate we will easily achieve our goals before the end of the year and really get to see if Althea can scale to become a serious competitor to existing service providers.</p>]]></content:encoded></item>
<item><title>Althea Development Update #55: Network organizer features</title><link>https://blog.althea.net/althea-development-update--55--network-organizer-features/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--55--network-organizer-features/</guid><pubDate>Fri, 24 Aug 2018 00:00:00 GMT</pubDate><description>
I’m very happy to say that since our last update we’ve had about 8 devices be put into real world use without any of the failures/crashes…
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.althea.net/content/external/5e3c5c02fb5d57224e22.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>I’m very happy to say that since our last update we’ve had about 8 devices be put into real world use without any of the failures/crashes that plagued the previous releases.</p><p>This is the first release to include all of the long term changes inspired by our recent push for stability. We wanted to see how it held up before really pushing it out.</p><p>We’re going to take this as a green light to start expanding into our wait-lists and getting people online.</p><p>You can find a guide to flash your own device router on our <a href="https://forum.altheamesh.com/t/a-humans-illustrated-router-flashing-guide/113/3?ref=blog.althea.net" rel="noopener">forum</a>. We’ve also moved a lot of our development discussion there so you may want to peruse it anyway.</p><hr><p>Our first blockchain-backed features going into testing next week. It’s the first part of our <a href="https://medium.com/althea-mesh/the-althea-governance-model?ref=blog.althea.net">governance model,</a> the local Network DAO that allows organizers to collect a small fee for fixed cost services (eg tech support) and allocate funds to network wide projects.</p><p>I hope to have a release candidate with that by this coming Friday.</p><p>The goal is to have this stabilized sooner than actual bandwidth payments, the network integration is very simple and the heavy lifting on the blockchain side is being handled by <a href="https://aragon.org/?ref=blog.althea.net" rel="noopener">Aragon</a>. This should allow us to have a way to collect real money while the more complex payments system is audited.</p><p>There’s a big motivation here to get real features out the door, we’ve been cultivating real world Althea networks for a long time now and shepherding them through the setup process.</p><p>Things like finding backhaul, hardware, and performing antenna setup do take time, but it’s finally started to reach critical mass in several locations and the pressure is on to deliver something that works for them.</p><p>I’m looking forward to the challenge.</p><hr><figure class="kg-card kg-image-card kg-width-full kg-card-hascaption"><img src="https://blog.althea.net/content/external/dcceb6df2443e0d49231.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Future deployment location in&nbsp;Colombia</figcaption></figure>]]></content:encoded></item>
<item><title>Althea Development Update #54: Better networking management, moving on deployments</title><link>https://blog.althea.net/althea-development-update--54--better-networking-management--moving-on-deployments/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--54--better-networking-management--moving-on-deployments/</guid><pubDate>Wed, 15 Aug 2018 00:00:00 GMT</pubDate><description>
What’s new in Alpha 8
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/2c0b361f733e14beef8f.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><h4 id="what-s-new-in-alpha-8"><a href="https://github.com/althea-mesh/althea-firmware/releases/tag/v0.1.4?ref=blog.althea.net" rel="noopener">What’s new in Alpha 8</a></h4><ul><li>Improved peer discovery works off the same method as Babel to be less disruptive to surrounding network environments and more efficient.</li><li>Improved tunnel management now handles every case where a connection may fail to open or be maintained.</li><li>Exit signup improvements, users have to manually sign up for an exit now, but we can reasonably scale without losing Netflix access.</li><li>Lots of usability improvements in the dashboard, including connectivity indicators and loading bars on the right parts of the signup process.</li><li>x86_64 as an OpenWRT platform, make a big router out of an old desktop!</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/e65ee93ef763b6a5c565.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The new dashboard, notice it now tells you if the exit is&nbsp;alive</figcaption></figure><p>I’m especially excited about this release because it’s finally resolving a lot of the issues that have been keeping us from expanding more aggressively in deployments.</p><p>Generally the old peer discovery code was pretty high-touch and sometimes required a couple of reboots before it really behaved. In Alpha 8 that’s all but eliminated, as is the tendency to anger older networking equipment with an aggressive peer discovery strategy.</p><p>We’re also on stable releases of Rust and OpenWRT for the first time, as the stars aligned to put all the features and device support we need into the stable branches of each project at about the same time.</p><hr><p>In deployments news several of our networks, including Seattle and in Columbia South America are getting their first equipment up soon. Which has in turn driven our push for stable networking in this release.</p><p>We’ve also been testing out some cool new equipment particularly MikroTik’s ‘wireless wire’, a line of 60ghz radios with integrated directional antennas that come preconfigured as an L2 bridge out of the box. They are surprisingly easy to setup and perform quite well.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/5d7a228448025929fb51.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>While these aren’t as flexible as many other products the 60ghz frequency essentially makes them immune to the interference issues you get on the normal wifi range and provides very high speeds (full gigabit) over their 200m range. For a variety of situations I could see these becoming our go to recommendation.</p><hr><p>I’m hoping that this is the second to last Alpha release, we’ve got one or two more hurdles before payments stuff is ready to be mainlined. After that we’re technically in Beta as we would be unstable but feature complete.</p>]]></content:encoded></item>
<item><title>Althea Development Update #53: Timelines and building rock solid software</title><link>https://blog.althea.net/althea-development-update--53--timelines-and-building-rock-solid-software/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--53--timelines-and-building-rock-solid-software/</guid><pubDate>Tue, 31 Jul 2018 00:00:00 GMT</pubDate><description>
I’m happy to say that we’ve brought on board 3 new developers since our last update. We’ve also expanded the marketing team to add some…
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>I’m happy to say that we’ve brought on board 3 new developers since our last update. We’ve also expanded the marketing team to add some flash to our substance.</p><p>On the subject of development we’re merging some of our longer term feature branches while bringing these new developers on board. So Alpha 7 will be a bit late.</p><p>Speaking of releases here’s a rough time-line for features.</p><h4 id="things-coming-in-alpha-7">Things coming in Alpha 7</h4><ul><li><strong>Exit signup refactor:</strong> It turns out there was a lot of work between a mediocre sign up solution and something we could expose to the world without concern. The new exit signup procedure is actually sufficient to verify users are human and is generally more robust to failure.</li><li><strong>Live toggling for wan ports:</strong> One of our favorite demos is to hook up a few routers and start moving connections around, quickly demonstrating the indestructibility of the mesh routing. But there was one cable you couldn't move, the gateway WAN ports used to bridge traffic out of the mesh and onto the internet were perilously finicky. If not setup perfectly on router start any attempt to use them would fail. Now you can add/remove or change the WAN connection at any time without issues.</li><li><strong>Off-chain payments code: </strong>Our first valid eth transaction back and forth is on track for Alpha 8, we hope to be testnet ready by Alpha 9 (that’s early September for those paying attention)</li><li><strong>On-chain payments code: </strong>The contract we want<strong> </strong>to use for our payment channel is already complete but integration and the resulting testing will probably take a while. I’m estimating Alpha 10 before ‘on testnet’ usage doesn’t involve devs bailing out routers burning test coins all the time.</li><li><strong>Peer discovery refactor: </strong>Rust is a very great language when it’s safety properties are used well, I’ve been going back over a lot of the original peering code with a fine tooth comb and the goal of higher day to day stability. I’m hoping we’ll see this in Alpha 8.</li><li><strong>Simplified API endpoints</strong>: Early on with the router dashboard we used a /settings API to do just about everything, this was great in that it was super powerful and very quick to make, but long term we would like to avoid posting highly specific structs from the frontend. It’s a recipe for tight coupling and spaghetti code. We’ve added simplified endpoints for exit signup already and we hope to have everything else soon.</li><li><strong>Improved and far more helpful dashboard</strong>: Right now the dashboard is quite bare, we brought on another front end developer to really polish it from something with the right buttons to something legitimately helpful in setting up and debugging networks.</li><li><strong>OpenWRT version freeze: </strong>We keep getting caught by surprise by OpenWRT master breakage, building off of master was fine earlier on in our development cycle but it’s past time to freeze on a commit hash that we test before we update. This way we can just not update when a major device decides the latest OpenWRT build means it should brick itself .</li></ul><hr><h4 id="what-does-stability-mean-for-althea">What does ‘stability’ mean for Althea?</h4><p>I’ve been talking about stability a lot, it might give the impression that our Alpha releases are totally broken. That’s only partially true, while features are often incomplete my personal router is untouched since Alpha 5. It has completed multiple update cycles without the slightest bit of attention.</p><p>If Althea was meant to be used in low radio noise environments with a direct fiber line for backhaul like my apartment we would probably consider stability a done deal.</p><p>Maybe half of the deployments we’re working with are in technologically modern areas with accessible backhaul fiber, where internet access for consumers is simply too expensive.</p><p>The other half live in some of the more challenging networking environments in the world. For these people it’s often not that internet access is overpriced, but that it’s simply not sold or is of such poor quality as to be unusable.</p><p>Ultra-high latency, reordered packets, flaky connections, and protocol non compliant devices litter these sorts of environments.</p><p>Somewhere in between California and Australia there’s an ISP that will buffer Wireguard packets and play them back out of order 10 <strong>seconds</strong> later. All while prioritizing ICMP, HTTP, and HTTPS, making the issue almost impossible to detect.</p><p>From the perspective of a deployment in Australia this was Althea just not working.</p><p>Our first outage report for the Clatskine test network was caused by supposedly ipv6 complaint point to point links suddenly generating spikes of 300ms latency versus their usual 10ms when exposed to pings to ff02::1.</p><p>From the perspective of the Clastkine network this was Althea just not working.</p><p>Slack and many other websites firewall off TCP MSS autonegotiation. This means they hardcode the segment size of their traffic to a standard 1500 byte frame. It’s extra insidious because protocol complaint websites will work flawlessly and you’ll sit around wondering what’s going on.</p><p>From the perspective of any user of that build this was Althea just not working.</p><p>I think I’ve made my point. The actual ‘mesh networking’ is just the beginning, if we really want to make a tool that can withstand the sort of environments where people need Althea most it’s not enough for it to work, it has to be indestructible.</p>]]></content:encoded></item>
<item><title>Althea Development Update #52: Asking the right questions about performance</title><link>https://blog.althea.net/althea-development-update--52--asking-the-right-questions-about-performance/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--52--asking-the-right-questions-about-performance/</guid><pubDate>Sat, 14 Jul 2018 00:00:00 GMT</pubDate><description>
Here’s our Alpha 6 release
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Here’s our <a href="https://github.com/althea-mesh/althea-firmware/releases/tag/v0.1.3?ref=blog.althea.net" rel="noopener">Alpha 6 release</a></p><p>We’re attending and presenting at <a href="https://ournetworks.ca/?ref=blog.althea.net" rel="noopener">SOON</a> in Toronto this weekend, so keep an eye on the IPFS powered <a href="https://ournetworks.ca/livestream/?ref=blog.althea.net" rel="noopener">livestream</a></p><h4 id="what-s-new-in-alpha-6"><strong>What’s new in Alpha 6</strong></h4><ul><li>DNS servers have been moved to more stable defaults after a <a href="https://blog.althea.net/outage-report--false-dns-responses/">recent incident</a></li><li>Meshing over device WiFi is now a runtime toggle instead of a firmware compile time option</li><li>Dashboard API endpoints are now automatically tested and should generally be more reliable</li><li>Moved to the system allocator for rust Stable builds</li></ul><hr><h4 id="now-hiring-">Now Hiring!</h4><p>We have raised a funding round and are now hiring remote developers. See the application <a href="https://althea.net/getting-started">here</a>. We’re a fully remote team and we will happily hire wherever the talent is. We are also pretty flexible about pay, so generally expect a little above the average for your region.</p><hr><h4 id="in-which-detailed-data-confirms-the-obvious">In which detailed data confirms the obvious</h4><blockquote>If it becomes clear that the Zyxel is a part of a larger pattern of substandard performance rather than the exception I’ll start digging into kernel performance profiling and really get to the bottom of the issue.</blockquote><p>Good news is that <a href="https://www.gl-inet.com/products/gl-b1300/?ref=blog.althea.net" rel="noopener">GL-B1300</a> has a good enough price/performance to become our new go-to midrange pick. Bad news is that’s 100mbps throughput, at least 3x less than what I had estimated the device to be capable of.</p><p>True to my word, I dug into the performance at the kernel level on both the WD MyNet n600 and the GL-B1300, trying to get to the bottom of our performance woes.</p><p>First off thanks to Brendan Gregg for the wonderful pearl script that converts data from the Linux perf tool into easily readable <a href="http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html?ref=blog.althea.net" rel="noopener">Flame Graphs</a>. For those of you not familiar this graph represents a call stack, going up the deeper ‘down’ the callstack you go. Length is a relative measure of how much cpu time was spent in a given function.</p><p>The below graphs where captured over 100 second intervals during an iperf UDP test from kworker threads using a kernel compiled with as identical as possible flags.</p><p>The n600 is a pretty old device, it runs a 560mhz AR9344 MIPS core right out of 2011. Variants of this core are popular into even modern routers. Tested speed with Althea is ~25mbps.</p><p>The GL-B1300 is a brand new quad core 717mhz ARM chip Atheros IPQ4028. Tested speed with Althea is ~100mbps.</p><p>Considering the process and architecture improvements between these two processors we should be seeing a lot more than a 4x improvement. The latter processor is easily a dozen times more powerful.</p><p>The reason we’re focusing on processing power is that in our design with Althea we actually nest two WireGuard tunnels. One to provide security for your traffic as it traverses out to the internet, the other exists between every hop. A very important part of being able to bill for traffic is being able to identify who is responsible for paying for that traffic.</p><p>Since each hop pays the hop adjacent to it in our system WireGuard is actually the most expedient way to authenticate traffic is actually from the peer who will be billed. In theory we could improve efficiency by removing the chacha20 encryption and only using the poly1305 authentication.</p><p>This is even something we seriously discussed as it became clear even modern devices where not performing to expectations. But I decided to do some more investigating before going down that route.</p><p>In the graph for the n600 CPU time dominated by WireGuard tasks. So much so that the iptables and routing rules remain thin little licks of ‘flame’.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://blog.althea.net/content/external/9f55b6f7d40fdfd629f6.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Kernel worker thread sample for the&nbsp;n600</figcaption></figure><p>But the picture painted by the B1300 is very different. The previously flame thin iptables stacks now make up nearly the entire graph. Packet decryption is relegated to this little corner on the left and an even smaller one about a fourth of the way over. Where you can barely see a chacha20_neon function.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://blog.althea.net/content/external/0cf24f89e05301005d8d.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Kernel worker thread sample for the&nbsp;GL-B1300</figcaption></figure><p>What we’re seeing is <a href="https://git.zx2c4.com/WireGuard/tree/src/crypto/chacha20-arm.S?ref=blog.althea.net" rel="noopener">WireGuard’s optimized ARM assembly implementation</a> paying off. It’s not so much that iptables tasks are larger on the B1300 as WireGuard tasks are massively smaller.</p><p>The similarly optimized MIPS implementation does impressive work for such an old processor. But exactly as expected the newer device blows it out of the water.</p><p>So then why is it only 4x faster?</p><p>The answer is packet forwarding hardware acceleration. While the n600 achieves it’s sticker 100mbps running stock OpenWRT most modern routers need special drivers to reach their sticker performance.</p><p>Testing the B1300 with stock OpenWRT reveals it gets…. about 100mbps throughput without WireGuard. The CPU is easily powerful enough to perform the WireGuard operations, exactly as I estimated.</p><p>To be honest I also suspected packet acceleration issues before I began, but it’s good to have rock solid confirmation.</p><hr><p>The conclusions we can draw here are that on modern devices Althea’s encryption/authentication stack is efficient enough to not be a problem. Instead we should focus our performance efforts on FOSS drivers for more common packet accelerators.</p><p>Fortunately such drivers already exist and are floating around <a href="https://forum.lede-project.org/t/qualcomm-fast-path-for-lede/4582/447?ref=blog.althea.net" rel="noopener">in the depths of the forums</a>. Waiting to be upstreamed, or if that fails applied as local patches to our router firmware.</p>]]></content:encoded></item>
<item><title>Outage report: False DNS responses</title><link>https://blog.althea.net/outage-report--false-dns-responses/</link><guid isPermaLink="true">https://blog.althea.net/outage-report--false-dns-responses/</guid><pubDate>Tue, 10 Jul 2018 00:00:00 GMT</pubDate><description>
When I was selecting the default DNS settings for the Althea firmware I wanted to choose a few publicly available but privacy focused DNS…
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>When I was selecting the default DNS settings for the Althea firmware I wanted to choose a few publicly available but privacy focused DNS servers that I could have a reasonable expectation of not storing queries.</p><p>While this isn’t exactly a great comfort considering that DNS requests are still made in cleartext it’s marginally better than feeding more data to Google.</p><p>Or at least I thought. Recently NordVPN decided to <a href="https://nanorep.nordvpn.com/General-Info/1132537412/We-have-changed-our-DNS-servers.htm?ref=blog.althea.net" rel="noopener">move their public DNS server address</a> if they had merely shut the service down the Althea firmware would have failed over to Mullvad’s DNS and been fine.</p><p>But instead the service now returns all queries with redirects to the server change announcement.</p><p>We have a patch in that will fix this issue in Alpha 6, users will either have to manually delete the lines containing the ip <em>162.242.211.137</em> in <em>/etc/resolv.con</em>f and <em>/etc/config/dhcp</em> on their devices or reflash with Alpha 6 once it is available Thursday.</p><p>As a response our new default DNS server selection is Cloudflare, followed by Hurricane Electric and L3. While maybe not as privacy focused we can expect that these services won’t be pulling the same tricks any time soon.</p><p>We’re still in the process of playing around with DNSsec by default, so we won’t be rolling it out with this fix, hopefully in the next few releases.</p>]]></content:encoded></item>
<item><title>Althea Development Update #51: Easier debugging in the field</title><link>https://blog.althea.net/althea-development-update--51--easier-debugging-in-the-field/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--51--easier-debugging-in-the-field/</guid><pubDate>Thu, 28 Jun 2018 00:00:00 GMT</pubDate><description>
Here’s our Alpha 5 release
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Here’s our <a href="https://github.com/althea-mesh/althea-firmware/releases/tag/v0.1.2?ref=blog.althea.net" rel="noopener">Alpha 5 release</a></p><h4 id="what-s-new-in-alpha-5">What’s New in Alpha 5</h4><ul><li>the exits endpoint, curl or visit 192.168.10.1:4877/exits to see detailed network status for easy debugging</li><li>improvements to the update system to better track what’s going on</li><li>some infrastructure for payments</li><li>other bugfixes and stability improvements</li></ul><hr><p>The big feature this sprint was a proper refactor of the exit sign up workflow to actually make sense and properly accommodate rare edgecases.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/95543d756170c488d15f.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Signup workflow</figcaption></figure><p>There are many cases where we want to change x or y property and we need a reliable way for user devices to understand that things have been changed without disconnecting them all from the internet until they perform a manual reset.</p><p>Now instead of trying to naively sign up to every available exit at once the device will wait for the users go-ahead and provide a reset button for when things go wrong.</p><p>Sadly this didn’t make the cut for Alpha 5 as the ui components are not finished and tested.</p><p>What did make the cut for Alpha 5 are several bugfixes and a new endpoint the exits endpoint automatically checks all of the mesh properties we would usually check by hand to debug and provides a very easy way to identify problems. In the future it will be integrated into the interface so that users get a short summary of what may be causing their connection problems.</p><p>{<br> “nickname”: “us_west”,<br> “exit_settings”: {<br> “id”: {<br> “eth_address”: “0x0101010101010101010101010101010101010101”,<br> “mesh_ip”: “fd96::1337:e2f”,<br> “wg_public_key”: “1kKSpzdhI4kfqeMqch9I1bXqOUXeKN7EQBecVzW60ys=”<br> },<br> “message”: “Althea production US exist”,<br> “registration_port”: 4875,<br> “state”: “Registered”<br> }<br> “is_selected”: true,<br> “have_route”: true,<br> “is_reachable”: true,<br> “is_tunnel_working”: true,<br> },</p><hr><p>Likewise the groundwork for payments is being set out. We hope to have both the exit signup refactor and the first integration of our payments daemon gauc_rs ready for Alpha 6.</p><p>In this iteration guac will complete the payments workflow without actually sending said payments off to a full client to be published on the testnet. It’s been an interesting exercise really working out the payment protocol and making sure everything is solid. No huge inventions here, just chipping away at making a solid implementation.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/18c4dca03d611301ed4f.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Very rough flowchart of payment&nbsp;workflow</figcaption></figure><p>We’re aiming for early August as our target date for having testnet payments online and functioning.</p><hr><p>When it comes to device support I’ve had a very confusing week, I added the Zyxel Armor2 to our supported devices list with high hopes of replacing the Turris Omnia at the 300+ mbps embedded range. Only for it to create a new performance per dollar record in the wrong direction. At $160 for a pitiful 60mbps.</p><p>What went wrong? The Omnia runs pretty stock Cortex A9, the Zyxel runs a Krait, also an armv7 core which a higher IPC and more processing bells and whistles.</p><p>Digging into the OpenWRT port (my primary suspect) the cpu governor is fine and so is the NEON implementation. WireGuard successfully compiles and runs using vector instructions.</p><p>The only place the Omnia wins the spec war is it’s DDR3 vs DDR3L memory in the Zyxel. I don’t really think that’s the key component here though, memory bandwidth should be an order of magnitude higher than networking bandwidth.</p><p>My primary suspect at the moment is some processor specific patch that was not unstreamed by Zyxel and somehow not captured in the port.</p><p>I’ve decided to stop digging deeper on this device and instead look at the <a href="https://store.gl-inet.com/products/gl-b1300-home-ac-router?ref=blog.althea.net" rel="noopener">GL-B1300,</a> which also has a pretty good spec sheet on paper and ships with a similar processor.</p><p>If it becomes clear that the Zyxel is a part of a larger pattern of substandard performance rather than the exception I’ll start digging into kernel performance profiling and really get to the bottom of the issue.</p><hr><p>Our head of outreach Deborah will be in Puerto Rico doing a workshop on Althea at the <a href="https://www.eventbrite.com/e/meshing-with-data-hackathon-tickets-46167843262?ref=blog.althea.net" rel="noopener">Meshing With Data</a> hackaton later this week and I will be in Toronto for the <a href="https://ournetworks.ca/?ref=blog.althea.net" rel="noopener">State of Our Networks (SOON)</a> conference next month. Hopefully we can get good recordings of both presentations to share with you all.</p>]]></content:encoded></item>
<item><title>Outage report: ipv6 broadcast packets and old Ubiquiti radio firmwares</title><link>https://blog.althea.net/outage-report--ipv6-broadcast-packets-and-old-ubiquiti-radio-firmwares/</link><guid isPermaLink="true">https://blog.althea.net/outage-report--ipv6-broadcast-packets-and-old-ubiquiti-radio-firmwares/</guid><pubDate>Mon, 18 Jun 2018 00:00:00 GMT</pubDate><description>
On the week of June 4th we rolled out the Alpha 3 software update to Althea devices. Shortly thereafter the Clatskani network went down.
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>On the week of June 4th we rolled out the Alpha 3 software update to Althea devices. Shortly thereafter the Clatskani network went down.</p><p>After fixing other issues in the release it became apparent that radio performance had dramatically dropped. Performance tests on the patched Alpha 3 release showed that the performance drop was not due to the software but due to the underlying radio network that Clatskanie ran on.</p><p>Packet dumps showed that radios would receive a ipv6 ping to ff02::1 and respond as the <a href="https://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtml?ref=blog.althea.net" rel="noopener">ipv6</a> specification demands, but in the process they would experience a large latency spike.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/085c1c50bdfdbf391da4.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Packet trace of user&nbsp;traffic</figcaption></figure><p>Delivering out of order packets as well as adding 300ms of latency to a connection that nominally has 40ms of latency. This caused throughput to drop from ~20mbps to 1–4mbps on the same hardware and physical link.</p><p>This issue was resolved by updating the firmware on all of the Nanobeam CPE devices as well as the Rocket M5 sector antenna.</p><p>Pings to the ff02::1 address where new in the Alpha3 firmware and used for peer discovery. They could be eliminated by re-factoring the peer discovery protocol, we are investigating if these sorts of issues are common enough to be worth the trouble.</p>]]></content:encoded></item>
<item><title>Althea Development Update #50: Putting out fires in production</title><link>https://blog.althea.net/althea-development-update--50--putting-out-fires-in-production/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--50--putting-out-fires-in-production/</guid><pubDate>Thu, 14 Jun 2018 00:00:00 GMT</pubDate><description>
Last update we created a ‘stable’ release channel and rolled out our latest and greatest to the 7 devices we had in production.
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Last <a href="https://medium.com/althea-mesh/althea-development-update-49-alpha-3-and-starting-a-stable-release-schedule?ref=blog.althea.net">update</a> we created a ‘stable’ release channel and rolled out our latest and greatest to the 7 devices we had in production.</p><p>By production I mean on real radios and in other people’s homes as a source of internet access. Despite performing admirably in testing everything, of course, immediately started crashing.</p><p>Earlier this week we managed to clean up all the race conditions that might cause odd crashes, reduce spam routes that leaked in form exits, and generally polish off a lot of rough edges. That’s all in <a href="https://github.com/althea-mesh/althea-firmware/releases/tag/v0.1.1?ref=blog.althea.net" rel="noopener">Alpha 4</a></p><p>But we still had a problem.</p><p>Once the crashes where out of the way it became clear that radio performance had tanked. Your first instinct may be ‘well the new software doesn’t perform well’ that’s what we thought too.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/25edcaa17a52f748c454.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>TCP dump of dup acks trying to resolve out of order&nbsp;packets</figcaption></figure><p>But after a series of performance tests we where able to determine that the performance drop can be attributed directly to the traffic over the radios themselves.</p><p>It seems that when you send a ipv6 peer discovery packet on some Ubiquiti firmwares it causes a sudden and dramatic drop in throughput and dramatic latency spikes, even reordering of packets. Which does not a happy TCP session make. Definitely the sort of issue you only find in production.</p><p>We’re still working on if the solution to this is re-factoring our neighbor discovery protocol to be more restricted or if just updating the firmware on all radios involved is sufficient.</p><hr><p>Speaking of those performance tests, we gathered some very <a href="https://forum.altheamesh.com/t/althea-performance/44?ref=blog.althea.net" rel="noopener">interesting data</a>. It seems our current software is mostly memory bound in terms of networking speed. On embedded devices like routers this means you want a lot of cores, the more or higher frequency the better, to handle all the copying. On more advanced platforms like x86 the clockspeed advantage goes away since there is dedicated hardware for memory copying and it simply becomes a memory frequency war.</p><p>As a summary a $15 router gets you 20mbps of encrypted throughput, $60 gets you 45mbps and $160 gets 300mbps. I couldn’t really test the throughput of anything faster than with the confidence I would like. I’m satisfied that we’ve reached a decent price to performance ratio now that we’ve got our general network structure finalized.</p><hr><p>Deborah is busy on outreach, working on building an Althea community in Portland over the next couple of months.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/ea0f4e43ca1bd14ec9c1.jpg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>They met up this weekend for a flashing party, playing around with our latest release and planning a network.</p><p>Coming up in the next couple of weeks is Alpha 5, which will include some new features in addition to more bugfixes. As well as an AMA hosted on Reddit’s <a href="https://www.reddit.com/r/darknetplan/?ref=blog.althea.net" rel="noopener">mesh networking community,</a> this coming Sunday the 17th.</p>]]></content:encoded></item>
<item><title>The Althea governance model</title><link>https://blog.althea.net/the-althea-governance-model/</link><guid isPermaLink="true">https://blog.althea.net/the-althea-governance-model/</guid><pubDate>Fri, 01 Jun 2018 00:00:00 GMT</pubDate><description>
Althea is a system that lets routers pay each other directly for bandwidth, similar to how ISPs peer with one another on the internet…
</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>Althea is a system that lets routers pay each other directly for bandwidth, similar to how ISPs peer with one another on the internet backbone. It also incorporates a price-aware routing protocol which sends packets along the cheapest and best paths in a network.</p><p>We’ve been working on the <a href="https://altheamesh.com/governance-paper?ref=blog.althea.net" rel="noopener">Althea governance paper</a> which outlines a platform for creating “subnet DAOs”, blockchain-based organizations which regulate, assist, and promote local Althea networks. Here’s an overview:</p><h3 id="the-power-of-decentralization">The power of decentralization</h3><p>Althea makes it easy for groups of people and businesses to form local internet access networks, without the network being owned by a single centralized ISP business with all the questions about ownership and management that that entails. Think about it- if there are 4 conventional ISPs in your area, and you are signed up with only one of them, you are only using a fraction of the available network infrastructure. Why? Because existing technology requires that there be one centralized entity with one network for you to pay (unless you are using a free community network, but the lack of money makes these hard to grow and maintain).</p><p>With Althea, neighbors can connect to other neighbors, as well as more commercial entities, or even nodes owned by independent entrepreneurs. There’s no requirement for one company to control an entire network to get paid. Every packet follows the most efficient path through the network, and every node is compensated for its contributions to the network. By decoupling compensation from centralized network control, Althea allows for networks that are more redundant, more efficient, and cheaper than traditional ISPs.</p><p>We’ve been testing this model in our Clatskanie, OR test deployment, and it has attracted interest from a wide variety of people who want to start Althea networks around the world.</p><h3 id="where-is-centralized-still-better">Where is centralized still better?</h3><p>Centralized networks do still have advantages over the basic Althea model outlined above in a few key ways.</p><p><strong>Network promotion: </strong>A centralized ISP can devote resources towards promoting their business and signing up customers. In an Althea network, payments go directly to the nodes carrying the traffic. One pattern that we have seen is where a property owner who has a good location for a node (a high rooftop usually) has little interest in going out and finding users to connect to their node.</p><p><strong>Network quality control:</strong> A centralized ISP is a group of people who benefit from happy customers, since all the money flows through them. If the only payments are for bandwidth, then the only people in the system who will have incentive to hook customers up and keep them happy are people who can expect to sell them bandwidth. There could be a tragedy of the commons where nobody takes care of a network as a whole.</p><p><strong>Network security:</strong> If one entity controls every router on a network, as is the case with a conventional centralized ISP, then those routers can easily trust their neighbors, and other routers in the network. In the decentralized Althea model, the possibility exists that a router could lie about how good its connection to other routers or the internet is. If there is no factor limiting how many new routers are added to the network, an attacker could even cause routing to grind to a halt by advertising a million fake “Sybil” nodes.</p><h3 id="our-solution-althea-subnets"><strong>Our solution: Althea subnets</strong></h3><p>Althea subnet organizations are groups of people empowered to play a role governing Althea subnets. First, let’s review what a subnet is. A subnet is a group of routers who all operate in a common range of IP addresses, and can all route messages to each other. Basically a local Althea network.</p><p>Some of the routers in the subnet may have a link to the broader internet. These are known as “gateways”. As long as there are a few good gateways in your subnet, you will have internet access. For this reason, subnets do not necessarily need to be very big. They need to be large enough to connect end users in an area to nearby gateways, but that’s it.</p><p>Also, a node can be part of more than one subnet. Most end users will not be part of more than one subnet, but larger nodes that serve end users in more than one subnet will obviously need to be.</p><h3 id="subnet-daos">Subnet DAOs</h3><p>Subnet DAOs are decentralized organizations which are empowered to give out IP addresses in a given subnet, and have the option to collect a continous IP address renewal fee from the nodes using these IP addresses. By default, Althea subnet DAOs run on <a href="https://aragon.one/?ref=blog.althea.net" rel="noopener">Aragon’s DAO framework</a>, which provides interfaces and contract code for subnet organizers to vote on which nodes to give IP addresses, to appoint other subnet organizers, to manage cryptocurrency and cryptoassets held by the subnet DAO, and many other features.</p><p>This system has been designed drawing on our team’s experiences helping run local meshnets. The intended use goes like this: a local group of volunteers, property owners, and entrepreneurs get together to start an Althea subnet in their area.</p><p>This group initializes a subnet DAO and adds the members of their group as organizers. Now they can give out IP addresses to people who want to get on the network. They can charge a small fee to each node as well. The fee is paid in the same cryptocurrency that is used bandwidth payments, probably Eth or DAI. This goes to the subnet DAO, and can be used to pay for promotion, meeting space, or other expenses, as well as rewarding the main organizers of the network in the area.</p><p>This is important, as it’s common for property owners with good node locations not to be the type to go out and promote Althea, and for people who are good at community organizing and promotion to not own property with good node sites.</p><p>Subnet organizers are responsible making sure that users have a good experience on their subnet. This includes helping users get set up, connecting them to hardware installers, making sure they are in range of other nodes, making sure that nodes in the network are behaving reasonably, and stopping attacks on the network.</p><p>If they do not do this well, users will complain, and word might get out that it would be easy, profitable, and good to vote them off the TCR.</p><h3 id="decentralized-quality-assurance-the-global-tcr">Decentralized quality assurance: The global TCR</h3><p>We expect that a lot of the early promotion of Althea will be done by subnet DAO organizers. However, Althea also has a large following of people who find out about it in the media or online, and will need to join a subnet to use the system. For this reason, we need a way to suggest high quality subnets in an area, and to weed out subnets that are providing a bad experience to users.</p><p>The global TCR (or “<a href="https://medium.com/@ilovebagels/token-curated-registries-1-0-61a232f8dac7?ref=blog.althea.net">token curated registry</a>”) lets a decentralized network govern a list of good subnets. The TCR model was pioneered by AdChain and has been adopted by many other projects, such as <a href="https://district0x.io/docs/district0x-whitepaper.pdf?ref=blog.althea.net" rel="noopener">district0x</a>, <a href="https://blog.foam.space/foam-token-curated-registries-for-geographic-points-of-interest-60d3c043f183?ref=blog.althea.net" rel="noopener">FOAM</a>, and <a href="https://blog.joincivil.com/the-civil-registry-a-tcr-for-quality-journalism-a2452f363665?ref=blog.althea.net" rel="noopener">Civil</a>.</p><p>From the <a href="https://altheamesh.com/governance-paper?ref=blog.althea.net" rel="noopener">Althea governance paper</a>:</p><blockquote>Someone starting a subnet DAO can stake any amount of ALGT and be included on this list. Someone who feels that a subnet DAO should not be on the list can put down a matching deposit to initiate a vote to kick them off the list.</blockquote><blockquote>If the subnet DAO being challenged loses the vote (because it is known to be blatantly scammy or provide a very poor experience), then that registry is removed from the list, and its deposit is split between the challenger and the token holders who voted to take it off the list.</blockquote><blockquote>If the challenger loses the vote, then the reverse happens. The challenger’s deposit is split between the token holders who voted to keep the subnet DAO on the list, and the subnet DAO itself.</blockquote><p>Several things can be done with this curated list of good subnets. First, we can use it to populate an online map, or other method for new users to find a subnet in their area to join. Subnets can claim an area of operation. They will then appear to new users entering an address within this area.</p><p>If there are multiple subnets active in an area, they will be ranked by amount staked on the TCR, weighted by the size of their claimed area. Subnets with a larger area will have to stake more to have a higher ranking. This is to prevent very large subnets from being able to easily appear at the top everywhere.</p><p>Subnets with more staked have more to lose if they perform poorly. Subnets who claim to operate in an area outside the area that their intermediary nodes can realistically provide service will generate user complaints and may be kicked off of the list if they perform poorly enough.</p><p>Nodes with standard Althea firmware will not be able to join subnets which are not on the global TCR. This is to stop a bad subnet which is making users unhappy from growing. The organizers could just start another subnet, but it would have to start from scratch and add new users.</p><h3 id="what-if-i-don-t-like-the-global-tcr">What if I don’t like the global TCR?</h3><p>Althea’s code is 100% open source, under the Apache 2.0 license. We make guides and documentation on how to work on the code and flash routers (aka install the Althea OS) a priority. If you don’t like how the global TCR is being run, you can simply modify the software and flash it onto routers and give them out to people. You could make it so that these routers could join any subnet DAO, even if it’s not on the TCR, or even fork the global TCR if you think it could be run better.</p><p>We expect that if the global TCR curation tokens are fairly and widely distributed among people who want to see Althea and incentivized mesh succeed, then the Althea global TCR will be the best way for new users who want cheap, fast broadband internet access to find a local subnet.</p>]]></content:encoded></item>
<item><title>Althea Development Update #49: A stable release schedule and governance</title><link>https://blog.althea.net/althea-development-update--49--a-stable-release-schedule-and-governance/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--49--a-stable-release-schedule-and-governance/</guid><pubDate>Fri, 01 Jun 2018 00:00:00 GMT</pubDate><description>
For the first time we have something ready to put on our releases page.
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>For the first time we have something ready to put on our <a href="https://github.com/althea-mesh/althea-firmware/releases?ref=blog.althea.net" rel="noopener">releases page</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/831c4f1d79c917343744.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Exit selection screen at 192.168.10.1/althea</figcaption></figure><p>As promised for the Alpha 3 release there is now a working exit registration and selection screen, as well as a working wifi settings page.</p><p>This marks our first ‘stable’ release, every two weeks from here on our the latest code will be tested and merged into a new release. In sync with this release existing routers will update from the Althea software package repository.</p><p>Next week we’ll be transitioning our existing users to this new stable release channel and keeping them there from here forward.</p><p>To make the long story short if you’re adventurous you can flash some devices and start an Althea network now. Hook up your neighbor, or just use the system as a convenient whole home proxy.</p><hr><p>We’ve also announced the details of our planned <a href="https://medium.com/althea-mesh/the-althea-governance-model?ref=blog.althea.net">governance system</a>.</p><p>I really think we managed to achieve the goals I outlined in my <a href="https://medium.com/althea-mesh/in-defense-of-the-slim-protocol?ref=blog.althea.net">inaugural medium post</a>. The protocol is left slim and tokens don’t get involved anywhere that they don’t bring meaningful improvements. Finally and most importantly we create a simple way for users to opt out while at the same time providing easy and safe defaults without centralization.</p><hr><p>In other development news features coming up in Alpha 4 include.</p><ul><li>The neighbors webpage working and showing realtime info about your mesh peers.</li><li>A bugfix for potential wireguard tunnel collisions when more than one gateway operates behind on the same NAT (no private data is revealed, on the other hand the connection does stop working).</li><li>An early implementation of full path route verification.</li></ul>]]></content:encoded></item>
<item><title>Althea Development Update #48: Bringing old buildings into the future</title><link>https://blog.althea.net/althea-development-update--48--bringing-old-buildings-into-the-future/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--48--bringing-old-buildings-into-the-future/</guid><pubDate>Sat, 19 May 2018 00:00:00 GMT</pubDate><description>
These last couple of weeks have been an all out code sprint on our way to Alpha 3, productivity is pretty rapid now that the groundwork is…
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>These last couple of weeks have been an all out code sprint on our way to Alpha 3, productivity is pretty rapid now that the groundwork is laid and we’re hitting all but my most optimistic targets.</p><p>The big ticket item for alpha3 is enough user setup to actually get things done without the command line. Here’s the development version of the dashboard, you should find it in a nightly <a href="https://github.com/althea-mesh/althea-firmware%27?ref=blog.althea.net" rel="noopener">firmware</a> in the next couple of days.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/ef3880f7ae6eb5a6b693.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The Althea exit server signup&nbsp;screen</figcaption></figure><p>If you don’t have any OpenWRT capable devices lying around the Linux <a href="https://github.com/althea-mesh/installer?ref=blog.althea.net" rel="noopener">installer</a> is in far better shape than it was just a week ago and should be easy to play around with. It should be as easy as plugging in an RPI and running the Ansible script. As always hit me up @ttk2 in our <a href="https://riot.im/app/?ref=blog.althea.net#/room/#althea:matrix.org" rel="noopener">development chat</a>. Even simple problems are important because they let us know what we need to explain better in our documentation.</p><hr><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/ece5ad78ac7e76c29672.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Portland mesh&nbsp;planning</figcaption></figure><p>Our outreach efforts continue to line up locations for Althea deployments. Deborah has been developing groups in several cities as well as a playbook on how to connect various types of homes.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/88dd3e75a84b788bfaef.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>‘Reverse tower’ strategy for dense&nbsp;housing</figcaption></figure><p>Where internal wiring is unavailable or of low quality a ‘reverse tower’ setup can provide building residents 100mb or greater at a tiny fraction of the cost to rewire the building.</p><p>If buildings have unused phone lines or coaxial cable they can be used to provide short distance gigabit speeds using G.Fast hardware, we’ve been working with a vendor for a solution around $100 per unit.</p><p>Of course for a lot of older buildings the picture of in-wall-copper isn’t so pretty. After snooping around several apartment buildings wiring cabinets. I found that arrangements like the one below are pretty common. This ~600 unit building had at-minimum 100 units on a single unamplified input cable line. With a tree of unpowered splitters per floor, down the hallway, and finally per unit.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/a1a5faa402d40fa24ba3.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Without easily available power trees of signal killing splitters are&nbsp;common</figcaption></figure><p>Units in this building are lucky to get 20mbps out of their cable modems. Each splitter attenuates the signal and without a powered amplifier and modems struggle to compensate with slower encoding and heavy use of slow error correcting.</p><p>After some study and brainstorming I think we could get the whole building to gigabit speeds for less than $200 a unit. By using power adapters in each unit that sent power back up the lines powered splitters could be placed into each box. Reducing signal degradation and allowing each unit to use the full line capacity.</p><p>After that it’s a matter of cutting a few levels off of the tree and dropping in routers per floor or at least per wing to bring the oversale ratio down.</p><p>Installations in single family homes are more a matter of land layout than anything else. It’s all about height and line of sight with none of the tricks you can pull in denser living situations. That being said the lack of having to rent roof space really helps.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/66b7b99901eb71a623e3.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Althea installation for a single family&nbsp;home</figcaption></figure><p>All of these potential mesh groups are a little different, some have backhaul but lack a solid customer group, others are the opposite. Some are municipal internet advocates trying to make local cooperatives. We’ve been working with our contacts to make sure that each of them are successful.</p><hr><p>All this development has led to a few interesting bugs to chase. On the EdgerouterX I’m chasing a bug with <a href="https://wiki.openwrt.org/doc/techref/filesystems?ref=blog.althea.net" rel="noopener">UBIFS</a> where UCI config files become corrupt without a explicit call to ‘sync’. I’m on the verge of just putting a hack into the startup script for this, but I’m going to spend a few more hours trying to track it back to the source.</p><p>In trying to get the Edgerouter Lite working I tracked down a bug in Rust’s generated assembly code the assumption of <a href="https://github.com/rust-lang/rust/issues/50890?ref=blog.althea.net" rel="noopener">hard FPU support </a>seems to be a recurring theme in the cross architecture toolchains they have available.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/77d2f0d50801c4f44744.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>One of these things doesn’t&nbsp;belong</figcaption></figure><p>I also spent about 4 hours hardening the exit installer playbook for what turned out to be a local hardware issue. My Gil.iNet ar750’s wan port started flaking out and producing 70% packet loss at all times, this resulted in me seeing the negotiation packets on each end but not realizing the session was being screwed up by lost packets.</p><p>While there are still plenty of strange bugs floating around we’ve reached the point where the nightlies tend to work more often than they don’t. Putting us well on the way to a truly stable release.</p>]]></content:encoded></item>
<item><title>Althea in rural Oregon</title><link>https://blog.althea.net/althea-in-rural-oregon/</link><guid isPermaLink="true">https://blog.althea.net/althea-in-rural-oregon/</guid><pubDate>Fri, 11 May 2018 12:37:00 GMT</pubDate><description>This article is about a network started by Deborah Simpier, who has been working on incentivized mesh for years, but joined the Althea team a couple months ago. She started this network before joining our team, and was actually Althea’s first user.</description><dc:creator>Deborah Simpier</dc:creator><content:encoded><![CDATA[<p><em><em>This article is about a network started by Deborah Simpier, who has been working on incentivized mesh for years, but joined the Althea team a couple months ago. She started this network before joining our team, and was actually Althea’s first user.</em></em></p><p>Nestled in the dense foliage of fir and alder trees in the Oregon forest, a home built radio tower reaches for the sky. This tower is the novel design of small town computer programmer and tinkerer, Shaun Ripplinger, and was built to test the new incentivized networking software developed by Althea. The Althea system is a novel form of decentralized Internet Service Provider (ISP), with automatic payments and encrypted network traffic. Instead of buying internet from big corporation like Comcast or CenturyLink, communities like Clatskanie, a town with a population of around two thousand, are empowered to start their own neighborhood internet services.</p><p>Here in Clatskanie, there is a small grocery store, one stop light, and everyone knows each other. And, like most other small towns, they suffer from poor broadband access and few choices. In fact, according to the FCC, 39 percent of rural Americans (23 million people) lack access to broadband internet. Community Network enthusiast and head of the Cascadian MeshNet group, Deborah Simpier explains, “Running a small business here, l can see firsthand how this lack of access affects my community and its members. People have to arrange their days around access to the internet, driving into town to use the internet provided at my shop or at the library. Parents arrange their home school schedules to start at five or six in the morning when the satellite internet has no data caps. People struggle to go to online school or keep up with online meetings for work.”</p><p>It is not only the lack of access that concerns members of this small community. The looming threat of the end of net neutrality brings concerns of censorship and throttling to the minds of small business owners like Joann, who has an online store selling live plants and homemade soaps. Joann wonders if online businesses like hers could compete if ISPs make fast lanes only for business that can afford to pay higher fees.</p><p>It is these concerns about the future of the internet and the lack of access that propels the members of this community to look for alternatives beyond the current rigid framework of corporate ISPs. Centralized ISPs have little financial incentive to build costly infrastructure to outlying, sparsely populated areas. With a decentralized model like Althea, however, many nodes add robustness and fluidity to the outlying branches of internet service. This decentralized model not only adds service and choice for those in rural areas, it can add resilience in disaster situations, as members of the network can communicate with each other even if outside internet access is limited.</p><p>Clatskanie’s decentralized internet starts with sector antennas mounted at the computer shop in the center of town then broadcasts internet to linked antennas at nearby homes and businesses. A radio tower high on the hill above town rebroadcasts the signal to residents on the other side.</p><p>Building new internet infrastructure is not without its challenges, however, and traditionally becoming an ISP required a sizeable investment and specialized skills. Althea’s new design tackles these challenges with automatic cryptocurrency payments; secure, encrypted connections; and built-in VPN services that mitigate much of the liability of reselling a connection. It was these improvements to a complicated service that inspired Deborah Simpier and her neighbors to see the possibilities of a decentralized, community based ISP. “What we build here to support our neighbors and uplift our community, we hope will be a model for other cities and even urban areas to follow, “ Deborah says. “We also realize that hardware like radio towers and antennas are not designed for non-professional use, so we are working to build things that are more accessible for the home or business owner.”</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/11/0_O98TI4mEgIKPYXUZ.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>To meet these hardware challenges, members of Cascadian MeshNet have been working on an easy to set up radio tower for line of sight internet they call a Rapidly Deployable Tower System or RDTS. Their first design is a expanding scissor lift, which they have deployed on the top of a wooded hill above town. The radios and router are off-grid, powered by solar, which is a challenge in the rainy climate of the Pacific Northwest. Like many innovative projects, the tower is a work in progress, along with the solar power which suffers many outages in a climate that the Seattleites would find themselves comfortable in.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/11/0_sZJ0cXvxY8gfhHZv-1.jpeg" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Members of this rural community are not thwarted by difficulties though. Like many rural people they value individual and community self-reliance; working together to solve problems. They have installed a number of households with plans to expand further into the underserved areas along the Columbia River and in the heavily forested area of Mist Mountain as they test Althea’s new people-powered internet. If you blink, you might miss this one stoplight town, but if you meander down a forested lane or look up at the houses on main street, you might notice a parabolic dish or an antenna — a symbol of this small communities hope of a better internet.</p>]]></content:encoded></item>
<item><title>Althea Development Update #47: Alpha 2 Milestone</title><link>https://blog.althea.net/althea-development-update--47--alpha-2-milestone/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--47--alpha-2-milestone/</guid><pubDate>Fri, 04 May 2018 00:00:00 GMT</pubDate><description>
I’m proud to announce the alpha 2 milestone for Althea. In Alpha 1 firmware setup was too tightly integrated into the build process to…
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>I’m proud to announce the alpha 2 milestone for Althea. In Alpha 1 firmware setup was too tightly integrated into the build process to provide golden master images.</p><p>Alpha 2 marks that milestone, from here on out nightly firmware releases will be available and when flashed they will auto configure with our test exit and provide internet to you and any other members of a local mesh.</p><p>From here on out it should be pretty straightforward for anyone to flash and play around with Althea. Nightly firmware images and flashing instructions are available on our <a href="https://github.com/althea-mesh/althea-firmware/tree/pre-0.1.0?ref=blog.althea.net" rel="noopener">firmware page</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/159ee15250d0d67abd29.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Articles without pictures are&nbsp;boring</figcaption></figure><h4 id="what-s-new">What’s New</h4><ul><li>Exit autoconfiguration</li><li>User credential autogeneration</li><li>Traffic watching and accounting (it will generate a bill/invoice, but won’t pay it)</li><li>Peer discovery and negotiation of secure peer tunnels</li><li>Usable nightly builds: <a href="https://github.com/althea-mesh/althea-firmware/tree/pre-0.1.0?ref=blog.althea.net" rel="noopener">available here</a></li><li>Ready for full time use by the adventurous</li><li>User interface extensions and improvement</li><li>A real exit signup process</li><li>Load statistics gathering and the requisite opt in/out button.</li><li>Automated exit load balancing client side</li><li>Package updates pushed daily (so you don’t have to reflash the nightly to keep up)</li><li>Everything we think is working but will inevitably end up being actually broken in Alpha 2</li></ul><hr><p>The short term plan is to get Alpha 3 out the door and then try and get as many users as possible online so that we can hash out bugs in parallel to the development of the real billing code. We won’t be actually charging people for service yet, but we will be watching carefully to make sure the accounting is accurate, so that we can deploy real payments with confidence when they are ready.</p><p>For a lot of people I expect Althea will be attractive simply as a whole home VPN solution that just to happens to make it very easy to hook up your neighbor.</p><hr><p>On the more business side of things we’re at EDcon in Toronto this week watching Vitalik <a href="https://www.youtube.com/watch?v=kUheuFDHSvI&amp;feature=youtu.be&amp;ref=blog.althea.net" rel="noopener">dance</a> and meeting up with the local Toronto Mesh group <a href="https://tomesh.net/?ref=blog.althea.net" rel="noopener">TOmesh</a>.</p>]]></content:encoded></item>
<item><title>Althea Development Update #46: User Interface Design</title><link>https://blog.althea.net/althea-development-update--46--user-interface-design/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--46--user-interface-design/</guid><pubDate>Tue, 17 Apr 2018 00:00:00 GMT</pubDate><description>
It’s been an eventful couple of weeks for us.
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>It’s been an eventful couple of weeks for us.</p><p>Our head of outreach Deborah has been organizing local mesh groups in Vancouver BC, Tacoma WA and Portland OR. The biggest challenge is finding good resalable backhaul, it’s a business to business market unused to amateurs. We’re working on making partnerships to simplify that.</p><p>Last week we showed off the off grid tower<a href="https://imgur.com/a/0uKrE?ref=blog.althea.net" rel="noopener"> Cascadian Meshnet </a>has been working on. It survived it’s first storm (~50mph gusts) with <a href="https://imgur.com/a/CRyQF?ref=blog.althea.net" rel="noopener">no damage</a>.</p><figure class="kg-card kg-image-card kg-width-full kg-card-hascaption"><img src="https://blog.althea.net/content/external/f0bc3f23c846e2136146.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Pre-storm photo of the tower. With two air-grid M’s&nbsp;mounted</figcaption></figure><hr><p>On the software side things are coming together for our next major revision. A big feature for this revision is a pretty barebones user interface. It hits all the major points for configuring basic options and seeing what’s going on with the mesh.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/dcb08bb162fd837e7eda.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Payment handling page on the Althea Dashboard</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/c8e0f0a660e6084ff569.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The connection status page on the Althea Dashboard</figcaption></figure><p>A good deal of the work right now is just getting the router to serve the dashboard webpage and then allowing that dashboard webpage to query all the information it needs to present to the user. Feedback on desired options is welcome.</p><p>Our bet on Rust continues to pay off, the current router application has a great runtime footprint, even using fully featured libraries for handling http requests and threads it still only requires 20mb of ram.</p><p>If we could only get that binary size below 2mb it would be perfect. We may yet make that happen using a binary packer or Xargo.</p><p>In general we’re in the integration and polish phase of this release. I’m hoping to be ready to release the next version of Althea’s firmware in a month or so.</p><p>This version will be what I consider to be late Alpha. With all the features required for easy setup and basic use. But no functioning payments.</p><hr><p>The last thing we’ve been working on is supplier relationships. The logistics challenge of buying, flashing, and then shipping out routers is time consuming and somewhat expensive. Our goal is to have a smooth transition to suppliers, who will be better able to handle the logistics challenges of moving hundreds of devices so that we can scale quickly.</p><p>Lots of moving pieces involved in building the infrastructure of the future. But I think we’re staying on top of it ok.</p>]]></content:encoded></item>
<item><title>Althea Development Update #45: Thinking about governance</title><link>https://blog.althea.net/althea-development-update--45--thinking-about-governance/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--45--thinking-about-governance/</guid><pubDate>Sun, 01 Apr 2018 00:00:00 GMT</pubDate><description>
Now that we’ve had stuff in the field for a few weeks we’re rolling back our focus on shipping new users and instead focusing on polishing…
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Now that we’ve had stuff in the field for a few weeks we’re rolling back our focus on shipping new users and instead focusing on polishing our next major revision and including fixes to pitfalls we see affecting our currently live users.</p><p>We’ve had some downtime in Clatskanie trying to use a cheap n600 as the gateway infrastructure, I was curious how it would react under prolonged load. The answer is not well, it’s being swapped with an Edgerouter.</p><p>Sadly it doesn’t look like the n600’s are going to have a very long shelf life. After extensive debugging I have found their performance issues are due to slow context switching on their single core cpu’s. They simply can’t finish decrypting WireGuard packets fast enough.</p><p>We’ve also found some really bizarre WireGuard issues with our Australia test deployment. The backhaul tunnel to the exit server goes on and off every couple of seconds. I think it’s related to packet reordering on the backhaul network if I had to guess. More detailed investigation is in work.</p><p>The Claskine deployment will be working on getting their <a href="https://www.natgeochasinggenius.com/video/3617?ref=blog.althea.net" rel="noopener">off grid tower</a> deployed and linked into the mesh on Wednesday, I hope to get some cool pictures from that to share with you.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/862051b6720ac72e9a7a.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>The (in)famous Clatskanie gateway and some other equipment</figcaption></figure><hr><p><a href="https://medium.com/althea-mesh/in-defense-of-the-slim-protocol?ref=blog.althea.net">Way back when</a> we talked about how promising on chain governance was.</p><p>You may have seen the drafts floating around the Matrix channels, but it’s essentially a pluggable governance architecture where people can create an administrative system for their local mesh group that raises a fund pool for common works and deals with administrating the local mesh. Exactly what the voting rules and such are is up to the users.</p><p>There’s also a global level designed to maintain quality control and direct some funds to the company. Essentially a <a href="https://medium.com/@ilovebagels/token-curated-registries-1-0-61a232f8dac7?ref=blog.althea.net">TCR</a> where you pay to register your deployment for use by our off the shelf devices. It’s a good way to decentralize some of the more closed parts of having a real Althea product on shelves.</p><p>It’s a legitimately difficult task to both plan to generate revenue and ensure that the product is still fair and ‘free’ as in freedom to user. It’s a hard balance and I’m sure some people will be upset no matter how we do it. But I’m happy with the one we’re striking.</p><p>You’ll see a nice summary and a official spec to comment on once we stop editing half of it every week. Or you can find the in-progress version in our Riot dev channel.</p>]]></content:encoded></item>
<item><title>Althea Development Update #44: Picking up steam</title><link>https://blog.althea.net/althea-development-update--44--picking-up-steam/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--44--picking-up-steam/</guid><pubDate>Thu, 15 Mar 2018 00:00:00 GMT</pubDate><description>
Althea now has 4 full time users with more in the immediate pipeline and longer term plans shaping up.
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Althea now has 4 full time users with more in the immediate pipeline and longer term plans shaping up.</p><p>Two are using CPE’s as pictured below for long distance links, of a few yards to a mile. The other two are connected using the 5ghz wifi in the routers themselves, which is performing flawlessly over short distances with only 3 peers.</p><p>These are representative of our two major use cases, high density housing where short distance ‘pure mesh’ is possible and long distance communication using specialized hardware. In an apartment complex for example a home router would be able to resell to adjacent units above and below. Then specialized hardware would be used to reach beyond that.</p><p>The key leverage of mesh technology in Althea is not to create a network without infrastructure, but to create one out of any infrastructure available automatically.</p><hr><p>Keeping up with the influx of new interest is really cutting into development time for me. It’s fortunate we already have one employee up to speed, but as the resident cross compiling and tooling expert our on router tooling and specifically process improvements for new deployments are a high priority for me.</p><p>The faster I can start posting ready-to-use firmware files on our website the quicker users can move to flashing their own routers without my intervention. Which is currently required not because there isn’t automation, but because that automation is too environmentally delicate for a non-expert to setup.</p><p>The router software now has auto setup features to fix this. So it’s a matter of getting it properly integrated into the firmware and our production tooling. We also have the first iteration of our billing software code complete, so it’s undergoing integration testing with the auto setup software.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/72dba30d9bde8010d968.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>A customer antenna about a mile from Deborah’s shop</figcaption></figure><p>One of the big challenges is updating core network software on remote devices in such a way that they will come back online and remain compatible with the rest of the mesh. Since a split-version mesh without interoperability will isolate devices that need the mesh to download the update.</p><p>These catch-22’s require manual human intervention, so we’re going to take even this first update cycle pretty carefully.</p><p>It feels good to be making steady progress. Especially since we keep seeing our engineering decisions pay off.</p>]]></content:encoded></item>
<item><title>Althea Development Update #43: Website refresh, support for more routers</title><link>https://blog.althea.net/althea-development-update--43--website-refresh--support-for-more-routers/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--43--website-refresh--support-for-more-routers/</guid><pubDate>Tue, 27 Feb 2018 00:00:00 GMT</pubDate><description>
Jehan and @scottwxrks have rounded out our website update over the past couple of weeks. We now have a map showing active Althea…
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Jehan and @scottwxrks have rounded out our website update over the past couple of weeks. We now have a map showing active Althea deployments and interested users.</p><p>The goal is to help bring together people who may be interested in using Althea in an area as well as show our expansion as we get some of these locations actually online.</p><p>There’s a margin of error to prevent revealing home address of course, we only take city and zip.</p><p>It’s probably a little premature considering snow and the need for a taller pole has delayed the first few users in Clatskanie and I shipped routers to the other two deployments just today. But I’ll consider deployments with gear on roofs to be ‘active’ for now.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/953935b6e0ac0e6d4706.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><hr><p>In our last update we shipped our <a href="https://medium.com/althea-mesh/althea-development-update-42-serial-number-zero?ref=blog.althea.net">first devices,</a> I had been growing concerned with our dependence on these WD n600’s and n750’s especially as we began to realize some of their performance limitations.</p><p>Using Babel’s excellent in kernel forwarding design even the bargain bin n600 can hit line rate and mesh at 100mbps on several ports. But the encryption overhead for the Wireguard tunnel is non trivial and peters out at about 30mbps. Exactly why is a bit of a performance mystery, there’s about 50% free CPU time but no tuning I can find seems to improve it. Not bad for $16, but there’s untapped potential there.</p><p>What this means right now for Clatskine users is that they can resell to two other homes before they even cut into their own bandwidth.</p><p>In the search for better hardware the firmware builder now has support for the <a href="https://www.gl-inet.com/ar750/?ref=blog.althea.net" rel="noopener">GL-AR750</a>, <a href="https://www.ubnt.com/edgemax/edgerouter-x/?ref=blog.althea.net" rel="noopener">Edgerouter X,</a> and <a href="https://www.ubnt.com/unifi/unifi-ap-ac-lite/?ref=blog.althea.net" rel="noopener">UniFi Lite</a>. The AR750 was disappointing, for $25 it mirrors the performance of the n600’s since they share a chipset. The Edgerouter on the other hand makes a great Althea device, with gigabit speeds on the mesh and about 600mbps over Wireguard. The Lite is somewhat harder to test conclusively with the involvement of WiFi but breaches 200mbps over WireGuard easily enough for me to be unconcerned.</p><p>While the Edgerouter is great for network backbone tasks it’s lack of WiFI eliminate it from the running as an ideal home device. The UniFi lite has the opposite issue, great wifi, but with only one Ethernet port it won’t satisfy power users or have a ‘plug and play’ resale capability.</p><p>The quest for a under $100 device with no performance compromises continues.</p><hr><p>On the software side the billing daemon is coming along nicely. I’ve been working on integrating some more bootstrapping support into it as we try and bridge the gap between the development and testing environment and our real operating platform on the routers.</p><p>WireGuard is once again a major focus of concentration here, by design WireGuard requires out of band key exchange and ip address assignment, in exchange for this you get great speed, simplicity, and other security properties but it’s something of a pain right now to setup a new device.</p><p>Currently a device is flashed with a blank firmware and is then customized by running a shell scrip at first boot. This shell script then drops the required credentials to be sent to the WireGuard server (currently via copy and paste), while this works it complicates the flashing process.</p><p>Making the flashing process simpler is a long term project with the eventual goal of a push button ‘install Althea’ application. While maybe still not end user accessible it would be great if the people setting up Althea on the ground could easily flash devices from the box instead of us having to ship them around.</p>]]></content:encoded></item>
<item><title>Althea Development Update #42: Serial Number Zero</title><link>https://blog.althea.net/althea-development-update--42--serial-number-zero/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--42--serial-number-zero/</guid><pubDate>Sun, 11 Feb 2018 00:00:00 GMT</pubDate><description>
Its been a very busy two weeks since my last update.
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Its been a very busy two weeks since my last update.</p><p>Not only did I get to see the Falcon Heavy finally fly from the cape, but I also finished the Althea alpha firmware.</p><p>Right now OpenWRT devices flashed with Althea firmware using our <a href="https://github.com/jkilpatr/althea-firmware?ref=blog.althea.net" rel="noopener">firmware builder</a> automatically connect to the local Babel mesh network. They then create a secure WireGuard tunnel to exit.altheamesh.com which all internet traffic is put through.</p><p>There’s no extra configuration required beyond connecting the devices to another mesh node by whatever method is available, just plug-in and instant secure internet access.</p><p>Our first devices are WD myNet N600’s a now defunct but reliable and cheaply available fast Ethernet (100 mbps) router. My own tests show that a user can expect to get 30/50 mbps over the mesh, I’m hoping to ratchet it up to line rate with some additional optimizations.</p><p>These devices are packed for transit to Clatskanie Oregon where members of <a href="https://steemit.com/cryptocurrency/@incentivizedmesh/update-on-the-incentivized-mesh-network-or-what-are-we-doing-with-these-antennas-in-the-woods?ref=blog.althea.net" rel="noopener">Cascadian Mesh</a> are wrapping up antenna installation. In this first phase of the deployment 6 users are being installed with taller masts and higher powered antennas. Using this extended line of sight these nodes will form the backbone of a network by reselling internet to their neighbors.</p><p>Chances are we’ll have to swap out these n600’s for faster devices within the year. If the network grows quickly these backbone units will get overloaded. But that’s a good problem to have, especially when you’re being paid to pass traffic.</p><p>Speaking of payment, Rita our billing daemon is taking shape and should be ready to push to these devices by our next update. That will mark our movement from testing basic networking structure into testing billing components.</p><p>Our short term goals focus on two things</p><ul><li>Getting billing and payments finished, tested, and audited</li><li>Making the deployment experience as easy as possible</li></ul>]]></content:encoded></item>
<item><title>Althea Development Update #41: Proving out Rust and Network polish</title><link>https://blog.althea.net/althea-development-update--41--proving-out-rust-and-network-polish/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--41--proving-out-rust-and-network-polish/</guid><pubDate>Tue, 30 Jan 2018 00:00:00 GMT</pubDate><description>
Since our last update we’ve managed to solve our Rust cross compilation issues pretty handily. There’s some binary size optimization that…
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>Since our last update we’ve managed to solve our <a href="https://medium.com/althea-mesh/cross-compiling-complex-rust-programs-for-openwrt-targets?ref=blog.althea.net">Rust cross compilation issues</a> pretty handily. There’s some binary size optimization that remains to be done but everything is functional now.</p><p>Likewise <a href="https://github.com/althea-mesh/althea_rs?ref=blog.althea.net" rel="noopener">Rita</a> our billing daemon continues to evolve rapidly to meet our Alpha milestones.</p><p>My immediate goal this week is to get the MVP firmware routers physically shipped for initial testing, this should coincide with the first major links being tested in Clatskanie OR. I’m quite happy with the firmware at this point, most of what remains is infrastructure setup like update servers and the networking exits.</p><p>There’s also a level of burn in validation, 24 hour packet loss tests etc are important to prove out the reliability people expect from their internet. I’ve found a few issues so far that only show up after multiple hours of uptime. I’m glad to get those solved now and not in the field.</p><hr><p>One of the more interesting things CascadianMesh is working on are off-grid easy to deploy towers. Setting up towers can be one of the more expensive parts of running a WISP or Mesh network, unless you can find and pay for space on an existing building or tower instead.</p><p>In the Clatskanie network map there’s a ridge separating several users. They plan to bridge it with an off grid solar powered rapidly deployable tower of their own design. You’ll be able to read more about it soon on their blog.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/d43385cbb77cdcddacba.jpg" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>CascadianMesh team member Steve Simpier tests expandable tower&nbsp;assembly</figcaption></figure><p>On a more personal note, my last day at Red Hat was last Friday, so I’m now full time on Althea. We will also be bringing on two other software developers in the next month or two bringing us to a total of 4 full time developers to move from Alpha to Beta stages before mid this year.</p><p>There’s a lot to do before we reach Beta status and I’m looking forward to being able to give it my fully attention.</p>]]></content:encoded></item>
<item><title>Cross-compiling Complex Rust Programs for OpenWrt Targets</title><link>https://blog.althea.net/cross-compiling-complex-rust-programs-for-openwrt-targets/</link><guid isPermaLink="true">https://blog.althea.net/cross-compiling-complex-rust-programs-for-openwrt-targets/</guid><pubDate>Tue, 23 Jan 2018 00:00:00 GMT</pubDate><description>
We made Rust our language of choice for Althea because we wanted to have our cake and eat it to. The ability to use a rich ecosystem of…
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>We made Rust our language of choice for Althea because we wanted to have our cake and eat it to. The ability to use a rich ecosystem of existing libraries, have strong guarantees on safety, and small and efficient binaries that could run on our target OpenWrt devices.</p><p>After overcoming several different compilation and size issues we’ve mostly achieved our goal. While Rust binaries are still very big by normal embedded device standards (on the order of 2mb) they are small enough that we can ship full featured applications developed without restrictions and have them run well.</p><p>This guide is about issues with advanced syntax and building more complex crates, if you want to cross compile a simple ‘hello world’ program start with the excellent <a href="https://github.com/japaric/rust-cross?ref=blog.althea.net" rel="noopener">rust-cross</a> guide.</p><hr><h3 id="proc_macro">proc_macro</h3><p>High level abstractions with low level results are littered through out the Rust language. In this example we’ve defined serialization for the base types and then can simply automatically derive it for all objects containing those types.</p><p>#[derive(Debug, Serialize, Deserialize, PartialEq)]<br> &nbsp; &nbsp;struct MyStruct {<br> &nbsp; &nbsp; &nbsp; &nbsp;addr: EthAddress,<br> &nbsp; &nbsp; &nbsp; &nbsp;sig: EthSignature,<br> &nbsp; &nbsp; &nbsp; &nbsp;key: EthPrivateKey<br> &nbsp; &nbsp;}</p><p>This compiles perfectly on normal x86 targets, works perfectly too. Everything seems perfect until:</p><!--kg-card-begin: markdown--><pre><code class="language-bash">[justin@aperturescience.robot serde]$ cargo build --target mips-unknown-linux-musl   
Compiling proc-macro2 v0.2.1   
Compiling serde_test v1.0.27 (file:///home/justin/repos/serde/serde_test)   Compiling quote v0.4.2
error[E0463]: can't find crate for `proc_macro`  --&gt; /home/justin/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-0.2.1/src/lib.rs:27:1   
|27 | extern crate proc_macro;   
| ^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
error: aborting due to previous error
error: Could not compile `proc-macro2`.
warning: build failed, waiting for other jobs to finish...
error: build failed
</code></pre>
<!--kg-card-end: markdown--><p>What is proc_macro and why doesn’t it exist when compiling for targets that aren’t x86? proc_macro is a compiler plugin system. Since Rust allows crates like Serde to provide syntactic sugar that gets turned into actual code the compiler structure has to accommodate code generation from a different source than itself.</p><p>When you go to compile a Rust program with #[derive(Serialize)] or some other property provided by a crate like Serde you’re building a proc_macro crate, these special crates generate a compiler plugin that’s used at compile time to build the code that #[derive(Serialize)] translates to.</p><p>So trying to crosscompile a proc_macro crate doesn’t really make any sense. You only need the plugin to generate code and all of it’s functionality is useless on the cross architecture you’re building for. Therefore Cargo just tells you that this useless version of proc_macro doesn’t exist.</p><p>This is caused by having a specific type of useless dependency. If you’ve tried to extend or define other proc macro traits you may have a <code>extern crate quote</code> and or <code>extern crate syn</code> somewhere that’s no longer needed.</p><p>This can happen if you wrote some derivations that used proc-macro functionality and then re-factored them out without removing the dependency import. Since you aren’t defining anything that actually needs a macro the compiler will let you leave off the required tag in the Cargo.toml.</p><p>Inside of this edge case you will get the above error, it can be corrected by either removing the creates <code>quote</code> and <code>syn</code> if they are no longer needed or properly defining and using a macro in the crate that imports them.</p><p>Big thanks to <a href="https://medium.com/@manishearth?source=post_header_lockup">Manish Goregaokar</a> for helping improve this section of the article.</p><hr><h3 id="linking"><strong>Linking</strong></h3><p>With the proc_macro issue gone we can try again. Only to see this:</p><!--kg-card-begin: markdown--><pre><code class="language-bash">error: linking with `/home/justin/repos/althea-firmware/build/staging_dir/toolchain-mips_24kc_gcc-5.5.0_musl/bin/mips-openwrt-linux-gcc` 
failed: exit code: 1 |  = note: "/home/justin/repos/althea-firmware/build/staging_dir/toolchain-mips_24kc_gcc-5.5.0_musl/bin/mips-openwrt-linux-gcc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-L"
</code></pre>
<!--kg-card-end: markdown--><p>Followed by a horrifyingly large number of libs. But the key line is at the bottom.</p><!--kg-card-begin: markdown--><pre><code>/home/justin/repos/althea_rs/target/mips-unknown-linux-musl/debug/deps/libminiz_sys-9df090e5aeaaf6af.rlib: error adding symbols: File in wrong format
</code></pre>
<!--kg-card-end: markdown--><p>Oh no, an x86 library has found it’s way into our mips linking operation! Cargo was building and linking for the right platform but somehow those flags got ignored for some subset of the libraries.</p><p>Crates like <a href="https://github.com/alexcrichton/cc-rs?ref=blog.althea.net" rel="noopener">cc-rs</a> are used to link external C or C++ libraries into Rust programs at compile time. You might notice that the popular <a href="https://github.com/sfackler/rust-openssl/tree/master/openssl-sys?ref=blog.althea.net" rel="noopener">rust-openssl</a> crate uses this method to link against the system OpenSSL.</p><p>It’s not enough to tell Cargo what to compile for, you must also let cc-rs know that it’s cross compiling and rust-openssl needs to know where the target OpenSSL headers are located.</p><!--kg-card-begin: markdown--><pre><code>#!/bin/bashexport CARGO_TARGET_MIPS_UNKNOWN_LINUX_MUSL_LINKER=/home/justin/repos/althea-firmware/build/staging_dir/toolchain-mips_24kc_gcc-5.5.0_musl/bin/mips-openwrt-linux-gccexport TARGET_CC=/home/justin/repos/althea-firmware/build/staging_dir/toolchain-mips_24kc_gcc-5.5.0_musl/bin/mips-openwrt-linux-gccexport HOST_CC=gccexport MIPS_UNKNOWN_LINUX_MUSL_OPENSSL_DIR=/home/justin/repos/althea-firmware/build/staging_dir/target-mips_24kc_musl/usr/export PKG_CONFIG_ALLOW_CROSS=1cargo build --target mips-unknown-linux-musl --release
</code></pre>
<!--kg-card-end: markdown--><p>Notice how in this build script we not only specify CARGO_TARGET but also TARGET_CC and HOST_CC which are read by cc-rs to determine what to compile for where. Finally we specify the OPENSSL_DIR for our target architecture. This script can be simplified some, but is useful to illustrate all the moving parts clearly.</p><hr><h3 id="building-natively">Building natively</h3><p>Now that we have our binary compiled how do we get it onto a OpenWRT device? The easiest and best integrated way is to build as part of a build system feed using a makefile.</p><p>You can find ours in the <a href="https://github.com/althea-mesh/althea-packages/blob/master/althea/althea-rust-binaries/Makefile?ref=blog.althea.net#L49" rel="noopener">althea-packages</a> repo with the final and most minimal set of flags you need to compile.</p><!--kg-card-begin: markdown--><pre><code class="language-rust">define Build/Compile	
(\		
cd $(PKG_BUILD_DIR) &amp;&amp; \\		
PKG_CONFIG_ALLOW_CROSS=1 \		
OPENSSL_DIR=$(STAGING_DIR)/usr/ \		
RUSTFLAGS="-C linker=$(TARGET_CC)" \		
TARGET=$(RUST_TRIPLE) \		
CC=$(TARGET_CC) \		
CFLAGS="$(TARGET_CFLAGS)" \		
TARGET_CFLAGS="$(TARGET_CFLAGS)" \		
CXX=$(TARGET_CXX) \		
CXXFLAGS="$(TARGET_CXXFLAGS)" \		
TARGET_CXXFLAGS="$(TARGET_CXXFLAGS)" \\		

cargo build --all --release --target $(RUST_TRIPLE) \	
)	$(STRIP) $(RUST_BIN_PATHS)
endef
</code></pre>
<!--kg-card-end: markdown--><p>Be sure to include the binary stripping step and use some of the less invasive options to shrink binary size in <a href="https://lifthrasiir.github.io/rustlog/why-is-a-rust-executable-large.html?ref=blog.althea.net" rel="noopener">this guide</a>.</p><hr><p>We can’t guarantee that these steps will work for all Crates, for example our makefile may need HOST_CC defined if cc-rs required it. But we wanted to document how we managed to get no compromises Rust code onto OpenWRT. Fulfilling the promise of a high level development environment with low level outcomes.</p>]]></content:encoded></item>
<item><title>“New Internets” on Althea</title><link>https://blog.althea.net/-new-internets--on-althea/</link><guid isPermaLink="true">https://blog.althea.net/-new-internets--on-althea/</guid><pubDate>Mon, 15 Jan 2018 00:00:00 GMT</pubDate><description>
Althea is a network that will provide last-mile internet access with an incentivized mesh network where long-range wifi transmitters pay…
</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>Althea is a network that will provide last-mile internet access with an incentivized mesh network where long-range wifi transmitters pay each other for forwarding packets. Read more at <a href="http://www.altheamesh.com/?ref=blog.althea.net" rel="noopener">www.altheamesh.com</a>.</p><p>Althea has a 2-layer model. From the <a href="http://altheamesh.com/documents/whitepaper.pdf?ref=blog.althea.net" rel="noopener">whitepaper</a>:</p><blockquote>The base primitive that Althea is built on is a pay-for-forward network. If all the mechanisms in the preceding sections work correctly, we have a network where nodes can pay each other very granularly for the service of forwarding data, and verify that the forwarding is happening correctly. This section deals with using such a network to provide the one of the most popular network services, internet access.</blockquote><p>Basically, Althea functions a little like the postal service. In the postal system, you pay some money to send a package somewhere. In Althea, you pay some money to send a data packet to a destination on the network.</p><p>In the second layer of Althea, nodes provide services on this network. The most popular service, and the only one we are currently working on, is the service of internet access. This is provided by Althea exit servers.</p><p>A user selects which exit server they would like to use, and then opens an encrypted tunnel with them. The user node pays for packets containing internet requests to be sent to the exit server. The exit server forwards the request on to the public internet using network address translation (NAT).</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/b339e1b46b45f895dbd2.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>When the exit server receives the response, it pays to send it back to the user node originating the request. But where does the exit server get the money to pay? The user node has opened a payment channel with the exit server. This allows it to pay for the data that the exit server is sending back to it as a result of its request.</p><h3 id="accessing-other-networks">Accessing other networks</h3><p>It’s easy to see how this architecture could be extended to support types of exit servers that provide access to other networks. Projects like IPFS, Blockstack, Filecoin and Maidsafe are all working on “<a href="https://en.wikipedia.org/wiki/Overlay_network?ref=blog.althea.net" rel="noopener">overlay networks</a>” which provide new ways to access data that is usually stored on centralized servers run by big corporations. All of these networks can be run over the existing internet, but in the future they aspire to be integrated at a deeper layer.</p><p>By integrating into Althea at the exit server interface, they can provide a more efficient way to access data held in these networks. Normally, a request for data from IPFS might have to go through an exit server, over the internet, to an IPFS node. By building the IPFS node directly into the exit server, this level of indirection can be avoided. It might have direct leased line fiber connections to other IPFS nodes, or other more efficient arrangements. I’m not an expert on IPFS.</p><p>Additionally, IPFS, and most of the other systems listed above have an element of caching. This caching means that if a certain piece of data is requested twice from the same IPFS node, it may be able to serve it directly out of memory or storage the second time. This will increase efficiency, especially in areas which already face challenges getting internet access.</p>]]></content:encoded></item>
<item><title>Althea Development Update #40: proc_macro and the language tradeoff</title><link>https://blog.althea.net/althea-development-update--40--proc-macro-and-the-language-tradeoff/</link><guid isPermaLink="true">https://blog.althea.net/althea-development-update--40--proc-macro-and-the-language-tradeoff/</guid><pubDate>Sun, 14 Jan 2018 00:00:00 GMT</pubDate><description>
I post bi-weekly development updates for Althea, in the past I’ve done this on Reddit but with development ramping up I’ve decided to move…
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>I post bi-weekly development updates for Althea, in the past I’ve done this on <a href="http://reddit.com/r/altheamesh?ref=blog.althea.net" rel="noopener">Reddit</a> but with development ramping up I’ve decided to move them here.</p><hr><p><strong>Alpha Deployment Status</strong></p><p>In our <a href="https://www.reddit.com/r/altheamesh/comments/7ni0fb/development_update_39_putting_together_a_mvp/?ref=blog.althea.net" rel="noopener">last update</a> we hoped to have the minimum viable firmware done to roll out to our Alpha users. Not quite there yet I’m afraid, we spent a lot of the last two weeks trying to raise a seed round and it was exhausting beyond words, although coming to an end now. Our partners in Clatskanie are similarly delayed with network hardware setup by a cavalcade of personal mishaps and bad weather. Overall progress continues and we don’t expect to be too far delayed, we may still hit the end of the month.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.althea.net/content/external/3de634812c3765b08598.png" class="kg-image" alt="" loading="lazy" decoding="async"><figcaption>Shaun Ripplinger of Cascadian MeshNet, constructing a scissor lift&nbsp;tower.</figcaption></figure><hr><p><strong>proc_macro woes</strong></p><p>Althea selected Rust as it’s major implementation language several months ago after a lot of discussion. Other modern languages such as GO, Python, or Javascript would all consume too much memory and disk space pretty rapidly. Especially if we developed by pulling in lots of libraries.</p><p>C and C++ would be both more performant and small enough but lacked modern safety features. There are developers who can write great cryptography and blockchain applications without these safety properties through heroic effort and care. But we would prefer to avoid the risk.</p><p>In comes Rust, a modern compiled language that promises the best of both worlds. The safety of a modern language but the speed and size of C/C++ even when using large libraries.</p><p>Well obviously I’m talking about problems, so what went wrong?</p><p>proc_macro is a very cool part of the Rust language, it allows compile time syntactic sugar to be turned into static and efficient compiled code.</p><!--kg-card-begin: html--><pre>#[derive(Serialize, Deserialize, Debug)]
struct Point {    
  x: i32,    
  y: i32,
}
</pre><!--kg-card-end: html--><p>It’s great when it works, which is all the time on desktop. Sadly for OpenWRT targets we’re getting that new language smell.</p><p><a href="https://github.com/rust-lang/rust/issues/40174?ref=blog.althea.net"><strong>Unable to find crate `proc_macro` on musl target · Issue #40174 · rust-lang/rust</strong></a><br><a href="https://github.com/rust-lang/rust/issues/40174?ref=blog.althea.net"><em>Using procedural derive macros on musl seems to work just fine for the most of the cases, but there is one pitfall; in…</em>github.com</a></p><p>Use of proc_macro is very pervasive because it’s just so darn convenient and great. Working low level magic with almost no developer effort. After evaluating our options we’ve decided to make a serious attempt at fixing this in Rust upstream.</p><p>If that fails we can always just avoid using code that triggers this issue. But it would be really great to live the dream of no compromises embedded development. Even if we have to do some work to get there.</p><p>Big thanks to contributor <a href="https://github.com/drozdziak1?ref=blog.althea.net" rel="noopener">drozdziak1</a> for doing a lot of the investigative work here.</p>]]></content:encoded></item>
<item><title>In defense of the slim protocol</title><link>https://blog.althea.net/in-defense-of-the-slim-protocol/</link><guid isPermaLink="true">https://blog.althea.net/in-defense-of-the-slim-protocol/</guid><pubDate>Tue, 02 Jan 2018 00:00:00 GMT</pubDate><description>
(AKA: we’re not doing an ICO)
</description><dc:creator>Justin Kilpatrick</dc:creator><content:encoded><![CDATA[<p>(AKA: we’re not doing an ICO)</p><h3 id="-why-not-do-a-token-sale-">“Why not do a token sale?”</h3><p>I’ve been asked this question countless times since beginning work on Althea, as have my co-founders. This question became more emphasized, however, when we began our funding stage. As the first question interested investors asked, we realized Althea needed to clarify why our answer to that question is no, we will not be holding a global token sale</p><p>Vitalik wrote an excellent blog post about the ideal valuation for an exchange token <a href="http://vitalik.ca/general/2017/10/17/moe.html?ref=blog.althea.net" rel="noopener">back in October.</a> I strongly suggest you read it, but the point is this: the less general purpose a token is, the shorter its usefulness for users; but for speculators, the longer they hold the token, the higher the price.</p><p>This conflict in goals pushes users to competing protocols or protocol forks as outlined in Teemu Paivinen’s blog post on <a href="https://blog.zeppelin.solutions/thin-protocols-cc872258379f?ref=blog.althea.net" rel="noopener">thin protocols.</a></p><p>For Althea, our focus is providing cheap, fast, free (as in freedom from internet monopolies) internet service to communities globally. As a result, we tried looking at a token sale through the lens of an Althea user, and to the end user, a token sale would need to provide them with something significant that couldn’t have been achieved otherwise.</p><p>The internet is such a universal platform that any attempt to capture significant value would be immediately forked and replaced unless that value was in some way returned to the user.</p><h3 id="what-is-the-value">What is the value?</h3><p>The value to the customer is internet service, delivered well and paid for directly.</p><p>We spent a good deal of time considering the ‘mine for bandwidth’ problem. In principle it’s perfect, it provides a speculative incentive to contribute and encourages even small nodes to participate.</p><p>Unfortunately, it turns out to be inordinately complicated. To prove that useful bandwidth was actually provided on chain, information about the entire mesh needed to make several round trips to the blockchain to complete a single round of payments. Building this technology out is currently not feasible and will not be for many years to come.</p><p>So going back to the end-users, we then realized that they didn’t care if they could ‘mine for bandwidth’. If they can be paid for bandwidth contributions directly, to them, it makes no difference. This meant we could simplify many parts of the system if cryptocurrency became a simple payment. This also means that interest in mining bandwidth wasn’t to provide better service to end users but rather because of the prevailing ‘token first’ thinking.</p><h3 id="incentive-hell">Incentive hell</h3><p>We are big fans of Open Source, because everyone, including the developer and end user win. The Open Source community is one where existing contributors are encouraged to mentor new members in exchange for receiving new contributors and new ways of thinking.</p><p>The technology sector has avoided stagnation because of technologies that have come out of the Open Source community. It gives individuals everywhere the ability to compete with industry giants on equal footing enabling them in some cases to disrupt monopolies that had been in existence for decades.</p><p>Sadly, token projects don’t enable this type of joint community participation. When huge value is delivered by early speculation, developers are not incentivized to develop the code. Instead, they may find their time spent pumping the token or building new token features to wow speculators.</p><p>Issuing a token or asset for a project as it pertains to the project’s functionality, isn’t a flawed idea. The problem comes when huge incentives are given to shoehorn a token sale into projects that then compromise or complicate the core function of the project and impede users.</p><p>There are a few problems in Althea that may be good targets for a token curated registry or some sort of on chain governance model for local mesh groups. But a rushed global ICO would be counterproductive such future measures, putting on chain work before we even knew what a working deployment looks like.</p><p>When everything is a race to issue a token the only winning move is not to play.</p><h3 id="what-does-this-mean-for-althea">What does this mean for Althea?</h3><p>We decided to make Althea a cryptocurrency agnostic platform. Starting out, we will use Ethereum and ERC20 for token support. But as we grow, we will add payment plugins for other cryptocurrency platforms in order of demand. As an open project anyone is free to contribute support for any cryptocurrency into mainline Althea.</p><p>We’ve spent time thinking about what it would take to really decentralize internet service, provide real value communities, and how to align our business model with that.</p><p>This is our plan:</p><ol><li>Create a strong open source community to decentralize development</li><li>Use commodity hardware to reduce costs and increase user freedom</li><li>Run a lean, mean series of auxiliary services</li><li>Phone service and in home support for end customers</li><li>Sell pre-flashed re-branded consumer devices</li><li>Run a trusted exit node (takes a small fee) for these devices</li><li>Provide various information to mesh entrepreneurs about network state and status.</li></ol>]]></content:encoded></item>
<item><title>Althea and net neutrality</title><link>https://blog.althea.net/althea-and-net-neutrality/</link><guid isPermaLink="true">https://blog.althea.net/althea-and-net-neutrality/</guid><pubDate>Sat, 25 Nov 2017 00:00:00 GMT</pubDate><description>
There’s been a lot of talk recently about the FCC’s efforts to get rid of net neutrality. I’d like to take a little bit of time to talk…
</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>There’s been a lot of talk recently about the FCC’s efforts to get rid of net neutrality. I’d like to take a little bit of time to talk about how Althea relates to net neutrality. To recap, net neutrality is a telecommunications regulation that stipulates that ISPs must not prioritize certain traffic within a given tier of service over other traffic in that tier. So, if you have paid the ISP for superfast internet access, they are allowed to prioritize your traffic over people who are only paying for the slow plan.</p><p>What they are not allowed to do is to prioritize traffic going to or from different destinations on the internet. This is to stop them from making Hulu really fast, and Netflix really slow, thus driving Netflix out of business. This would be useful to the ISPs if they owned Hulu, and harmful to consumers if Netflix was actually a much better site. Both of these things are arguably true.</p><p>The root issue here is that in many areas, the big ISPs are the only option. This is what gives them the potential power to unfairly choose winners as in the example above. Althea is designed to bring increased competition into the broadband market by enabling communities to set up their own mesh networks.</p><p>Althea’s payment routing protocols enable each piece of equipment in the network to collect its own payments for providing service. You can think of this as “mining bandwidth”. Since each participant is paid by the protocol to keep their networking equipment in good shape, you don’t need a top-down monopoly to collect the money from subscribers and control the whole network. This is similar to how you don’t need a top-down banking system for Bitcoin to work.</p><p>This payment technology will make mesh networks competitive with the existing ISP monopolies. People will be able to switch away from the monopoly ISPs if net neutrality loses out and they start throttling Netflix in favor of lame-ass Hulu.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/external/c32a5491c48396e19c2c.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>But I hear you asking- “can’t a node in an Althea network go against net neutrality”? Because of Althea’s architecure, it’s actually very difficult for nodes not to be neutral. You can read more in our <a href="http://altheamesh.com/how-it-works?ref=blog.althea.net" rel="noopener">how it works</a> section, but basically, a core part of Althea’s network is the “exit node”. The exit node is chosen by the user and is a lot like their ISP. The key difference is that in Althea, the exit nodes are not owned by the same people who own the physical network. The physical network is owned by the neighbors in a community, while the exit node is run by an exit node company.</p><p>A user’s internet use goes through an encrypted tunnel run by the exit node. This means that the nodes in the physical network cannot spy on the traffic, and they also cannot prioritize Hulu over Netflix. The exit could be non-neutral, but since they do not own the physical network, it’s very easy for the consumer to switch to a different exit node. The decentralized ownership of a Althea networks is a big part of what will keep them neutral and fair.</p>]]></content:encoded></item>
<item><title>Comparison of Althea and RightMesh</title><link>https://blog.althea.net/comparison-of-althea-and-rightmesh/</link><guid isPermaLink="true">https://blog.althea.net/comparison-of-althea-and-rightmesh/</guid><pubDate>Sat, 14 Oct 2017 00:00:00 GMT</pubDate><description>Althea has made many careful design decisions to optimize performance and reduce overhead. In this post we compare Althea to a different incentivized mesh architecture and show how each of these choices impacts the final product.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>We’ve been working on the architecture of Althea for nearly a year now, during that time we’ve made a lot of decisions that define how our network is structured with broad impacts on how it will perform in the real world. This post assumes you have already had a chance to read <a href="http://altheamesh.com/documents/whitepaper.pdf?ref=blog.althea.net">our paper</a> which contains our design for incentivizing mesh routing with cryptocurrency payments. It leverages existing technology, addresses major security concerns adequately and is expected to run on nearly any device, even off-the-shelf consumer routers.</p><p>A few weeks ago <a href="https://www.rightmesh.io/?ref=blog.althea.net">Rightmesh</a>, a cell phone mesh product, published their <a href="https://www.rightmesh.io/wp-content/uploads/2017/07/RightMesh-Technical-Whitepaper1.pdf?ref=blog.althea.net">technical paper</a> which provides an interesting alternative architecture with very different focus from our own.</p><p>In this post we’ll be comparing our products and contrasting different vulnerabilities, performance, and implementation challenges that come inherent to each product. We will also identify several potential problems in both Althea and the version of RightMesh described in their paper and suggest how they could be addressed.</p><p><strong>Principles</strong></p><p>This commentary is somewhat limited by the fact that RightMesh publishes has yet to publish any cryptocurrency-related code on their &nbsp;<a href="https://github.com/rightmesh?ref=blog.althea.net">Github</a>. Unlike Althea, large components of the RightMesh software stack will be closed source. They will publish the cryptocurrency-related components while using a proprietary mesh networking protocol from their parent company <a href="https://left.io/?ref=blog.althea.net">Left</a>.</p><p>We publish our code as we write it. The <a href="https://github.com/althea-mesh?ref=blog.althea.net">Althea Github</a> contains all the code we’ve written and everything you need to build the systems we are using from scratch. We are committed to open source. </p><p>Regardless of our principles, without open source specifications we have to infer the capabilities of Left’s mesh protocol from off-hand claims made by RightMesh about its capabilities. We’ll try and be clear about the assumptions behind our descriptions below, pending feedback from RightMesh. </p><p><strong>Target devices</strong></p><p>Althea’s primary goal is to lower the cost of bandwidth for everyone. To that end we’re very focused on home internet right now. While the mobile space is compelling, we’ve chosen to focus on bringing competition to the more stagnant home internet market first. Our software is designed to be run on Linux-based routers connected to <a href="https://www.ubnt.com/products/?ref=blog.althea.net#airfiber">stationary high-bandwidth wifi transmitters</a>, or runs of cable and fiber.</p><p>On the other side of this decision is RightMesh. RightMesh has chosen to go all-in on smartphone software. Smartphones are not designed to route large amounts of traffic, so this focus naturally shapes the usage of their system. RightMesh is more about allowing dense swarms of cell phones to extend the range of a wifi hotspot or cell tower, while Althea is about changing the economic model of home and office internet service. A swarm of cell phones will be able to extend the range of a cell tower or wifi hotspot by a few hundred feet, while the high-bandwidth networking hardware Althea is designed for gets the internet connection from a data center to an entire town or city.</p><p>It’s this hardware decision that drives the design differences between RightMesh and Althea. A few examples: Phones do not offer much access to the underlying system, and most of the networking code must be rewritten as comparatively inefficient “userspace” code. Routers typically can be programmed from scratch and offer access to the lower levels of the very high performance networking code in the Linux kernel. Phones have omnidirectional antennas which cannot send signals as far in any particular direction, and in dense areas can interfere with each other. Much of RightMesh’s design deals with this fact, and they are forced to reimplement a lot of core networking code. Althea is designed to run on the kind of focused directional wifi beams, wires and fiber that provide internet service today, and will always be the best option for high bandwidth and low latency. Because of this, we’ve been able to leverage an enormous amount of existing, proven, and very fast networking code.</p><p>However, taking a phone-first approach is exciting, because it could bring access to very remote areas or disaster zones where nobody has had a chance or ability to install networking equipment.</p><p><strong>Routing security</strong></p><p>RightMesh uses Left’s proprietary mesh protocol. However, there is not a lot of information about how it works. We do know that it is a hop-count based protocol:</p><p>Currently, RightMesh selects routes based on the least hop count path. At launch, it would be updated such that there is equal weight between the fewest hops and lowest cost.</p><p>They intend to one day add other metrics, such as latency, packet loss, etc. However, no details are given about how this will be accomplished.</p><p>In time, this algorithm would become increasingly complex so that performance of the mesh may be fine tuned for individual users where a best path uses a combination of speed, cost, performance, and even reputation of participating nodes.</p><p>To securely use a metric other than hop count, RightMesh will have to add some kind of verification to their routing protocol. We’ve found this to be one of the more important challenges of incentivized mesh networking, but RightMesh has not shown any techniques to do it. We’ll explain in more depth after a bit about Althea’s routing.</p><p>Althea uses a modified version of the Babel routing protocol. You can find a number of papers about Babel performance and design on <a href="https://www.irif.fr/~jch/software/babel/?ref=blog.althea.net">Juliusz Chroboczek’s website</a>. Babel already supports routing based on packet loss and latency. Babel is also <a href="https://tools.ietf.org/html/rfc7557?ref=blog.althea.net">built to be extended</a>. We’re building a <a href="https://github.com/althea-mesh/babeld?ref=blog.althea.net">Babel extension</a> to route based on price as well, so at launch, Althea will route packets based on the best combination of price, packet loss, and latency.</p><p>Verification is very important in a decentralized context. Without a trusted entity running the entire network, routers cannot count on their neighbors honestly reporting routing metrics. Althea’s verification works quite simply. To learn the quality of all the routes they can service, routers first run a “link quality estimation” with their immediate neighbors. This tests packet loss and latency of the link. This information is gossiped to the network, and routing tables are built by summing the packet loss and latency of every link on a given route.</p><p>Althea opens encrypted tunnels with destinations that it is sending traffic to. Nodes forwarding this traffic cannot read it. Babel then runs a link quality estimation over this tunnel. If this turns out to be different than what the neighbor forwarding the traffic claims for the route quality, this neighbor is deemed to be somewhat less reliable. If this happens enough, the neighbor is not used to forward traffic any more. Additionally, new neighbors are not used to forward a lot of traffic until they have proven themselves to be reliable.</p><p>RightMesh routes based only on hop count. For hop count, they don’t really need verification, because of the way their payment system works. Their black-box routing protocol chooses routes based on the fewest number of hops, and a smart contract pays all the nodes that can prove they were along a path. The only way to spoof this system would be to generate fake hops in an effort to get a larger proportion of the payment, but then you’d be less likely to be chosen by the routing protocol.</p><p>However, hop count is not a very efficient way to route, because you could be choosing to send packets over routes that have few hops, but high latency or packet loss. If RightMesh chooses to use other metrics, they will need to have some way to verify them like Althea does, which their paper makes no mention of. The only other option would be to lean on the proprietary nature of their routing protocol for “security through obscurity”. Perhaps this is what they are counting on. But if there is money at stake, someone will figure out how to crack it, probably sooner rather than later.</p><p><strong>Userspace vs kernel implementation</strong></p><p>A machine’s networking code must handle every single packet the machine forwards, which can easily exceed thousands every second. The closer the routing operations are to the bare hardware the faster they can go. The Linux kernel has been honed over decades to eke out every last bit of performance when forwarding packets. It’s this code that Althea leans on. Althea uses Babel to populate the Linux kernel’s routing table, and the in-kernel encryption module Wireguard to handle all encryption. Because of this, machines using Althea will usually be able to forward packets at “line rate”- as fast as the transmission medium can handle them.</p><p>RightMesh is designed to be run on un-rooted phones, and it uses non-standard proprietary routing and network protocols designed for the “smartphone swarm” scenario they envision. Because of this, all packets forwarded by a RightMesh device will have to be copied out of the kernel, and into “userspace”- an area of the OS where regular apps are allowed to run. All this copying means higher latency, and more memory consumption for lower bandwidth forwarding.</p><p>This isn’t necessarily a bad thing though. While a RightMesh device will be limited in speed by the userspace implementation, most phone’s radios can’t handle high speeds anyway. Getting away from the longstanding patterns of traditional networking code will also let them try new techniques possibly better suited to the smartphone networks they are trying to create.</p><p>A third factor in this choice is that while Althea will carry any kind of internet traffic from any app, the RightMesh SDK will need to be integrated into every app that wants to use their mesh networking. This could hamper adoption, but might also let them sell more SDK licenses. </p><p><strong>Payments</strong></p><p>Both Althea and RightMesh depend on either “super nodes” or “exit nodes” running full Ethereum clients and some mesh specialized software to provide peering for transactions to the blockchain and traffic to the internet. What differs is the amount of operations these elevated nodes are tasked to perform and the amount of reporting to them that is required. </p><p>Althea’s design is based on the principle of <a href="http://altheamesh.com/blog/altheas-multihop-payment-channels/?ref=blog.althea.net">fast payment channels</a> between each hop. Payment for bandwidth is settled before any significant debt can be incurred.. Since the channel payments are so fast and granular, if a node does not pay for service it has received, it can immediately be cut off. This greatly reduces the trust needed in the system.</p><p>New nodes, or previously malicious nodes returning under new identities must work their way up a local trust system starting with very small channel balances and frequent transaction costs. By keeping the maximum cut and run gain smaller than the transaction costs incurred by working up the trust system nodes can be either rationally malicious or irrationally malicious at no great harm to the network.</p><p>Nodes pay each other in a supply chain model, the same as almost anything else that is bought and sold in our society. Alice pays Bob to forward her packets, then Bob pays the next hop slightly less, keeping some of Alice’s payment as profit.</p><p>In RightMesh, all operations of the protocol are on-chain. On any blockchain that exists today, this would make their protocol extremely slow. They introduce the concept of sidechains, which might be able to run their smart contracts more quickly. These sidechains are not specified at all in their paper, but there are several solutions being developed, such as plasma.io and Cosmos. RightMesh will not work until they are finished and deployed.</p><p>Instead of Althea’s supply chain model, RightMesh has sort of an auction model. We’re not going to get into all the ins and outs of this process here, but the important part is that every payment interaction in the protocol is mediated by the blockchain or sidechain. This means that the fastest that any routing decisions can happen is many seconds, if not minutes.</p><p>Because of this, we’ve had to conclude that RightMesh works on kind of a circuit-switched model. Circuit switching is where a single path or set of paths is chosen for a long lived connection. This is the way the old analog telephone system worked. The revolution of the internet was packet switching. Internet routers are able to decide where to send traffic on a packet by packet basis. No central entity needs to know the path that any given packet takes, and any router can choose to send packets on a different route at any time. Also, the request and response packets making up any given connection do not need to take the same path. It’s this fine-grained flexibility that allows the internet to route around damage and congestion without disruption.</p><p>Still, this is probably not an issue for RightMesh’s use case. Supplying internet access from a wifi hotspot to a phone over a few hops does not involve the demands or uptime expectations of a city-level infrastructure network. Their slower, sidechain-mediated model may be sufficient. </p><p><strong>Conclusions</strong></p><p>We expect to see RightMesh’s protocol change a lot as they try to implement it. They’ll need some kind of route quality verification if they want to route based on anything other than hop count, and they could probably speed up their payments by orders of magnitude with payment channel and state channel concepts. All of Althea’s code is fully open source and permissively licensed, and RightMesh is free to make use of our <a href="https://github.com/althea-mesh/babeld?ref=blog.althea.net">Babel extensions</a> and our <a href="https://github.com/jtremback/avocado?ref=blog.althea.net">state channel</a> and <a href="http://altheamesh.com/blog/altheas-multihop-payment-channels/?ref=blog.althea.net">payment channel</a> libraries.</p><p>RightMesh’s marriage to a secret proprietary routing protocol is more concerning. In designing Althea, we found that the networking side of things is much more difficult than managing payments. There are a lot of exploits possible on routing protocols, because almost all routing protocols have been designed for use on friendly networks managed by one entity.</p><p>Proprietary network protocols historically not &nbsp;been successful. The Internet is made up of billions of devices made by tens of thousands of manufacturers and it never could have been built without everyone working together on a standard and open protocol. Especially mesh software, based around cooperation, can not be chained to secrecy. Especially not if RightMesh needs viral growth to fuel the valuation of their token.</p><p>Once these issues are overcome, RightMesh will be complementary to Althea. Internet access can be supplied by Althea’s infrastructure-level networks, and distributed to groups of phones with RightMesh.</p>]]></content:encoded></item>
<item><title>Live demo video</title><link>https://blog.althea.net/live-demo/</link><guid isPermaLink="true">https://blog.althea.net/live-demo/</guid><pubDate>Fri, 06 Oct 2017 00:00:00 GMT</pubDate><description>We’ve been hard at work getting our hardware demo polished. It consists of 10 Raspberry Pi’s, running our extension to the Babel routing protocol that lets it route according to price as well as quality.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>We’ve been hard at work getting our hardware demo polished. It consists of 10 Raspberry Pi’s, running our extension to the Babel routing protocol that lets it route according to price as well as quality. They also have an interface allowing the user to select how much to charge per gigabyte forwarded, and tallying up how much the user has made. When they are all turned on, they create a real live incentivized mesh network. By giving them out to people at talks and events, they can experience what it’s like to participate and compete in an incentivized mesh network. Lower your prices, and you’ll get more traffic. Lower them too much, and you won’t make as much money.</p><p>Check out the video:</p><!--kg-card-begin: html--><iframe width="560" height="315" src="https://www.youtube.com/embed/IyFEYEcHJyA?rel=0" frameborder="0" allowfullscreen="" loading="lazy" title="Embedded video"></iframe><!--kg-card-end: html-->]]></content:encoded></item>
<item><title>Althea&apos;s multihop payment channels</title><link>https://blog.althea.net/altheas-multihop-payment-channels/</link><guid isPermaLink="true">https://blog.althea.net/altheas-multihop-payment-channels/</guid><pubDate>Sun, 10 Sep 2017 00:00:00 GMT</pubDate><description>Althea&apos;s payment channels are key to how it works, but they are also one of the simpler parts to implement and explain. Payment channels allow payments to be made with a minimum of overhead. In the simple case, a payment can be made between two neighbors in the network with only one packet.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>This is an article about our payment channel library, <a href="https://github.com/althea-mesh/guac?ref=blog.althea.net">Guac</a> on github.</p><p>Althea's payment channels are key to how it works, but they are also one of the simpler parts to implement and explain. Payment channels allow payments to be made with a minimum of overhead. In the simple case, a payment can be made between two neighbors in the network with only one packet. The catch is that the neighbors need to have deposited money into the a payment channel contract beforehand to "open the channel". However, channels can also be chained together using something called a "hashlock" to allow nodes to transact trustlessly over linked payment channels, without needing to be directly linked by a channel.</p><p>There are already several channel implementations for Ethereum. The best-known one is Raiden. We found Raiden to be very monolithic and tied to a large Python offchain codebase. We cannot use Python on our routers. We need to use a language suited to embedded device programming, so we are using Rust (however, this blog post is only about the Solidity contract). Raiden also includes a lot of functionality we don't need, and is very complex in general. For example, they implement their own Merkel tree in Solidity. Maybe the complexity is warranted because it's intended to be a payment channel for every use case. Our application has relatively simple needs and payment channels are a concept that is well understood, so we decided it would be more expedient to use our own simple solution. </p><p>There's also Machinomy. Machinomy is pretty clean, but it is a unidirectional channel. This means that money can only ever flow in one direction. You could set up two unidirectional channels, but this is still not as good as a bidirectional channel. To illustrate why, let's say Alice and Bob have both put 100 Ether in a bidirectional channel. If Alice sends Bob 100 Ether, and then Bob sends Alice 100 Ether, the channel will be back in the state it started at and ready to be used some more. If instead there are 2 unidirectional channels, then both participants sending each other 100 Ether over their 2 channels will result in both channels being exhausted. New channels will then need to be created, resulting in more blockchain transaction fees and waiting for confirmations. You could get into some stuff like letting unidirectional channels refill each other, but this is more complex than a bidirectional channel.</p><p>We developed the theory underlying our payment channels based on some of Zack Hess's work back in 2015. You can read an explanation of the theory <a href="https://blog.althea.net/universal-payment-channels">here</a>. For this blog post I'm going to be focusing specifically on the Solidity payment channel contract in the current implementation of Althea.</p><p>This code has not been audited, and may have obvious or subtle exploits that we are not aware of. Don't just copy and paste this and put a lot of money in it. If you do see an issue, let us know because we will gladly update this blog post to credit you and discuss the vulnerability.</p><h2 id="imports">Imports</h2><!--kg-card-begin: markdown--><pre><code>pragma solidity ^0.4.11; 
import "./ECVerify.sol"; 
import "zeppelin-solidity/contracts/token/MintableToken.sol"; 
</code></pre>
<!--kg-card-end: markdown--><p>First, we import a couple of other contracts. <code>./ECVerify.sol</code> is a piece of code written by Alex Beregszaszi (@axic). The type of signatures used by Ethereum normally consist of 3 values, <code>R</code>, <code>S</code>, and <code>V</code>. ECVerify takes a byte array which consists of these three values concatenated. This keeps us from having to pass around 3 extra variables all over the place (the EVM can have issues with too many local variables) and is just cleaner. It also smoothes out some other quirks in the Ethereum signature scheme which are too ridiculous to get into.</p><p><code>MintableToken.sol</code> is an ERC20 token contract provided by Open Zeppelin. It's probably more secure than if we were to try to make our own ERC20 token. None of the stuff in this contract deals with the ERC20 token functionality much, so we could probably plug in lots of different ERC20 variations if we wanted to.</p><h2 id="data-structures">Data structures</h2><pre><code>contract PaymentChannels is ECVerify, MintableToken {     

struct Channel {         
    bytes32 channelId;         
    address address0;         
    address address1;         
    uint256 totalBalance;

    uint256 balance0;
    uint256 balance1;
    bytes hashlocks;
    uint256 sequenceNumber;

    uint256 settlingPeriodLength;
    bool settlingPeriodStarted;
    uint256 settlingPeriodEnd;
    bool closed;
}

mapping (bytes32 =&gt; Channel) public channels;
mapping (bytes32 =&gt; bool) seenPreimage;</code></pre><p>Now we get into the actual contract. We inherit from the other contracts we imported above, so that we can use their functionalities. We also declare the channel data structure:</p><ul><li><code>channelID</code> is a unique identifier for the channel.</li><li><code>address0</code> and address1 are the two Ethereum addresses that will be transacting over the channel.</li><li><code>totalBalance</code> is the total amount of money that both participants are putting in the channel. It needs to be the sum of balance0 and balance1</li><li><code>balance0</code> and balance1 are the amounts that address0 and address1 are putting in the channel.</li><li><code>hashlocks</code> is a byte array encoding any hashlocks that are active in the channel. There's parsing logic later in the contract that parses the hashlocks out of the byte array, since passing arrays of structs is not currently supported by Solidity.</li><li><code>sequenceNumber</code> is incremented with every channel update transaction, allowing this contract to only honor the latest valid update.</li><li><code>settlingPeriodLength</code> is the amount of time after a channel's settling period has started that must elapse before the channel can be closed and the money can be taken out.</li><li><code>settlingPeriodStarted</code>: whether the channel's settling period has started.</li><li><code>closed</code>: whether the channel has been closed.</li><li><code>settlingPeriodEnd</code> is the block height after which the channel can be closed.</li></ul><p>We also declare 2 mappings. <code>channels</code> is for storing channels that have been created with the contract. <code>seenPreimage</code> is a mapping of hashes that records whether the contract has already been shown the preimage of the hash. This is used to implement the hashlocks. Making it global allows the reveal of one preimage to unlock hashlocked funds in several different channels, and uses less storage space. </p><h2 id="modifiers">Modifiers</h2><p>Next come the modifiers. They are not declared with the <code>modifier</code> keyword, because for some reason it causes the Solidity compiler to complain about too many local variables. However, they have the exact same effect as modifiers when they are declared as functions and called at the top of a function body.</p><h3 id="lifecycle-modifiers">Lifecycle modifiers</h3><p>These deal with the various lifecycle phases of the channel. This is to prevent functions getting called in phases of the lifecycle they are not allowed.</p><!--kg-card-begin: markdown--><pre><code>function channelDoesNotExist (bytes32 _channelId) {
  require(channels[channelId].channelId != channelId); 
}

function channelExists (bytes32 _channelId) {
  require(channels[channelId].channelId == channelId); 
}

function channelSettlingPeriodStarted (bytes32 _channelId) {
  require(channels[_channelId].settlingPeriodStarted); 
}
  
function channelSettlingPeriodNotStarted (bytes32 _channelId) {       
  require(!channels[_channelId].settlingPeriodStarted); 
}

function channelIsNotClosed (bytes32 _channelId) {       
  require(!channels[_channelId].closed); 
}

function channelIsSettled (bytes32 _channelId) {     
  require(
    channels[_channelId].settlingPeriodStarted &amp;&amp; // If the settling period has   started         
    block.number &gt;= channels[_channelId].settlingPeriodEnd // And ended     
  ); 
}

function channelIsNotSettled (bytes32 _channelId) {     
  require(!( // Negate the below
    channels[_channelId].settlingPeriodStarted &amp;&amp; // If the settling period is started         
    block.number &gt;= channels[_channelId].settlingPeriodEnd // And ended     
  )); 
}
</code></pre>
<!--kg-card-end: markdown--><h3 id="state-validity-modifiers">State validity modifiers</h3><p>These deal with making sure that state updates are valid. For a state update to be accepted, the new balances have to equal the total that was put in the channel, and it has to have the highest sequence number of all the updates that have been submitted.</p><!--kg-card-begin: markdown--><pre><code>function balancesEqualTotal (bytes32 channelId, uint256 balance0, uint256 balance1) {     
  require(balance0.add(_balance1) == channels[_channelId].totalBalance); 
}

function sequenceNumberIsHighest (bytes32 channelId, uint256 sequenceNumber) {
  require(_sequenceNumber &gt; channels[_channelId].sequenceNumber); 
}
</code></pre>
<!--kg-card-end: markdown--><h3 id="signature-modifiers">Signature modifiers</h3><p>These check that the signatures submitted with function calls are correct. Some functions need signatures from both participants, and some only need signatures from one. Some functions only need one specific signature.</p><!--kg-card-begin: markdown--><pre><code>function signedByBoth (bytes32 fingerprint, bytes signature0, bytes signature1, address address0, address address1 ) { 
 require(ecverify(fingerprint, signature0, address0) &amp;&amp; ecverify(fingerprint, signature1, _address1) ); }

function signedByOne (bytes32 fingerprint, bytes signature, address address0, address address1 ) {
 require( ecverify(fingerprint, signature, address0) || ecverify(fingerprint, signature, address1) ); 
}
</code></pre>
<!--kg-card-end: markdown--><h2 id="erc20-balance-adjustment">ERC20 balance adjustment</h2><!--kg-card-begin: markdown--><pre><code>function incrementBalance(address addr, uint value) internal {
  balances[_addr] = balances[addr].add(value); 
}

function decrementBalance(address addr, uint value) internal {
  balances[_addr] = balances[addr].sub(value); 
}
</code></pre>
<!--kg-card-end: markdown--><p>These functions increment and decrement the ERC20 balances. These could be used to create money out of thin air, so they must be handled carefully. They are used to put money into channels and take it out. It might have been possible to give each channel its own address in the ERC20 <code>balances</code> mapping to avoid doing this, but it would have had a lot more complexity and moving parts. The safe math functions (<code>.add</code> and <code>.sub</code>) supplied by the Zeppelin framework prevent any issues like balances going lower than 0.</p><h2 id="creating-a-channel">Creating a channel</h2><pre><code>function newChannel(     bytes32 _channelId,
address _address0,
address _address1,

uint256 _balance0,
uint256 _balance1,

uint256 _settlingPeriodLength,

bytes _signature0,
bytes _signature1
) {     channelDoesNotExist(channelId);     bytes32 fingerprint = sha3(         "newChannel",         channelId,
_address0,
    _address1,

    _balance0,
    _balance1,

    _settlingPeriodLength
);

signedByBoth(
    fingerprint,
    _signature0,
    _signature1,
    _address0,
    _address1
);

decrementBalance(_address0, _balance0);
decrementBalance(_address1, _balance1);

channels[_channelId] = Channel(
    _channelId,                  // bytes32 channelId;
    _address0,                   // address address0;
    _address1,                   // address address1;
    _balance0.add(_balance1),    // uint256 totalBalance;

    _balance0,                   // uint256 balance0;
    _balance1,                   // uint256 balance1;
    new bytes(0),                // bytes hashlocks
    0,                           // uint256 sequenceNumber;

    _settlingPeriodLength,       // uint256 settlingPeriodLength;
    false,                       // bool settlingPeriodStarted;
    0,                           // uint256 settlingPeriodEnd;
    false                        // bool closed;

);</code></pre><p>To create a new channel, someone needs to call <code>newChannel()</code> with the signatures of both participants. We first check that a channel with that <code>channelId</code> does not already exist. Then we check the signatures and attempt to withdraw the money from the accounts of both participants. Finally, we create a record of the channel.</p><h2 id="updating-channel-state">Updating channel state</h2><p></p><pre><code>function updateState(     bytes32 channelId,     uint256 sequenceNumber,
uint256 _balance0,
uint256 _balance1,

bytes _hashlocks,

bytes _signature0,
bytes _signature1
) {     channelExists(channelId);     channelIsNotSettled(channelId);     channelIsNotClosed(channelId);     sequenceNumberIsHighest(channelId, _sequenceNumber);
bytes32 fingerprint = sha3(
    "updateState",
    _channelId,
    _sequenceNumber,
    _balance0,
    _balance1,
    _hashlocks
);

signedByBoth(
    fingerprint,
    _signature0,
    _signature1,
    channels[_channelId].address0,
    channels[_channelId].address1
);

updateStateInternal(
    _channelId,
    _sequenceNumber,

    _balance0,
    _balance1,

    _hashlocks
);
}

function updateStateInternal (     bytes32 channelId,     uint256 sequenceNumber,
uint256 _balance0,
uint256 _balance1,

bytes _hashlocks
)     internal {     channels[channelId].sequenceNumber = sequenceNumber;     channels[channelId].balance0 = balance0;     channels[channelId].balance1 = balance1;     channels[channelId].hashlocks = hashlocks; } `
</code></pre><p>To pay each other, participants send payments in the form of channel updates that can be passed into this function. We check that the channel exists, that it is not settled, that it is not closed, and that the sequence number of this update is the highest of any received. We then check that all the arguments were signed by both participants. We've broken the actual update logic out into <code>updateStateInternal</code>, because it is called by other functions in the contract. You might notice that we don't check here if the amounts are correct. Someone could submit an update where the balances exceed the total that was put into the channel. We check the balances later, when the channel is closed, after all the hashlocks have been added up.</p><h2 id="state-update-bounties">State update bounties</h2><p></p><pre><code>function updateStateWithBounty(     bytes32 channelId,     uint256 sequenceNumber,
uint256 _balance0,
uint256 _balance1,

bytes _hashlocks,

bytes _signature0,
bytes _signature1,

uint256 _bountyAmount,
bytes _bountySignature
) {     channelSettlingPeriodStarted(_channelId);
bytes32 fingerprint = sha3(
    "updateStateWithBounty",
    _channelId,
    _sequenceNumber,
    _balance0,
    _balance1,
    _hashlocks,
    _signature0,
    _signature1,
    _bountyAmount
);

address bountyPayer = ecrecovery(fingerprint, _bountySignature);

decrementBalance(bountyPayer, _bountyAmount);
incrementBalance(msg.sender, _bountyAmount);

updateState(
    _channelId,
    _sequenceNumber,

    _balance0,
    _balance1,

    _hashlocks,

    _signature0,
    _signature1
);
}</code></pre><p><code>updateStateWithBounty()</code> allows channel participants to incentivize third parties to protect against cheating. Remember, the settling period gives anyone a chance to submit a signed update that has a higher sequence number than the currently accepted update. This prevents dishonest participants from submitting old updates where they have a higher balance. However, someone needs to be online to check whether the settling period has been started with an old update. This function allows the participants to reward someone who is online and stops them from being cheated. The participant simply sends the third party the state update and signatures and their signature on those values and a bounty amount. The third party can now watch the blockchain for an attempt to start the settling period with an old update. If it sees this, it can submit the correct update and collect the bounty.</p><h2 id="submitting-preimages">Submitting preimages</h2><pre><code>function submitPreimage (     bytes32 hashed,     bytes32 preimage ) {     require(hashed == sha3(preimage));     seenPreimage[_hashed] = true; }
function submitPreimages (     bytes pairs ) {     bytes32 hashed;     bytes32 preimage;
for (uint256 i = 0; i &lt; pairs.length; i += 64) {
    uint256 hashedOffset = i + 32;
    uint256 preimageOffset = i + 64;

    assembly {
        hashed := mload(add(pairs, hashedOffset))
        preimage := mload(add(pairs, preimageOffset))
    }

    submitPreimage(hashed, preimage);
}}
                                     </code></pre><p>As you will soon see, Guac's hashlocks follow a simple rule: if anyone has submitted the preimage of the hash, the associated money is unlocked. These functions are for submitting preimages. Preimages are not associated with any one channel. This makes the contract simpler, as well as allowing the reveal of a preimage motivated by money locked in any one particular channel to unlock the money in all the channels participating in that multihop transaction.</p><h2 id="starting-the-settling-period">Starting the settling period</h2><pre><code>function startSettlingPeriod (     bytes32 channelId,     bytes signature ) {     channelExists(channelId);     channelSettlingPeriodNotStarted(channelId);
bytes32 fingerprint = sha3(
    "startSettlingPeriod",
    _channelId
);

signedByOne(
    fingerprint,
    _signature,
    channels[_channelId].address0,
    channels[_channelId].address1
);

channels[_channelId].settlingPeriodStarted = true;
channels[_channelId].settlingPeriodEnd = block.number + channels[_channelId].settlingPeriodLength;
}</code></pre><p>This only happens when one participant wants to close the channel without the participation of the other. After the settling period is over, the channel can be closed and the money can be taken out. We check that the channel exists and that the settling period has not already been started. We then check for a signature from one of the channel participants, and set <code>settlingPeriodStarted</code> to true and settlingPeriodEnd to the current block plus the settling period length.</p><h2 id="closing-the-channel">Closing the channel</h2><pre><code>function closeChannel (     bytes32 channelId ) {     channelExists(channelId);     channelIsSettled(channelId);     channelIsNotClosed(channelId);
closeChannelInternal(_channelId);
}</code></pre><p>If the channel is settled and has not yet been closed, it can be closed. This checks if the channel is settled and has not already been closed, then calls <code>closeChannelInternal()</code>, which contains the real business logic.</p><h2 id="skipping-the-settling-period">Skipping the settling period</h2><pre><code>function closeChannelFast (     bytes32 _channelId,
uint256 _sequenceNumber,
uint256 _balance0,
uint256 _balance1,
bytes _hashlocks,

bytes _signature0,
bytes _signature1
) {     channelExists(channelId);     sequenceNumberIsHighest(channelId, _sequenceNumber);

bytes32 fingerprint = sha3(
    "closeChannelFast",
    _channelId,
    _sequenceNumber,
    _balance0,
    _balance1,
    _hashlocks
);

signedByBoth(
    fingerprint,
    _signature0,
    _signature1,
    channels[_channelId].address0,
    channels[_channelId].address1
);

updateStateInternal(
    _channelId,
    _sequenceNumber,
    _balance0,
    _balance1,
    _hashlocks
);

closeChannelInternal(_channelId);
}</code></pre><p>If both participants agree to close the channel, they can skip the settling period with <code>closeChannelFast()</code>. They include the final state of the channel, and this function both applies the final update and closes the channel.</p><h2 id="channel-closing-business-logic-js">Channel closing business logic`js </h2><pre><code>function closeChannelInternal (     bytes32 _channelId )     internal {     channels[_channelId].closed = true;
int256 adjustment = getHashlockAdjustment(channels[_channelId].hashlocks);

uint256 balance0;
uint256 balance1;
(balance0, balance1) = applyHashlockAdjustment(
    _channelId,
    channels[_channelId].balance0,
    channels[_channelId].balance1,
    adjustment
);

incrementBalance(channels[_channelId].address0, balance0);
incrementBalance(channels[_channelId].address1, balance1);
}</code></pre><p>This is the real meat of the payment channel logic. It figures out how much money to transfer back to each participant, while taking hashlocks into account. First, <code>closed</code> is set to true. Then the amount of all the hashlocks is calculated by <code>getHashlockAdjustment()</code>, and applied to the balances by <code>applyHashlockAdjustment()</code>. Then the balances of the participants are incremented by the proper amounts, releasing the money from the channel.</p><h3 id="calculating-hashlocks">Calculating hashlocks</h3><p>`js </p><pre><code>function getHashlockAdjustment (     bytes _hashlocks )      internal     returns (int256) {     bytes32 hashed;     int256 adjustment;     int256 totalAdjustment;

for (uint256 i = 0; i &lt; _hashlocks.length; i += 64) {
    uint256 hashedOffset = i + 32;
    uint256 adjustmentOffset = i + 64;

    assembly {
        hashed := mload(add(_hashlocks, hashedOffset))
        adjustment := mload(add(_hashlocks, adjustmentOffset))
    }

    if (seenPreimage[hashed]) {
        totalAdjustment += adjustment;
    }
}

return totalAdjustment;
                                          }</code></pre><!--kg-card-begin: markdown--><p><code>getHashlockAdjustment()</code> calculates what effect the hashlocks in the last update have on the balances. We loop through and parse hashes and adjustments out of the hashlock array. There is a  <code>totalAdjustment</code> that is added to if the preimage for the hash corresponding to a given hashlock's adjustment has been seen. Putting all the hashlocks in an array like this lets us easily sign them all. This way of doing things does have a limit: you can only submit about 100-120 hashlocks before running out of gas (at least on our testing framework). However if it is necessary, large hubs processing a lot of transactions could have several parallel payment channels.</p>
<!--kg-card-end: markdown--><h3 id="applying-hashlocks">Applying hashlocks</h3><pre><code>function applyHashlockAdjustment (     bytes32 channelId,     uint256 currentBalance0,     uint256 currentBalance1,     int256 totalAdjustment )     internal     returns (uint256, uint256) {     uint256 balance0;     uint256 balance1;
if (_totalAdjustment &gt; 0) {
    balance0 = _currentBalance0.add(uint256(_totalAdjustment));
    balance1 = _currentBalance1.sub(uint256(_totalAdjustment));
}

if (_totalAdjustment &lt; 0) {
    balance0 = _currentBalance0.sub(uint256(-_totalAdjustment));
    balance1 = _currentBalance1.add(uint256(-_totalAdjustment));
}

if (_totalAdjustment == 0) {
    balance0 = _currentBalance0;
    balance1 = _currentBalance1;
}

balancesEqualTotal(_channelId, balance0, balance1);
return (balance0, balance1);
}</code></pre><p>A hashlock's adjustment, and by extension the summed <code>totalAdjustment</code> of all valid hashlocks, is a signed integer that is added to <code>balance0</code> and subtracted from <code>balance1</code>. Because of peculiarities in Solidity's number types, it seemed safer and clearer to handle the case of negative and positive adjustments separately. A positive adjustment is straight forward. We cast it to an unsigned integer and do the math. However, when the adjustment is negative casting in Solidity doesn't work correctly. So we invert the sign to ensure that the number is positive and also subtract from balance0 instead of adding and vice versa for balance1. We then check that the balances still equal the total amount that was placed into the channel at the beginning and return the new balances.</p>]]></content:encoded></item>
<item><title>Battlemesh talk</title><link>https://blog.althea.net/battlemesh-talk/</link><guid isPermaLink="true">https://blog.althea.net/battlemesh-talk/</guid><pubDate>Fri, 25 Aug 2017 00:00:00 GMT</pubDate><description>Just realized that I forgot to post my talk from Battlemesh. Here it is:</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>Just realized that I forgot to post my talk from Battlemesh. <a href="https://www.youtube.com/watch?v=f21KCNw7EWw&amp;ref=blog.althea.net">Here it is</a>.</p>]]></content:encoded></item>
<item><title>Development Roadmap</title><link>https://blog.althea.net/development-roadmap/</link><guid isPermaLink="true">https://blog.althea.net/development-roadmap/</guid><pubDate>Thu, 29 Jun 2017 00:00:00 GMT</pubDate><description>We are developing Althea incrementally over several stages. The first couple stages are not anywhere near the full capabilities that Althea will have. They are not even mesh networks. However, developing software in an incremental manner lets us test and prove out various elements of the system cont</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>We are developing Althea incrementally over several stages. The first couple stages are not anywhere near the full capabilities that Althea will have. They are not even mesh networks. However, developing software in an incremental manner lets us test and prove out various elements of the system continously. Most development is happening in the <a href="https://github.com/althea-mesh/physical-node?ref=blog.althea.net">physical-node</a> and <a href="https://github.com/althea-mesh/exit-node?ref=blog.althea.net">exit-node</a> repos. These repos will also pull in various daemons that we are creating to run the network.</p><p><strong>Exit node to user node tunnel:</strong> The exit node is basically a VPN server, and the physical node uses the VPN for internet access. Users of physical nodes can select an exit node to use and access the internet over a secure tunnel without having to mess with VPN clients on their personal devices. This does not have much to do with incentivized mesh yet, but it forms a base of security and privacy. It can also be useful for people who don't want ISPs selling their browsing history and don't mind setting up a VPN server themselves.</p><p><strong>Metering and payments: (under development)</strong> The physical node and the exit node both keep track of how much traffic has been sent over the tunnel, and the physical node automatically pays for the traffic. This lets us start to build infrastructure around metering traffic, paying for it, and cutting off service in the case of non-payment. It can also be useful for people who want to set up VPN servers and charge others for the service.</p><p><strong>Unverified mesh:</strong> Several physical nodes can form a mesh network, which routes traffic to one or more exit nodes, over the best and cheapest paths. Physical nodes meter traffic forwarded for their neighbors, and charge each other for it. This remains vulnerable to low-level attacks on the routing protocol, but will allow us to test the network in a controlled real-world environment, giving users internet access, and receiving payment.</p><p><strong>Verified mesh:</strong> Physical nodes constantly test the routing metrics advertised by their neighbors, allowing them to verify the quality of the routes, and building a "local reputation" database about their neighbors. This starts to open the network up to secure participation by a wider range of operators, allowing it to grow quickly. Physical nodes still can't be that mobile though, because they need to open channels and verify the routes of other nodes they are paying to forward.</p><p><strong>Future evolution...:</strong> The "Verified mesh" stage proves out the basic concept. But there's still a lot of work beyond that, some of which is not yet covered even in the white paper: &nbsp; - Rigorous security testing. &nbsp; - Multihop channels: Using hashlock techniques, nodes could transfer payments to their neighbors over a network of multihop channels, allowing them to move to a new physical location without waiting for a channel to open to pay for a connection to their new neighbors. &nbsp; - Transitive reputation: Nodes could also get information on the accuracy of new neighbors from other nodes that they trust on some level. This will also enable mobility. &nbsp; - On-device user node: Build a stripped down "physical node" app for laptops and mobile devices. This will allow users to pay for traffic and roam without carrying a physical OpenWRT node with them.</p><h2 id="how-to-help">How to help</h2><p>Building this system out requires a large range of skills:</p><ul><li>Linux networking: Obviously a big part of the system.</li><li>Cryptocurrency: We'll be using pretty basic payment channels to start out, so it's not like we need a huge amount of consensus and blockchain wonkery at first. However, the choices we make early on will have big effects, since the space is changing raidly. Multihop channels and transitive reputation will require a bit more expertise later on.</li><li>Frontend design and development: The concept of paying per kilobyte on a cryptocurrency mesh network will be unfamiliar to most people. We'll need intuitive UX/UI design and solid cross-platform frontend code.</li></ul><p>If you want to help, or just say hi, introduce yourself in our <a href="https://riot.im/app/?ref=blog.althea.net#/room/#althea:matrix.org">Matrix chat</a></p>]]></content:encoded></item>
<item><title>Battlemesh</title><link>https://blog.althea.net/battlemesh/</link><guid isPermaLink="true">https://blog.althea.net/battlemesh/</guid><pubDate>Mon, 19 Jun 2017 00:00:00 GMT</pubDate><description>Last week I went to Battlemesh in Vienna. Battlemesh is a conference and competition that is held in a different location in Europe about once a year. Its original purpose is to test all the routing protocols against each other, hence \battle\. It&apos;s evolved into a great meeting of community network </description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>Last week I went to Battlemesh in Vienna. Battlemesh is a conference and competition that is held in a different location in Europe about once a year. Its original purpose is to test all the routing protocols against each other, hence "battle". It's evolved into a great meeting of community network activists and enthusiasts from around Europe and around the world. In addition to the setup of the testbed, there are talks going on all week. I presented Althea there, you can see the video <a href="https://www.youtube.com/watch?v=f21KCNw7EWw&amp;list=PL3bvPCw5QCLJ-VJPamVeQx-UPNBVyaopj&amp;index=4&amp;ab_channel=AdjyLeak&amp;ref=blog.althea.net">here</a>. I was hoping for a lot of tough questions after the talk, but I got a lot of the questions later, in one on one conversations with participants. But more on that later. </p><p>There were some very interesting talks. <a href="https://www.youtube.com/watch?v=uuSxoWcOEwA&amp;list=PL3bvPCw5QCLJ-VJPamVeQx-UPNBVyaopj&amp;index=8&amp;ab_channel=AdjyLeak&amp;ref=blog.althea.net">One particularly relevant talk</a> was from Leonardo Macccari, who is part of a team doing some research into community networks for the eu. They've looked into a lot of different networks. what motivates the participants, and in particular, how networks that are supposed to be decentralized can become centralized by influential members owning a lot of the nodes, or dominating discussions.</p><p><a href="https://www.youtube.com/watch?v=NLP4MxQp8kk&amp;list=PL3bvPCw5QCLJ-VJPamVeQx-UPNBVyaopj&amp;index=6&amp;ab_channel=AdjyLeak&amp;ref=blog.althea.net">Another great talk</a> was from Electra Wagenrad, who presented a diy solar charging system for mesh nodes. She estimated that a repeater with 2 directional antennas would require a 50 watt solar panel and a standard lead acid car battery. This could be a great way to set up nodes on hillsides etc with minimal support infrastructure.</p><p>I was also able to participate in the testbed setup. I wrote a startup script for Babel and a live updating map showing the strengths of connections between nodes. I learned a lot from the experience and will be able to set up a testbed to refine Althea.</p><p>It’s set up in an interesting way. Each router has 2.4 and 5 ghz radios. The 2.4 ghz radios are set up to mesh with 802.11s, to create a management network. Meanwhile, the 5 ghz radios are used to test the routing protocol under consideration. Since 2.4ghz often has a better range than 5ghz, this allows for the testing of topologies that may have poor connectivity in parts. Also, the transmit power of the 5ghz radios was turned down to allow a more realistic topology in a smaller area.</p><p>In one on one conversations about Althea, I found that many members of European mesh networks have a pragmatic attitude of “show me the code”. It’s a healthy attitude, and one we agree with. We’ll have a proof of concept soon, which will do most of the payment and tunneling, but without the route verification. This will prove out the concept, while taking a temporary shortcut on some of the more time consuming routing protocol development.</p><p>As for the basic idea of incentivized mesh, many of them have thought about it before, but there has never really been a strong attempt at automating payments and verification the way we are doing. Guifi.net in Catalonia has a system where for-profit ISPs are able to use their network and contribute back to it in proportion to how much they are using. However, this is all manually calculated and worked out by humans.</p><p>I also spoke with Axel, the creator of BMX7, and Linus, who works on Batman. We discussed the technical details of our verified routes. It didn’t seem like they had really considered the idea of verifying the quality metric of routes much before, but Axel has put several mechanisms into BMX7 to stop attacks aimed at simply disrupting the network. We will likely need to add similar mechanisms to Babel, although Babel is working on signed messages which may help prevent a lot of these attacks.</p><p>All in all, it was a good experience. They’ve perfected their testbed setup, and the knowledge of how it’s put together will be very helpful for us in the coming months. As for the likelihood of existing community networks being early adopters, I think that they may be a little more conservative because they already have networks up that work with their technical and social structure. They’d probably want to see something pretty well developed before risking their existing technical and social capital.</p><p>Also, some members of the community view the inclusion of a monetary incentive with suspicion for political and social reasons. Some of them might have to see Althea increasing competition, improving service, and lowering prices before giving the idea a chance.</p>]]></content:encoded></item>
<item><title>Pay for forward v.s. pay for internet</title><link>https://blog.althea.net/pay-for-forward-vs-pay-for-internet/</link><guid isPermaLink="true">https://blog.althea.net/pay-for-forward-vs-pay-for-internet/</guid><pubDate>Sat, 08 Apr 2017 00:00:00 GMT</pubDate><description>We&apos;ve considered two main mechanisms for an incentivized mesh network so far. Pay for forward is the mechanism laid out in Althea v1, and Hocnet. Pay for internet is something I&apos;ve been working on as Althea v2 and it is also kind of how ISPs work now. This is a brief summary of both approaches.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>We've considered two main mechanisms for an incentivized mesh network so far. Pay for forward is the mechanism laid out in <a href="https://blog.althea.net/althea-paper/">Althea v1</a>, and <a href="https://www.reddit.com/r/hocnet/?ref=blog.althea.net">Hocnet</a>. Pay for internet is something I've been working on as Althea v2 and it is also kind of how ISPs work now. This is a brief summary of both approaches.</p><h2 id="pay-for-forward">Pay for forward</h2><ul><li>A (secured) routing protocol propagates price along with the route quality metric. The routing protocol makes routing decisions based on the price and the metric.It is secured by running speedtests to destinations on the network and seeing how they match up to the advertised metrics. Using a "circular ack" speedtests can be reused many times by all the nodes on a route to a given destination. This also works with asymmetric routes.</li><li>Nodes tally up what they are owed their neighbors according to which destinations the neighbors are sending packets to. Payments are settled with payment channels. If payments are not made, a node can stop forwarding a neighbor's packets using tunnels. On top of the pay-for-forward system, there is a gateway discovery and payment system. Somehow end-user nodes discover "gateway" nodes, nodes with a connection to the internet. Gateway nodes charge a certain amount for the internet connection. When a gateway is chosen by an end-user node, a payment channel is opened with that gateway. The gateway is paid for the amount of data used from the internet, as well as the amount that it cost the gateway to pay-for-forward to send the packets back to the end-user node. Gateways would need to be speedtested. Speedtests could be done between the end-user node and arbitrary servers on the internet.</li></ul><h2 id="pay-for-internet">Pay for internet</h2><ul><li>Nodes pay each other for access to the internet.</li><li>Some secure source of routes is neccesary, but it remains completely separate and unspecified by this scheme.</li><li>A node which is closer to the internet will be paid to both send and receive packets on behalf of a node which is further away (upload and download connection).</li><li>Nodes must discover and verify the quality of the internet access provided by their neighbors. This somewhat mirrors the quality metric discovery and verification in a secure routing protocol. To verify the upload quality of a neighbor, a node sends traffic to a speedtest server on the internet. To verify the download quality of a neighbor, a node has a speedtest server on the internet send it traffic. In most routing protocols, there will only be one upload neighbor and one download neighbor at once (and they will often be the same neighbor). However, if there are multiple upload or download neighbors, it would be very difficult to tell which one is responsible for the quality of a route.</li><li>Nodes could tally up what they are owed by their downstream neighbors according to how much data they have sent or received on behalf of a given downstream neighbor. Payments are settled with payment channels. If payments are not made, a node can stop forwarding packets to or from a neighbor using tunnels.</li><li>Instead of announcing an all-or nothing price for access, nodes could instead prioritize traffic to and from neighbors according to how much each neighbor was paying at a given time. This might allow a natural range of quality/price options. It makes access discovery and verification harder. How do you know how much a neighbor's quality will improve if you pay it more?</li></ul>]]></content:encoded></item>
<item><title>Scrooge development: Running code</title><link>https://blog.althea.net/dev-update-3/</link><guid isPermaLink="true">https://blog.althea.net/dev-update-3/</guid><pubDate>Fri, 10 Feb 2017 00:00:00 GMT</pubDate><description>I&apos;ve been focusing my efforts on Scrooge, a piece of software that will implement the tunnel-based traffic control scheme I&apos;ve written about previously.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>I've been focusing my efforts on <a href="https://github.com/incentivized-mesh-infrastructure/scrooge?ref=blog.althea.net">Scrooge</a>, a piece of software that will implement the tunnel-based traffic control scheme I've written about <a href="https://blog.althea.net/dev-update-2/">here</a>. To recap, I'm trying to build somethign that:</p><ul><li>Establishes authenticated tunnels with each of its neighbors. This is so that nodes can reliably tell each others traffic apart. Simply relying on MAC addresses would allow any node to spoof the traffic of another node to get free service.</li><li>Blocks packets that have not come over one of the authenticated tunnels from being forwarded.</li><li>Prioritizes traffic from some neighbors more highly than others. This will ultimately be linked to payment, but for now I'll just pass it in manually.</li><li>Allows nodes to choose what proportion of their total bandwidth they will share/sell.</li></ul><p>In the previous post, I wrote about doing this with shell scripts. These were fast and easy to write, and a good way to test the technique. Now I am working on doing the same thing with a robust, configurable, and well-tested piece of software that does not rely on manual tweaking.</p><p>I've been writing it in Go. The first thing that needs to be done is discovery. Neighbors must be able to establish an initial contact with one another. I've been doing this by sending UDP packets to a specific port on the IPv6 multicast address. Nodes send "hello" messages on this port. The hello messages contain the node's public key and "control address", where messages can be sent to communicate with the node.</p><h3 id="scrooge-hello-message">Scrooge hello message</h3><p>This is sent on the multicast port to discover neighbors. It can also be sent directly to a neighbor to notify them of an update of the control address. </p><p><code>scrooge_hello &lt;publicKey&gt; &lt;control address&gt; &lt;seq num&gt; &lt;signature&gt;</code></p><ul><li>PublicKey: base64 encoded ed25519 public key. This is used by neighbors to identify each other and sign messages, including the <code>scrooge_hello</code> message.</li><li>Control address: The IP address and port where one can send out of band control information.</li><li>Sequence number: Incremented with each hello to prevent playback attacks</li><li>Signature: The signature of the publicKey over the fields of this message, concatenated as byte strings with no spaces (we may want to tweak this?)</li></ul><p>When a node receives one of these messages: &nbsp;- It first checks the signature, and adds a record of this Neighbor if it does not already exist (neighbors are identified by public key). &nbsp;- It checks the SeqNum to prevent replay attack. - It updates the ControlAddress of the neighbor with the given PublicKey. - It sends a <code>scrooge_hello_confirm</code> message to the neighbor’s control address</p><h3 id="scrooge-hello-confirm-message">Scrooge hello confirm message</h3><p><code>scrooge_hello_confirm &lt;publicKey&gt; &lt;control address&gt; &lt;seq num&gt; &lt;signature&gt;</code></p><p>When a node receives one of these messages: &nbsp;- It first checks the signature, and adds a record of this Neighbor if it does not already exist (neighbors are identified by public key). &nbsp;- It checks the SeqNum to prevent replay attack. - It updates the ControlAddress of the neighbor with the given PublicKey. - It may start a tunnel and send a scrooge tunnel message as described below.</p><h3 id="scrooge-tunnel-message">Scrooge tunnel message</h3><p>Sometimes a node wants to establish a tunnel with one of its neighbor nodes. Maybe it has just received a hello_confirm from this neighbor after it has broadcasted a hello, or maybe it needs to refresh the tunnel for some reason.</p><ul><li>It first stops and removes any existing tunnel with the neighbor. </li><li>It then starts a new tunnel on an available port and sends the message.</li></ul><p><code>scrooge_tunnel &lt;publicKey&gt; &lt;tunnel publicKey&gt; &lt;tunnel endpoint&gt; &lt;seq num&gt; &lt;signature&gt;</code></p><p>When a node receives this message, - It adds the tunnel publicKey and endpoint to the tunnel record for that node and starts a tunnel listening on an available port. - It then sends a <code>scrooge_tunnel_confirm</code> message back.</p><h3 id="scrooge-tunnel-confirm-message">Scrooge tunnel confirm message</h3><p><code>scrooge_tunnel_confirm &lt;publicKey&gt; &lt;tunnel publicKey&gt; &lt;tunnel endpoint&gt; &lt;seq num&gt; &lt;signature&gt;</code></p><p>This is the same as the <code>scrooge_tunnel</code> message, except that when a node receives it, it does not send a message back. This is to stop an infinite loop of <code>scrooge_tunnel</code> messages from occurring.</p><p>The parsing and handling of these messages is all unit tested, and I'm currently working on integration tests, running in <a href="https://blog.althea.net/using-core-for-network-simulation/">CORE</a>. </p>]]></content:encoded></item>
<item><title>Route quality metric verification</title><link>https://blog.althea.net/route-quality-metric-verification/</link><guid isPermaLink="true">https://blog.althea.net/route-quality-metric-verification/</guid><pubDate>Mon, 16 Jan 2017 00:00:00 GMT</pubDate><description>Any kind of incentivized mesh scheme needs a secure routing protocol. Without this, any node can claim anything it wants about the quality of routes that it has to a destination. Depending on how the payments work, there are a variety of different ways that this kind of routing protocol cheating can</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>Any kind of incentivized mesh scheme needs a secure routing protocol. Without this, any node can claim anything it wants about the quality of routes that it has to a destination. Depending on how the payments work, there are a variety of different ways that this kind of routing protocol cheating can be financially lucrative. There needs to be a good way to verify that what nodes claim about the quality and quantity of their connections to other nodes is correct.</p><p>In the original design of Althea, in the <a href="https://blog.althea.net/althea-paper/">whitepaper</a>, I call for verification of routes. That is, once a node has made a connection to another node that it cares about, it checks whether the route quality information propagated with the routing protocol is correct. This consists of the node doing some kind of route quality or throughput test with the destination node and seeing if it matches up to what was propagated.</p><p>If the propagated information is incorrect, the node corrects its own routing information, and tells the node that gave it the bad route about the inaccuracy. Once the neighbor finds out about the inaccuracy, it could do its own quality test, and tell its neighbors about the results and so on. But having each node along a route doing a quality test to verify the route could be slow and result in a lot of overhead.</p><p>Justin Kilpatrick, who is working on a similar project called <a href="https://www.reddit.com/r/hocnet/?ref=blog.althea.net">Hocnet</a>, came up with an interesting idea: reuse the results of a quality test along a route.</p><p>As a simple example, let's say that the quality metric that is being used is percent packet loss. Alice is sending traffic to a Zack over the network. Zack keeps track of how many packets he receives over a certain time period, signs this, and sends it back. Now Alice can compare this information with her own statistics about how many packets she has sent out during the same time period to derive a percent packet loss metric.</p><p>Let's say that the numbers don't match up, and the route is losing more packets than advertised. </p><p>In Althea, Alice would just correct her own routes and notify Bob, the neighbor that gave her the route. Bob would then have to communicate with the destination himself to find out what the real quality is.</p><p>In Hocnet, Alice passes Zack's signed statement about how many packets he has received from her along to Bob. Now Bob compares Zack's statement just like Alice did to find out his own quality to Zack.</p><p>One additional requirement in this kind of scheme is that the quality test be done on normal traffic. Otherwise, nodes along the route could simply prioritize traffic that they recognize as part of a quality test, while dropping normal traffic.</p><p>Possible types of quality test:</p><h3 id="packet-loss-percentage-">Packet loss percentage:</h3><p><strong>Functionality:</strong> Nodes find out how many packets are lost over links to their neighbors. When they get a route update message for a given destination, they multiply the total route packet loss by the packet loss of the link they received it on and forward it onwards.</p><p><strong>Verification:</strong> The product of the packet loss of every link in a route should equal the packet loss of the whole route. The destination sends a signed message with the number of packets received from a source during a certain time period. Nodes along the route can compare this with how many packets from that source they have forwarded to the destination during this time period to find the route's total packet loss. Babel and Batman IV use this type of metric.</p><h3 id="throughput-">Throughput:</h3><p><strong>Functionality:</strong> Nodes find the maximum throughput of links to their neighbors. When they get a route update message for a given destination, they set the total route throughput to equal the throughput of the link they received the message on, if the throughput of the link is lower.</p><p><strong>Verification:</strong> The lowest throughput link along the route should equal the maximum throughput of the route as a whole. The destination sends a signed message with the number of bytes received from a source during a certain time period. Nodes along the route can compare this to the number of bytes that they forwarded from that source. An important caveat here is that the route must be saturated to the maximum throughput to get an accurate estimate. This could waste bandwidth and also tip off nodes along the route that a quality test is happening. Batman V uses this type of metric.</p><h3 id="latency-">Latency:</h3><p><strong>Functionality:</strong> Nodes measure the average latency of links to their neighbors. When they get a route update message for a given destination, they add the latency of the link they received it on to the total route latency before forwarding it onwards.</p><p><strong>Verification:</strong> The sum of the latencies of all the links on a route should equal the latency of the route as a whole. The destination sends a signed message with the hashes of various packets and their time of receipt. Nodes on the route compare this time of receipt with the time that they received each packet.</p>]]></content:encoded></item>
<item><title>Dev Update 2: Shell Scripts</title><link>https://blog.althea.net/dev-update-2/</link><guid isPermaLink="true">https://blog.althea.net/dev-update-2/</guid><pubDate>Wed, 11 Jan 2017 00:00:00 GMT</pubDate><description>I&apos;ve been experimenting in CORE with some shell scripts to allow nodes to prioritize traffic to and from their peers.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>I'm now trying to build a piece of software that does a few things:</p><ul><li>Establishes authenticated tunnels with each of its neighbors. This is so that nodes can reliably tell each others traffic apart. Simply relying on MAC addresses would allow any node to spoof the traffic of another node to get free service.</li><li>Blocks packets that have not come over one of the authenticated tunnels from being forwarded.</li><li>Prioritizes traffic from some neighbors more highly than others. This will ultimately be linked to payment, but for now I'll just pass it in manually.</li><li>Allows nodes to choose what proportion of their total bandwidth they will share/sell.</li></ul><p>I've been experimenting in <a href="https://blog.althea.net/using-core-for-network-simulation/">CORE</a> with some shell scripts to make this stuff happen. I'm going to write the actual software in Go, but shell is great for prototyping. You can call other programs from within the language and shell's jankiness and disposable feel keeps you from getting too fixated on the minor details.</p><h2 id="tunnels">Tunnels</h2><p>I'm using <a href="https://fastd.readthedocs.io/en/v18/?ref=blog.althea.net">fastd</a> for tunnels because it is easy to use and has a lot of options for customization. It's in userspace, which means that each packet will be copied out of kernel memory and back in several times. This greatly limits bandwidth, so I'll switch to something more efficient like Wireguard at some point.</p><p>Right now I'm using this shell script to set up each peer:</p><p>`shell</p><h1 id="usage-addpeer-peernumber-peerip-peer_iface">usage: addpeer &lt;peer<em>number&gt; &lt;peer</em>ip&gt; &lt;peer_iface&gt;</h1><p>mkdir -p peers</p><p>peer<em>number=$1 peer</em>ip=$2 peer_iface=$3</p><p>touch peers/peer$peer_number</p><p>echo ' &nbsp; key "'$(cat /home/jehan2/host/fastd-test/publickey$peer<em>number)'"; &nbsp; interface "%n"; &nbsp; remote "'$peer</em>ip'" port 1234; ' &gt; peers/peer$peer_number `</p><p>ip route add $peer<em>ip dev $peer</em>iface</p><p>Fastd uses a <code>peers/</code> folder to keep track of its peers. Each peer has a file that contains its public key, address, and other information. Here I'm creating the file for a given peer. I'm copying the public key from a central folder.</p><p>To set up a network that looks like <code>1--2--3</code>, I run these commands:</p><p>On node 1:</p><p><code>$ addpeer 2 10.0.0.2 eth0 </code></p><p>On node 2:</p><p><code>$ addpeer 1 10.0.0.1 eth0 $ addpeer 3 10.0.0.3 eth0 </code></p><p>On node 3:</p><p><code>$ addpeer 2 10.0.0.2 eth0 </code></p><p>Then I run this script on each node to get things started:</p><p>`shell</p><h1 id="usage-start-mynumber-mytunnel_ip">usage: start &lt;my<em>number&gt; &lt;my</em>tunnel_ip&gt;</h1><p>touch fastd.conf echo \ ' &nbsp; bind any:1234; # UDP Port 1234 auf allen Interfaces &nbsp; mode multitap; &nbsp; method "xsalsa20-poly1305"; # Verschlüsselungsalgorithmus festlegen &nbsp; mtu 1426; &nbsp; secret "'$(cat /home/jehan2/host/fastd-test/privatekey$1)'";</p><p> &nbsp;include peers from "peers";</p><p> &nbsp;on up " &nbsp; &nbsp; ip link set up $INTERFACE &nbsp; &nbsp; ip addr add '$2' dev $INTERFACE &nbsp; &nbsp; echo interface $INTERFACE | nc ::1 8481 &nbsp; "; ' &gt; fastd.conf</p><p>fastd -d -c fastd.conf `</p><p>This sets up each node's private key and other fastd settings, including the <code>tunnel_ip</code>. The <code>tunnel_ip</code> is different from the IP that the node has on the physical network. It is only accessible over the authenticated tunnels. I might actually be able to just use the node's normal IP for this, but having it be a different address is a good sanity check.</p><p>I also have to set up routes on each node manually. This will be done by the routing protocol, but for these tests I am doing it manually to eliminate any uncertainty.</p><h2 id="firewall">Firewall</h2><p>Nodes do not want to forward any packet that has not come over one of the authenticated tunnels, because this packet has not been paid for. This is actually pretty easy to set up with <a href="https://wiki.nftables.org/wiki-nftables/index.php/Main_Page?ref=blog.althea.net">nftables</a>, once you understand the syntax and how it operates.</p><p>`shell</p><h1 id="usage-addrules-peer_number-">usage: addrules &lt;peer_number&gt; ...</h1><p>nft flush ruleset nft add table althea nft add chain althea fwd "{ type filter hook forward priority 0; policy drop; }"</p><p>for iif in "$@" do &nbsp; for oif in "$@" &nbsp; do &nbsp; &nbsp; if [ $iif != $oif ]; then &nbsp; &nbsp; &nbsp; nft add rule althea fwd meta iifname "peer$iif" oifname "peer$oif" mark set $iif$oif accept &nbsp; &nbsp; fi &nbsp; done done</p><p>nft list ruleset -a `</p><p>This script sets up a table and a chain (these are both just containers for organizing the firewall rules). The chain is set up with a default policy of just blocking everything, and it is attached to the <code>forward</code> hook which means that it applies to packets that are about to be forwarded by the system. By itself, this chain will prevent the system from forwarding any packets. In the loop the script makes a rule to accept packets for every pair of nodes, and adds a unique mark to them. This will allow us to identify which nodes packets are coming from and going to in the next step.</p><p>Running the script</p><p><code>$ sh addrules.sh 2 3 4 </code></p><p>results in this ruleset:</p><p><code>table ip althea { 	chain fwd { 		type filter hook forward priority 0; policy drop; 		iifname "peer2" oifname "peer3" mark set 0x00000017 accept &nbsp;		iifname "peer2" oifname "peer4" mark set 0x00000018 accept &nbsp;		iifname "peer3" oifname "peer2" mark set 0x00000020 accept &nbsp;		iifname "peer3" oifname "peer4" mark set 0x00000022 accept &nbsp;		iifname "peer4" oifname "peer2" mark set 0x0000002a accept &nbsp;		iifname "peer4" oifname "peer3" mark set 0x0000002b accept &nbsp;	} } </code></p><h2 id="traffic-shaping">Traffic Shaping</h2><p>Now it is time to prioritize traffic depending on how much nodes are paying. I'm using <a href="http://www.lartc.org/manpages/tc.txt?ref=blog.althea.net">tc</a>, which is a tool in linux for this purpose. Traffic shaping is a very subtle process and I don't fully understand all the ins and outs yet. Also, tc's syntax is frankly quite cumbersome. Tc lets you set up qdiscs- (short for queueing discipline). There are also filters which can put packets into different classes inside the qdisc depending on different criteria. The qdisc then enqueues packets into the different classes, and either dequeues them to the network or drops them to accomplish its traffic shaping goals.</p><p>I'll start with a diagram to explain the shaping setup that I have made, because the tc scripts are hard to follow.</p><p><code>qdisc htb- limits all traffic to 10mbit/s &nbsp;| qdisc drr- splits traffic into classes to be prioritized, based on the marks we added to packets with nftables &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| filter fw 23 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; filter fw 24 &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| class drr quantum 1400 &nbsp; &nbsp; &nbsp; &nbsp;class drr quantum 700 &nbsp; &nbsp; &nbsp; ...etc &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| qdisc fq_codel &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; qdisc fq_codel </code></p><p>First, the htb qdisc limits all traffic to 10mbit/s. This will allow nodes to choose how much of their bandwidth they wish to sell, and it is necessary for the drr qdisc to function (I'm not entirely sure why).</p><p>The drr qdisc has filters attached which put the traffic into its child classes based on the marks we attached to the packets in the firewall step above. Drr operates in a round robin fashion and basically allows each class to transmit "quantum" bytes each round. A class with quantum 1400 should be able to transmit twice as much data as one with quantum 700.</p><p>The fq_codel qdisc drops packets that hang around in each queue for too long. It also fairly queues traffic within each class so that, for instance, a large download won't slow down other traffic in the class too much. Without this packets will stay in the queues forever resulting in the system slowing to a crawl.</p><p>In the above setup, traffic going from peer 2 to peer 3 will have twice as much bandwidth as traffic going from peer 2 to peer 4.</p><p>Here are the scripts:</p><p>`shell</p><h1 id="usage-setup-network-interface">usage: setup &lt;network interface&gt;</h1><p>dev=$1</p><h1 id="remove-root-qdisc-clean-slate-">Remove root qdisc (clean slate)</h1><p>tc qdisc del dev $dev root</p><h1 id="add-root-shaping-qdisc-and-class">Add root shaping qdisc and class</h1><p>tc qdisc add dev $dev root handle 1: htb tc class add dev $dev parent 1: classid 1:1 htb rate 10mbit ceil 10mbit</p><h1 id="add-root-drr-qdisc">Add root drr qdisc</h1><p>tc qdisc add dev $dev handle 2: parent 1:1 drr</p><h1 id="add-default-class">Add default class</h1><p>tc class add dev $dev parent 2: classid 2:1 drr</p><h1 id="send-traffic-to-default-class">Send traffic to default class</h1><p>tc filter add dev $dev parent 1: protocol all prio 2 u32 match u32 0 0 classid 1:1 tc filter add dev $dev parent 2: protocol all prio 2 u32 match u32 0 0 classid 2:1</p><p>tc -s class show dev $dev tc -s filter show dev $dev `</p><p>This sets things up and adds the htb qdisc and the root drr qdisc.</p><p>`shell</p><h1 id="usage-addqueue-network-interface-firewall-mark-quantum">usage: addqueue &lt;network interface&gt; &lt;firewall mark&gt; &lt;quantum&gt;</h1><p>dev=$1 handle=$2 quantum=$3</p><h1 id="get-traffic-with-a-certain-fw-mark-and-direct-it-to-the-corresponding-drr-class">Get traffic with a certain fw mark and direct it to the corresponding DRR class</h1><p>tc filter add dev $dev parent 2: protocol ip prio 1 handle $handle fw classid 2:$handle tc class add dev $dev parent 2: classid 2:$handle drr quantum $quantum</p><h1 id="this-acts-to-actually-drop-traffic-making-drr-take-effect">This acts to actually drop traffic, making DRR take effect</h1><p>tc qdisc add dev $dev parent 2:$handle fq_codel</p><p>tc -s class show dev $dev tc -s filter show dev $dev `</p><p>I run this for every child class of the drr qdisc that I want to create. This will typically be once for every rule I set up in the firewall script above.</p><p>Using this setup, I am able to prioritize traffic coming from and going to a node's different peers. The next step, which I am working on now, is to automate this all. I'm writing that code in Go.</p><p><a href="https://www.reddit.com/r/incentivizedmesh/comments/5oeo1v/tunnelfirewalltraffic_shaping_setup_to_securely/?ref=blog.althea.net">Discuss this post on Reddit</a></p>]]></content:encoded></item>
<item><title>Development update</title><link>https://blog.althea.net/development-update/</link><guid isPermaLink="true">https://blog.althea.net/development-update/</guid><pubDate>Tue, 20 Dec 2016 00:00:00 GMT</pubDate><description>Development update</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>If you've read my <a href="https://blog.althea.net/althea-paper/">whitepaper</a> and watched my <a href="https://blog.althea.net/ccc-lightning-talks/">presentations</a>, you can see the general direction I've been pursuing for Althea. Since then, I've been getting deep into the implementation details. As I've worked, I've found several ways to simplify Althea and make it more realistic for use in real-world networks.</p><p>What I was trying to do was this: Nodes propagate pricing information to one another using a distance vector routing protocol (Babel), and then pay neighbors for data sent. They also pay the exit node (a node with internet access) of their choosing, who in turn pays to have the data sent back to them. They make sure that quality along the way is consistent with what is advertised by using speed tests. The service is binary: nodes pay each other an agreed-upon rate for connectivity, or they don't get service.</p><p>I'm now working on a new scheme that simplifies and tweaks some stuff:</p><ul><li>I'm not addressing routing at all. The ideal routing configuration for any given network depends on a lot of factors, and mandating a certain routing protocol will limit the usefulness in different scenarios. Anything from manually entered routes, to ad-hoc protocols, to centrally administered SDN could work.</li><li>I no longer am making any distinction between normal nodes and exit servers. This distinction will still exist, of course, but Althea won't be involved with it.</li><li>Nodes will pay for both upstream and downstream service, instead of the pay-for-forward model I was using before.</li></ul><p>What's left is a piece of software that looks like this: </p><ul><li>Nodes set up authenticated tunnels with all their neighbors. This is so that they can tell for sure that a specific packet was routed by a specific neighbor. These are TAP tunnels like the ones used for VPNs. Two promising options are <a href="https://fastd.readthedocs.io/en/v18/?ref=blog.althea.net">fastd</a> and <a href="https://www.wireguard.io/?ref=blog.althea.net">wireguard</a></li><li>Nodes then prioritize traffic to and from their neighbors, depending on how much each neighbor is paying. Linux's <code>tc</code> tool should be able to do this. This way, purchasing service is a smooth continuum, instead of a binary state.</li></ul><p>This is very simple, and will need to work together with a few other components to make a useful system.</p><ul><li>Routing is still necessary, and it still needs to be secure. Babel, and most other routing protocols will allow nodes to cheat and direct more traffic towards themselves than they should have. There are some ideas in the direction of securing distance vector protocols such as <a href="http://www.netsec.ethz.ch/publications/papers/sead-journal.pdf?ref=blog.althea.net">SEAD</a>. Another option is using centrally determined routes or SDN. It might be easier to monitor and prevent cheating with a centralized system.</li><li>Just because nodes can choose their desired level of prioritization and compete for service with the nodes around them, doesn't mean they know what prices to pay. The simplest option is to have the pricing manually controlled, but this will be too much of an annoyance for most people. An automatic pricing system is probably a necessity for wide adoption, but I am leaving it for later.</li></ul><p><a href="https://www.reddit.com/r/altheamesh/comments/5mh5ur/development_update/?ref=blog.althea.net">Discuss this post on Reddit</a></p>]]></content:encoded></item>
<item><title>The free option problem</title><link>https://blog.althea.net/the-free-option-problem/</link><guid isPermaLink="true">https://blog.althea.net/the-free-option-problem/</guid><pubDate>Sun, 21 Aug 2016 00:00:00 GMT</pubDate><description>The free option problem is an apparently inescapable problem in state channels. However, it can be mitigated. I&apos;ll cover 3 possible mitigations in this blog post. It&apos;s a variant of the fair exchange problem, which is a known concept in the field of cryptography as a whole.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>The free option problem is an apparently inescapable problem in state channels. However, it can be mitigated. I'll cover 3 possible mitigations in this blog post. It's a variant of the fair exchange problem, which is a known concept in the field of cryptography as a whole. Let's review the fair exchange problem: </p><p>Alice and Bob wish to exchange signatures. If Bob sends his first, Alice could simply refuse to send hers and walk away. If Alice sends first, the situation is reversed.</p><p>Here's a <a href="https://crypto.stackexchange.com/questions/35828/is-it-possible-for-alice-and-bob-to-both-sign-a-message-simultaneously?ref=blog.althea.net">good overview</a> from a question I asked on a Q&amp;A site.</p><p>This applies very directly to state channels. Let's review how a state channel works:</p><p>Alice and Bob agree on some state, give it an incrementing sequence number, and sign it. Either Alice or Bob can now prove that the other agreed to that state, and that it is the most recent state that they have agreed to. If either one tries to falsely claim that an older state is the most recent state, the other can show a signed state with a higher sequence number and disprove the claim.</p><p>Most current state channel implementations also include the concept of a challenge period. This is a period of time after which it is not possible to disprove an older update by submitting a newer one. This gives a distinct cutoff point after which actions can be taken on the state.</p><p>This mechanism has found use in payment channels, which allow Alice and Bob to keep a running tally of how much they owe each other, updating it to make payments with extremely low overhead. This tally is backed up by money escrowed by one or both of them on a blockchain or with a trusted third party. When either one wants to pull the money out, they submit the most recent state. After the challenge period ends, the money is released.</p><p>In theory it can also be used for a wide range of other interactions <a href="http://altheamesh.com/blog/state-channel-pong/?ref=blog.althea.net">including pong</a>.</p><h2 id="example">Example</h2><p>The free option problem is just the fair exchange problem in the context of state channels. It's called the free option problem because it first presented itself in the use of state channels for trading assets against each other. Let's say a state channel is being used by Alice and Bob to trade silver against gold. The state records Alice's balance of silver and gold, and Bob's balance of silver and gold. This is backed up by bars of metal stored with an escrow service. When Alice wishes to trade some silver from some gold, she creates a new state with her balance of silver decreased and her balance of gold increased, and Bob's balances vice-versa. She increments the sequence number, signs it, and sends it to Bob.</p><p>If Bob refuses to send his signature back, he now has a free option. If he wants to, he can submit the state that Alice just sent him and receive more silver, or submit the previous state and receive more gold. He might choose differently based on how the market moves. Alice has given him a free option.</p><p>The free option problem also has another effect. Let's call it an "unjust punishment". Some state channel implementations have a mechanism where someone attempting to close a channel must submit a deposit along with their closing state. If a later state overrides it, the deposit is taken as punishment. This is meant to dissuade people from dishonestly submitting old states. In the example above, if Alice wants to close the channel, she must submit the latest state that she has. However, Bob has a later state with a higher sequence number. If Alice submits her latest state, Bob can submit his later state and take her deposit.</p><h2 id="mitigations">Mitigations</h2><p>There are at least 3 mitigations of the free option problem. They all basically consist of eliminating a single point in time where one party has a fully valid state and the other does not.</p><h3 id="incremental-transfer-amount">Incremental transfer amount</h3><p>This applies mostly to channels recording balances of assets. More broadly, it works for channels where a state update can be broken into many smaller updates to achieve an equivalent effect. For instance, a trade of 100 grams of silver for 10 grams of gold can be broken into 100 trades of 1 gram of silver for 0.1 gram of gold. In the example above, if Alice did this she would only ever be giving Bob a much smaller free option. However, this only really works for divisible numerical transfers, and it does nothing to protect against an unjust punishment.</p><h3 id="incremental-transfer-validity-time">Incremental transfer validity time</h3><p>A solution used by <a href="https://gnosis.pm/?ref=blog.althea.net">Gnosis</a> is to make state updates that expire after some time. Alice sends Bob an update transferring the full amount that expires very soon. When Bob has sent her a signature on that update, she sends an update that is valid for longer. This way, Alice and Bob are giving each other free options that are not useful for very long. This is especially well suited for exchanges, where the value of a free option is determined by how much the market has moved. It is also a partial solution to the unjust punishment problem discussed above. If Alice wants to close the channel, but Bob has a later update, she can just wait until Bob's update is no longer valid.</p><h3 id="incremental-transfer-probability">Incremental transfer probability</h3><p>This is an interesting solution that I came up with, which to my knowledge is not implemented anywhere. Alice and Bob each have a number of separate keypairs that they sign updates with (let's say 100 for now). Alice sends Bob an update that is signed by 1 of the keypairs. When Bob has responded with the signature from 1 of his keypairs, Alice sends a signature from her next keypair. This continues until the update has 100 signatures from each Alice and Bob. When one of them wants to close the channel, the blockchain or escrow service chooses a random number. This is used to derive the number of signatures required to consider the update valid. For instance, if the escrow chooses 0.34 as the random number, 34 signatures from Alice and Bob are required. Of course, if the process has been followed correctly and completed, the chance of validity is always 100%. </p><p>If one of them breaks the process off early, they will only have a 1% higher chance of having a valid state update. This obviously is not great if one party has a much more at stake or a much lower tolerance for risk than the other. I think this mechanism could also be used to mitigate the unjust punishment problem, if there is also a punishment for updates that fail validation for not having enough signatures.</p>]]></content:encoded></item>
<item><title>Using C.O.R.E. to work on mesh network routing protocols</title><link>https://blog.althea.net/using-core-for-network-simulation/</link><guid isPermaLink="true">https://blog.althea.net/using-core-for-network-simulation/</guid><pubDate>Mon, 01 Aug 2016 00:00:00 GMT</pubDate><description>C.O.R.E. may sound like the name of a 1980&apos;s superhero team, but it is actually a tool that simulates wired and wifi networks, right down to the radio waves. For this reason I am using it to test my modifications to Babel, an ad-hoc &apos;mesh&apos; routing protocol.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>C.O.R.E. may sound like the name of a 1980's superhero team, but it is actually a tool that simulates wired and wifi networks, right down to the radio waves. For this reason I am trying to use it to test my modifications to Babel, an ad-hoc "mesh" routing protocol.</p><p>First, let's look at the alternatives that I evaluated before settling on CORE.</p><h4 id="simple-container-network">Simple container network</h4><p>The first thing I tried was just using some containers in a network, and then using the Linux tools <code>iptables</code> and/or <code>tc</code> to selectively drop and delay packets between pairs of nodes to simulate a lossy radio network. This would obviously not uncover complex real-world network dynamics, but no simulation will do this perfectly.</p><p>The advantage of this approach could be simplicity (maybe). It's also a good way to improve my chops with the Linux network utilities.</p><p>One example of this is <a href="https://github.com/axn/mlc?ref=blog.althea.net">mlc</a>, written by Axel Neuman, the creator of the BMX6 routing protocol. Unfortunately, this package requires a lot of manual setup, and hasn't been updated in a few years. It's still something I will get familiar with, but I may evaluate some other more polished tools first. This technique starts to lose its simplicity the further you try to take it.</p><h4 id="mininet">Mininet</h4><p>Mininet is a more polished tool that sees a lot of use in the software defined networking (SDN) community. It can create networks of virtual computers connected to SDN-controlled OpenFlow switches.</p><p>Mininet looks nice, because it is relatively lightweight, with all functionality programmable through a REPL or a nice Python API. The API is pretty well documented and there are many examples.</p><p>I'm intending to revisit Mininet, but to use it effectively I think that I would need to get pretty familiar with OpenFlow and the concepts of SDN, and then use it to simulate a mesh network. No doubt that these are interesting and valuable skills, but maybe it would be better to spend time learning something actually targeted at the wireless mesh use-case.</p><h5 id="mininet-wifi">Mininet-wifi</h5><p>Mininet wifi adds WLAN simulation capability to mininet, with what looks like some pretty slick packet loss simulation stuff. However, it appears to be geared towards simulation of access points in a centrally-configured SDN network, not use in an ad-hoc mesh network.</p><h4 id="core">CORE</h4><p>CORE intimidated me with complexity at first, in addition it is not as well documented as Mininet. However, after getting it started (with the help of a very convenient VM), I found that it seems to be a capable toolkit. You get a window where you can drop nodes and link them together to form connections. Or, you can create a WLAN network and allow it to calculate connectivity based on the node's positions on the screen. CORE also integrates EMANE, which is a much more full-featured wifi simulation suite. Finally, CORE can also import mobility scripts, which allow you to automate the movement of nodes on the canvas to see how well routing protocols do with mobility.</p><h4 id="imunes">IMUNES</h4><p>CORE is built on top of IMUNES, which is another network simulator with a visual interface. It looks good, and is under more active development, but CORE seems simpler to get going for a mesh simulation.</p><h3 id="using-core">Using CORE</h3><p>CORE has a pre-built VM image available to make it easy to get going. I installed VirtualBox to run the image, and started it up. </p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/images/hello_boeing.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Clicking on the icon, you're greeted with a blank canvas with some toolbars to the side. Click on the toolbar button with the router symbol (network-layer virtual nodes), select the "MDR" type, and place a few of them on the canvas. Then click on the button below it (link-layer nodes) and place a WLAN node, which looks like a little cloud. Right clicking the WLAN node brings up a menu that has the option "Link to all routers". Clicking this links all nodes to the WLAN network and gives them IP addresses.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/images/wlan_setup.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Clicking the play button starts the simulation. If the nodes are close enough together, green lines will form, representing the connections between them. If you double click on one of the nodes, it opens up a terminal. From here, you can try to ping other nodes. To get a quick overview of connection health, I like to use the command <code>ping -f &lt;ip address&gt;</code>. The <code>-f</code> flag formats the output in a special way. Each time it sends a ping, it prints a dot. Each time it receives a response, it prints a backspace, deleting the prior dot. This effectively means that dots correspond to timed-out pings. If the line of dots grows rapidly, a lot of packets are being dropped. If it grows slowly or not at all, most packets are arriving at their destination.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/images/pinging.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>You can move nodes around while the ping command is running. If you move two nodes far enough away from each other that the green line between them disappears, all packets will suddenly start being dropped. If the green line is there, all packets are received. This is obviously not a very sophisticated simulation. This will not work for testing routing protocols, which must be able to find the best route among links of varying reliability.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/images/hello_emane.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Luckily the CORE emulator includes <a href="http://www.nrl.navy.mil/itd/ncs/products/emane?ref=blog.althea.net">EMANE</a>, which simulates the lower-level networking stack (tcp, wifi, and below), and the physical layer (radio waves). With EMANE, moving nodes further away from each other increases the drop rate and the latency. I didn't necessarily need the level of physical accuracy that it provides, but hey, it's pretty cool. Right click on the WLAN node, and select one of the EMANE models.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/images/running_babel.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Ok, let's run Babel on our nodes. Clone the Babel repo, and make and install it etc. Now double click on one of the router nodes to bring up the terminal. You should be able to type something like <code>/home/core/babeld/babeld eth0 -d 1</code> to start babel. The <code>-d 1</code> flag puts it into debug mode so that it prints logs to the terminal, and we can verify that it is running. </p><p>Next, we need to set up a custom service to make Babel start automatically on new nodes. Go to <code>~/.core/myservices</code> and read README.txt. I'm not going to duplicate what it says there, but my Babel service looks like this:</p><p>babel.py</p><pre><code>import os

from core.service import CoreService, addservice
from core.misc.ipaddr import IPv4Prefix, IPv6Prefix

class BabelMod(CoreService):
    # a unique name is required, without spaces
    _name = "BabelMod"
    # you can create your own group here
    _group = "Routing"
    # this controls the starting order vs other enabled services
    _startindex = 50
    # list of startup commands, also may be generated during startup
    _startup = ('sh /home/core/myservices/babel.sh',)
    # list of shutdown commands
    _shutdown = ('rm log')

# this line is required to add the above class to the list of available services
addservice(BabelMod)</code></pre><p>babel.sh</p><pre><code>#!/bin/sh

touch log
/home/core/babeld/babeld eth0 -d 1 &gt; log</code></pre><p>Restart CORE to install the new service.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/images/new_node_type.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Let's make a new node type which will only route using your new Babel service. First, click on the network-layer nodes button and select "edit node types". In this window, there's an "add new node type" button under the list of existing node types. I called mine "babel", and gave it a purple icon. Click on the "Services" button and make sure that only the "IPForward", and the new "BabelMod" services are selected.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/images/default_services.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Now you should be able to place nodes on the canvas, and have their babel instances start talking to each other. Since we piped the output of Babel to the <code>log</code> file, we can get some insight into its operation. Double click on a node to open its terminal and type <code>tail -f log</code> to see what Babel is logging.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/images/babel_running.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Now that we have Babel running, we can try to see if we can get it to do some routing. Place 4 babel nodes on the canvas, 2 far apart from each other and 2 in the middle. Make one of the middle nodes a much better route than the other (closer to the 2 end nodes). Wait a few seconds, and you will see that the end nodes have routes to each other going through the better-placed middle node (you can check with Widgets-&gt;Observer Widgets-&gt;IPv4 Routes). You can also ping from one end node to the other to monitor packet loss.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/images/babel_routing.png" class="kg-image" alt="" loading="lazy" decoding="async"></figure><p>Now switch the positions of the middle nodes. You will see the packet loss jump, as the end nodes attempt to route packets through the middle node which is now in a bad position. After around 30 seconds, you will see throughput improve again as the new route is learned. If you check the routing tables of the end nodes, you will see that they contain the new and better route.</p>]]></content:encoded></item>
<item><title>State channel pong</title><link>https://blog.althea.net/state-channel-pong/</link><guid isPermaLink="true">https://blog.althea.net/state-channel-pong/</guid><pubDate>Wed, 27 Jul 2016 00:00:00 GMT</pubDate><description>How can a blockchain enforce honest behavior during a game of pong?</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>This is a quick writeup of some ideas that were discussed by myself, Ameen Soleimani, and Zaki Manian.</p><p>Ameen is actively researching state channels and was looking for project ideas. I suggested pong, as it is a very fast paced game that really emphasizes the scalability and speed of state channels. Playing pong on a state channel is somehow much more impressive than tic tac toe or chess. Thinking about state channels in terms of pong also loosened up my thinking around channels in general. We talked with Zaki for about an hour to find a good way to do it.</p><p>Alice and Bob send frames back and forth, both signing each valid frame. For example:</p><!--kg-card-begin: markdown--><h3 id="alicebobframe">Alice -&gt; Bob Frame:</h3>
<pre><code>Sequence: 88     
Ball: 11,23     
Alice's paddle: 15     
Bob's paddle: 3
</code></pre>
<h3 id="bobaliceframe">Bob -&gt; Alice Frame:</h3>
<pre><code>Sequence: 89 // Bump the sequence number     
Ball: 12,24 // The ball has moved according to pong "physics"     
Alice's paddle: 15     
Bob's paddle: 4 // Bob has moved his paddle 
</code></pre>
<!--kg-card-end: markdown--><p>Alice will sign the frame that Bob has given her if it is valid, i.e. if the sequence number is correctly incremented and if the ball has obeyed the laws of pong physics. The frame also contains an update of Bob's paddle position.</p><p>They set up a contract on the blockchain that also understands the state transition from one frame to another. If given a frame signed by both Alice and Bob, the contract can of course establish that it is valid. The contract can also establish that a frame signed by only one of the participants is valid, given the frame before it signed by both. Also, as is the norm in state channels, frames with a higher sequence number override those with a lower sequence number. There is a challenge period of some length as well. After a frame is submitted, the contract waits for this amount of time before taking action on it (i.e. paying out some money to the winner).</p><p>In addition to frames, the contract accepts a notice of forfeit, signed by only one of the participants. For instance, Alice can claim "Bob forfeited". This can be overriden by a frame of any sequence number. If Bob does not post any valid frames during the challenge period, he forfeits the game.</p><p>Let's say that Bob sees that Alice is about to win, and he would like to end the game without forfeiting the money that he has locked up in the contract as a bet or whatever. I will prove that it is not possible for Bob to do this.</p><p>If Bob simply disconnects and stops signing frames, Alice can send a notice of forfeiture to the contract. If Bob doesn't send a valid frame before the hold period is up, Alice gets the money.</p><p>If Bob does send a valid frame, it's now up to Alice to send the next frame before the challenge period is over, otherwise she has forfeited. Alice and Bob could go back and forth like this until the end of the game, but this would be a very slow game, and very expensive because they would have to pay gas each time they submitted a frame.</p><p>If Alice sends a notice of forfeiture and then refuses to sign any more frames, Bob can submit a frame signed only by him, which is a valid transition from the frame signed by both him and Alice. Now it's up to Alice to send the next valid frame.</p><p>It's in both of their interests to play honestly and keep all frames except for the last one off the chain, but the slow and inefficient frame-by-frame process is always there as a fallback to keep the players honest.</p>]]></content:encoded></item>
<item><title>Response to A tale of two cryptocurrencies</title><link>https://blog.althea.net/tale-of-two-cryptocurrencies-response/</link><guid isPermaLink="true">https://blog.althea.net/tale-of-two-cryptocurrencies-response/</guid><pubDate>Thu, 23 Jun 2016 00:00:00 GMT</pubDate><description>I just read Tony Ascieri&apos;s A tale of two cryptocurrencies
[https://tonyarcieri.com/a-tale-of-two-cryptocurrencies]  and while it&apos;s
generally a pleasant overview of what&apos;s going on in cryptocurrency today, it has
a few big misconceptions, and is missing a lot of detail on some other fronts.

The essay adopts a tone that has been common in the week since the DAO hack, a
conviction that Turing-complete languages are doomed to fail, and that anyone
who would use them for anything is stupid. I don&apos;t </description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>I just read Tony Ascieri's <a href="https://tonyarcieri.com/a-tale-of-two-cryptocurrencies?ref=blog.althea.net">A tale of two cryptocurrencies</a> and while it's generally a pleasant overview of what's going on in cryptocurrency today, it has a few big misconceptions, and is missing a lot of detail on some other fronts.</p><p>The essay adopts a tone that has been common in the week since the DAO hack, a conviction that Turing-complete languages are doomed to fail, and that anyone who would use them for anything is stupid. I don't think this is the case. There's a huge amount of critical code in the world which is Turing-complete, and things are OK. Do software vulnerabilities exist? Yes. But they do not stop us writing complex and sensitive systems. </p><p>Tony's piece makes the distinction that the really dangerous thing is to have Turing-complete <em>input</em> languages. In my reading of some of the <a href="http://langsec.org/papers/the-bugs-we-have-to-kill.pdf?ref=blog.althea.net">langsec material</a> that he cites, this distinction is made because so many programs are written with the mentality that their input is simple and is not worth treating as a language. A lot of bugs have arisen because of a program acting more like a parser, and its input acting more like a language than the programmer suspected. I don't feel that Ethereum's EVM bytecode qualifies as an <em>input</em> language under this criteria. It's intended to be a language, and it's intended to be Turing complete. It has come, and continues to come under the scrutiny appropriate to such a role.</p><p>The idea is that Turing complete languages are undecidable, and thus, that it is impossible to prove that they are secure. Indeed, one cannot prove that a Turing complete program will ever stop running (the halting problem). This doesn't stop us from using Turing complete code in critical applications. It's impossible to formally verify that your airplane isn't going to crash into the ocean, but that doesn't stop you getting on a plane. Because of the dangers of unexpected behavior, we make sure to test carefully, and use programming patterns that prevent bugs.</p><p>Turing complete EVM bytecode has all the same vulnerabilities of the software surrounding us, flying airplanes, running bank servers, and even driving cars. In the case of self-driving cars, neural networks perform a lot of their logic. Neural networks are far beyond any kind of static analysis or formal proof. The only way to verify that they are correct (and indeed the only way to program them) is to test them many times with many different inputs and make sure that they behave as expected. This doesn't stop us from making use of them.</p><p>The vulnerability that killed the DAO was very simple in nature. When you send money to an Ethereum contract, it has the option to run some code upon receiving the money. The mistake made by the authors of the DAO was to debit the account of the sender <em>after</em> sending the money. The attacker's contract called the DAO's sending function again, triggering another send before debiting the attackers account for the first send. This vulnberability was actually quite similar to the vulnerabilities that can exist in databases that do not implement transactions (like MonogDB). These are bad vulnerabilities, but they are well understood and it is easy to mitigate them with mechanisms such as 2 phase commits, mutexes, etc. </p><p>While the vulnerability would have been caught in a formal proof, it also would have been caught by a code review. In fact, it was caught by a code review. Least Authority caught this vulnerability 2 years ago when they audited Ethereum, and there were several papers and blog posts written about it in the weeks before the hack. I think that mitigation strategies will take the form of <a href="https://blog.ethereum.org/2016/06/19/thinking-smart-contract-security/?ref=blog.althea.net">defense in depth</a>, with contract developers learning best practices and using frameworks to automate sensitive procedures, much like most databases come with the ability to do transactions, and avoid SQL injection.</p><p>Maybe there is a non Turing complete language out there that strikes the best balance between decidability and expressiveness. When it emerges, it will be possible to implement it on top of Turing-complete languages such as Solidity or EVM bytecode. It is not possible to go the other way. Like getting a haircut, it's a lot easier to take expressiveness away than to add it back. If language research progresses to such a point that it becomes easy to formally verify any program, while retaining the productivity of today's languages, it will greatly benefit all of computing. Until then, in smart contracts as in other areas, people will use code that <em>runs</em> and does what it needs to do with some reasonable assurance of safety.</p><h2 id="lightning">Lightning</h2><p>Another topic that Tony touches on is the Bitcoin Lightning network. The Lightning network is a network of payment channels using hashlock reveals to trustlessly move payments across intermediary nodes without posting any transactions to the blockchain. Tony feels that the Lightning network is overly complex and possibly insecure. I agree with this assessment, but not in the way Tony thinks. I actually think that the Lightning network is complicated because of the non Turing complete language that it is programmed in- Bitcoin script. Allow me to explain.</p><p>Once you get past the complications introduced by Bitcoin script, the concept of channels and hashlocks is simple. A channel is an escrow arrangement that allows two participants to exchange payments directly between each other without having to contact a bank or blockchain to process and clear the payment. Let's say that Alice and Bob want to open a channel. They go to the bank and open a special escrow account and each put in $100. They tell the bank </p><p>"Give this money back to us when you receive a note signed by both of us, with updated balances"</p><p>If Alice now wants to pay Bob $5, she writes a note that says </p><p>"Alice: $95, Bob: $105"</p><p>She signs this and sends it to Bob. Now Bob can consider himself paid. If he wants to get his money out of the channel, he signs the note as well, and gives it to the bank. The bank pays him $105 and Alice $95, and Bob is $5 ahead.</p><p>There's a problem: Someone can cheat. Let's say that Alice and Bob have been exchanging these notes back and forth for a while, and the last note read </p><p>"Alice: $195, Bob: $5".</p><p>If Bob wants to cheat, he could just take the first note to the bank and receive $105. To combat this, we use a sequence number and a "challenge period". When Alice or Bob take a note to the bank, the challenge period starts. If during this challenge period, a signed note with a higher sequence number is submitted, the bank honors this note instead. This way, as long as Alice and Bob check in with the bank at least once every hold period, they can stop each other from cheating.</p><p>This mechanism lets Alice and Bob exchange as many payments as they want, as fast as they can send notes back and forth, within the amount that they have placed in escrow, without having to trust each other. But what if Alice wants to send a payment to someone she doesn't have a channel open with? Let's say that she wants to send a payment to Charlie, and Charlie has a channel open with Bob. She could send Bob a payment, and trust him to send Charlie a payment of the same amount. What if Alice wants to send Charlie a payment without having to trust Bob? This is possible with something called a hashlock.</p><p>Alice sends Bob a note with balances updated to give Bob a payment which says</p><p>"Only honor this note if Bob presents the preimage to this hash: 2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b"</p><p>She sends the preimage to Charlie. Now Bob can only get his money if he can find the preimage. To get Charlie to give him the preimage, he prepares a note like the one that Alice sent him, locked with the same hash. For Charlie to unlock this payment, he must reveal the preimage to either the bank (if he's going to close the channel at this step) or to Bob. Once Bob's got the preimage, he can do the same to get his payment from Alice. Payment setup goes forward, payment authorization goes backward. At each step, incentives are aligned so that participants do not need to trust each other. This kind of payment can go over an arbitrary number of intermediary nodes, and if there is a large enough network, one can theoretically get a payment to anyone on the network.</p><p>This is how the Lightning network is supposed to operate. Of course, in the case of Lightning, the actual procedures are much more complex. This is not because the creators of Lightning were being intentionally obtuse. It is because Lightning needs to work with Bitcoin script, a non Turing complete language. This same type of network is far simpler to implement on Ethereum. Turing complete languages allow humans to express a series of steps in a way that makes sense to us. Non Turing complete languages force the programmer to jump through a lot of hoops, and work around the language. Tony's complaints about the complexity of Lightning actually disprove his take on Turing complete languages from the previous section!</p><p>Tony asks "what if one of the hubs on the Lightning network gets popped?" Absolutely nothing happens to anyone using the hub for payments, although the operator of the hub could lose a lot of money. The entire system is premised upon the being able to move payments across nodes that one does not trust. </p>]]></content:encoded></item>
<item><title>Full Althea presentation</title><link>https://blog.althea.net/full-althea-presentation/</link><guid isPermaLink="true">https://blog.althea.net/full-althea-presentation/</guid><pubDate>Mon, 07 Mar 2016 00:00:00 GMT</pubDate><description>I gave a full presentation on Althea at SF Bitcoin Devs. This talk goes into a lot of detail.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>I gave a full presentation on Althea at SF Bitcoin Devs. This talk goes into a lot of detail.</p><!--kg-card-begin: html--><iframe width="560" height="315" src="https://www.youtube.com/embed/XhIA03Kti9s?rel=0" frameborder="0" allowfullscreen="" loading="lazy" title="Embedded video"></iframe><!--kg-card-end: html-->]]></content:encoded></item>
<item><title>CCC lightning talk</title><link>https://blog.althea.net/ccc-lightning-talks/</link><guid isPermaLink="true">https://blog.althea.net/ccc-lightning-talks/</guid><pubDate>Thu, 14 Jan 2016 00:00:00 GMT</pubDate><description>I gave a quick overview of Althea and UPC at Chaos Computer Congress 2015. It&apos;s a nice easy starting point to understand some of the concepts involved.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>I gave a quick overview of Althea and UPC at Chaos Computer Congress 2015. It's a nice easy starting point to understand some of the concepts involved.</p><!--kg-card-begin: html--><iframe width="560" height="315" src="https://www.youtube.com/embed/zMp2jAHquns?start=6588" frameborder="0" allowfullscreen="" loading="lazy" title="Embedded video"></iframe><!--kg-card-end: html-->]]></content:encoded></item>
<item><title>Proportional hashlocks</title><link>https://blog.althea.net/proportional-hashlocks/</link><guid isPermaLink="true">https://blog.althea.net/proportional-hashlocks/</guid><pubDate>Thu, 17 Dec 2015 00:00:00 GMT</pubDate><description>The proportional hashlock gives us the ability to build a sort of higher level micropayment channel that sits on top of a multihop payment which is released incrementally.</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p><em>This post assumes a pretty in-depth understanding of UPC and various cryptography concepts. Read <a href="https://blog.althea.net/universal-payment-channels/">the UPC blog post</a> if you haven't already.</em></p><p>In an incentivized mesh network, some nodes will be stationary, and some will move. We can set up payment channels between the stationary nodes, and they can pay one another with those. But what about mobile nodes who may only be within range of one another for short amounts of time? A payment channel takes at least a few minutes to set up, if we're going to wait for a sufficient number of confirmations (or even longer if it's a conventional currency and we're dealing with a bank). This is why we have multihop payments. By routing a payment across several existing payment channels, we don't have to wait for a new channel to be set up.</p><p>Multihop payments can result in a lot of network traffic if we don't know what route the payment will take. Depending on the payment routing protocol, there may be a search of the network for every multihop payment (RPR, a payment channel routing protocol, currently does this).</p><p>Instead of having smart conditions return either true or false we can have them return a fraction (see <a href="https://github.com/BumblebeeBat/FlyingFox?ref=blog.althea.net">Flying Fox</a>). The transfer amount of the hashlock is multiplied by the fraction. This way, smart conditions have fine grained control over what fraction of a payment gets transfered. This gives us the option to build more sophisticated smart conditions.</p><p>The proportional hashlock gives us the ability to build a sort of higher level micropayment channel that sits on top of a multihop payment which is released incrementally. Its properties are similar to a low level payment channel in that individual payments are very cheap, and either participant can leave at any time and get all the money they are entitled to. However, this channel only goes one way.</p><h2 id="proportional-hashlock-smart-condition-">Proportional hashlock smart condition:</h2><pre><code>condition(secrets)
  // An array of 1000 hashed secrets
  hashes = [xyz123, abc789, ... ]
  numerator = 0

  // A 'for' loop that will run 1000 times
  for i in 0..1000:
    // If the hashed secret is correct
    if sha3(secrets[i]) === hashes[i]:
      // Add 1 to the numerator
      numerator++

  // Return the fraction of secrets that were correct
  // (the total transfer amount will be proportional to this)
  return numerator / 1000</code></pre><p>(roughly translates as)</p><pre><code>List of 1000 hashes: xyz123, abc789, ...

Numerator: 0

Take this list of hashes and compare them to a list of secrets that you
will be given. Hash each secret in the secrets list, and compare it to
the corresponding hash from the hash list. If they match, add 1 to
Numerator.

return Numerator / 1000</code></pre><p>With a proportional hashlock, the amount of payment released is proportional to the number of correct secrets that are supplied when the condition is evaluated. Here's how to use it to make an incremental multihop payment:</p><p><code>Alice -- Bob -- Charlie -- Doris -- Erin</code></p><p>Alice would like to pay Erin.</p><ul><li>A large multihop payment is set up from Alice to Erin, using payments with proportional hashlocks.</li><li>Alice sends Erin secrets proportional to the amount that she wishes to pay. For instance, with the example smart condition above, a single $1000 payment could be released in $1 increments.</li><li>Each time Alice wants to pay a dollar, she sends the Erin one of the secrets. Erin checks whether it works to unlock a fraction of the payment.</li><li>If it does, it considers the payment complete (At this point, the channel could be closed and Erin would be able to redeem 1 1/1000 of the channel amount, or $1).</li></ul><h2 id="caching">Caching</h2><p>What if Erin caches secrets without passing them on to Doris? If Doris then sends Erin another payment on that channel that would result in Doris not having enough liquidity to honor the cached secrets, Erin is incentivized to refuse that payment (and possibly request that Doris close out the channel and open a new channel with more liquidity). Until that point, Erin can cache the secrets as much as she wants. This is good if the number of individual payments is very high.</p><h2 id="closing-the-proportional-hashlock">Closing the proportional hashlock</h2><p>What happens if Alice and Erin never make another payment? Doris can request that Erin sign an update transaction eliminating the proportional hashlock.</p><p>What if Charlie wants to close the proportional hashlock? He can let Doris know that he wants to do this. At this point Doris can request that Erin sign an update transaction eliminating the proportional hashlock. If Doris does not do this, then Charlie can simply close the channel between him and Doris.</p><h2 id="possible-exploit-alice-sends-the-secrets-to-charlie-">Possible exploit? Alice sends the secrets to Charlie:</h2><p>What if Alice sends secrets to Charlie instead of Erin? Charlie will be able to redeem the proportion of the payment that Alice sent him the secrets for, and so will Bob. In effect, Alice is paying Charlie. Now, if Alice sends those same secrets to Erin, Erin can use them to get a payment from Doris. Doris can use them to get a payment from Charlie.</p><p>So Charlie can't trust a payment from Alice, unless he can get Doris to agree to close their proportional hashlock immediately afterwards. But this doesn't matter, because Charlie is not supposed to be receiving the secrets from Alice anyway.</p><h2 id="what-is-it-good-for">What is it good for?</h2><p>The actions taken in this scenario, and the incentives, are similar to a scenario where Alice sends Erin a series of separate normal multihop payments over the same set of intermediary nodes. The difference is that a payment of a certain size can be set up beforehand and then released slowly, with secrets flowing in one direction, without new payments needing to be set up. The secrets are also cache-able, and can be released in blocks. Also, the payment can be routed as one payment, which can reduce routing traffic. A lot of these goals could probably be accomplished in the routing protocol, but depending on how it was done, they could compromise the strong anonymity guarantees offered by routing protocols such as RPR.</p>]]></content:encoded></item>
<item><title>Universal Payment Channels</title><link>https://blog.althea.net/universal-payment-channels/</link><guid isPermaLink="true">https://blog.althea.net/universal-payment-channels/</guid><pubDate>Wed, 02 Dec 2015 00:00:00 GMT</pubDate><description>Costless, instantaneous payments let us use money in a completely new way. Conventional payment processors impose arbitrary fees and delays, and cryptocurrencies can function only with inevitable confirmation times and blockchain bloat. Free from these constraints, we can create a new class of appli</description><dc:creator>Jehan Tremback</dc:creator><content:encoded><![CDATA[<p>Costless, instantaneous payments let us use money in a completely new way. Conventional payment processors impose arbitrary fees and delays, and cryptocurrencies can function only with inevitable confirmation times and blockchain bloat. Free from these constraints, we can create a new class of applications.</p><p>For instance, incentivized mesh networks. These are networks of independently owned routers which are automatically compensated by the network. In an incentivized mesh network, individuals could invest in providing internet service to their neighbors without the overhead of an ISP business. Also, due to the fact that individual routers compete with one another in such networks, consumers would be free from the monopolistic pricing which characterizes existing ISPs.</p><p>Incentivized mesh networks function by having routers pay their neighbors to forward packets. Nodes could pay per packet, but this would normally impose a huge overhead. Processing these payments with conventional currencies would result in an at least an API call to the payment processor with every payment. It would also likely result in a database entry at the payment processor. Processing these payments with a cryptocurrency (saving each and every one to the blockchain) would quickly result in a very bloated blockchain. Payment packets would vastly outnumber data packets.</p><p>Nodes could keep a tally of payments to one another to reduce the total number of payments. This requires nodes to trust one another. If I am paying you to forward my packets, either I put a deposit down with you, or you extend me credit. In the former scenario, I need to trust you, while in the latter, you need to trust me. The less the amount of credit or deposit is, the larger the number payments will need to be sent.</p><h2 id="payment-channels">Payment Channels</h2><p>What if there was a way to transfer money without trusting the other party, and without incurring the costs of a blockchain or conventional payment? Payment channels can do this. In a payment channel, two parties deposit money with a third entity that both trust. If the channel is to transfer conventional currency, a bank or payment processor plays the role of trusted third party and holds onto the money. Both parties must trust the integrity of that bank or payment processor. If the channel holds cryptocurrency, a contract on a blockchain locks the funds from both parties. Both parties must then trust the integrity of that blockchain.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/01/0_Q1rPydxXD2Zrzv3L.png" class="kg-image" alt="Step 1" loading="lazy" decoding="async"></figure><p>The bank or the blockchain will transfer the locked funds back to the channel participants upon receiving a message signed by both.</p><p>Upon receiving this message, the bank or blockchain also updates the amounts to be transfered back. If Alice and Bob both deposited $100 to open the channel, and close it with balances of $95 and $105, Alice has effectively given Bob $5. So, to pay Bob, Alice signs a message updating her balance to $95 and Bob's balance to $105. She sends this message only to Bob, without contacting the bank or the blockchain that the channel is open with. If Bob wants to get his money out, he simply posts the last signed message to the bank or the blockchain.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/01/0_ChNyIlc6ahI_hc5a.png" class="kg-image" alt="Step 2" loading="lazy" decoding="async"></figure><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/01/0_bWNRetJ1yhcORAnI.png" class="kg-image" alt="Step 3" loading="lazy" decoding="async"></figure><p>There's one issue though- someone could cheat. Let's say that Alice makes a payment to Bob and the balances are updated to Alice- $50 and Bob- $150. Then Alice makes a payment to Bob, reversing the balances to Alice- $150, Bob- $50. Bob could take the old message where he has $150 and post it, cheating Alice out of $100.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/01/0_yeqgENtlXw8LAY5b-1.png" class="kg-image" alt="Step 4" loading="lazy" decoding="async"></figure><p>How to prevent this? We need some way for the bank or the blockchain to find out whether a message represents the account balances that Alice and Bob most recently agreed on. If Alice and Bob put a sequence number on each message and increment it every message, either of them can prove if one message is more recent than another. If the bank or blockchain then waits a certain length of time (or "hold period") before transferring the money back, it gives either party a chance to prove that the other is cheating.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/01/0_kMFNRxvY9J97blCG-1.png" class="kg-image" alt="Step 5" loading="lazy" decoding="async"></figure><p>What if Alice and Bob don't want to wait to get their money out? They can simply sign a message with a hold time of 0. This means that the bank or blockchain will immediately transfer the money to their accounts. The only situation in which the hold time will actually be a factor is a situation where one of the parties wants to close the channel and the other is unresponsive or uncommunicative.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/01/0_XZ74cpD2ogOus7Kg.png" class="kg-image" alt="Step 6" loading="lazy" decoding="async"></figure><p>This is the foundation of Universal Payment Channels (technical details in the <a href="https://blog.althea.net/documents/universal-payment-channels.pdf">white paper</a>).</p><h2 id="multihop-payments-multihop-">Multihop payments {#multihop}</h2><p>Back to the incentivized mesh example: If Alice and Bob both have nodes in an incentivized mesh network, they can open a channel in whatever currency they wish, and exchange packets and payments to their heart's content. But what about mobile nodes? Alice has a cell phone, and happens to walk into range of Charlie's wifi hotspot. Charlie could forward Alice's packets on to their destination, but he's going to need some payment from Alice. Charlie and Alice don't have a channel open- how will Alice pay Charlie?</p><p>What if both Alice and Charlie have channels open with Bob? Alice could send Bob a payment, who would then send Charlie a payment. But now Alice needs to trust Bob.</p><h4 id="smart-conditions-and-hashlocks">Smart conditions and hashlocks</h4><p>We have to make sure that Bob can't steal the money. UPC allows us to make payments with pieces of code called "smart conditions". The bank or blockchain evaluates the smart condition, to find out whether it should transfer some money. We can make a type of smart condition called a hashlock which allows us to trustlessly route payments through one or more intermediary nodes. A hashlock basically says: "transfer this amount of money if you are given the string that hashes to this hash".</p><p>A hashing function turns whatever value you give it into a random-looking string of characters, known as a "hash". For instance, the string "alfred" might be turned into "d8si32" by a hashing function. This has two interesting properties: the same hashing function will always turn "alfred" into "d8si32", and someone who has "d8si32" has no way of knowing that it was derived from "alfred". So, if Jim wants Gregory to be able to recognize that someone has the correct secret word, but Jim doesn't want to actually give Gregory the secret, Jim can give Gregory a hash of the secret. If someone gives Gregory a word they claim is the secret, Gregory can hash it and find out whether it is the correct word.</p><h4 id="trustless-multihop-payments-with-hashlocks">Trustless multihop payments with hashlocks</h4><p>To route a payment through Bob, Alice sends Charlie a secret, and the amount of the payment. Alice then sends a payment to Bob, hashlocked with the secret she sent Charlie. Bob sends his own payment message to Charlie, hashlocked with the same secret, and containing a payment of the same amount.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/01/0_PPXzlXk3kSBoVwx7.png" class="kg-image" alt="Step 7" loading="lazy" decoding="async"></figure><p>To unlock the payment from Bob, Charlie reveals the secret to him, which allows Bob to unlock the payment from Alice.</p><figure class="kg-card kg-image-card"><img src="https://blog.althea.net/content/images/2019/01/0_DS1iPMdNDMm1G_uj.png" class="kg-image" alt="Step 8" loading="lazy" decoding="async"></figure><p>This all happens as fast as packets can be forwarded, and doesn't store anything on the blockchain or bank servers. It's an ideal mechanism to handle the high volume of payments that need to be processed by an incentivized mesh network.</p><p>You may be wondering- how do we know that Bob is the best intermediary node to route payments from Alice to Charlie? Stay tuned for the next post, about Reactive Payment Routing, a routing protocol which finds the cheapest path for payments.</p><p>For a more complete overview of UPC, see the <a href="https://blog.althea.net/documents/universal-payment-channels.pdf">white paper</a>.</p><p>Acknowledgement: Payment channels utilizing a hold period in this way were, to the best of my knowledge, first introduced in Zackary Hess's <a href="https://github.com/BumblebeeBat/FlyingFox?ref=blog.althea.net">Flying Fox</a>.</p>]]></content:encoded></item>
</channel></rss>