Encryptor Allowlist
Introduction
The Encryptor Allowlist is a simple access control mechanism that only allows specific data producers, or encryptors, to access a given DKG ritual, cohort of TACo nodes, and associated public key. In practice, it means that developers can limit who can use TACo to produce valid encryptions for the public key.
The entity that can authorize encryptors is called the authority
. Each ritual has an authority
which corresponds to the address of the wallet that initiated the ritual.
Note that encryptor authorization is enforced at decryption time, which means that ciphertexts produced by unauthorized encryptors will not be decryptable and TACo client will return an error.
The restriction is not enforced at encryption time for several reasons:
Due to the inherent nature of public key cryptography, anyone can use a public key to encrypt data and generate a ciphertext.
There's valid scenarios where encryption may happen before authorization.
For these reasons, no error will occur at encryption time when using a wallet that is not authorized (i.e. it's not in the Encryptor Allowlist), and authorization enforced is deferred until decryption.
Managing the Allowlist on Testnet
On testnet it is possible to use one of the premade rituals without any extra steps since there is no allowlist implemented on them. You can simply configure taco
to use one of those rituals and use any encryptor (wallet address) to perform the encryption.
If you require to test allowlist management flows, don't hesitate to reach out to us.
Managing the Allowlist on Mainnet
If you wish to use TACo in production for your application, you will need to establish your own ritual. Please, contact us for further assistance.
The Encryptor Allowlist is managed through the AccessController contract associated with the ritual.
Only the ritual authority wallet can manage the Encryptor Allowlist of the ritual. This authority
was set during the Ritual initialization.
The contract address of the ritual's AccessController can be found calling the
getAccessController()
function on the Coordinator contract, specifying theritual ID
.The ritual's
authority
wallet can call theauthorize()
function on theAccessController
contract, specifying theritual ID
and a list of addresses to be included in the allowlist.From now on, these encryptor wallets can be used for encrypting in this ritual.
Likewise, the deauthorize()
function of the AccessController can be called by the authority to remove encryptor addresses from the allowlist.
Last updated