You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 92dadb6
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: docs/operate/stacking-stx/operate-a-pool.md
+20-10Lines changed: 20 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -56,19 +56,29 @@ The reference contract's staker claim covers **one member per call**. The contra
56
56
57
57
#### BTC or sBTC: the member chooses
58
58
59
-
When a member stakes, they can attach calldata containing a Bitcoin payout address and a **maximum L1 fee in sats**. What they receive on claim follows from it:
59
+
When a member stakes, they can attach calldata carrying a Bitcoin payout address and a **maximum L1 fee in sats**. Your manager stores both against that member and reads them back at claim time:
|No BTC address|**sBTC**, to the address they staked from (the default)|
64
+
|A BTC address, with rewards above the maximum L1 fee they set |**Native BTC**, withdrawn from sBTC to L1|
65
+
| A BTC address, with rewards below the maximum L1 fee they set |**Nothing.** The claim reverts |
66
66
67
-
The L1 fee comes out of that member's own yield, before payout. Your fee is taken earlier, at the sBTC level, so choosing native BTC does not avoid it.
67
+
{% hint style="warning" %}
68
+
**A member whose rewards fall below their own stated maximum L1 fee cannot be paid at all.** The reference manager checks whether their share covers the fee budget they set. If it does not, the whole claim reverts with `ERR_NO_CLAIMABLE_REWARDS` (u1001). There is no fallback to sBTC.
69
+
70
+
Their rewards stay in your contract until they accrue past that budget, or until the member re-stakes with a lower maximum. An auto-claim routine that does not skip these members will retry the same failing transaction every cycle.
71
+
{% endhint %}
72
+
73
+
The maximum is a budget, not a prediction. The reference manager never compares it against the actual L1 fee. It subtracts the full budget from the member's share, hands that to the sBTC withdrawal system, and reconciles the unused remainder afterwards.
74
+
75
+
Your fee comes off first, from the gross. The member's L1 fee budget then comes out of what remains, so choosing native BTC does not avoid your fee.
76
+
77
+
You can make the Bitcoin address mandatory in your own interface, and you can recommend it. A member who stakes to your contract through a different interface may not have supplied one.
68
78
69
-
You can make the Bitcoin address mandatory in your own interface, and you can recommend it. A member who stakes to your contract through a different interface may not have supplied one, and your process is identical either way: you call the same claim, and they receive whichever asset their calldata implies.
79
+
One behaviour to warn members about: supplying no calldata on a later `stake` or `stake-update`**deletes** any address they previously set. The reference manager clears the stored entry rather than keeping the old value, so a member who re-stakes without resupplying their address reverts to sBTC payouts with no error.
70
80
71
-
Small positions do better in sBTC, which costs less to move and avoids creating tiny UTXOs.
81
+
Small positions do better in sBTC. It costs less to move, it avoids creating tiny UTXOs, and it avoids the failed-claim case above.
72
82
73
83
### Claiming for members, or leaving it to them
74
84
@@ -81,7 +91,7 @@ Both are legitimate.
81
91
State which one you do. Members who assume you are claiming for them will otherwise see nothing arrive.
82
92
83
93
{% hint style="warning" %}
84
-
If you claim for members, publish the practical minimum. A member with a small position who elected a BTC payout receives sBTC instead once the L1 fee exceeds their maximum. That is the correct outcome, and it surprises people who have not been told.
94
+
If you claim for members, publish the practical minimum, and tell members who elect a BTC payout to set a maximum L1 fee their position can actually cover. A member who sets one too high gets a reverting claim rather than a smaller payout.
0 commit comments