Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions ERCS/erc-7573.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
Called from the buyer of the token to initiate token transfer. Emits a `TransferIncepted` event.
The parameter `id` is an identifier of the trade. The parameter `from` is the address of the seller (the address of the buyer is `msg.sender`).
The parameter `keyHashedSeller` is a hash of the key that can be used by the seller to (re-)claim the token.
The parameter `keyEncryptedSeller` is an encryption of the key that can be used by the buyer to claim the token.
The parameter `keyEncryptedSeller` is an encryption of the key that can be used by the seller to (re-)claim the token.
It is possible to implement the protocol in a way where the hashing method agrees with the encryption method. See below on "encryption".

##### Initiation of Transfer: `confirmTransfer`
Expand All @@ -78,8 +78,8 @@

Called from the seller of the token to confirm token transfer. Emits a `TransferConfirmed` event.
The parameter `id` is an identifier of the trade. The parameter `to` is the address of the buyer (the address of the seller is `msg.sender`).
The parameter `keyHashedBuyer` is a hash of the key that can be used by the buyer to (re-)claim the token.
The parameter `keyEncryptedBuyer` is an encryption of the key that can be used by the buyer to (re-)claim the token.
The parameter `keyHashedBuyer` is a hash of the key that can be used by the buyer to claim the token.
The parameter `keyEncryptedBuyer` is an encryption of the key that can be used by the buyer to claim the token.
It is possibly to implement the protocol in a way where the hashing method agrees with the encryption method. See below on "encryption".

If the trade specification, that is, the quadruple (`id`, `amount`, `from`, `to`), in a call to `confirmTransfer`
Expand Down Expand Up @@ -373,7 +373,7 @@

Properties:

- The off-chain oracle operator can treat `receipt.status == 1` as “callback succeeded”.

Check failure on line 376 in ERCS/erc-7573.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

smart quotes are not allowed (use straight quotes instead)

error[markdown-no-smart-quotes]: smart quotes are not allowed (use straight quotes instead) --> ERCS/erc-7573.md:376:68 | 376 | - The off-chain oracle operator can treat `receipt.status == 1` as “callback succeeded”. | ^ ^ | = info: the pattern in question: `[\u{201C}\u{201D}]|[\u{2018}\u{2019}]` = help: see https://ethereum.github.io/eipw/markdown-no-smart-quotes/
- If `receipt.status == 0`, the request is not fulfilled and can be retried (e.g., with higher tx gas limit).
- The proxy MUST ensure that request state is not lost on revert (e.g., by relying on revert rollback of state changes).

Expand All @@ -385,16 +385,16 @@

Properties:

- The off-chain oracle operator MUST NOT interpret `receipt.status == 1` as “callback succeeded”; it must also evaluate the emitted outcome signal.

Check failure on line 388 in ERCS/erc-7573.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

smart quotes are not allowed (use straight quotes instead)

error[markdown-no-smart-quotes]: smart quotes are not allowed (use straight quotes instead) --> ERCS/erc-7573.md:388:77 | 388 | - The off-chain oracle operator MUST NOT interpret `receipt.status == 1` as “callback succeeded”; it must also evaluate the emitted... | ^ ^ | = info: the pattern in question: `[\u{201C}\u{201D}]|[\u{2018}\u{2019}]`
- Failure handling can be shifted to the callback implementer/operator: a consumer can run an off-chain watcher that subscribes to `CallbackFailed` and reacts accordingly (e.g. pull/consume flow, re-request, alerting).
- The proxy may either keep the request pending for retries or consume it and shift retry responsibility to the consumer. The chosen policy SHOULD be documented by the implementation.

This mode is useful when the proxy wants to provide an on-chain observable audit trail for callback failures and to decouple “oracle fulfillment” from “consumer processing”.

Check failure on line 392 in ERCS/erc-7573.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

smart quotes are not allowed (use straight quotes instead)

