{"id":13772421,"url":"https://github.com/wavesplatform/gowaves","last_synced_at":"2026-04-02T11:57:09.685Z","repository":{"id":37743062,"uuid":"151067423","full_name":"wavesplatform/gowaves","owner":"wavesplatform","description":"Go implementation of Waves node, libraries and tools for Waves blockchain","archived":false,"fork":false,"pushed_at":"2026-03-30T08:24:09.000Z","size":54827,"stargazers_count":255,"open_issues_count":28,"forks_count":71,"subscribers_count":10,"default_branch":"master","last_synced_at":"2026-03-30T10:25:11.919Z","etag":null,"topics":["blockchain","blockchain-technology","cryptography","decentralized-applications","smart-contracts","waves"],"latest_commit_sha":null,"homepage":"","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/wavesplatform.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":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":"2018-10-01T09:53:59.000Z","updated_at":"2026-03-30T08:24:13.000Z","dependencies_parsed_at":"2024-01-29T08:56:11.691Z","dependency_job_id":"fac82c0d-84cf-47aa-b5e1-e7b20332707f","html_url":"https://github.com/wavesplatform/gowaves","commit_stats":null,"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/wavesplatform/gowaves","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesplatform%2Fgowaves","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesplatform%2Fgowaves/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesplatform%2Fgowaves/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesplatform%2Fgowaves/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wavesplatform","download_url":"https://codeload.github.com/wavesplatform/gowaves/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesplatform%2Fgowaves/sbom","scorecard":{"id":718385,"data":{"date":"2025-07-07","repo":{"name":"github.com/wavesplatform/gowaves","commit":"0639711f172870cd7bfd40a2e7944604c88ebebb"},"scorecard":{"version":"v5.2.1-18-gbb9c347d","commit":"bb9c347dff6349d986baab6578a46d68a5524c62"},"score":7.6,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#maintained"}},{"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/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","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/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#code-review"}},{"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/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#security-policy"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/publish-to-ghcr.yml:24","Info: found token with 'none' permissions: .github/workflows/codeql-analysis.yml:1","Info: found token with 'none' permissions: .github/workflows/deploy_node.yml:1","Info: found token with 'none' permissions: .github/workflows/deploy_nodes.yml:1","Info: found token with 'none' permissions: .github/workflows/go.yml:1","Info: found token with 'none' permissions: .github/workflows/itests.yml:1","Info: found token with 'none' permissions: .github/workflows/itests_race.yml:1","Info: found token with 'none' permissions: .github/workflows/publish-to-ghcr.yml:1","Info: found token with 'none' permissions: .github/workflows/run_itests.yml:1","Info: found token with 'none' permissions: .github/workflows/security.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/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#token-permissions"}},{"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/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#license"}},{"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/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#binary-artifacts"}},{"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/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.10.6 not signed: https://api.github.com/repos/wavesplatform/gowaves/releases/108741594","Warn: release artifact v0.10.5 not signed: https://api.github.com/repos/wavesplatform/gowaves/releases/103917365","Warn: release artifact v0.10.4 not signed: https://api.github.com/repos/wavesplatform/gowaves/releases/94375965","Warn: release artifact v0.10.3 not signed: https://api.github.com/repos/wavesplatform/gowaves/releases/86009209","Warn: release artifact v0.10.2 not signed: https://api.github.com/repos/wavesplatform/gowaves/releases/80409392","Warn: release artifact v0.10.6 does not have provenance: https://api.github.com/repos/wavesplatform/gowaves/releases/108741594","Warn: release artifact v0.10.5 does not have provenance: https://api.github.com/repos/wavesplatform/gowaves/releases/103917365","Warn: release artifact v0.10.4 does not have provenance: https://api.github.com/repos/wavesplatform/gowaves/releases/94375965","Warn: release artifact v0.10.3 does not have provenance: https://api.github.com/repos/wavesplatform/gowaves/releases/86009209","Warn: release artifact v0.10.2 does not have provenance: https://api.github.com/repos/wavesplatform/gowaves/releases/80409392"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":9,"reason":"dependency not pinned by hash detected -- score normalized to 9","details":["Info: Possibly incomplete results: error parsing shell code: invalid parameter name: .github/workflows/itests.yml:26","Warn: downloadThenRun not pinned by hash: .github/workflows/go.yml:74","Warn: goCommand not pinned by hash: .github/workflows/security.yml:102","Info:  22 out of  22 GitHub-owned GitHubAction dependencies pinned","Info:  14 out of  14 third-party GitHubAction dependencies pinned","Info:   3 out of   3 containerImage dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned","Info:   0 out of   1 goCommand 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/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#pinned-dependencies"}},{"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/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish-to-ghcr.yml:20"],"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/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#packaging"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (30) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#sast"}},{"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/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T10:27:08.778Z","repository_id":37743062,"created_at":"2025-08-22T10:27:08.779Z","updated_at":"2025-08-22T10:27:08.779Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31305964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T09:48:21.550Z","status":"ssl_error","status_checked_at":"2026-04-02T09:48:19.196Z","response_time":89,"last_error":"SSL_read: 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":["blockchain","blockchain-technology","cryptography","decentralized-applications","smart-contracts","waves"],"created_at":"2024-08-03T17:01:03.818Z","updated_at":"2026-04-02T11:57:09.677Z","avatar_url":"https://github.com/wavesplatform.png","language":"Go","readme":"# gowaves\n\nGo implementation of Waves Node, libraries and tools for Waves blockchain.\n\n[![Build](https://github.com/wavesplatform/gowaves/workflows/build/badge.svg)](https://github.com/wavesplatform/gowaves/actions/workflows/go.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/wavesplatform/gowaves)](https://goreportcard.com/report/github.com/wavesplatform/gowaves)\n[![codecov](https://codecov.io/gh/wavesplatform/gowaves/branch/master/graph/badge.svg)](https://codecov.io/gh/wavesplatform/gowaves)\n[![GoDoc](https://godoc.org/github.com/wavesplatform/gowaves?status.svg)](https://godoc.org/github.com/wavesplatform/gowaves)\n\n## Waves Node\n\nIt is possible to run Waves Node on Linux, macOS or Windows. Please, download an appropriate binary file from [Releases page](https://github.com/wavesplatform/gowaves/releases).\n\nYou can either synchronize a node over network or import a downloaded blockchain file.\n\n### How to import blockchain from file\n\nBlockchain files are available on [MainNet](http://blockchain.wavesnodes.com), [TestNet](http://blockchain-testnet.wavesnodes.com) [StageNet](http://blockchain-stagenet.wavesnodes.com/) download pages.\n\nImport could be done as follows:\n\n1. Download a blockchain file\n1. Download the `importer` utility from [Releases](https://github.com/wavesplatform/gowaves/releases)\n1. Run the command, put the path to the blockchain file and node's state directory as parameters.\n   The third parameter is the number of blocks to import, it should be less than a desired height by one.\n\n```bash\n./importer -blockchain-path [path to blockchain file] -data-path [path to node state directory] -blocks-number [height - 1]\n```\n\nImport may take a few hours, after which you can run the node as described in next section.\n\nPlease note that the Go Node has its own state storage structure that is incompatible with Scala Node.\n\n### How to run the node\n\nRun the node as follows:\n\n1. Download a suitable node's binary file from [Releases](https://github.com/wavesplatform/gowaves/releases)\n1. Run the command, if required, put the path to the node's state directory.\n\n```bash\n./node -state-path [path to node state directory]\n```\n\nBy default, the node is run as a MainNet node. To run a TestNet node put `testnet`, as a blockchain type. You may also enter a list of comma separated peers' addresses (Optional):\n```bash\n./node -state-path [path to node state directory] -blockchain-type testnet\n``` \n\nRead more about [running the node as Linux service](https://github.com/wavesplatform/gowaves/tree/master/cmd/node#readme).\n\n### How to set block generation\n\nGo Node has two parameters which allow the loading of private keys from a wallet file.\n\n```\n-wallet-path [path to wallet file]\n-wallet-password [password string]\n```\n\nFor example:\n\n```\n./node -state-path ~/gowaves-testnet/ -blockchain-type testnet -wallet-path ~/testnet.wallet -wallet-password 'some super secret password' \n```\n\nOnce the parameters were provided, the node would try loading and using private keys to generate blocks.\n\n#### How to create a wallet file\n\nTo create a wallet file use the `wallet` utility. Please download a suitable version of the `wallet` utility from the [Releases](https://github.com/wavesplatform/gowaves/releases) page.\nThe following command will create and add a new seed to the wallet file:\n\n```bash\n./wallet -new\n```\n\nThe utility would ask for a password to encrypt the new wallet file. If a wallet file does not exist, the file will be created.\nBy default, new wallet file has name `.waves` and stored in user's home directory. Different wallet's file location can be set using `-wallet` option.\n\nAlso, it's possible to import existing seed phrase. Please, use `-seed-phrase` option to do so.\n```bash\n./wallet -seed-phrase \"words of seed phrase...\"\n```\n\nIf you have a Base58 encoded seed phrase from Scala node configuration file. There is an option `-seed-phrase-base58` to import it.\nAlso, this Base58 encoded seed phrase can be exported from Waves.Exchange wallet using `Settings | Security | Encoded Seed Phrase` menu option.\n```bash\n./wallet -seed-phrase-base58 \u003cstring of Base58 encoded seed phrase\u003e\n```\n\nThe last import option `-account-seed-base58` allows to import a Base58 encoded account seed. \n```bash\n./wallet -account-seed-base58 \u003cstring of Base58 encoded account seed\u003e\n```\n\nTo list the seeds stored in the wallet, run the following command and provide a password.\n```bash\n./wallet -show\n```\n\n\n### Client library examples\n\nCreate sender's public key from BASE58 string:\n```go\n   sender, err := crypto.NewPublicKeyFromBase58(\"\u003cyour-public-key\u003e\")\n   if err != nil {\n\t   panic(err)\n   }\n```\nCreate sender's private key from BASE58 string:\n```go\n    sk, err := crypto.NewSecretKeyFromBase58(\"\u003cyour-private-key\u003e\")\n    if err != nil {\n        panic(err)\n    }\n```\n\nCreate script's address:\n```go\n    a, err := proto.NewAddressFromString(\"\u003cscript's address\u003e\")\n    if err != nil {\n        panic(err)\n    }\n```\n\nCreate Function Call that will be passed to the script:\n```go\n    fc := proto.FunctionCall{\n        Name: \"foo\",\n        Arguments: proto.Arguments{\n            proto.IntegerArgument{\n                Value: 12345,\n            },\n            proto.BooleanArgument{\n                Value: true,\n            },\n        },\n    }\n```\n\nNew InvokeScript Transaction:\n```go\n    tx, err := proto.NewUnsignedInvokeScriptV1('T', sender, a, fc, proto.ScriptPayments{}, waves, 500000, uint64(ts))\n    if err != nil {\n        panic(err)\n    }\n```\n\nSign the transaction with the private key:\n```go\n    err = tx.Sign(sk)\n```\n\nCreate new HTTP client to send the transaction to public TestNet nodes:\n```go\n    client, err := client.NewClient(client.Options{BaseUrl: \"https://testnodes.wavesnodes.com\", Client: \u0026http.Client{}})\n    if err != nil {\n        panic(err)\n    }\n```\n\nSend the transaction to the network:\n```go\n    _, err = client.Transactions.Broadcast(ctx, tx)\n    if err != nil {\n        panic(err)\n    }\n```\n\n### What's done\n\n* Full blockchain support of Waves Protocol version 1.4\n* Full support of RIDE version 6\n* Full support of gRPC API\n* Full support of Metamask API\n* Block generation\n* Partial and very limited support of REST API\n* Fast and optimized import of blockchain\n* Fast and optimized RIDE evaluation\n\n### Known issues\n\n* Reduced REST API, only few methods are available\n\n### Future plans\n\n* Extensive integration testing\n* Full support of REST API\n\n### Building from sources\n\nGo version 1.25 or later is required to build the `node`, `importer`, `wallet` and other tools.\n\nTo build a node, importer or other tools run a `make` command:\n\n```bash\nmake release-importer\nmake release-node\n...\n```\n\n## Other Tools\n\n* [chaincmp](https://github.com/wavesplatform/gowaves/blob/master/cmd/chaincmp/README.md) - utility to compare blockchains on few nodes\n* [wmd](https://github.com/wavesplatform/gowaves/blob/master/cmd/wmd/README.md) - service to provide a market data for Waves DEX transactions\n","funding_links":[],"categories":["Products"],"sub_categories":["Other"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwavesplatform%2Fgowaves","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwavesplatform%2Fgowaves","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwavesplatform%2Fgowaves/lists"}