Skip to content
GenobankPublic

About

Prove a file was authored by a human. AGPL-3.0-or-later, same house license as biofs-cli.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HumanMark

Prove a file was authored by a human.

A file is authored by a human when three things hold at once:

  1. the exact bytes are hashed and salted into a content commitment,
  2. the author's wallet EIP-712-signs that commitment, and
  3. 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 commitment is on-chain-parity

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/.

Relationship to ERC-8356

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.

Usage

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>.

What earns a green mark

  • A clean public document (a paper with the author's own @genobank.io email and operator biowallet, which the allow-list clears) can be SAFE and earn a content commitment and a Bind digest.
  • A document with an unredacted patient SSN, a third-party email, or a real labelled IP is BLOCKED until the author redacts it or blesses it with a written reason.
  • Any genomic or clinical format (.vcf .bam .fastq .cram .ped .bim .fam .dcm .dicom .sqlite and the rest) is BLOCKED and can never be blessed to green; it enters the vault as genomic, gated by consent.

Configuration

~/.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 deployed ConsentGrant EIP-712 domain. Set verifying_contract to the deployed address; until then the Bind digest uses a placeholder domain and prove warns.

Design

  • 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.

License

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.

About

Prove a file was authored by a human. AGPL-3.0-or-later, same house license as biofs-cli.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages