{"id":18566757,"url":"https://github.com/qtumproject/qtool","last_synced_at":"2025-04-28T18:10:24.006Z","repository":{"id":61626122,"uuid":"525054878","full_name":"qtumproject/qtool","owner":"qtumproject","description":"Qtool is a cli command, a JSON RPC api and a golang package that provides crypto functionalities specific for qtum blockchain","archived":false,"fork":false,"pushed_at":"2023-02-07T17:19:57.000Z","size":491,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-30T11:41:44.950Z","etag":null,"topics":["bitcoin","cryptography","ecdsa","qtum"],"latest_commit_sha":null,"homepage":"https://qtool.qtum.info","language":"Go","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/qtumproject.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":"2022-08-15T16:14:23.000Z","updated_at":"2024-10-07T01:38:24.000Z","dependencies_parsed_at":"2024-11-06T22:40:37.525Z","dependency_job_id":null,"html_url":"https://github.com/qtumproject/qtool","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qtumproject%2Fqtool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qtumproject%2Fqtool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qtumproject%2Fqtool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qtumproject%2Fqtool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qtumproject","download_url":"https://codeload.github.com/qtumproject/qtool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250751841,"owners_count":21481313,"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":["bitcoin","cryptography","ecdsa","qtum"],"created_at":"2024-11-06T22:24:18.674Z","updated_at":"2025-04-28T18:10:23.985Z","avatar_url":"https://github.com/qtumproject.png","language":"Go","readme":"\u003ch1 align=\"center\"\u003e\n   Qtum Qtool\n\u003c/h1\u003e\n\n## Overview\n\n`qtool` provides tools for handling cryptographic related objects (like *addresses, keys and scriptPubKey*) using **qtum** specific parameters.\n\n`qtool` is both a CLI tool and a JSON-RPC server, both exposing the same functionality\n\nThe `qtool` web UI is available at [qtool.qtum.info](https://qtool.qtum.info)\n\n---\n\n## Tools included\n\n### 1. `qtool-cli` \n\n- Command line appllication to run qtool utilities\n\n- Available commands\n\n  ```bash\n    convertaddress     Converts a legacy address from hex encoding to base58 encoding (and vice-versa)\n    convertprivkey     Converts the encoding of a ECDSA private key\n    getaddrfromprivkey Gets a base 58 address from a given private key\n    p2pktoaddr         Gets the b58 encoded address from a p2pk script\n\n  Flags:\n    -b, --blockchain string   blockchain: \"qtum\" or \"btc\" (default \"qtum\")\n    -h, --help                help for qtool\n    -n, --network string      network type: \"testnet\" or \"mainnet\" (default \"mainnet\")\n    -v, --verbose             verbose output\n        --version             version for qtool\n  ```\n\n- Detailed qtool-cli *sub command* info\n\n    [convertaddress](./qtool-cli/docs/qtool_convertaddress.md)\n\n    [convertprivkey](./qtool-cli/docs/qtool_convertprivkey)\n\n    [getaddfromprivkey](./qtool-cli/docs/qtool_getaddrfromprivkey.md)\n\n    [p2pktoaddr](./qtool-cli/docs/qtool_p2pktoaddr.md)\n\n- Usage:\n  \n  Building `qtool-cli`\n  ```bash\n  make build-cli\n  ```\n  Converting `private key` format from `b58` to `hex`:\n  ```bash\n  $ qtool convertprivkey cMbgxCJrTYUqgcmiC1berh5DFrtY1KeU4PXZ6NZxgenniF1mXCRk -f b58\n  \u003e Result: 00821d8c8a3627adc68aa4034fea953b2f5da553fab312db3fa274240bd49f35\n  ```\n  Converting `address` format to from `b58` to `hex`\n  ```bash\n  $ qtool convertaddress qUbxboqjBRp96j3La8D1RYkyqx5uQbJPoW -f b58\n  \u003e Result: 7926223070547d2d15b2ef5e7383e541c338ffe9\n  ```\n  Getting `address` from `private key`:\n  ```bash\n  $ qtool getaddrfromprivkey cMbgxCJrTYUqgcmiC1berh5DFrtY1KeU4PXZ6NZxgenniF1mXCRk -n testnet -b qtum -f b58\n  \u003e Result: qUbxboqjBRp96j3La8D1RYkyqx5uQbJPoW\n  ```\n\n\n### 2. `qtool-api` \n- web server that exposes `qtool` utilities via a JSON-RPC api\n  \n- starting `qtool-api` on a docker container (listening on port 8080)\n  ```bash\n  make run-api\n  ```\n- Available endpoints\n\n  `/privatekey`\n  ```bash\n  ❯ curl -X POST -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"convertprivkey\",\"params\":{\"data\":\"00821d8c8a3627adc68aa4034fea953b2f5da553fab312db3fa274240bd49f35\",\"format\":\"hex\",\"network\":\"testnet\", \"blockchain\":\"qtum\"}}' https://qtool.qtum.info/api/privatekey\n  {\n    \"jsonrpc\": \"2.0\",\n    \"result\": {\n      \"privKey\": \"cMbgxCJrTYUqgcmiC1berh5DFrtY1KeU4PXZ6NZxgenniF1mXCRk\"\n    },\n    \"error\": null,\n    \"id\": 1\n  }\n  ```\n  `/address`\n  ```bash\n  ❯ curl -X POST -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"convertaddress\",\"params\":{\"data\":\"qUbxboqjBRp96j3La8D1RYkyqx5uQbJPoW\",\"format\":\"b58\",\"network\":\"testnet\", \"blockchain\":\"qtum\"}}' https://qtool.qtum.info/api/address\n  {\n    \"jsonrpc\": \"2.0\",\n    \"result\": {\n      \"address\": \"7926223070547d2d15b2ef5e7383e541c338ffe9\"\n    },\n    \"error\": null,\n    \"id\": 1\n  }\n  ```\n  `/script`\n  ```bash\n  ❯ curl -X POST -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"getaddressfromscriptpubKey\",\"params\":{\"data\":\"210299d391f528b9edd07284c7e23df8415232a8ce41531cf460a390ce32b4efd112ac\",\"network\":\"testnet\", \"blockchain\":\"qtum\"}}' https://qtool.qtum.info/api/script\n  {\n    \"jsonrpc\": \"2.0\",\n    \"result\": {\n      \"scriptPubKey\": {\n        \"hex\": \"210299d391f528b9edd07284c7e23df8415232a8ce41531cf460a390ce32b4efd112ac\",\n        \"asm\": \"0299d391f528b9edd07284c7e23df8415232a8ce41531cf460a390ce32b4efd112 OP_CHECKSIG\"\n      },\n      \"pubKey\": \"0299d391f528b9edd07284c7e23df8415232a8ce41531cf460a390ce32b4efd112\",\n      \"addressHex\": \"7926223070547d2d15b2ef5e7383e541c338ffe9\",\n      \"addressBase58\": \"qUbxboqjBRp96j3La8D1RYkyqx5uQbJPoW\"\n    },\n    \"error\": null,\n    \"id\": 1\n  }\n  ```\n\n- API specs\n\n(TBD)\n\n### 3. `qtool pkg`\n- golang pkg that implements `qtool` utilities\n\n---\n\n## Project structure\n\n```javascript\nqtool\n  |\n  |-- qtool-api   // code base for the qtool JSON-RPC api server\n  |-- qtool-cli   // code base for qtool cli\n  |-- pkg     // qtool library\n  |-- react-web-app   // react based web UI \n```\n\n---\n\n## Qtool web ui\n\n- Starting / stoppping qtool-api and react web UI in dev environment\n\n  ```bash\n  make start-compose-dev\n  make stop-compose-dev\n  ```\n\n- Starting / stopping qtool-api and react web UI in prod environment\n\n  ```bash\n  make start-compose-prod\n  make stop-compose-prod\n  ```\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqtumproject%2Fqtool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqtumproject%2Fqtool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqtumproject%2Fqtool/lists"}