{"id":13477760,"url":"https://github.com/txpipe/mumak","last_synced_at":"2026-02-18T02:36:27.904Z","repository":{"id":210905084,"uuid":"705276853","full_name":"txpipe/mumak","owner":"txpipe","description":null,"archived":false,"fork":false,"pushed_at":"2024-05-21T19:00:00.000Z","size":55,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-21T20:08:56.874Z","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":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/txpipe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-15T15:08:51.000Z","updated_at":"2024-05-30T08:28:03.184Z","dependencies_parsed_at":"2023-12-05T14:30:57.774Z","dependency_job_id":"ad65141a-99c1-4582-bff9-96327195709d","html_url":"https://github.com/txpipe/mumak","commit_stats":null,"previous_names":["txpipe/mumak"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/txpipe/mumak","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fmumak","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fmumak/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fmumak/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fmumak/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/txpipe","download_url":"https://codeload.github.com/txpipe/mumak/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fmumak/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29566410,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T00:47:08.760Z","status":"online","status_checked_at":"2026-02-18T02:00:09.468Z","response_time":162,"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":"2024-07-31T16:01:47.187Z","updated_at":"2026-02-18T02:36:27.876Z","avatar_url":"https://github.com/txpipe.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Mumak\n\nA custom PostgreSQL extension to interact with Cardano CBOR data directly.\n\n## Introduction\n\nThe defacto wire format used to exchange Cardano data is CBOR. By Cardano data we refer to Blocks, Transactions, UTxOs, Certificates and all of its inner structures.\n\nWhen indexing this data onto a relational database, such as PostgresQL, we usually deserialize the CBOR structures and map the values to different columns \u0026 tables in our schema.\n\nSome times having a normalized data model is exactly what your use-case needs, but there are multiple scenarios where this mapping just adds complexity and performance penalties.\n\nMumak is a PostgreSQL extension that provides several custom functions to interact with Cardano CBOR data directly on the database.\n\nFor example, this means that you could store a whole Cardano Tx as CBOR in a bytes PostgreSQL column and then use SQL to ask things such as:\n\n- Does this transaction involve address X?\n- What's the total ADA output of this transaction?\n- Is this transaction minting a token for policy X?\n\nAnd the evaluation of this values will happen in-process, as part of the Db query execution.\n\n## Available Functions\n\nThis is a list of the available / planned functions that are / will be supported by Mumak.\n\n### `tx_lovelace_output`\nEvaluates the total lovelace output of the transaction.\n\n`tx_lovelace_output(tx_cbor, tx_era)`\n\n### `tx_asset_output`\n\nEvaluates the total output of a specific asset of the transaction.\n\n`tx_asset_output(tx_cbor, tx_era, policy_id, asset_name)`\n\n### `tx_has_address`\nIs a predicate that evaluates tx cbor structures of the specified era. It will output true if the \n\n`tx_has_address(tx_cbor, tx_era, address_bech32)`\n\n### `tx_hash`\nComputes the hash of a transaction from its CBOR representation\n\n`tx_hash(tx_cbor, tx_era)`\n\n### `tx_has_input`\nIs a predicate that evaluates if tx cbor structure of the specified era contains a particular input.\n\n`tx_has_address(tx_cbor, tx_era, input_tx_hash, input_output_index)`\n\n### `tx_is_valid`\nIs a predicate that evaluates if tx cbor structure is considered a valid transaction from the perspective of the node validation.\n\n`tx_is_valid(tx_cbor, tx_era)`\n\n### `tx_has_asset`\nA predicate that evaluates if tx cbor structure shows an output containing a particular asset.\n\n`tx_has_asset(tx_cbor, tx_era, policy_id, asset_name)`\n\n### `tx_asset_mint`\nEvaluates the total assets of a specified of a specified policy / name that are minted by the transaction.\n\n`tx_asset_mint(tx_cbor, tx_era, policy_id, asset_name)`\n\n### `tx_asset_burn`\nEvaluates the total assets of a specified of a specified policy / name that are burned by the transaction.\n\n`tx_asset_mint(tx_cbor, tx_era, policy_id, asset_name)`\n\n### `tx_has_datum`\nA predicate that evaluates if tx cbor structure shows an output containing a particular datum.\n\n`tx_has_datum(tx_cbor, tx_era, datum_hash)`\n\n### `tx_has_metadata_label`\nA predicate that evaluates if the tx cbor structure includes metadata with a particular label\n\t\n`tx_has_metadata_label(tx_cbor, tx_era, label)`\n\t\n### `tx_metadata_label`\nEvaluates the metadatum value for a particular label contained in the tx cbor structure.\n\n## Getting Started\n\n// TODO\n\n## Ecosystem\n\n### Oura Integration [PLANNED]\n\nAn Oura sink will be developed to output common Cardano structures (Blocks, Transactions, UTxOs, Certificates) to a well-known schema that leverages the Mumak extensions for further querying.\n\nUsing Oura's integration with Mithril, this provides a way to bootstrap a queryable Cardano dataset in very little time.\n\n### Scrolls Integration [PLANNED]\n\nScrolls will provide helper utility functions to create reducers that map data into Mumak-compatible records that can be stored in PostgreSQL directly. This approach simplifies the complexity of building complex reducer algorithms by offloading some of the complexity to the PostgreSQL database.\n\n### Demeter Integration [PLANNED]\n\nDemeter will provide a highly available, horiztonally scalable access to Mumak data as part of their services. Developers will be able to access a PostgreSQL instance directly and perform SQL queries on common Cardano CBOR structures using Mumak statements.\n\nData will be updated continously showing the most recent data from each of the common network in the Cardano blockchain ecosystem.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftxpipe%2Fmumak","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftxpipe%2Fmumak","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftxpipe%2Fmumak/lists"}