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
**Input patterns:** zero address, self-transfer, zero amount, max amount, amount exceeding balance, valid TE ciphertext, malformed ciphertext length, empty decrypted value, malformed plaintext arguments, stale encrypted balances, missing public key, viewer key changed between submission and callback, historic auth revoked between submission and callback, expired/not-yet-valid authorization, reused nonce.
125
125
126
-
**State patterns:** no ETH deposited for callback fees, exact fee deposited, fee changed before next operation, multiple concurrent CTXs for same account, multiple concurrent CTXs for both accounts involved in transfer, account changed after CTX submission, callback succeeds, callback reverts, callback sender attempts replay, underlying token transfer succeeds, underlying token transfer fails.
126
+
**State patterns:** no gas token deposited for callback fees, exact fee deposited, fee changed before next operation, multiple concurrent CTXs for same account, multiple concurrent CTXs for both accounts involved in transfer, account changed after CTX submission, callback succeeds, callback reverts, callback sender attempts replay, underlying token transfer succeeds, underlying token transfer fails.
127
127
128
128
**Inheritance patterns:** direct call, call through inherited ERC20, call through ERC20Permit allowance path, call through EIP3009 signed path, call through wrapper override.
Copy file name to clipboardExpand all lines: README.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -52,7 +52,7 @@ The main contract implementing the confidential token functionality. It extends
52
52
-`encryptedTransfer(to, value)`: Transfer tokens using an encrypted value (bytes)
53
53
-`encryptedTransferFrom(from, to, value)`: Transfer tokens on behalf of another using an encrypted value (bytes)
54
54
-`encryptedBalanceOf(holder)`: Get the encrypted balance representation (must be decrypted off-chain)
55
-
-`ethBalanceOf(holder)`: Get the gas token balance for callback funding
55
+
-`gasTokenBalanceOf(holder)`: Get the gas token balance for callback funding
56
56
57
57
**Historic Transfer Decryption:**
58
58
@@ -62,7 +62,7 @@ Additionally, if the recipient has a registered public key at the time of transf
62
62
63
63
For third-party viewers (auditors, accounting tools, delegated observers), holders can grant selective decryption access to their own transfers:
64
64
65
-
-`requestDecryptHistoricTransfer(encryptedTransferData)`: Submit a TE-encrypted transfer payload for decryption. Requires the caller to be a registered user and have sufficient ETH balance for the callback fee. On successful callback, emits a `ReEncryptedTransfer` event with the value ECIES-encrypted for the requester's public key. The fee is charged even if the requester turns out not to be authorized — authorization is only checked inside the callback.
65
+
-`requestDecryptHistoricTransfer(encryptedTransferData)`: Submit a TE-encrypted transfer payload for decryption. Requires the caller to be a registered user and have sufficient gas token balance for the callback fee. On successful callback, emits a `ReEncryptedTransfer` event with the value ECIES-encrypted for the requester's public key. The fee is charged even if the requester turns out not to be authorized — authorization is only checked inside the callback.
66
66
-`requestDecryptHistoricTransferFor(encryptedTransferData, historicViewer)`: Submit a TE-encrypted transfer payload for decryption on behalf of another registered viewer. Callback fee is charged from the caller (`msg.sender`), while successful callback emits `ReEncryptedTransfer` encrypted for `historicViewer`.
67
67
-`authorizeHistoricViewTimeRange(viewer, fromTimestamp, toTimestamp)`: Grant a viewer decryption access to all transfers whose timestamp falls within `[fromTimestamp, toTimestamp)` (inclusive of `fromTimestamp`, exclusive of `toTimestamp`). To revoke this time-range access, call `removeHistoricViewTimeRange(viewer)`; to revoke all historic-view permissions for the viewer, call `removeHistoricViewAuth(viewer)`. Emits `HistoricViewTimeRangeAuthorized`.
68
68
-`authorizeHistoricViewTransferId(viewer, transferId)`: Grant a viewer access to one specific transfer by its on-chain ID. The transfer ID must already exist. Emits `HistoricViewTransferIdAuthorized`.
0 commit comments