{"id":22976291,"url":"https://github.com/dmk/infoledger","last_synced_at":"2025-07-08T12:07:00.729Z","repository":{"id":267685829,"uuid":"902044640","full_name":"dmk/infoledger","owner":"dmk","description":"A tamper-evident ledger system that anchors data to Bitcoin for cryptographic timestamping and verification","archived":false,"fork":false,"pushed_at":"2024-12-11T20:20:33.000Z","size":237,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T08:18:40.025Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/dmk.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}},"created_at":"2024-12-11T19:52:24.000Z","updated_at":"2024-12-11T20:20:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"43a70086-0792-4617-b0ce-e32c87bc9c30","html_url":"https://github.com/dmk/infoledger","commit_stats":null,"previous_names":["dmk/infoledger"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dmk/infoledger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmk%2Finfoledger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmk%2Finfoledger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmk%2Finfoledger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmk%2Finfoledger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmk","download_url":"https://codeload.github.com/dmk/infoledger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmk%2Finfoledger/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264267071,"owners_count":23581929,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-12-15T00:49:08.598Z","updated_at":"2025-07-08T12:07:00.697Z","avatar_url":"https://github.com/dmk.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# InfoLedger\n\nA ledger system that anchors data entries to public blockchains for tamper-evident timestamping and verification. Built with Bun, TypeScript, and React, it provides a simple way to create immutable records with cryptographic proofs.\n\nThis system is particularly useful for scenarios requiring trusted record-keeping and audit trails, such as supply chain tracking, document notarization, or compliance logging. While the system itself is not decentralized, it leverages public blockchains as neutral sources of truth.\n\nThe current implementation uses Bitcoin for anchoring, but the architecture supports integration with any blockchain or timestamping service, allowing organizations to maintain verifiable records while choosing their preferred anchoring mechanism.\n\n## How It Works\n\nThe system maintains a hash-linked ledger where:\n1. Each entry contains its data and a hash of the previous entry\n2. Entry hashes are anchored to the blockchain\n3. Entries are considered verified once their transaction has sufficient confirmations (50 blocks)\n\nThis provides:\n- Cryptographic proof that data existed at a specific time\n- A tamper-evident chain of entries\n- Independent verification through public blockchains (just Bitcoin for now)\n\nNote: While entries are linked through hashes, the system primarily relies on Bitcoin anchoring for verification. The hash chain provides structure but is not the primary security mechanism.\n\n## Setup\n\n### Prerequisites\n- [Bun](https://bun.sh/) (v1.0 or later)\n- [Docker](https://www.docker.com/) and Docker Compose\n- Node.js 18+ (for frontend development)\n\n### Backend Setup\n\n1. Install dependencies:\n   ```bash\n   cd backend\n   bun install\n   ```\n\n2. Start the Bitcoin regtest node:\n   ```bash\n   docker-compose up -d bitcoin\n   ```\n\n3. Create the wallet and generate initial blocks:\n   ```bash\n   bun run scripts/setup-bitcoin-regtest.ts\n   ```\n\n4. Start the backend server:\n   ```bash\n   bun run src/server.ts\n   ```\n\nThe backend will start on http://localhost:4891\n\n### Frontend Setup\n\n1. Install dependencies:\n   ```bash\n   cd frontend\n   bun install\n   ```\n\n2. Start the development server:\n   ```bash\n   bun dev\n   ```\n\nThe frontend will be available at http://localhost:3000\n\n## Usage\n\nThe application allows you to create and verify timestamped entries on the Bitcoin blockchain. Here's how it works:\n\n1. Create a new entry by filling out the form. Each entry requires an Entity ID and some data.\n   Entries with the same Entity ID are grouped together, representing different versions of the same entity.\n\n   \u003cimg src=\"docs/images/create-new-entry.png\" alt=\"create entity form\" width=\"600\"\u003e\n\n2. When first created, the entry will be marked as \"unverified\". This is because it needs sufficient blockchain confirmations to be considered verified.\n\n   \u003cimg src=\"docs/images/unverified-entry.png\" alt=\"unverified entry\" width=\"600\"\u003e\n\n3. A background verification task runs every 6 seconds to check if entries have received enough confirmations.\n   Currently, the entry is considered confirmed when its transaction has 50 blocks on top of it.\n\n4. To make the entry verified, generate 50 new blocks:\n   ```bash\n   bun run scripts/generate-blocks.ts 50\n   ```\n\n5. Refresh the page - your entry should now show as verified with a Bitcoin timestamp proof.\n\n   \u003cimg src=\"docs/images/verified-entry.png\" alt=\"verified entry\" width=\"600\"\u003e\n\nEach entry is immutably linked to its previous version through a hash chain, and every hash is anchored to the Bitcoin blockchain for tamper-evident timestamping.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmk%2Finfoledger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmk%2Finfoledger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmk%2Finfoledger/lists"}