An open source standard for connecting mobile wallets to dapps - https://walletconnect.org
For more documentation go to: https://docs.walletconnect.org
- Install
yarn add walletconnect
# OR
npm install --save walletconnect
- Example
import WalletConnect from 'walletconnect'
import WalletConnectQRCodeModal from 'walletconnect-qrcode-modal'
/**
* Create a webConnector
*/
const webConnector = new WalletConnect(
{
bridgeUrl: 'https://test-bridge.walletconnect.org', // Required
dappName: 'INSERT_DAPP_NAME', // Required
}
)
/**
* Initiate WalletConnect session
*/
await webConnector.initSession()
/**
* Check if connection is already established
*/
if (webConnector.isConnected) {
// If yes, get accounts
const accounts = webConnector.accounts
} else {
// If not, prompt the user to scan the QR code
const uri = webConnector.uri;
// Listen for session confirmation from wallet
await webConnector.listenSessionStatus()
// Get accounts after session status is resolved
accounts = webConnector.accounts
}
/**
* Draft transaction
*/
const tx = {from: '0xab12...1cd', to: '0x0', nonce: 1, gas: 100000, value: 0, data: '0x0'}
/**
* Send transaction
*/
try {
// Submitted Transaction Hash
const result = await webConnector.sendTransaction(tx)
} catch (error) {
// Rejected Transaction
console.error(error)
}
/**
* Draft message
*/
const msg = 'My email is [email protected] - 1537836206101'
/**
* Sign message
*/
try {
// Signed message
const result = await webConnector.signMessage(msg)
} catch (error) {
// Rejected signing
console.error(error)
}
/**
* Draft Typed Data
*/
const msgParams = [
{
type: 'string',
name: 'Message',
value: 'My email is [email protected]'
},
{
type: 'uint32',
name: 'A number',
value: '1537836206101'
}
]
/**
* Sign Typed Data
*/
try {
// Signed typed data
const result = await webConnector.signTypedData(msgParams)
} catch (error) {
// Rejected signing
console.error(error)
}
- Install
/**
* Install NPM Package
*/
yarn add rn-walletconnect-wallet
# OR
npm install --save rn-walletconnect-wallet
/**
* Nodify 'crypto' package for cryptography
*/
# install "crypto" shims and run package-specific hacks
rn-nodeify --install "crypto" --hack
- Example
import RNWalletConnect from 'rn-walletconnect-wallet'
/**
* Create WalletConnector
*/
const walletConnector = new RNWalletConnect({
uri: 'ethereum:wc-8a5e5bdc-a0e4-47...TJRNmhWJmoxdFo6UDk2WlhaOyQ5N0U=',
push: {
type: 'fcm',
token: 'cSgGd8BWURk:APA91bGXsLd_...YdFbutyfc8pScl0Qe8-',
webhook: 'https://push.walletconnect.org/notification/new',
}
})
/**
* Approve Session
*/
await walletConnector.approveSession({
accounts: [
'0x4292...931B3',
'0xa4a7...784E8',
...
]
})
/**
* Reject Session
*/
await walletConnector.rejectSession()
/**
* Kill Session
*/
await walletConnector.killSession()
/**
* Handle push notification events & get call data
*/
FCM.on(FCMEvent.Notification, event => {
const { sessionId, callId } = event;
const callData = await walletConnector.getCallRequest(callId);
// example callData
{
method: 'eth_sendTransaction',
data: {
from: '0xab12...1cd',
to: '0x0',
nonce: 1,
gas: 100000,
value: 0,
data: '0x0'
}
}
});
/**
* Get all calls from bridge
*/
const allCalls = await walletConnector.getAllCallRequests();
/**
* Approve and share call result
*/
walletConnector.approveCallRequest(
callId,
{
result: '0xabcd...873'
}
)
/**
* Reject call request
*/
walletConnector.rejectCallRequest(
callId
)
- Install
/**
* Install NPM Package
*/
yarn add web3 walletconnect-web3-provider
# OR
npm install --save web3 walletconnect-web3-provider
- Example
import Web3 from 'web3'
import WalletConnectProvider from 'walletconnect-web3-provider'
/**
* Create WalletConnect Provider
*/
const provider = new WalletConnectProvider({
bridgeUrl: 'https://test-bridge.walletconnect.org', // Required
dappName: 'INSERT_DAPP_NAME', // Required
rpcUrl: 'http://localhost:8545' // Required
}
/**
* Create Web3
*/
const web3 = new Web3(provider)
/**
* Initiate WalletConnect Session
*/
const session = await web3.currentProvider.walletconnect.initSession()
/**
* Get Accounts
*/
const accounts = await web3.eth.getAccounts()
if (!accounts.length) {
// Display QR Code URI
const uri = web3.currentProvider.walletconnect.uri
// Listen for session status
await web3.currentProvider.walletconnect.listenSessionStatus()
// Get Accounts Again
accounts = await web3.eth.getAccounts()
}
/**
* Send Transaction
*/
const txHash = await web3.eth.sendTransaction(tx)
/**
* Sign Transaction
*/
const signedTx = await web3.eth.signTransaction(tx)
/**
* Sign Message
*/
const signedMessage = await web3.eth.sign(msg)
/**
* Sign Typed Data
*/
const signedTypedData = await web3.eth.signTypedData(msg)
$ git clone https://github.com/WalletConnect/walletconnect-monorepo.git && cd $_
$ npm install
$ npm run bootstrap
$ npm run check-packages
$ npm run publish
LGPL-3.0