WalletConnect Wallet Technology

WalletConnect is the part of backend wallets service.

Create WalletConnect project

Before use, you must create an appropriate project in the WalletConnect dashboard https://cloud.walletconnect.com/app

Explorer settings for project:

  • type: dapp

  • category: exchanges

  • support Sign v.2: switch on

  • chains: on production it can be Binance Smart Chain Mainnet and Ethereum Mainnet.

  • logo: use project logo

  • testing instruction:

1. Open homepage 2. Register new account 3. Go to <ETH or BNB> Wallet 4. Push Deposit button 5. Select WalletConnect 6. Input sum 0.01 and push Next 7. Scan QR-code from your wallet application 8. In wallet application approve connect then sign message.

There are different project for stage and for production.

Setup wallets service

Add in section wallets in templates/compose/backend.yaml.t 3 environment variables:

  • EXTERNAL_WALLET_MESSAGE - system show this message when user are connecting

  • WALLET_CONNECT_PROJECT_ID - project_id from WalletConnect dashboard for current project

  • BASE_URL - marionette project homepage address

wallets: ... environment: ... EXTERNAL_WALLET_MESSAGE: "Please, verify marionette connection" WALLET_CONNECT_PROJECT_ID: e851e32304159aebb9054f65c43c47e9 BASE_URL: {{base_url}}

Use case

  • User selects currency and clicks deposit button

UI sends request:

query { currencyChains(currencyId:"ETH") { id title subtitle currencyPaymentInterfaces { id minDirectDepositAmount directDepositFee minDirectDepositFee maxDirectDepositFee } } }
  • if response has one or more results user can see “WalletConnect” choice

  • After select “WalletConnect” user sees the array of the buttons (for button title is used field chain.title from response)

  • For chosen chain user can select one of currencyPaymentInterface - with different restrictions and deposit fee parameters

User must be input deposit amount and push “Next” button.

UI sends request ans shows QRcode. QR is created for response string.

UI must be subscribe to:

When UI receive subscription with correct chainId it must send two consecutive requests:

It sends the message in wallet application with EXTERNAL_WALLET_MESSAGE for signing

It sends the transaction for signing: