Interfaces
This document is better viewed at https://docs.openzeppelin.com/confidential-contracts/api/interfaces |
These interfaces are available as .sol
files and are useful to interact with third party contracts that implement them.
Core
IConfidentialFungibleToken
import "@openzeppelin/confidential-contracts/interfaces/IConfidentialFungibleToken.sol";
Draft interface for a confidential fungible token standard utilizing the Zama TFHE library.
-
name()
-
symbol()
-
decimals()
-
tokenURI()
-
totalSupply()
-
balanceOf(account)
-
isOperator(holder, spender)
-
setOperator(operator, until)
-
confidentialTransfer(to, encryptedAmount, inputProof)
-
confidentialTransfer(to, amount)
-
confidentialTransferFrom(from, to, encryptedAmount, inputProof)
-
confidentialTransferFrom(from, to, amount)
-
confidentialTransferAndCall(to, encryptedAmount, inputProof, data)
-
confidentialTransferAndCall(to, amount, data)
-
confidentialTransferFromAndCall(from, to, encryptedAmount, inputProof, data)
-
confidentialTransferFromAndCall(from, to, amount, data)
-
OperatorSet(holder, operator, until)
-
ConfidentialTransfer(from, to, amount)
-
EncryptedAmountDisclosed(encryptedAmount, amount)
isOperator(address holder, address spender) → bool
external
Returns true if spender
is currently an operator for holder
.
setOperator(address operator, uint48 until)
external
Sets operator
as an operator for holder
until the timestamp until
.
An operator may transfer any amount of tokens on behalf of a holder while approved. |
confidentialTransfer(address to, einput encryptedAmount, bytes inputProof) → euint64
external
Transfers the encrypted amount encryptedAmount
to to
with the given input proof inputProof
.
Returns the encrypted amount that was actually transferred.
confidentialTransfer(address to, euint64 amount) → euint64 transferred
external
Similar to confidentialTransfer
but without an input proof. The caller
must already be allowed by ACL for the given amount
.
confidentialTransferFrom(address from, address to, einput encryptedAmount, bytes inputProof) → euint64
external
Transfers the encrypted amount encryptedAmount
from from
to to
with the given input proof
inputProof
. msg.sender
must be either from
or an operator for from
.
Returns the encrypted amount that was actually transferred.
confidentialTransferFrom(address from, address to, euint64 amount) → euint64 transferred
external
Similar to confidentialTransferFrom
but without an input proof. The caller
must be already allowed by ACL for the given amount
.
confidentialTransferAndCall(address to, einput encryptedAmount, bytes inputProof, bytes data) → euint64 transferred
external
Similar to confidentialTransfer
but with a callback to to
after the transfer.
The callback is made to the IConfidentialFungibleTokenReceiver.onConfidentialTransferReceived
function on the
to address with the actual transferred amount (may differ from the given encryptedAmount
) and the given
data data
.
confidentialTransferAndCall(address to, euint64 amount, bytes data) → euint64 transferred
external
Similar to confidentialTransfer
but with a callback to to
after the transfer.
confidentialTransferFromAndCall(address from, address to, einput encryptedAmount, bytes inputProof, bytes data) → euint64 transferred
external
Similar to confidentialTransferFrom
but with a callback to to
after
the transfer.
confidentialTransferFromAndCall(address from, address to, euint64 amount, bytes data) → euint64 transferred
external
Similar to confidentialTransferFrom
but with a callback to to
after the transfer.
OperatorSet(address indexed holder, address indexed operator, uint48 until)
event
Emitted when the expiration timestamp for an operator operator
is updated for a given holder
.
The operator may move any amount of tokens on behalf of the holder until the timestamp until
.
ConfidentialTransfer(address indexed from, address indexed to, euint64 indexed amount)
event
Emitted when a confidential transfer is made from from
to to
of encrypted amount amount
.
EncryptedAmountDisclosed(euint64 indexed encryptedAmount, uint64 amount)
event
Emitted when an encrypted amount is disclosed.
Accounts with access to the encrypted amount encryptedAmount
that is also accessible to this contract
should be able to disclose the amount. This functionality is implementation specific.