# WalletConnect Multi-Chain Support
## Project Overview
WalletConnect connects mobile wallets to blockchain applications securely and we aim to expand this feature beyond Ethereum with multi-chain support
Smart contract blockchains require a two-way communication with wallets to display and sign transactions from Dapps. This poses some constraint on application development to provide a good user experience without compromising user's private keys.
WalletConnect focuses on building the best user experience for wallet interoperability with dapps supporting now more than 30 wallets and over 65 dapps on Ethereum.
With this proposal we aim to expand this support to Polkadot chains as well.
## Project Details
WalletConnect can be described succintly as a secure remote signing protocol which provides a JSON-RPC API to a set of public key pairs.
As a secure remote signing protocol it served first and foremost mobile wallets which leveraged the protocol the most by remotely interfacing with decentralized applications. After developing both the protocol and user experience for just over two years we have acquired a lot of feedback and experience from private key management in the cryptocurrency space.
With this grant we aim to develop what we call a generalized protocol for secure remote signing protocol while preserving the same user experience that current wallets provide without much friction. This is possible thanks to but not exclusively to a set of standards that we've been collaboratively working with projects on Ethereum, Cosmos, Kusama and others called CAIP (Chain Agnostic Improvement Proposals).
Initially we will start by prototyping a secure connection between two browser apps to iron out session management between two applications communicating through JSON-RPC API for multiple blockchains. We will be using CAIP standards to establish signing agreements targeted at the respective chains for each payload.
## Ecosystem Fit
On Ethereum there are is MEWConnect and WalletLink however the disdavantage of these projects is that they focus on proprietrary solutions that only fit one wallet, MyEtherWallet and Coinbase Wallet, respectively.
Outside of Ethereum, there is for example WalletBeacon from AirGap which builds on top of TZIP-10 Wallet Interaction Standard and additionally uses Matrix protocol to transport messages.
WalletConnect has the advantage of being more open by using JSON-RPC messaging which makes it more flexible to support different blockchain interfaces. Additionally with v2.0 we plan to use Waku relay protocol that is built on top of libp2p making it compatible with both server and client devices.
## Team members
Pedro Gomes,
Sebastian BolaƱos
## Team Website
* https://walletconnect.org
## Legal Structure
Currently in the process of incorporating a consulting company for WalletConnect
## Team's experience
Pedro has specialized on Wallet development on Ethereum for 3 years and has authored WalletConnect v1.0 protocol which has gained large adoption across all major Ethereum-compatible wallets. Also co-authored many EIPs and pushed adoption for many signing schemas and provider interfaces. Also core contributor to CAIPs.
Sebastian has improved scaling and devops security and contributed to most backend infrastructure on WalletConnect. He also has worked on node development for Althea's mesh network that provides ISP marketplaces on remote areas. Additionally has worked on Meson network, a mixnet for cryptocurrency transactions.
## Team Code Repos
* https://github.com/walletconnect/walletconnect-monorepo
* https://github.com/walletconnect/node-walletconnect-bridge
## Team LinkedIn Profiles
* https://github.com/pedrouid
* https://github.com/sebohe
## Development Roadmap
One of the current pitfalls of the first version of the protocol is the usage of a central relay server between two clients called Bridge server and with this second version of the protocol we will be replacing it with a Waku node to publish and subscribe messages. For the initial prototype we plan to adapt the existent bridge server to mock Waku node interface in order to focus on the client side protocol before migrating the node infrastructure.
After the client side protocol development has stabilized on the browser side with the mock Waku node, we will move on to distribute Javascript alpha packages on NPM that are compatible with browser, node-js and react-native applications. This will set the stage for integrations with mobile wallets that use react-native like Lunie.
Once the alpha packages are battle-tested across all application environments, we can finally replace the mock Waku node with the actual Waku node that will publish and subscribe messages to its decentralized network. At this stage we will be publishing the first beta packages and develop backend infrastructure to track insightful metrics to test latency and performance.
Finally when the beta packages are fully tested and the Waku infrastructure is solidified, we will start the integration collaboration with the Lunie team to support WalletConnect multi-chain support. Lunie provides a great use-case for WalletConnect multi-chain support since they offer both a web interface and a multi-chain mobile wallet which will showcase the protocol's value proposition perfectly.
* Prototype Stage (2 weeks - 2 developers - 160 hours total - 5.600 USD)
* Protocol specification for key exchange and session management
* Client-side development for browser applications
* Testing for network reliability and fallback mechanisms
* Alpha Stage (2 weeks - 2 developers - 160 hours total - 5.600 USD)
* Client-side development for node-js and react-native applications
* Cross-platform testing across browser, node-js and react-native
* Distributing javascript alpha packages to NPM
* Beta Stage (2 weeks - 2 developers - 160 hours total - 5.600 USD)
* Replacing central servers with Waku nodes
* Developing backend monitoring and metrics
* Distributing javascript beta packages to NPM
* Polkadot Support (1 week - 2 developers - 80 hours total - 5.600 USD)
* Supporting Polkadot JSON-RPC API specification
* Developing Polkadot JSON-RPC Javascript Provider for Dapps
* Developing Polkadot JSON-RPC Signing Module for Wallets
* Lunie Integration (5 weeks - 2 developers - 400 hours total - 14.000 USD)
* Web application integration with browser clients
* Mobile wallet integration with react-native clients
* Testing and QA for production release
Project Total = 3 months - 2 developers - 960 hours - 36.400 USD
## Future Plans
After all the development and research into the multi-chain support for the generalized secure remote signing protocol we plan to focus on providing initial support for Ethereum-based and Substrated-based chains.
We plan to continue our work in collaboration with other blockchain foundations to expand our support across different chains with specific requirements for their use-cases.
Additionally the protocol will be extendable to new transport connections like WebRTC and Bluetooth which we believe will improve both the user experience but also the security model of the protocol.
Moreover we foresee a need for additional infrastructure to be developed for session authentication to make the WalletConnect protocol more prepared for enterprise use. While the initial development focused on protocol interoperability and performance, it will still lack the existence of third party services to ensure the authenticity for these connected applications
## Additional Information
WalletConnect has been previously awarded grants by Ethereum Foundation (May 2018) and Consensys (Sep 2018). WalletConnect however does not hold any business agreements with these entities currently.
We have also applied with the same proposal to provide WalletConnect multi-chain support with ICF