Skip to main content

Bounty Development

Hi, Awesome people! Welcome to start a bounty task on Mask Network.

Tech Requirements

Mask Network extension is written in TypeScript. The UI is written by React and @mui framework. We write CSS in CSS-in-JS style.

We prefer widely adopting tech solutions that include:

  • Web3.js Ethereum JavaScript API
  • react-use React Hooks — 👍
  • bignumber.js A JavaScript library for arbitrary-precision arithmetic.
  • lodash A modern JavaScript utility library delivering modularity, performance & extras.
  • urlcat A URL builder library for JavaScript.

If your bounty task is related to another project, it could have extra requirements that need to consider.

If you are familiar with these libraries mentioned above, it will take less effort for you to get started. The codebase is open-sourced under the AGPLv3 license.

Packages

After cloning the repository and set up the development environment. The codebase is constructed as a monorepo with many internal packages. Each package serves a specific purpose. Let's take a quick tour.

Core Packages

  • packages/mask The main extension which has multiple websites supports, keeps the user's data safe and hosts a plugin system.
  • packages/encryption The encryption & decryption of mask network.
  • packages/plugin-infra The definition of the plugin system, with a bunch of APIs to expose the core abilities to plugins.

Plugin Packages

  • packages/plugins/* All of the plugin packages.

Shared Packages

  • packages/shared Shared UI components and utilities.
  • packages/shared-base Shared types, constants, and atomic units. Must be as pure as possible and testable.

Web3 Packages

  • packages/web3-constants Each Web3 constant must set up for all known chain IDs.
  • packages/web3-contracts EVM contract ABIs and compiled TypeScript definitions.
  • packages/web3-provider A hub of APIs for external data source.
  • packages/web3-shared-* Shared hooks, utilities, types for each network.

Learn Through Examples

Almost all bounty tasks for the Mask Network plugin relate to a plugin. After learning the basics, checkout those pull requests or plugins to learn quick from examples.

Dapp Plugins

PluginPull Request Links
Collectiblehttps://github.com/DimensionDev/Maskbook/pulls?q=is%3Apr+label%3A%22Plugin%3A+Collectibles%22
Traderhttps://github.com/DimensionDev/Maskbook/pulls?q=is%3Apr+label%3A%22Plugin%3A+Trader%22
Savingshttps://github.com/DimensionDev/Maskbook/pulls?q=is%3Apr+label%3A%22Plugin%3A+Savings%22

Network Plugins

PluginPull Request Links
EVM Chainshttps://github.com/DimensionDev/Maskbook/pulls?q=is%3Apr+label%3A%22Plugin%3A+EVM%22

Pull Request Conversions

After bounty hacker opening a pull request. Reviewer will label it with Type: Bounty, and update a status tag while the progress on-going.

StatusDescription
Bounty: StartedThe DEV team noticed your request. You will receive comments from reviewers.
Bounty: ReviewedThe QA team noticed your request. You will receive bugs from reviewers.
Bounty: QualifiedYour request is qualifed. It will ship soon.