@coti-io/coti-contracts 1.0.9 → 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 (271) 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 +10891 -2449
  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/Arithmetic128BitTestsContract.ts +341 -0
  142. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic128TestsContract.ts +311 -0
  143. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract.ts +347 -0
  144. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic256TestsContract.ts +311 -0
  145. package/typechain-types/contracts/mocks/utils/mpc/Bitwise128BitTestsContract.ts +186 -0
  146. package/typechain-types/contracts/mocks/utils/mpc/Bitwise128TestsContract.ts +179 -0
  147. package/typechain-types/contracts/mocks/utils/mpc/Bitwise256BitTestsContract.ts +186 -0
  148. package/typechain-types/contracts/mocks/utils/mpc/Bitwise256TestsContract.ts +179 -0
  149. package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.ts +206 -0
  150. package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.ts +206 -0
  151. package/typechain-types/contracts/mocks/utils/mpc/Comparison128BitTestsContract.ts +260 -0
  152. package/typechain-types/contracts/mocks/utils/mpc/Comparison128TestsContract.ts +278 -0
  153. package/typechain-types/contracts/mocks/utils/mpc/Comparison256BitTestsContract.ts +260 -0
  154. package/typechain-types/contracts/mocks/utils/mpc/Comparison256TestsContract.ts +278 -0
  155. package/typechain-types/contracts/mocks/utils/mpc/MinMax128TestsContract.ts +142 -0
  156. package/typechain-types/contracts/mocks/utils/mpc/MinMax256TestsContract.ts +142 -0
  157. package/typechain-types/contracts/mocks/utils/mpc/MinimalImplementation.ts +259 -0
  158. package/typechain-types/contracts/mocks/utils/mpc/MinimalProxy.ts +90 -0
  159. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.ts +302 -0
  160. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.ts +322 -0
  161. package/typechain-types/contracts/mocks/utils/mpc/MpcOperations128TestContract.ts +388 -0
  162. package/typechain-types/contracts/mocks/utils/mpc/MpcOperationsTestContract.ts +455 -0
  163. package/typechain-types/contracts/mocks/utils/mpc/Mux128TestsContract.ts +109 -0
  164. package/typechain-types/contracts/mocks/utils/mpc/Mux256TestsContract.ts +109 -0
  165. package/typechain-types/contracts/mocks/utils/mpc/OnBoard128TestsContract.ts +166 -0
  166. package/typechain-types/contracts/mocks/utils/mpc/OnBoard256TestsContract.ts +194 -0
  167. package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV1.ts +385 -0
  168. package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV2.ts +441 -0
  169. package/typechain-types/contracts/mocks/utils/mpc/PrivacyProxy.ts +201 -0
  170. package/typechain-types/contracts/mocks/utils/mpc/Random128TestsContract.ts +131 -0
  171. package/typechain-types/contracts/mocks/utils/mpc/Random256TestsContract.ts +131 -0
  172. package/typechain-types/contracts/mocks/utils/mpc/Shift128TestsContract.ts +142 -0
  173. package/typechain-types/contracts/mocks/utils/mpc/Shift256TestsContract.ts +142 -0
  174. package/typechain-types/contracts/mocks/utils/mpc/Transfer128TestsContract.ts +109 -0
  175. package/typechain-types/contracts/mocks/utils/mpc/Transfer256TestsContract.ts +109 -0
  176. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.ts +128 -0
  177. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.ts +128 -0
  178. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.ts +198 -0
  179. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.ts +182 -0
  180. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.ts +257 -0
  181. package/typechain-types/contracts/mocks/utils/mpc/index.ts +32 -0
  182. package/typechain-types/contracts/token/PrivateERC20/IPrivateERC20.ts +77 -60
  183. package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +77 -60
  184. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +111 -10
  185. package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +74 -0
  186. package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +4 -0
  187. package/typechain-types/factories/@openzeppelin/contracts/index.ts +1 -0
  188. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +205 -0
  189. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit__factory.ts +100 -0
  190. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
  191. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts +5 -0
  192. package/typechain-types/factories/@openzeppelin/contracts/token/index.ts +1 -0
  193. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperser__factory.ts +759 -0
  194. package/typechain-types/factories/contracts/disperse/coinByRatio/index.ts +4 -0
  195. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20__factory.ts +43 -0
  196. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser__factory.ts +185 -0
  197. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +5 -0
  198. package/typechain-types/factories/contracts/disperse/disperseToken/TokenDisperser__factory.ts +198 -0
  199. package/typechain-types/factories/contracts/disperse/disperseToken/index.ts +5 -0
  200. package/typechain-types/factories/contracts/disperse/index.ts +5 -0
  201. package/typechain-types/factories/contracts/index.ts +1 -0
  202. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  203. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +179 -47
  204. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract__factory.ts +349 -0
  205. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128TestsContract__factory.ts +330 -0
  206. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract__factory.ts +364 -0
  207. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256TestsContract__factory.ts +330 -0
  208. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
  209. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128BitTestsContract__factory.ts +182 -0
  210. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128TestsContract__factory.ts +184 -0
  211. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256BitTestsContract__factory.ts +182 -0
  212. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256TestsContract__factory.ts +184 -0
  213. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
  214. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract__factory.ts +203 -0
  215. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract__factory.ts +203 -0
  216. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/CheckedArithmeticWithOverflowBitTestsContract__factory.ts +1 -1
  217. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128BitTestsContract__factory.ts +255 -0
  218. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128TestsContract__factory.ts +295 -0
  219. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  220. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256BitTestsContract__factory.ts +255 -0
  221. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256TestsContract__factory.ts +295 -0
  222. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
  223. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax128TestsContract__factory.ts +147 -0
  224. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax256TestsContract__factory.ts +147 -0
  225. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  226. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalImplementation__factory.ts +263 -0
  227. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalProxy__factory.ts +104 -0
  228. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract__factory.ts +332 -0
  229. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  230. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract__factory.ts +380 -0
  231. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  232. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperations128TestContract__factory.ts +723 -0
  233. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperationsTestContract__factory.ts +1410 -0
  234. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux128TestsContract__factory.ts +115 -0
  235. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux256TestsContract__factory.ts +115 -0
  236. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
  237. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard128TestsContract__factory.ts +175 -0
  238. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard256TestsContract__factory.ts +205 -0
  239. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV1__factory.ts +521 -0
  240. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV2__factory.ts +648 -0
  241. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyProxy__factory.ts +179 -0
  242. package/typechain-types/factories/contracts/mocks/utils/mpc/Random128TestsContract__factory.ts +131 -0
  243. package/typechain-types/factories/contracts/mocks/utils/mpc/Random256TestsContract__factory.ts +131 -0
  244. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift128TestsContract__factory.ts +147 -0
  245. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift256TestsContract__factory.ts +147 -0
  246. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  247. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  248. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer128TestsContract__factory.ts +135 -0
  249. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer256TestsContract__factory.ts +135 -0
  250. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  251. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  252. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract__factory.ts +154 -0
  253. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract__factory.ts +154 -0
  254. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
  255. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
  256. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
  257. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
  258. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
  259. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
  260. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract__factory.ts +190 -0
  261. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract__factory.ts +210 -0
  262. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract__factory.ts +260 -0
  263. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +32 -0
  264. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +7 -7
  265. package/typechain-types/factories/contracts/token/PrivateERC20/IPrivateERC20__factory.ts +174 -42
  266. package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +174 -42
  267. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +126 -0
  268. package/typechain-types/hardhat.d.ts +702 -0
  269. package/typechain-types/index.ts +78 -0
  270. package/contracts/mocks/utils/mpc/README.md +0 -486
  271. package/contracts/package.json +0 -11
