{"id":15711209,"url":"https://github.com/oasisprotocol/wallet","last_synced_at":"2025-04-04T18:08:11.365Z","repository":{"id":36954164,"uuid":"359634377","full_name":"oasisprotocol/wallet","owner":"oasisprotocol","description":"Official non-custodial wallet for the Oasis Network.","archived":false,"fork":false,"pushed_at":"2024-12-24T05:16:53.000Z","size":28528,"stargazers_count":111,"open_issues_count":116,"forks_count":45,"subscribers_count":31,"default_branch":"master","last_synced_at":"2024-12-31T21:33:47.827Z","etag":null,"topics":["android","android-app","blockchain","browser-extension","crypto","delegation","extension","extension-chrome","ledger","mobile","mobile-app","non-custodial","oasis","official","react","rose","staking","wallet","web"],"latest_commit_sha":null,"homepage":"https://wallet.oasis.io","language":"TypeScript","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/oasisprotocol.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2021-04-20T00:19:38.000Z","updated_at":"2024-12-17T09:54:31.000Z","dependencies_parsed_at":"2024-01-01T02:31:30.752Z","dependency_job_id":"ebe33722-61e4-4fe2-b3b7-95aee6be741b","html_url":"https://github.com/oasisprotocol/wallet","commit_stats":{"total_commits":2515,"total_committers":30,"mean_commits":83.83333333333333,"dds":0.5701789264413519,"last_synced_commit":"59a84eaced8df857b7c5060c4214a31a39a59407"},"previous_names":["oasisprotocol/wallet","oasisprotocol/oasis-wallet-web"],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oasisprotocol%2Fwallet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oasisprotocol%2Fwallet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oasisprotocol%2Fwallet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oasisprotocol%2Fwallet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oasisprotocol","download_url":"https://codeload.github.com/oasisprotocol/wallet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247226215,"owners_count":20904465,"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":["android","android-app","blockchain","browser-extension","crypto","delegation","extension","extension-chrome","ledger","mobile","mobile-app","non-custodial","oasis","official","react","rose","staking","wallet","web"],"created_at":"2024-10-03T21:12:10.198Z","updated_at":"2025-04-04T18:08:11.359Z","avatar_url":"https://github.com/oasisprotocol.png","language":"TypeScript","readme":"# ROSE Wallet\n\n[![CI build status][github-ci-build-badge]][github-ci-build-link]\n[![CI test status][github-ci-test-badge]][github-ci-test-link]\n[![CI lint status][github-ci-lint-badge]][github-ci-lint-link]\n[![Release status][github-release-badge]][github-release-link]\n[![License][license-badge]][license-link]\n[![codecov][codecov-badge]][codecov-link]\n[![Renovate enabled][github-renovate-badge]][github-renovate-link]\n\n\u003e :warning: **NEVER use the private keys and mnemonics given as examples\n\u003e in this repository.**\n\n[demo-video]\n\n## Deploys\n\n- Production browser extension: [chromewebstore.google.com]\n\n- Production / Stable deploy: \u003chttps://wallet.oasis.io\u003e\n\n  The main deploy of the wallet available to the general public.\n\n- Staging deploy: \u003chttps://wallet.stg.oasis.io\u003e\n\n  A deploy of the latest released version of the wallet available for users\n  wanting to try out and test the latest version.\n\n- Development deploy: \u003chttps://wallet.dev.oasis.io\u003e\n\n  A deploy of the latest code in the `master` branch available for power users\n  and developers to try out the latest (unreleased) version.\n\n## Features\n\n### Wallet and Accounts\n\n- Create/Restore wallets using standard [BIP-0039] mnemonic phrases\n- Import accounts from your [Ledger] hardware wallet\n- Import accounts directly from their private keys\n- Address book of your saved contacts\n- Create a profile to quickly access stored accounts with a password\n\n### Transactions\n\n- View transaction history\n- Send ROSE tokens between Consensus accounts\n- Stake/Debond ROSE tokens\n- Deposit and withdraw from ParaTimes (Sapphire, Emerald, Cipher)\n- Purchase ROSE using [Transak On-Ramp]\n\n### Accessibility\n\n- Available in multiple languages\n- Should not crash when using Google Translate\n\n## Getting started\n\n### Installing and running from source code\n\nYou can quickly get started with the following commands:\n\n```shell\nyarn install\nyarn start\n```\n\nThen go to \u003chttp://localhost:3000\u003e to access the wallet.\n\n### Test accounts\n\nThe local single-node network used for development comes built-in with two\naccounts already having tokens.\n\n```none\nUsing a private key:\nX0jlpvskP1q8E6rHxWRJr7yTvpCuOPEKBGW8gtuVTxfnViTI0s2fBizgMxNzo75Q7w7MxdJXtOLeqDoFUGxxMg==\noasis1qz0k5q8vjqvu4s4nwxyj406ylnflkc4vrcjghuwk\n\nUsing a mnemonic:\nabuse gown claw final toddler wedding sister parade useful typical spatial skate\ndecrease bulk student manual cloth shove fat car little swamp tag ginger\noasis1qq5t7f2gecsjsdxmp5zxtwgck6pzpjmkvc657z6l\n```\n\n## Architecture\n\n![Architecture diagram](docs/images/architecture.svg)\n\n- [envoy-proxy], used as a gRPC gateway for live access to the oasis-node, to\n  fetch live balance, information about the current state of the network, and to\n  submit transactions.\n- [oasis-nexus], is the official indexer for the Oasis Network, providing\nthe backend for the Oasis Explorer and ROSE Wallet.\nIt exposes an [API][oasis-nexus-api-spec].\n\n- [oasis-scan], oasis blockchain explorer that enables view of historical data\n  about transactions, accounts, validators, paratimes, blocks, proposals and\n  more. It exposes an [API][scan-api-repo].\n\nAPI that web wallet is using is determined during a build time.\n\n## Contributing \u0026 development\n\n### Running the tests\n\nThe repository has two different test strategies:\n\n- E2E (End-to-end) tests, run with [Playwright], located in\n  [playwright/](/playwright).\n  These tests require the react app to be accessible on port `3000`.\n- Unit \u0026 functional tests, run with [Jest], located throughout the codebase\n\nTo run all tests:\n\n```bash\n# Check typescript errors\nyarn checkTs\n\n# Run jest tests\nyarn test\n\n# Run playwright tests\nyarn start\n(cd playwright; yarn; npx playwright install --with-deps)\n(cd playwright; yarn test)\n# Or `yarn start:prod` and `yarn test:prod` to test production builds.\n# Or `xvfb-run yarn test` to prevent browser windows opening.\n\n# Manually check that content-security-policy in getSecurityHeaders.js doesn't\n# break any functionality\nyarn start:prod\n# Open http://localhost:5000/account/oasis1qq3xrq0urs8qcffhvmhfhz4p0mu7ewc8rscnlwxe/stake\n# and switch to testnet. This exercises at least: fonts, grpc, testnet grpc, API,\n# and validator logos.\n\n# Update screenshots\n(cd playwright; yarn test:screenshots)\n```\n\n### Code style\n\nThis repository uses [prettier] as a code formatter and [eslint] as it's linter.\nYou can use the following commands:\n\n```bash\n# Lint the whole repository\nyarn lint\n\n# Fix linting issues\nyarn lint:fix\n```\n\n#### Git Commit Messages\n\nA quick summary:\n\n- Separate subject from body with a blank line.\n- Limit the subject line to 72 characters.\n- Capitalize the subject line.\n- Do not end the subject line with a period.\n- Use the present tense (\"Add feature\" not \"Added feature\").\n- Use the imperative mood (\"Move component to...\" not \"Moves component to...\").\n- Wrap the body at 80 characters.\n- Use the body to explain _what_ and _why_ vs. _how_.\n\nA detailed post on Git commit messages: [How To Write a Git Commit Message].\n\n### Internationalization\n\nTranslating: We have [Transifex] to easily contribute translations.\n\nDevelopment: ROSE Wallet uses [react-i18next] for internationalization.\nYou can simply use the [useTranslation hook] inside your components to add\nadditional translation-ready strings. You can then export the new keys to the\n[English translation.json] by running `yarn run extract-messages`.\n\nUpdating from [Transifex]: [English translation.json] is set as an automatically\nupdating resource in Transifex, so the new translation strings will appear in\nTransifex a few hours after changes are merged. After they are translated:\n\n1. click \"Download file to translate\" on the target languages,\n2. `yarn run extract-messages`, and\n3. create a new pull request titled _\"i18n: Update translations from\n   Transifex\"_.\n\nAdding a new language:\n\n1. first add it to Transifex and translate the strings,\n2. create a folder with the new language code in `src/locales`\n   and download the translation file there,\n3. add the new language to the [list of resources][i18n.ts]\n\n## Mobile app development\n\n[Capacitor and Ionic docs](docs/mobile-development.md)\n\n## Preparing a Release\n\n[Release process doc](docs/release-process.md)\n\n[demo-video]: https://github.com/oasisprotocol/wallet/assets/3758846/ef11fbea-dd55-42b1-87a4-1b74509a2809\n[chromewebstore.google.com]: https://chromewebstore.google.com/detail/rose-wallet/ppdadbejkmjnefldpcdjhnkpbjkikoip\n[envoy-proxy]: https://www.envoyproxy.io\n[oasis-nexus]: https://github.com/oasisprotocol/nexus\n[oasis-nexus-api-spec]: https://nexus.oasis.io/v1/spec/v1.html\n[oasis-scan]: https://www.oasisscan.com\n[scan-api-repo]: https://github.com/bitcat365/oasisscan-backend#oasisscan-api\n[Jest]: https://github.com/facebook/jest\n[prettier]: https://prettier.io/\n[eslint]: https://github.com/eslint/eslint\n[How To Write a Git Commit Message]: https://chris.beams.io/posts/git-commit/\n[Transifex]: https://www.transifex.com/oasisprotocol/oasis-wallet-web/\n[react-i18next]: https://react.i18next.com/\n[useTranslation hook]: https://react.i18next.com/latest/usetranslation-hook\n[English translation.json]: src/locales/en/translation.json\n[i18n.ts]: src/locales/i18n.ts\n[github-ci-build-badge]: https://github.com/oasisprotocol/wallet/actions/workflows/ci-build.yml/badge.svg\n[github-ci-build-link]: https://github.com/oasisprotocol/wallet/actions?query=workflow:ci-build+branch:master\n[github-ci-test-badge]: https://github.com/oasisprotocol/wallet/actions/workflows/ci-test.yml/badge.svg\n[github-ci-test-link]: https://github.com/oasisprotocol/wallet/actions?query=workflow:ci-test+branch:master\n[github-ci-lint-badge]: https://github.com/oasisprotocol/wallet/actions/workflows/ci-lint.yml/badge.svg\n[github-ci-lint-link]: https://github.com/oasisprotocol/wallet/actions?query=workflow:ci-lint+branch:master\n[github-release-badge]: https://github.com/oasisprotocol/wallet/actions/workflows/release.yml/badge.svg\n[github-release-link]: https://github.com/oasisprotocol/wallet/actions?query=workflow:release\n[github-renovate-badge]: https://img.shields.io/badge/renovate-enabled-brightgreen.svg\n[github-renovate-link]: https://www.mend.io/renovate/\n[license-badge]: https://img.shields.io/badge/License-Apache%202.0-blue.svg\n[license-link]: https://opensource.org/licenses/Apache-2.0\n[codecov-badge]: https://codecov.io/gh/oasisprotocol/oasis-wallet-web/branch/master/graph/badge.svg\n[codecov-link]: https://codecov.io/gh/oasisprotocol/oasis-wallet-web\n[BIP-0039]: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\n[Ledger]: https://ledger.com/\n[Transak On-Ramp]: https://transak.com/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foasisprotocol%2Fwallet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foasisprotocol%2Fwallet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foasisprotocol%2Fwallet/lists"}