All Projects → RabbyHub → Rabby

RabbyHub / Rabby

Licence: other
The game-changing wallet for Ethereum and all EVM chains

Programming Languages

typescript
32286 projects
Less
1899 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to Rabby

awesome-defi
Curated list of awesome DeFi protocols, dapps, wallets and other resources
Stars: ✭ 36 (-93.59%)
Mutual labels:  avalanche, bsc, optimism, defi, xdai
awesome-list-rpc-nodes-providers
A curated list of awesome Node providers and public PRC endpoints for Ethereum, BSC, xDAI, Fantom, Avalanche and more :)
Stars: ✭ 39 (-93.06%)
Mutual labels:  avalanche, polygon, bsc, fantom, xdai
farm-army-backend
Track your farming and pool performance on the Binance Smart Chain, Polygon, Fantom, KuCoin Community Chain, Harmony, Celo - https://farm.army - nodejs backend
Stars: ✭ 86 (-84.7%)
Mutual labels:  polygon, bsc, fantom, celo
nft-collection-scaffold
Production-ready code for an NFT Collection sale and minting on Ethereum, Polygon, Arbitrum or Binance Smart Chain
Stars: ✭ 53 (-90.57%)
Mutual labels:  dapp, polygon, arbitrum
CryptoLogos
Hundreds of crypto logos simply named by their normalized contract address
Stars: ✭ 14 (-97.51%)
Mutual labels:  polygon, bsc, fantom
defi
Tools for use in DeFi. Impermanent Loss calculations, staking and farming strategies, coingecko and pancakeswap API queries, liquidity pools and more
Stars: ✭ 464 (-17.44%)
Mutual labels:  dapp, defi
go-compound
Golang client for compound.finace api and smart contracts
Stars: ✭ 23 (-95.91%)
Mutual labels:  dapp, defi
MultiDexArbBot
This is an arbitrage bot that uses existing price aggregators such as 1inch, Paraswap, dex.ag, matcha and more to get the best exchange rates across different decentralized exchanges on different blockchains and ecosystems.
Stars: ✭ 67 (-88.08%)
Mutual labels:  dapp, defi
quipuswap-webapp
🌐 🧙‍♂️ Decentralized application UI for Quipuswap protocol.
Stars: ✭ 21 (-96.26%)
Mutual labels:  dapp, defi
defi-dapps-solidity-smart-contracts
This is a Web 3 Smart Contract learning and teaching repo which will be used to teach students all across Pakistan.
Stars: ✭ 241 (-57.12%)
Mutual labels:  dapp, defi
typescript-eth-starter
🔌 Ethereum Dapp Basic Typescript Starter
Stars: ✭ 125 (-77.76%)
Mutual labels:  dapp, polygon
Setheum
Setheum Network - Islamic Finance DeFi, Multi-Stablecoins, Payments, EVM, DeFi on Rockets to Heaven => 🚀ready for hacking🚀
Stars: ✭ 15 (-97.33%)
Mutual labels:  dapp, defi
alcor-ui
Alcor Exchange | First self-listing onchain DEX for eosio tokens;
Stars: ✭ 103 (-81.67%)
Mutual labels:  dapp, defi
NFT-Dapp-Boilerplate
A highly scalable NFT and DEFI boilerplate with pre added web3 and different wallets with a focus on performance and best practices
Stars: ✭ 51 (-90.93%)
Mutual labels:  dapp, defi
zeneth
🏵️ Let Your ETH Chill — Gasless Ethereum account abstraction with Flashbots
Stars: ✭ 112 (-80.07%)
Mutual labels:  dapp, defi
core
SIREN Core Smart Contracts
Stars: ✭ 39 (-93.06%)
Mutual labels:  dapp, defi
defi-sdk-js
JavaScript/TypeScript wrapper for DeFi SDK
Stars: ✭ 33 (-94.13%)
Mutual labels:  dapp, defi
awesome-waves
Curated list of awesome things for development on Waves blockchain.
Stars: ✭ 60 (-89.32%)
Mutual labels:  dapp, defi
airswap-web
AirSwap Web App
Stars: ✭ 94 (-83.27%)
Mutual labels:  dapp, defi
octofi-app-aquafarm
OctoFi - Track your DeFi portfolio, find new investment opportunities, buy and sell directly, and wrap your tentacles around a sea of gains. Hosted on Github Pages.
Stars: ✭ 36 (-93.59%)
Mutual labels:  dapp, defi

Rabby DavidDM

Rabby is an open source browser plugin for the DeFi ecosystem, providing users with a better-to-use and more secure multi-chain experience.

Install

You can Download the latest Rabby here.

Guideline for integrating Rabby Wallet

To help dapp developers support and integrate Rabby Wallet more easily, we recommend you use our integration solution that has almost NO development cost and does not introduce any uncertainty:

Problem

When a dapp connects to an extension wallet, it usually works in this way:

  1. The extension wallet will integrate an "Ethereum" object into the dapp page while it's loading;
  2. The dapp will look for this "Ethereum" object to determine if an extension wallet is installed;
  3. If the "Ethereum" object is detected, all following interactions between the dapp and the extension wallet are realized by this "Ethereum" object.
  4. If the "Ethereum" object is not detected, the dapp will ask users to download a new extension wallet.

The problem is that many dapps will wrongly display this detected "Ethereum" object as "MetaMask" and displays a "connect to MetaMask" button by default which brings a lot of confusion to the users as any Web3 wallet can inject this "Ethereum" object.

Solution:

We recommend you to solve above problem with simple modifications as follows:

  1. On your connection page, display both connection buttons for "MetaMask" & "Rabby Wallet" when the "Ethereum" object is detected: these two buttons basically have the same function. Users can click any of them to interact with the "Ethereum" object and perform the connection operation. These two buttons are only used to display both brands' logos to help users understand their operation path.
  2. If the "Ethereum" object is not detected, then suggest the users go download the extension wallet and provide download links for both "MetaMask" and "Rabby Wallet".

This solution does not involve any change to your actual business logic and is just simple UI adjustments. It does not introduce any uncertainty and is with rather low cost.

You can refer to "https://debank.com" for final display effect.

Potential issues:

According to the above solution, if a user is using the "Rabby Wallet" and clicks the "connect to MetaMask" button, he will still interact with the "Rabby Wallet" and vice versa which might be a little bit weird.

However, above issue is a very rare scenario and very unlikely to happen because users are not likely to click and interact with an extension wallet that he hasn't installed. Even it happens, it's not a real problem from the user's perspective.

Please don't hesitate to reach us if you have any doubt.

Contribution

Install dependency

  1. Install Node.js version 14 or later
  2. Install Yarn npm install -g yarn
  3. Run yarn to install dependency

Development

Run yarn build:dev to develop with file watching and development log(you can see request sent by dapp in website console in this mode and notification will not close when focus lost)

Run yarn build:pro to build a production package, it's in dist folder

Language

  1. Copy _raw/_locales/en/messages.json to _raw/_locales/${localCode}/messages.json (Find your locale code in https://en.wikipedia.org/wiki/Language_localisation#Language_tags_and_codes)
  2. Replace content in message property to your locale language

ATTENTION: When you create a new key, make sure the key should without space and not duplicate with exist(case insensitive)

Architecture

architecture

Extension's scripts

below 4 scripts all live in different context!

- background.js

for all async request and encrypt things.

user's keyrings, password and wallet personal preference data all stored in chrome local storage.

it has 2 main controllers:

  1. walletController

    it expose methods to background window, so other scripts can access these methods with runtime.getBackgroundPage, e.g. ui.js.

  2. providerController

    it handles request from pages(dapp request).

- content-script

injected at document_start, share the same dom with dapp, use broadcastChannel to tap pageProvider.

the main purpose is inject pageProvider.js and pass messages between pageProvider.js and background.js.

- pageProvider.js

this script is injected into dapp's context through content-script. it mounts ethereum to window.

when dapp use window.ethereum to request, it will send message to content-script with broadcastChannel and wait for it's response.

then the content-script will send message to background with runtime.connect.

after background receive the message, it will use providerController to handle the request. and keep the message channel in sessionSevice for later communicate.

- ui

it's used by 3 pages which share the same js code, but the template html is different for respective purpose.

  1. notification.html

    triggered by dapp to request user's permission.

  2. index.html

    opened in browser tab for better user interaction experience.

  3. popup.html

    user click the extension icon on the right of address bar, the popup will show.

Thanks

Thanks for contributions from MetaMask team to browser extension wallet community, Rabby use (or fork) them to make Rabby better.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].