@@ -0,0 +1,64 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.19;
3
+
4
+ import "../../../utils/mpc/MpcCore.sol";
5
+
6
+ contract CheckedArithmetic128WithOverflowBitTestsContract {
7
+ uint128 addResult;
8
+ uint128 subResult;
9
+ uint128 mulResult;
10
+ bool overflowBit;
11
+
12
+ function getAddResult() public view returns (uint128) {
13
+ return addResult;
14
+ }
15
+
16
+ function getSubResult() public view returns (uint128) {
17
+ return subResult;
18
+ }
19
+
20
+ function getMulResult() public view returns (uint128) {
21
+ return mulResult;
22
+ }
23
+
24
+ function getOverflowBit() public view returns (bool) {
25
+ return overflowBit;
26
+ }
27
+
28
+ function checkedAddWithOverflowBitTest(uint128 a, uint128 b) public returns (uint128) {
29
+ gtUint128 a128 = MpcCore.setPublic128(a);
30
+ gtUint128 b128 = MpcCore.setPublic128(b);
31
+
32
+ (gtBool overflow, gtUint128 gtResult) = MpcCore.checkedAddWithOverflowBit(a128, b128);
33
+ uint128 result = uint128(MpcCore.decrypt(gtResult));
34
+ overflowBit = MpcCore.decrypt(overflow);
35
+ addResult = result;
36
+
37
+ return result;
38
+ }
39
+
40
+ function checkedSubWithOverflowBitTest(uint128 a, uint128 b) public returns (uint128) {
41
+ gtUint128 a128 = MpcCore.setPublic128(a);
42
+ gtUint128 b128 = MpcCore.setPublic128(b);
43
+
44
+ (gtBool overflow, gtUint128 gtResult) = MpcCore.checkedSubWithOverflowBit(a128, b128);
45
+ uint128 result = uint128(MpcCore.decrypt(gtResult));
46
+ overflowBit = MpcCore.decrypt(overflow);
47
+ subResult = result;
48
+
49
+ return result;
50
+ }
51
+
52
+ function checkedMulWithOverflowBitTest(uint128 a, uint128 b) public returns (uint128) {
53
+ gtUint128 a128 = MpcCore.setPublic128(a);
54
+ gtUint128 b128 = MpcCore.setPublic128(b);
55
+
56
+ (gtBool overflow, gtUint128 gtResult) = MpcCore.checkedMulWithOverflowBit(a128, b128);
57
+ uint128 result = uint128(MpcCore.decrypt(gtResult));
58
+ overflowBit = MpcCore.decrypt(overflow);
59
+ mulResult = result;
60
+
61
+ return result;
62
+ }
63
+ }
64
+
@@ -0,0 +1,64 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.19;
3
+
4
+ import "../../../utils/mpc/MpcCore.sol";
5
+
6
+ contract CheckedArithmetic256WithOverflowBitTestsContract {
7
+ uint256 addResult;
8
+ uint256 subResult;
9
+ uint256 mulResult;
10
+ bool overflowBit;
11
+
12
+ function getAddResult() public view returns (uint256) {
13
+ return addResult;
14
+ }
15
+
16
+ function getSubResult() public view returns (uint256) {
17
+ return subResult;
18
+ }
19
+
20
+ function getMulResult() public view returns (uint256) {
21
+ return mulResult;
22
+ }
23
+
24
+ function getOverflowBit() public view returns (bool) {
25
+ return overflowBit;
26
+ }
27
+
28
+ function checkedAddWithOverflowBitTest(uint256 a, uint256 b) public returns (uint256) {
29
+ gtUint256 a256 = MpcCore.setPublic256(a);
30
+ gtUint256 b256 = MpcCore.setPublic256(b);
31
+
32
+ (gtBool overflow, gtUint256 gtResult) = MpcCore.checkedAddWithOverflowBit(a256, b256);
33
+ uint256 result = MpcCore.decrypt(gtResult);
34
+ overflowBit = MpcCore.decrypt(overflow);
35
+ addResult = result;
36
+
37
+ return result;
38
+ }
39
+
40
+ function checkedSubWithOverflowBitTest(uint256 a, uint256 b) public returns (uint256) {
41
+ gtUint256 a256 = MpcCore.setPublic256(a);
42
+ gtUint256 b256 = MpcCore.setPublic256(b);
43
+
44
+ (gtBool overflow, gtUint256 gtResult) = MpcCore.checkedSubWithOverflowBit(a256, b256);
45
+ uint256 result = MpcCore.decrypt(gtResult);
46
+ overflowBit = MpcCore.decrypt(overflow);
47
+ subResult = result;
48
+
49
+ return result;
50
+ }
51
+
52
+ function checkedMulWithOverflowBitTest(uint256 a, uint256 b) public returns (uint256) {
53
+ gtUint256 a256 = MpcCore.setPublic256(a);
54
+ gtUint256 b256 = MpcCore.setPublic256(b);
55
+
56
+ (gtBool overflow, gtUint256 gtResult) = MpcCore.checkedMulWithOverflowBit(a256, b256);
57
+ uint256 result = MpcCore.decrypt(gtResult);
58
+ overflowBit = MpcCore.decrypt(overflow);
59
+ mulResult = result;
60
+
61
+ return result;
62
+ }
63
+ }
64
+
@@ -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
+