Quarterly Report of Q3 2024-TrueBlocks FY24–1558
Quarterly Report for 3Q 2024
As reported earlier, in June, we were the lucky recipient of another Ethereum Foundation grant for TrueBlocks miniDapps.
As a reminder, this project includes developing an SDK and miniDapps (small, fully-decentralized and fully-private applications) demonstrating to the community the practicality of decentralizing the Ethereum data stack.
This Q3 2024 update is the first of four under the conditions of the grant.
Executive Summary
All agreed to deliverables were completed or are in the final stages of completion (our docs needs a bit more work).
We also built two things we didn’t anticipate (“streaming contexts” and trueblocks-node
). All of this is explained below.
Introduction
The quarterly milestone for this quarter was well-specified and included several clear deliverables. These deliverables are listed below.
- SDK Development:
- Complete coding, testing, and documentation for the [TrueBlocks] SDK. - MiniDApp Development:
- Begin the design and coding of [one of] the miniDapps. - Community Engagement:
- Write at least one Medium article promoting decentralized indexing and local-first apps.
- Write a quarterly report.
Below, we describe our progress on each of these deliverables. After that, we discuss a few things we did this quarter that were not part of a deliverable, and then we finish with a discussion of the milestones for the next quarter.
Deliverables for 3rd Quarter 2024
Coding, testing, and documentation of the SDK
The SDK is coded and mostly documented and working well.
Much of the work on the SDK involved updating our code-generation tools to output the “skeleton” of the SDK. Using the code-generation tool ensures that our SDK, command line tools, and API server all mimic each other. In this way, users need not learn multiple interfaces.
For testing, we re-wrote all of our existing examples using the SDK. WE also added a few extra examples to “stretch” the SDK. Previously, our examples were written using the hard-to-use trueblocks-core
code. Re-writing the examples informed us on how to use the SDK and pointed out some of the shortcomings with the documentation.
One big “stretch” was adding “streaming contexts” which allows applications built on our SDK to be MUCH faster. It also allows us to avoid the use of JSON (don’t get me started on JSON). We’ll write more about “streaming contexts” in a future article. This also had the happy outcome of allowing for cancelable streams, which we needed for the miniDapp. Suffice a single word to stand in for this idea: “FAST.”
Another significant “stretch” was the creation of a new tool called trueblocks-node
. This tool encapsulates a number of super-important functions of TrueBlocks. Previously, these functions had been troublesome to manage: indexing, address monitoring, the Unchained Index, pinning, and other long-running processes. Basically, trueblocks-node
is a daemon manager. We will write about this more in the future, but it helps with a lot of things, including our docker
version, our dAppNode
version, and miniDapps
.
As we started using the SDK, it became increasingly clear that we needed to improve our documentation. Our code-generation tool is excellent, but it needs to be improved in relation to the SDK docs. We have all the information we need to write better docs (README files, website pages, etc.), but this information needs to be incorporated into the SDK docs. We didn’t want to slow the progress the other deliverables for the documentation.
Upshot: Coding, testing, and documenting the SDK made great progress in the quarter. We still have work to do, but mostly only in the documentation. Building the SDK is an iterative process, and I’m sure we’ll continue to improve it as we go.
Resources:
- GitHub Repo for the SDK
- GoLang documentation for the SDK
- Examples using the SDK
- Discussion about SDK during community call
Initial design and coding of the miniDapp
Along with the creation of the SDK, writing the first alpha version of our miniDapp was the other primary deliverable for this quarter. We made exceptional progress.
The miniDapp is nowhere near ready for prime time, but it certainly shows the potential of what we’re building. It’s past the “proof of concept” stage and is at least as far as “pre-alpha.”
I won’t go into detail here, but I demonstrated the miniDapp during our community call. Please view that video here.
The video mentions speed, the “streaming context” I discussed above, and some of the immense benefits of local-first software. If anyone has further questions about this work, please contact us. We’ll give you an in-person demo using your own address.
Upshot: “Proof of concept” completed. “Pre-alpha” started and working well. Showing potential.
Resources:
Community Engagement
We had a great quarter on the “community engagement” front as well. In addition to the deliverables (detailed below) we also:
- had a community call with members of our community and promised further calls in the future,
- joined a Twitter Space with the FileVerse crew as a proponent of “decentralize everything.” Looking forward to re-connecting at DevCon in November,
- had two calls with Austin Griffith and members of the BuidlGuidl related to his BuidlGuidl Client project. His project inspired our
trueblocks-node
project, which wasn’t planned but is super interesting. We discuss it here during the community call.
On an ultra-local note, we also spoke at two community gatherings in our home city (Philadelphia, PA, USA). The first event was a debate about layer two sequencers and the need for them to be decentralized (I was on the “decentralization is mandatory” side—our side won). The second speaking engagement demonstrated our miniDapp project. We are scheduled to speak again for a different group in Philly in late October.
Article on the benefits of decentralized indexing
Another deliverable was an article about the benefits of decentralized indexing, which was written and published in September. The article discusses an experiment we completed using the new TrueBlocks SDK versus the Covalent, Etherscan, and Alchemy APIs. Read it. You’ll be surprised at the results.
Conclusion of the Article: TrueBlocks indexing (and, by extension, local first indexing) is way better.
This article was the first (tenth?) salvo in a many-years-long battle trying to explain why local first is better than a shared resource such as an API. We argue that because there is no rate-limiting in the local case, one is able to dig much deeper into the chain’s history. As a result, a perfect trustless transactional history becomes possible.
I’ll repeat it: “Perfect trustless transactional histories.”
Why is this important?
- Perfect automated accounting
- Balance Sheets and Profit and Loss Statements every 12 seconds
- Radicle transparency without permission
- Manifestation of the ethos: “Everyone can see everything.”
The above is not true with an API run by a third party. Either one must pay for access or agree that not “everything” is visible. (In fact, I don’t even think seeing everything is possible with an API.)
Upshot: The article was published
Quarterly report
The final deliverable was this quarterly report.
Upshot: The quarterly report was delivered.
What’s Next
This article is getting long enough, so I’ll end by listing the deliverables for the 4th Quarter of 2024:
- SDK Enhancement:
- Extended SDK with on-chain write support ← This will be complicated. - MiniDApp Development:
- Nearly completed miniDapp (coding, testing, installer, documentation, announcements) ← This will be hard. - Community Engagement:
Participate in at least one podcast or conference talk. (We are speaking at DevCon as part of the dAppNode group’s special interest group). More later. - Write a quarterly report.
Community Call
Below are a few direct links into interesting parts of the community call:
- Introduction
- Review of the Ethereum Foundation Grant
- Discussion of Progress on the SDK
- Discussion of Command Line Examples and TrueBlocks Node
- Discussion of Mini-Dapp Progress
- Question and Answer Period
Conclusion
We’re pleased to have received this grant. It’s great that the grant so clearly spells out our deliverables. It makes completing tasks much more straightforward. We met all of our deliverables.
It’s also encouraging that as we complete our work, we’re discovering other excellent uses and extensions for the new SDK — for example, “streaming contexts” and trueblocks-node
. We will write much more about these unexpected but excellent developments soon.
Your Support is Welcome
TrueBlocks is funded from personal funds and grants from The Ethereum Foundation (2018, 2022, 2024), Optimism Retro PGF (2022, 2023), Consensys (2019), Moloch DAO (2021), Filecoin/IPFS (2021), and our lovely GitCoin donors.
If you like this article and wish to support our work, please donate to our GitCoin grant using ETH or any token. If you’re an Optimism badge holder, vote for our project. Or send us a tip directly at trueblocks.eth or 0xf503017d7baf7fbc0fff7492b751025c6a78179b.