Hive Multisig Proposal

Ever since I looked into the multisig capabilities of the Hive blockchain and wrote this tutorial about it over three years ago, I've felt it was a pity that there is no way to use it effectively in our ecosystem, and also wanted to do something about it.

After talking with @forykw and @yabapmatt I realized there was really a demand for this, so I started to look for devs.

What is Multisig ?

An account set to use multisignature (or multisig) will require one or more signatures to perform an operation, as opposed to traditional accounts that only require one signature.

I encourage you to read this article to better understand how this works on Hive. It was written for S***m at the time but the principles are the same on Hive.

TL;DR
For owner, active and posting authorities, instead of having only one key, you can set several, or also set other accounts as having authority. Each of these keys or accounts has an associated weight, and the authority has a threshold. For the transaction to be broadcasted successfully, the combined weights of the keys and accounts used for signing need to reach the threshold.

Example
If your posting authority has 1 key (weight set to 2) and 3 other accounts (all weights set to 1)and its threshold is set to 3, you can either require the three other accounts to sign (1 + 1 + 1 = 3), or sign with your key and one other account (2 + 1 = 3)

Why is this important ?

Here are a few uses cases of multisig wallets on Hive:

Enhanced security

With a multisig account, even if one of your keys is compromised, your funds are still safu.

2 Factors Authentication (2FA)

One way this could be used on Hive is by creating a 2FA using a desktop and mobile wallet (Keychain for instance ;p). You could sign once with an account present on your computer, and be prompted to sign a second time on your mobile wallet.

Community decisions

Hive is based on communities, and multisig is a very powerful tool for them to take decisions based on consensus.

DHF Proposals

I see two possible applications of multisig linked to the DHF :

  • For "umbrella proposals" that ask for funds in advance (marketing, petty cash, etc.) , it could be used to distribute the funds based on consensus.
  • Because we fear abuse, it is currently quite hard for new developers to fund their project on the DHF, without reputation to back them up. With multisig, we could assign them reviewers that would unlock the funds upon reaching milestones.

Authority granularity

How to allow someone to vote with your account but not to post?
Give that user an insufficient posting authority, and run a bot to complete the signature only for voting.

The problem

For a multisig transaction to be broadcasted, it must be signed by several accounts before the transaction expires. There is currently no easy way to pass the partially signed transaction to the next users and ask for their signature.

Proposal

What we want to build

Communication protocol

Our communication protocol will use WebSockets to relay pending transactions to those who can sign it.

Here's a simple story where user A initiates a transaction but also needs user B and C signatures:

User A uses her favorite frontend and initiates a transaction. Her transaction is signed using her key, then encrypted once for each potential signer using their memo key. The resulting username-encrypted messages are sent via WebSockets.

User B is already online and his wallet is set to automatically connect to Hive Multisig (via signing a message). A popup immediately opens up and prompts him to accept or reject the transaction. The updated transaction (with two signatures) is sent back to Hive Multisig.

User C is currently offline, but receives a message on Discord and quickly connects to HiveAuth via her mobile wallet, before the transaction expires. As soon as she connects, she receives the same prompt. Since her signature is the last one to be required, the transaction is immediately broadcasted upon confirmation. User A and B are notified.
If however, User C doesn't make it on time and the transaction expires, User A and B are also notified of the failure.

Infrastructure

We will make sure that our infrastructure is robust enough to handle high traffic, and that it can scale easily, using auto-scaling groups of instances.

One-stop Multisig dApp

This dApp will allow users to sign in, modify their account authorities (add/remove keys or authorized users), and build and perform multisig transactions.
This will also serve as a demonstration dApp for other dApps wishing to implement Hive Multisig.

Hive Multisig Library + Doc

A library will enable seamless integration of Hive Multisig on any front-end (sender) and wallet (receiver). We will work closely with third-party developers to determine the specifications.
The library will be well documented.

Budget

For this proposal, we are requesting a daily funding of 230 HBD/day for a year. This will cover the hiring of two new developers (part-time) and the infrastructure costs. This is also a great occasion to onboard new developers to work on our blockchain!

/!\ NOTE: This proposal is totally independent from the Hive Keychain proposal, and the teams will not overlap. I will just put in a few extra hours to manage the devs.

Commitments

  • We commit to keep all the code produced through this funding opensource. The repositories will be announced soon.
  • We also commit to write monthly updates to keep the community updated.

Support Hive Multisig Development by voting for this proposal on Hive Keychain, PeakD or HiveSigner.

H2
H3
H4
3 columns
2 columns
1 column
48 Comments