{"id":21995383,"url":"https://github.com/blinklabs-io/tx-submit-api","last_synced_at":"2026-03-01T18:04:18.519Z","repository":{"id":38212093,"uuid":"467977176","full_name":"blinklabs-io/tx-submit-api","owner":"blinklabs-io","description":"Cardano Transaction Submit API service","archived":false,"fork":false,"pushed_at":"2026-02-15T13:53:33.000Z","size":1045,"stargazers_count":14,"open_issues_count":4,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-15T20:34:49.609Z","etag":null,"topics":["api","blockchain","cardano","cardano-submit-api","go","golang","transactions"],"latest_commit_sha":null,"homepage":"","language":"Go","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/blinklabs-io.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":".github/CODEOWNERS","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":"2022-03-09T15:09:59.000Z","updated_at":"2026-02-15T13:53:35.000Z","dependencies_parsed_at":"2023-10-16T21:19:30.274Z","dependency_job_id":"a627e05a-07f9-4f2f-906d-5b6d0c5b1196","html_url":"https://github.com/blinklabs-io/tx-submit-api","commit_stats":{"total_commits":240,"total_committers":5,"mean_commits":48.0,"dds":0.5166666666666666,"last_synced_commit":"a51f386b38a957d5a6d6a964ce3acdeab6653bec"},"previous_names":["cloudstruct/go-cardano-submit-api"],"tags_count":62,"template":false,"template_full_name":null,"purl":"pkg:github/blinklabs-io/tx-submit-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blinklabs-io%2Ftx-submit-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blinklabs-io%2Ftx-submit-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blinklabs-io%2Ftx-submit-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blinklabs-io%2Ftx-submit-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blinklabs-io","download_url":"https://codeload.github.com/blinklabs-io/tx-submit-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blinklabs-io%2Ftx-submit-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29977970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T16:35:47.903Z","status":"ssl_error","status_checked_at":"2026-03-01T16:35:44.899Z","response_time":124,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["api","blockchain","cardano","cardano-submit-api","go","golang","transactions"],"created_at":"2024-11-29T21:14:45.869Z","updated_at":"2026-03-01T18:04:18.502Z","avatar_url":"https://github.com/blinklabs-io.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tx-submit-api\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./.github/assets/tx-submit-api-logo.png\" alt=\"Tx Submit API\" width=\"320\"\u003e\n\u003c/div\u003e\n\nTransaction Submission API for Cardano\n\nA simple HTTP API which accepts a CBOR encoded Cardano transaction as a\npayload body and submits it to a Cardano full node using the Ouroboros\nLocalTxSubmission Node-to-Client (NtC) protocol.\n\n## Usage\n\nThe recommended method of using this application is via the published\ncontainer images, coupled with Blink Labs container images for the Cardano\nNode.\n\n```\ndocker run -p 8090:8090 ghcr.io/blinklabs-io/tx-submit-api\n```\n\nBinaries can be executed directly and are available from\n[Releases](https://github.com/blinklabs-io/tx-submit-api/releases).\n\n```\n./tx-submit-api\n```\n\n### Configuration\n\nConfiguration can be done using either a `config.yaml` file or setting\nenvironment variables. Our recommendation is environment variables to adhere\nto the 12-factor application philisophy.\n\n#### Environment variables\n\nConfiguration via environment variables can be broken into two sets of\nvariables. The first set controls the behavior of the application, while the\nsecond set controls the connection to the Cardano node instance.\n\nApplication configuration:\n- `API_LISTEN_ADDRESS` - Address to bind for API calls, all addresses if empty\n    (default: empty)\n- `API_LISTEN_PORT` - Port to bind for API calls (default: 8090)\n- `DEBUG_ADDRESS` - Address to bind for pprof debugging (default: localhost)\n- `DEBUG_PORT` - Port to bind for pprof debugging, disabled if 0 (default: 0)\n- `LOGGING_HEALTHCHECKS` - Log requests to `/healthcheck` endpoint (default: false)\n- `LOGGING_LEVEL` - Logging level for log output (default: info)\n- `METRICS_LISTEN_ADDRESS` - Address to bind for Prometheus format metrics, all\n    addresses if empty (default: empty)\n- `METRICS_LISTEN_PORT` - Port to bind for metrics (default: 8081)\n- `TLS_CERT_FILE_PATH` - SSL certificate to use, requires `TLS_KEY_FILE_PATH`\n    (default: empty)\n- `TLS_KEY_FILE_PATH` - SSL certificate key to use (default: empty)\n\nConnection to the Cardano node can be performed using specific named network\nshortcuts for known network magic configurations. Supported named networks are:\n\n- mainnet\n- preprod\n- preview\n- testnet\n\nYou can set the network to an empty value and provide your own network magic to\nconnect to unlisted networks.\n\nTCP connection to a Cardano node without using an intermediary like SOCAT is\npossible using the node address and port. It is up to you to expose the node's\nNtC communication socket over TCP. TCP connections are preferred over socket\nwithin the application.\n\nCardano node configuration:\n- `CARDANO_NETWORK` - Use a named Cardano network (default: mainnet)\n- `CARDANO_NODE_NETWORK_MAGIC` - Cardano network magic (default: automatically\n    determined from named network)\n- `CARDANO_NODE_SKIP_CHECK` - Skip the connection test to Cardano Node on start\n    (default: false)\n- `CARDANO_NODE_SOCKET_PATH` - Socket path to Cardano node NtC via UNIX socket\n    (default: /node-ipc/node.socket)\n- `CARDANO_NODE_SOCKET_TCP_HOST` - Address to Cardano node NtC via TCP\n   (default: unset)\n- `CARDANO_NODE_SOCKET_TCP_PORT` - Port to Cardano node NtC via TCP (default:\n    unset)\n- `CARDANO_NODE_SOCKET_TIMEOUT` - Sets a timeout in seconds for waiting on\n   requests to the Cardano node (default: 30)\n\n### Connecting to a cardano-node\n\nYou can connect to either a cardano-node running locally on the host or a\ncontainer running either `inputoutput/cardano-node` or\n`blinklabs-io/cardano-node` by mapping in the correct paths and setting the\nenvironment variables or configuration options to match.\n\n#### Together with blinklabs-io/cardano-node in Docker\n\nUse Docker to run both cardano-node and tx-submit-api with Docker\nvolumes for blockchain storage and node-ipc.\n\n```\n# Start node\ndocker run --detach \\\n  --name cardano-node \\\n  -v node-data:/opt/cardano/data \\\n  -v node-ipc:/opt/cardano/ipc \\\n  -p 3001:3001 \\\n  ghcr.io/blinklabs-io/cardano-node run\n\n# Start submit-api\ndocker run --detach \\\n  --name tx-submit-api\n  -v node-ipc:/node-ipc \\\n  -p 8090:8090 \\\n  ghcr.io/blinklabs-io/tx-submit-api\n```\n\n#### Using a local cardano-node\n\nUse the local path when mapping the node-ipc volume into the container to use\na local cardano-node.\n\n```\n# Start submit-api\ndocker run --detach \\\n  --name tx-submit-api \\\n  -v /opt/cardano/ipc:/node-ipc \\\n  -p 8090:8090 \\\n  ghcr.io/blinklabs-io/tx-submit-api\n```\n\n### Sending transactions\n\nThis implementation shares an API spec with IOHK's Haskell implementation. The\nsame instructions apply. Follow the steps to\n[build and submit a transaction](https://github.com/input-output-hk/cardano-node/tree/master/cardano-submit-api#build-and-submit-a-transaction)\n\n```\n# Submit a binary tx.signed.cbor signed CBOR encoded transaction binary file\ncurl -X POST \\\n  --header \"Content-Type: application/cbor\" \\\n  --data-binary @tx.signed.cbor \\\n  http://localhost:8090/api/submit/tx\n```\n\n### Metrics UI\n\nThere is a metrics web user interface running on the service's API port.\n\nConnect to [http://localhost:8090/ui/](http://localhost:8090/ui/) with your\nbrowser to view it.\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./.github/assets/tx-submit-api-20241120.png\" alt=\"Tx Submit API\" width=\"640\"\u003e\n\u003c/div\u003e\n\n## Development\n\nThere is a Makefile to provide some simple helpers.\n\nRun from checkout:\n```\ngo run .\n```\n\nCreate a binary:\n```\nmake\n```\n\nCreate a docker image:\n```\nmake image\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblinklabs-io%2Ftx-submit-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblinklabs-io%2Ftx-submit-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblinklabs-io%2Ftx-submit-api/lists"}