Skip to content

Commit aec7fa8

Browse files
address review comments
Signed-off-by: Neeharika-Sompalli <neeharika.sompalli@swirldslabs.com>
1 parent 12116a9 commit aec7fa8

1 file changed

Lines changed: 24 additions & 18 deletions

File tree

HIP/hip-1261.md

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -374,13 +374,14 @@ value. If not specified, the default value for an `includedCount` is 0.
374374

375375
#### Free and node/network-exempt operations
376376

377-
The `free` field applies to both transactions and queries. If `free` is `true`, the operation has no node, network, or
378-
service fee; `baseFee` and `extras` are ignored.
377+
The `free` field applies to both transactions and queries, but only controls the service fee component. If `free` is
378+
`true`, the service `baseFee` and `extras` are ignored. The node and network fee components still apply unless
379+
`nodeNetworkFeeExempt` is also `true`.
379380

380381
Some operations are paid through another mechanism or are privileged system operations. A service fee definition can
381382
set `nodeNetworkFeeExempt` to `true` for these operations. In this case the node and network components are not charged,
382-
but the configured service component still applies. If both `free` and `nodeNetworkFeeExempt` are `true`, `free` takes
383-
precedence and the entire operation is free.
383+
but the configured service component still applies. An operation is entirely free only when both `free` and
384+
`nodeNetworkFeeExempt` are `true`.
384385

385386

386387
### Unreadable Transactions
@@ -397,12 +398,13 @@ network owners to determine the appropriate price.
397398

398399
### Queries
399400

400-
The configuration for a query includes the `free` boolean field to indicate whether the query is free. If true, then no
401-
fees are paid at all. If false, then the *node*, *network*, and *service* fees are defined as with transactions to
402-
compute the cost of the query. A compliant implementation will create a `CryptoTransfer` transaction to submit to the
403-
network to pay for the required fees. The `node` and `network` components are not listed in the transfer list, but they
404-
are included in the `transactionFee` since they will be paid by the payer. The `service` fee will be included in a
405-
transfer list to pay the node for whatever work was required for this query.
401+
The configuration for a query includes the `free` boolean field to indicate whether its service fee is waived. If true,
402+
the service `baseFee` and `extras` are ignored, but node and network fees still apply unless `nodeNetworkFeeExempt` is
403+
also true. Otherwise, the *node*, *network*, and *service* fees are defined as with transactions to compute the cost of
404+
the query. A compliant implementation will create a `CryptoTransfer` transaction to submit to the network to pay for
405+
the required fees. The `node` and `network` components are not listed in the transfer list, but they are included in the
406+
`transactionFee` since they will be paid by the payer. The `service` fee will be included in a transfer list to pay the
407+
node for whatever work was required for this query.
406408

407409
```json
408410
{
@@ -456,11 +458,12 @@ The validation process checks the following, in any order:
456458
within a single list of extras.
457459
8. **Service Definitions**: Each service in the `services` list must have a non-empty `schedule` list (at least one
458460
transaction or query defined).
459-
9. **Free Queries and Transactions**: If a transaction or query sets `free` to true, its `baseFee` and `extras` are
460-
ignored during fee calculation, but they must still comply with all other validation rules if present (e.g., valid
461-
types, non-negative values, valid references).
462-
10. **Node and Network Fee Exemption**: If `nodeNetworkFeeExempt` is true, only the service fee is charged. If `free` is
463-
also true, `free` takes precedence.
461+
9. **Free Queries and Transactions**: If a transaction or query sets `free` to true, its service `baseFee` and `extras`
462+
are ignored, but node and network fees still apply. Any ignored fields must still comply with all other validation
463+
rules if present (e.g., valid types, non-negative values, valid references).
464+
10. **Node and Network Fee Exemption**: If `nodeNetworkFeeExempt` is true, only the service fee is charged. The entire
465+
operation is free only when both `free` and `nodeNetworkFeeExempt` are true.
466+
464467
### Schema
465468

466469
The schema is defined in Protobuf. The wire format is JSON.
@@ -646,12 +649,15 @@ message ServiceFeeDefinition {
646649
*/
647650
repeated ExtraFeeReference extras = 3;
648651
/**
649-
* If true, then `base_fee` and `extras` are ignored, and the transaction or query
650-
* will be free.
652+
* If true, then the service `base_fee` and `extras` are ignored. Node and network
653+
* fees still apply unless `node_network_fee_exempt` is also true.
651654
*/
652655
bool free = 4;
653656
654-
/** If true, omit node and network components but continue to charge the service component. */
657+
/**
658+
* If true, omit node and network components but continue to charge the service component.
659+
* If `free` is also true, the entire operation is free.
660+
*/
655661
bool node_network_fee_exempt = 6;
656662
}
657663

0 commit comments

Comments
 (0)