@coti-io/coti-contracts 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/npm-publish.yml +19 -15
- package/README.md +3 -1
- package/contracts/disperse/coinByRatio/FixedRatioCoinDisperser.sol +452 -0
- package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1.sol +490 -0
- package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.sol +432 -0
- package/contracts/disperse/disperseToken/MintDisperser.sol +120 -0
- package/contracts/disperse/disperseToken/TokenDisperser.sol +139 -0
- package/contracts/messaging/PrivateMessaging.sol +456 -0
- package/contracts/mocks/messaging/PrivateMessagingHarness.sol +54 -0
- package/contracts/mocks/oracle/CotiPriceConsumerMock.sol +31 -0
- package/contracts/mocks/token/ERC20DecimalsMock.sol +21 -0
- package/contracts/mocks/token/ERC20Mock.sol +19 -0
- package/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.sol +18 -0
- package/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.sol +18 -0
- package/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.sol +44 -0
- package/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.sol +23 -0
- package/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.sol +29 -0
- package/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.sol +9 -4
- package/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol +39 -0
- package/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.sol +29 -0
- package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.sol +18 -0
- package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.sol +12 -0
- package/contracts/mocks/utils/mpc/Arithmetic128TestsContract.sol +123 -0
- package/contracts/mocks/utils/mpc/Arithmetic256TestsContract.sol +122 -0
- package/contracts/mocks/utils/mpc/Bitwise128TestsContract.sol +65 -0
- package/contracts/mocks/utils/mpc/Bitwise256TestsContract.sol +65 -0
- package/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.sol +64 -0
- package/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.sol +64 -0
- package/contracts/mocks/utils/mpc/Comparison128TestsContract.sol +98 -0
- package/contracts/mocks/utils/mpc/Comparison256TestsContract.sol +98 -0
- package/contracts/mocks/utils/mpc/MinMax128TestsContract.sol +44 -0
- package/contracts/mocks/utils/mpc/MinMax256TestsContract.sol +44 -0
- package/contracts/mocks/utils/mpc/MinimalImplementation.sol +55 -0
- package/contracts/mocks/utils/mpc/MinimalProxy.sol +27 -0
- package/contracts/mocks/utils/mpc/MpcOperations128TestContract.sol +267 -0
- package/contracts/mocks/utils/mpc/MpcOperationsTestContract.sol +334 -0
- package/contracts/mocks/utils/mpc/Mux128TestsContract.sol +24 -0
- package/contracts/mocks/utils/mpc/Mux256TestsContract.sol +24 -0
- package/contracts/mocks/utils/mpc/OnBoard128TestsContract.sol +93 -0
- package/contracts/mocks/utils/mpc/OnBoard256TestsContract.sol +116 -0
- package/contracts/mocks/utils/mpc/PrivacyImplementationV1.sol +157 -0
- package/contracts/mocks/utils/mpc/PrivacyImplementationV2.sol +133 -0
- package/contracts/mocks/utils/mpc/PrivacyProxy.sol +137 -0
- package/contracts/mocks/utils/mpc/Random128TestsContract.sol +32 -0
- package/contracts/mocks/utils/mpc/Random256TestsContract.sol +32 -0
- package/contracts/mocks/utils/mpc/Shift128TestsContract.sol +36 -0
- package/contracts/mocks/utils/mpc/Shift256TestsContract.sol +36 -0
- package/contracts/mocks/utils/mpc/Transfer128TestsContract.sol +29 -0
- package/contracts/mocks/utils/mpc/Transfer256TestsContract.sol +29 -0
- package/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.sol +32 -0
- package/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.sol +32 -0
- package/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.sol +59 -0
- package/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.sol +63 -0
- package/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.sol +99 -0
- package/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.sol +7 -6
- package/contracts/node/CotiNodeRewards.sol +199 -0
- package/contracts/node/SoulboundNodeNFT.sol +519 -0
- package/contracts/oracle/CotiPriceConsumer.sol +103 -0
- package/contracts/oracle/ICotiPriceConsumer.sol +15 -0
- package/contracts/oracle/IStdReference.sol +26 -0
- package/contracts/privacyBridge/PrivacyBridge.sol +600 -0
- package/contracts/privacyBridge/PrivacyBridgeCotiNative.sol +316 -0
- package/contracts/privacyBridge/PrivacyBridgeERC20.sol +333 -0
- package/contracts/privacyBridge/PrivacyBridgeUSDCe.sol +22 -0
- package/contracts/privacyBridge/PrivacyBridgeUSDT.sol +23 -0
- package/contracts/privacyBridge/PrivacyBridgeWADA.sol +23 -0
- package/contracts/privacyBridge/PrivacyBridgeWBTC.sol +23 -0
- package/contracts/privacyBridge/PrivacyBridgeWETH.sol +23 -0
- package/contracts/privacyBridge/PrivacyBridgegCoti.sol +23 -0
- package/contracts/token/PrivateERC20/IPrivateERC20.sol +273 -40
- package/contracts/token/PrivateERC20/ITokenReceiver.sol +17 -0
- package/contracts/token/PrivateERC20/ITokenReceiverEncrypted.sol +20 -0
- package/contracts/token/PrivateERC20/PrivateERC20.sol +861 -152
- package/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.sol +17 -0
- package/contracts/token/PrivateERC20/tokens/PrivateCOTI.sol +13 -0
- package/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.sol +17 -0
- package/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.sol +17 -0
- package/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.sol +17 -0
- package/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.sol +17 -0
- package/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.sol +13 -0
- package/contracts/utils/mpc/MpcCore.sol +10780 -4962
- package/contracts/utils/mpc/MpcInterface.sol +7 -2
- package/hardhat/gasPriceBump.ts +60 -0
- package/hardhat.config.ts +63 -12
- package/package.json +22 -4
- package/scripts/add-bridge-operators.cjs +87 -0
- package/scripts/deploy-coti-price-consumer-mainnet.cjs +49 -0
- package/scripts/deployCotiNodeRewards.ts +51 -0
- package/scripts/deploySoulboundNodeNFT.ts +57 -0
- package/scripts/redeploy-private-and-bridges.cjs +201 -0
- package/scripts/set-bridge-limits-mainnet.cjs +177 -0
- package/scripts/verify-mainnet-private-bridges.cjs +289 -0
- package/sonar-project.properties +11 -0
- package/test/messaging/PrivateMessaging.test.ts +158 -0
- package/test/privacyBridge/UnifiedPrivacyBridges.test.cjs +1663 -0
- package/test/token/PrivateERC20/PrivacyBridge.fees.test.ts +250 -0
- package/test/token/PrivateERC20/PrivateERC20.test.ts +1109 -268
- package/test/utils/mpc/Bitwise128.test.ts +92 -0
- package/test/utils/mpc/Bitwise256.test.ts +101 -0
- package/test/utils/mpc/BuildInputText128.test.ts +398 -0
- package/test/utils/mpc/CheckedArithmetic128.test.ts +45 -0
- package/test/utils/mpc/CheckedArithmetic256.test.ts +45 -0
- package/test/utils/mpc/Comparison128.test.ts +48 -0
- package/test/utils/mpc/Comparison256.test.ts +48 -0
- package/test/utils/mpc/InvalidCiphertext.test.ts +179 -0
- package/test/utils/mpc/InvalidCiphertext128.test.ts +179 -0
- package/test/utils/mpc/InvalidCiphertext256.test.ts +201 -0
- package/test/utils/mpc/InvalidTransfer128.test.ts +166 -0
- package/test/utils/mpc/InvalidTransfer256.test.ts +158 -0
- package/test/utils/mpc/MinMax128.test.ts +44 -0
- package/test/utils/mpc/MinMax256.test.ts +44 -0
- package/test/utils/mpc/MinimalProxyDemo.test.ts +280 -0
- package/test/utils/mpc/MpcOperations.test.ts +589 -0
- package/test/utils/mpc/MpcOperations128.test.ts +632 -0
- package/test/utils/mpc/Mux128.test.ts +41 -0
- package/test/utils/mpc/Mux256.test.ts +41 -0
- package/test/utils/mpc/NegativeCases.test.ts +478 -0
- package/test/utils/mpc/NegativeCases128.test.ts +237 -0
- package/test/utils/mpc/NegativeCases256.test.ts +236 -0
- package/test/utils/mpc/OnBoard128.test.ts +90 -0
- package/test/utils/mpc/OnBoard256.test.ts +114 -0
- package/test/utils/mpc/Precompile128.test.ts +51 -0
- package/test/utils/mpc/Precompile256.test.ts +115 -0
- package/test/utils/mpc/ProxyValidation.test.ts +199 -0
- package/test/utils/mpc/Random128.test.ts +47 -0
- package/test/utils/mpc/Random256.test.ts +47 -0
- package/test/utils/mpc/Shift128.test.ts +41 -0
- package/test/utils/mpc/Shift256.test.ts +41 -0
- package/test/utils/mpc/Transfer128.test.ts +46 -0
- package/test/utils/mpc/Transfer256.test.ts +46 -0
- package/test/utils/mpc/TransferWithAllowance128.test.ts +48 -0
- package/test/utils/mpc/TransferWithAllowance256.test.ts +48 -0
- package/test/utils/mpc/UpgradeablePrivacyProxy.test.ts +307 -0
- package/test/utils/mpc/ValidateCiphertext.test.ts +221 -0
- package/test/utils/mpc/ValidateCiphertext256.test.ts +161 -0
- package/test/utils/mpc/ValidateCiphertext256Decryption.test.ts +383 -0
- package/test/utils/mpc/WalletEncryptionFailures.test.ts +494 -0
- package/test/utils/privateErc20Helpers.ts +97 -0
- package/typechain-types/@openzeppelin/contracts/access/AccessControl.ts +324 -0
- package/typechain-types/@openzeppelin/contracts/access/AccessControlEnumerable.ts +361 -0
- package/typechain-types/@openzeppelin/contracts/access/IAccessControl.ts +292 -0
- package/typechain-types/@openzeppelin/contracts/access/IAccessControlEnumerable.ts +329 -0
- package/typechain-types/@openzeppelin/contracts/access/Ownable.ts +153 -0
- package/typechain-types/@openzeppelin/contracts/access/index.ts +8 -0
- package/typechain-types/@openzeppelin/contracts/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts/security/Pausable.ts +150 -0
- package/typechain-types/@openzeppelin/contracts/security/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts +330 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts +262 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +286 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.ts +143 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +5 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts +7 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC721/ERC721.ts +420 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.ts +420 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC721/index.ts +3 -0
- package/typechain-types/@openzeppelin/contracts/token/index.ts +2 -0
- package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperser.ts +679 -0
- package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1.ts +735 -0
- package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.ts +734 -0
- package/typechain-types/contracts/disperse/coinByRatio/index.ts +6 -0
- package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20.ts +97 -0
- package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable.ts +95 -0
- package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser.ts +228 -0
- package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +6 -0
- package/typechain-types/contracts/disperse/disperseToken/TokenDisperser.ts +191 -0
- package/typechain-types/contracts/disperse/disperseToken/index.ts +6 -0
- package/typechain-types/contracts/disperse/index.ts +7 -0
- package/typechain-types/contracts/index.ts +10 -0
- package/typechain-types/contracts/messaging/PrivateMessaging.ts +871 -0
- package/typechain-types/contracts/messaging/index.ts +4 -0
- package/typechain-types/contracts/mocks/index.ts +4 -0
- package/typechain-types/contracts/mocks/messaging/PrivateMessagingHarness.ts +951 -0
- package/typechain-types/contracts/mocks/messaging/index.ts +4 -0
- package/typechain-types/contracts/mocks/oracle/CotiPriceConsumerMock.ts +163 -0
- package/typechain-types/contracts/mocks/oracle/index.ts +4 -0
- package/typechain-types/contracts/mocks/token/ERC20DecimalsMock.ts +349 -0
- package/typechain-types/contracts/mocks/token/ERC20Mock.ts +368 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.ts +108 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.ts +1892 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.ts +1296 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.ts +1270 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.ts +166 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.ts +827 -78
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted.ts +102 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock.ts +154 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.ts +155 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.ts +107 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.ts +100 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/index.ts +10 -0
- package/typechain-types/contracts/mocks/token/index.ts +2 -0
- package/typechain-types/contracts/mocks/utils/mpc/{Arithmetic128BitTestsContract.ts → Arithmetic128TestsContract.ts} +96 -126
- package/typechain-types/contracts/mocks/utils/mpc/{Arithmetic256BitTestsContract.ts → Arithmetic256TestsContract.ts} +97 -133
- package/typechain-types/contracts/mocks/utils/mpc/{Bitwise128BitTestsContract.ts → Bitwise128TestsContract.ts} +52 -59
- package/typechain-types/contracts/mocks/utils/mpc/{Bitwise256BitTestsContract.ts → Bitwise256TestsContract.ts} +52 -59
- package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.ts +206 -0
- package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.ts +206 -0
- package/typechain-types/contracts/mocks/utils/mpc/{Comparison128BitTestsContract.ts → Comparison128TestsContract.ts} +115 -97
- package/typechain-types/contracts/mocks/utils/mpc/{Comparison256BitTestsContract.ts → Comparison256TestsContract.ts} +115 -97
- package/typechain-types/contracts/mocks/utils/mpc/MinMax128TestsContract.ts +142 -0
- package/typechain-types/contracts/mocks/utils/mpc/MinMax256TestsContract.ts +142 -0
- package/typechain-types/contracts/mocks/utils/mpc/MinimalImplementation.ts +259 -0
- package/typechain-types/contracts/mocks/utils/mpc/MinimalProxy.ts +90 -0
- package/typechain-types/contracts/mocks/utils/mpc/MpcOperations128TestContract.ts +388 -0
- package/typechain-types/contracts/mocks/utils/mpc/MpcOperationsTestContract.ts +455 -0
- package/typechain-types/contracts/mocks/utils/mpc/Mux128TestsContract.ts +109 -0
- package/typechain-types/contracts/mocks/utils/mpc/Mux256TestsContract.ts +109 -0
- package/typechain-types/contracts/mocks/utils/mpc/OnBoard128TestsContract.ts +166 -0
- package/typechain-types/contracts/mocks/utils/mpc/OnBoard256TestsContract.ts +194 -0
- package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV1.ts +385 -0
- package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV2.ts +441 -0
- package/typechain-types/contracts/mocks/utils/mpc/PrivacyProxy.ts +201 -0
- package/typechain-types/contracts/mocks/utils/mpc/Random128TestsContract.ts +131 -0
- package/typechain-types/contracts/mocks/utils/mpc/Random256TestsContract.ts +131 -0
- package/typechain-types/contracts/mocks/utils/mpc/Shift128TestsContract.ts +142 -0
- package/typechain-types/contracts/mocks/utils/mpc/Shift256TestsContract.ts +142 -0
- package/typechain-types/contracts/mocks/utils/mpc/Transfer128TestsContract.ts +109 -0
- package/typechain-types/contracts/mocks/utils/mpc/Transfer256TestsContract.ts +109 -0
- package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.ts +128 -0
- package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.ts +128 -0
- package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.ts +198 -0
- package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.ts +182 -0
- package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.ts +257 -0
- package/typechain-types/contracts/mocks/utils/mpc/index.ts +32 -8
- package/typechain-types/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.ts +6 -6
- package/typechain-types/contracts/node/CotiNodeRewards.ts +566 -0
- package/typechain-types/contracts/node/SoulboundNodeNFT.sol/IERC5192.ts +123 -0
- package/typechain-types/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT.ts +975 -0
- package/typechain-types/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
- package/typechain-types/contracts/node/index.ts +6 -0
- package/typechain-types/contracts/oracle/CotiPriceConsumer.ts +256 -0
- package/typechain-types/contracts/oracle/ICotiPriceConsumer.ts +119 -0
- package/typechain-types/contracts/oracle/IStdReference.ts +136 -0
- package/typechain-types/contracts/oracle/index.ts +6 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridge.ts +1628 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeCotiNative.ts +1870 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals.ts +84 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20.ts +1892 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDCe.ts +1892 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDT.ts +1892 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeWADA.ts +1892 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeWBTC.ts +1892 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeWETH.ts +1892 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgegCoti.ts +1892 -0
- package/typechain-types/contracts/privacyBridge/index.ts +13 -0
- package/typechain-types/contracts/token/PrivateERC20/IPrivateERC20.ts +507 -70
- package/typechain-types/contracts/token/PrivateERC20/ITokenReceiver.ts +100 -0
- package/typechain-types/contracts/token/PrivateERC20/ITokenReceiverEncrypted.ts +99 -0
- package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +833 -68
- package/typechain-types/contracts/token/PrivateERC20/index.ts +4 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTI.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/index.ts +10 -0
- package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +111 -10
- package/typechain-types/factories/@openzeppelin/contracts/access/AccessControlEnumerable__factory.ts +276 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/AccessControl__factory.ts +229 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControlEnumerable__factory.ts +244 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControl__factory.ts +197 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +74 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +8 -0
- package/typechain-types/factories/@openzeppelin/contracts/index.ts +2 -0
- package/typechain-types/factories/@openzeppelin/contracts/security/Pausable__factory.ts +61 -0
- package/typechain-types/factories/@openzeppelin/contracts/security/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +356 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +205 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +247 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit__factory.ts +100 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +5 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts +6 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts +416 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.ts +355 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/index.ts +2 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/index.ts +1 -0
- package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1__factory.ts +791 -0
- package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow__factory.ts +711 -0
- package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperser__factory.ts +759 -0
- package/typechain-types/factories/contracts/disperse/coinByRatio/index.ts +6 -0
- package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20__factory.ts +43 -0
- package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable__factory.ts +35 -0
- package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser__factory.ts +203 -0
- package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +6 -0
- package/typechain-types/factories/contracts/disperse/disperseToken/TokenDisperser__factory.ts +198 -0
- package/typechain-types/factories/contracts/disperse/disperseToken/index.ts +5 -0
- package/typechain-types/factories/contracts/disperse/index.ts +5 -0
- package/typechain-types/factories/contracts/index.ts +5 -0
- package/typechain-types/factories/contracts/messaging/PrivateMessaging__factory.ts +1035 -0
- package/typechain-types/factories/contracts/messaging/index.ts +4 -0
- package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/index.ts +2 -0
- package/typechain-types/factories/contracts/mocks/messaging/PrivateMessagingHarness__factory.ts +1161 -0
- package/typechain-types/factories/contracts/mocks/messaging/index.ts +4 -0
- package/typechain-types/factories/contracts/mocks/oracle/CotiPriceConsumerMock__factory.ts +159 -0
- package/typechain-types/factories/contracts/mocks/oracle/index.ts +4 -0
- package/typechain-types/factories/contracts/mocks/token/ERC20DecimalsMock__factory.ts +394 -0
- package/typechain-types/factories/contracts/mocks/token/ERC20Mock__factory.ts +392 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock__factory.ts +125 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock__factory.ts +1797 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock__factory.ts +1514 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock__factory.ts +1466 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock__factory.ts +165 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +975 -127
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted__factory.ts +54 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock__factory.ts +159 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock__factory.ts +164 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock__factory.ts +130 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock__factory.ts +102 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/index.ts +9 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/token/index.ts +2 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128TestsContract__factory.ts +330 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256TestsContract__factory.ts +330 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128TestsContract__factory.ts +184 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256TestsContract__factory.ts +184 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract__factory.ts +203 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract__factory.ts +203 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/CheckedArithmeticWithOverflowBitTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128TestsContract__factory.ts +295 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256TestsContract__factory.ts +295 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax128TestsContract__factory.ts +147 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax256TestsContract__factory.ts +147 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalImplementation__factory.ts +263 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalProxy__factory.ts +104 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperations128TestContract__factory.ts +723 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperationsTestContract__factory.ts +1410 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Mux128TestsContract__factory.ts +115 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Mux256TestsContract__factory.ts +115 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard128TestsContract__factory.ts +175 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard256TestsContract__factory.ts +205 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV1__factory.ts +521 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV2__factory.ts +648 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyProxy__factory.ts +179 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Random128TestsContract__factory.ts +131 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Random256TestsContract__factory.ts +131 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Shift128TestsContract__factory.ts +147 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Shift256TestsContract__factory.ts +147 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer128TestsContract__factory.ts +135 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer256TestsContract__factory.ts +135 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract__factory.ts +154 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract__factory.ts +154 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract__factory.ts +190 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract__factory.ts +210 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract__factory.ts +260 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +32 -8
- package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +10 -28
- package/typechain-types/factories/contracts/node/CotiNodeRewards__factory.ts +549 -0
- package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/IERC5192__factory.ts +54 -0
- package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT__factory.ts +947 -0
- package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
- package/typechain-types/factories/contracts/node/index.ts +5 -0
- package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
- package/typechain-types/factories/contracts/oracle/CotiPriceConsumer__factory.ts +295 -0
- package/typechain-types/factories/contracts/oracle/ICotiPriceConsumer__factory.ts +73 -0
- package/typechain-types/factories/contracts/oracle/IStdReference__factory.ts +107 -0
- package/typechain-types/factories/contracts/oracle/index.ts +6 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeCotiNative__factory.ts +1676 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals__factory.ts +38 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20__factory.ts +1678 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDCe__factory.ts +1782 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDT__factory.ts +1782 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWADA__factory.ts +1782 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWBTC__factory.ts +1782 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWETH__factory.ts +1782 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridge__factory.ts +1367 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgegCoti__factory.ts +1782 -0
- package/typechain-types/factories/contracts/privacyBridge/index.ts +12 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/IPrivateERC20__factory.ts +639 -61
- package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiverEncrypted__factory.ts +53 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiver__factory.ts +54 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +986 -120
- package/typechain-types/factories/contracts/token/PrivateERC20/index.ts +3 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC__factory.ts +1445 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken__factory.ts +1451 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTI__factory.ts +1442 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateTetherUSD__factory.ts +1445 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedADA__factory.ts +1445 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC__factory.ts +1445 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedEther__factory.ts +1451 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/index.ts +10 -0
- package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
- package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +126 -0
- package/typechain-types/hardhat.d.ts +1772 -278
- package/typechain-types/index.ts +182 -16
- package/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract.sol +0 -260
- package/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract.sol +0 -264
- package/contracts/mocks/utils/mpc/Bitwise128BitTestsContract.sol +0 -91
- package/contracts/mocks/utils/mpc/Bitwise256BitTestsContract.sol +0 -91
- package/contracts/mocks/utils/mpc/Comparison128BitTestsContract.sol +0 -158
- package/contracts/mocks/utils/mpc/Comparison256BitTestsContract.sol +0 -158
- package/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.sol +0 -185
- package/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.sol +0 -190
- package/contracts/mocks/utils/mpc/README.md +0 -486
- package/test/utils/mpc/Unsigned128BitIntegers.test.ts +0 -945
- package/test/utils/mpc/Unsigned256BitIntegers.test.ts +0 -1124
- package/test/utils/mpc/helpers.ts +0 -77
- package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.ts +0 -302
- package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.ts +0 -322
- package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract__factory.ts +0 -349
- package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract__factory.ts +0 -364
- package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128BitTestsContract__factory.ts +0 -182
- package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256BitTestsContract__factory.ts +0 -182
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128BitTestsContract__factory.ts +0 -255
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256BitTestsContract__factory.ts +0 -255
- package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract__factory.ts +0 -332
- package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract__factory.ts +0 -380
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @title PrivacyImplementationV1
|
|
8
|
+
* @notice Implementation contract with privacy-preserving operations
|
|
9
|
+
* @dev To be used behind PrivacyProxy via delegatecall
|
|
10
|
+
*/
|
|
11
|
+
contract PrivacyImplementationV1 {
|
|
12
|
+
|
|
13
|
+
// Storage layout must match proxy if needed
|
|
14
|
+
// Using mapping to avoid storage slot conflicts with proxy
|
|
15
|
+
mapping(address => gtUint128) private userBalances128;
|
|
16
|
+
mapping(address => gtUint256) private userBalances256;
|
|
17
|
+
|
|
18
|
+
// Events
|
|
19
|
+
event ValueStored128(address indexed user);
|
|
20
|
+
event ValueStored256(address indexed user);
|
|
21
|
+
event OperationPerformed(address indexed user, string operation);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @notice Store encrypted uint128 value for user
|
|
25
|
+
* @dev IT-type validation happens in delegatecall context
|
|
26
|
+
*/
|
|
27
|
+
function storeValue128(itUint128 calldata value) external returns (ctUint128) {
|
|
28
|
+
// Validate IT-type (this runs in proxy's context via delegatecall)
|
|
29
|
+
gtUint128 gtValue = MpcCore.validateCiphertext(value);
|
|
30
|
+
|
|
31
|
+
// Store in user's balance
|
|
32
|
+
userBalances128[msg.sender] = gtValue;
|
|
33
|
+
|
|
34
|
+
emit ValueStored128(msg.sender);
|
|
35
|
+
|
|
36
|
+
// Return encrypted for user
|
|
37
|
+
return MpcCore.offBoardToUser(gtValue, msg.sender);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @notice Add to user's stored value (uint128)
|
|
42
|
+
*/
|
|
43
|
+
function addToBalance128(itUint128 calldata amount) external returns (ctUint128) {
|
|
44
|
+
// Validate new amount
|
|
45
|
+
gtUint128 gtAmount = MpcCore.validateCiphertext(amount);
|
|
46
|
+
|
|
47
|
+
// Get current balance
|
|
48
|
+
gtUint128 currentBalance = userBalances128[msg.sender];
|
|
49
|
+
|
|
50
|
+
// Add to balance
|
|
51
|
+
gtUint128 newBalance = MpcCore.add(currentBalance, gtAmount);
|
|
52
|
+
|
|
53
|
+
// Store new balance
|
|
54
|
+
userBalances128[msg.sender] = newBalance;
|
|
55
|
+
|
|
56
|
+
emit OperationPerformed(msg.sender, "add128");
|
|
57
|
+
|
|
58
|
+
// Return encrypted result
|
|
59
|
+
return MpcCore.offBoardToUser(newBalance, msg.sender);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* @notice Get user's balance (uint128)
|
|
64
|
+
*/
|
|
65
|
+
function getBalance128() external returns (ctUint128) {
|
|
66
|
+
gtUint128 balance = userBalances128[msg.sender];
|
|
67
|
+
return MpcCore.offBoardToUser(balance, msg.sender);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @notice Perform addition on two encrypted values (uint128)
|
|
72
|
+
*/
|
|
73
|
+
function add128(itUint128 calldata a, itUint128 calldata b) external returns (ctUint128) {
|
|
74
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
75
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
76
|
+
|
|
77
|
+
gtUint128 result = MpcCore.add(gtA, gtB);
|
|
78
|
+
|
|
79
|
+
emit OperationPerformed(msg.sender, "add128");
|
|
80
|
+
|
|
81
|
+
return MpcCore.offBoardToUser(result, msg.sender);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @notice Perform multiplication on two encrypted values (uint128)
|
|
86
|
+
*/
|
|
87
|
+
function mul128(itUint128 calldata a, itUint128 calldata b) external returns (ctUint128) {
|
|
88
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
89
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
90
|
+
|
|
91
|
+
gtUint128 result = MpcCore.mul(gtA, gtB);
|
|
92
|
+
|
|
93
|
+
emit OperationPerformed(msg.sender, "mul128");
|
|
94
|
+
|
|
95
|
+
return MpcCore.offBoardToUser(result, msg.sender);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* @notice Store encrypted uint256 value for user
|
|
100
|
+
*/
|
|
101
|
+
function storeValue256(itUint256 calldata value) external returns (ctUint256 memory) {
|
|
102
|
+
gtUint256 gtValue = MpcCore.validateCiphertext(value);
|
|
103
|
+
|
|
104
|
+
userBalances256[msg.sender] = gtValue;
|
|
105
|
+
|
|
106
|
+
emit ValueStored256(msg.sender);
|
|
107
|
+
|
|
108
|
+
return MpcCore.offBoardToUser(gtValue, msg.sender);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* @notice Add to user's stored value (uint256)
|
|
113
|
+
*/
|
|
114
|
+
function addToBalance256(itUint256 calldata amount) external returns (ctUint256 memory) {
|
|
115
|
+
gtUint256 gtAmount = MpcCore.validateCiphertext(amount);
|
|
116
|
+
|
|
117
|
+
gtUint256 currentBalance = userBalances256[msg.sender];
|
|
118
|
+
|
|
119
|
+
gtUint256 newBalance = MpcCore.add(currentBalance, gtAmount);
|
|
120
|
+
|
|
121
|
+
userBalances256[msg.sender] = newBalance;
|
|
122
|
+
|
|
123
|
+
emit OperationPerformed(msg.sender, "add256");
|
|
124
|
+
|
|
125
|
+
return MpcCore.offBoardToUser(newBalance, msg.sender);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* @notice Get user's balance (uint256)
|
|
130
|
+
*/
|
|
131
|
+
function getBalance256() external returns (ctUint256 memory) {
|
|
132
|
+
gtUint256 balance = userBalances256[msg.sender];
|
|
133
|
+
return MpcCore.offBoardToUser(balance, msg.sender);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* @notice Perform addition on two encrypted values (uint256)
|
|
138
|
+
*/
|
|
139
|
+
function add256(itUint256 calldata a, itUint256 calldata b) external returns (ctUint256 memory) {
|
|
140
|
+
gtUint256 gtA = MpcCore.validateCiphertext(a);
|
|
141
|
+
gtUint256 gtB = MpcCore.validateCiphertext(b);
|
|
142
|
+
|
|
143
|
+
gtUint256 result = MpcCore.add(gtA, gtB);
|
|
144
|
+
|
|
145
|
+
emit OperationPerformed(msg.sender, "add256");
|
|
146
|
+
|
|
147
|
+
return MpcCore.offBoardToUser(result, msg.sender);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* @notice Get version of implementation
|
|
152
|
+
*/
|
|
153
|
+
function version() external pure returns (string memory) {
|
|
154
|
+
return "v1";
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @title PrivacyImplementationV2
|
|
8
|
+
* @notice Upgraded implementation with additional features
|
|
9
|
+
* @dev Storage layout must match V1 to preserve state
|
|
10
|
+
*/
|
|
11
|
+
contract PrivacyImplementationV2 {
|
|
12
|
+
|
|
13
|
+
// Storage layout MUST match V1
|
|
14
|
+
mapping(address => gtUint128) private userBalances128;
|
|
15
|
+
mapping(address => gtUint256) private userBalances256;
|
|
16
|
+
|
|
17
|
+
// Events
|
|
18
|
+
event ValueStored128(address indexed user);
|
|
19
|
+
event ValueStored256(address indexed user);
|
|
20
|
+
event OperationPerformed(address indexed user, string operation);
|
|
21
|
+
|
|
22
|
+
// V1 functions (must keep same signatures for compatibility)
|
|
23
|
+
|
|
24
|
+
function storeValue128(itUint128 calldata value) external returns (ctUint128) {
|
|
25
|
+
gtUint128 gtValue = MpcCore.validateCiphertext(value);
|
|
26
|
+
userBalances128[msg.sender] = gtValue;
|
|
27
|
+
emit ValueStored128(msg.sender);
|
|
28
|
+
return MpcCore.offBoardToUser(gtValue, msg.sender);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function addToBalance128(itUint128 calldata amount) external returns (ctUint128) {
|
|
32
|
+
gtUint128 gtAmount = MpcCore.validateCiphertext(amount);
|
|
33
|
+
gtUint128 currentBalance = userBalances128[msg.sender];
|
|
34
|
+
gtUint128 newBalance = MpcCore.add(currentBalance, gtAmount);
|
|
35
|
+
userBalances128[msg.sender] = newBalance;
|
|
36
|
+
emit OperationPerformed(msg.sender, "add128");
|
|
37
|
+
return MpcCore.offBoardToUser(newBalance, msg.sender);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function getBalance128() external returns (ctUint128) {
|
|
41
|
+
gtUint128 balance = userBalances128[msg.sender];
|
|
42
|
+
return MpcCore.offBoardToUser(balance, msg.sender);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function add128(itUint128 calldata a, itUint128 calldata b) external returns (ctUint128) {
|
|
46
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
47
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
48
|
+
gtUint128 result = MpcCore.add(gtA, gtB);
|
|
49
|
+
emit OperationPerformed(msg.sender, "add128");
|
|
50
|
+
return MpcCore.offBoardToUser(result, msg.sender);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function mul128(itUint128 calldata a, itUint128 calldata b) external returns (ctUint128) {
|
|
54
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
55
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
56
|
+
gtUint128 result = MpcCore.mul(gtA, gtB);
|
|
57
|
+
emit OperationPerformed(msg.sender, "mul128");
|
|
58
|
+
return MpcCore.offBoardToUser(result, msg.sender);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function storeValue256(itUint256 calldata value) external returns (ctUint256 memory) {
|
|
62
|
+
gtUint256 gtValue = MpcCore.validateCiphertext(value);
|
|
63
|
+
userBalances256[msg.sender] = gtValue;
|
|
64
|
+
emit ValueStored256(msg.sender);
|
|
65
|
+
return MpcCore.offBoardToUser(gtValue, msg.sender);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function addToBalance256(itUint256 calldata amount) external returns (ctUint256 memory) {
|
|
69
|
+
gtUint256 gtAmount = MpcCore.validateCiphertext(amount);
|
|
70
|
+
gtUint256 currentBalance = userBalances256[msg.sender];
|
|
71
|
+
gtUint256 newBalance = MpcCore.add(currentBalance, gtAmount);
|
|
72
|
+
userBalances256[msg.sender] = newBalance;
|
|
73
|
+
emit OperationPerformed(msg.sender, "add256");
|
|
74
|
+
return MpcCore.offBoardToUser(newBalance, msg.sender);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function getBalance256() external returns (ctUint256 memory) {
|
|
78
|
+
gtUint256 balance = userBalances256[msg.sender];
|
|
79
|
+
return MpcCore.offBoardToUser(balance, msg.sender);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function add256(itUint256 calldata a, itUint256 calldata b) external returns (ctUint256 memory) {
|
|
83
|
+
gtUint256 gtA = MpcCore.validateCiphertext(a);
|
|
84
|
+
gtUint256 gtB = MpcCore.validateCiphertext(b);
|
|
85
|
+
gtUint256 result = MpcCore.add(gtA, gtB);
|
|
86
|
+
emit OperationPerformed(msg.sender, "add256");
|
|
87
|
+
return MpcCore.offBoardToUser(result, msg.sender);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// NEW V2 FUNCTIONS
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @notice Subtract from balance (NEW in V2)
|
|
94
|
+
*/
|
|
95
|
+
function subtractFromBalance128(itUint128 calldata amount) external returns (ctUint128) {
|
|
96
|
+
gtUint128 gtAmount = MpcCore.validateCiphertext(amount);
|
|
97
|
+
gtUint128 currentBalance = userBalances128[msg.sender];
|
|
98
|
+
gtUint128 newBalance = MpcCore.sub(currentBalance, gtAmount);
|
|
99
|
+
userBalances128[msg.sender] = newBalance;
|
|
100
|
+
emit OperationPerformed(msg.sender, "sub128");
|
|
101
|
+
return MpcCore.offBoardToUser(newBalance, msg.sender);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* @notice Subtract two encrypted values (NEW in V2)
|
|
106
|
+
*/
|
|
107
|
+
function sub128(itUint128 calldata a, itUint128 calldata b) external returns (ctUint128) {
|
|
108
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
109
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
110
|
+
gtUint128 result = MpcCore.sub(gtA, gtB);
|
|
111
|
+
emit OperationPerformed(msg.sender, "sub128");
|
|
112
|
+
return MpcCore.offBoardToUser(result, msg.sender);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* @notice Divide two encrypted values (NEW in V2)
|
|
117
|
+
*/
|
|
118
|
+
function div128(itUint128 calldata a, itUint128 calldata b) external returns (ctUint128) {
|
|
119
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
120
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
121
|
+
gtUint128 result = MpcCore.div(gtA, gtB);
|
|
122
|
+
emit OperationPerformed(msg.sender, "div128");
|
|
123
|
+
return MpcCore.offBoardToUser(result, msg.sender);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* @notice Get version (upgraded)
|
|
128
|
+
*/
|
|
129
|
+
function version() external pure returns (string memory) {
|
|
130
|
+
return "v2";
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @title PrivacyProxy
|
|
6
|
+
* @notice Simple upgradeable proxy that delegates all calls to an implementation contract
|
|
7
|
+
* @dev Tests if IT-type validation works through delegatecall
|
|
8
|
+
*/
|
|
9
|
+
contract PrivacyProxy {
|
|
10
|
+
|
|
11
|
+
// Storage slot for implementation address (EIP-1967)
|
|
12
|
+
bytes32 private constant IMPLEMENTATION_SLOT = bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1);
|
|
13
|
+
|
|
14
|
+
// Storage slot for admin address
|
|
15
|
+
bytes32 private constant ADMIN_SLOT = bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1);
|
|
16
|
+
|
|
17
|
+
// Events
|
|
18
|
+
event Upgraded(address indexed implementation);
|
|
19
|
+
event AdminChanged(address previousAdmin, address newAdmin);
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @notice Constructor sets initial implementation and admin
|
|
23
|
+
*/
|
|
24
|
+
constructor(address _implementation) {
|
|
25
|
+
_setImplementation(_implementation);
|
|
26
|
+
_setAdmin(msg.sender);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @notice Modifier to restrict functions to admin only
|
|
31
|
+
*/
|
|
32
|
+
modifier onlyAdmin() {
|
|
33
|
+
require(msg.sender == _getAdmin(), "PrivacyProxy: caller is not admin");
|
|
34
|
+
_;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @notice Upgrade to a new implementation
|
|
39
|
+
* @param newImplementation Address of the new implementation contract
|
|
40
|
+
*/
|
|
41
|
+
function upgradeTo(address newImplementation) external onlyAdmin {
|
|
42
|
+
_setImplementation(newImplementation);
|
|
43
|
+
emit Upgraded(newImplementation);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @notice Change the admin
|
|
48
|
+
* @param newAdmin Address of the new admin
|
|
49
|
+
*/
|
|
50
|
+
function changeAdmin(address newAdmin) external onlyAdmin {
|
|
51
|
+
address oldAdmin = _getAdmin();
|
|
52
|
+
_setAdmin(newAdmin);
|
|
53
|
+
emit AdminChanged(oldAdmin, newAdmin);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @notice Get current implementation address
|
|
58
|
+
*/
|
|
59
|
+
function implementation() external view returns (address) {
|
|
60
|
+
return _getImplementation();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @notice Get current admin address
|
|
65
|
+
*/
|
|
66
|
+
function admin() external view returns (address) {
|
|
67
|
+
return _getAdmin();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @notice Fallback function delegates all calls to implementation
|
|
72
|
+
*/
|
|
73
|
+
fallback() external payable {
|
|
74
|
+
address impl = _getImplementation();
|
|
75
|
+
require(impl != address(0), "PrivacyProxy: implementation not set");
|
|
76
|
+
|
|
77
|
+
assembly {
|
|
78
|
+
// Copy msg.data to memory
|
|
79
|
+
calldatacopy(0, 0, calldatasize())
|
|
80
|
+
|
|
81
|
+
// Delegatecall to implementation
|
|
82
|
+
let result := delegatecall(gas(), impl, 0, calldatasize(), 0, 0)
|
|
83
|
+
|
|
84
|
+
// Copy return data
|
|
85
|
+
returndatacopy(0, 0, returndatasize())
|
|
86
|
+
|
|
87
|
+
// Return or revert based on delegatecall result
|
|
88
|
+
switch result
|
|
89
|
+
case 0 {
|
|
90
|
+
revert(0, returndatasize())
|
|
91
|
+
}
|
|
92
|
+
default {
|
|
93
|
+
return(0, returndatasize())
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* @notice Receive function for ETH transfers
|
|
100
|
+
*/
|
|
101
|
+
receive() external payable {}
|
|
102
|
+
|
|
103
|
+
// Internal functions
|
|
104
|
+
|
|
105
|
+
function _setImplementation(address newImplementation) private {
|
|
106
|
+
require(newImplementation != address(0), "PrivacyProxy: invalid implementation");
|
|
107
|
+
|
|
108
|
+
bytes32 slot = IMPLEMENTATION_SLOT;
|
|
109
|
+
assembly {
|
|
110
|
+
sstore(slot, newImplementation)
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function _getImplementation() private view returns (address impl) {
|
|
115
|
+
bytes32 slot = IMPLEMENTATION_SLOT;
|
|
116
|
+
assembly {
|
|
117
|
+
impl := sload(slot)
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function _setAdmin(address newAdmin) private {
|
|
122
|
+
require(newAdmin != address(0), "PrivacyProxy: invalid admin");
|
|
123
|
+
|
|
124
|
+
bytes32 slot = ADMIN_SLOT;
|
|
125
|
+
assembly {
|
|
126
|
+
sstore(slot, newAdmin)
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function _getAdmin() private view returns (address adm) {
|
|
131
|
+
bytes32 slot = ADMIN_SLOT;
|
|
132
|
+
assembly {
|
|
133
|
+
adm := sload(slot)
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
contract Random128TestsContract {
|
|
7
|
+
uint128 randomResult;
|
|
8
|
+
uint128 randomBoundedResult;
|
|
9
|
+
|
|
10
|
+
function getRandom() public view returns (uint128) {
|
|
11
|
+
return randomResult;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getRandomBounded() public view returns (uint128) {
|
|
15
|
+
return randomBoundedResult;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function randomTest() public returns (uint128) {
|
|
19
|
+
uint128 result = uint128(MpcCore.decrypt(MpcCore.rand128()));
|
|
20
|
+
randomResult = result;
|
|
21
|
+
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function randomBoundedTest(uint8 numBits) public returns (uint128) {
|
|
26
|
+
uint128 result = uint128(MpcCore.decrypt(MpcCore.randBoundedBits128(numBits)));
|
|
27
|
+
randomBoundedResult = result;
|
|
28
|
+
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
contract Random256TestsContract {
|
|
7
|
+
uint256 randomResult;
|
|
8
|
+
uint256 randomBoundedResult;
|
|
9
|
+
|
|
10
|
+
function getRandom() public view returns (uint256) {
|
|
11
|
+
return randomResult;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getRandomBounded() public view returns (uint256) {
|
|
15
|
+
return randomBoundedResult;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function randomTest() public returns (uint256) {
|
|
19
|
+
uint256 result = MpcCore.decrypt(MpcCore.rand256());
|
|
20
|
+
randomResult = result;
|
|
21
|
+
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function randomBoundedTest(uint8 numBits) public returns (uint256) {
|
|
26
|
+
uint256 result = MpcCore.decrypt(MpcCore.randBoundedBits256(numBits));
|
|
27
|
+
randomBoundedResult = result;
|
|
28
|
+
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
contract Shift128TestsContract {
|
|
7
|
+
uint128 shlResult;
|
|
8
|
+
uint128 shrResult;
|
|
9
|
+
|
|
10
|
+
function getShlResult() public view returns (uint128) {
|
|
11
|
+
return shlResult;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getShrResult() public view returns (uint128) {
|
|
15
|
+
return shrResult;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function shlTest(uint128 a, uint8 shift) public returns (uint128) {
|
|
19
|
+
gtUint128 a128 = MpcCore.setPublic128(a);
|
|
20
|
+
|
|
21
|
+
uint128 result = uint128(MpcCore.decrypt(MpcCore.shl(a128, shift)));
|
|
22
|
+
shlResult = result;
|
|
23
|
+
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function shrTest(uint128 a, uint8 shift) public returns (uint128) {
|
|
28
|
+
gtUint128 a128 = MpcCore.setPublic128(a);
|
|
29
|
+
|
|
30
|
+
uint128 result = uint128(MpcCore.decrypt(MpcCore.shr(a128, shift)));
|
|
31
|
+
shrResult = result;
|
|
32
|
+
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
contract Shift256TestsContract {
|
|
7
|
+
uint256 shlResult;
|
|
8
|
+
uint256 shrResult;
|
|
9
|
+
|
|
10
|
+
function getShlResult() public view returns (uint256) {
|
|
11
|
+
return shlResult;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getShrResult() public view returns (uint256) {
|
|
15
|
+
return shrResult;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function shlTest(uint256 a, uint8 shift) public returns (uint256) {
|
|
19
|
+
gtUint256 a256 = MpcCore.setPublic256(a);
|
|
20
|
+
|
|
21
|
+
uint256 result = MpcCore.decrypt(MpcCore.shl(a256, shift));
|
|
22
|
+
shlResult = result;
|
|
23
|
+
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function shrTest(uint256 a, uint8 shift) public returns (uint256) {
|
|
28
|
+
gtUint256 a256 = MpcCore.setPublic256(a);
|
|
29
|
+
|
|
30
|
+
uint256 result = MpcCore.decrypt(MpcCore.shr(a256, shift));
|
|
31
|
+
shrResult = result;
|
|
32
|
+
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
contract Transfer128TestsContract {
|
|
7
|
+
uint128 newA;
|
|
8
|
+
uint128 newB;
|
|
9
|
+
bool result;
|
|
10
|
+
|
|
11
|
+
function getResults() public view returns (uint128, uint128, bool) {
|
|
12
|
+
return (newA, newB, result);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function transferTest(uint128 a, uint128 b, uint128 amount) public returns (uint128, uint128, bool) {
|
|
16
|
+
gtUint128 a128 = MpcCore.setPublic128(a);
|
|
17
|
+
gtUint128 b128 = MpcCore.setPublic128(b);
|
|
18
|
+
gtUint128 amount128 = MpcCore.setPublic128(amount);
|
|
19
|
+
|
|
20
|
+
(gtUint128 newA128, gtUint128 newB128, gtBool res) = MpcCore.transfer(a128, b128, amount128);
|
|
21
|
+
|
|
22
|
+
newA = uint128(MpcCore.decrypt(newA128));
|
|
23
|
+
newB = uint128(MpcCore.decrypt(newB128));
|
|
24
|
+
result = MpcCore.decrypt(res);
|
|
25
|
+
|
|
26
|
+
return (newA, newB, result);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
contract Transfer256TestsContract {
|
|
7
|
+
uint256 newA;
|
|
8
|
+
uint256 newB;
|
|
9
|
+
bool result;
|
|
10
|
+
|
|
11
|
+
function getResults() public view returns (uint256, uint256, bool) {
|
|
12
|
+
return (newA, newB, result);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function transferTest(uint256 a, uint256 b, uint256 amount) public returns (uint256, uint256, bool) {
|
|
16
|
+
gtUint256 a256 = MpcCore.setPublic256(a);
|
|
17
|
+
gtUint256 b256 = MpcCore.setPublic256(b);
|
|
18
|
+
gtUint256 amount256 = MpcCore.setPublic256(amount);
|
|
19
|
+
|
|
20
|
+
(gtUint256 newA256, gtUint256 newB256, gtBool res) = MpcCore.transfer(a256, b256, amount256);
|
|
21
|
+
|
|
22
|
+
newA = MpcCore.decrypt(newA256);
|
|
23
|
+
newB = MpcCore.decrypt(newB256);
|
|
24
|
+
result = MpcCore.decrypt(res);
|
|
25
|
+
|
|
26
|
+
return (newA, newB, result);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
contract TransferWithAllowance128TestsContract {
|
|
7
|
+
uint128 newA;
|
|
8
|
+
uint128 newB;
|
|
9
|
+
bool result;
|
|
10
|
+
uint128 newAllowance;
|
|
11
|
+
|
|
12
|
+
function getResults() public view returns (uint128, uint128, bool, uint128) {
|
|
13
|
+
return (newA, newB, result, newAllowance);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function transferWithAllowanceTest(uint128 a, uint128 b, uint128 amount, uint128 allowance) public returns (uint128, uint128, bool, uint128) {
|
|
17
|
+
gtUint128 a128 = MpcCore.setPublic128(a);
|
|
18
|
+
gtUint128 b128 = MpcCore.setPublic128(b);
|
|
19
|
+
gtUint128 amount128 = MpcCore.setPublic128(amount);
|
|
20
|
+
gtUint128 allowance128 = MpcCore.setPublic128(allowance);
|
|
21
|
+
|
|
22
|
+
(gtUint128 newA128, gtUint128 newB128, gtBool res, gtUint128 newAllowance128) = MpcCore.transferWithAllowance(a128, b128, amount128, allowance128);
|
|
23
|
+
|
|
24
|
+
newA = uint128(MpcCore.decrypt(newA128));
|
|
25
|
+
newB = uint128(MpcCore.decrypt(newB128));
|
|
26
|
+
result = MpcCore.decrypt(res);
|
|
27
|
+
newAllowance = uint128(MpcCore.decrypt(newAllowance128));
|
|
28
|
+
|
|
29
|
+
return (newA, newB, result, newAllowance);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
contract TransferWithAllowance256TestsContract {
|
|
7
|
+
uint256 newA;
|
|
8
|
+
uint256 newB;
|
|
9
|
+
bool result;
|
|
10
|
+
uint256 newAllowance;
|
|
11
|
+
|
|
12
|
+
function getResults() public view returns (uint256, uint256, bool, uint256) {
|
|
13
|
+
return (newA, newB, result, newAllowance);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function transferWithAllowanceTest(uint256 a, uint256 b, uint256 amount, uint256 allowance) public returns (uint256, uint256, bool, uint256) {
|
|
17
|
+
gtUint256 a256 = MpcCore.setPublic256(a);
|
|
18
|
+
gtUint256 b256 = MpcCore.setPublic256(b);
|
|
19
|
+
gtUint256 amount256 = MpcCore.setPublic256(amount);
|
|
20
|
+
gtUint256 allowance256 = MpcCore.setPublic256(allowance);
|
|
21
|
+
|
|
22
|
+
(gtUint256 newA256, gtUint256 newB256, gtBool res, gtUint256 newAllowance256) = MpcCore.transferWithAllowance(a256, b256, amount256, allowance256);
|
|
23
|
+
|
|
24
|
+
newA = MpcCore.decrypt(newA256);
|
|
25
|
+
newB = MpcCore.decrypt(newB256);
|
|
26
|
+
result = MpcCore.decrypt(res);
|
|
27
|
+
newAllowance = MpcCore.decrypt(newAllowance256);
|
|
28
|
+
|
|
29
|
+
return (newA, newB, result, newAllowance);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|