Move to native bitcoin multi-sig wallet for community funds

During the recent Summit, in order to circumvent high Ethereum fees for small payouts, we have decided to move our community funds out of WBTC, back to native Bitcoin (and then log bitcoin TXIDs for payments).

To do

Required for MVP

  • Decide on wallet software to use
  • Decide on signature requirements to use for now (3 out of 6?)
  • Gather public keys of core team members
  • Move funds out of WBTC

Later

  • Add function logPayoutProof() (or similar name) to Reimbursement contract → adds bitcoin txid
  • Add bitcoin address to user profiles (could be an “account” in the IPFS contributor profile)
1 Like

Regarding the wallet software, we discussed looking into Specter.

@bumi Did you have a chance to look into that already? Let me know if/when I could help with testing.

Edit: I just had a quick go at Specter, and it requires a Bitcoin Core node to connect to via RPC. Default is a local full node (which most of us don’t have on their laptops). I guess we could/should allow RPC access to the Kosmos node? Not sure how that would work in terms of permissions for RPC calls. Haven’t looked into that for a long time…

I am not sure what the best practice is for that. As the readme says it is probably easiest to run specter on the same machine as bitcoind.
Who of the potential signers does not have a bitcoin core running?

Do we also put some of it in a lightning channels?
Maybe we go with Electrum? Which is proven and easy to use for everybody?

1 Like

If you’re running one on your laptop, or with hot keys on a server, then you are likely the only signer doing so, from what I know of the others off the top of my head.

Yes, that could be a good idea. We could set up an Electrum server so people could connect to a non-tracking node.

Specter does not need the wallet enabled, so no keys required. I don’t think sharing the bitcoind is a good idea and worth the effort.

Yeah, I just meant that most of us don’t have a mainnet-synced bitcoin full node on our laptop, or have access to a remote one via RPC. So we could either share the Kosmos remote bitcoind somehow, or use a different solution. Setting up a shared Electrum server in our bitcoin VM seems to me like it could make more sense.

https://bitcoinelectrum.com/creating-a-multisig-wallet/

@bumi Should we test that? I think 3-out-of-6 would be reasonable.

Yep, let’s use electrum. 3-out-of-6 sounds also good.
What do you think about having an additional “hot wallet” for smaller payments -potentially a lightning wallet.
for some smaller payments we probably don’t need 3 signatures? and we could fund the “hot wallet” from time to time.

We already have 2 LN nodes, one being used for BTCPay payments.

Interesting: d11n 🍯🦡⚡️🕗🔗: "Working on LN bank, an extension for @BTCPayServe…" - Mastodon

that is basically lnbits but in an imo bloated BTCPay.

1 Like

We have now moved all funds to a new multi-sig wallet, after having successfully tested receiving and sending money from it. It is a 3-out-of-5-signatures contract between the currently regularly-active core contributors.

Anyone can verify the co-operatives budget by using the following master public keys:

{
  "x1/": {
    "derivation": "m/1'",
    "type": "bip32",
    "xpub": "Zpub6xtzWAdi1NGFEtw4AUzUF9Kkg4NuYCUCc1p4eYrFfbhNCqHt4nGGGdLqBdRm4qrBRQyf6mttjB49DJo5WVwwnVaHa3vcrzdHGfmxvm6aJut"
  },
  "x2/": {
    "derivation": null,
    "type": "bip32",
    "xpub": "Zpub752KsUJCDkrSJdxd5zYyXY2owP6xYwA8mX5U8Up4z9vyifKGwEaCw9PkZmTzw1dAZFJSQ39pfvBdEUrmEBF13r2LpxcscxTrMWHqgXhf87n"
  },
  "x3/": {
    "derivation": "m/1'",
    "type": "bip32",
    "xpub": "Zpub6zEduzXed6kMxvrJHQZ7vXi1qRVKeMZyjkMoTo1wG8cAfTC7wLq3wVrfVYtXbqw3BWoqidpo6kCxLaZJ3Jh1xDvfPvLYWG3DDuxDXtZcF1H"
  },
  "x4/": {
    "derivation": "m/1'",
    "type": "bip32",
    "xpub": "Zpub6ywHiWQh9yZ6pRwYEeBueNM76Cu3KNXLo87pvP9VWB9xBD8HPwHamovjRXuPX7xvtM8QF1J1rGpnpwmNEssERgJwHGEWiRaaSyiYMPru6Tn"
  },
  "x5/": {
    "derivation": "m/1'",
    "type": "bip32",
    "xpub": "Zpub6zE56WRoaF1hDxzSCFva33tWV97wRVgiwqVYqXE1ymfpRReaVGbdo6JfqBmKAns33sW2fU9ahNECmyPppNh93jHVGvcfc3vFpDFt4CYp65g"
  }
}

We will also show the balance and transactions on the upcoming budget dashboard of the Kredits Web UI soon. And if someone wants to earn some kredits by explaining how people could set up a watch-only wallet to verify transactions themselves, that would be most welcome! :slight_smile:

The current wallet balance is 1.17028756 BTC.

We have also kept a small amount of ETH in the Gnosis Safe, for future testing, gas fees for deployment, etc…

1 Like