Darkblock participated in the Arweave hackathon in March/April 2021, and it was a great experience. The community is very helpful and open, but there was a bit of a learning curve for us how best to leverage Arweave, and also trying to understand just what the heck this Arweave thing is exactly. Hopefully this helps you ramp up quickly.

What is Arweave?

Arweave is a native blockchain technology to permanently store data. It uses an endowment to continually pay miners to prove they have access to the data stored, and it uses it’s own native currency to facilitate the storage of data. That means it is NOT an ERC-20 token. With Arweave, you create a transaction and sign it with your wallet, which may or may not include a file to store. You are given a cost to store that data, and you execute that transaction, which transfers AR out of your wallet for the privilege. The file and metadata with the transaction are then available via HTTP GET and via GraphQL queries. You can store small files or very large files, and it is very cost effective compared to Ethereum (pennies per megabyte).

Darkblock is all about creating exclusivity for NFTs using a decentralized encryption protocol to control access to content. We want to give creators the ability to create NFTs with a preview image while locking up the high resolution original so that only the NFT owner has access. We want to give that NFT owner something truly unique.

NFTs are forever, but the data that many NFTs currently point to is not. Enter Arweave, the best data storage solution for the permaweb.

Darkblock on Arweave

During the Arweave Hackathon we created a handful of NFTs with associated Darkblocks. We stored a preview version of each piece of art as a jpg, and then we encrypted the high resolution image using AES-256 and placed that into a “Darkblock”, a separate Arweave transaction that is referenced by the NFT metadata.

Here is one such example for “Donut Volcano”:

Here is the preview image we pushed to Arweave, accessed via HTTP using an Arweave gateway:
https://arweave.net/Dlo-QPuyxlJFr_hpAinXUzhpQA6f9cc4DiPpAc7Qldk

Here is the transaction data on the arweave block viewer:
https://viewblock.io/arweave/address/Dlo-QPuyxlJFr_hpAinXUzhpQA6f9cc4DiPpAc7Qldk
Here is the smart contract for this NFT:
https://viewblock.io/arweave/address/Dlo-QPuyxlJFr_hpAinXUzhpQA6f9cc4DiPpAc7Qldk?tab=code
Which is just a javascript file also uploaded to Arweave!

Here is the smart contract transaction:
https://viewblock.io/arweave/tx/ngMml4jmlxu0umpiQCsHgPX2pb_Yz6YDB8f7G6j-tpI
And here is the actual javascript file:
https://arweave.net/ngMml4jmlxu0umpiQCsHgPX2pb_Yz6YDB8f7G6j-tpI

Here is the state of this NFT:
https://viewblock.io/arweave/address/Dlo-QPuyxlJFr_hpAinXUzhpQA6f9cc4DiPpAc7Qldk?tab=state

Here is the transaction data for that NFT using the GraphQL interface:
https://arweave.net/graphql?query=query
(Hit play!)
You can also construct other queries in GraphQL to use Arweave as a permanent database of sorts. There are endless possibilities using this feature to create dapps on top of Arweave.

Here is the NFT from above on Verto’s Space (more on that below!):
https://space.verto.exchange/asset/Dlo-QPuyxlJFr_hpAinXUzhpQA6f9cc4DiPpAc7Qldk

Notice all of these refer to the same transaction id. You can go look up the transaction data using that id, or refer to the files within that transaction very easily by using a gateway, such as arweave.net.

Pretty simple, right? And that’s it! Well, no, not exactly. There is actually much more to Arweave.

Arweave also has smart contracts!

But, they are much different from the smart contracts you are used to. The smart contracts in Arweave are actually a logical layer built on top of the data transactions. Smartweave, the logical layer that executes these contracts, typically runs in the browser and executes these smart contracts by taking a series of inputs (just Arweave transactions) to the smart contract and calculating the end state.

This is great for NFTs because it allows you to store the data AND the smart contract to act as the certificate of ownership using a singular transaction, something that has been dubbed Atomic NFTs. We created our very first Darkblocks using an NFT spec devised by the Verto team when we built a prototype during the Arweave hackathon.

We think this is the future. But, unfortunately, it is not quite the present. Much of the initial demand for NFTs has been around Ethereum standards, for better or for worse (we think worse!). Darkblock will go where the NFT action is, but we will continue to create associated Darkblocks in Arweave for their efficiency and permanence. It is by far the best way to store data permanently.

We also urge you to check out PSTs, which is another logical construct that the Arweave community has embraced. The impacts of PSTs will be massive, we think it will change business models for all companies forever.

Arweave is full of these standards that promote composability. If you haven’t checked out Arweave we encourage you to jump in with both feet. Do it now!

Helpful links:
You can create an Arweave wallet here.
You can buy AR on gate.io.
You can get started creating transactions with arweave-js here.
You can use this permaweb dropper to do one-off uploads with no code.
For Arweave smart contracts go here.
Go here to view Arweave transaction data.
Check out the first NFT spec for Arweave devised by Verto, then head to Verto’s FT marketplace (alpha!) at https://space.verto.exchange.
Arweave is also very active on Discord.

Then go participate in the next Arweave hackathon! Or, just get to buidling.

Why wait?

Recommended Twitter accounts to follow to keep up with the Arweave community:
https://twitter.com/samecwilliams
https://twitter.com/arweaveteam
https://twitter.com/vertoexchange
https://twitter.com/tateberenbaum
https://twitter.com/kyvenetwork
https://twitter.com/johnletey
https://twitter.com/open_koi