WalletMatrix

38

#bitcoin wallets for

Vendors

 

Do you maintain a Bitcoin wallet? Then you're a vendor! Help the growing Bitcoin community find your wallet among the hundreds of others occupying this crowded space by self-managing it on WalletMatrix.

All you need is a public Github repository and a special JSON file.

WalletMatrix wants vendors to manage their own data. After all, vendors know most about their own wallet. All you need to do is maintain a simple JSON file in your existing GIthub repository *.

Added a new wallet feature recently? Just commit those changes and WalletMatrix will do the rest.

* Vendors without a public repository can self-manage on our own Github.

Benefits

By keeping the JSON file updated, the Bitcoin community benefits by having a reliable source of wallet information that doesn't become stale.

Because WalletMatrix enjoys referrals from some popular Bitcoin resources; vendors and maintainers enjoy greater exposure to their projects. The same can be said of our REST API when developers connect their apps and present your wallet data outside of WalletMatrix itself.

Vendors also benefit by shaping future WalletMatrix JSON schema iterations. Have your say about the features and options that should become searchable by the Bitcoin community.

Further Information

FAQ

I'm keen, where do I sign up!?

If we haven't submitted a pull-request to one of your wallet repos yet, or you don't have your own public repository, we can help with that: Just tweet us or email hello@dcentrica.com.

Who are DCentrica?

DCentrica is the parent company of WalletMatrix, a small, bespoke software development shop based in New Zealand looking to specialise in software development using decentralised systems such as Bitcoin, Lightning Network and IPFS.

How does it work?

You host a matrix.json file on a public github repository which WalletMatrix automatically processes and imports. It's as simple as that. If you don't have your own public Github, we can grant you access to a private Dcentrica owned repository. In this case, we're assuming your developers already have a GitHub account so we just need a username and email address.

Developers maintain matrix.json and commit changes each time new features are added to your wallet(s). WalletMatrix periodically consumes the GitHub data, validates and renders it on the website within the matrix itself and also via our REST API.

What does the JSON file look like?

You can see a dummy example here. The file is named matrix.json and should validate against our version 3 JSON schema. Data is automatically validated against the schema each time our automated import process runs. Validation failures are automatically detected and we're notified.

We have two GitHub repos for our iOS and Android app, do these count as two separate wallets?

We don't support multiple data repos for the "same" wallet. Instead a single matrix.json file can contain all required data for multiple wallets. We assume an iOS and Android app for example comprise the same (or very similar) features of the same "wallet" and therefore only a single instance of matrix.json should exist.

Note that the matrix.json data file can also be configured to contain Github references to both projects' repos too. Have a look at the schema to find out more.

Why GIT?

  • You have developers!
  • No admin login required which is a minimised attack vector for us and less hassle for you

Can we generate a UUID for a new wallet?

Sure! Use our web-service to generate a compatible v4 UUID. See our developers page for more.

Note: UUIDs are of course unique so multiple wallets shouldn't share a UUID.

How do we validate our matrix.json against the schema?

VSCode users can configure their editors to validate their matrix.json file against our schema. If you know of additional services, packages and IDE plugins, please let us know and we'll list them here.

How does self-verification for users work?

Wallet vendors can optionally digitally sign their matrix.json file using PGP by exporting a detached signature file and naming it matrix.asc and pushing that to Github. When WalletMatrix discovers this file, an extra validation process occurs during the periodic import process:

If the signature is valid for the associated matrix.json file, then a “shield” icon is highlighted when your wallet appears in search results. Users can then select this in order to download the files and manually verify them using free and open source software tools.

We updated matrix.json but forgot to update matrix.asc, what happens now?

Not much! But the automated validation process will fail which will result in users seeing the corresponding “shield” icon displaying as un-verified for your wallet in search results. This means that users will not be able to download your files in order to self-verify.

You should create a new matrix.asc file and push that to your GitHub repo as soon as possible, so it can be processed in the next import run.

How often are Github repos queried and wallet data imported?

Hourly.

We changed our company name and updated matrix.json, but self-verification breaks. What happened?

The automated PGP validation system relies on there being a match between the "organisation.name" JSON field, and the github repo slug. Future iterations will likely rely on a vendor UUID which of course is not subject to change.

In the interim, if you need to change your organisation name, just let us know with as much notice as you can, and we’ll sort that for you.

What does it cost?

Nothing.

We welcome donations from vendors who have the means to contribute and who may have benefited from their services being available on WalletMatrix. Tweet us or email to find out how: hello@dcentrica.com.

While Web API requests are initially free, we do plan on introducing a tiered access model, priced and paid in Satoshi, using The Lightning Network.

How do you avoid Wallet Scams?

In order to ensure a minimum level of quality and to avoid scam projects, there's a handful of criteria that wallets should meet. See our Listing Policy to find out more.

How are wallets in the Matrix ordered?

In order to avoid gamification of search results by sorting by last-updated date, search results are instead ordered alphabetically by wallet name.

We pushed some changes, but they haven't appeared for over an hour. What's up?

Assuming you can rule-out browser or proxy caches that are showing you stale data, then it's likely your matrix.json hasn't validated correctly against our schema. Double check that then commit your changes and push again. We plan on introducing a dashboard feature so vendors can see at-a-glance the status of their wallet imports.

Note: There is currently no automated alert for you when this happens (It's in our backlog though).

Which coins are supported in matrix.json?

WalletMatrix knows about three types of currencies: "Fiat", "Crypto" and "Stablecoin". All fiat currencies listed here are valid, however only a subset of crypto currencies and stablecoins are included. This is because of the sheer number of them, the frequency with which they pop in and out of existence and the lack of any definitive source outside of any given exchange. These reasons far outweigh their importance in what is essentially a "bitcoin first" wallet seeking service.

Fiat

See: https://www.xe.com/iso4217.php#section2

Crypto

BTC, BCH, BSV, ETH, ETC, ZEC, XMR, DASH, EOS, XRP, DOGE, NMC, PPC, GRC, NEO, XLM, ONT

Stablecoin

TUSD, GUSD, USDT, BTS, DAI

Can we help with anything?

You sure can!

How can the current version 3 schema be improved? What does the WalletMatrix JSON Schema v4 look like? The schema is used to validate incoming data from GitHub. Our ideas right now are centred around fine-grained data points for Lightning Network features such as the following, but your suggestions are welcome. Tweet us or flick us an email: hello@dcentrica.com.

  • Trampoline payments (Y|N)
  • Auto channel funding (Y|N)
  • Testnet (Y|N)
  • Custodial (Y|N)
  • Fees [0-9]%
  • AMP (Y|N)
  • In-app Bitcoin purchase (Y|N)
  • Turbo channel aware (Y|N)
  • Loop-in / Loop-out (Y|N)