@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
package/hardhat.config.ts
CHANGED
|
@@ -8,7 +8,11 @@ dotenv.config()
|
|
|
8
8
|
/** Bump estimated gas price / EIP-1559 fees by 30% on COTI networks (see hardhat/gasPriceBump.ts). */
|
|
9
9
|
import "./hardhat/gasPriceBump"
|
|
10
10
|
|
|
11
|
-
const accounts = process.env.PRIVATE_KEY
|
|
11
|
+
const accounts = process.env.PRIVATE_KEY
|
|
12
|
+
? [process.env.PRIVATE_KEY]
|
|
13
|
+
: process.env.SIGNING_KEYS
|
|
14
|
+
? process.env.SIGNING_KEYS.split(",").map((k) => k.trim()).filter(Boolean)
|
|
15
|
+
: [];
|
|
12
16
|
|
|
13
17
|
const config: HardhatUserConfig = {
|
|
14
18
|
defaultNetwork: "coti-testnet",
|
|
@@ -31,19 +35,6 @@ const config: HardhatUserConfig = {
|
|
|
31
35
|
},
|
|
32
36
|
}
|
|
33
37
|
},
|
|
34
|
-
{
|
|
35
|
-
version: "0.8.19",
|
|
36
|
-
settings: {
|
|
37
|
-
viaIR: true,
|
|
38
|
-
optimizer: {
|
|
39
|
-
enabled: true,
|
|
40
|
-
runs: 10000
|
|
41
|
-
},
|
|
42
|
-
metadata: {
|
|
43
|
-
bytecodeHash: 'none',
|
|
44
|
-
},
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
38
|
]
|
|
48
39
|
},
|
|
49
40
|
networks: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coti-io/coti-contracts",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "A library for smart contract development on the COTI network.",
|
|
5
5
|
"author": "COTI Development",
|
|
6
6
|
"repository": {
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"typescript": "^5.9.3"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@coti-io/coti-ethers": "^1.0.
|
|
44
|
-
"@coti-io/coti-sdk-typescript": "^1.0.
|
|
45
|
-
"@openzeppelin/contracts": "4.
|
|
43
|
+
"@coti-io/coti-ethers": "^1.0.6",
|
|
44
|
+
"@coti-io/coti-sdk-typescript": "^1.0.9",
|
|
45
|
+
"@openzeppelin/contracts": "5.4.0",
|
|
46
46
|
"dotenv": "^16.4.5"
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ethers } from "hardhat";
|
|
2
|
+
|
|
3
|
+
async function main() {
|
|
4
|
+
const [deployer] = await ethers.getSigners();
|
|
5
|
+
if (!deployer) {
|
|
6
|
+
throw new Error(
|
|
7
|
+
"No deployer signer found. Set PRIVATE_KEY in your environment."
|
|
8
|
+
);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const defaultAdmin =
|
|
12
|
+
process.env.TPS004_ADMIN || deployer.address;
|
|
13
|
+
const pauser = process.env.TPS004_PAUSER || deployer.address;
|
|
14
|
+
const minter = process.env.TPS004_MINTER || deployer.address;
|
|
15
|
+
|
|
16
|
+
console.log("Deploying CotiTokenPoints004...");
|
|
17
|
+
console.log("Deployer:", deployer.address);
|
|
18
|
+
console.log("Default admin:", defaultAdmin);
|
|
19
|
+
console.log("Pauser:", pauser);
|
|
20
|
+
console.log("Minter:", minter);
|
|
21
|
+
|
|
22
|
+
const provider = deployer.provider;
|
|
23
|
+
if (!provider) {
|
|
24
|
+
throw new Error("No provider found for deployer signer.");
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const gasPrice = BigInt(await provider.send("eth_gasPrice", []));
|
|
28
|
+
const nonce = await provider.getTransactionCount(deployer.address, "latest");
|
|
29
|
+
const gasLimit = BigInt(process.env.TPS004_DEPLOY_GAS_LIMIT || "6000000");
|
|
30
|
+
|
|
31
|
+
const factory = await ethers.getContractFactory("CotiTokenPoints004");
|
|
32
|
+
const deployTxReq = await factory.getDeployTransaction(
|
|
33
|
+
defaultAdmin,
|
|
34
|
+
pauser,
|
|
35
|
+
minter
|
|
36
|
+
);
|
|
37
|
+
if (!deployTxReq.data) {
|
|
38
|
+
throw new Error("Failed to build deploy transaction data.");
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const sentTx = await deployer.sendTransaction({
|
|
42
|
+
data: deployTxReq.data,
|
|
43
|
+
gasPrice,
|
|
44
|
+
nonce,
|
|
45
|
+
gasLimit,
|
|
46
|
+
});
|
|
47
|
+
console.log("Deployment tx hash:", sentTx.hash);
|
|
48
|
+
const receipt = await sentTx.wait();
|
|
49
|
+
if (!receipt || !receipt.contractAddress) {
|
|
50
|
+
throw new Error(
|
|
51
|
+
"Deployment transaction mined but no contract address found."
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
console.log("CotiTokenPoints004 deployed at:", receipt.contractAddress);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
main().catch((error) => {
|
|
59
|
+
console.error(error);
|
|
60
|
+
process.exitCode = 1;
|
|
61
|
+
});
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { ethers } from "hardhat";
|
|
2
|
+
|
|
3
|
+
async function main() {
|
|
4
|
+
const [deployer] = await ethers.getSigners();
|
|
5
|
+
if (!deployer) {
|
|
6
|
+
throw new Error(
|
|
7
|
+
"No deployer signer found. Set PRIVATE_KEY in your environment."
|
|
8
|
+
);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const pointsToken =
|
|
12
|
+
process.env.POINTS_TOKEN ||
|
|
13
|
+
"0x9eC8c1459B92e8f19fE160E63e169e7EFAAA4359";
|
|
14
|
+
const owner =
|
|
15
|
+
process.env.DISPERSER_OWNER ||
|
|
16
|
+
"0x87a11daf013e02d38cabdfdbff25e0b0fa2c5fcd";
|
|
17
|
+
|
|
18
|
+
console.log("Deploying FixedRatioCoinDisperserUnlimitedWindow...");
|
|
19
|
+
console.log("Deployer:", deployer.address);
|
|
20
|
+
console.log("Points token:", pointsToken);
|
|
21
|
+
console.log("Owner:", owner);
|
|
22
|
+
|
|
23
|
+
const provider = deployer.provider;
|
|
24
|
+
if (!provider) {
|
|
25
|
+
throw new Error("No provider found for deployer signer.");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const gasPrice = BigInt(await provider.send("eth_gasPrice", []));
|
|
29
|
+
const nonce = await provider.getTransactionCount(deployer.address, "latest");
|
|
30
|
+
const gasLimit = BigInt(
|
|
31
|
+
process.env.DISPERSER_DEPLOY_GAS_LIMIT || "8000000"
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
const factory = await ethers.getContractFactory(
|
|
35
|
+
"FixedRatioCoinDisperserUnlimitedWindow"
|
|
36
|
+
);
|
|
37
|
+
const deployTxReq = await factory.getDeployTransaction(
|
|
38
|
+
pointsToken,
|
|
39
|
+
owner
|
|
40
|
+
);
|
|
41
|
+
if (!deployTxReq.data) {
|
|
42
|
+
throw new Error("Failed to build deploy transaction data.");
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const sentTx = await deployer.sendTransaction({
|
|
46
|
+
data: deployTxReq.data,
|
|
47
|
+
gasPrice,
|
|
48
|
+
nonce,
|
|
49
|
+
gasLimit,
|
|
50
|
+
});
|
|
51
|
+
console.log("Deployment tx hash:", sentTx.hash);
|
|
52
|
+
const receipt = await sentTx.wait();
|
|
53
|
+
if (!receipt || !receipt.contractAddress) {
|
|
54
|
+
throw new Error(
|
|
55
|
+
"Deployment transaction mined but no contract address found."
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
console.log(
|
|
60
|
+
"FixedRatioCoinDisperserUnlimitedWindow deployed at:",
|
|
61
|
+
receipt.contractAddress
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
main().catch((error) => {
|
|
66
|
+
console.error(error);
|
|
67
|
+
process.exitCode = 1;
|
|
68
|
+
});
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { ethers } from "hardhat";
|
|
4
|
+
|
|
5
|
+
function findBuildInfo(): string {
|
|
6
|
+
const dir = path.join("artifacts", "build-info");
|
|
7
|
+
for (const file of fs.readdirSync(dir)) {
|
|
8
|
+
if (!file.endsWith(".json")) continue;
|
|
9
|
+
const fullPath = path.join(dir, file);
|
|
10
|
+
const buildInfo = JSON.parse(fs.readFileSync(fullPath, "utf8")) as {
|
|
11
|
+
solcVersion: string;
|
|
12
|
+
};
|
|
13
|
+
const raw = fs.readFileSync(fullPath, "utf8");
|
|
14
|
+
if (
|
|
15
|
+
raw.includes("CotiTokenPoints004") &&
|
|
16
|
+
buildInfo.solcVersion === "0.8.20"
|
|
17
|
+
) {
|
|
18
|
+
return fullPath;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
throw new Error(
|
|
22
|
+
"No 0.8.20 build-info found for CotiTokenPoints004. Run `npx hardhat compile` first."
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async function main() {
|
|
27
|
+
const address =
|
|
28
|
+
process.env.CONTRACT_ADDRESS ||
|
|
29
|
+
"0x3F577B64E5CE5F2d00607770368d623cECc4FF7D";
|
|
30
|
+
const defaultAdmin =
|
|
31
|
+
process.env.TPS004_ADMIN ||
|
|
32
|
+
"0x0BF9C15CbD9f0fac9fc6ab90F0603e89818489bd";
|
|
33
|
+
const pauser =
|
|
34
|
+
process.env.TPS004_PAUSER ||
|
|
35
|
+
"0x0BF9C15CbD9f0fac9fc6ab90F0603e89818489bd";
|
|
36
|
+
const minter =
|
|
37
|
+
process.env.TPS004_MINTER ||
|
|
38
|
+
"0xE16eD4D157D4AdB562a7a73D28CBA750Ac48d735";
|
|
39
|
+
|
|
40
|
+
const buildInfo = JSON.parse(fs.readFileSync(findBuildInfo(), "utf8")) as {
|
|
41
|
+
input: unknown;
|
|
42
|
+
solcVersion: string;
|
|
43
|
+
solcLongVersion?: string;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const commit =
|
|
47
|
+
buildInfo.solcLongVersion?.split("+commit.")[1] ?? "a1b79de6";
|
|
48
|
+
|
|
49
|
+
const iface = new ethers.Interface([
|
|
50
|
+
"constructor(address defaultAdmin, address pauser, address minter)",
|
|
51
|
+
]);
|
|
52
|
+
const constructorArguments = iface
|
|
53
|
+
.encodeDeploy([defaultAdmin, pauser, minter])
|
|
54
|
+
.slice(2);
|
|
55
|
+
|
|
56
|
+
const params = new URLSearchParams({
|
|
57
|
+
apikey: "placeholder",
|
|
58
|
+
module: "contract",
|
|
59
|
+
action: "verifysourcecode",
|
|
60
|
+
contractaddress: address,
|
|
61
|
+
sourceCode: JSON.stringify(buildInfo.input),
|
|
62
|
+
codeformat: "solidity-standard-json-input",
|
|
63
|
+
contractname:
|
|
64
|
+
"contracts/token/points/CotiTokenPoints004.sol:CotiTokenPoints004",
|
|
65
|
+
compilerversion: `v${buildInfo.solcVersion}+commit.${commit}`,
|
|
66
|
+
constructorArguements: constructorArguments,
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
console.log("Submitting verification to Cotiscan...");
|
|
70
|
+
console.log("Contract:", address);
|
|
71
|
+
const submit = await fetch("https://mainnet.cotiscan.io/api", {
|
|
72
|
+
method: "POST",
|
|
73
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
74
|
+
body: params.toString(),
|
|
75
|
+
});
|
|
76
|
+
const submitJson = (await submit.json()) as {
|
|
77
|
+
status: string;
|
|
78
|
+
message: string;
|
|
79
|
+
result: string;
|
|
80
|
+
};
|
|
81
|
+
if (submitJson.status !== "1") {
|
|
82
|
+
throw new Error(
|
|
83
|
+
`Verification submit failed: ${submitJson.message} (${submitJson.result})`
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const guid = submitJson.result;
|
|
88
|
+
console.log("Verification GUID:", guid);
|
|
89
|
+
|
|
90
|
+
for (let i = 0; i < 30; i++) {
|
|
91
|
+
await new Promise((r) => setTimeout(r, 5000));
|
|
92
|
+
const statusUrl = new URL("https://mainnet.cotiscan.io/api");
|
|
93
|
+
statusUrl.search = new URLSearchParams({
|
|
94
|
+
apikey: "placeholder",
|
|
95
|
+
module: "contract",
|
|
96
|
+
action: "checkverifystatus",
|
|
97
|
+
guid,
|
|
98
|
+
}).toString();
|
|
99
|
+
const statusRes = await fetch(statusUrl);
|
|
100
|
+
const statusJson = (await statusRes.json()) as {
|
|
101
|
+
status: string;
|
|
102
|
+
result: string;
|
|
103
|
+
};
|
|
104
|
+
console.log("Status:", statusJson.result);
|
|
105
|
+
if (statusJson.result.includes("Pass")) {
|
|
106
|
+
console.log("Contract verified:", address);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (
|
|
110
|
+
statusJson.result.includes("Fail") ||
|
|
111
|
+
statusJson.result.includes("Error")
|
|
112
|
+
) {
|
|
113
|
+
throw new Error(`Verification failed: ${statusJson.result}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
throw new Error("Verification timed out while polling Cotiscan");
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
main().catch((error) => {
|
|
121
|
+
console.error(error);
|
|
122
|
+
process.exitCode = 1;
|
|
123
|
+
});
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { ethers } from "hardhat";
|
|
4
|
+
|
|
5
|
+
function findBuildInfo(): string {
|
|
6
|
+
const dir = path.join("artifacts", "build-info");
|
|
7
|
+
for (const file of fs.readdirSync(dir)) {
|
|
8
|
+
if (!file.endsWith(".json")) continue;
|
|
9
|
+
const fullPath = path.join(dir, file);
|
|
10
|
+
const raw = fs.readFileSync(fullPath, "utf8");
|
|
11
|
+
if (
|
|
12
|
+
raw.includes("FixedRatioCoinDisperserUnlimitedWindow") &&
|
|
13
|
+
raw.includes('"version": "0.8.20"')
|
|
14
|
+
) {
|
|
15
|
+
return fullPath;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
throw new Error(
|
|
19
|
+
"No 0.8.20 build-info found for FixedRatioCoinDisperserUnlimitedWindow. Run `npx hardhat compile` first."
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async function main() {
|
|
24
|
+
const address =
|
|
25
|
+
process.env.CONTRACT_ADDRESS ||
|
|
26
|
+
"0x6f05f45897A3c8cBC4Cb384cB69d5425C13fbAe2";
|
|
27
|
+
const pointsToken =
|
|
28
|
+
process.env.POINTS_TOKEN ||
|
|
29
|
+
"0x9eC8c1459B92e8f19fE160E63e169e7EFAAA4359";
|
|
30
|
+
const owner =
|
|
31
|
+
process.env.DISPERSER_OWNER ||
|
|
32
|
+
"0x87a11daf013e02d38cabdfdbff25e0b0fa2c5fcd";
|
|
33
|
+
|
|
34
|
+
const buildInfo = JSON.parse(fs.readFileSync(findBuildInfo(), "utf8")) as {
|
|
35
|
+
input: unknown;
|
|
36
|
+
solcVersion: string;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const iface = new ethers.Interface([
|
|
40
|
+
"constructor(address _pointsToken, address _owner)",
|
|
41
|
+
]);
|
|
42
|
+
const constructorArguments = iface
|
|
43
|
+
.encodeDeploy([pointsToken, owner])
|
|
44
|
+
.slice(2);
|
|
45
|
+
|
|
46
|
+
const params = new URLSearchParams({
|
|
47
|
+
apikey: "placeholder",
|
|
48
|
+
module: "contract",
|
|
49
|
+
action: "verifysourcecode",
|
|
50
|
+
contractaddress: address,
|
|
51
|
+
sourceCode: JSON.stringify(buildInfo.input),
|
|
52
|
+
codeformat: "solidity-standard-json-input",
|
|
53
|
+
contractname:
|
|
54
|
+
"contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.sol:FixedRatioCoinDisperserUnlimitedWindow",
|
|
55
|
+
compilerversion: `v${buildInfo.solcVersion}+commit.a1b79de6`,
|
|
56
|
+
constructorArguements: constructorArguments,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
console.log("Submitting verification to Cotiscan...");
|
|
60
|
+
const submit = await fetch("https://mainnet.cotiscan.io/api", {
|
|
61
|
+
method: "POST",
|
|
62
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
63
|
+
body: params.toString(),
|
|
64
|
+
});
|
|
65
|
+
const submitJson = (await submit.json()) as {
|
|
66
|
+
status: string;
|
|
67
|
+
message: string;
|
|
68
|
+
result: string;
|
|
69
|
+
};
|
|
70
|
+
if (submitJson.status !== "1") {
|
|
71
|
+
throw new Error(
|
|
72
|
+
`Verification submit failed: ${submitJson.message} (${submitJson.result})`
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const guid = submitJson.result;
|
|
77
|
+
console.log("Verification GUID:", guid);
|
|
78
|
+
|
|
79
|
+
for (let i = 0; i < 30; i++) {
|
|
80
|
+
await new Promise((r) => setTimeout(r, 5000));
|
|
81
|
+
const statusUrl = new URL("https://mainnet.cotiscan.io/api");
|
|
82
|
+
statusUrl.search = new URLSearchParams({
|
|
83
|
+
apikey: "placeholder",
|
|
84
|
+
module: "contract",
|
|
85
|
+
action: "checkverifystatus",
|
|
86
|
+
guid,
|
|
87
|
+
}).toString();
|
|
88
|
+
const statusRes = await fetch(statusUrl);
|
|
89
|
+
const statusJson = (await statusRes.json()) as {
|
|
90
|
+
status: string;
|
|
91
|
+
result: string;
|
|
92
|
+
};
|
|
93
|
+
console.log("Status:", statusJson.result);
|
|
94
|
+
if (statusJson.result.includes("Pass")) {
|
|
95
|
+
console.log("Contract verified:", address);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (
|
|
99
|
+
statusJson.result.includes("Fail") ||
|
|
100
|
+
statusJson.result.includes("Error")
|
|
101
|
+
) {
|
|
102
|
+
throw new Error(`Verification failed: ${statusJson.result}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
throw new Error("Verification timed out while polling Cotiscan");
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
main().catch((error) => {
|
|
110
|
+
console.error(error);
|
|
111
|
+
process.exitCode = 1;
|
|
112
|
+
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { time } from "@nomicfoundation/hardhat-network-helpers";
|
|
2
2
|
import { expect } from "chai";
|
|
3
3
|
import { ethers } from "hardhat";
|
|
4
4
|
|
|
@@ -14,7 +14,7 @@ describe("PrivateMessaging", () => {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
it("records sent and inbox pages with viewer-specific ciphertext", async () => {
|
|
17
|
-
const { contract, alice, bob, carol, ct } = await
|
|
17
|
+
const { contract, alice, bob, carol, ct } = await deployFixture();
|
|
18
18
|
|
|
19
19
|
await contract.recordSyntheticMessage(
|
|
20
20
|
alice.address,
|
|
@@ -48,7 +48,7 @@ describe("PrivateMessaging", () => {
|
|
|
48
48
|
});
|
|
49
49
|
|
|
50
50
|
it("stores multipart messages and returns chunked ciphertexts", async () => {
|
|
51
|
-
const { contract, alice, bob, carol, ct } = await
|
|
51
|
+
const { contract, alice, bob, carol, ct } = await deployFixture();
|
|
52
52
|
|
|
53
53
|
await contract.recordSyntheticMultipartMessage(
|
|
54
54
|
alice.address,
|
|
@@ -80,7 +80,7 @@ describe("PrivateMessaging", () => {
|
|
|
80
80
|
});
|
|
81
81
|
|
|
82
82
|
it("splits epoch rewards by encrypted cell usage and gives final dust to the last claimant", async () => {
|
|
83
|
-
const { contract, alice, bob, ct } = await
|
|
83
|
+
const { contract, alice, bob, ct } = await deployFixture();
|
|
84
84
|
|
|
85
85
|
await contract.fundEpoch(0, { value: 11n });
|
|
86
86
|
|
|
@@ -125,7 +125,7 @@ describe("PrivateMessaging", () => {
|
|
|
125
125
|
});
|
|
126
126
|
|
|
127
127
|
it("rejects active-epoch claims, double claims, and past-epoch funding", async () => {
|
|
128
|
-
const { contract, alice, bob, ct } = await
|
|
128
|
+
const { contract, alice, bob, ct } = await deployFixture();
|
|
129
129
|
|
|
130
130
|
await contract.fundEpoch(0, { value: 9n });
|
|
131
131
|
await contract.recordSyntheticMessage(
|