@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,98 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
contract Comparison128TestsContract {
|
|
7
|
+
bool eqResult;
|
|
8
|
+
bool neResult;
|
|
9
|
+
bool geResult;
|
|
10
|
+
bool gtResult;
|
|
11
|
+
bool leResult;
|
|
12
|
+
bool ltResult;
|
|
13
|
+
|
|
14
|
+
function getEqResult() public view returns (bool) {
|
|
15
|
+
return eqResult;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function getNeResult() public view returns (bool) {
|
|
19
|
+
return neResult;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function getGeResult() public view returns (bool) {
|
|
23
|
+
return geResult;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function getGtResult() public view returns (bool) {
|
|
27
|
+
return gtResult;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function getLeResult() public view returns (bool) {
|
|
31
|
+
return leResult;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function getLtResult() public view returns (bool) {
|
|
35
|
+
return ltResult;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function eqTest(uint128 a, uint128 b) public returns (bool) {
|
|
39
|
+
gtUint128 a128 = MpcCore.setPublic128(a);
|
|
40
|
+
gtUint128 b128 = MpcCore.setPublic128(b);
|
|
41
|
+
|
|
42
|
+
bool result = MpcCore.decrypt(MpcCore.eq(a128, b128));
|
|
43
|
+
eqResult = result;
|
|
44
|
+
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function neTest(uint128 a, uint128 b) public returns (bool) {
|
|
49
|
+
gtUint128 a128 = MpcCore.setPublic128(a);
|
|
50
|
+
gtUint128 b128 = MpcCore.setPublic128(b);
|
|
51
|
+
|
|
52
|
+
bool result = MpcCore.decrypt(MpcCore.ne(a128, b128));
|
|
53
|
+
neResult = result;
|
|
54
|
+
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function geTest(uint128 a, uint128 b) public returns (bool) {
|
|
59
|
+
gtUint128 a128 = MpcCore.setPublic128(a);
|
|
60
|
+
gtUint128 b128 = MpcCore.setPublic128(b);
|
|
61
|
+
|
|
62
|
+
bool result = MpcCore.decrypt(MpcCore.ge(a128, b128));
|
|
63
|
+
geResult = result;
|
|
64
|
+
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function gtTest(uint128 a, uint128 b) public returns (bool) {
|
|
69
|
+
gtUint128 a128 = MpcCore.setPublic128(a);
|
|
70
|
+
gtUint128 b128 = MpcCore.setPublic128(b);
|
|
71
|
+
|
|
72
|
+
bool result = MpcCore.decrypt(MpcCore.gt(a128, b128));
|
|
73
|
+
gtResult = result;
|
|
74
|
+
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function leTest(uint128 a, uint128 b) public returns (bool) {
|
|
79
|
+
gtUint128 a128 = MpcCore.setPublic128(a);
|
|
80
|
+
gtUint128 b128 = MpcCore.setPublic128(b);
|
|
81
|
+
|
|
82
|
+
bool result = MpcCore.decrypt(MpcCore.le(a128, b128));
|
|
83
|
+
leResult = result;
|
|
84
|
+
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function ltTest(uint128 a, uint128 b) public returns (bool) {
|
|
89
|
+
gtUint128 a128 = MpcCore.setPublic128(a);
|
|
90
|
+
gtUint128 b128 = MpcCore.setPublic128(b);
|
|
91
|
+
|
|
92
|
+
bool result = MpcCore.decrypt(MpcCore.lt(a128, b128));
|
|
93
|
+
ltResult = result;
|
|
94
|
+
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
contract Comparison256TestsContract {
|
|
7
|
+
bool eqResult;
|
|
8
|
+
bool neResult;
|
|
9
|
+
bool geResult;
|
|
10
|
+
bool gtResult;
|
|
11
|
+
bool leResult;
|
|
12
|
+
bool ltResult;
|
|
13
|
+
|
|
14
|
+
function getEqResult() public view returns (bool) {
|
|
15
|
+
return eqResult;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function getNeResult() public view returns (bool) {
|
|
19
|
+
return neResult;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function getGeResult() public view returns (bool) {
|
|
23
|
+
return geResult;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function getGtResult() public view returns (bool) {
|
|
27
|
+
return gtResult;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function getLeResult() public view returns (bool) {
|
|
31
|
+
return leResult;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function getLtResult() public view returns (bool) {
|
|
35
|
+
return ltResult;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function eqTest(uint256 a, uint256 b) public returns (bool) {
|
|
39
|
+
gtUint256 a256 = MpcCore.setPublic256(a);
|
|
40
|
+
gtUint256 b256 = MpcCore.setPublic256(b);
|
|
41
|
+
|
|
42
|
+
bool result = MpcCore.decrypt(MpcCore.eq(a256, b256));
|
|
43
|
+
eqResult = result;
|
|
44
|
+
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function neTest(uint256 a, uint256 b) public returns (bool) {
|
|
49
|
+
gtUint256 a256 = MpcCore.setPublic256(a);
|
|
50
|
+
gtUint256 b256 = MpcCore.setPublic256(b);
|
|
51
|
+
|
|
52
|
+
bool result = MpcCore.decrypt(MpcCore.ne(a256, b256));
|
|
53
|
+
neResult = result;
|
|
54
|
+
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function geTest(uint256 a, uint256 b) public returns (bool) {
|
|
59
|
+
gtUint256 a256 = MpcCore.setPublic256(a);
|
|
60
|
+
gtUint256 b256 = MpcCore.setPublic256(b);
|
|
61
|
+
|
|
62
|
+
bool result = MpcCore.decrypt(MpcCore.ge(a256, b256));
|
|
63
|
+
geResult = result;
|
|
64
|
+
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function gtTest(uint256 a, uint256 b) public returns (bool) {
|
|
69
|
+
gtUint256 a256 = MpcCore.setPublic256(a);
|
|
70
|
+
gtUint256 b256 = MpcCore.setPublic256(b);
|
|
71
|
+
|
|
72
|
+
bool result = MpcCore.decrypt(MpcCore.gt(a256, b256));
|
|
73
|
+
gtResult = result;
|
|
74
|
+
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function leTest(uint256 a, uint256 b) public returns (bool) {
|
|
79
|
+
gtUint256 a256 = MpcCore.setPublic256(a);
|
|
80
|
+
gtUint256 b256 = MpcCore.setPublic256(b);
|
|
81
|
+
|
|
82
|
+
bool result = MpcCore.decrypt(MpcCore.le(a256, b256));
|
|
83
|
+
leResult = result;
|
|
84
|
+
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function ltTest(uint256 a, uint256 b) public returns (bool) {
|
|
89
|
+
gtUint256 a256 = MpcCore.setPublic256(a);
|
|
90
|
+
gtUint256 b256 = MpcCore.setPublic256(b);
|
|
91
|
+
|
|
92
|
+
bool result = MpcCore.decrypt(MpcCore.lt(a256, b256));
|
|
93
|
+
ltResult = result;
|
|
94
|
+
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
contract MinMax128TestsContract {
|
|
7
|
+
uint128 minResult;
|
|
8
|
+
uint128 maxResult;
|
|
9
|
+
|
|
10
|
+
function getMinResult() public view returns (uint128) {
|
|
11
|
+
return minResult;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getMaxResult() public view returns (uint128) {
|
|
15
|
+
return maxResult;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function minTest(uint128 a, uint128 b) public returns (uint128) {
|
|
19
|
+
gtUint128 a128 = MpcCore.setPublic128(a);
|
|
20
|
+
gtUint128 b128 = MpcCore.setPublic128(b);
|
|
21
|
+
|
|
22
|
+
uint128 result = uint128(MpcCore.decrypt(MpcCore.min(a128, b128)));
|
|
23
|
+
minResult = result;
|
|
24
|
+
|
|
25
|
+
require(result == uint128(MpcCore.decrypt(MpcCore.min(a, b128))), "minTest: scalar failed");
|
|
26
|
+
require(result == uint128(MpcCore.decrypt(MpcCore.min(a128, b))), "minTest: scalar failed");
|
|
27
|
+
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function maxTest(uint128 a, uint128 b) public returns (uint128) {
|
|
32
|
+
gtUint128 a128 = MpcCore.setPublic128(a);
|
|
33
|
+
gtUint128 b128 = MpcCore.setPublic128(b);
|
|
34
|
+
|
|
35
|
+
uint128 result = uint128(MpcCore.decrypt(MpcCore.max(a128, b128)));
|
|
36
|
+
maxResult = result;
|
|
37
|
+
|
|
38
|
+
require(result == uint128(MpcCore.decrypt(MpcCore.max(a, b128))), "maxTest: scalar failed");
|
|
39
|
+
require(result == uint128(MpcCore.decrypt(MpcCore.max(a128, b))), "maxTest: scalar failed");
|
|
40
|
+
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
contract MinMax256TestsContract {
|
|
7
|
+
uint256 minResult;
|
|
8
|
+
uint256 maxResult;
|
|
9
|
+
|
|
10
|
+
function getMinResult() public view returns (uint256) {
|
|
11
|
+
return minResult;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getMaxResult() public view returns (uint256) {
|
|
15
|
+
return maxResult;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function minTest(uint256 a, uint256 b) public returns (uint256) {
|
|
19
|
+
gtUint256 a256 = MpcCore.setPublic256(a);
|
|
20
|
+
gtUint256 b256 = MpcCore.setPublic256(b);
|
|
21
|
+
|
|
22
|
+
uint256 result = MpcCore.decrypt(MpcCore.min(a256, b256));
|
|
23
|
+
minResult = result;
|
|
24
|
+
|
|
25
|
+
require(result == MpcCore.decrypt(MpcCore.min(a, b256)), "minTest: scalar failed");
|
|
26
|
+
require(result == MpcCore.decrypt(MpcCore.min(a256, b)), "minTest: scalar failed");
|
|
27
|
+
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function maxTest(uint256 a, uint256 b) public returns (uint256) {
|
|
32
|
+
gtUint256 a256 = MpcCore.setPublic256(a);
|
|
33
|
+
gtUint256 b256 = MpcCore.setPublic256(b);
|
|
34
|
+
|
|
35
|
+
uint256 result = MpcCore.decrypt(MpcCore.max(a256, b256));
|
|
36
|
+
maxResult = result;
|
|
37
|
+
|
|
38
|
+
require(result == MpcCore.decrypt(MpcCore.max(a, b256)), "maxTest: scalar failed");
|
|
39
|
+
require(result == MpcCore.decrypt(MpcCore.max(a256, b)), "maxTest: scalar failed");
|
|
40
|
+
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @title MinimalImplementation
|
|
8
|
+
* @notice Test IT-type validation and offBoardToUser with large numbers
|
|
9
|
+
*/
|
|
10
|
+
contract MinimalImplementation {
|
|
11
|
+
|
|
12
|
+
// Storage for encrypted result (ctUint256 offBoarded to user)
|
|
13
|
+
mapping(address => ctUint256) public storedCtResult;
|
|
14
|
+
|
|
15
|
+
event InputsReceived(address indexed user, string message);
|
|
16
|
+
event CalculationDone(address indexed user, string operation);
|
|
17
|
+
event ResultStored(address indexed user, string message);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Simple addition test with offBoardToUser storage
|
|
21
|
+
* Flow: IT → validate → GT → add → GT → offBoardToUser → CT → store
|
|
22
|
+
*/
|
|
23
|
+
function addAndStore(itUint256 calldata a, itUint256 calldata b) external returns (ctUint256 memory) {
|
|
24
|
+
emit InputsReceived(msg.sender, "Received encrypted inputs");
|
|
25
|
+
|
|
26
|
+
// Step 1: Validate IT-types (offchain encrypted) → GT-types (onchain encrypted)
|
|
27
|
+
gtUint256 gtA = MpcCore.validateCiphertext(a);
|
|
28
|
+
gtUint256 gtB = MpcCore.validateCiphertext(b);
|
|
29
|
+
|
|
30
|
+
emit CalculationDone(msg.sender, "Validated ciphertexts");
|
|
31
|
+
|
|
32
|
+
// Step 2: Add (onchain computation on encrypted values)
|
|
33
|
+
gtUint256 gtResult = MpcCore.add(gtA, gtB);
|
|
34
|
+
|
|
35
|
+
emit CalculationDone(msg.sender, "Addition completed");
|
|
36
|
+
|
|
37
|
+
// Step 3: OffBoard to user (GT → CT for user to decrypt)
|
|
38
|
+
ctUint256 memory ctResult = MpcCore.offBoardToUser(gtResult, msg.sender);
|
|
39
|
+
|
|
40
|
+
// Step 4: Store the CT result
|
|
41
|
+
storedCtResult[msg.sender] = ctResult;
|
|
42
|
+
|
|
43
|
+
emit ResultStored(msg.sender, "Result stored as ctUint256");
|
|
44
|
+
|
|
45
|
+
return ctResult;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Read stored result from storage
|
|
50
|
+
*/
|
|
51
|
+
function getStoredResult() external view returns (ctUint256 memory) {
|
|
52
|
+
return storedCtResult[msg.sender];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @title MinimalProxy
|
|
6
|
+
* @notice Minimal proxy to demonstrate IT-type validation issue
|
|
7
|
+
*/
|
|
8
|
+
contract MinimalProxy {
|
|
9
|
+
address public implementation;
|
|
10
|
+
|
|
11
|
+
constructor(address _implementation) {
|
|
12
|
+
implementation = _implementation;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
fallback() external payable {
|
|
16
|
+
address impl = implementation;
|
|
17
|
+
assembly {
|
|
18
|
+
calldatacopy(0, 0, calldatasize())
|
|
19
|
+
let result := delegatecall(gas(), impl, 0, calldatasize(), 0, 0)
|
|
20
|
+
returndatacopy(0, 0, returndatasize())
|
|
21
|
+
switch result
|
|
22
|
+
case 0 { revert(0, returndatasize()) }
|
|
23
|
+
default { return(0, returndatasize()) }
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.19;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @title MpcOperations128TestContract
|
|
8
|
+
* @dev Contract to test uint128 MPC operations with offBoardToUser functionality
|
|
9
|
+
* This allows users to decrypt the results of operations performed on encrypted uint128 values
|
|
10
|
+
*/
|
|
11
|
+
contract MpcOperations128TestContract {
|
|
12
|
+
|
|
13
|
+
// Events for tracking operations
|
|
14
|
+
event OperationPerformed(string operation, address indexed user);
|
|
15
|
+
event ValueOffBoarded128(address indexed user, ctUint128 result);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @dev Add two encrypted 128-bit values and return result encrypted for user
|
|
19
|
+
* @param a First encrypted value (itUint128)
|
|
20
|
+
* @param b Second encrypted value (itUint128)
|
|
21
|
+
* @param user Address to encrypt result for
|
|
22
|
+
* @return Result encrypted for the user (ctUint128)
|
|
23
|
+
*/
|
|
24
|
+
function add128(itUint128 memory a, itUint128 memory b, address user) public returns (ctUint128) {
|
|
25
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
26
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
27
|
+
|
|
28
|
+
gtUint128 result = MpcCore.add(gtA, gtB);
|
|
29
|
+
|
|
30
|
+
ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
|
|
31
|
+
|
|
32
|
+
emit OperationPerformed("add128", user);
|
|
33
|
+
emit ValueOffBoarded128(user, ctResult);
|
|
34
|
+
|
|
35
|
+
return ctResult;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @dev Subtract two encrypted 128-bit values and return result encrypted for user
|
|
40
|
+
* @param a First encrypted value (itUint128)
|
|
41
|
+
* @param b Second encrypted value (itUint128)
|
|
42
|
+
* @param user Address to encrypt result for
|
|
43
|
+
* @return Result encrypted for the user (ctUint128)
|
|
44
|
+
*/
|
|
45
|
+
function sub128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
|
|
46
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
47
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
48
|
+
|
|
49
|
+
gtUint128 result = MpcCore.sub(gtA, gtB);
|
|
50
|
+
|
|
51
|
+
ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
|
|
52
|
+
|
|
53
|
+
emit OperationPerformed("sub128", user);
|
|
54
|
+
emit ValueOffBoarded128(user, ctResult);
|
|
55
|
+
|
|
56
|
+
return ctResult;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @dev Multiply two encrypted 128-bit values and return result encrypted for user
|
|
61
|
+
* @param a First encrypted value (itUint128)
|
|
62
|
+
* @param b Second encrypted value (itUint128)
|
|
63
|
+
* @param user Address to encrypt result for
|
|
64
|
+
* @return Result encrypted for the user (ctUint128)
|
|
65
|
+
*/
|
|
66
|
+
function mul128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
|
|
67
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
68
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
69
|
+
|
|
70
|
+
gtUint128 result = MpcCore.mul(gtA, gtB);
|
|
71
|
+
|
|
72
|
+
ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
|
|
73
|
+
|
|
74
|
+
emit OperationPerformed("mul128", user);
|
|
75
|
+
emit ValueOffBoarded128(user, ctResult);
|
|
76
|
+
|
|
77
|
+
return ctResult;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* @dev Divide two encrypted 128-bit values and return result encrypted for user
|
|
82
|
+
* @param a First encrypted value (itUint128)
|
|
83
|
+
* @param b Second encrypted value (itUint128)
|
|
84
|
+
* @param user Address to encrypt result for
|
|
85
|
+
* @return Result encrypted for the user (ctUint128)
|
|
86
|
+
*/
|
|
87
|
+
function div128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
|
|
88
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
89
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
90
|
+
|
|
91
|
+
gtUint128 result = MpcCore.div(gtA, gtB);
|
|
92
|
+
|
|
93
|
+
ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
|
|
94
|
+
|
|
95
|
+
emit OperationPerformed("div128", user);
|
|
96
|
+
emit ValueOffBoarded128(user, ctResult);
|
|
97
|
+
|
|
98
|
+
return ctResult;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* @dev Get remainder of division and return result encrypted for user
|
|
103
|
+
* @param a First encrypted value (itUint128)
|
|
104
|
+
* @param b Second encrypted value (itUint128)
|
|
105
|
+
* @param user Address to encrypt result for
|
|
106
|
+
* @return Result encrypted for the user (ctUint128)
|
|
107
|
+
*/
|
|
108
|
+
function rem128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
|
|
109
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
110
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
111
|
+
|
|
112
|
+
gtUint128 result = MpcCore.rem(gtA, gtB);
|
|
113
|
+
|
|
114
|
+
ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
|
|
115
|
+
|
|
116
|
+
emit OperationPerformed("rem128", user);
|
|
117
|
+
emit ValueOffBoarded128(user, ctResult);
|
|
118
|
+
|
|
119
|
+
return ctResult;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* @dev Perform AND operation on two encrypted 128-bit values
|
|
124
|
+
* @param a First encrypted value (itUint128)
|
|
125
|
+
* @param b Second encrypted value (itUint128)
|
|
126
|
+
* @param user Address to encrypt result for
|
|
127
|
+
* @return Result encrypted for the user (ctUint128)
|
|
128
|
+
*/
|
|
129
|
+
function and128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
|
|
130
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
131
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
132
|
+
|
|
133
|
+
gtUint128 result = MpcCore.and(gtA, gtB);
|
|
134
|
+
|
|
135
|
+
ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
|
|
136
|
+
|
|
137
|
+
emit OperationPerformed("and128", user);
|
|
138
|
+
emit ValueOffBoarded128(user, ctResult);
|
|
139
|
+
|
|
140
|
+
return ctResult;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* @dev Perform OR operation on two encrypted 128-bit values
|
|
145
|
+
* @param a First encrypted value (itUint128)
|
|
146
|
+
* @param b Second encrypted value (itUint128)
|
|
147
|
+
* @param user Address to encrypt result for
|
|
148
|
+
* @return Result encrypted for the user (ctUint128)
|
|
149
|
+
*/
|
|
150
|
+
function or128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
|
|
151
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
152
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
153
|
+
|
|
154
|
+
gtUint128 result = MpcCore.or(gtA, gtB);
|
|
155
|
+
|
|
156
|
+
ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
|
|
157
|
+
|
|
158
|
+
emit OperationPerformed("or128", user);
|
|
159
|
+
emit ValueOffBoarded128(user, ctResult);
|
|
160
|
+
|
|
161
|
+
return ctResult;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* @dev Perform XOR operation on two encrypted 128-bit values
|
|
166
|
+
* @param a First encrypted value (itUint128)
|
|
167
|
+
* @param b Second encrypted value (itUint128)
|
|
168
|
+
* @param user Address to encrypt result for
|
|
169
|
+
* @return Result encrypted for the user (ctUint128)
|
|
170
|
+
*/
|
|
171
|
+
function xor128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
|
|
172
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
173
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
174
|
+
|
|
175
|
+
gtUint128 result = MpcCore.xor(gtA, gtB);
|
|
176
|
+
|
|
177
|
+
ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
|
|
178
|
+
|
|
179
|
+
emit OperationPerformed("xor128", user);
|
|
180
|
+
emit ValueOffBoarded128(user, ctResult);
|
|
181
|
+
|
|
182
|
+
return ctResult;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* @dev Shift left operation on encrypted 128-bit value
|
|
187
|
+
* @param a Encrypted value to shift (itUint128)
|
|
188
|
+
* @param bits Number of bits to shift (plain, must be uint8)
|
|
189
|
+
* @param user Address to encrypt result for
|
|
190
|
+
* @return Result encrypted for the user (ctUint128)
|
|
191
|
+
*/
|
|
192
|
+
function shl128(itUint128 calldata a, uint8 bits, address user) public returns (ctUint128) {
|
|
193
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
194
|
+
|
|
195
|
+
gtUint128 result = MpcCore.shl(gtA, bits);
|
|
196
|
+
|
|
197
|
+
ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
|
|
198
|
+
|
|
199
|
+
emit OperationPerformed("shl128", user);
|
|
200
|
+
emit ValueOffBoarded128(user, ctResult);
|
|
201
|
+
|
|
202
|
+
return ctResult;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* @dev Shift right operation on encrypted 128-bit value
|
|
207
|
+
* @param a Encrypted value to shift (itUint128)
|
|
208
|
+
* @param bits Number of bits to shift (plain, must be uint8)
|
|
209
|
+
* @param user Address to encrypt result for
|
|
210
|
+
* @return Result encrypted for the user (ctUint128)
|
|
211
|
+
*/
|
|
212
|
+
function shr128(itUint128 calldata a, uint8 bits, address user) public returns (ctUint128) {
|
|
213
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
214
|
+
|
|
215
|
+
gtUint128 result = MpcCore.shr(gtA, bits);
|
|
216
|
+
|
|
217
|
+
ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
|
|
218
|
+
|
|
219
|
+
emit OperationPerformed("shr128", user);
|
|
220
|
+
emit ValueOffBoarded128(user, ctResult);
|
|
221
|
+
|
|
222
|
+
return ctResult;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* @dev Get minimum of two encrypted values
|
|
227
|
+
* @param a First encrypted value (itUint128)
|
|
228
|
+
* @param b Second encrypted value (itUint128)
|
|
229
|
+
* @param user Address to encrypt result for
|
|
230
|
+
* @return Result encrypted for the user (ctUint128)
|
|
231
|
+
*/
|
|
232
|
+
function min128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
|
|
233
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
234
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
235
|
+
|
|
236
|
+
gtUint128 result = MpcCore.min(gtA, gtB);
|
|
237
|
+
|
|
238
|
+
ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
|
|
239
|
+
|
|
240
|
+
emit OperationPerformed("min128", user);
|
|
241
|
+
emit ValueOffBoarded128(user, ctResult);
|
|
242
|
+
|
|
243
|
+
return ctResult;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* @dev Get maximum of two encrypted values
|
|
248
|
+
* @param a First encrypted value (itUint128)
|
|
249
|
+
* @param b Second encrypted value (itUint128)
|
|
250
|
+
* @param user Address to encrypt result for
|
|
251
|
+
* @return Result encrypted for the user (ctUint128)
|
|
252
|
+
*/
|
|
253
|
+
function max128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
|
|
254
|
+
gtUint128 gtA = MpcCore.validateCiphertext(a);
|
|
255
|
+
gtUint128 gtB = MpcCore.validateCiphertext(b);
|
|
256
|
+
|
|
257
|
+
gtUint128 result = MpcCore.max(gtA, gtB);
|
|
258
|
+
|
|
259
|
+
ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
|
|
260
|
+
|
|
261
|
+
emit OperationPerformed("max128", user);
|
|
262
|
+
emit ValueOffBoarded128(user, ctResult);
|
|
263
|
+
|
|
264
|
+
return ctResult;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|