We have been working on an open source Web Monetization (WM) browser extension, starting with Chromium-based Web browser compatibility.
We worked closely with a company called Coil until 2023, when they sunset operations. They were a Web Monetization service provider that built a Web browser extension implementing the Web Monetization draft specification.
Here is a little bit of time travel.
January - February 2024
Early in the year, we focused on 3 main things:
- A new UI design for the extension.
- Collaboration with the Fynbos team to enable the Fynbos digital wallet to issue Web Monetization enabled wallet addresses, and to receive Web Monetization payments from our browser extension.
- A Web Monetization work-week held in Cape Town, South Africa.
The outcomes included:
- Successfully enabling Web Monetization on the Fynbos wallet, and connecting the wallet to the Web Monetization browser extension.
- A decision to use public key cryptography to authenticate the extension to a digital wallet.
- The WM extension product roadmap.
March - April 2024
Enable or disable all WM payments globally
The ability to enable or disable Web Monetization at a global level makes it possible to temporarily disable the extension from making Web Monetization payments, regardless of whether the site is web monetized.
PKI cryptography
As part of implementing public key cryptography, the WM extension generates a public-private key pair during installation, stores the private key securely, and displays the public key. This allows a user of the extension to copy the public key value, in order to upload it to their digital wallet. This way, the extension is able to authenticate itself to the wallet.
Connect or disconnect a wallet
To connect a wallet to the extension:
- A user enters their wallet address, and the amount they want to authorize the extension to access from their wallet.
- Once a wallet address has been entered, the extension detects and displays the specific currency of the wallet.
- When connecting, the wallet grants permission authorized by the user, and issues access tokens to the extension.
When disconnecting a wallet from the extension, all permissions are cancelled by revoking the access tokens.
Major refactor
We wanted to begin balancing the intestinal flora 🌻 of the extension by improving the structure of the codebase to make it more coherent, and by consolidating related functional areas into services. The goal was to set up the codebase for stability and maintainability in the future.
Hourly rate for Web Monetization payments
The extension allows a user to set their own hourly rate for making Web Monetization payments. For this, we looked into allowing the extension to:
- Process any currency, and represent amounts at the level of precision that is supported by the connected wallet.
- Make it possible for a user to set their own hourly rate for making WM payments, by using a slider scale.
- Work out the amount to send a WM enabled website, and how often the extension makes the payments, based on the hourly rate.
May 2024
Core monetization functionality
The major refactor rocked our world, in a good way. It also required more time than we had anticipated, and it showed the need to rework some core areas of functionality:
- Detecting, validating and handling multiple WM tags, and their wallet addresses on a WM enabled webpage.
- Correctly invoking the start, stop, or resume monetization events for ongoing WM payments.
- Detecting that a webpage is enabled for WM before the page gets completely loaded and displayed.
Recurring monthly budget
Allowing a user to authorize permission for the extension to access a configurable maximum amount from their connected wallet, on a monthly basis, for Web Monetization payments.
What comes next?
While we are not where we hoped to be on the release timeline, we are committed to building a solid extension that offers sound user experience and utility.
In order of priority, we look forward to an alpha release that includes:
- Making one-time payments
- Handling web monetized iframes
- Enabling or disabling continuous payments
- Displaying the remaining authorized wallet balance
- Formatting the displayed amount when the asset scale is high
Helpful references
- Learn more about enabling a website for Web Monetization.
- Follow or contribute to our open source WM extension repo in GitHub.
Top comments (0)