Bisdraw, a new user contributed dApp for Bismuth

We’re always very happy to witness Bismuth users roll up their sleeves and build on top of $Bis.
Today, I’ll give you an overview of Cipery’s latest dApp, named “Bisdraw”.

Overview

Bisdraw can currently be used directly from your browser.
Head over to Bisdraw page, you’ll see the list of currently registered canvas.

Anyone can register a canvas for a fee so I did, see my – soon to be famous – EggBoard!
Your browser has to support WebGL so a recent browser is advised. Chromium is the one that was tested fully working.

Anyone can see the current canvas, and you can add pixels to a public canvas by sending specific Bismuth transactions. Price per pixel is defined for every canvas at registration stage, and can be for free.
For my test, I set up a 0.1 $BIS per pixel price tag. I feel this would discourage spamming, and I’ll likely regularly post and advertise the current state of my board, so it could get some visibility.

My awesome canvas – Yeah, I’m an artist at heart 😉

Adding pixels

You add pixels in 1980s style- one by one after selecting their color. You can enqueue up to 100 pixels in a single transaction.
Once you’re done, “copy bis url” button copies the data in your clipboard (may not work on some browsers, chromium does work).
All you have to do is paste that Bisurl into your tk-wallet or tornado wallet and send it.
Once the transaction goes on chain, the board is updated for everyone.

Behind the scenes

Cipery defined a custom protocol, where you first have to register a canvas – this defines the owner’s address, canvas dimensions, price per pixel, canvas name, then specific transactions adding pixels.
All is stored on-chain, with all intermediate states.
That means you can reconstruct the state of the board at any given point, or write over something you don’t want to appear. If you own a canvas, you can write over what you don’t like for almost free, since you are “paying yourself”.
No complete picture is stored on-chain, just individual lists of pixels at some points in time.
It’s like a display wall where everyone can paste its advert on top of others, and this could be quite fun with time if a canvas gains notoriety…

The Bismuth Philosophy inside

Cipery’s implementation fully complies to the Bismuth Philosophy and architecture.

It’s a nice example of what abstract transactions, operation and custom protocols can achieve.
With an ETH like computation model, every node would have to keep the state of every canvas at every block.
With Bismuth, no matter how many canvases there are, or how many times you write over any specific pixel: the core nodes do not have to be aware of what the transaction and data mean, no core node has to parse the data, or try to figure out what the current picture is.
To them, these are just transactions, and only the core transaction rules do apply: are the sender and recipient valid? Does the sender have enough balance to send the transaction? That’s all.

Only the Bisdraw-aware clients have to know what the data mean, need to validate the data within the transactions, and update the current canvas.
Why should every node waste resources for something that only concerns a few?

That custom Bisdraw protocol is not published yet, I hope it will be so we can play with alternative clients and build on top of that nice idea again.

Bisurl role

The Bisurl is used as a convenient way to embed full transaction data into a simple string.
A Bismuth transaction is composed of recipient and amount, but also “operation” and “data”. The Bisdraw app fills all that for you, then pack it all into a Bisurl you can copy and paste in your wallet of choice.

Using a Bisurl, the bismuth standard, means you are sure to send what was intended and did not forget any character. It comes with a checksum so you won’t be able to send it if it’s erroneous.

Win^3

That Bisdraw concept is win-win-win! Everyone wins!

  • Cipery did learn how to play with Bismuth abstract transactions, protocol and Bisurl in C#, his language of choice. He will hopefully get some pocket change via the – one time – canvas registration fees.
  • Users can create a canvas of their own, and get paid to their BIS addresses. I hope some OG will use that to their advantage…
  • Announcers, pools, exchanges can use this new advertising method

For Bis itself, of course this is a new use case for Bis, demoing important core principles and how easy it is to build on top of Bis – python or not – and be paid for it.
Oh, yes, I did not tell yet, but it’s very likely Cipery will get a bounty for that work!

Possible extensions

This is the first version of Bisdraw, and I’m pretty sure more will come.

From a user point of view, there are several things I can’t wait to see implemented, like the ability to send a small picture instead of drawing pixel by pixel, or enter text and have it converted to pixels.

Once the protocol is known, some cool utils and converters – Cipery’s or others’ – will likely emerge.

Then we can imagine mobile apps, tornado crystals, a js client, and more!

Get in touch

Please come and discuss on the Bismuth Discord, there is a #dev section and we are eager to help anyone with a Bis-backed project.