Skip to content

Commit b19ebd9

Browse files
marc0oloBjoern Assmann
andauthored
docs: clarify how to change the SNS token transfer fee (#306)
## Summary A forum discussion surfaced a common point of confusion: changing `transaction_fee_e8s` via a `ManageNervousSystemParameters` proposal only updates Governance's stored parameter and does **not** change the actual SNS ledger transfer fee. The native path is a `ManageLedgerParameters` proposal with `transfer_fee` set, which updates the ledger and syncs Governance's `transaction_fee_e8s` automatically. Confirmed by the SNS team (Björn). This PR makes that distinction explicit across all three places the parameter appears: - **`docs/guides/governance/managing.md`** — adds a `:::caution` under `ManageNervousSystemParameters` (right after the `NervousSystemParameters` Candid type) warning against using `transaction_fee_e8s` to change the fee, and pointing to `ManageLedgerParameters`. - **`docs/guides/governance/managing.md`** — adds a sentence to the `ManageLedgerParameters` section noting that `transfer_fee` is the field to use and that it syncs Governance automatically, so no separate proposal is needed. - **`docs/references/sns-settings.md`** — rewords the `transaction_fee_e8s` reference row, which previously described it as the "per-transfer fee on the SNS ledger" (the misleading framing), to clarify it is Governance's stored copy and that the fee is changed via `ManageLedgerParameters`. `npm run build` passes. --------- Co-authored-by: Bjoern Assmann <bjoern.assmann@dfinity.org>
1 parent 8f28fb3 commit b19ebd9

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

‎docs/guides/governance/managing.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,12 @@ type NervousSystemParameters = record {
121121
};
122122
```
123123

124+
:::caution[Changing the SNS token transfer fee]
125+
Do not use `ManageNervousSystemParameters.transaction_fee_e8s` to change the SNS token transfer fee. This field updates only Governance's stored parameter, not the SNS ledger canister. Worse, because Governance uses this stored value as the fee for its own neuron-operation transfers (disbursing, splitting, staking maturity, and so on), setting it to a value that differs from the ledger's actual fee will cause those transfers to be rejected by the ledger (`BadFee`), breaking neuron operations.
126+
127+
To change the actual ledger transfer fee, submit a [`ManageLedgerParameters`](#manageledgerparameters) proposal with `transfer_fee` set. On successful execution, the ledger fee is updated and Governance's `transaction_fee_e8s` is synced to the same value automatically.
128+
:::
129+
124130
For a description of each parameter and its effect, see the [SNS settings reference](../../references/sns-settings.md).
125131

126132
### ManageSnsMetadata
@@ -155,6 +161,8 @@ quill send message.json
155161

156162
Updates ledger parameters: transfer fee, token name, token symbol, or token logo. Fields set to `null` remain unchanged.
157163

164+
Use `transfer_fee` here to change the SNS token transfer fee; this is the only proposal that updates the actual fee charged by the ledger. On successful execution, it also syncs Governance's `NervousSystemParameters.transaction_fee_e8s` to the same value, so a separate `ManageNervousSystemParameters` proposal is not needed.
165+
158166
```bash
159167
quill sns \
160168
make-proposal $PROPOSAL_NEURON_ID \

‎docs/references/sns-settings.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ For background, see [SNS framework](../concepts/sns-framework.md).
4343

4444
| Parameter | Type | Description |
4545
|---|---|---|
46-
| `transaction_fee_e8s` | `nat64` | Per-transfer fee on the SNS ledger, in e8s. Does not apply to minting or burning. |
46+
| `transaction_fee_e8s` | `nat64` | Governance's stored copy of the per-transfer ledger fee, in e8s. Does not apply to minting or burning. Do not set this field via `ManageNervousSystemParameters` to change the fee: it updates only Governance's copy, not the ledger. Change the fee with a `ManageLedgerParameters` proposal instead, which updates the ledger and syncs this field automatically (see [Managing an SNS](../guides/governance/managing.md#manageledgerparameters)). |
4747

4848
## Voting reward settings
4949

0 commit comments

Comments
 (0)