Dogecoin Tooling Stream 3rd July 2021

One of the most frequent questions on stream is “How do I get started with blockchain development?”, and my answer is almost universally “With something simple”. Diving into Dogecoin Core as a first project is like trying to learn cooking starting with The Great British Bake Off, it’s fine as a target goal, but if you start there you’re likely to spend a lot of time frustrated.

Learning works best when you’re enjoying it, and we enjoy having something to show for our work. Jumping into a project where you can make something in a few hours to a few days, depending on complexity and your experience, is much more rewarding than dealing with the intricies of Dogecoin Core. There’s also a lot of material to learn (how blocks are structured, how transactions are structured, the versions of each, etc. etc. etc.), and just trying to learn all of it will make you feel overwhelmed.

Today’s stream will be focusing on a tool I’m building to interact with Dogecoin Core. It may end up as two tools, actually, but lets not get ahead of ourselves. The tool will extract unspent transaction outputs from a node, then use them to build partially signed transactions. Those transactions are then sent to multiple wallet holders to sign, to build a transaction which spends from a multisignature address.

The first layer of this is a library which connects to the node over JSON-RPC, and lets calling code interact with it readily. The second layer brings in the actual functionality to collect the unspent outputs and build partially signed transactions from it. There will initially be no user interface, although that will then be layered on afterwards.

This is a good demonstration of a number of ideas in blockchain:

  • Transaction format
  • Unspent transaction outputs
  • Multisignature addresses
  • Programmatically creating transactions
  • Partially signed transactions
  • Interacting with dogecoind via JSON-RPC

While the tool is being built primarily to solve a need (spending from a multisignature address), it’s also a relatively good introduction to blockchain, and somewhere that others can hopefully jump in and learn while they go.

The other starting point I recommend to people is working with existing libraries, and adding tests, or updating them, given several use old versions and/or are only partially completed. There’s a list of libraries I am aware of, below:

If anyone knows of a C# library (or other libraries I should list), please do let me know.

I’ll be live, working on the tool at 7pm UK, 2pm Eastern, 11am Pacific at https://www.twitch.tv/rnicoll . Hope to see you there!