├── .github └── workflows │ └── ci.yml ├── README.md ├── pull_request_template.md └── wallets.json /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Check wallets list 2 | 3 | on: 4 | pull_request: 5 | branches: [ "main" ] 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - uses: actions/checkout@v3 13 | 14 | - name: Read wallets.json 15 | run: | 16 | content=`cat ./wallets.json` 17 | content="${content//'%'/' '}" 18 | content="${content//$'\n'/' '}" 19 | content="${content//$'\r'/'%0D'}" 20 | echo "WALLETS_LIST=$content" >> $GITHUB_ENV 21 | 22 | - name: Check out tonconnect/sdk 23 | uses: actions/checkout@v3 24 | with: 25 | repository: ton-connect/sdk 26 | 27 | - name: Read .nvmrc 28 | run: echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_ENV 29 | 30 | - name: Set up Node.js 31 | uses: actions/setup-node@v2 32 | with: 33 | node-version: '${{ env.NVMRC }}' 34 | 35 | - name: Set up dependencies 36 | run: npm ci 37 | 38 | - name: Build tonconnect/protocol 39 | shell: bash 40 | run: npx nx run protocol:build 41 | 42 | - name: Test sdk with new wallets list 43 | shell: bash 44 | run: | 45 | cd packages/sdk 46 | VITE_WALLETS_LIST='${{ env.WALLETS_LIST }}' npm run test 47 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TON Connect Wallets 2 | 3 | This repository contains the list of wallets that support TON Connect. 4 | 5 | TON Connect [SDK](https://github.com/ton-connect/sdk) uses this list to present a choice of wallets so that dapp knows which bridge to use. 6 | 7 | ### Entry format 8 | 9 | Each entry has the following format (subject to change): 10 | 11 | ```json 12 | { 13 | "name": "Tonkeeper", 14 | "image": "https://tonkeeper.com/assets/tonconnect-icon.png", 15 | "tondns": "tonkeeper.ton", 16 | "about_url": "https://tonkeeper.com", 17 | "universal_url": "https://app.tonkeeper.com/ton-connect", 18 | "bridge": [ 19 | { 20 | "type": "sse", 21 | "url": "https://bridge.tonapi.io/bridge" 22 | }, 23 | { 24 | "type": "js", 25 | "key": "tonkeeper" 26 | } 27 | ], 28 | } 29 | ``` 30 | 31 | #### Description 32 | - `name`: name of your wallet. Will be displayed in the dapp. 33 | - `image`: url to the icon of your wallet. Will be displayed in the dapp. Resolution 288×288px. On non-transparent background, without rounded corners. PNG format. 34 | - `tondns`: (optional) will be used in the protocol later. 35 | - `about_url`: info or landing page of your wallet. May be useful for TON newcomers. 36 | - `universal_url`: (strictly required for `sse` bridges, optional otherwise) base part of your wallet universal url. Your link should support [Ton Connect parameters](https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link) 37 | - `bridge`: options for connectivity between the app and the wallet 38 | - `type="sse"`: specify the `url` of your wallet's implementation of the [HTTP bridge](https://github.com/ton-connect/docs/blob/main/bridge.md#http-bridge). 39 | - `type="js"`: specify the `key` through which your wallet handles [JS Bridge](https://github.com/ton-connect/docs/blob/main/bridge.md#js-bridge) connection, specify the binding for your bridge object accessible through `window`. Example: the key `"tonkeeper"` means the bridge can be accessed as `window.tonkeeper`. 40 | 41 | If your wallet supports HTTP Bridge, you should specify `universal_url` and `bridge.type="sse"`. 42 | 43 | If your wallet provides the JS bridge (e.g. as a browser extension), you should specify the `bridge.type="js"`. 44 | 45 | If your wallet supports both bridges, you have to specify `universal_url` and both `bridge.type="sse"` and `bridge.type="js"`. 46 | 47 | ### How do I add my wallet? 48 | 49 | Submit a [pull request](https://github.com/ton-connect/wallets-list/pulls) that modifies the list. 50 | 51 | Note, that you should add your wallet **to the end of the list**. 52 | 53 | We will review correctness of the info (obviously we want this info to be provided by the wallet’s developer) and merge it promptly. 54 | This process may take some time. 55 | 56 | ### What is the policy? 57 | 58 | Our goal is to represent accurate up-to-date list of all TON wallets that support TON Connect. 59 | 60 | In the future it would be a good idea to replicate wallet's info in a TON DNS record so that this repo simply lists the wallet domain names (to filter out spam), while developers have more direct control over the wallet parameters. 61 | -------------------------------------------------------------------------------- /pull_request_template.md: -------------------------------------------------------------------------------- 1 | # Add wallet 2 | 3 | ## Supports 4 | - [x] JS bridge as a browser extention for [Google Chrome](), ..., browsers. 5 | - [ ] JS bridge for the in-wallet browser for [iOS]() and [Android](). 6 | - [ ] JS bridge for in-wallet browser for [Windows](), [macOS](), ... . 7 | - [x] HTTP bridge as a mobile wallet app for [iOS]() and [Android](). 8 | - [ ] HTTP bridge as a desctop wallet app for [Windows](), [macOS](), ... . 9 | 10 | ## Supported features 11 | - [ ] [ton_proof](https://github.com/ton-connect/docs/blob/main/requests-responses.md#address-proof-signature-ton_proof) 12 | - [x] [SendTransaction](https://github.com/ton-connect/docs/blob/main/requests-responses.md#methods) 13 | 14 | 15 | ## Tests 16 | [a demo dapp with integrated wallet](link) 17 | 18 | ## Integrator contacts 19 | * telegram 20 | * email 21 | * discord 22 | * ... 23 | -------------------------------------------------------------------------------- /wallets.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Tonkeeper", 4 | "image": "https://tonkeeper.com/assets/tonconnect-icon.png", 5 | "tondns": "tonkeeper.ton", 6 | "about_url": "https://tonkeeper.com", 7 | "universal_url": "https://app.tonkeeper.com/ton-connect", 8 | "bridge": [ 9 | { 10 | "type": "sse", 11 | "url": "https://bridge.tonapi.io/bridge" 12 | }, 13 | { 14 | "type": "js", 15 | "key": "tonkeeper" 16 | } 17 | ] 18 | }, 19 | { 20 | "name": "OpenMask", 21 | "image": "https://raw.githubusercontent.com/OpenProduct/openmask-extension/main/public/openmask-logo-288.png", 22 | "about_url": "https://www.openmask.app/", 23 | "bridge": [ 24 | { 25 | "type": "js", 26 | "key": "openmask" 27 | } 28 | ] 29 | }, 30 | { 31 | "name": "MyTonWallet", 32 | "image": "https://mytonwallet.io/icon-256.png", 33 | "about_url": "https://mytonwallet.io", 34 | "bridge": [ 35 | { 36 | "type": "js", 37 | "key": "mytonwallet" 38 | } 39 | ] 40 | }, 41 | { 42 | "name": "Tonhub", 43 | "image": "https://tonhub.com/tonconnect_logo.png", 44 | "about_url": "https://tonhub.com", 45 | "universal_url": "https://tonhub.com/ton-connect", 46 | "bridge": [ 47 | { 48 | "type": "js", 49 | "key": "tonhub" 50 | }, 51 | { 52 | "type": "sse", 53 | "url": "https://connect.tonhubapi.com/tonconnect" 54 | } 55 | ] 56 | } 57 | ] 58 | --------------------------------------------------------------------------------