@coti-io/coti-contracts 1.1.0 → 1.2.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.
Files changed (265) hide show
  1. package/.github/workflows/npm-publish.yml +18 -14
  2. package/README.md +3 -1
  3. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperser.sol +452 -0
  4. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1.sol +490 -0
  5. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.sol +432 -0
  6. package/contracts/disperse/disperseToken/MintDisperser.sol +120 -0
  7. package/contracts/disperse/disperseToken/TokenDisperser.sol +139 -0
  8. package/contracts/mocks/token/ERC20Mock.sol +19 -0
  9. package/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.sol +18 -0
  10. package/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.sol +13 -0
  11. package/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.sol +44 -0
  12. package/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.sol +23 -0
  13. package/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.sol +29 -0
  14. package/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.sol +9 -4
  15. package/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol +39 -0
  16. package/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.sol +29 -0
  17. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.sol +18 -0
  18. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.sol +12 -0
  19. package/contracts/mocks/utils/mpc/Arithmetic128TestsContract.sol +123 -0
  20. package/contracts/mocks/utils/mpc/Arithmetic256TestsContract.sol +122 -0
  21. package/contracts/mocks/utils/mpc/Bitwise128TestsContract.sol +65 -0
  22. package/contracts/mocks/utils/mpc/Bitwise256TestsContract.sol +65 -0
  23. package/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.sol +64 -0
  24. package/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.sol +64 -0
  25. package/contracts/mocks/utils/mpc/Comparison128TestsContract.sol +98 -0
  26. package/contracts/mocks/utils/mpc/Comparison256TestsContract.sol +98 -0
  27. package/contracts/mocks/utils/mpc/MinMax128TestsContract.sol +44 -0
  28. package/contracts/mocks/utils/mpc/MinMax256TestsContract.sol +44 -0
  29. package/contracts/mocks/utils/mpc/MinimalImplementation.sol +55 -0
  30. package/contracts/mocks/utils/mpc/MinimalProxy.sol +27 -0
  31. package/contracts/mocks/utils/mpc/MpcOperations128TestContract.sol +267 -0
  32. package/contracts/mocks/utils/mpc/MpcOperationsTestContract.sol +334 -0
  33. package/contracts/mocks/utils/mpc/Mux128TestsContract.sol +24 -0
  34. package/contracts/mocks/utils/mpc/Mux256TestsContract.sol +24 -0
  35. package/contracts/mocks/utils/mpc/OnBoard128TestsContract.sol +93 -0
  36. package/contracts/mocks/utils/mpc/OnBoard256TestsContract.sol +116 -0
  37. package/contracts/mocks/utils/mpc/PrivacyImplementationV1.sol +157 -0
  38. package/contracts/mocks/utils/mpc/PrivacyImplementationV2.sol +133 -0
  39. package/contracts/mocks/utils/mpc/PrivacyProxy.sol +137 -0
  40. package/contracts/mocks/utils/mpc/Random128TestsContract.sol +32 -0
  41. package/contracts/mocks/utils/mpc/Random256TestsContract.sol +32 -0
  42. package/contracts/mocks/utils/mpc/Shift128TestsContract.sol +36 -0
  43. package/contracts/mocks/utils/mpc/Shift256TestsContract.sol +36 -0
  44. package/contracts/mocks/utils/mpc/Transfer128TestsContract.sol +29 -0
  45. package/contracts/mocks/utils/mpc/Transfer256TestsContract.sol +29 -0
  46. package/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.sol +32 -0
  47. package/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.sol +32 -0
  48. package/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.sol +59 -0
  49. package/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.sol +63 -0
  50. package/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.sol +99 -0
  51. package/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.sol +7 -6
  52. package/contracts/node/CotiNodeRewards.sol +199 -0
  53. package/contracts/node/SoulboundNodeNFT.sol +519 -0
  54. package/contracts/privacyBridge/PrivacyBridge.sol +318 -0
  55. package/contracts/privacyBridge/PrivacyBridgeCotiNative.sol +268 -0
  56. package/contracts/privacyBridge/PrivacyBridgeERC20.sol +251 -0
  57. package/contracts/privacyBridge/PrivacyBridgeUSDCe.sol +16 -0
  58. package/contracts/privacyBridge/PrivacyBridgeUSDT.sol +17 -0
  59. package/contracts/privacyBridge/PrivacyBridgeWADA.sol +17 -0
  60. package/contracts/privacyBridge/PrivacyBridgeWBTC.sol +17 -0
  61. package/contracts/privacyBridge/PrivacyBridgeWETH.sol +17 -0
  62. package/contracts/privacyBridge/PrivacyBridgegCoti.sol +17 -0
  63. package/contracts/token/PrivateERC20/IPrivateERC20.sol +273 -40
  64. package/contracts/token/PrivateERC20/ITokenReceiver.sol +17 -0
  65. package/contracts/token/PrivateERC20/ITokenReceiverEncrypted.sol +20 -0
  66. package/contracts/token/PrivateERC20/PrivateERC20.sol +861 -152
  67. package/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.sol +17 -0
  68. package/contracts/token/PrivateERC20/tokens/PrivateCOTI.sol +13 -0
  69. package/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.sol +17 -0
  70. package/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.sol +17 -0
  71. package/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.sol +17 -0
  72. package/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.sol +17 -0
  73. package/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.sol +13 -0
  74. package/contracts/utils/mpc/MpcCore.sol +10780 -4962
  75. package/contracts/utils/mpc/MpcInterface.sol +7 -2
  76. package/hardhat/gasPriceBump.ts +60 -0
  77. package/hardhat.config.ts +60 -12
  78. package/package.json +21 -3
  79. package/scripts/deploySoulboundNodeNFT.ts +57 -0
  80. package/test/token/PrivateERC20/PrivacyBridge.fees.test.ts +327 -0
  81. package/test/token/PrivateERC20/PrivateERC20.test.ts +1109 -268
  82. package/test/utils/mpc/Bitwise128.test.ts +92 -0
  83. package/test/utils/mpc/Bitwise256.test.ts +101 -0
  84. package/test/utils/mpc/BuildInputText128.test.ts +398 -0
  85. package/test/utils/mpc/CheckedArithmetic128.test.ts +45 -0
  86. package/test/utils/mpc/CheckedArithmetic256.test.ts +45 -0
  87. package/test/utils/mpc/Comparison128.test.ts +48 -0
  88. package/test/utils/mpc/Comparison256.test.ts +48 -0
  89. package/test/utils/mpc/InvalidCiphertext.test.ts +179 -0
  90. package/test/utils/mpc/InvalidCiphertext128.test.ts +179 -0
  91. package/test/utils/mpc/InvalidCiphertext256.test.ts +201 -0
  92. package/test/utils/mpc/InvalidTransfer128.test.ts +166 -0
  93. package/test/utils/mpc/InvalidTransfer256.test.ts +158 -0
  94. package/test/utils/mpc/MinMax128.test.ts +44 -0
  95. package/test/utils/mpc/MinMax256.test.ts +44 -0
  96. package/test/utils/mpc/MinimalProxyDemo.test.ts +280 -0
  97. package/test/utils/mpc/MpcOperations.test.ts +589 -0
  98. package/test/utils/mpc/MpcOperations128.test.ts +632 -0
  99. package/test/utils/mpc/Mux128.test.ts +41 -0
  100. package/test/utils/mpc/Mux256.test.ts +41 -0
  101. package/test/utils/mpc/NegativeCases.test.ts +478 -0
  102. package/test/utils/mpc/NegativeCases128.test.ts +237 -0
  103. package/test/utils/mpc/NegativeCases256.test.ts +236 -0
  104. package/test/utils/mpc/OnBoard128.test.ts +90 -0
  105. package/test/utils/mpc/OnBoard256.test.ts +114 -0
  106. package/test/utils/mpc/Precompile128.test.ts +51 -0
  107. package/test/utils/mpc/Precompile256.test.ts +115 -0
  108. package/test/utils/mpc/ProxyValidation.test.ts +199 -0
  109. package/test/utils/mpc/Random128.test.ts +47 -0
  110. package/test/utils/mpc/Random256.test.ts +47 -0
  111. package/test/utils/mpc/Shift128.test.ts +41 -0
  112. package/test/utils/mpc/Shift256.test.ts +41 -0
  113. package/test/utils/mpc/Transfer128.test.ts +46 -0
  114. package/test/utils/mpc/Transfer256.test.ts +46 -0
  115. package/test/utils/mpc/TransferWithAllowance128.test.ts +48 -0
  116. package/test/utils/mpc/TransferWithAllowance256.test.ts +48 -0
  117. package/test/utils/mpc/UpgradeablePrivacyProxy.test.ts +307 -0
  118. package/test/utils/mpc/ValidateCiphertext.test.ts +221 -0
  119. package/test/utils/mpc/ValidateCiphertext256.test.ts +161 -0
  120. package/test/utils/mpc/ValidateCiphertext256Decryption.test.ts +383 -0
  121. package/test/utils/mpc/WalletEncryptionFailures.test.ts +494 -0
  122. package/test/utils/privateErc20Helpers.ts +97 -0
  123. package/typechain-types/@openzeppelin/contracts/access/Ownable.ts +153 -0
  124. package/typechain-types/@openzeppelin/contracts/access/index.ts +4 -0
  125. package/typechain-types/@openzeppelin/contracts/index.ts +2 -0
  126. package/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts +262 -0
  127. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.ts +143 -0
  128. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
  129. package/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts +6 -0
  130. package/typechain-types/@openzeppelin/contracts/token/index.ts +2 -0
  131. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperser.ts +679 -0
  132. package/typechain-types/contracts/disperse/coinByRatio/index.ts +4 -0
  133. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20.ts +97 -0
  134. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser.ts +206 -0
  135. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +5 -0
  136. package/typechain-types/contracts/disperse/disperseToken/TokenDisperser.ts +191 -0
  137. package/typechain-types/contracts/disperse/disperseToken/index.ts +6 -0
  138. package/typechain-types/contracts/disperse/index.ts +7 -0
  139. package/typechain-types/contracts/index.ts +2 -0
  140. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.ts +77 -60
  141. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic128TestsContract.ts +311 -0
  142. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic256TestsContract.ts +311 -0
  143. package/typechain-types/contracts/mocks/utils/mpc/Bitwise128TestsContract.ts +179 -0
  144. package/typechain-types/contracts/mocks/utils/mpc/Bitwise256TestsContract.ts +179 -0
  145. package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.ts +206 -0
  146. package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.ts +206 -0
  147. package/typechain-types/contracts/mocks/utils/mpc/Comparison128TestsContract.ts +278 -0
  148. package/typechain-types/contracts/mocks/utils/mpc/Comparison256TestsContract.ts +278 -0
  149. package/typechain-types/contracts/mocks/utils/mpc/MinMax128TestsContract.ts +142 -0
  150. package/typechain-types/contracts/mocks/utils/mpc/MinMax256TestsContract.ts +142 -0
  151. package/typechain-types/contracts/mocks/utils/mpc/MinimalImplementation.ts +259 -0
  152. package/typechain-types/contracts/mocks/utils/mpc/MinimalProxy.ts +90 -0
  153. package/typechain-types/contracts/mocks/utils/mpc/MpcOperations128TestContract.ts +388 -0
  154. package/typechain-types/contracts/mocks/utils/mpc/MpcOperationsTestContract.ts +455 -0
  155. package/typechain-types/contracts/mocks/utils/mpc/Mux128TestsContract.ts +109 -0
  156. package/typechain-types/contracts/mocks/utils/mpc/Mux256TestsContract.ts +109 -0
  157. package/typechain-types/contracts/mocks/utils/mpc/OnBoard128TestsContract.ts +166 -0
  158. package/typechain-types/contracts/mocks/utils/mpc/OnBoard256TestsContract.ts +194 -0
  159. package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV1.ts +385 -0
  160. package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV2.ts +441 -0
  161. package/typechain-types/contracts/mocks/utils/mpc/PrivacyProxy.ts +201 -0
  162. package/typechain-types/contracts/mocks/utils/mpc/Random128TestsContract.ts +131 -0
  163. package/typechain-types/contracts/mocks/utils/mpc/Random256TestsContract.ts +131 -0
  164. package/typechain-types/contracts/mocks/utils/mpc/Shift128TestsContract.ts +142 -0
  165. package/typechain-types/contracts/mocks/utils/mpc/Shift256TestsContract.ts +142 -0
  166. package/typechain-types/contracts/mocks/utils/mpc/Transfer128TestsContract.ts +109 -0
  167. package/typechain-types/contracts/mocks/utils/mpc/Transfer256TestsContract.ts +109 -0
  168. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.ts +128 -0
  169. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.ts +128 -0
  170. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.ts +198 -0
  171. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.ts +182 -0
  172. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.ts +257 -0
  173. package/typechain-types/contracts/mocks/utils/mpc/index.ts +32 -8
  174. package/typechain-types/contracts/token/PrivateERC20/IPrivateERC20.ts +77 -60
  175. package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +77 -60
  176. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +111 -10
  177. package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +74 -0
  178. package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +4 -0
  179. package/typechain-types/factories/@openzeppelin/contracts/index.ts +1 -0
  180. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +205 -0
  181. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit__factory.ts +100 -0
  182. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
  183. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts +5 -0
  184. package/typechain-types/factories/@openzeppelin/contracts/token/index.ts +1 -0
  185. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperser__factory.ts +759 -0
  186. package/typechain-types/factories/contracts/disperse/coinByRatio/index.ts +4 -0
  187. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20__factory.ts +43 -0
  188. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser__factory.ts +185 -0
  189. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +5 -0
  190. package/typechain-types/factories/contracts/disperse/disperseToken/TokenDisperser__factory.ts +198 -0
  191. package/typechain-types/factories/contracts/disperse/disperseToken/index.ts +5 -0
  192. package/typechain-types/factories/contracts/disperse/index.ts +5 -0
  193. package/typechain-types/factories/contracts/index.ts +1 -0
  194. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  195. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +179 -47
  196. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128TestsContract__factory.ts +330 -0
  197. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256TestsContract__factory.ts +330 -0
  198. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
  199. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128TestsContract__factory.ts +184 -0
  200. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256TestsContract__factory.ts +184 -0
  201. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
  202. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract__factory.ts +203 -0
  203. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract__factory.ts +203 -0
  204. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/CheckedArithmeticWithOverflowBitTestsContract__factory.ts +1 -1
  205. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128TestsContract__factory.ts +295 -0
  206. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  207. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256TestsContract__factory.ts +295 -0
  208. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
  209. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax128TestsContract__factory.ts +147 -0
  210. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax256TestsContract__factory.ts +147 -0
  211. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  212. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalImplementation__factory.ts +263 -0
  213. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalProxy__factory.ts +104 -0
  214. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  215. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  216. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperations128TestContract__factory.ts +723 -0
  217. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperationsTestContract__factory.ts +1410 -0
  218. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux128TestsContract__factory.ts +115 -0
  219. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux256TestsContract__factory.ts +115 -0
  220. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
  221. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard128TestsContract__factory.ts +175 -0
  222. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard256TestsContract__factory.ts +205 -0
  223. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV1__factory.ts +521 -0
  224. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV2__factory.ts +648 -0
  225. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyProxy__factory.ts +179 -0
  226. package/typechain-types/factories/contracts/mocks/utils/mpc/Random128TestsContract__factory.ts +131 -0
  227. package/typechain-types/factories/contracts/mocks/utils/mpc/Random256TestsContract__factory.ts +131 -0
  228. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift128TestsContract__factory.ts +147 -0
  229. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift256TestsContract__factory.ts +147 -0
  230. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  231. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  232. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer128TestsContract__factory.ts +135 -0
  233. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer256TestsContract__factory.ts +135 -0
  234. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  235. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  236. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract__factory.ts +154 -0
  237. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract__factory.ts +154 -0
  238. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
  239. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
  240. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
  241. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
  242. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
  243. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
  244. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract__factory.ts +190 -0
  245. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract__factory.ts +210 -0
  246. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract__factory.ts +260 -0
  247. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +32 -8
  248. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +7 -7
  249. package/typechain-types/factories/contracts/token/PrivateERC20/IPrivateERC20__factory.ts +174 -42
  250. package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +174 -42
  251. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +126 -0
  252. package/typechain-types/hardhat.d.ts +638 -80
  253. package/typechain-types/index.ts +78 -16
  254. package/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract.sol +0 -260
  255. package/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract.sol +0 -264
  256. package/contracts/mocks/utils/mpc/Bitwise128BitTestsContract.sol +0 -91
  257. package/contracts/mocks/utils/mpc/Bitwise256BitTestsContract.sol +0 -91
  258. package/contracts/mocks/utils/mpc/Comparison128BitTestsContract.sol +0 -158
  259. package/contracts/mocks/utils/mpc/Comparison256BitTestsContract.sol +0 -158
  260. package/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.sol +0 -185
  261. package/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.sol +0 -190
  262. package/contracts/mocks/utils/mpc/README.md +0 -486
  263. package/test/utils/mpc/Unsigned128BitIntegers.test.ts +0 -945
  264. package/test/utils/mpc/Unsigned256BitIntegers.test.ts +0 -1124
  265. package/test/utils/mpc/helpers.ts +0 -77
