Scan the large QR on the left
This QR contains the public wallet address printed near the bottom of the paper wallet. It is safe to scan.
PR3DICTPhysical paper wallet redemption
Local processing only
Master [N]era's physical tip
Three private steps. Two QR codes. One word hidden on the note. Your images, password, and private key never leave this browser.
Redeem locally
Use close-up photos. Do not photograph the whole paper wallet: the surrounding QR codes can confuse a single-code scanner.
This QR contains the public wallet address printed near the bottom of the paper wallet. It is safe to scan.
This QR contains 76 encrypted bytes. A normal wallet cannot import it until it is unlocked with the word on your note.
Scan the small border QR codes with your phone until one shows a person's name. Type it exactly, including capital letters. The name appears more than once.
The address derived from the recovered private key exactly matches the public QR you scanned.
Private key hidden
Open redemption standard
The paper wallet format is public. Any developer or locally operating coding AI can recreate the decoder from this section without access to our private files.
Do not upload the QR and password to a remote AI service. Ask it to produce code that runs locally, then use that local code yourself.
Download the independent PDFThe large left QR is a normal EVM public address. The large right QR is raw binary data, not text and not a MetaMask keystore. The small border codes contain clues and one repeated name used as the case-sensitive password.
| Offset | Length | Field |
|---|---|---|
| 0 | 16 | scrypt salt |
| 16 | 12 | AES-GCM IV |
| 28 | 32 | Encrypted private key |
| 60 | 16 | Authentication tag |
Reject the payload unless its decoded binary length is exactly 76 bytes.
Encode the password as UTF-8 without changing case. Derive 32 bytes using scrypt with N=16384, r=8, and p=1. Decrypt the 32-byte ciphertext using AES-256-GCM, the 12-byte IV and 16-byte tag. There is no additional authenticated data.
packed = QR.decodeBinary(image)
assert length(packed) == 76
salt = packed[0:16]
iv = packed[16:28]
ciphertext = packed[28:60]
authTag = packed[60:76]
key = scrypt(UTF8(password), salt,
N=16384, r=8, p=1, length=32)
privateBytes = AES_256_GCM_DECRYPT(
key, iv, ciphertext, authTag, additionalData=NONE)
assert length(privateBytes) == 32
privateKey = "0x" + lowercaseHex(privateBytes)
derivedAddress = EVM_ADDRESS_FROM_PRIVATE_KEY(privateKey)
assert equalIgnoreCase(derivedAddress, publicAddressFromLeftQR)Ask the AI to implement the pseudocode as a local, offline program. Require a QR decoder that returns raw binary bytes, scrypt with the exact parameters above, AES-256-GCM authentication, and EVM address verification before displaying the key. Tell it never to send inputs or results over a network and never to log the private key.
The compact payload deliberately removes the JSON field names and metadata found in a standard Ethereum keystore. This reduced the printed QR from roughly 77×77 modules to 33×33 modules, making physical scanning reliable. The tradeoff is that a compatible decoder must reconstruct the known format before MetaMask import.
The algorithm above is sufficient to recover any existing PR3DICT paper wallet independently. The website performs the same operations locally and adds a safer interface for non-technical holders.