-
-
Save w1nt3r-eth/e3a6701cb4bc144c8d86036c59846fe9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721EnumerableUpgradeable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721EnumerableUpgradeable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721EnumerableUpgradeable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721EnumerableUpgradeable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/interfaces/IERC1271.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/interfaces/IERC1271.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/interfaces/IERC1271.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/interfaces/IERC1271.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/Address.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/Address.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/Address.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/Address.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/StorageSlot.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/StorageSlot.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/StorageSlot.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/StorageSlot.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/Strings.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/Strings.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/Strings.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/Strings.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol | |
diff --git a/nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol b/nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol | |
similarity index 100% | |
rename from nouns_data/NounsDAOData/Users/david/projects/crypto/nouns/dao-logic-v3/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol | |
rename to nouns_data/NounsDAOData/Users/elad/code/nounsDAO/nouns-monorepo/node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol | |
diff --git a/nouns_data/NounsDAOData/contracts/governance/data/NounsDAOData.sol b/nouns_data/NounsDAOData/contracts/governance/data/NounsDAOData.sol | |
index 64528fc..d3c511e 100644 | |
--- a/nouns_data/NounsDAOData/contracts/governance/data/NounsDAOData.sol | |
+++ b/nouns_data/NounsDAOData/contracts/governance/data/NounsDAOData.sol | |
@@ -19,11 +19,15 @@ pragma solidity ^0.8.19; | |
import { OwnableUpgradeable } from '@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol'; | |
import { NounsDAOV3Proposals } from '../NounsDAOV3Proposals.sol'; | |
-import { NounsTokenLike } from '../NounsDAOInterfaces.sol'; | |
+import { NounsTokenLike, NounsDAOStorageV3 } from '../NounsDAOInterfaces.sol'; | |
import { SignatureChecker } from '../../external/openzeppelin/SignatureChecker.sol'; | |
import { UUPSUpgradeable } from '@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol'; | |
import { NounsDAODataEvents } from './NounsDAODataEvents.sol'; | |
+interface INounsDAO { | |
+ function proposalsV3(uint256 proposalId) external view returns (NounsDAOStorageV3.ProposalCondensed memory); | |
+} | |
+ | |
contract NounsDAOData is OwnableUpgradeable, UUPSUpgradeable, NounsDAODataEvents { | |
/** | |
* ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
@@ -38,6 +42,9 @@ contract NounsDAOData is OwnableUpgradeable, UUPSUpgradeable, NounsDAODataEvents | |
error FailedWithdrawingETH(bytes data); | |
error InvalidSignature(); | |
error InvalidSupportValue(); | |
+ error ProposalToUpdateMustBeUpdatable(); | |
+ error OnlyProposerCanCreateUpdateCandidate(); | |
+ error UpdateProposalCandidatesOnlyWorkWithProposalsBySigs(); | |
/** | |
* ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ | |
@@ -99,6 +106,12 @@ contract NounsDAOData is OwnableUpgradeable, UUPSUpgradeable, NounsDAODataEvents | |
/** | |
* @notice Create a new proposal candidate by emitting an event. Nouners can post for free, while non-Nouners must pay `createCandidateCost` in ETH. | |
+ * When used to update a proposal created by signatures, `proposalIdToUpdate` should be the ID of the proposal to update, | |
+ * and no fee is required. | |
+ * Also in this case, the following conditions must be met: | |
+ * 1. The proposal must be in the Updatable state. | |
+ * 2. `msg.sender` must be the same as the proposer of the proposal to update. | |
+ * 3. The proposal must have at least one signer. | |
* @dev Reverts if the proposer (msg.sender) has already created a candidate with the same slug. | |
* @param targets the candidate proposal targets. | |
* @param values the candidate proposal values. | |
@@ -117,8 +130,19 @@ contract NounsDAOData is OwnableUpgradeable, UUPSUpgradeable, NounsDAODataEvents | |
string memory slug, | |
uint256 proposalIdToUpdate | |
) external payable { | |
- if (!isNouner(msg.sender) && msg.value < createCandidateCost) revert MustBeNounerOrPaySufficientFee(); | |
+ if (proposalIdToUpdate > 0) { | |
+ INounsDAO dao = INounsDAO(nounsDao); | |
+ NounsDAOStorageV3.ProposalCondensed memory propInfo = dao.proposalsV3(proposalIdToUpdate); | |
+ | |
+ if (block.number > propInfo.updatePeriodEndBlock) revert ProposalToUpdateMustBeUpdatable(); | |
+ if (propInfo.proposer != msg.sender) revert OnlyProposerCanCreateUpdateCandidate(); | |
+ if (propInfo.signers.length == 0) revert UpdateProposalCandidatesOnlyWorkWithProposalsBySigs(); | |
+ } else { | |
+ if (!isNouner(msg.sender) && msg.value < createCandidateCost) revert MustBeNounerOrPaySufficientFee(); | |
+ } | |
+ | |
if (propCandidates[msg.sender][keccak256(bytes(slug))]) revert SlugAlreadyUsed(); | |
+ NounsDAOV3Proposals.checkProposalTxs(NounsDAOV3Proposals.ProposalTxs(targets, values, signatures, calldatas)); | |
propCandidates[msg.sender][keccak256(bytes(slug))] = true; | |
@@ -170,6 +194,7 @@ contract NounsDAOData is OwnableUpgradeable, UUPSUpgradeable, NounsDAODataEvents | |
) external payable { | |
if (!isNouner(msg.sender) && msg.value < updateCandidateCost) revert MustBeNounerOrPaySufficientFee(); | |
if (!propCandidates[msg.sender][keccak256(bytes(slug))]) revert SlugDoesNotExist(); | |
+ NounsDAOV3Proposals.checkProposalTxs(NounsDAOV3Proposals.ProposalTxs(targets, values, signatures, calldatas)); | |
bytes memory encodedProp = NounsDAOV3Proposals.calcProposalEncodeData( | |
msg.sender, |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Repro: