Emerging Clouds — Distributed Hosting Update 04

The Different Tests of Holo Closed Alpha

Emerging Clouds — Distributed Hosting Update 04

HOLO
HOLO
Published in
7 min readApr 25, 2019

--

Summary

As we continue with Closed Alpha testing, we’re getting lots of questions from people who are curious about how things are going. What are the test results? What sorts of peak TPS are we achieving? Some of these questions are easy to answer, others require more detail because Holochain is radically different from blockchain. Read on for results and their explanations.

Highlights

  1. Another Look At Our Closed Alpha Plans
  2. Networking: Browser-To-Host Pipeline Passing Tests
  3. Performance: Testing Reveals Holochain Bottlenecks and Pushes Massive Speedups
  4. Holochain Functionality: First Bridge Between Holo hApps Demonstrated
  5. Why No TPS? A Deep Look At Holochain’s Agent-Centricity
Ultimate goals for the closed alpha testnet

Details

1. Another Look At Our Closed Alpha Plans

While Closed Alpha is thrilling for us, it might not look all that exciting to observers. There are a lot of low-level components that need to be tested, refined, and re-tested. As we layer each new component, we need to make sure it introduces no side effects into the existing system. We’re moving carefully and methodically so we can pay appropriate attention to detail. That’s why Closed Alpha is being rolled out slowly — at this stage, it’s most appealing to the brave, patient, and detail-oriented. You can be assured that the results we share will get more exciting as we develop more high-level components.

What sorts of tests are we running? Well, it depends on the components being tested.

Individual functions, such as HoloFuel’s transactor flow, are covered with a battery of unit and scenario tests. They are designed to exercise the entire range of scenarios for a transaction — timeouts, insufficient funds, cancellations, and so on. These tests are run automatically every time a change is introduced to make sure it doesn’t break expectations.

Components that contain a lot of moving parts, such as the networking pipeline from the user’s browser to their chosen host, require something more comprehensive. For these, we run integration tests on individual groupings of components as well as the full, end-to-end pipeline. This involves some manual testing, automation, internal demos, and old-fashioned problem solving.

This is an iterative process. As we implement each solution, we assess how well it works. We then refine or replace it with something else if needed. It takes courage to decide to throw out something that’s not working, but it’s worth it if it makes the foundation stronger.

The road to open alpha, a tree of dependencies

2. Networking: Browser-To-Host Pipeline Passing Tests

Our networking pipeline is well-tested and showing itself to be sufficient for the next stage of Closed Alpha. In the first Emerging Clouds we shared that it was ready for testing; in the last issue we described how it works and shared some early testing results. You may recall that these results forced us to change one of our components for a solution that works even better than we’d expected.

That component — the secure tunnel between the proxy servers and hosts — is also being tested in the host-to-host DHT network to improve firewall punch-through. We devised a ‘HoloPort cuckoo’ service that opens up long-lasting connections to a node’s peers over the tunnel, pinging them periodically. We’re using it to test and monitor connection reliability. So far, it’s holding up strongly and we’re very satisfied with our choice.

This networking milestone enables us to open testing to a broader group of people who may not have the technical knowledge to participate in low-level networking tests. This next stage will involve core hApp usage, allowing us to proceed with user-based, functional testing.

3. Performance: Testing Reveals Holochain Bottlenecks and Pushes Massive Speedups

During internal testing, we uncovered performance issues in the underlying Holochain-Core. As a result, the core dev team has devoted themselves to performance testing and improvements over the past few weeks, creating many performance gains in various parts of Holochain. Some parts have seen 80%–90% improvements! We’re grateful for the core dev team’s commitment to making sure Holo is not just functional, but enjoyable to use.

4. Holochain Functionality: First Bridge Between Holo hApps Demonstrated

We’ve implemented and tested a bridge between two apps — HoloFuel and the Signed Service Logs app. This will allow hosts to invoice an application provider, along with a proof of service. Bridging has been in use for a while in Holochain-Proto, but this is the first example on Holochain-Rust between apps meant for production use. With the experience fresh in our minds, we wrote the Holochain Guidebook article on bridging!

Bridging is one of the features that gets developers most excited about Holochain. Their experience in the blockchain world is one of the siloed platforms that need a ‘glue layer,’ such as Bitcoin’s Lightning Network, to talk to each other. Our aim is to make it easy to connect Holochain apps together — easier than with web apps, and far easier than with blockchains. In the early 2000s we witnessed the flourishing of mashups — web apps that took data from multiple sources to create new, exciting, and useful experiences. This was made possible because big platforms, such as mapping and weather services, made their data publicly available through web APIs. We’re excited to see what people will come up with when they have the power to mash up their own data in the same way, connecting one app to another and combining them in interesting and insightful ways!

5. Why No TPS? A Deep Look At Holochain’s Agent-Centricity

One of the most common questions we get during Closed Alpha is about what sort of transactions per second (TPS) we’re seeing on the Holo Testnet. This is a convenient way to compare us to PoW and PoS blockchains, DAG chains, and other DLTs. That’s a bit like comparing apples to carrots though — they’re all based on cryptography, digital ledgers, and distributed computing — beyond that, the comparisons don’t apply.

On Holochain, the only consensus is between those who choose to interact with each other. Every agent carries their own permanent record of the actions they’ve taken. For example, let’s say Alice wants to buy a tall mocha latte from Bob’s coffee shop using a Holochain community currency app. Her phone contacts Bob’s POS terminal to offer to send him five units and Bob’s node checks her history and agrees to her offer — if she has sufficient funds. It’s a transaction that involves only two parties who quickly come to an agreement without the oversight of a pool of miners.

But how does Bob know that Alice hasn’t falsified her ledger somewhere along the way? For this, we have peer validation. Everyone who wants to use the community currency app participates in a shared database called the distributed hash table (DHT). They offer up some of their spare computer capacity to audit and remember each other’s transactions. This means Bob can ask his peers to check whether the data Alice has given him is the same as the data they’ve witnessed. Holochain does this work behind the scenes, at the ‘subconscious’ level.

Alice and Bob have come to consensus — by themselves, certainly, but supported by data gathered from impartial witnesses. This is quite different from blockchain, where you have to submit your transaction for a group of miners and wait for confirmation that the transaction has been accepted.

We call this approach agent-centric computing, and it’s why we’re able to offer such high transaction throughput and user autonomy.

However, it also means it’s tricky to talk about TPS and other familiar metrics. It’s a bit like asking about the ‘words per second’ of the English language. All of those English speakers are able to chat with each other without waiting for the approval of everyone else. Words per second scales with the number of speakers — but those people are also distributed across the face of the planet in homes, workplaces, and the streets of their towns.

In the same way, Holo Host and the Holochain apps running on it don’t create a single, global perspective that definitively produces data on this or that feature. You may see some stats as Holo matures, but we’ll never be able to tell you every detail about the network like transactions per second, market cap, or the total amount of data being hosted.

And that is by design.

Holo Closed Alpha Architecture
Become a Host

Learn more about Holo.

--

--

HOLO
HOLO
Editor for

Holo is a distributed cloud hosting platform for peer-to-peer Holochain apps (hApps); building a better web. Powered by @Holochain