Tom MacWright

tom@macwright.com

Arweave

Shortly after I published IPFS, Again, I started hearing from people about arweave. According to Michael Arrington, founder of TechCrunch, the project is ‘quietly crushing it’. I decided to give it a shot.

Loom

Storage first

IPFS & dat are big projects that try to reimplement and replace many different technologies. They have addressing systems, sophisticated network layers, and swappable storage models.

What they don’t have, at least until the advent of Filecoin, is a standard way to replicate traditional web hosting by paying money to other people, so they will store and distribute your files. There are independent efforts, like hashbase for dat and Pinata for IPFS, but these are not standardized or decentralized. You pay the friendly proprietors to host your data, and they host it on some computers somewhere, much like traditional web hosting.

Arweave, on the other hand, chose to solve the ‘pay for storage’ problem first. You send some ‘crypto-money’ to the network, and market incentives go into effect, and eventually your data is part of the ‘permaweb’ – theoretically, forever.

This is a very important component. Without it, you have a decentralized website that shuts down every time you close your laptop.

A ‘blockweave’

dat and IPFS are not blockchains.

Arweave is essentially a blockchain: it’s a twist on a blockchain called a ‘blockweave’. There’s a ‘lightpaper’. And an ICO. And a worrying number of ‘investors’ in its fanbase.

Which brings us to an ethics issue: a majority of the people who boosted arweave to me were also investors in the project. Michael Arrington, for instance, is the leader of Arrington XRP Capital, which was one of the major investors in arweave’s ICO. Those who can remember back to 2009 will note that conflicts of interest have been a theme for him.

I am not an investor in arweave. I also have a deep and oft-confirmed skepticism of everything having to do with ‘crypto’ and blockchains. They have, with very few exceptions, contributed nothing to the world and wasted time, money, and energy.

So my skepticism of the crypto industry is that the central technologies they hype simply do not work. If I come along one that does work, I’ll happily acknowledge that and gain back a tiny bit of respect for the crypto industry. And that’s roughly what I found with arweave. It’s early-stage and is extremely limited in capability and functionality. But there’s no denying that it does work, and the experience of using it is pretty decent.

So, let’s dive in.

First run

From arweave.org, you click ‘Deploy a page now’, and then on the remarkably-similar page, you click the identically-styled button that says ‘Get free tokens’. As mentioned earlier, their central value proposition is that you can pay the system to store your files. So at least for now, they give you free ‘crypto-money’ to play with. This puts you into a funnel that starts with… continuing with Google.

Now, this gave me pause. They’re asking for a Google login to thwart Sybil attack, in which someone registers a lot of user accounts and gains control of the network or at least lots of free tokens. I’m not nearly as paranoid or anti-establishment as many blockchain fans, but having to ‘log in with Google’ is something that I avoid. It also chipped away at the ‘decentralized’ marketing.

You can avoid this step and earn those tokens instead, but it’s hard and it’s pretty obvious that the arweave project does not expect you to go that route.

So you Continue with Google and get an email with a link to a download page for your key file. This flow worked perfectly the first time I tried it, and broke the second time with a server 500. Probably just a bug. Anyway, once you’ve got your free tokens, it’s on to deploying an app. I install the CLI:

~ npm install -g arweave-deploy

That was a really fast install. Too fast. Zero dependencies? Let’s see what’s in it. Okay, so it’s a webpacked bundle of one 3.6MB file. Hunting down what’s in it leads me to one of the big ahas: this is definitely a two-tier system.

arweave-deploy is just an HTTP client. It talks to arweave.net and sends files and pays for storage. That’s why it’s small. Unlike IPFS and dat, when you install ‘arweave’, you aren’t necessarily becoming a full participant: instead you’re a customer. arweave-deploy just communicates with arweave.net: it doesn’t include any of the juicy details involved in decentralization. You can also run a ‘full node’ but you probably won’t – the setup and requirements of a full node are way higher. Anyway, let’s continue deploying:

~ arweave deploy hi.html
Enter your encryption passphrase to decrypt KvUSJG9Sin-025b-qDbsz9JbuvK9Xr_JvKX5ffrZgzM

File

Path: hi.html
Size: 3.00 Bytes

Transaction

ID: Pebyh0JG-rbkxtRSlCrJ1jR2lICJSOrtBoLlqj97VMk
Price: 0.000214319698 AR

Tags:

 - Content-Type:text/html
 - User-Agent:ArweaveDeploy/1.3.1

Wallet

Address: KvUSJG9Sin-025b-qDbsz9JbuvK9Xr_JvKX5ffrZgzM
Current balance: 0.000000000000 AR
Balance after uploading: -0.000214319698 AR

