Prove a file was authored by a human.
A file is authored by a human when three things hold at once:
- the exact bytes are hashed and salted into a content commitment,
- the author's wallet EIP-712-signs that commitment, and
- for genomic work, a 50-SNP bloom fingerprint from the author's vault matches.
That is the opposite of AI-content watermarking, which says only "this was generated." HumanMark says "a specific human committed to these bytes."
HumanMark is the folder gate and the portable proof. The wallet signature and
the DNA fingerprint match are applied where the key material lives (GenoVault in
the browser, or the biofs verbs). The content commitment HumanMark computes is
the one an on-chain ERC-8356 ConsentGrant contract verifies, so the same
commitment travels from the laptop to the vault to the chain unchanged.
The content commitment is
keccak256(abi.encodePacked(salt, sha256(content))) with a 32-byte salt,
using the Ethereum keccak-256 (not NIST SHA3). HumanMark, biofs, and
ConsentGrant.sol must all agree on this or nothing verifies. The keccak
implementation is pinned against Ethereum vectors, and the EIP-712 encoder is
pinned against the canonical Ether Mail example. See tests/.
HumanMark is the local half of the ERC-8356 Content Credentials profile. For
clinical or genomic work the author's wallet signs a Bind struct over the
ERC-8356 EIP-712 domain (ConsentGrant / 1), and a revocable consent grant is
created whose scope leaf is the content commitment. For a public work (a paper,
a blog post, an EIP) there is no grant and no subject: authorship is permanent,
the Bind is signed with revocable=false and a zero subject, and nothing is
minted.
humanmark init
humanmark scan <path...> screen files, record commitments
humanmark bless <path> --reason "..." sticky green override (never genomic)
humanmark prove <path> --biocid biocid://... [--snp-bloom HEX]
humanmark verify <path>
humanmark status
biofs humanmark attest <file> screens, writes a C2PA assertion sidecar, and emits the prove bundle. It will not pull a biocid:// onto this machine.
Without installing, run it as a module: python3 -m humanmark <cmd>.
- A clean public document (a paper with the author's own
@genobank.ioemail and operator biowallet, which the allow-list clears) can beSAFEand earn a content commitment and aBinddigest. - A document with an unredacted patient SSN, a third-party email, or a real
labelled IP is
BLOCKEDuntil the author redacts it orblesses it with a written reason. - Any genomic or clinical format (
.vcf .bam .fastq .cram .ped .bim .fam .dcm .dicom .sqliteand the rest) isBLOCKEDand can never be blessed to green; it enters the vault as genomic, gated by consent.
~/.humanmark/config.json (or $HUMANMARK_HOME/config.json):
author_emails,operator_wallets,allowed_hosts— the allow-list of things that are not PHI.chain_id,verifying_contract— the deployedConsentGrantEIP-712 domain. Setverifying_contractto the deployed address; until then theBinddigest uses a placeholder domain andprovewarns.
- Zero third-party dependencies. Pure-Python keccak-256 and EIP-712.
- The salt is never shared: it lives in the local ledger and is disclosed separately to bind a prove bundle to exact bytes.
- The local Ed25519 key (via
ssh-keygen) signs the prove bundle for tamper-evidence. It is not the author's wallet key. - Raw SNP calls never leave the vault and never go on-chain; only the 50-SNP bloom commitment travels.
HumanMark is licensed under the GNU Affero General Public License v3.0 or later,
with the same additional terms as the other public GenoBank.io repositories
(attribution, no trademark license). See LICENSE.
You may use, study, and modify it, including as a network service, if you share your source under the same terms and display "Powered by GenoBank.io".
A commercial license without the AGPL obligations is available from GenoBank.io. Contact daniel@genobank.io.
The ERC-8356 specification, if submitted to the Ethereum Magicians / ERC repository, remains CC0 as required by EIP-1.
The house rule behind this split is
docs/OPEN-TOOLS-BIONFT-COMMERCE.md:
the tools are open so labs will put clinical and genomic data on them.
BioNFT commercialization (biosample and biodata tokens found by DNA
fingerprint) stays with GenoBank.io.