Permanent Storage
How Arweave Enhances ZelfProof Security
Every user's zelfName
, generated during the creation of a ZelfProof, is stored on Arweave. This integration allows users to retrieve their zelfName
at any time directly from the blockchain, ensuring they have uninterrupted access to their assets. Even if users lose access to their device or backup, they can retrieve their zelfName
and zelfProof
from Arweave by searching the zelfName they leased.
Retrieval and Backup
The Arweave storage mechanism ensures that users:
Never Lose Access: Since the
zelfName
is stored on a blockchain, users can retrieve it anytime, even if other local or cloud-based storage methods fail.Easily Recover Assets: By fetching their
zelfName
from Arweave, users can restore their ZelfProof and access their assets with confidence, knowing that this data is secure, immutable, and permanently stored.
How It Works with Zelf Name Service
When a user creates a ZelfProof in Zelf Name Service, the generated ZK-Face Proof is uploaded to Arweave.
The upload process generates a unique transaction ID (TX ID), which serves as a permanent reference to the ZelfProof.
Users can retrieve their ZelfProof by querying Arweave using the Zelf Name that is stored inside the tags associated with the QR Code stored inside Arweave.

# Transaction Node
Each transaction is represented as a node containing the following key fields:
id
: The unique transaction ID. This can be used to fetch the transaction data directly from Arweave using the URL format:https://arweave.net/{id}
. Example: https://arweave.net/pgjhRRZ8tz6BGajDbk9CQY1eJlHuFZ9pisPphDcint4owner.address
: The wallet address of the transaction creator. This is the address that uploaded the data to Arweave.data.size
: The size of the stored data (in bytes). In this case, it’s18369
bytes.
# Tags
Tags are metadata associated with the transaction. In this case, they provide critical information about the zelfProof
and its linked data:
Content-Type
: Indicates the MIME type of the stored data. Here, it’simage/png
.zelfProof
: A cryptographic proof linked to thezelfName
. This proof is essential for identity verification, encryption, and secure wallet interactions. It’s stored in an encrypted format, ensuring privacy and security.ethAddress
,solanaAddress
, andbtcAddress
: Wallet addresses for Ethereum, Solana, and Bitcoin, respectively, associated with thiszelfName
. These addresses allow users to interact with various blockchain ecosystems.evm
: A list of Ethereum Virtual Machine (EVM)-compatible networks supported by thiszelfProof
. For example:ETH, BNB, MATIC, AVAX
.zelfName
: The unique identifier for the user (johan1234789.zelf
). This links thezelfProof
to the user’s account and serves as a lookup key.
Accessing Data
To access the backup data for a specific zelfName
:
Query Arweave’s GraphQL API:
Filter by the
zelfName
tag to locate the transaction.Example query:
{ transactions( tags: [{ name: "zelfName", values: ["your_zelf_name_here.zelf"] }] owners: ["vzrsUNMg17WFPmh73xZguPbn_cZzqnef3btvmn6-YDk"] ) { edges { node { id owner { address } data { size } tags { name value } } } } }
Use the returned
id
to access the transaction:URL:
https://arweave.net/{id}
This implementation establishes Arweave as the backbone of Zelf’s decentralized backup system, enabling users to securely store and retrieve their zelfProofs,
and access to their wallets. This approach ensures a robust, reliable, and permanent solution giving users seamless access to their cryptographic assets and identities.
Test it for yourself here
Last updated