{"id":50500809,"url":"https://github.com/prof-faustus/idattr-onchain","last_synced_at":"2026-06-02T11:03:42.391Z","repository":{"id":362023103,"uuid":"1256728518","full_name":"prof-faustus/idattr-onchain","owner":"prof-faustus","description":"Anchor identity-registry roots on the BSV chain: build/sign a standard BIP143/FORKID tx committing a 32-byte root, broadcast to Teranode regtest (verified live, mined). Companion to identity-attribution.","archived":false,"fork":false,"pushed_at":"2026-06-02T07:54:54.000Z","size":13,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-02T09:23:58.801Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prof-faustus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-02T03:25:42.000Z","updated_at":"2026-06-02T07:54:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/prof-faustus/idattr-onchain","commit_stats":null,"previous_names":["prof-faustus/idattr-onchain"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/prof-faustus/idattr-onchain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prof-faustus%2Fidattr-onchain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prof-faustus%2Fidattr-onchain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prof-faustus%2Fidattr-onchain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prof-faustus%2Fidattr-onchain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prof-faustus","download_url":"https://codeload.github.com/prof-faustus/idattr-onchain/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prof-faustus%2Fidattr-onchain/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33818579,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-02T11:03:41.624Z","updated_at":"2026-06-02T11:03:42.382Z","avatar_url":"https://github.com/prof-faustus.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# idattr-onchain\n\nAnchor an identity-registry root **on the BSV chain**. Builds and signs a standard BSV transaction\n(BIP143 / SIGHASH_FORKID) that spends a funded P2PKH output and commits the 32-byte registry/anchor\nroot through the SCARCITY / TEA-BSV **note-anchoring template** — never OP_RETURN — for broadcast to\na Teranode regtest node via `sendrawtransaction`.\n\nIt reuses the audited BSV primitives from `overlay-broadcast` (path deps): `bsv` (tx build, P2PKH,\n`sighash`, serialize) and `ckd` (k256 ECDSA `sign_prehash_der`). It is a **separate workspace** from\nthe self-contained `identity-attribution` system precisely because it depends on the sibling repo.\n\n## Use\n\n```powershell\n# 1) a key + its regtest P2PKH address (mine coins to ADDRESS)\nidattr-onchain keygen\n# -\u003e PRIVKEY .. / PUBKEY .. / H160 .. / ADDRESS m...\n\n# (mine 101 blocks to ADDRESS so a coinbase matures; read its txid = block.merkleroot and value)\n\n# 2) build the signed anchor tx\nidattr-onchain build-anchor --privkey \u003chex\u003e --pubkey \u003chex\u003e \\\n  --coinbase-txid \u003ctxid\u003e --vout 0 --value \u003csats\u003e \\\n  --anchor-root \u003c32-byte-hex\u003e [--fee 500]\n# -\u003e TXID .. / RAWTX \u003chex\u003e   (broadcast RAWTX with sendrawtransaction)\n```\n\nThe transaction has a single output — the **possession outpoint** — whose locking script is the\nnote-anchoring carrier `\u003croot\u003e OP_DROP OP_DUP OP_HASH160 \u003cpkh\u003e OP_EQUALVERIFY OP_CHECKSIG`: the\n32-byte root rides as pushdata (carried, not executed) ahead of a native P2PKH spend tail, so the\noutput stays a genuinely spendable UTXO and the act of spending the funded input is bound to\ncommitting the root in one transaction. This satisfies REQ-CHAIN-0003 (state root committed by the\npossession transaction), REQ-CHAIN-0001/0002 (standard P2PKH), and the absolute OP_RETURN prohibition\n(REQ-CHAIN-0051 / REQ-BUILD-0010). It mirrors `bsvscript::BuildEnvelopeDrop` and\n`SPV/03-identity/anchor` (SYS-ENC-001/002, ID-CON-001).\n\n## Verified live\n\nSee [ANCHOR_RECEIPT.md](ANCHOR_RECEIPT.md) — a real `idattr` registry root committed on-chain on the\nTeranode regtest node, accepted by `sendrawtransaction` and mined into a block.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprof-faustus%2Fidattr-onchain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprof-faustus%2Fidattr-onchain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprof-faustus%2Fidattr-onchain/lists"}