Ethereum DApps Without the Web

Shadowlands — an efficient way to quickly do the most common tasks on Ethereum

When I write a smart contract for Ethereum, I’m reminded of when I first started programming ANSI C in 1997. There was a feeling of being close enough to the hardware to touch it. We manipulated data types, we squeezed every bit of efficiency possible from every instruction, and we packed data as tightly as we could.

This type of mindset — that of the efficiency programmer — is common to contract programmers who come from “The Back End”. Another trait common to this programmer archetype, is that we usually end up handing the user interface off to somebody else.

This can be a problem when, as back-enders, we have ideas of our own that we want to bring to fruition. The realization of the idea becomes dependent on someone else, much earlier than we would like.

I wrote Shadowlands to solve this problem. With an afternoon of coding in Python, it’s possible to stand up a completely serviceable DApp, without touching a web browser.

I started with cdp.shadowlands.eth — a Shadowlands version of the Maker CDP Portal:

I don’t mean to say that you could write the CDP portal in an afternoon, but you could write something like Burninator ( burninator.eth ) — a game I wrote for, and referenced in the Shadowlands programming tutorial.

Besides being a platform for writing DApps, I’ve tried to make Shadowlands a very efficient way to quickly do the most common tasks on Ethereum — sending Ether and tokens, and tracking and manipulating transactions. I also added native Uniswap support.

I offer this tool to the community under the permissive MIT license, in the hope that it will encourage more use of this remarkable platform.