@@ -1,264 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
3
-
4
- import "../../../utils/mpc/MpcCore.sol";
5
-
6
- contract Arithmetic256BitTestsContract {
7
-
8
- enum PrivateInput {
9
- BOTH,
10
- LHS,
11
- RHS
12
- }
13
-
14
- bool[] public overflows;
15
- bool[] public overflowsLHS;
16
- bool[] public overflowsRHS;
17
- uint256[] public numbers2;
18
- uint256[] public numbersLHS2;
19
- uint256[] public numbersRHS2;
20
-
21
- function addTest(uint256[] calldata a, uint256[] calldata b) public {
22
- require(a.length == b.length, "Input length mismatch");
23
-
24
- _resetNumbers2(a.length);
25
-
26
- for (uint256 i = 0; i < a.length; ++i) {
27
- gtUint256 memory gtA = MpcCore.setPublic256(a[i]);
28
- gtUint256 memory gtB = MpcCore.setPublic256(b[i]);
29
-
30
- numbers2[i] = MpcCore.decrypt(MpcCore.add(gtA, gtB));
31
-
32
- assert(numbers2[i] == MpcCore.decrypt(MpcCore.add(a[i], gtB)));
33
- assert(numbers2[i] == MpcCore.decrypt(MpcCore.add(gtA, b[i])));
34
- }
35
- }
36
-
37
- function checkedAddTest(uint256 a, uint256 b) public {
38
- _resetNumbers2(1);
39
-
40
- gtUint256 memory gtA = MpcCore.setPublic256(a);
41
- gtUint256 memory gtB = MpcCore.setPublic256(b);
42
-
43
- numbers2[0] = MpcCore.decrypt(MpcCore.checkedAdd(gtA, gtB));
44
-
45
- assert(numbers2[0] == MpcCore.decrypt(MpcCore.checkedAdd(a, gtB)));
46
- assert(numbers2[0] == MpcCore.decrypt(MpcCore.checkedAdd(gtA, b)));
47
- }
48
-
49
- function checkedAddWithOverflowBitTest(uint256[] calldata a, uint256[] calldata b) public {
50
- require(a.length == b.length, "Input length mismatch");
51
-
52
- _resetOverflows(a.length);
53
- _resetOverflowsLHS(a.length);
54
- _resetOverflowsRHS(a.length);
55
- _resetNumbers2(a.length);
56
- _resetNumbersLHS2(a.length);
57
- _resetNumbersRHS2(a.length);
58
-
59
- gtBool bit;
60
- gtBool bitLHS;
61
- gtBool bitRHS;
62
- gtUint256 memory result;
63
- gtUint256 memory resultLHS;
64
- gtUint256 memory resultRHS;
65
-
66
- for (uint256 i = 0; i < a.length; ++i) {
67
- gtUint256 memory gtA = MpcCore.setPublic256(a[i]);
68
- gtUint256 memory gtB = MpcCore.setPublic256(b[i]);
69
-
70
- (bit, result) = MpcCore.checkedAddWithOverflowBit(gtA, gtB);
71
- (bitLHS, resultLHS) = MpcCore.checkedAddWithOverflowBit(a[i], gtB);
72
- (bitRHS, resultRHS) = MpcCore.checkedAddWithOverflowBit(gtA, b[i]);
73
-
74
- overflows[i] = MpcCore.decrypt(bit);
75
- overflowsLHS[i] = MpcCore.decrypt(bitLHS);
76
- overflowsRHS[i] = MpcCore.decrypt(bitRHS);
77
- numbers2[i] = MpcCore.decrypt(result);
78
- numbersLHS2[i] = MpcCore.decrypt(resultLHS);
79
- numbersRHS2[i] = MpcCore.decrypt(resultRHS);
80
- }
81
- }
82
-
83
- function subTest(uint256[] calldata a, uint256[] calldata b) public {
84
- require(a.length == b.length, "Input length mismatch");
85
-
86
- _resetNumbers2(a.length);
87
-
88
- for (uint256 i = 0; i < a.length; ++i) {
89
- gtUint256 memory gtA = MpcCore.setPublic256(a[i]);
90
- gtUint256 memory gtB = MpcCore.setPublic256(b[i]);
91
-
92
- numbers2[i] = MpcCore.decrypt(MpcCore.sub(gtA, gtB));
93
-
94
- assert(numbers2[i] == MpcCore.decrypt(MpcCore.sub(a[i], gtB)));
95
- assert(numbers2[i] == MpcCore.decrypt(MpcCore.sub(gtA, b[i])));
96
- }
97
- }
98
-
99
- function checkedSubTest(uint256 a, uint256 b) public {
100
- _resetNumbers2(1);
101
-
102
- gtUint256 memory gtA = MpcCore.setPublic256(a);
103
- gtUint256 memory gtB = MpcCore.setPublic256(b);
104
-
105
- numbers2[0] = MpcCore.decrypt(MpcCore.checkedSub(gtA, gtB));
106
-
107
- assert(numbers2[0] == MpcCore.decrypt(MpcCore.checkedSub(a, gtB)));
108
- assert(numbers2[0] == MpcCore.decrypt(MpcCore.checkedSub(gtA, b)));
109
- }
110
-
111
- function checkedSubWithOverflowBitTest(uint256[] calldata a, uint256[] calldata b) public {
112
- require(a.length == b.length, "Input length mismatch");
113
-
114
- _resetOverflows(a.length);
115
- _resetOverflowsLHS(a.length);
116
- _resetOverflowsRHS(a.length);
117
- _resetNumbers2(a.length);
118
- _resetNumbersLHS2(a.length);
119
- _resetNumbersRHS2(a.length);
120
-
121
- gtBool bit;
122
- gtBool bitLHS;
123
- gtBool bitRHS;
124
- gtUint256 memory result;
125
- gtUint256 memory resultLHS;
126
- gtUint256 memory resultRHS;
127
-
128
- for (uint256 i = 0; i < a.length; ++i) {
129
- gtUint256 memory gtA = MpcCore.setPublic256(a[i]);
130
- gtUint256 memory gtB = MpcCore.setPublic256(b[i]);
131
-
132
- (bit, result) = MpcCore.checkedSubWithOverflowBit(gtA, gtB);
133
- (bitLHS, resultLHS) = MpcCore.checkedSubWithOverflowBit(a[i], gtB);
134
- (bitRHS, resultRHS) = MpcCore.checkedSubWithOverflowBit(gtA, b[i]);
135
-
136
- overflows[i] = MpcCore.decrypt(bit);
137
- overflowsLHS[i] = MpcCore.decrypt(bitLHS);
138
- overflowsRHS[i] = MpcCore.decrypt(bitRHS);
139
- numbers2[i] = MpcCore.decrypt(result);
140
- numbersLHS2[i] = MpcCore.decrypt(resultLHS);
141
- numbersRHS2[i] = MpcCore.decrypt(resultRHS);
142
- }
143
- }
144
-
145
- function mulTest(uint256[] calldata a, uint256[] calldata b, PrivateInput privateInput) public {
146
- require(a.length == b.length, "Input length mismatch");
147
-
148
- _resetNumbers2(a.length);
149
-
150
- for (uint256 i = 0; i < a.length; ++i) {
151
- gtUint256 memory gtA = MpcCore.setPublic256(a[i]);
152
- gtUint256 memory gtB = MpcCore.setPublic256(b[i]);
153
-
154
- if (privateInput == PrivateInput.BOTH) {
155
- numbers2[i] = MpcCore.decrypt(MpcCore.mul(gtA, gtB));
156
- } else if (privateInput == PrivateInput.LHS) {
157
- numbers2[i] = MpcCore.decrypt(MpcCore.mul(gtA, b[i]));
158
- } else if (privateInput == PrivateInput.RHS) {
159
- numbers2[i] = MpcCore.decrypt(MpcCore.mul(a[i], gtB));
160
- }
161
- }
162
- }
163
-
164
- function checkedMulTest(uint256 a, uint256 b, PrivateInput privateInput) public {
165
- _resetNumbers2(1);
166
-
167
- gtUint256 memory gtA = MpcCore.setPublic256(a);
168
- gtUint256 memory gtB = MpcCore.setPublic256(b);
169
-
170
- if (privateInput == PrivateInput.BOTH) {
171
- numbers2[0] = MpcCore.decrypt(MpcCore.checkedMul(gtA, gtB));
172
- } else if (privateInput == PrivateInput.LHS) {
173
- numbers2[0] = MpcCore.decrypt(MpcCore.checkedMul(gtA, b));
174
- } else if (privateInput == PrivateInput.RHS) {
175
- numbers2[0] = MpcCore.decrypt(MpcCore.checkedMul(a, gtB));
176
- }
177
- }
178
-
179
- function checkedMulWithOverflowBitTest(uint256[] calldata a, uint256[] calldata b, PrivateInput privateInput) public {
180
- require(a.length == b.length, "Input length mismatch");
181
-
182
- _resetOverflows(a.length);
183
- _resetNumbers2(a.length);
184
-
185
- gtBool bit;
186
- gtUint256 memory result;
187
-
188
- for (uint256 i = 0; i < a.length; ++i) {
189
- gtUint256 memory gtA = MpcCore.setPublic256(a[i]);
190
- gtUint256 memory gtB = MpcCore.setPublic256(b[i]);
191
-
192
- if (privateInput == PrivateInput.BOTH) {
193
- (bit, result) = MpcCore.checkedMulWithOverflowBit(gtA, gtB);
194
- } else if (privateInput == PrivateInput.LHS) {
195
- (bit, result) = MpcCore.checkedMulWithOverflowBit(a[i], gtB);
196
- } else if (privateInput == PrivateInput.RHS) {
197
- (bit, result) = MpcCore.checkedMulWithOverflowBit(gtA, b[i]);
198
- }
199
-
200
- overflows[i] = MpcCore.decrypt(bit);
201
- numbers2[i] = MpcCore.decrypt(result);
202
- }
203
- }
204
-
205
- function _resetOverflows(uint256 length) internal {
206
- // Reset the overflows array
207
- delete overflows;
208
-
209
- // Resize the overflows array to match input length
210
- for(uint i = 0; i < length; i++) {
211
- overflows.push(false);
212
- }
213
- }
214
-
215
- function _resetOverflowsLHS(uint256 length) internal {
216
- // Reset the overflows array
217
- delete overflowsLHS;
218
-
219
- // Resize the overflows array to match input length
220
- for(uint i = 0; i < length; i++) {
221
- overflowsLHS.push(false);
222
- }
223
- }
224
-
225
- function _resetOverflowsRHS(uint256 length) internal {
226
- // Reset the overflows array
227
- delete overflowsRHS;
228
-
229
- // Resize the overflows array to match input length
230
- for(uint i = 0; i < length; i++) {
231
- overflowsRHS.push(false);
232
- }
233
- }
234
-
235
- function _resetNumbers2(uint256 length) internal {
236
- // Reset the numbers array
237
- delete numbers2;
238
-
239
- // Resize the numbers array to match input length
240
- for(uint i = 0; i < length; i++) {
241
- numbers2.push(0);
242
- }
243
- }
244
-
245
- function _resetNumbersLHS2(uint256 length) internal {
246
- // Reset the numbers array
247
- delete numbersLHS2;
248
-
249
- // Resize the numbers array to match input length
250
- for(uint i = 0; i < length; i++) {
251
- numbersLHS2.push(0);
252
- }
253
- }
254
-
255
- function _resetNumbersRHS2(uint256 length) internal {
256
- // Reset the numbers array
257
- delete numbersRHS2;
258
-
259
- // Resize the numbers array to match input length
260
- for(uint i = 0; i < length; i++) {
261
- numbersRHS2.push(0);
262
- }
263
- }
264
- }
@@ -1,91 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
3
-
4
- import "../../../utils/mpc/MpcCore.sol";
5
-
6
- contract Bitwise128BitTestsContract {
7
-
8
- uint128[] public numbers;
9
-
10
- function andTest(uint128[] calldata a, uint128[] calldata b) public {
11
- require(a.length == b.length, "Input length mismatch");
12
-
13
- _resetNumbers(a.length);
14
-
15
- for (uint256 i = 0; i < a.length; ++i) {
16
- gtUint128 memory gtA = MpcCore.setPublic128(a[i]);
17
- gtUint128 memory gtB = MpcCore.setPublic128(b[i]);
18
-
19
- numbers[i] = MpcCore.decrypt(MpcCore.and(gtA, gtB));
20
-
21
- assert(numbers[i] == MpcCore.decrypt(MpcCore.and(a[i], gtB)));
22
- assert(numbers[i] == MpcCore.decrypt(MpcCore.and(gtA, b[i])));
23
- }
24
- }
25
-
26
- function orTest(uint128[] calldata a, uint128[] calldata b) public {
27
- require(a.length == b.length, "Input length mismatch");
28
-
29
- _resetNumbers(a.length);
30
-
31
- for (uint256 i = 0; i < a.length; ++i) {
32
- gtUint128 memory gtA = MpcCore.setPublic128(a[i]);
33
- gtUint128 memory gtB = MpcCore.setPublic128(b[i]);
34
-
35
- numbers[i] = MpcCore.decrypt(MpcCore.or(gtA, gtB));
36
-
37
- assert(numbers[i] == MpcCore.decrypt(MpcCore.or(a[i], gtB)));
38
- assert(numbers[i] == MpcCore.decrypt(MpcCore.or(gtA, b[i])));
39
- }
40
- }
41
-
42
- function xorTest(uint128[] calldata a, uint128[] calldata b) public {
43
- require(a.length == b.length, "Input length mismatch");
44
-
45
- _resetNumbers(a.length);
46
-
47
- for (uint256 i = 0; i < a.length; ++i) {
48
- gtUint128 memory gtA = MpcCore.setPublic128(a[i]);
49
- gtUint128 memory gtB = MpcCore.setPublic128(b[i]);
50
-
51
- numbers[i] = MpcCore.decrypt(MpcCore.xor(gtA, gtB));
52
-
53
- assert(numbers[i] == MpcCore.decrypt(MpcCore.xor(a[i], gtB)));
54
- assert(numbers[i] == MpcCore.decrypt(MpcCore.xor(gtA, b[i])));
55
- }
56
- }
57
-
58
- function shlTest(uint128[] calldata a, uint8[] calldata b) public {
59
- require(a.length == b.length, "Input length mismatch");
60
-
61
- _resetNumbers(a.length);
62
-
63
- for (uint256 i = 0; i < a.length; ++i) {
64
- gtUint128 memory gtA = MpcCore.setPublic128(a[i]);
65
-
66
- numbers[i] = MpcCore.decrypt(MpcCore.shl(gtA, b[i]));
67
- }
68
- }
69
-
70
- function shrTest(uint128[] calldata a, uint8[] calldata b) public {
71
- require(a.length == b.length, "Input length mismatch");
72
-
73
- _resetNumbers(a.length);
74
-
75
- for (uint256 i = 0; i < a.length; ++i) {
76
- gtUint128 memory gtA = MpcCore.setPublic128(a[i]);
77
-
78
- numbers[i] = MpcCore.decrypt(MpcCore.shr(gtA, b[i]));
79
- }
80
- }
81
-
82
- function _resetNumbers(uint256 length) internal {
83
- // Reset the numbers array
84
- delete numbers;
85
-
86
- // Resize the numbers array to match input length
87
- for(uint i = 0; i < length; i++) {
88
- numbers.push(0);
89
- }
90
- }
91
- }
@@ -1,91 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
3
-
4
- import "../../../utils/mpc/MpcCore.sol";
5
-
6
- contract Bitwise256BitTestsContract {
7
-
8
- uint256[] public numbers2;
9
-
10
- function andTest(uint256[] calldata a, uint256[] calldata b) public {
11
- require(a.length == b.length, "Input length mismatch");
12
-
13
- _resetNumbers2(a.length);
14
-
15
- for (uint256 i = 0; i < a.length; ++i) {
16
- gtUint256 memory gtA = MpcCore.setPublic256(a[i]);
17
- gtUint256 memory gtB = MpcCore.setPublic256(b[i]);
18
-
19
- numbers2[i] = MpcCore.decrypt(MpcCore.and(gtA, gtB));
20
-
21
- assert(numbers2[i] == MpcCore.decrypt(MpcCore.and(a[i], gtB)));
22
- assert(numbers2[i] == MpcCore.decrypt(MpcCore.and(gtA, b[i])));
23
- }
24
- }
25
-
26
- function orTest(uint256[] calldata a, uint256[] calldata b) public {
27
- require(a.length == b.length, "Input length mismatch");
28
-
29
- _resetNumbers2(a.length);
30
-
31
- for (uint256 i = 0; i < a.length; ++i) {
32
- gtUint256 memory gtA = MpcCore.setPublic256(a[i]);
33
- gtUint256 memory gtB = MpcCore.setPublic256(b[i]);
34
-
35
- numbers2[i] = MpcCore.decrypt(MpcCore.or(gtA, gtB));
36
-
37
- assert(numbers2[i] == MpcCore.decrypt(MpcCore.or(a[i], gtB)));
38
- assert(numbers2[i] == MpcCore.decrypt(MpcCore.or(gtA, b[i])));
39
- }
40
- }
41
-
42
- function xorTest(uint256[] calldata a, uint256[] calldata b) public {
43
- require(a.length == b.length, "Input length mismatch");
44
-
45
- _resetNumbers2(a.length);
46
-
47
- for (uint256 i = 0; i < a.length; ++i) {
48
- gtUint256 memory gtA = MpcCore.setPublic256(a[i]);
49
- gtUint256 memory gtB = MpcCore.setPublic256(b[i]);
50
-
51
- numbers2[i] = MpcCore.decrypt(MpcCore.xor(gtA, gtB));
52
-
53
- assert(numbers2[i] == MpcCore.decrypt(MpcCore.xor(a[i], gtB)));
54
- assert(numbers2[i] == MpcCore.decrypt(MpcCore.xor(gtA, b[i])));
55
- }
56
- }
57
-
58
- function shlTest(uint256[] calldata a, uint8[] calldata b) public {
59
- require(a.length == b.length, "Input length mismatch");
60
-
61
- _resetNumbers2(a.length);
62
-
63
- for (uint256 i = 0; i < a.length; ++i) {
64
- gtUint256 memory gtA = MpcCore.setPublic256(a[i]);
65
-
66
- numbers2[i] = MpcCore.decrypt(MpcCore.shl(gtA, b[i]));
67
- }
68
- }
69
-
70
- function shrTest(uint256[] calldata a, uint8[] calldata b) public {
71
- require(a.length == b.length, "Input length mismatch");
72
-
73
- _resetNumbers2(a.length);
74
-
75
- for (uint256 i = 0; i < a.length; ++i) {
76
- gtUint256 memory gtA = MpcCore.setPublic256(a[i]);
77
-
78
- numbers2[i] = MpcCore.decrypt(MpcCore.shr(gtA, b[i]));
79
- }
80
- }
81
-
82
- function _resetNumbers2(uint256 length) internal {
83
- // Reset the numbers array
84
- delete numbers2;
85
-
86
- // Resize the numbers array to match input length
87
- for(uint i = 0; i < length; i++) {
88
- numbers2.push(0);
89
- }
90
- }
91
- }
@@ -1,158 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
3
-
4
- import "../../../utils/mpc/MpcCore.sol";
5
-
6
- contract Comparison128BitTestsContract {
7
-
8
- bool[] public boolResults;
9
- uint128[] public uintResults;
10
-
11
- function eqTest(uint128[] calldata a, uint128[] calldata b) public {
12
- require(a.length == b.length, "Input length mismatch");
13
-
14
- _resetBools(a.length);
15
-
16
- for (uint256 i = 0; i < a.length; ++i) {
17
- gtUint128 memory gtA = MpcCore.setPublic128(a[i]);
18
- gtUint128 memory gtB = MpcCore.setPublic128(b[i]);
19
-
20
- boolResults[i] = MpcCore.decrypt(MpcCore.eq(gtA, gtB));
21
-
22
- assert(boolResults[i] == MpcCore.decrypt(MpcCore.eq(a[i], gtB)));
23
- assert(boolResults[i] == MpcCore.decrypt(MpcCore.eq(gtA, b[i])));
24
- }
25
- }
26
-
27
- function neTest(uint128[] calldata a, uint128[] calldata b) public {
28
- require(a.length == b.length, "Input length mismatch");
29
-
30
- _resetBools(a.length);
31
-
32
- for (uint256 i = 0; i < a.length; ++i) {
33
- gtUint128 memory gtA = MpcCore.setPublic128(a[i]);
34
- gtUint128 memory gtB = MpcCore.setPublic128(b[i]);
35
-
36
- boolResults[i] = MpcCore.decrypt(MpcCore.ne(gtA, gtB));
37
-
38
- assert(boolResults[i] == MpcCore.decrypt(MpcCore.ne(a[i], gtB)));
39
- assert(boolResults[i] == MpcCore.decrypt(MpcCore.ne(gtA, b[i])));
40
- }
41
- }
42
-
43
- function geTest(uint128[] calldata a, uint128[] calldata b) public {
44
- require(a.length == b.length, "Input length mismatch");
45
-
46
- _resetBools(a.length);
47
-
48
- for (uint256 i = 0; i < a.length; ++i) {
49
- gtUint128 memory gtA = MpcCore.setPublic128(a[i]);
50
- gtUint128 memory gtB = MpcCore.setPublic128(b[i]);
51
-
52
- boolResults[i] = MpcCore.decrypt(MpcCore.ge(gtA, gtB));
53
-
54
- assert(boolResults[i] == MpcCore.decrypt(MpcCore.ge(a[i], gtB)));
55
- assert(boolResults[i] == MpcCore.decrypt(MpcCore.ge(gtA, b[i])));
56
- }
57
- }
58
-
59
- function gtTest(uint128[] calldata a, uint128[] calldata b) public {
60
- require(a.length == b.length, "Input length mismatch");
61
-
62
- _resetBools(a.length);
63
-
64
- for (uint256 i = 0; i < a.length; ++i) {
65
- gtUint128 memory gtA = MpcCore.setPublic128(a[i]);
66
- gtUint128 memory gtB = MpcCore.setPublic128(b[i]);
67
-
68
- boolResults[i] = MpcCore.decrypt(MpcCore.gt(gtA, gtB));
69
-
70
- assert(boolResults[i] == MpcCore.decrypt(MpcCore.gt(a[i], gtB)));
71
- assert(boolResults[i] == MpcCore.decrypt(MpcCore.gt(gtA, b[i])));
72
- }
73
- }
74
-
75
- function leTest(uint128[] calldata a, uint128[] calldata b) public {
76
- require(a.length == b.length, "Input length mismatch");
77
-
78
- _resetBools(a.length);
79
-
80
- for (uint256 i = 0; i < a.length; ++i) {
81
- gtUint128 memory gtA = MpcCore.setPublic128(a[i]);
82
- gtUint128 memory gtB = MpcCore.setPublic128(b[i]);
83
-
84
- boolResults[i] = MpcCore.decrypt(MpcCore.le(gtA, gtB));
85
-
86
- assert(boolResults[i] == MpcCore.decrypt(MpcCore.le(a[i], gtB)));
87
- assert(boolResults[i] == MpcCore.decrypt(MpcCore.le(gtA, b[i])));
88
- }
89
- }
90
-
91
- function ltTest(uint128[] calldata a, uint128[] calldata b) public {
92
- require(a.length == b.length, "Input length mismatch");
93
-
94
- _resetBools(a.length);
95
-
96
- for (uint256 i = 0; i < a.length; ++i) {
97
- gtUint128 memory gtA = MpcCore.setPublic128(a[i]);
98
- gtUint128 memory gtB = MpcCore.setPublic128(b[i]);
99
-
100
- boolResults[i] = MpcCore.decrypt(MpcCore.lt(gtA, gtB));
101
-
102
- assert(boolResults[i] == MpcCore.decrypt(MpcCore.lt(a[i], gtB)));
103
- assert(boolResults[i] == MpcCore.decrypt(MpcCore.lt(gtA, b[i])));
104
- }
105
- }
106
-
107
- function minTest(uint128[] calldata a, uint128[] calldata b) public {
108
- require(a.length == b.length, "Input length mismatch");
109
-
110
- _resetNumbers(a.length);
111
-
112
- for (uint256 i = 0; i < a.length; ++i) {
113
- gtUint128 memory gtA = MpcCore.setPublic128(a[i]);
114
- gtUint128 memory gtB = MpcCore.setPublic128(b[i]);
115
-
116
- uintResults[i] = MpcCore.decrypt(MpcCore.min(gtA, gtB));
117
-
118
- assert(uintResults[i] == MpcCore.decrypt(MpcCore.min(a[i], gtB)));
119
- assert(uintResults[i] == MpcCore.decrypt(MpcCore.min(gtA, b[i])));
120
- }
121
- }
122
-
123
- function maxTest(uint128[] calldata a, uint128[] calldata b) public {
124
- require(a.length == b.length, "Input length mismatch");
125
-
126
- _resetNumbers(a.length);
127
-
128
- for (uint256 i = 0; i < a.length; ++i) {
129
- gtUint128 memory gtA = MpcCore.setPublic128(a[i]);
130
- gtUint128 memory gtB = MpcCore.setPublic128(b[i]);
131
-
132
- uintResults[i] = MpcCore.decrypt(MpcCore.max(gtA, gtB));
133
-
134
- assert(uintResults[i] == MpcCore.decrypt(MpcCore.max(a[i], gtB)));
135
- assert(uintResults[i] == MpcCore.decrypt(MpcCore.max(gtA, b[i])));
136
- }
137
- }
138
-
139
- function _resetBools(uint256 length) internal {
140
- // Reset the booleans array
141
- delete boolResults;
142
-
143
- // Resize the booleans array to match input length
144
- for(uint i = 0; i < length; i++) {
145
- boolResults.push(false);
146
- }
147
- }
148
-
149
- function _resetNumbers(uint256 length) internal {
150
- // Reset the numbers array
151
- delete uintResults;
152
-
153
- // Resize the numbers array to match input length
154
- for(uint i = 0; i < length; i++) {
155
- uintResults.push(0);
156
- }
157
- }
158
- }