laconic-wallet/README.md
shreerang6921 8c0751f84b Add details to setup wallet connect in readme (#58)
* Add details to setup wallet connect in readme

* Add hyperlinks for wallet connect terms

* Handle review changes

* Add keystore data structure and troubleshooting steps in readme

* Update readme

* Add pre-commit lint hook

* Resolve linter warnings

* Handle review changes

* Fix heading level in readme
2024-04-25 17:08:27 +05:30

165 lines
4.1 KiB
Markdown

# laconic-wallet
## Install
- Install [Node](https://nodejs.org/en/download/package-manager/)
- Install [version 17](https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.deb) of the Java SE Development Kit (JDK) (Clicking on the link will download the .deb file)
- Install using the `.deb` file
```bash
sudo dpkg -i jdk-17_linux-x64_bin.deb
```
- Check Oracle JDK docs for installation in other platforms: https://docs.oracle.com/en/java/javase/17/install/overview-jdk-installation.html
- Install [Android Studio](https://developer.android.com/studio/index.html)
- In the installation wizard check the following items:
- Android SDK
- Android SDK Platform
- Android Virtual Device
- Install Android SDK
- Open Android Studio -> Configure -> SDK Manager -> SDK PLatfrom Tab.
- Check the box next to "Show Package Details" in the bottom right corner. Look for and expand the Android 13 (Tiramisu) entry, then make sure the following items are checked:
- Android SDK Platform 33
- Intel x86 Atom_64 System Image or Google APIs Intel x86 Atom System Image
- Select SDK Tools and check the box next to "Show Package Details"
- Select Android SDK Build-Tools 33.0.0
- Click Apply
- Configure the `ANDROID_HOME` environment variable
- Add the following lines to your `$HOME/.bash_profile` or `$HOME/.bashrc` (if you are using zsh then `~/.zprofile` or `~/.zshrc`) config file:
```bash
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/platform-tools
```
- Type `source $HOME/.bash_profile` for bash or `source $HOME/.zprofile` to load the config into your current shell. Verify that `ANDROID_HOME` has been set by running
```bash
echo $ANDROID_HOME
```
- and that the appropriate directories have been added to your path by running
```bash
echo $PATH
```
## Setup for laconic-wallet
1. Clone this repository:
```
git clone git@git.vdb.to:cerc-io/laconic-wallet.git
```
2. Enter the project directory:
```
cd laconic-wallet
```
3. Install the dependencies:
```
yarn
```
4. Setup .env
- Copy and update [`.env`](./.env)
```
cp .env.example .env
```
- In [.env](./.env) file add WalletConnect project id. You can generate your own ProjectId at https://cloud.walletconnect.com
```
WALLET_CONNECT_PROJECT_ID=39bc93c...
```
5. Set up the Android device:
- For a physical device, refer to the [React Native documentation for running on a physical device](https://reactnative.dev/docs/running-on-device)
- For a virtual device, continue with the steps.
6. Start the application
```
yarn start
```
7. Press `a` to run the application on android
## Setup for signature-requester-app
1. Clone the repository:
```
git clone git@git.vdb.to:cerc-io/signature-requester-app.git
```
2. Enter the project directory:
```
cd signature-requester-app
```
3. Install the dependancies
```
yarn
```
4. Start the application
```
yarn start
```
5. Press `a` to run the application on android
You should see both the apps running on your emulator or physical device.
## Flow for the app
- User scans QR Code on dApp from wallet to connect
- After clicking on pair button, dApp emits an event 'session_proposal'
- Wallet listens to this event and opens a modal to either accept or reject the proposal
- Modal shows information about methods, chains and events the dApp is requesting for
- This information is taken from [namespaces](https://docs.walletconnect.com/advanced/glossary#namespaces) object received from dApp
- On accepting, wallet sends the [namespaces](https://docs.walletconnect.com/advanced/glossary#namespaces) object with information about the accounts that are present in the wallet in response
- Once [session](https://docs.walletconnect.com/advanced/glossary#session) is established, it is shown in the active sessions page
- In this way, wallet can connect to multiple dApps
## Troubleshooting
- To clean the buid
```
cd adroid
./gradlew clean
```