@coti-io/coti-contracts 1.3.0 → 1.3.1
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/contracts/access/DataPrivacyFramework/DataPrivacyFramework.sol +1 -1
- package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +1 -1
- package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.sol +2 -4
- package/contracts/disperse/disperseToken/MintDisperser.sol +1 -3
- package/contracts/disperse/disperseToken/TokenDisperser.sol +1 -1
- package/contracts/messaging/PrivateMessaging.sol +1 -1
- package/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock.sol +1 -1
- package/contracts/mocks/messaging/PrivateMessagingHarness.sol +1 -1
- package/contracts/mocks/oracle/CotiPriceConsumerMock.sol +1 -1
- package/contracts/mocks/token/ERC20DecimalsMock.sol +1 -1
- package/contracts/mocks/token/ERC20Mock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock.sol +1 -1
- package/contracts/mocks/utils/mpc/Arithmetic128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Arithmetic256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/ArithmeticAddTestsContract.sol +196 -0
- package/contracts/mocks/utils/mpc/ArithmeticMulTestsContract.sol +194 -0
- package/contracts/mocks/utils/mpc/ArithmeticSigned128TestsContract.sol +63 -0
- package/contracts/mocks/utils/mpc/ArithmeticSigned256TestsContract.sol +107 -0
- package/contracts/mocks/utils/mpc/ArithmeticSignedNarrowTestsContract.sol +123 -0
- package/contracts/mocks/utils/mpc/ArithmeticSubTestsContract.sol +196 -0
- package/contracts/mocks/utils/mpc/Bitwise128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Bitwise256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/BitwiseTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Comparison128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Comparison1TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Comparison256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Comparison2TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MinMax128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MinMax256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MinMaxTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MinimalImplementation.sol +1 -1
- package/contracts/mocks/utils/mpc/MinimalProxy.sol +1 -1
- package/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MiscellaneousTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MpcOperations128TestContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MpcOperationsTestContract.sol +4 -4
- package/contracts/mocks/utils/mpc/Mux128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Mux256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.sol +1 -1
- package/contracts/mocks/utils/mpc/OnBoard128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/OnBoard256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/PrivacyImplementationV1.sol +1 -1
- package/contracts/mocks/utils/mpc/PrivacyImplementationV2.sol +1 -1
- package/contracts/mocks/utils/mpc/PrivacyProxy.sol +1 -1
- package/contracts/mocks/utils/mpc/Random128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Random256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Shift128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Shift256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/StringTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Transfer128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Transfer256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferScalarTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.sol +2 -2
- package/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.sol +1 -1
- package/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.sol +1 -1
- package/contracts/node/CotiNodeRewards.sol +3 -3
- package/contracts/node/SoulboundNodeNFT.sol +1 -2
- package/contracts/onboard/AccountOnboard.sol +1 -1
- package/contracts/oracle/ICotiPriceConsumer.sol +1 -1
- package/contracts/pod/IInbox.sol +231 -0
- package/contracts/pod/IInboxMiner.sol +53 -0
- package/contracts/pod/InboxUser.sol +29 -0
- package/contracts/pod/InboxUserCotiTestnet.sol +13 -0
- package/contracts/pod/PodNetworkConstants.sol +30 -0
- package/contracts/pod/examples/MpcAdder.sol +57 -0
- package/contracts/pod/examples/MpcAdderPausable.sol +25 -0
- package/contracts/pod/examples/MpcAdderPausable.sol.bak +25 -0
- package/contracts/pod/examples/it128/PodAdder128.sol +48 -0
- package/contracts/pod/examples/it256/PodAdder256.sol +48 -0
- package/contracts/pod/fee/IInboxFeeManager.sol +40 -0
- package/contracts/pod/manifest.json +52 -0
- package/contracts/pod/mpc/PodLib.sol +10 -0
- package/contracts/pod/mpc/PodLib128.sol +361 -0
- package/contracts/pod/mpc/PodLib256.sol +361 -0
- package/contracts/pod/mpc/PodLib64.sol +385 -0
- package/contracts/pod/mpc/PodLibBase.sol +72 -0
- package/contracts/pod/mpc/PodUser.sol +58 -0
- package/contracts/pod/mpc/PodUserFuji.sol +14 -0
- package/contracts/pod/mpc/PodUserSepolia.sol +13 -0
- package/contracts/pod/mpc/coti-side/IPodExecutorOps.sol +99 -0
- package/contracts/pod/mpccodec/MpcAbiCodec.sol +482 -0
- package/contracts/pod/privacy/IPodPriceOracle.sol +20 -0
- package/contracts/pod/privacy/IPrivacyPortal.sol +248 -0
- package/contracts/pod/privacy/IPrivacyPortalFactory.sol +88 -0
- package/contracts/pod/privacy/PortalFeeOracle.sol +51 -0
- package/contracts/pod/privacy/PrivacyPortal.sol +871 -0
- package/contracts/pod/privacy/PrivacyPortalFactory.sol +492 -0
- package/contracts/pod/privacy/PrivacyPortalFeeLib.sol +98 -0
- package/contracts/pod/privacy/mocks/CloneHelper.sol +14 -0
- package/contracts/pod/privacy/mocks/MockERC20.sol +26 -0
- package/contracts/pod/privacy/mocks/MockPodERC20ForPortal.sol +160 -0
- package/contracts/pod/privacy/mocks/MockPrivacyPortalFactory.sol +125 -0
- package/contracts/pod/privacy/mocks/MockWrappedNative.sol +24 -0
- package/contracts/pod/token/erc7984/Erc7984Constants.sol +9 -0
- package/contracts/pod/token/erc7984/Erc7984Pointers.sol +29 -0
- package/contracts/pod/token/erc7984/IERC7984.sol +69 -0
- package/contracts/pod/token/erc7984/IERC7984PortalWrapper.sol +31 -0
- package/contracts/pod/token/erc7984/PodErc7984Mixin.sol +125 -0
- package/contracts/pod/token/erc7984/README.md +60 -0
- package/contracts/pod/token/perc20/IPodERC20.sol +298 -0
- package/contracts/pod/token/perc20/PodERC20.sol +1021 -0
- package/contracts/pod/token/perc20/PodErc20Mintable.sol +88 -0
- package/contracts/pod/token/perc20/PodErc20MintableInitializable.sol +42 -0
- package/contracts/pod/token/perc20/cotiside/IPodErc20CotiSide.sol +88 -0
- package/contracts/pod/token/perc20/cotiside/PodErc20CotiMother.sol +529 -0
- package/contracts/pod/utils/IWrappedNative.sol +11 -0
- package/contracts/privacyBridge/PrivacyBridge.sol +5 -5
- package/contracts/privacyBridge/PrivacyBridgeCotiNative.sol +1 -1
- package/contracts/privacyBridge/PrivacyBridgeERC20.sol +1 -1
- package/contracts/privacyBridge/PrivacyBridgeUSDCe.sol +1 -1
- package/contracts/privacyBridge/PrivacyBridgeUSDT.sol +1 -1
- package/contracts/privacyBridge/PrivacyBridgeWADA.sol +1 -1
- package/contracts/privacyBridge/PrivacyBridgeWBTC.sol +1 -1
- package/contracts/privacyBridge/PrivacyBridgeWETH.sol +1 -1
- package/contracts/privacyBridge/PrivacyBridgegCoti.sol +1 -1
- package/contracts/token/PrivateERC20/IPrivateERC20.sol +1 -1
- package/contracts/token/PrivateERC20/ITokenReceiver.sol +1 -1
- package/contracts/token/PrivateERC20/ITokenReceiverEncrypted.sol +1 -1
- package/contracts/token/PrivateERC20/PrivateERC20.sol +5 -5
- package/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.sol +1 -1
- package/contracts/token/PrivateERC20/tokens/PrivateCOTI.sol +1 -1
- package/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.sol +1 -1
- package/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.sol +1 -1
- package/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.sol +1 -1
- package/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.sol +1 -1
- package/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.sol +1 -1
- package/contracts/token/PrivateERC721/IERC721Errors.sol +1 -1
- package/contracts/token/PrivateERC721/PrivateERC721.sol +1 -1
- package/contracts/token/PrivateERC721/extensions/IPrivateERC721URIStorage.sol +1 -1
- package/contracts/token/PrivateERC721/extensions/PrivateERC721URIStorage.sol +1 -1
- package/contracts/token/points/CotiTokenPoints004.sol +43 -0
- package/contracts/utils/mpc/MpcCore.sol +610 -1
- package/contracts/utils/mpc/MpcInterface.sol +1 -1
- package/hardhat.config.ts +5 -14
- package/package.json +4 -4
- package/scripts/deployCotiTokenPoints004.ts +61 -0
- package/scripts/deployFixedRatioCoinDisperserUnlimitedWindow.ts +68 -0
- package/scripts/verifyCotiTokenPoints004.ts +123 -0
- package/scripts/verifyFixedRatioCoinDisperserUnlimitedWindow.ts +112 -0
- package/test/messaging/PrivateMessaging.test.ts +5 -5
- package/test/pod/privacy/PrivacyPortal.access.test.ts +756 -0
- package/test/pod/privacy/PrivacyPortal.recovery.test.ts +263 -0
- package/test/privacyBridge/UnifiedPrivacyBridges.test.cjs +5 -3
- package/test/utils/mpc/CheckedSignedArithmetic256.test.ts +163 -0
- package/test/utils/mpc/NegativeCases.test.ts +3 -3
- package/test/utils/mpc/Precompile.test.ts +6 -6
- package/typechain-types/@openzeppelin/contracts/access/AccessControl.ts +2 -2
- package/typechain-types/@openzeppelin/contracts/access/IAccessControl.ts +2 -2
- package/typechain-types/@openzeppelin/contracts/access/extensions/AccessControlEnumerable.ts +375 -0
- package/typechain-types/@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.ts +329 -0
- package/typechain-types/@openzeppelin/contracts/access/extensions/index.ts +5 -0
- package/typechain-types/@openzeppelin/contracts/access/index.ts +2 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/IERC1363.ts +412 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/IERC5267.ts +151 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts +6 -50
- package/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts +6 -6
- package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.ts +313 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.ts +356 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.ts +423 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +6 -6
- package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +3 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts +2 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/utils/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts/utils/Nonces.ts +85 -0
- package/typechain-types/@openzeppelin/contracts/utils/Pausable.ts +150 -0
- package/typechain-types/@openzeppelin/contracts/utils/ReentrancyGuard.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/utils/ShortStrings.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/utils/Strings.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/utils/cryptography/ECDSA.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/utils/cryptography/EIP712.ts +151 -0
- package/typechain-types/@openzeppelin/contracts/utils/cryptography/index.ts +5 -0
- package/typechain-types/@openzeppelin/contracts/utils/index.ts +9 -0
- package/typechain-types/@openzeppelin/contracts/utils/math/SafeCast.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/utils/math/index.ts +4 -0
- package/typechain-types/contracts/mocks/token/ERC20DecimalsMock.ts +6 -50
- package/typechain-types/contracts/mocks/token/ERC20Mock.ts +6 -50
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.ts +16 -2
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.ts +2 -2
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.ts +2 -2
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.ts +2 -2
- package/typechain-types/contracts/privacyBridge/PrivacyBridge.ts +16 -2
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeCotiNative.ts +16 -2
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20.ts +16 -2
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDCe.ts +16 -2
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDT.ts +16 -2
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeWADA.ts +16 -2
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeWBTC.ts +16 -2
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeWETH.ts +16 -2
- package/typechain-types/contracts/privacyBridge/PrivacyBridgegCoti.ts +16 -2
- package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +2 -2
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.ts +2 -2
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTI.ts +2 -2
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.ts +2 -2
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.ts +2 -2
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.ts +2 -2
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.ts +2 -2
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.ts +2 -2
- package/typechain-types/contracts/token/index.ts +2 -0
- package/typechain-types/contracts/token/points/CotiTokenPoints004.sol/COTITokenPoints004.ts +826 -0
- package/typechain-types/contracts/token/points/CotiTokenPoints004.ts +826 -0
- package/typechain-types/contracts/token/points/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/AccessControl__factory.ts +22 -1
- package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControl__factory.ts +22 -1
- package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +22 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/extensions/AccessControlEnumerable__factory.ts +316 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/extensions/IAccessControlEnumerable__factory.ts +265 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/extensions/index.ts +5 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +1 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1363__factory.ts +393 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC5267__factory.ts +71 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors__factory.ts +127 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors__factory.ts +111 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors__factory.ts +128 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +3 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +84 -110
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +3 -3
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable__factory.ts +364 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable__factory.ts +382 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit__factory.ts +540 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +3 -3
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +3 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts +1 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/SafeERC20__factory.ts +96 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts +98 -59
- package/typechain-types/factories/@openzeppelin/contracts/utils/Nonces__factory.ts +57 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/Pausable__factory.ts +71 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/ReentrancyGuard__factory.ts +30 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/ShortStrings__factory.ts +83 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/Strings__factory.ts +90 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.ts +91 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/EIP712__factory.ts +87 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/index.ts +5 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/index.ts +7 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/math/SafeCast__factory.ts +118 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/math/index.ts +4 -0
- package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1__factory.ts +12 -1
- package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow__factory.ts +39 -1
- package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperser__factory.ts +12 -1
- package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser__factory.ts +23 -1
- package/typechain-types/factories/contracts/disperse/disperseToken/TokenDisperser__factory.ts +12 -1
- package/typechain-types/factories/contracts/messaging/PrivateMessaging__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/messaging/PrivateMessagingHarness__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/token/ERC20DecimalsMock__factory.ts +90 -52
- package/typechain-types/factories/contracts/mocks/token/ERC20Mock__factory.ts +90 -52
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock__factory.ts +90 -2
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock__factory.ts +28 -2
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock__factory.ts +28 -2
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +28 -2
- package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract__factory.ts +1 -1
- 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 +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalImplementation__factory.ts +1 -1
- 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 +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperationsTestContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Mux128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Mux256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV1__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV2__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Random128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Random256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Shift128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Shift256TestsContract__factory.ts +1 -1
- 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 +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer256TestsContract__factory.ts +1 -1
- 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 +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract__factory.ts +1 -1
- 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 +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +1 -1
- package/typechain-types/factories/contracts/node/CotiNodeRewards__factory.ts +28 -1
- package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT__factory.ts +126 -1
- package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeCotiNative__factory.ts +79 -2
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20__factory.ts +89 -1
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDCe__factory.ts +90 -2
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDT__factory.ts +90 -2
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWADA__factory.ts +90 -2
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWBTC__factory.ts +90 -2
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWETH__factory.ts +90 -2
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridge__factory.ts +78 -1
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgegCoti__factory.ts +90 -2
- package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +27 -1
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC__factory.ts +28 -2
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken__factory.ts +28 -2
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTI__factory.ts +28 -2
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateTetherUSD__factory.ts +28 -2
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedADA__factory.ts +28 -2
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC__factory.ts +28 -2
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedEther__factory.ts +28 -2
- package/typechain-types/factories/contracts/token/index.ts +1 -0
- package/typechain-types/factories/contracts/token/points/CotiTokenPoints004.sol/COTITokenPoints004__factory.ts +992 -0
- package/typechain-types/factories/contracts/token/points/CotiTokenPoints004__factory.ts +992 -0
- package/typechain-types/factories/contracts/token/points/index.ts +4 -0
- package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
- package/typechain-types/hardhat.d.ts +360 -0
- package/typechain-types/index.ts +36 -4
- package/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol +0 -408
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import "./IInbox.sol";
|
|
5
|
+
|
|
6
|
+
/// @title InboxUser
|
|
7
|
+
/// @notice Mixin that restricts selected functions to the configured {IInbox} and exposes `inbox`.
|
|
8
|
+
abstract contract InboxUser {
|
|
9
|
+
/// @notice Cross-chain inbox used for messaging.
|
|
10
|
+
IInbox public inbox;
|
|
11
|
+
|
|
12
|
+
/// @notice Caller is not the configured inbox.
|
|
13
|
+
error OnlyInbox(address caller);
|
|
14
|
+
|
|
15
|
+
/// @notice Restrict a function to the configured inbox.
|
|
16
|
+
/// @dev Reverts unless `msg.sender` is the configured inbox.
|
|
17
|
+
modifier onlyInbox() {
|
|
18
|
+
if (msg.sender != address(inbox)) {
|
|
19
|
+
revert OnlyInbox(msg.sender);
|
|
20
|
+
}
|
|
21
|
+
_;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/// @notice Set the inbox contract (typically once from a constructor or initializer).
|
|
25
|
+
/// @param _inbox Inbox address.
|
|
26
|
+
function setInbox(address _inbox) internal {
|
|
27
|
+
inbox = IInbox(_inbox);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import "./InboxUser.sol";
|
|
5
|
+
import "./PodNetworkConstants.sol";
|
|
6
|
+
|
|
7
|
+
/// @title InboxUserCotiTestnet
|
|
8
|
+
/// @notice Mixin that configures {InboxUser} for COTI testnet inbox address.
|
|
9
|
+
abstract contract InboxUserCotiTestnet is InboxUser {
|
|
10
|
+
constructor() {
|
|
11
|
+
setInbox(PodNetworkConstants.COTI_TESTNET_INBOX);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
/// @title PodNetworkConstants
|
|
5
|
+
/// @notice Deployment constants used by chain-specific PoD dapp helper contracts.
|
|
6
|
+
library PodNetworkConstants {
|
|
7
|
+
/// @notice Deterministic inbox address shared by every chain (CreateX CREATE3 deploy).
|
|
8
|
+
/// @dev Same value on Sepolia, COTI testnet, and Avalanche Fuji because the CREATE3 address
|
|
9
|
+
/// depends only on the deployer EOA and salt (see scripts/createx.ts).
|
|
10
|
+
address internal constant INBOX = 0xAb625bE229F603f6BBF964474AFf6d5487e364De;
|
|
11
|
+
|
|
12
|
+
/// @notice Source-chain inbox used by PoD dapps on Sepolia.
|
|
13
|
+
address internal constant SEPOLIA_INBOX = INBOX;
|
|
14
|
+
|
|
15
|
+
/// @notice Avalanche Fuji chain id used as a source chain paired with COTI testnet.
|
|
16
|
+
uint256 internal constant AVALANCHE_FUJI_CHAIN_ID = 43113;
|
|
17
|
+
|
|
18
|
+
/// @notice Source-chain inbox used by PoD dapps on Avalanche Fuji.
|
|
19
|
+
address internal constant AVALANCHE_FUJI_INBOX = INBOX;
|
|
20
|
+
|
|
21
|
+
/// @notice COTI testnet chain id used for remote MPC execution.
|
|
22
|
+
uint256 internal constant COTI_TESTNET_CHAIN_ID = 7082400;
|
|
23
|
+
|
|
24
|
+
/// @notice COTI-side MPC executor paired with source-chain PoD dapps.
|
|
25
|
+
/// @dev Redeploy and update this after the deterministic inbox redeploy on COTI.
|
|
26
|
+
address internal constant COTI_TESTNET_MPC_EXECUTOR = 0xC76aaE4F3810fBBd5d96b92DEFeBE0034405Ad9c;
|
|
27
|
+
|
|
28
|
+
/// @notice COTI testnet inbox used by COTI-side dapps.
|
|
29
|
+
address internal constant COTI_TESTNET_INBOX = INBOX;
|
|
30
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import "../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
import "../mpc/PodLib.sol";
|
|
7
|
+
import "../mpc/PodLibBase.sol";
|
|
8
|
+
|
|
9
|
+
/// @title MpcAdder
|
|
10
|
+
/// @notice Example dApp: 64-bit encrypted add over the inbox using {PodLib}.
|
|
11
|
+
contract MpcAdder is PodLib {
|
|
12
|
+
event AddRequest(bytes32 requestId);
|
|
13
|
+
|
|
14
|
+
ctUint64 private _result;
|
|
15
|
+
|
|
16
|
+
/// @notice Create an MPC adder bound to an inbox.
|
|
17
|
+
/// @param _inbox The inbox contract address.
|
|
18
|
+
constructor(address _inbox) PodLibBase(msg.sender) {
|
|
19
|
+
setInbox(_inbox);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/// @notice Send an MPC add request using encrypted inputs.
|
|
23
|
+
/// @param a Encrypted input a (itUint64).
|
|
24
|
+
/// @param b Encrypted input b (itUint64).
|
|
25
|
+
/// @param callbackFeeLocalWei Wei slice for callback leg; total inbox payment is `msg.value`.
|
|
26
|
+
function add(itUint64 calldata a, itUint64 calldata b, uint256 callbackFeeLocalWei) external payable {
|
|
27
|
+
bytes32 requestId = add64(
|
|
28
|
+
a,
|
|
29
|
+
b,
|
|
30
|
+
msg.sender,
|
|
31
|
+
MpcAdder.receiveC.selector,
|
|
32
|
+
PodLibBase.onDefaultMpcError.selector,
|
|
33
|
+
msg.value,
|
|
34
|
+
callbackFeeLocalWei
|
|
35
|
+
);
|
|
36
|
+
emit AddRequest(requestId);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/// @notice Receive the response and store the ciphertext result.
|
|
40
|
+
/// @param data The response payload containing the ciphertext.
|
|
41
|
+
function receiveC(bytes memory data) external virtual onlyMpcExecutor {
|
|
42
|
+
_receiveResult(data);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/// @dev Allows {MpcAdderPausable} to gate delivery without duplicating storage.
|
|
46
|
+
function _receiveResult(bytes memory data) internal virtual {
|
|
47
|
+
_result = abi.decode(data, (ctUint64));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/// @notice Return the last received ciphertext result.
|
|
51
|
+
function resultCiphertext() external view returns (ctUint64) {
|
|
52
|
+
return _result;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import "@openzeppelin/contracts/utils/Pausable.sol";
|
|
5
|
+
|
|
6
|
+
import "./MpcAdder.sol";
|
|
7
|
+
|
|
8
|
+
/// @title MpcAdderPausable
|
|
9
|
+
/// @notice Same as {MpcAdder}, but `receiveC` reverts while paused (simulates callback failure until unpaused).
|
|
10
|
+
contract MpcAdderPausable is MpcAdder, Pausable {
|
|
11
|
+
constructor(address _inbox) MpcAdder(_inbox) {}
|
|
12
|
+
|
|
13
|
+
/// @inheritdoc MpcAdder
|
|
14
|
+
function receiveC(bytes memory data) external override onlyMpcExecutor whenNotPaused {
|
|
15
|
+
_receiveResult(data);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function pause() external onlyOwner {
|
|
19
|
+
_pause();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function unpause() external onlyOwner {
|
|
23
|
+
_unpause();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import "@openzeppelin/contracts/utils/Pausable.sol";
|
|
5
|
+
|
|
6
|
+
import "./MpcAdder.sol";
|
|
7
|
+
|
|
8
|
+
/// @title MpcAdderPausable
|
|
9
|
+
/// @notice Same as {MpcAdder}, but `receiveC` reverts while paused (simulates callback failure until unpaused).
|
|
10
|
+
contract MpcAdderPausable is MpcAdder, Pausable {
|
|
11
|
+
constructor(address _inbox) MpcAdder(_inbox) {}
|
|
12
|
+
|
|
13
|
+
/// @inheritdoc MpcAdder
|
|
14
|
+
function receiveC(bytes memory data) external override onlyInbox whenNotPaused {
|
|
15
|
+
_receiveResult(data);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function pause() external onlyOwner {
|
|
19
|
+
_pause();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function unpause() external onlyOwner {
|
|
23
|
+
_unpause();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
import "../../mpc/PodLib.sol";
|
|
7
|
+
import "../../mpc/PodLibBase.sol";
|
|
8
|
+
|
|
9
|
+
/// @title PodAdder128
|
|
10
|
+
/// @notice Example 128-bit MPC adder using {PodLib}.
|
|
11
|
+
contract PodAdder128 is PodLib {
|
|
12
|
+
event AddRequest(bytes32 requestId);
|
|
13
|
+
|
|
14
|
+
ctUint128 private _result;
|
|
15
|
+
|
|
16
|
+
/// @notice Create an MPC adder bound to an inbox.
|
|
17
|
+
/// @param _inbox The inbox contract address.
|
|
18
|
+
constructor(address _inbox) PodLibBase(msg.sender) {
|
|
19
|
+
setInbox(_inbox);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/// @notice Send an MPC add request using encrypted inputs.
|
|
23
|
+
/// @param a Encrypted input a (itUint128).
|
|
24
|
+
/// @param b Encrypted input b (itUint128).
|
|
25
|
+
function add(itUint128 calldata a, itUint128 calldata b, uint256 callbackFeeLocalWei) external payable {
|
|
26
|
+
bytes32 requestId = add128(
|
|
27
|
+
a,
|
|
28
|
+
b,
|
|
29
|
+
msg.sender,
|
|
30
|
+
PodAdder128.receiveC.selector,
|
|
31
|
+
PodLibBase.onDefaultMpcError.selector,
|
|
32
|
+
msg.value,
|
|
33
|
+
callbackFeeLocalWei
|
|
34
|
+
);
|
|
35
|
+
emit AddRequest(requestId);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/// @notice Receive the response and store the ciphertext result.
|
|
39
|
+
/// @param data The response payload containing the ciphertext.
|
|
40
|
+
function receiveC(bytes memory data) external onlyInbox {
|
|
41
|
+
_result = abi.decode(data, (ctUint128));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/// @notice Return the last received ciphertext result.
|
|
45
|
+
function resultCiphertext() external view returns (ctUint128) {
|
|
46
|
+
return _result;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import "../../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
import "../../mpc/PodLib.sol";
|
|
7
|
+
import "../../mpc/PodLibBase.sol";
|
|
8
|
+
|
|
9
|
+
/// @title PodAdder256
|
|
10
|
+
/// @notice Example 256-bit MPC adder using {PodLib}.
|
|
11
|
+
contract PodAdder256 is PodLib {
|
|
12
|
+
event AddRequest(bytes32 requestId);
|
|
13
|
+
|
|
14
|
+
ctUint256 private _result;
|
|
15
|
+
|
|
16
|
+
/// @notice Create an MPC adder bound to an inbox.
|
|
17
|
+
/// @param _inbox The inbox contract address.
|
|
18
|
+
constructor(address _inbox) PodLibBase(msg.sender) {
|
|
19
|
+
setInbox(_inbox);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/// @notice Send an MPC add request using encrypted inputs.
|
|
23
|
+
/// @param a Encrypted input a (itUint256).
|
|
24
|
+
/// @param b Encrypted input b (itUint256).
|
|
25
|
+
function add(itUint256 calldata a, itUint256 calldata b, uint256 callbackFeeLocalWei) external payable {
|
|
26
|
+
bytes32 requestId = add256(
|
|
27
|
+
a,
|
|
28
|
+
b,
|
|
29
|
+
msg.sender,
|
|
30
|
+
PodAdder256.receiveC.selector,
|
|
31
|
+
PodLibBase.onDefaultMpcError.selector,
|
|
32
|
+
msg.value,
|
|
33
|
+
callbackFeeLocalWei
|
|
34
|
+
);
|
|
35
|
+
emit AddRequest(requestId);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/// @notice Receive the response and store the ciphertext result.
|
|
39
|
+
/// @param data The response payload containing the ciphertext.
|
|
40
|
+
function receiveC(bytes memory data) external onlyInbox {
|
|
41
|
+
_result = abi.decode(data, (ctUint256));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/// @notice Return the last received ciphertext result.
|
|
45
|
+
function resultCiphertext() external view returns (ctUint256 memory) {
|
|
46
|
+
return _result;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
/// @title IInboxFeeManager
|
|
5
|
+
/// @notice Read-only fee estimation surface exposed by inbox contracts for PoD dapps.
|
|
6
|
+
interface IInboxFeeManager {
|
|
7
|
+
/// @notice Template for minimum fees in gas units.
|
|
8
|
+
struct FeeConfig {
|
|
9
|
+
uint256 constantFee;
|
|
10
|
+
uint256 gasPerByte;
|
|
11
|
+
uint256 callbackExecutionGas;
|
|
12
|
+
uint256 errorLength;
|
|
13
|
+
uint256 bufferRatioX10000;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/// @notice Oracle used to convert gas budgets between local and remote fee tokens.
|
|
17
|
+
function priceOracle() external view returns (address);
|
|
18
|
+
|
|
19
|
+
/// @notice Minimum fee template for the local callback leg.
|
|
20
|
+
function localMinFeeConfig() external view returns (FeeConfig memory);
|
|
21
|
+
|
|
22
|
+
/// @notice Minimum fee template for the remote execution leg.
|
|
23
|
+
function remoteMinFeeConfig() external view returns (FeeConfig memory);
|
|
24
|
+
|
|
25
|
+
/// @notice Estimate the local-token wei required for a two-way message.
|
|
26
|
+
/// @param remoteMethodCallSize Remote calldata size term.
|
|
27
|
+
/// @param callBackMethodCallSize Callback calldata size term.
|
|
28
|
+
/// @param remoteMethodExecutionGas Remote execution gas term.
|
|
29
|
+
/// @param callBackMethodExecutionGas Callback execution gas term.
|
|
30
|
+
/// @param gasPrice Wei per gas assumption.
|
|
31
|
+
/// @return targetFeeLocalWei Local-token wei estimated for the remote execution leg.
|
|
32
|
+
/// @return callerFeeLocalWei Local-token wei estimated for the callback leg.
|
|
33
|
+
function calculateTwoWayFeeRequiredInLocalToken(
|
|
34
|
+
uint256 remoteMethodCallSize,
|
|
35
|
+
uint256 callBackMethodCallSize,
|
|
36
|
+
uint256 remoteMethodExecutionGas,
|
|
37
|
+
uint256 callBackMethodExecutionGas,
|
|
38
|
+
uint256 gasPrice
|
|
39
|
+
) external view returns (uint256 targetFeeLocalWei, uint256 callerFeeLocalWei);
|
|
40
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"generatedAt": "2026-06-28T23:14:27Z",
|
|
3
|
+
"source": "/Users/ith/nk/pod-mpc-lib/contracts",
|
|
4
|
+
"target": "/Users/ith/nk/coti-contracts/contracts/pod",
|
|
5
|
+
"files": [
|
|
6
|
+
"examples/it128/PodAdder128.sol",
|
|
7
|
+
"examples/it256/PodAdder256.sol",
|
|
8
|
+
"examples/MpcAdder.sol",
|
|
9
|
+
"examples/MpcAdderPausable.sol",
|
|
10
|
+
"fee/IInboxFeeManager.sol",
|
|
11
|
+
"IInbox.sol",
|
|
12
|
+
"IInboxMiner.sol",
|
|
13
|
+
"InboxUser.sol",
|
|
14
|
+
"InboxUserCotiTestnet.sol",
|
|
15
|
+
"mpc/coti-side/IPodExecutorOps.sol",
|
|
16
|
+
"mpc/PodLib.sol",
|
|
17
|
+
"mpc/PodLib128.sol",
|
|
18
|
+
"mpc/PodLib256.sol",
|
|
19
|
+
"mpc/PodLib64.sol",
|
|
20
|
+
"mpc/PodLibBase.sol",
|
|
21
|
+
"mpc/PodUser.sol",
|
|
22
|
+
"mpc/PodUserFuji.sol",
|
|
23
|
+
"mpc/PodUserSepolia.sol",
|
|
24
|
+
"mpccodec/MpcAbiCodec.sol",
|
|
25
|
+
"PodNetworkConstants.sol",
|
|
26
|
+
"privacy/IPrivacyPortal.sol",
|
|
27
|
+
"privacy/PrivacyPortal.sol",
|
|
28
|
+
"privacy/PrivacyPortalFactory.sol",
|
|
29
|
+
"token/erc7984/Erc7984Constants.sol",
|
|
30
|
+
"token/erc7984/Erc7984Pointers.sol",
|
|
31
|
+
"token/erc7984/IERC7984.sol",
|
|
32
|
+
"token/erc7984/IERC7984PortalWrapper.sol",
|
|
33
|
+
"token/erc7984/PodErc7984Mixin.sol",
|
|
34
|
+
"token/erc7984/README.md",
|
|
35
|
+
"token/perc20/cotiside/IPodErc20CotiSide.sol",
|
|
36
|
+
"token/perc20/cotiside/PodErc20CotiMother.sol",
|
|
37
|
+
"token/perc20/IPodERC20.sol",
|
|
38
|
+
"token/perc20/PodERC20.sol",
|
|
39
|
+
"token/perc20/PodErc20Mintable.sol",
|
|
40
|
+
"token/perc20/PodErc20MintableInitializable.sol",
|
|
41
|
+
"utils/IWrappedNative.sol"
|
|
42
|
+
],
|
|
43
|
+
"externalImports": [
|
|
44
|
+
"utils/mpc/MpcCore.sol",
|
|
45
|
+
"utils/mpc/MpcInterface.sol"
|
|
46
|
+
],
|
|
47
|
+
"notes": [
|
|
48
|
+
"MpcCore.sol and MpcInterface.sol live at contracts/utils/mpc/ in coti-contracts.",
|
|
49
|
+
"OpenZeppelin imports are unchanged (@openzeppelin/contracts).",
|
|
50
|
+
"Indexers/relayers: use getRequest(requestId) for full inbox payloads (compact MessageSent logs)."
|
|
51
|
+
]
|
|
52
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import "./PodLib64.sol";
|
|
5
|
+
import "./PodLib128.sol";
|
|
6
|
+
import "./PodLib256.sol";
|
|
7
|
+
|
|
8
|
+
/// @title PodLib
|
|
9
|
+
/// @notice Combined 64-, 128-, and 256-bit POD MPC helpers (linearized via {PodLib64}, {PodLib128}, {PodLib256}).
|
|
10
|
+
abstract contract PodLib is PodLib64, PodLib128, PodLib256 {}
|