{"id":16735811,"url":"https://github.com/mrz1836/go-whatsonchain","last_synced_at":"2026-02-10T01:10:41.717Z","repository":{"id":36280133,"uuid":"215573863","full_name":"mrz1836/go-whatsonchain","owner":"mrz1836","description":"🔗 Unofficial Golang SDK for the WhatsOnChain API","archived":false,"fork":false,"pushed_at":"2026-02-07T19:22:06.000Z","size":2118,"stargazers_count":15,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-02-08T04:12:59.587Z","etag":null,"topics":["api","bitcoin","bsv","go","golang","gomod","gomodule","whatsonchain","whatsonchain-api","woc"],"latest_commit_sha":null,"homepage":"https://docs.whatsonchain.com/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrz1836.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":".github/AGENTS.md","dco":null,"cla":null},"funding":{"github":"mrz1836","custom":"https://mrz1818.com/?tab=tips\u0026utm_source=github\u0026utm_medium=sponsor-link\u0026utm_campaign=go-whatsonchain\u0026utm_term=go-whatsonchain\u0026utm_content=go-whatsonchain","buy_me_a_coffee":"mrz1818"}},"created_at":"2019-10-16T14:49:54.000Z","updated_at":"2026-02-07T19:19:13.000Z","dependencies_parsed_at":"2026-01-29T22:02:19.636Z","dependency_job_id":null,"html_url":"https://github.com/mrz1836/go-whatsonchain","commit_stats":null,"previous_names":[],"tags_count":55,"template":false,"template_full_name":null,"purl":"pkg:github/mrz1836/go-whatsonchain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrz1836%2Fgo-whatsonchain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrz1836%2Fgo-whatsonchain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrz1836%2Fgo-whatsonchain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrz1836%2Fgo-whatsonchain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrz1836","download_url":"https://codeload.github.com/mrz1836/go-whatsonchain/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrz1836%2Fgo-whatsonchain/sbom","scorecard":{"id":665034,"data":{"date":"2025-08-11","repo":{"name":"github.com/mrz1836/go-whatsonchain","commit":"01370a2c90aea2aab575af9fe64f20ea5e8de281"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.7,"checks":[{"name":"Code-Review","score":-1,"reason":"Found no human activity in the last 15 changesets","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: .github/SECURITY.md:1","Info: Found linked content: .github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: .github/SECURITY.md:1","Info: Found text in security policy: .github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:13","Warn: no topLevel permission defined: .github/workflows/run-tests.yml:1","Warn: no topLevel permission defined: .github/workflows/sync-labels.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/mrz1836/go-whatsonchain/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/mrz1836/go-whatsonchain/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/mrz1836/go-whatsonchain/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/mrz1836/go-whatsonchain/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/mrz1836/go-whatsonchain/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/mrz1836/go-whatsonchain/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/mrz1836/go-whatsonchain/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/mrz1836/go-whatsonchain/run-tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/mrz1836/go-whatsonchain/run-tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/mrz1836/go-whatsonchain/run-tests.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/run-tests.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/mrz1836/go-whatsonchain/run-tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sync-labels.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/mrz1836/go-whatsonchain/sync-labels.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/sync-labels.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/mrz1836/go-whatsonchain/sync-labels.yml/master?enable=pin","Info:   0 out of  10 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":9,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 24 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T17:43:10.068Z","repository_id":36280133,"created_at":"2025-08-21T17:43:10.068Z","updated_at":"2025-08-21T17:43:10.068Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29287917,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T21:57:15.303Z","status":"ssl_error","status_checked_at":"2026-02-09T21:57:11.537Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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","bitcoin","bsv","go","golang","gomod","gomodule","whatsonchain","whatsonchain-api","woc"],"created_at":"2024-10-13T00:07:25.541Z","updated_at":"2026-02-10T01:10:41.711Z","avatar_url":"https://github.com/mrz1836.png","language":"Go","funding_links":["https://github.com/sponsors/mrz1836","https://mrz1818.com/?tab=tips\u0026utm_source=github\u0026utm_medium=sponsor-link\u0026utm_campaign=go-whatsonchain\u0026utm_term=go-whatsonchain\u0026utm_content=go-whatsonchain","https://buymeacoffee.com/mrz1818"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 🔗\u0026nbsp;\u0026nbsp;go-whatsonchain\n\n**The unofficial Go SDK for the [whatsonchain.com API](https://docs.whatsonchain.com/) supporting both **[BSV](https://bsvblockchain.org/)** and **[BTC](https://thatsbtcnotbitcoin.com/)** blockchains.**\n\n\u003cbr/\u003e\n\n\u003ca href=\"https://github.com/mrz1836/go-whatsonchain/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release-pre/mrz1836/go-whatsonchain?include_prereleases\u0026style=flat-square\u0026logo=github\u0026color=black\" alt=\"Release\"\u003e\u003c/a\u003e\n\u003ca href=\"https://golang.org/\"\u003e\u003cimg src=\"https://img.shields.io/github/go-mod/go-version/mrz1836/go-whatsonchain?style=flat-square\u0026logo=go\u0026color=00ADD8\" alt=\"Go Version\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/mrz1836/go-whatsonchain/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/mrz1836/go-whatsonchain?style=flat-square\u0026color=blue\" alt=\"License\"\u003e\u003c/a\u003e\n\n\u003cbr/\u003e\n\n\u003ctable align=\"center\" border=\"0\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"right\"\u003e\n       \u003ccode\u003eCI / CD\u003c/code\u003e \u0026nbsp;\u0026nbsp;\n    \u003c/td\u003e\n    \u003ctd align=\"left\"\u003e\n       \u003ca href=\"https://github.com/mrz1836/go-whatsonchain/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/mrz1836/go-whatsonchain/fortress.yml?branch=master\u0026label=build\u0026logo=github\u0026style=flat-square\" alt=\"Build\"\u003e\u003c/a\u003e\n       \u003ca href=\"https://github.com/mrz1836/go-whatsonchain/actions\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/mrz1836/go-whatsonchain?style=flat-square\u0026logo=git\u0026logoColor=white\u0026label=last%20update\" alt=\"Last Commit\"\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"right\"\u003e\n       \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \u003ccode\u003eQuality\u003c/code\u003e \u0026nbsp;\u0026nbsp;\n    \u003c/td\u003e\n    \u003ctd align=\"left\"\u003e\n       \u003ca href=\"https://goreportcard.com/report/github.com/mrz1836/go-whatsonchain\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/mrz1836/go-whatsonchain?style=flat-square\" alt=\"Go Report\"\u003e\u003c/a\u003e\n       \u003ca href=\"https://codecov.io/gh/mrz1836/go-whatsonchain\"\u003e\u003cimg src=\"https://codecov.io/gh/mrz1836/go-whatsonchain/branch/master/graph/badge.svg?style=flat-square\" alt=\"Coverage\"\u003e\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\n  \u003ctr\u003e\n    \u003ctd align=\"right\"\u003e\n       \u003ccode\u003eSecurity\u003c/code\u003e \u0026nbsp;\u0026nbsp;\n    \u003c/td\u003e\n    \u003ctd align=\"left\"\u003e\n       \u003ca href=\"https://scorecard.dev/viewer/?uri=github.com/mrz1836/go-whatsonchain\"\u003e\u003cimg src=\"https://api.scorecard.dev/projects/github.com/mrz1836/go-whatsonchain/badge?style=flat-square\" alt=\"Scorecard\"\u003e\u003c/a\u003e\n       \u003ca href=\".github/SECURITY.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/policy-active-success?style=flat-square\u0026logo=security\u0026logoColor=white\" alt=\"Security\"\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"right\"\u003e\n       \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \u003ccode\u003eCommunity\u003c/code\u003e \u0026nbsp;\u0026nbsp;\n    \u003c/td\u003e\n    \u003ctd align=\"left\"\u003e\n       \u003ca href=\"https://github.com/mrz1836/go-whatsonchain/graphs/contributors\"\u003e\u003cimg src=\"https://img.shields.io/github/contributors/mrz1836/go-whatsonchain?style=flat-square\u0026color=orange\" alt=\"Contributors\"\u003e\u003c/a\u003e\n       \u003ca href=\"https://mrz1818.com/\"\u003e\u003cimg src=\"https://img.shields.io/badge/donate-bitcoin-ff9900?style=flat-square\u0026logo=bitcoin\" alt=\"Bitcoin\"\u003e\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n### \u003ccode\u003eProject Navigation\u003c/code\u003e\n\n\u003c/div\u003e\n\n\u003ctable align=\"center\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"50%\"\u003e\n       🚀\u0026nbsp;\u003ca href=\"#-installation\"\u003e\u003ccode\u003eInstallation\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"50%\"\u003e\n       💡\u0026nbsp;\u003ca href=\"#-usage\"\u003e\u003ccode\u003eUsage\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n       📚\u0026nbsp;\u003ca href=\"#-documentation\"\u003e\u003ccode\u003eDocumentation\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n       🧪\u0026nbsp;\u003ca href=\"#-examples--tests\"\u003e\u003ccode\u003eExamples\u0026nbsp;\u0026\u0026nbsp;Tests\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      ⚡\u0026nbsp;\u003ca href=\"#-benchmarks\"\u003e\u003ccode\u003eBenchmarks\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      🛠️\u0026nbsp;\u003ca href=\"#-code-standards\"\u003e\u003ccode\u003eCode\u0026nbsp;Standards\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      🤖\u0026nbsp;\u003ca href=\"#-ai-usage--assistant-guidelines\"\u003e\u003ccode\u003eAI\u0026nbsp;Usage\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n       🤝\u0026nbsp;\u003ca href=\"#-contributing\"\u003e\u003ccode\u003eContributing\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n       👥\u0026nbsp;\u003ca href=\"#-maintainers\"\u003e\u003ccode\u003eMaintainers\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n       ⚖️\u0026nbsp;\u003ca href=\"#-license\"\u003e\u003ccode\u003eLicense\u003c/code\u003e\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr/\u003e\n\n## 📦 Installation\n\n**go-whatsonchain** requires a [supported release of Go](https://golang.org/doc/devel/release.html#policy).\n```shell script\ngo get github.com/mrz1836/go-whatsonchain\n```\n\n\u003cbr/\u003e\n\n## 💡 Usage\n\n### Quick Start\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/mrz1836/go-whatsonchain\"\n)\n\nfunc main() {\n\t// Create a client with default options (BSV mainnet)\n\tclient, err := whatsonchain.NewClient(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tlog.Println(\"client loaded\", client.UserAgent())\n\tlog.Println(\"Chain:\", client.Chain(), \"Network:\", client.Network())\n}\n```\n\n### Configuration Options\n\nThe library uses functional options for clean and flexible configuration:\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\t\"time\"\n\n\t\"github.com/mrz1836/go-whatsonchain\"\n)\n\nfunc main() {\n\t// Create a client with custom options\n\tclient, err := whatsonchain.NewClient(\n\t\tcontext.Background(),\n\t\twhatsonchain.WithChain(whatsonchain.ChainBSV),\n\t\twhatsonchain.WithNetwork(whatsonchain.NetworkMain),\n\t\twhatsonchain.WithAPIKey(\"your-secret-key\"),\n\t\twhatsonchain.WithUserAgent(\"my-app/1.0\"),\n\t\twhatsonchain.WithRateLimit(10),\n\t\twhatsonchain.WithRequestTimeout(60*time.Second),\n\t\twhatsonchain.WithRequestRetryCount(3),\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tlog.Println(\"client loaded with custom options\")\n}\n```\n\n### Available Options\n\n- `WithChain(chain)` - Set blockchain (ChainBSV or ChainBTC)\n- `WithNetwork(network)` - Set network (NetworkMain, NetworkTest, NetworkStn)\n- `WithAPIKey(key)` - Set API key for authenticated requests\n- `WithUserAgent(agent)` - Set custom user agent\n- `WithRateLimit(limit)` - Set rate limit per second\n- `WithHTTPClient(client)` - Use custom HTTP client\n- `WithRequestTimeout(timeout)` - Set request timeout\n- `WithRequestRetryCount(count)` - Set retry count for failed requests\n- `WithBackoff(initial, max, factor, jitter)` - Configure exponential backoff\n- `WithDialer(keepAlive, timeout)` - Configure dialer settings\n- `WithTransport(idle, tls, expect, maxIdle)` - Configure transport settings\n\n### Multi-Chain Support\n\n#### BSV Client\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/mrz1836/go-whatsonchain\"\n)\n\nfunc main() {\n\t// Create BSV client\n\tclient, err := whatsonchain.NewClient(\n\t\tcontext.Background(),\n\t\twhatsonchain.WithChain(whatsonchain.ChainBSV),\n\t\twhatsonchain.WithNetwork(whatsonchain.NetworkMain),\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Use BSV-specific methods\n\topReturnData, err := client.GetOpReturnData(context.Background(), \"your-tx-hash\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tlog.Println(\"OP_RETURN data:\", opReturnData)\n\n\t// Use shared methods (work for both BSV and BTC)\n\tchainInfo, err := client.GetChainInfo(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tlog.Printf(\"BSV Chain Info: %+v\", chainInfo)\n}\n```\n\n#### BTC Client\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/mrz1836/go-whatsonchain\"\n)\n\nfunc main() {\n\t// Create BTC client\n\tclient, err := whatsonchain.NewClient(\n\t\tcontext.Background(),\n\t\twhatsonchain.WithChain(whatsonchain.ChainBTC),\n\t\twhatsonchain.WithNetwork(whatsonchain.NetworkMain),\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Use BTC-specific methods\n\tblockStats, err := client.GetBlockStats(context.Background(), 700000)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tlog.Printf(\"Block Stats: %+v\", blockStats)\n\n\t// Get miner statistics\n\tminerStats, err := client.GetMinerBlocksStats(context.Background(), 7) // last 7 days\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tlog.Printf(\"Miner Stats: %+v\", minerStats)\n\n\t// Use shared methods (work for both BSV and BTC)\n\tchainInfo, err := client.GetChainInfo(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tlog.Printf(\"BTC Chain Info: %+v\", chainInfo)\n}\n```\n\n\u003cbr/\u003e\n\n## 📚 Documentation\nView the generated [documentation](https://pkg.go.dev/github.com/mrz1836/go-whatsonchain?tab=doc)\n\n\u003cbr/\u003e\n\n### Features\n- **Multi-blockchain support** - Seamless switching between [BSV](https://bsvblockchain.org/) and [BTC](https://thatsbtcnotbitcoin.com/) blockchains with a single client\n- **Production-ready HTTP client** - Built-in exponential backoff with configurable retry logic and crypto-secure jitter to handle transient failures gracefully\n- **Intelligent rate limiting** - Per-second request throttling with automatic sleep intervals to stay within API quotas\n- **Zero external dependencies** - Pure Go implementation with no production dependencies (testify only for testing)\n- **Comprehensive API coverage** - 135+ endpoints (71 BSV, 64 BTC) fully implemented and tested\n- **Flexible configuration** - Functional options pattern for clean, type-safe client initialization\n- **Enterprise-grade transport** - Fine-grained control over timeouts, keep-alives, connection pooling, and TLS handshake settings\n- **Network flexibility** - Switch between mainnet, testnet, and STN per client or per request\n\n\u003cbr/\u003e\n\n\u003e **Heads up!** `go-whatsonchain` is intentionally light on dependencies. The only\nexternal package it uses is the excellent `testify` suite—and that's just for\nour tests. You can drop this library into your projects without dragging along\nextra baggage.\n\n\u003cbr/\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eSupported API Coverage\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\n**Coverage Summary:** 135 total endpoints (71 BSV + 64 BTC) from the [whatsonchain.com API](https://docs.whatsonchain.com/)\n\n**Quick Navigation:** [BSV API](#bsv-api-71-endpoints) • [BTC API](#btc-api-64-endpoints) • [WebSockets](#websockets)\n\n---\n\n## BSV API (71 endpoints)\n\n### ✅ Health (1 endpoint)\n- [x] [Get Health Status](https://docs.whatsonchain.com/api/health) - `/woc`\n\n### ✅ Chain Info (4 endpoints)\n- [x] [Get Blockchain Info](https://docs.whatsonchain.com/api/chain-info#get-blockchain-info) - `/chain/info`\n- [x] [Get Circulating Supply](https://docs.whatsonchain.com/api/chain-info#get-circulating-supply) - `/circulatingsupply`\n- [x] [Get Chain Tips](https://docs.whatsonchain.com/api/chain-info#get-chain-tips) - `/chain/tips`\n- [x] [Get Peer Info](https://docs.whatsonchain.com/api/chain-info#get-peer-info) - `/peer/info`\n\n### ✅ Block (7 endpoints)\n- [x] [Get Block by Hash](https://docs.whatsonchain.com/api/block#get-by-hash) - `/block/hash/{hash}`\n- [x] [Get Block by Height](https://docs.whatsonchain.com/api/block#get-by-height) - `/block/height/{height}`\n- [x] [Get Block Pages](https://docs.whatsonchain.com/api/block#get-block-pages) - `/block/hash/{hash}/page/{page}`\n- [x] [Get Block Headers](https://docs.whatsonchain.com/api/block#get-headers) - `/block/headers`\n- [x] [Get Header by Hash or Height](https://docs.whatsonchain.com/api/block#get-header-by-hash) - `/block/{hash}/header`\n- [x] [Get Header Bytes File Links](https://docs.whatsonchain.com/api/block#get-header-bytes) - `/block/headers/resources`\n- [x] [Get Latest Header Bytes](https://docs.whatsonchain.com/api/block#get-latest-headers) - `/block/headers/latest`\n\n### ✅ Transaction (13 endpoints)\n- [x] [Get Transaction by Hash](https://docs.whatsonchain.com/api/transaction#get-by-tx-hash) - `/tx/hash/{hash}`\n- [x] [Get Transaction Propagation Status](https://docs.whatsonchain.com/api/transaction#get-tx-propagation) - `/tx/hash/{hash}/propagation`\n- [x] [Broadcast Transaction](https://docs.whatsonchain.com/api/transaction#broadcast-transaction) - `/tx/raw` (POST)\n- [x] [Bulk Transaction Details](https://docs.whatsonchain.com/api/transaction#bulk-transaction-details) - `/txs` (POST)\n- [x] [Bulk Transaction Status](https://docs.whatsonchain.com/api/transaction#bulk-transaction-status) - `/txs/status` (POST)\n- [x] [Decode Transaction](https://docs.whatsonchain.com/api/transaction#decode-transaction) - `/tx/decode` (POST)\n- [x] [Download Receipt (PDF)](https://docs.whatsonchain.com/api/transaction#download-receipt) - Receipt download\n- [x] [Get Transaction as Binary](https://docs.whatsonchain.com/api/transaction#get-tx-binary) - `/tx/{hash}/bin`\n- [x] [Get Raw Transaction Data (Hex)](https://docs.whatsonchain.com/api/transaction#get-raw-tx-data) - `/tx/{hash}/hex`\n- [x] [Bulk Raw Transaction Data](https://docs.whatsonchain.com/api/transaction#bulk-raw-tx-data) - `/txs/hex` (POST)\n- [x] [Get Raw Transaction Output](https://docs.whatsonchain.com/api/transaction#get-raw-tx-output) - `/tx/{hash}/out/{index}/hex`\n- [x] [Bulk Raw Transaction Output Data](https://docs.whatsonchain.com/api/transaction#bulk-raw-tx-output) - `/txs/vouts/hex` (POST)\n- [x] [Get Merkle Proof (TSC)](https://docs.whatsonchain.com/api/transaction#get-merkle-proof) - `/tx/{hash}/proof/tsc`\n\n### ✅ Mempool (2 endpoints)\n- [x] [Get Mempool Info](https://docs.whatsonchain.com/api/mempool#get-mempool-info) - `/mempool/info`\n- [x] [Get Mempool Transactions](https://docs.whatsonchain.com/api/mempool#get-mempool-transactions) - `/mempool/raw`\n\n### ✅ (Un)Spent Transaction Outputs (14 endpoints)\n- [x] [Get Unspent UTXOs by Address](https://docs.whatsonchain.com/api/address#get-unspent-transactions) - `/address/{address}/unspent/all`\n- [x] [Get Unconfirmed UTXOs by Address](https://docs.whatsonchain.com/api/address#get-unconfirmed-utxos) - `/address/{address}/unconfirmed/unspent`\n- [x] [Bulk Unconfirmed UTXOs by Address](https://docs.whatsonchain.com/api/address#bulk-unconfirmed-utxos) - `/addresses/unconfirmed/unspent` (POST)\n- [x] [Get Confirmed UTXOs by Address](https://docs.whatsonchain.com/api/address#get-confirmed-utxos) - `/address/{address}/confirmed/unspent`\n- [x] [Bulk Confirmed UTXOs by Address](https://docs.whatsonchain.com/api/address#bulk-confirmed-utxos) - `/addresses/confirmed/unspent` (POST)\n- [x] [Get Unspent UTXOs by Script](https://docs.whatsonchain.com/api/script#get-script-unspent-transactions) - `/script/{script}/unspent/all`\n- [x] [Get Unconfirmed UTXOs by Script](https://docs.whatsonchain.com/api/script#get-unconfirmed-script-utxos) - `/script/{script}/unconfirmed/unspent`\n- [x] [Bulk Unconfirmed UTXOs by Script](https://docs.whatsonchain.com/api/script#bulk-unconfirmed-script-utxos) - `/scripts/unconfirmed/unspent` (POST)\n- [x] [Get Confirmed UTXOs by Script](https://docs.whatsonchain.com/api/script#get-confirmed-script-utxos) - `/script/{script}/confirmed/unspent`\n- [x] [Bulk Confirmed UTXOs by Script](https://docs.whatsonchain.com/api/script#bulk-confirmed-script-utxos) - `/scripts/confirmed/unspent` (POST)\n- [x] [Get Unconfirmed Spent Output](https://docs.whatsonchain.com/api/utxo#get-unconfirmed-spent) - `/tx/{hash}/{index}/unconfirmed/spent`\n- [x] [Get Confirmed Spent Output](https://docs.whatsonchain.com/api/utxo#get-confirmed-spent) - `/tx/{hash}/{index}/confirmed/spent`\n- [x] [Get Spent Transaction Output](https://docs.whatsonchain.com/api/utxo#get-spent-output) - `/tx/{hash}/{index}/spent`\n- [x] [Bulk Spent Transaction Outputs](https://docs.whatsonchain.com/api/utxo#bulk-spent-outputs) - `/utxos/spent` (POST)\n\n### ✅ Address (13 endpoints)\n- [x] [Get Address Info](https://docs.whatsonchain.com/api/address#get-address-info) - `/address/{address}/info`\n- [x] [Get Address Usage Status](https://docs.whatsonchain.com/api/address#get-address-usage) - `/address/{address}/used`\n- [x] [Get Associated Scripthashes](https://docs.whatsonchain.com/api/address#get-associated-scripthashes) - `/address/{address}/scripts`\n- [x] [Download Statement (PDF)](https://docs.whatsonchain.com/api/address#download-statement) - Statement download\n- [x] [Get Unconfirmed Balance](https://docs.whatsonchain.com/api/address#get-unconfirmed-balance) - `/address/{address}/unconfirmed/balance`\n- [x] [Bulk Unconfirmed Balance](https://docs.whatsonchain.com/api/address#bulk-unconfirmed-balance) - `/addresses/unconfirmed/balance` (POST)\n- [x] [Get Confirmed Balance](https://docs.whatsonchain.com/api/address#get-confirmed-balance) - `/address/{address}/confirmed/balance`\n- [x] [Bulk Confirmed Balance](https://docs.whatsonchain.com/api/address#bulk-confirmed-balance) - `/addresses/confirmed/balance` (POST)\n- [x] [Get Unconfirmed History](https://docs.whatsonchain.com/api/address#get-unconfirmed-history) - `/address/{address}/unconfirmed/history`\n- [x] [Bulk Unconfirmed History](https://docs.whatsonchain.com/api/address#bulk-unconfirmed-history) - `/addresses/unconfirmed/history` (POST)\n- [x] [Get Confirmed History](https://docs.whatsonchain.com/api/address#get-confirmed-history) - `/address/{address}/confirmed/history`\n- [x] [Bulk Confirmed History](https://docs.whatsonchain.com/api/address#bulk-confirmed-history) - `/addresses/confirmed/history` (POST)\n- [x] [Bulk History (All)](https://docs.whatsonchain.com/api/address#bulk-history) - `/addresses/history/all` (POST)\n\n### ✅ Script (6 endpoints)\n- [x] [Get Script Usage Status](https://docs.whatsonchain.com/api/script#get-script-usage) - `/script/{script}/used`\n- [x] [Get Unconfirmed Script History](https://docs.whatsonchain.com/api/script#get-unconfirmed-script-history) - `/script/{script}/unconfirmed/history`\n- [x] [Bulk Unconfirmed Script History](https://docs.whatsonchain.com/api/script#bulk-unconfirmed-script-history) - `/scripts/unconfirmed/history` (POST)\n- [x] [Get Confirmed Script History](https://docs.whatsonchain.com/api/script#get-confirmed-script-history) - `/script/{script}/confirmed/history`\n- [x] [Bulk Confirmed Script History](https://docs.whatsonchain.com/api/script#bulk-confirmed-script-history) - `/scripts/confirmed/history` (POST)\n\n### ✅ Exchange Rate (2 endpoints)\n- [x] [Get Current Exchange Rate](https://docs.whatsonchain.com/api/exchange-rate#get-exchange-rate) - `/exchangerate`\n- [x] [Get Historical Exchange Rate](https://docs.whatsonchain.com/api/exchange-rate#get-historical-exchange-rate) - `/exchangerate/historical`\n\n### ✅ Search (1 endpoint)\n- [x] [Get Explorer Links](https://docs.whatsonchain.com/api/search#get-explorer-links) - `/search/links` (POST)\n\n### ✅ On-Chain Data (1 endpoint)\n- [x] [Get OP_RETURN Data](https://docs.whatsonchain.com/api/onchain-data#get-opreturn-data) - `/tx/{hash}/opreturn`\n\n### ✅ Stats (6 endpoints)\n- [x] [Get Block Stats by Height](https://docs.whatsonchain.com/api/stats#get-block-stats-by-height) - `/block/height/{height}/stats`\n- [x] [Get Block Stats by Hash](https://docs.whatsonchain.com/api/stats#get-block-stats-by-hash) - `/block/hash/{hash}/stats`\n- [x] [Get Miner Block Stats](https://docs.whatsonchain.com/api/stats#get-miner-block-stats) - `/miner/blocks/stats`\n- [x] [Get Miner Minimum Fee Rate Stats](https://docs.whatsonchain.com/api/stats#get-miner-fee-stats) - `/miner/fees`\n- [x] [Get Miner Summary Stats](https://docs.whatsonchain.com/api/stats#get-miner-summary-stats) - `/miner/summary/stats`\n- [x] [Get Tag Count by Height](https://docs.whatsonchain.com/api/stats#get-tag-count-by-height) - `/block/tagcount/height/{height}/stats`\n\n### ✅ Tokens (13 endpoints)\n\n#### 1Sat Ordinals (7 endpoints)\n- [x] [Get Token by Origin](https://docs.whatsonchain.com/api/tokens/1sat-ordinals#get-token-by-origin) - `/token/1satordinals/{origin}/origin`\n- [x] [Get Token by Outpoint](https://docs.whatsonchain.com/api/tokens/1sat-ordinals#get-token-by-outpoint) - `/token/1satordinals/{outpoint}`\n- [x] [Get Token Content](https://docs.whatsonchain.com/api/tokens/1sat-ordinals#get-token-content) - `/token/1satordinals/{outpoint}/content`\n- [x] [Get Token Latest Transfer](https://docs.whatsonchain.com/api/tokens/1sat-ordinals#get-token-latest-transfer) - `/token/1satordinals/{outpoint}/latest`\n- [x] [Get Token Transfer History](https://docs.whatsonchain.com/api/tokens/1sat-ordinals#get-token-transfers-history) - `/token/1satordinals/{outpoint}/history`\n- [x] [Get Tokens by TxID](https://docs.whatsonchain.com/api/tokens/1sat-ordinals#get-tokens-by-txid) - `/token/1satordinals/tx/{txid}`\n- [x] [Get 1Sat Ordinals Stats](https://docs.whatsonchain.com/api/tokens/1sat-ordinals#get-stats) - `/tokens/1satordinals`\n\n#### STAS v0 (6 endpoints)\n- [x] [Get All STAS Tokens](https://docs.whatsonchain.com/api/tokens/stas#get-all-tokens) - `/tokens`\n- [x] [Get STAS Token by ID](https://docs.whatsonchain.com/api/tokens/stas#get-token-by-id) - `/token/{contractId}/{symbol}`\n- [x] [Get Token UTXOs for Address](https://docs.whatsonchain.com/api/tokens/stas#get-token-utxos-for-address) - `/address/{address}/tokens/unspent`\n- [x] [Get Address Token Balance](https://docs.whatsonchain.com/api/tokens/stas#get-address-token-balance) - `/address/{address}/tokens`\n- [x] [Get Token Transactions](https://docs.whatsonchain.com/api/tokens/stas#get-token-transactions) - `/token/{contractId}/{symbol}/tx`\n- [x] [Get STAS Stats](https://docs.whatsonchain.com/api/tokens/stas#get-stats) - `/tokens/stas`\n\n---\n\n## BTC API (64 endpoints)\n\n### ✅ Health (1 endpoint)\n- [x] [Get Health Status](https://docs.whatsonchain.com/api/btc/health) - `/woc`\n\n### ✅ Chain Info (4 endpoints)\n- [x] [Get Blockchain Info](https://docs.whatsonchain.com/api/btc/chain-info#get-blockchain-info) - `/chain/info`\n- [x] [Get Circulating Supply](https://docs.whatsonchain.com/api/btc/chain-info#get-circulating-supply) - `/circulatingsupply`\n- [x] [Get Chain Tips](https://docs.whatsonchain.com/api/btc/chain-info#get-chain-tips) - `/chain/tips`\n- [x] [Get Peer Info](https://docs.whatsonchain.com/api/btc/chain-info#get-peer-info) - `/peer/info`\n\n### ✅ Block (7 endpoints)\n- [x] [Get Block by Hash](https://docs.whatsonchain.com/api/btc/block#get-by-hash) - `/block/hash/{hash}`\n- [x] [Get Block by Height](https://docs.whatsonchain.com/api/btc/block#get-by-height) - `/block/height/{height}`\n- [x] [Get Block Pages](https://docs.whatsonchain.com/api/btc/block#get-block-pages) - `/block/hash/{hash}/page/{page}`\n- [x] [Get Block Headers](https://docs.whatsonchain.com/api/btc/block#get-headers) - `/block/headers`\n- [x] [Get Header by Hash or Height](https://docs.whatsonchain.com/api/btc/block#get-header-by-hash) - `/block/{hash}/header`\n- [x] [Get Header Bytes File Links](https://docs.whatsonchain.com/api/btc/block#get-header-bytes) - `/block/headers/resources`\n- [x] [Get Latest Header Bytes](https://docs.whatsonchain.com/api/btc/block#get-latest-headers) - `/block/headers/latest`\n\n### ✅ Transaction (9 endpoints)\n- [x] [Get Transaction by Hash](https://docs.whatsonchain.com/api/btc/transaction#get-by-tx-hash) - `/tx/hash/{hash}`\n- [x] [Bulk Transaction Details](https://docs.whatsonchain.com/api/btc/transaction#bulk-transaction-details) - `/txs` (POST)\n- [x] [Bulk Transaction Status](https://docs.whatsonchain.com/api/btc/transaction#bulk-transaction-status) - `/txs/status` (POST)\n- [x] [Get Transaction as Binary](https://docs.whatsonchain.com/api/btc/transaction#get-tx-binary) - `/tx/{hash}/bin`\n- [x] [Get Raw Transaction Data](https://docs.whatsonchain.com/api/btc/transaction#get-raw-tx-data) - `/tx/{hash}/hex`\n- [x] [Bulk Raw Transaction Data](https://docs.whatsonchain.com/api/btc/transaction#bulk-raw-tx-data) - `/txs/hex` (POST)\n- [x] [Get Raw Transaction Output](https://docs.whatsonchain.com/api/btc/transaction#get-raw-tx-output) - `/tx/{hash}/out/{index}/hex`\n- [x] [Bulk Raw Transaction Output Data](https://docs.whatsonchain.com/api/btc/transaction#bulk-raw-tx-output) - `/txs/vouts/hex` (POST)\n- [x] [Decode Transaction](https://docs.whatsonchain.com/api/btc/transaction#decode-transaction) - `/tx/decode` (POST)\n\n### ✅ Mempool (2 endpoints)\n- [x] [Get Mempool Info](https://docs.whatsonchain.com/api/btc/mempool#get-mempool-info) - `/mempool/info`\n- [x] [Get Mempool Transactions](https://docs.whatsonchain.com/api/btc/mempool#get-mempool-transactions) - `/mempool/raw`\n\n### ✅ (Un)Spent Transaction Outputs (14 endpoints)\n- [x] [Get Unspent UTXOs by Address](https://docs.whatsonchain.com/api/btc/address#get-unspent-transactions) - `/address/{address}/unspent/all`\n- [x] [Get Unconfirmed UTXOs by Address](https://docs.whatsonchain.com/api/btc/address#get-unconfirmed-utxos) - `/address/{address}/unconfirmed/unspent`\n- [x] [Bulk Unconfirmed UTXOs by Address](https://docs.whatsonchain.com/api/btc/address#bulk-unconfirmed-utxos) - `/addresses/unconfirmed/unspent` (POST)\n- [x] [Get Confirmed UTXOs by Address](https://docs.whatsonchain.com/api/btc/address#get-confirmed-utxos) - `/address/{address}/confirmed/unspent`\n- [x] [Bulk Confirmed UTXOs by Address](https://docs.whatsonchain.com/api/btc/address#bulk-confirmed-utxos) - `/addresses/confirmed/unspent` (POST)\n- [x] [Get Unspent UTXOs by Script](https://docs.whatsonchain.com/api/btc/script#get-script-unspent-transactions) - `/script/{script}/unspent/all`\n- [x] [Get Unconfirmed UTXOs by Script](https://docs.whatsonchain.com/api/btc/script#get-unconfirmed-script-utxos) - `/script/{script}/unconfirmed/unspent`\n- [x] [Bulk Unconfirmed UTXOs by Script](https://docs.whatsonchain.com/api/btc/script#bulk-unconfirmed-script-utxos) - `/scripts/unconfirmed/unspent` (POST)\n- [x] [Get Confirmed UTXOs by Script](https://docs.whatsonchain.com/api/btc/script#get-confirmed-script-utxos) - `/script/{script}/confirmed/unspent`\n- [x] [Bulk Confirmed UTXOs by Script](https://docs.whatsonchain.com/api/btc/script#bulk-confirmed-script-utxos) - `/scripts/confirmed/unspent` (POST)\n- [x] [Get Unconfirmed Spent Output](https://docs.whatsonchain.com/api/btc/utxo#get-unconfirmed-spent) - `/tx/{hash}/{index}/unconfirmed/spent`\n- [x] [Get Confirmed Spent Output](https://docs.whatsonchain.com/api/btc/utxo#get-confirmed-spent) - `/tx/{hash}/{index}/confirmed/spent`\n- [x] [Get Spent Transaction Output](https://docs.whatsonchain.com/api/btc/utxo#get-spent-output) - `/tx/{hash}/{index}/spent`\n- [x] [Bulk Spent Transaction Outputs](https://docs.whatsonchain.com/api/btc/utxo#bulk-spent-outputs) - `/utxos/spent` (POST)\n\n### ✅ Address (12 endpoints)\n- [x] [Get Address Info](https://docs.whatsonchain.com/api/btc/address#get-address-info) - `/address/{address}/info`\n- [x] [Get Address Usage Status](https://docs.whatsonchain.com/api/btc/address#get-address-usage) - `/address/{address}/used`\n- [x] [Get Associated Scripthashes](https://docs.whatsonchain.com/api/btc/address#get-associated-scripthashes) - `/address/{address}/scripts`\n- [x] [Get Unconfirmed Balance](https://docs.whatsonchain.com/api/btc/address#get-unconfirmed-balance) - `/address/{address}/unconfirmed/balance`\n- [x] [Bulk Unconfirmed Balance](https://docs.whatsonchain.com/api/btc/address#bulk-unconfirmed-balance) - `/addresses/unconfirmed/balance` (POST)\n- [x] [Get Confirmed Balance](https://docs.whatsonchain.com/api/btc/address#get-confirmed-balance) - `/address/{address}/confirmed/balance`\n- [x] [Bulk Confirmed Balance](https://docs.whatsonchain.com/api/btc/address#bulk-confirmed-balance) - `/addresses/confirmed/balance` (POST)\n- [x] [Get Unconfirmed History](https://docs.whatsonchain.com/api/btc/address#get-unconfirmed-history) - `/address/{address}/unconfirmed/history`\n- [x] [Bulk Unconfirmed History](https://docs.whatsonchain.com/api/btc/address#bulk-unconfirmed-history) - `/addresses/unconfirmed/history` (POST)\n- [x] [Get Confirmed History](https://docs.whatsonchain.com/api/btc/address#get-confirmed-history) - `/address/{address}/confirmed/history`\n- [x] [Bulk Confirmed History](https://docs.whatsonchain.com/api/btc/address#bulk-confirmed-history) - `/addresses/confirmed/history` (POST)\n- [x] [Bulk History (All)](https://docs.whatsonchain.com/api/btc/address#bulk-history) - `/addresses/history/all` (POST)\n\n### ✅ Script (6 endpoints)\n- [x] [Get Script Usage Status](https://docs.whatsonchain.com/api/btc/script#get-script-usage) - `/script/{script}/used`\n- [x] [Get Unconfirmed Script History](https://docs.whatsonchain.com/api/btc/script#get-unconfirmed-script-history) - `/script/{script}/unconfirmed/history`\n- [x] [Bulk Unconfirmed Script History](https://docs.whatsonchain.com/api/btc/script#bulk-unconfirmed-script-history) - `/scripts/unconfirmed/history` (POST)\n- [x] [Get Confirmed Script History](https://docs.whatsonchain.com/api/btc/script#get-confirmed-script-history) - `/script/{script}/confirmed/history`\n- [x] [Bulk Confirmed Script History](https://docs.whatsonchain.com/api/btc/script#bulk-confirmed-script-history) - `/scripts/confirmed/history` (POST)\n\n### ✅ Exchange Rate (2 endpoints)\n- [x] [Get Current Exchange Rate](https://docs.whatsonchain.com/api/btc/exchange-rate#get-exchange-rate) - `/exchangerate`\n- [x] [Get Historical Exchange Rate](https://docs.whatsonchain.com/api/btc/exchange-rate#get-historical-exchange-rate) - `/exchangerate/historical`\n\n### ✅ Search (1 endpoint)\n- [x] [Get Explorer Links](https://docs.whatsonchain.com/api/btc/search#get-explorer-links) - `/search/links` (POST)\n\n### ✅ Stats (6 endpoints)\n- [x] [Get Block Stats by Height](https://docs.whatsonchain.com/api/btc/stats#get-block-stats-by-height) - `/block/height/{height}/stats`\n- [x] [Get Block Stats by Hash](https://docs.whatsonchain.com/api/btc/stats#get-block-stats-by-hash) - `/block/hash/{hash}/stats`\n- [x] [Get Miner Block Stats](https://docs.whatsonchain.com/api/btc/stats#get-miner-block-stats) - `/miner/blocks/stats`\n- [x] [Get Miner Minimum Fee Rate Stats](https://docs.whatsonchain.com/api/btc/stats#get-miner-fee-stats) - `/miner/fees`\n- [x] [Get Miner Summary Stats](https://docs.whatsonchain.com/api/btc/stats#get-miner-summary-stats) - `/miner/summary/stats`\n- [x] [Get Tag Count by Height](https://docs.whatsonchain.com/api/btc/stats#get-tag-count-by-height) - `/block/tagcount/height/{height}/stats`\n\n---\n\n## WebSockets (ComingSoon™)\n- [ ] [New block header event](https://docs.whatsonchain.com/api/websockets#new-block-header)\n- [ ] [Block headers history](https://docs.whatsonchain.com/api/websockets#block-headers-history)\n- [ ] [Block transactions](https://docs.whatsonchain.com/api/websockets#block-transactions)\n- [ ] [Mempool transactions](https://docs.whatsonchain.com/api/websockets#mempool-transactions)\n- [ ] [Confirmed transactions](https://docs.whatsonchain.com/api/websockets#confirmed-transactions)\n- [ ] [Chain Stats](https://docs.whatsonchain.com/api/websockets#chain-stats)\n- [ ] [Customized events](https://docs.whatsonchain.com/api/websockets#customized-events)\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eDevelopment Setup (Getting Started)\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\nInstall [MAGE-X](https://github.com/mrz1836/mage-x) build tool for development:\n\n```bash\n# Install MAGE-X for development and building\ngo install github.com/mrz1836/mage-x/cmd/magex@latest\nmagex update:install\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eLibrary Deployment\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\nThis project uses [goreleaser](https://github.com/goreleaser/goreleaser) for streamlined binary and library deployment to GitHub. To get started, install it via:\n\n```bash\nbrew install goreleaser\n```\n\nThe release process is defined in the [.goreleaser.yml](.goreleaser.yml) configuration file.\n\nThen create and push a new Git tag using:\n\n```bash\nmagex version:bump push=true bump=patch branch=master\n```\n\nThis process ensures consistent, repeatable releases with properly versioned artifacts and citation metadata.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eBuild Commands\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\nView all build commands\n\n```bash script\nmagex help\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eGitHub Workflows\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\nAll workflows are driven by modular configuration in [`.github/env/`](.github/env/README.md) — no YAML editing required.\n\n**[View all workflows and the control center →](.github/docs/workflows.md)**\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003eUpdating Dependencies\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr/\u003e\n\nTo update all dependencies (Go modules, linters, and related tools), run:\n\n```bash\nmagex deps:update\n```\n\nThis command ensures all dependencies are brought up to date in a single step, including Go modules and any managed tools. It is the recommended way to keep your development environment and CI in sync with the latest versions.\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\n## 🧪 Examples \u0026 Tests\n\nAll unit tests and fuzz tests run via [GitHub Actions](https://github.com/mrz1836/go-whatsonchain/actions) and use [Go version 1.24.x](https://go.dev/doc/go1.24). View the [configuration file](.github/workflows/fortress.yml).\n\nRun all tests (fast):\n\n```bash script\nmagex test\n```\n\nRun all tests with race detector (slower):\n```bash script\nmagex test:race\n```\n\n\u003cbr/\u003e\n\n## ⚡ Benchmarks\n\nRun the Go benchmarks:\n\n```bash script\nmagex bench time=2s\n```\n\n### Performance Results\n\nBenchmarks run on **Apple M1 Max** using Go's built-in benchmark tool with 2-second intervals.\n\n| Operation                          | Time (ns/op) | Memory (B/op) | Allocations (allocs/op) |\n|------------------------------------|-------------:|--------------:|------------------------:|\n| **Client Operations**              |\n| Client Creation (Minimal)          |          275 |         1,048 |                       9 |\n| Client Creation (Fully Configured) |          287 |         1,048 |                       9 |\n| Build URL (Simple)                 |          158 |           144 |                       4 |\n| Build URL (With Args)              |          194 |           168 |                       5 |\n| Get Chain Config                   |          2.1 |             0 |                       0 |\n| Set Chain Config                   |          2.1 |             0 |                       0 |\n| **Address Operations**             |\n| Get Address Info                   |        2,748 |         2,697 |                      25 |\n| Get Address Balance                |        2,209 |         2,393 |                      24 |\n| Get Address History                |        3,605 |         3,097 |                      32 |\n| Get Address UTXOs                  |        5,668 |         3,705 |                      36 |\n| Get Confirmed Balance              |        2,391 |         2,337 |                      22 |\n| Get Unconfirmed Balance            |        2,683 |         2,337 |                      22 |\n| **Transaction Operations**         |\n| Get Transaction by Hash            |        8,117 |         6,035 |                      43 |\n| Bulk Transaction Details (1 tx)    |       15,536 |        14,135 |                      69 |\n| Bulk Transaction Details (20 txs)  |       17,489 |        16,815 |                      69 |\n| Broadcast Transaction              |        2,071 |         2,753 |                      26 |\n| Decode Transaction                 |        9,294 |         6,835 |                      54 |\n| Get Merkle Proof                   |        5,679 |         3,826 |                      40 |\n| Get Spent Output                   |        4,431 |         3,233 |                      31 |\n| **Block Operations**               |\n| Get Block by Hash                  |       11,271 |         6,307 |                      48 |\n| Get Block by Height                |        8,691 |         5,963 |                      47 |\n| Get Block Pages                    |        3,104 |         2,833 |                      30 |\n| Get Header by Hash                 |       10,296 |         6,435 |                      49 |\n| Get Latest Header Bytes            |        2,109 |         3,905 |                      21 |\n| **Chain Info Operations**          |\n| Get Chain Info                     |        3,442 |         2,881 |                      24 |\n| Get Chain Tips                     |        2,546 |         2,497 |                      27 |\n| Get Circulating Supply             |        1,514 |         1,993 |                      17 |\n| Get Exchange Rate                  |        2,569 |         2,433 |                      26 |\n| Get Historical Exchange Rate       |        3,916 |         3,089 |                      36 |\n| Get Peer Info                      |        6,467 |         3,641 |                      33 |\n| Get Mempool Info                   |        3,068 |         2,633 |                      27 |\n| Get Mempool Transactions           |        2,648 |         2,593 |                      32 |\n\n**Notes:**\n- All times are in nanoseconds per operation\n- Memory is bytes allocated per operation\n- Benchmarks use mock HTTP responses for consistent, reproducible results\n\nTo reproduce these benchmarks:\n```bash\nmagex bench time=2s\n```\n\n\u003cbr/\u003e\n\n## 🛠️ Code Standards\nRead more about this Go project's [code standards](.github/CODE_STANDARDS.md).\n\n\u003cbr/\u003e\n\n## 🤖 AI Usage \u0026 Assistant Guidelines\nRead the [AI Usage \u0026 Assistant Guidelines](.github/tech-conventions/ai-compliance.md) for details on how AI is used in this project and how to interact with the AI assistants.\n\n\u003cbr/\u003e\n\n## 👥 Maintainers\n| [\u003cimg src=\"https://github.com/mrz1836.png\" height=\"50\" alt=\"MrZ\" /\u003e](https://github.com/mrz1836) |\n|:------------------------------------------------------------------------------------------------:|\n|                                [MrZ](https://github.com/mrz1836)                                 |\n\n\u003cbr/\u003e\n\n## 🤝 Contributing\nView the [contributing guidelines](.github/CONTRIBUTING.md) and please follow the [code of conduct](.github/CODE_OF_CONDUCT.md).\n\n### How can I help?\nAll kinds of contributions are welcome :raised_hands:!\nThe most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon:.\nYou can also support this project by [becoming a sponsor on GitHub](https://github.com/sponsors/mrz1836) :clap:\nor by making a [**bitcoin donation**](https://mrz1818.com/?tab=tips\u0026utm_source=github\u0026utm_medium=sponsor-link\u0026utm_campaign=go-whatsonchain\u0026utm_term=go-whatsonchain\u0026utm_content=go-whatsonchain) to ensure this journey continues indefinitely! :rocket:\n\n\n[![Stars](https://img.shields.io/github/stars/mrz1836/go-whatsonchain?label=Please%20like%20us\u0026style=social)](https://github.com/mrz1836/go-whatsonchain/stargazers)\n\n\u003cbr/\u003e\n\n## 📝 License\n\n[![License](https://img.shields.io/github/license/mrz1836/go-whatsonchain.svg?style=flat)](LICENSE)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrz1836%2Fgo-whatsonchain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrz1836%2Fgo-whatsonchain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrz1836%2Fgo-whatsonchain/lists"}