Insufficient balance: balance 0.000000000000 AR, fee: 0.000214319698 AR

Running deploy reminds me I need a key. I run arweave key-create and that works.

~ arweave deploy hi.html
Enter your encryption passphrase to decrypt CUbHCJfFTk-F8A641PyKt-HkhtcOIAyjcTc0BozXYv8

This CLI experience is pretty good: I’m not encountering cryptic errors and there’s a clear information hierarchy.

Your file is deploying! 🚀
Once your file is mined into a block it'll be available on the following URL

https://arweave.net/0aGlc2HrFroO6eT4jrlvdMcvHVEv7CTAXTuXixrE7XQ

You can check it's status using 'arweave status 0aGlc2HrFroO6eT4jrlvdMcvHVEv7CTAXTuXixrE7XQ'

Quick note that the grammar error in that message – it’s instead of its – was fixed between starting this post and publishing. That’s attention to detail.

Now I check the status of that upload:

~ arweave status 0aGlc2HrFroO6eT4jrlvdMcvHVEv7CTAXTuXixrE7XQ
Trasaction ID: 0aGlc2HrFroO6eT4jrlvdMcvHVEv7CTAXTuXixrE7XQ
Status: 202 Pending ⛏

A few minutes later, and the file is hosted! https://arweave.net/0aGlc2HrFroO6eT4jrlvdMcvHVEv7CTAXTuXixrE7XQ exists. Note that I really do mean a few minutes later. I tried later on with a stopwatch to figure out how long. It took 3 minutes and 20 seconds for a 4 kilobyte HTML file to be added.

So, to review, getting set up with the arweave CLI was actually pretty decent. When I didn’t follow the instructions, like when I tried to deploy a file before I had any ‘crypto-money’, the error messages produced were informative. There’s some jargon, like how a file is ‘mined into a block’, but it doesn’t overwhelm the basics, like that that file will be available at a URL.

The limits

Unlike other blockchains, it has created truly scalable infrastructure, as it will be able to reach up to 5000 tp/s, and store data at a fraction of the cost of competitors. - on Crunchbase.

Arweave talks a pretty big game in its investor marketing. I went down the rabbit hole of trying to see: is arweave competitive with Amazon S3, the gold standard for cheap cloud file storage? This led to an entertaining exploration of arweave cost structure on Observable, which suggested that 64MB of storage would cost $160,000.

Arweave cost curve

While that’s technically true, it won’t actually matter, because you can’t upload files larger than 3MB to arweave. There’s a limit. So you never pay more than about 18 cents for an upload. There are more limits:

  1. No files bigger than 3 megabytes
  2. Only text/* mime types
  3. You can only upload one file at a time

These are pretty harsh limits, and are obviously a hard blocker for hosting this site on arweave.

The theory is that arweave’s efficiency is higher for smaller chunks, which is fair. How efficient is it? Just for kicks, if you take arweave’s current pricing and extrapolate up to the cost per gigabyte, it works out to $61, which is the cost of storing that gigabyte on Amazon S3 for 221 years.

And if we’re measuring speed, note that deploying a 4KB file took me over 3 minutes.

Arweave might be scalable and inexpensive compared to blockchains, but that’s only because they are ludicrously bad: Bitcoin handles 4.6 transactions per second, compared to VISA’s 24,000. Compared to cloud storage or other technology norms, arweave is off by a factor of 10 or more.

Let’s be clear: if you’re going to claim that a technology “could save you millions in bandwidth,” like IPFS did, or that it’s a “fraction of the cost of traditional centralised providers,” like arweave does, these statements have to be potentially true in at least one way. You have to measure it out and project the numbers for some deployment in some scenario to make sure that the project can at least approximate the result you are advertising. Otherwise these statements are just empty, dishonest spin about something that could be but won’t.

There’s a technology in planning – ‘Fast-Write’ – which would eliminate the 3MB cap and make writes… faster. And there are plans to support more than one transaction per wallet per block, which would also create a speedup. But neither are close to being finished.

Summing up

Arweave is a real product that you can use, and, within its strict limits, it works. By focusing less on decentralization and more on usability and storage, it’s faster to get started with than IPFS or dat, but it’s also just a vastly different project. The documentation is less sprawling and more focused, and the usability of the provided tools is pretty good.

Whether arweave’s principles can scale, whether the economics will continue to work when a majority of the data in the network was paid for years ago and is now stale, whether ‘miners’ will prefer to participate in IPFS/FileCoin or arweave, whether the costs and speeds will ever approximate commonplace cloud storage – I don’t know.