Web3Wallet SDK
This spec has moved to WalletConnect Docs
import React from "react"; | |
import * as uuid from 'uuid'; | |
import { WindowProvider } from "@wagmi/connectors" | |
import defaultProviderIcon from "../assets/defaultProviderIcon.png" | |
// copied from https://github.com/wagmi-dev/references/blob/main/packages/connectors/src/utils/getInjectedName.ts | |
function getInjectedName(ethereum?: WindowProvider) { | |
if (!ethereum) return 'Injected' |
REQ wc_pairingDelete | |
- ttl = 86400 | |
- tag = 1000 | |
- msg = 400 (~312) | |
RES wc_pairingDelete | |
- ttl = 86400 | |
- tag = 1001 | |
- msg = ?? |
// Our RPC id's are expected to be the same "length" | |
// generating id's should use Unix epoch timestamp in miliseconds and append 3 random digits | |
// currently Kotlin SDK has at least 3 more digits than all other SDKs | |
// yet while Kotlin is the minority, it's preferable to increase integers than decrease them | |
// this way we can keep backwards-compatibility for Kotlin clients in older releases | |
// thus we could also increase entropy by also increasing other SDKs to 6 random digits | |
function payloadId() { | |
const date = Date.now() * Math.pow(10, 6); | |
const extra = Math.ceil(Math.random() * Math.pow(10, 6)); |
// Currently our proposals require a lot from wallets by including all methods into requiredNamespaces | |
// This puts a high requirement on the wallets to support a lot of methods and chains | |
{ | |
requiredNamespaces: { | |
eip155: { | |
chains: [1, 2, 3], | |
methods: [ | |
'eth_sendTransaction', | |
'eth_sendRawTransaction', |
<!-- index.html --> | |
<html> | |
<head> | |
<script src="index.js"></script> | |
</head> | |
</html> |
This spec has moved to WalletConnect Docs
import { BigNumber, BigNumberish, constants, utils } from "ethers"; | |
const { Zero, MaxUint256 } = constants; | |
const { parseUnits, formatUnits } = utils; | |
export const toWad = (amount: string, decimals = 18): BigNumber => { | |
return parseUnits(sanitizeDecimals(amount, decimals), decimals); | |
}; | |
export const fromWad = (wad: BigNumberish, decimals = 18): string => { |
Multi-chain provider would require primarly two main methods to interface with a multi-chain cryptocurrency wallet: enable and request.
Enable method would translate the same JSON-RPC parameters of CAIP-25 as Javascript arguments
const axios = require("axios"); | |
const ethers = require("ethers"); | |
// For REST API clietn | |
const baseUrl = "<INSERT_CONNEXT_REST_API_URL>"; | |
// For Rinkeby provider | |
const ethProviderUrl = "<INSERT_ETH_PROVIDER_URL>"; | |
// this mnemonic is used to mint tokens and fund clients with some ETH for gas (currently funded with some Rinkeby ETH) |
import WalletConnect from "walletconnect"; | |
// Create WalletConnect SDK instance | |
const wc = new WalletConnect(); | |
// Connect session (triggers QR Code modal) | |
const connector = await wc.connect(); | |
// Get your desired provider |