error[markdown-no-smart-quotes]: smart quotes are not allowed (use straight quotes instead) --> ERCS/erc-7573.md:392:126 | 392 | ...l for callback failures and to decouple “oracle fulfillment” from “consumer processing”. | ^ ^ ^ ^ | = info: the pattern in question: `[\u{201C}\u{201D}]|[\u{2018}\u{2019}]`

#### Gas budgeting and forwarding

- The off-chain oracle controls the total cost of `fulfill*` by setting the transaction gas limit.
- The proxy MAY cap or budget the gas forwarded to the callback (e.g., by forwarding “all but a reserve”).

Check failure on line 397 in ERCS/erc-7573.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

smart quotes are not allowed (use straight quotes instead)

error[markdown-no-smart-quotes]: smart quotes are not allowed (use straight quotes instead) --> ERCS/erc-7573.md:397:86 | 397 | - The proxy MAY cap or budget the gas forwarded to the callback (e.g., by forwarding “all but a reserve”). | ^ ^ | = info: the pattern in question: `[\u{201C}\u{201D}]|[\u{2018}\u{2019}]`
- Keeping a small gas reserve in the proxy can help ensure the proxy can finalize `fulfill*` and emit outcome events even if the callback consumes most forwarded gas.

#### Calldata fallback (retrieving fulfillment payload without logging)
Expand All @@ -403,10 +403,10 @@

Implementations SHOULD document the following operational fallback:

- Off-chain systems that observe an event (e.g., `CallbackFailed`) can use the event’s `transactionHash` to fetch the corresponding transaction and decode the input calldata using the `IKeyDecryptionOracle` ABI to recover the fulfillment arguments.

Check failure on line 406 in ERCS/erc-7573.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

smart quotes are not allowed (use straight quotes instead)

error[markdown-no-smart-quotes]: smart quotes are not allowed (use straight quotes instead) --> ERCS/erc-7573.md:406:85 | 406 | - Off-chain systems that observe an event (e.g., `CallbackFailed`) can use the event’s `transactionHash` to fetch the corresponding... | ^ | = info: the pattern in question: `[\u{201C}\u{201D}]|[\u{2018}\u{2019}]`
- Practical caveat: Some RPC providers prune old transaction bodies; indexers SHOULD persist decoded fulfillment payload off-chain if long-term retention is required.

This fallback can be used to support consumer-side “pull/consume” flows, or as a recovery mechanism when callback execution fails.

Check failure on line 409 in ERCS/erc-7573.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

smart quotes are not allowed (use straight quotes instead)

error[markdown-no-smart-quotes]: smart quotes are not allowed (use straight quotes instead) --> ERCS/erc-7573.md:409:52 | 409 | This fallback can be used to support consumer-side “pull/consume” flows, or as a recovery mechanism when callback execution fails. | ^ ^ | = info: the pattern in question: `[\u{201C}\u{201D}]|[\u{2018}\u{2019}]`

### Encryption and Decryption

Expand Down Expand Up @@ -564,7 +564,7 @@

For a nonzero asynchronous inception callback, implementations MUST store the completed inception before the external call, use a bounded gas allowance, validate the selector-valued acknowledgement, and rely on the asynchronous fulfillment retry path if delivery fails.

## Copyright

Check failure on line 567 in ERCS/erc-7573.md

View workflow job for this annotation

GitHub Actions / EIP Walidator

the `Copyright` section must be the last content in the file

error[markdown-copyright]: the `Copyright` section must be the last content in the file --> ERCS/erc-7573.md:567:1 | 567 | ## Copyright | ^^^^^^^^^^^^ nothing may follow this section | = help: end the file with `## Copyright` followed immediately by `Copyright and related rights waived via [CC0](../LICENSE.md).`, with no other content after it = help: see https://ethereum.github.io/eipw/markdown-copyright/

Copyright and related rights waived via [CC0](../LICENSE.md).

Expand Down
Loading