Skip to content

Commit 8f3a81b

Browse files
committed
[BDAP] Check for duplicate link pubkey in accept to mempool
1 parent 16b1865 commit 8f3a81b

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

src/validation.cpp

+18-4
Original file line numberDiff line numberDiff line change
@@ -851,20 +851,34 @@ bool AcceptToMemoryPoolWorker(CTxMemPool& pool, CValidationState& state, const C
851851
}
852852
}
853853
}
854-
/*
855-
// TODO (BDAP): Implement link delete
856854
else if (strOpType == "bdap_new_link_request" || strOpType == "bdap_new_link_accept") {
857855
if (vvch.size() < 1)
858856
return state.Invalid(false, REJECT_INVALID, "bdap-txn-pubkey-parameter-not-found");
859857
if (vvch.size() > 3)
860858
return state.Invalid(false, REJECT_INVALID, "bdap-txn-too-many-parameters");
861-
859+
//check for duplicate pubkeys
862860
std::vector<unsigned char> vchPubKey = vvch[0];
863861
if (LinkPubKeyExistsInMemPool(pool, vchPubKey, strOpType, strErrorMessage))
864862
return state.Invalid(false, REJECT_ALREADY_KNOWN, "bdap-link-pubkey-txn-already-in-mempool");
863+
864+
if (LinkPubKeyExists(vchPubKey))
865+
return state.Invalid(false, REJECT_ALREADY_KNOWN, "bdap-link-duplicate-pubkey");
866+
867+
CDomainEntry prevEntry;
868+
if (GetDomainEntryPubKey(vchPubKey, prevEntry))
869+
return state.Invalid(false, REJECT_ALREADY_KNOWN, "bdap-link-duplicate-pubkey-entry");
870+
871+
if (vvch.size() > 1) {
872+
std::vector<unsigned char> vchSharedPubKey = vvch[1];
873+
if (LinkPubKeyExists(vchSharedPubKey))
874+
return state.Invalid(false, REJECT_ALREADY_KNOWN, "bdap-link-duplicate-shared-pubkey");
875+
876+
if (GetDomainEntryPubKey(vchSharedPubKey, prevEntry))
877+
return state.Invalid(false, REJECT_ALREADY_KNOWN, "bdap-link-duplicate-shared-pubkey-entry");
878+
}
865879
}
866880
// TODO (BDAP): Implement link delete
867-
881+
/*
868882
else if (strOpType == "bdap_delete_link_request" || strOpType == "bdap_delete_link_accept") {
869883
if (vvch.size() < 1)
870884
return state.Invalid(false, REJECT_INVALID, "bdap-txn-pubkey-parameter-not-found");

0 commit comments

Comments
 (0)