Update 31 March, 2022

Today we’re pleased to throw open the gates of the DBC Playground. Lucky Alice has 18,446,744,073,709,551,615 freshly minted tokens (she’s counted them all) and she’s generously agreed to give 100,000 to Bob. So Bob gives Alice his public key, and Alice generates a DBC just for him. Just to make sure the transaction’s gone through, Bob checks his wallet.

You can recreate this scenario and possibly some more exciting variations in @danda’s DBC Playground.

General progress

@heather_burns and @jimcollinson are working on the governance white paper and Heather has reached out to another decentralised project to scope out a possible advocacy response to the UK Online Safety Bill.

There’s been some good progress on membership integration with all tests passing now, reports @davidrusu. The pieces are all in place. Hold onto your hats folks…

@danda has finished removing the mint nodes from sn_dbc, as discussed last week, so some building blocks for exchanging owned and bearer DBCs are in place :tada: If you’re up for building the software (just copy and paste the commands so long as you have Rust etc installed) you can be among the first to experiment hands-on with Safe Network DBC technology.

@oetyng has implemented the message control flow / backpressure work, and that’s all been merged, which has further reduced node mem usage. He continues to look at improving node workload prioritisation, so there will be more to come there soon.

The DBC playground

The sn_dbc_examples crate contains an example wallet and spentbook node(s) intended to demonstrate usage of the sn_dbc crate. These communicate using qp2p and a simple example DBC messaging protocol. To be clear, these are not integrated with the rest of Safe Network. That work is in progress now. We have nick-named this the DBC Playground.

We invite interested and technically inclined community members to give the DBC playground a spin and let us know how you find it. It should work on Linux, Mac and Windows. Let us know if you need a hand with the build.


Rust latest version
build-essential (Debian) or equivalent

First build ultraman or install foreman - ultraman is a program that makes it easy to start/stop multiple spentbook nodes. Windows users will need to install the Ruby program foreman instead, for which you will first need to install Ruby - see instructions below.


$ git clone https://github.com/dan-da/ultraman.git
$ cd ultraman
$ cargo build
$ cargo install --path . # <- don't forget the ' .'

