-
Notifications
You must be signed in to change notification settings - Fork 184
Add Zama confidential wrappers #2595
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 12 commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
273f0cc
Add Zama confidential wrappers
melanciani cd6c9f9
Update calldata and move tests to v2
melanciani b44a835
chore: fix date issue
melanciani 1a0138c
Add decryption v1 and v2 specs
melanciani df90c70
Remove owner and url fields
melanciani 1b07e73
Improve naming and labels
melanciani 99aa7a7
Add interpolated intent
melanciani cc383ff
Improve intents
melanciani ed379a0
Update interpolated intent for confidential transfer
melanciani c0094c4
Add revoke tests on sepolia
melanciani b8385f5
add interpolatedIntent of requestDiscloseEncryptedAmount
melanciani c58ddcb
improve labels and intents
melanciani 1c16451
Merge branch 'master' into master
kuzdogan b908b2c
remove spaces in format keys
melanciani File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,39 @@ | ||
| { | ||
| "$schema": "../../specs/erc7730-v2.schema.json", | ||
| "context": { | ||
| "$id": "ACL", | ||
| "contract": { | ||
| "deployments": [ | ||
| { "chainId": 1, "address": "0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6" }, | ||
| { "chainId": 11155111, "address": "0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D" } | ||
| ] | ||
| } | ||
| }, | ||
| "metadata": { "contractName": "ACL" }, | ||
| "display": { | ||
| "definitions": { | ||
| "delegationContract": { "label": "For contract", "format": "addressName", "params": { "types": ["contract"] } } | ||
| }, | ||
| "formats": { | ||
| "delegateForUserDecryption(address delegate, address contractAddress, uint64 expirationDate)": { | ||
| "$id": "delegateForUserDecryption", | ||
| "intent": "Delegate decryption rights", | ||
| "interpolatedIntent": "Delegate decryption to {delegate} for {contractAddress} until {expirationDate}", | ||
| "fields": [ | ||
| { "path": "delegate", "label": "Delegate to", "format": "addressName", "params": { "types": ["eoa", "contract"] } }, | ||
| { "path": "contractAddress", "$ref": "$.display.definitions.delegationContract" }, | ||
| { "path": "expirationDate", "label": "Delegated until", "format": "date", "params": { "encoding": "timestamp" } } | ||
| ] | ||
| }, | ||
| "revokeDelegationForUserDecryption(address delegate, address contractAddress)": { | ||
| "$id": "revokeUserDecryptDelegation", | ||
| "intent": "Revoke decryption delegation", | ||
| "interpolatedIntent": "Revoke decryption delegation from {delegate} for {contractAddress}", | ||
| "fields": [ | ||
| { "path": "delegate", "label": "Revoke from", "format": "addressName", "params": { "types": ["eoa", "contract"] } }, | ||
| { "path": "contractAddress", "$ref": "$.display.definitions.delegationContract" } | ||
| ] | ||
| } | ||
| } | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,201 @@ | ||
| { | ||
| "$schema": "../../specs/erc7730-v2.schema.json", | ||
| "context": { | ||
| "$id": "ConfidentialWrapper", | ||
| "contract": { | ||
| "deployments": [ | ||
| { "chainId": 1, "address": "0xe978F22157048E5DB8E5d07971376e86671672B2" }, | ||
| { "chainId": 1, "address": "0xAe0207C757Aa2B4019Ad96edD0092ddc63EF0c50" }, | ||
| { "chainId": 1, "address": "0xda9396b82634Ea99243cE51258B6A5Ae512D4893" }, | ||
| { "chainId": 1, "address": "0x85dE671c3bec1aDeD752c3Cea943521181C826bc" }, | ||
| { "chainId": 1, "address": "0x80CB147Fd86dC6dEe3Eee7e4Cee33d1397d98071" }, | ||
| { "chainId": 1, "address": "0xa873750ccBafD5ec7Dd13bfD5237d7129832eDD9" }, | ||
| { "chainId": 1, "address": "0x73cc9aF9d6BEFdb3c3fAf8a5E8c05Cb95FdaEEf1" }, | ||
| { "chainId": 1, "address": "0xBA4cFF6ED6F7Cb2A58776dECa4E984b498446762" }, | ||
| { "chainId": 1, "address": "0x66Bf74E96900D1a19c7070D939D124f2F565C458" }, | ||
| { "chainId": 11155111, "address": "0x7c5BF43B851c1dff1a4feE8dB225b87f2C223639" }, | ||
| { "chainId": 11155111, "address": "0x4E7B06D78965594eB5EF5414c357ca21E1554491" }, | ||
| { "chainId": 11155111, "address": "0x46208622DA27d91db4f0393733C8BA082ed83158" }, | ||
| { "chainId": 11155111, "address": "0xaa5612FA27c927a0c7961f5AEFEE5ba3A0F9C891" }, | ||
| { "chainId": 11155111, "address": "0xf2D628d2598aF4eAF94CB76a437Ff86CA78FfbFB" }, | ||
| { "chainId": 11155111, "address": "0xfCE5c7069c5525eF6c8C2b2E35A745bA20a2F7CC" }, | ||
| { "chainId": 11155111, "address": "0xe4FcF848739845BC81Dee1d5352cf3844F0a60C7" }, | ||
| { "chainId": 11155111, "address": "0x167DC962808B32CFFFc7e14B5018c0bE06A3A208" }, | ||
| { "chainId": 11155111, "address": "0x13F7d34A4f0102734F19E3Ff16e068Fe194B28c4" } | ||
| ] | ||
| } | ||
| }, | ||
| "metadata": { "contractName": "ConfidentialWrapper" }, | ||
| "display": { | ||
| "definitions": { | ||
| "encryptedAmount": { | ||
| "label": "Amount", | ||
| "format": "tokenAmount", | ||
| "params": { "tokenPath": "@.to" }, | ||
| "encryption": { "scheme": "fhevm", "plaintextType": "uint64", "fallbackLabel": "[Encrypted Amount]" } | ||
| }, | ||
| "receiver": { "label": "Receiver", "format": "addressName", "params": { "types": ["eoa", "contract"] } }, | ||
| "holder": { "label": "Holder", "format": "addressName", "params": { "types": ["eoa", "contract"] } }, | ||
| "inputProof": { "label": "Encryption proof", "format": "raw" }, | ||
| "decryptionProof": { "label": "Decryption proof", "format": "raw" }, | ||
| "callbackData": { "label": "Callback data", "format": "raw" } | ||
| }, | ||
| "formats": { | ||
| "wrap(address to, uint256 amount)": { | ||
| "$id": "wrap", | ||
| "intent": "Shield", | ||
| "interpolatedIntent": "Shield {amount} underlying units to {to}", | ||
| "fields": [ | ||
| { "path": "amount", "label": "Amount (underlying units)", "format": "raw" }, | ||
|
kuzdogan marked this conversation as resolved.
|
||
| { "path": "to", "$ref": "$.display.definitions.receiver" } | ||
| ] | ||
| }, | ||
| "unwrap(address from, address to, bytes32 amount)": { | ||
| "$id": "unwrap", | ||
| "intent": "Request to unshield", | ||
| "interpolatedIntent": "Request to unshield {amount} from {from} to {to}", | ||
| "fields": [ | ||
| { "path": "from", "$ref": "$.display.definitions.holder" }, | ||
| { "path": "to", "$ref": "$.display.definitions.receiver" }, | ||
| { "path": "amount", "$ref": "$.display.definitions.encryptedAmount" } | ||
| ] | ||
| }, | ||
| "unwrap(address from, address to, bytes32 encryptedAmount, bytes inputProof)": { | ||
| "$id": "unwrapWithProof", | ||
| "intent": "Request to unshield", | ||
| "interpolatedIntent": "Request to unshield {encryptedAmount} from {from} to {to}", | ||
| "fields": [ | ||
| { "path": "from", "$ref": "$.display.definitions.holder" }, | ||
| { "path": "to", "$ref": "$.display.definitions.receiver" }, | ||
| { "path": "encryptedAmount", "$ref": "$.display.definitions.encryptedAmount" }, | ||
| { "path": "inputProof", "$ref": "$.display.definitions.inputProof", "visible": "never" } | ||
|
melanciani marked this conversation as resolved.
|
||
| ] | ||
| }, | ||
| "finalizeUnwrap(bytes32 unwrapRequestId, uint64 unwrapAmountCleartext, bytes decryptionProof)": { | ||
| "$id": "finalizeUnwrap", | ||
| "intent": "Finalize unshield", | ||
| "interpolatedIntent": "Finalize unshield of {unwrapAmountCleartext}", | ||
| "fields": [ | ||
| { "path": "unwrapAmountCleartext", "label": "Amount", "format": "tokenAmount", "params": { "tokenPath": "@.to" } }, | ||
| { "path": "unwrapRequestId", "label": "Request ID", "format": "raw" }, | ||
| { "path": "decryptionProof", "$ref": "$.display.definitions.decryptionProof", "visible": "never" } | ||
|
melanciani marked this conversation as resolved.
|
||
| ] | ||
| }, | ||
| "confidentialTransfer(address to, bytes32 amount)": { | ||
| "$id": "cTransfer", | ||
| "intent": "Confidential transfer", | ||
| "interpolatedIntent": "Confidential transfer of {amount} to {to}", | ||
| "fields": [ | ||
| { "path": "amount", "$ref": "$.display.definitions.encryptedAmount" }, | ||
| { "path": "to", "$ref": "$.display.definitions.receiver" } | ||
| ] | ||
| }, | ||
| "confidentialTransfer(address to, bytes32 encryptedAmount, bytes inputProof)": { | ||
| "$id": "cTransferWithProof", | ||
| "intent": "Confidential transfer", | ||
| "interpolatedIntent": "Confidential transfer of {encryptedAmount} to {to}", | ||
| "fields": [ | ||
| { "path": "encryptedAmount", "$ref": "$.display.definitions.encryptedAmount" }, | ||
| { "path": "to", "$ref": "$.display.definitions.receiver" }, | ||
| { "path": "inputProof", "$ref": "$.display.definitions.inputProof", "visible": "never" } | ||
| ] | ||
| }, | ||
| "confidentialTransferFrom(address from, address to, bytes32 amount)": { | ||
| "$id": "cTransferFrom", | ||
| "intent": "Confidential transfer", | ||
| "interpolatedIntent": "Confidential transfer of {amount} from {from} to {to}", | ||
| "fields": [ | ||
| { "path": "amount", "$ref": "$.display.definitions.encryptedAmount" }, | ||
| { "path": "from", "$ref": "$.display.definitions.holder" }, | ||
| { "path": "to", "$ref": "$.display.definitions.receiver" } | ||
| ] | ||
| }, | ||
| "confidentialTransferFrom(address from, address to, bytes32 encryptedAmount, bytes inputProof)": { | ||
| "$id": "cTransferFromWithProof", | ||
| "intent": "Confidential transfer", | ||
| "interpolatedIntent": "Confidential transfer of {encryptedAmount} from {from} to {to}", | ||
| "fields": [ | ||
| { "path": "encryptedAmount", "$ref": "$.display.definitions.encryptedAmount" }, | ||
| { "path": "from", "$ref": "$.display.definitions.holder" }, | ||
| { "path": "to", "$ref": "$.display.definitions.receiver" }, | ||
| { "path": "inputProof", "$ref": "$.display.definitions.inputProof", "visible": "never" } | ||
| ] | ||
| }, | ||
| "confidentialTransferAndCall(address to, bytes32 amount, bytes data)": { | ||
| "$id": "cTransferAndCall", | ||
| "intent": "Confidential transfer", | ||
| "interpolatedIntent": "Confidential transfer of {amount} to {to}", | ||
| "fields": [ | ||
| { "path": "amount", "$ref": "$.display.definitions.encryptedAmount" }, | ||
| { "path": "to", "$ref": "$.display.definitions.receiver" }, | ||
| { "path": "data", "$ref": "$.display.definitions.callbackData", "visible": "never" } | ||
| ] | ||
| }, | ||
| "confidentialTransferAndCall(address to, bytes32 encryptedAmount, bytes inputProof, bytes data)": { | ||
| "$id": "cTransferAndCallWithProof", | ||
| "intent": "Confidential transfer", | ||
| "interpolatedIntent": "Confidential transfer of {encryptedAmount} to {to}", | ||
| "fields": [ | ||
| { "path": "encryptedAmount", "$ref": "$.display.definitions.encryptedAmount" }, | ||
| { "path": "to", "$ref": "$.display.definitions.receiver" }, | ||
| { "path": "inputProof", "$ref": "$.display.definitions.inputProof", "visible": "never" }, | ||
| { "path": "data", "$ref": "$.display.definitions.callbackData", "visible": "never" } | ||
| ] | ||
| }, | ||
| "confidentialTransferFromAndCall(address from, address to, bytes32 amount, bytes data)": { | ||
| "$id": "cTransferFromAndCall", | ||
| "intent": "Confidential transfer", | ||
| "interpolatedIntent": "Confidential transfer of {amount} from {from} to {to}", | ||
| "fields": [ | ||
| { "path": "amount", "$ref": "$.display.definitions.encryptedAmount" }, | ||
| { "path": "from", "$ref": "$.display.definitions.holder" }, | ||
| { "path": "to", "$ref": "$.display.definitions.receiver" }, | ||
| { "path": "data", "$ref": "$.display.definitions.callbackData", "visible": "never" } | ||
| ] | ||
| }, | ||
| "confidentialTransferFromAndCall(address from, address to, bytes32 encryptedAmount, bytes inputProof, bytes data)": { | ||
| "$id": "cTransferFromAndCallWithProof", | ||
| "intent": "Confidential transfer", | ||
| "interpolatedIntent": "Confidential transfer of {encryptedAmount} from {from} to {to}", | ||
| "fields": [ | ||
| { "path": "encryptedAmount", "$ref": "$.display.definitions.encryptedAmount" }, | ||
| { "path": "from", "$ref": "$.display.definitions.holder" }, | ||
| { "path": "to", "$ref": "$.display.definitions.receiver" }, | ||
| { "path": "inputProof", "$ref": "$.display.definitions.inputProof", "visible": "never" }, | ||
| { "path": "data", "$ref": "$.display.definitions.callbackData", "visible": "never" } | ||
| ] | ||
| }, | ||
| "setOperator(address operator, uint48 until)": { | ||
| "$id": "setOperator", | ||
| "intent": "Set operator authorization", | ||
| "interpolatedIntent": "Set {operator} authorization to expire on {until}", | ||
| "fields": [ | ||
| { "path": "operator", "label": "Operator", "format": "addressName", "params": { "types": ["eoa", "contract"] } }, | ||
| { "path": "until", "label": "Authorized until", "format": "date", "params": { "encoding": "timestamp" } } | ||
| ] | ||
| }, | ||
| "requestDiscloseEncryptedAmount(bytes32 encryptedAmount)": { | ||
| "$id": "requestDiscloseEncryptedAmount", | ||
| "intent": "Request public disclosure", | ||
| "interpolatedIntent": "Request public disclosure of {encryptedAmount}", | ||
| "fields": [{ "path": "encryptedAmount", "$ref": "$.display.definitions.encryptedAmount" }] | ||
| }, | ||
| "discloseEncryptedAmount(bytes32 encryptedAmount, uint64 cleartextAmount, bytes decryptionProof)": { | ||
| "$id": "discloseEncryptedAmount", | ||
| "intent": "Disclose encrypted amount publicly", | ||
| "interpolatedIntent": "Disclose {encryptedAmount} publicly as {cleartextAmount}", | ||
| "fields": [ | ||
| { | ||
| "path": "encryptedAmount", | ||
| "label": "Encrypted amount reference", | ||
| "format": "tokenAmount", | ||
| "params": { "tokenPath": "@.to" }, | ||
| "encryption": { "scheme": "fhevm", "plaintextType": "uint64", "fallbackLabel": "[Encrypted Amount]" } | ||
| }, | ||
| { "path": "cleartextAmount", "label": "Amount", "format": "tokenAmount", "params": { "tokenPath": "@.to" } }, | ||
| { "path": "decryptionProof", "$ref": "$.display.definitions.decryptionProof", "visible": "never" } | ||
| ] | ||
| } | ||
| } | ||
| } | ||
| } | ||
30 changes: 30 additions & 0 deletions
30
registry/zama/eip712-DelegatedUserDecryptRequestVerificationV1.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| { | ||
| "$schema": "../../specs/erc7730-v2.schema.json", | ||
| "context": { | ||
| "eip712": { | ||
| "deployments": [ | ||
| { "chainId": 1, "address": "0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24" }, | ||
| { "chainId": 11155111, "address": "0x5D8BD78e2ea6bbE41f26dFe9fdaEAa349e077478" } | ||
| ], | ||
| "domain": { "name": "Decryption", "version": "1" } | ||
| } | ||
| }, | ||
| "metadata": {}, | ||
| "display": { | ||
| "formats": { | ||
| "DelegatedUserDecryptRequestVerification(bytes publicKey,address[] contractAddresses,address delegatorAddress,uint256 startTimestamp,uint256 durationDays,bytes extraData)": { | ||
| "$id": "delegatedUserDecryptRequestV1", | ||
| "intent": "Authorize delegated decryption on behalf of another account", | ||
| "interpolatedIntent": "Authorize decryption on behalf of {delegatorAddress} for {contractAddresses.[]} for {durationDays} days", | ||
| "fields": [ | ||
| { "path": "delegatorAddress", "label": "Decrypt on behalf of", "format": "addressName", "params": { "types": ["eoa", "contract"] } }, | ||
| { "path": "contractAddresses.[]", "label": "Authorized contracts", "format": "addressName", "params": { "types": ["contract"] } }, | ||
| { "path": "startTimestamp", "label": "Valid from", "format": "date", "params": { "encoding": "timestamp" } }, | ||
| { "path": "durationDays", "label": "Valid for (days)", "format": "raw" }, | ||
| { "path": "publicKey", "label": "Public key", "format": "raw", "visible": "never" }, | ||
| { "path": "extraData", "label": "Extra data", "format": "raw", "visible": "never" } | ||
| ] | ||
| } | ||
| } | ||
| } | ||
| } |
29 changes: 29 additions & 0 deletions
29
registry/zama/eip712-UserDecryptRequestVerificationV1.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| { | ||
| "$schema": "../../specs/erc7730-v2.schema.json", | ||
| "context": { | ||
| "eip712": { | ||
| "deployments": [ | ||
| { "chainId": 1, "address": "0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24" }, | ||
| { "chainId": 11155111, "address": "0x5D8BD78e2ea6bbE41f26dFe9fdaEAa349e077478" } | ||
| ], | ||
| "domain": { "name": "Decryption", "version": "1" } | ||
| } | ||
| }, | ||
| "metadata": {}, | ||
| "display": { | ||
| "formats": { | ||
| "UserDecryptRequestVerification(bytes publicKey,address[] contractAddresses,uint256 startTimestamp,uint256 durationDays,bytes extraData)": { | ||
| "$id": "userDecryptRequestV1", | ||
| "intent": "Authorize decryption of your confidential data", | ||
| "interpolatedIntent": "Authorize decryption for {contractAddresses.[]} for {durationDays} days", | ||
| "fields": [ | ||
| { "path": "contractAddresses.[]", "label": "Authorized contracts", "format": "addressName", "params": { "types": ["contract"] } }, | ||
| { "path": "startTimestamp", "label": "Valid from", "format": "date", "params": { "encoding": "timestamp" } }, | ||
| { "path": "durationDays", "label": "Valid for (days)", "format": "raw" }, | ||
| { "path": "publicKey", "label": "Public key", "format": "raw", "visible": "never" }, | ||
| { "path": "extraData", "label": "Extra data", "format": "raw", "visible": "never" } | ||
| ] | ||
| } | ||
| } | ||
| } | ||
| } |
30 changes: 30 additions & 0 deletions
30
registry/zama/eip712-UserDecryptRequestVerificationV2.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| { | ||
| "$schema": "../../specs/erc7730-v2.schema.json", | ||
| "context": { | ||
| "eip712": { | ||
| "deployments": [ | ||
| { "chainId": 1, "address": "0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24" }, | ||
| { "chainId": 11155111, "address": "0x5D8BD78e2ea6bbE41f26dFe9fdaEAa349e077478" } | ||
| ], | ||
| "domain": { "name": "Decryption", "version": "1" } | ||
| } | ||
| }, | ||
| "metadata": {}, | ||
| "display": { | ||
| "formats": { | ||
| "UserDecryptRequestVerification(address userAddress,bytes publicKey,address[] allowedContracts,uint256 startTimestamp,uint256 durationSeconds,bytes extraData)": { | ||
| "$id": "userDecryptRequestV2", | ||
| "intent": "Authorize decryption of your confidential data", | ||
| "interpolatedIntent": "Authorize {userAddress} to decrypt for {allowedContracts.[]} for {durationSeconds}", | ||
| "fields": [ | ||
| { "path": "userAddress", "label": "Requesting account", "format": "addressName", "params": { "types": ["eoa", "contract"] } }, | ||
| { "path": "allowedContracts.[]", "label": "Authorized contracts", "format": "addressName", "params": { "types": ["contract"] } }, | ||
| { "path": "startTimestamp", "label": "Valid from", "format": "date", "params": { "encoding": "timestamp" } }, | ||
| { "path": "durationSeconds", "label": "Valid for", "format": "duration" }, | ||
| { "path": "publicKey", "label": "Public key", "format": "raw", "visible": "never" }, | ||
| { "path": "extraData", "label": "Extra data", "format": "raw", "visible": "never" } | ||
| ] | ||
| } | ||
| } | ||
| } | ||
| } |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.