@coinbase/wallet-sdk
Version: 
Coinbase Wallet JavaScript SDK
137 lines (96 loc) • 3.15 kB
Markdown
# Coinbase Wallet SDK
## Coinbase Wallet SDK lets developers connect their dapps to Coinbase Wallet in the following ways:
1. [Coinbase Smart Wallet](https://keys.coinbase.com/onboarding)
   - [Docs](https://www.smartwallet.dev/)
1. Coinbase Wallet mobile for [Android](https://play.google.com/store/apps/details?id=org.toshi&referrer=utm_source%3DWallet_LP) and [iOS](https://apps.apple.com/app/apple-store/id1278383455?pt=118788940&ct=Wallet_LP&mt=8)
   - Desktop: Users can connect to your dapp by scanning a QR code
   - Mobile: Users can connect to your mobile dapp through a deeplink to the dapp browser
1. Coinbase Wallet extension for [Chrome](https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad?hl=en) and [Brave](https://chromewebstore.google.com/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad?hl=en)
   - Desktop: Users can connect by clicking the connect with extension option.
### Installing Wallet SDK
1. Check available versions:
   ```shell
     # yarn
     yarn info @coinbase/wallet-sdk versions
     # npm
     npm view @coinbase/wallet-sdk versions
   ```
2. Install latest version:
   ```shell
   # yarn
   yarn add @coinbase/wallet-sdk
   # npm
   npm install @coinbase/wallet-sdk
   ```
3. Check installed version:
   ```shell
   # yarn
   yarn list @coinbase/wallet-sdk
   # npm
   npm list @coinbase/wallet-sdk
   ```
### Upgrading Wallet SDK
Upgrade Coinbase Wallet SDK using yarn or npm.
#### yarn/npm
1. Compare installed version with latest:
   ```shell
   # yarn
   yarn outdated @coinbase/wallet-sdk
   # npm
   npm outdated @coinbase/wallet-sdk
   ```
2. Update to latest:
   ```shell
   # yarn
   yarn upgrade @coinbase/wallet-sdk --latest
   # npm
   npm update @coinbase/wallet-sdk
   ```
### Basic Usage
1. Initialize SDK
   ```js
   const sdk = new CoinbaseWalletSDK({
     appName: 'SDK Playground',
   });
   ```
2. Make web3 Provider
   ```js
   const provider = sdk.makeWeb3Provider();
   ```
3. Request accounts to initialize connection to wallet
   ```js
   const addresses = provider.request({
     method: 'eth_requestAccounts',
   });
   ```
4. Make more requests
   ```js
   provider.request('personal_sign', [
     `0x${Buffer.from('test message', 'utf8').toString('hex')}`,
     addresses[0],
   ]);
   ```
5. Handle provider events
   ```js
   provider.on('connect', (info) => {
     setConnect(info);
   });
   provider.on('disconnect', (error) => {
     setDisconnect({ code: error.code, message: error.message });
   });
   provider.on('accountsChanged', (accounts) => {
     setAccountsChanged(accounts);
   });
   provider.on('chainChanged', (chainId) => {
     setChainChanged(chainId);
   });
   provider.on('message', (message) => {
     setMessage(message);
   });
   ```
### Developing locally and running the test dapp
- The Coinbase Wallet SDK test dapp can be viewed here https://coinbase.github.io/coinbase-wallet-sdk/.
- To run it locally follow these steps:
  1. Fork this repo and clone it
  1. From the root dir run `yarn install`
  1. From the root dir run `yarn dev`