Windows (PowerShell)

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('<https://chocolatey.org/install.ps1>'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
cinst ruby
gem install foreman # in a new shell

Next build sn_dbc_examples

$ git clone https://github.com/maidsafe/sn_dbc_examples.git
$ cd sn_dbc_examples
$ cargo build

Open three terminal windows in the sn_dbc_examples directory.

In terminal window 1 start a distributed spentbook with 3 nodes:

$ RUST_LOG=info ultraman start

foreman start

In terminal window 2 (Bob) create a wallet:

$ cargo run --bin wallet -- --wallet-file .wallet2.dat

Now create a public key/address to receive funds:

>> newkey
Receive PublicKey: a1234567…

In terminal window 3 (Alice) create a wallet and check the balance

$ cargo run --bin wallet
>> balance
Available balance: 0

Now issue the genesis key to create Alice’s funds

>> issue_genesis

Check the balance again
>> balance
Available balance: 18446744073709551615 :money_mouth_face: :

Now Alice can reissue the genesis DBC into a smaller DBC to pay Bob 100000. The remainder automatically goes back to her wallet.

>> reissue

Available balance: 18446744073709551615
Amount to spend: 100000
[b]earer or [o]wned: o
Recipient’s public key: a1234567.....

-- Begin DBC --
01000000a5c4a0e24ff643b9a7056af9efe3ed447472cd8b ...
-- End Dbc--

Alice copies the DBC (note: just the characters between the begin and end tags and no white space) and sends it to Bob.

In terminal window 2 (Bob)

Bob types the deposit command in his wallet and pastes in the DBC, adding a note if he wants:

>> deposit

Paste Dbc:
01000000a5c4a0e24ff643b9a7056af9efe3ed447472cd8b ...
Notes (optional): from Alice
Deposited 100000

Now when Bob checks his balance it’s now 100,000 tokens.

>> Balance

Available balance: 100000 :dancer:

And he can see the DBC(s) and some info about it using the unspent command.

>> unspent

*-- Unspent Dbcs – *
a56e45ddf45f880b588b75f243fa88328d190c928596c5237c2d3bffe993a66c, rcvd: 2022-03-24T04:24:14.208444897+00:00, amount: 100000 (mine)

Full instructions are available in the sn_dbc_examples crate.

Let us know how you get on!

Useful Links

Feel free to reply below with links to translations of this dev update and moderators will add them here:

:russia: Russian ; :germany: German ; :spain: Spanish ; :france: French; :bulgaria: Bulgarian

As an open source project, we’re always looking for feedback, comments and community contributions - so don’t be shy, join in and let’s create the Safe Network together!


First now to read :slight_smile:

Well done to all the team I see the git hub has been spinning into overdrive this last week :slight_smile:


WooHoo!!! :wink: … Looking really great Maidsafe team. Will have a play with the DBC’s this weekend.

Thanks for the hard work … the end goal is getting close now!


Thanks so much to the entire Maidsafe team for all of your hard work! :racehorse:

Is there an update on the ERC20 progress?


Really awesome stuff. Question on the DBC stuff. Is there a way to revoke a DBC issuance? Say you meant to send 100,000 but accidentally typed 1,000,000. How do you reclaim your tokens?


I reckon that’s a matter of pleading with the receiver to return some. Hopefully there will be a “are you sure you want to send X amount” confirmation box or some such.


Excellent, looking forward to getting my teeth into this later tonight. My pessimism in the Pre-Dev-Update thread was misplaced it seems.
Thank you to all involved, not forgetting @JimCollinson and @Heather_Burns for the behind-the-scenes stuff.
The work from @oetyng and @danda make me hopeful that we will enjoy a fuller-featured comnet tomorrow if @Josh is up for it.

Thanks again, everyone.


The DBC is theirs at this point. You need to ask them to reimburse unless it was made a bearer cert, then it’s yours while in your possession.


Thanks for all the work team you guys have been on fire :fire:


There are a couple factors at play here:

  1. is the DBC bearer or owned?
  2. have you already given the dbc to recipient or not?

If the DBC is bearer, you can simply deposit it back into your own wallet and reissue it to your own key. In practice though, bearer dbcs will probably be quite rare.

If you have not provided the DBC to recipient, then they obviously cannot deposit/spend it yet. So you can at least stop payment. But if the DBC is owned, then you no longer have any ability to reissue it.

Once multisig is implemented, it would be possible to create a DBC with both yourself and the recipient as owners and only one required signer (m:n = 1:2). In this case then, either party could reissue it, and first one wins. So that should allow you to fat-finger away.


If anyone is trying out the examples/playground and has trouble with copy/paste of the (large) DBCs, you can try this branch I just made instead.

It provides an option to write the recipient’s DBC to a file, and to read from the file when depositing.


I can climb the highest mountains. I can cross the wildest seas!! I can feel the maidsafe’s fire :fire:


Keep up the hard work guys! :waxing_gibbous_moon:


Worked great, thanks!

One note on the instructions, you may want to be more clear about which directories you need to be in to run stuff, also on how to add the .cargo/bin folder to your PATH.


Too late, the DBC playground blew my mind, and my hat :tophat: exploded :exploding_head: . Great work team!


Well done team!!

I’m loaded. :


Bob’s happy too!



Thx @danda , I think It’s the great achievement. great!!!


Damn this is sexy!


Thx Maidsafe devs 4 another great update

Wow just wow, DBC is really incredible 2 try out.

I tried to play cute and send an [o]wned spend to the [b]earer pubkey, that didn’t work… :scream_cat:

After that stunt everything started going down hill
Here I tried to issue a [b]earer after issuing a [b]earer before with the same account (the 3 nodes went offline)

Now after every reissue attempt I get (PUT the 3 nodes back online)

I’ll try a fresh install, it’s really super fun this playground. :beers:

Thx 4 all the hard work keep hacking super ants