<p>A construction that allows placing limits on what you're allowed to do in a transaction that spends a specific UTXO (such as constraining payment amounts or destinations) is called a covenant. Bitcoin doesn't currently support covenants (though they are a hotly debated topic) so that's not what Bitkey uses for spending limits.</p>
<p>From reading through the website it seems the bitcoins are locked with standard 2-of-3 multisig scripts where the keys are (mobile key, hardware key, server key). The <a href="https://bitkey.world/en-US/how-it-works" rel="nofollow noreferrer">How It Works</a> section on their website says this about the server key:</p>
<blockquote>
<p>Cannot sign payments over your personalized limit without your
hardware</p>
</blockquote>
<p>I believe this is slightly misleading and actually just means the server <em>will not</em> sign payments over the limit, but there's no cryptography or script magic actually preventing it. It also says the server key</p>
<blockquote>
<p>Helps recover your money if you lose your phone or hardware, or both</p>
</blockquote>
<p>so (mobile key, server key) is enough to recover all your funds. Specifically:</p>
<blockquote>
<p>This triggers a 7-day security waiting period, and you'll receive
security notifications via SMS or email to confirm you’ve requested
hardware recovery.</p>
</blockquote>

CC BY-SA 4.0
2024-03-15T03:54:47.680Z
Wow! This is a great answer and perfectly satisfied my curiosity. Thank you :)
atonaltensor
CC BY-SA 4.0
2024-03-15T03:43:58.007Z
2024-03-15T03:43:58.007Z
Vojtěch Strnad
<p>Block's new Bitkey is a 2-of-3 multi signature wallet (<a href="https://bitkey.world/en-US" rel="nofollow noreferrer">https://bitkey.world/en-US</a>)</p>
<p>I've been reading their white paper, which is a good summary of their intentions, but doesn't really go into technical details.</p>
<p>Basically, you need 2 of 3 (phone app &quot;mobile key&quot;, hard wallet &quot;hardware key&quot;, their web service &quot;server key&quot;) in order to approve a bitcoin transaction. As I understand it, n-of-m multisignature transactions is natively (and originally) supported by the BTC blockchain.</p>
<p>However, Bitkey also says that you cannot authorize transactions over a personal set spending limit without the hard wallet. (That is, even though &quot;mobile key&quot;+&quot;server key&quot; would be 2-of-3, the transaction still wouldn't be authorized if it was over my set spending limit).</p>
<p><strong>Is this functionality that is natively supported by the blockchain?</strong> If not (and is just a policy set of Block/Bitkey), in what ways could it fail or be exploited by a malicious actor? Could someone hack/manipulate Block/Bitkey's servers so that you could still send BTC over the transaction limit without the hard key?</p>
<p>(PS Sorry for the newbie question. I'm a dev but never worked with blockchains before. I'm learning. If there is more technical tutorial/guide on how I could implement multisig wallets with transaction limits in python, I would enjoy learning about that as well).</p>
<p>Thank you.</p>

<blockchain><script><multi-signature><hardware-wallet><covenants>
How are Bitkey's spending limits enforced?
atonaltensor
# How are Bitkey's spending limits enforced?

(Asked by: username_0 on 2024-03-15)

Block's new Bitkey is a 2-of-3 multi signature wallet (<https://bitkey.world/en-US>)

I've been reading their white paper, which is a good summary of their intentions, but doesn't really go into technical details.

Basically, you need 2 of 3 (phone app "mobile key", hard wallet "hardware key", their web service "server key") in order to approve a bitcoin transaction. As I understand it, n-of-m multisignature transactions is natively (and originally) supported by the BTC blockchain.

However, Bitkey also says that you cannot authorize transactions over a personal set spending limit without the hard wallet. (That is, even though "mobile key"+"server key" would be 2-of-3, the transaction still wouldn't be authorized if it was over my set spending limit).

**Is this functionality that is natively supported by the blockchain?** If not (and is just a policy set of Block/Bitkey), in what ways could it fail or be exploited by a malicious actor? Could someone hack/manipulate Block/Bitkey's servers so that you could still send BTC over the transaction limit without the hard key?

(PS Sorry for the newbie question. I'm a dev but never worked with blockchains before. I'm learning. If there is more technical tutorial/guide on how I could implement multisig wallets with transaction limits in python, I would enjoy learning about that as well).

Thank you.

**Tags:** blockchain, script, multi-signature, hardware-wallet, covenants


---

## 1 answers

### Answer by username_1 on 2024-03-15. Score: 2 | Accepted answer

A construction that allows placing limits on what you're allowed to do in a transaction that spends a specific UTXO (such as constraining payment amounts or destinations) is called a covenant. Bitcoin doesn't currently support covenants (though they are a hotly debated topic) so that's not what Bitkey uses for spending limits.

From reading through the website it seems the bitcoins are locked with standard 2-of-3 multisig scripts where the keys are (mobile key, hardware key, server key). The [How It Works](https://bitkey.world/en-US/how-it-works) section on their website says this about the server key:

> Cannot sign payments over your personalized limit without your
> hardware

I believe this is slightly misleading and actually just means the server *will not* sign payments over the limit, but there's no cryptography or script magic actually preventing it. It also says the server key

> Helps recover your money if you lose your phone or hardware, or both

so (mobile key, server key) is enough to recover all your funds. Specifically:

> This triggers a 7-day security waiting period, and you'll receive
> security notifications via SMS or email to confirm you’ve requested
> hardware recovery.

> **Comments:**
> **username_0**: Wow! This is a great answer and perfectly satisfied my curiosity. Thank you :)  

---

