Photo by Helloquence on Unsplash

Happy Friday everyone!

Work continues on the SDFS SDK design. John and I added a User API that was conspicuously missing from the diagram from last time; this API will allow a user to look up information about another user, such as their public key.

We then ran into a pretty major hurdle that we hadn’t fully considered. When Multichain runs normally, it runs on behalf of a wallet. To run on behalf of a wallet, it needs that wallet’s private key. Due to the extreme difficulty/impossibility of running the Multichain Daemon (or any other daemon) on mobile devices or in Javascript, we had planned to allow the mobiles/web to connect to a remote instance of MultichainD and operate that way…but what do we do about the private key? Certainly we cannot send the private key to the remote instance — that is absolute blasphemy to a security-minded engineer. We started digging through the Multichain documentation, and they’ve actually considered this scenario as well! And they documented it!

Gushing over Multichain’s amazing documentation (which is fantastic) aside, essentially we’ll create an unsigned transaction, have the mobile application sign the transaction securely, and send the pre-signed transaction to the remote MultichainD instance to be pushed onto the chain raw. We have two options for how we create that unsigned transaction — we could ask the remote MultichainD instance to do it, which is easy but requires a network endpoint to do it, or we could construct one manually on the local device which is harder. We’re still going back and forth over that.

All in all, it seems we’ve just about reached the end of the dedicated design phase of this project. Sure, some questions will surely arise as we begin to code this out, and we’ll have to come up with answers to them, but the time has come to start coding. Be sure to check back Wednesday to see how that’s going.

About the Author:

Cody Sandwith is a University of Washington graduate, and has been working for Topia Technology since 2011 on Secrata, a highly-encrypted File Sync and Share Platform.