Skip to content

Commit

Permalink
Merge pull request #339 from OriginTrail/feature/add-check-for-KC-sta…
Browse files Browse the repository at this point in the history
…rt-epoch-in-submitKnowledgeCollection

Add KC epoch created check
  • Loading branch information
Mihajlo-Pavlovic authored Feb 13, 2025
2 parents a851597 + d250078 commit 8300953
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
4 changes: 4 additions & 0 deletions contracts/libraries/ParanetLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -249,4 +249,8 @@ library ParanetLib {
uint96 currentCumulativeWeight,
uint96 targetCumulativeWeight
);
error KnowledgeCollectionNotInFirstEpoch(
address knowledgeCollectionStorageContract,
uint256 knowledgeCollectionTokenId
);
}
14 changes: 13 additions & 1 deletion contracts/paranets/Paranet.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {ParanetServicesRegistry} from "../storage/paranets/ParanetServicesRegist
import {ProfileStorage} from "../storage/ProfileStorage.sol";
import {IdentityStorage} from "../storage/IdentityStorage.sol";
import {KnowledgeCollectionStorage} from "../storage/KnowledgeCollectionStorage.sol";
import {Chronos} from "../storage/Chronos.sol";
import {ContractStatus} from "../abstract/ContractStatus.sol";
import {IInitializable} from "../interfaces/IInitializable.sol";
import {INamed} from "../interfaces/INamed.sol";
Expand Down Expand Up @@ -142,6 +143,7 @@ contract Paranet is INamed, IVersioned, ContractStatus, IInitializable {
ParanetKnowledgeCollectionsRegistry public paranetKnowledgeCollectionsRegistry;
ProfileStorage public profileStorage;
IdentityStorage public identityStorage;
Chronos public chronos;

// solhint-disable-next-line no-empty-blocks
constructor(address hubAddress) ContractStatus(hubAddress) {}
Expand Down Expand Up @@ -178,6 +180,7 @@ contract Paranet is INamed, IVersioned, ContractStatus, IInitializable {
paranetKnowledgeCollectionsRegistry = ParanetKnowledgeCollectionsRegistry(
hub.getContractAddress("ParanetKnowledgeCollectionsRegistry")
);
chronos = Chronos(hub.getContractAddress("Chronos"));
}

function name() external pure virtual override returns (string memory) {
Expand Down Expand Up @@ -1035,6 +1038,16 @@ contract Paranet is INamed, IVersioned, ContractStatus, IInitializable {
paranetKnowledgeAssetTokenId
);
}
KnowledgeCollectionStorage kcs = KnowledgeCollectionStorage(knowledgeCollectionStorageContract);
uint256 currentEpoch = chronos.getCurrentEpoch();
uint40 kcStartEpoch = kcs.getStartEpoch(knowledgeCollectionTokenId);

if (kcStartEpoch == currentEpoch || kcStartEpoch - 1 == currentEpoch) {
revert ParanetLib.KnowledgeCollectionNotInFirstEpoch(
knowledgeCollectionStorageContract,
knowledgeCollectionTokenId
);
}

ParanetLib.MinersAccessPolicy minersAccessPolicy = pr.getMinersAccessPolicy(paranetId);

Expand Down Expand Up @@ -1072,7 +1085,6 @@ contract Paranet is INamed, IVersioned, ContractStatus, IInitializable {
);
}

KnowledgeCollectionStorage kcs = KnowledgeCollectionStorage(knowledgeCollectionStorageContract);
uint96 remainingTokenAmount = kcs.getTokenAmount(knowledgeCollectionTokenId);
KnowledgeCollectionLib.MerkleRoot[] memory merkleRoots = kcs.getMerkleRoots(knowledgeCollectionTokenId);

Expand Down

0 comments on commit 8300953

Please sign in to comment.