mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-14 00:58:09 +00:00
Fixed keva_delete.
This commit is contained in:
parent
df20cfc6d2
commit
f6b074a81c
@ -359,11 +359,6 @@ CheckKevaTransaction (const CTransaction& tx, unsigned nHeight,
|
||||
if (!nameOpIn.isAnyUpdate() && !nameOpIn.isNamespaceRegistration()) {
|
||||
return state.Invalid(error("CheckKevaTransaction: KEVA_DELETE with prev input that is no update"));
|
||||
}
|
||||
CKevaData data;
|
||||
const bool hasKey = view.GetName(nameSpace, nameOpOut.getOpKey(), data);
|
||||
if (!hasKey) {
|
||||
return state.Invalid(error("CheckKevaTransaction: no key to delete"));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -410,7 +405,10 @@ void ApplyKevaTransaction(const CTransaction& tx, unsigned nHeight,
|
||||
|
||||
CKevaData data;
|
||||
if (op.isDelete()) {
|
||||
view.DeleteName(nameSpace, key);
|
||||
CKevaData oldData;
|
||||
if (view.GetName(nameSpace, key, oldData)) {
|
||||
view.DeleteName(nameSpace, key);
|
||||
}
|
||||
} else {
|
||||
data.fromScript(nHeight, COutPoint(tx.GetHash(), i), op);
|
||||
view.SetName(nameSpace, key, data, false);
|
||||
|
@ -327,18 +327,25 @@ UniValue keva_delete(const JSONRPCRequest& request)
|
||||
throw JSONRPCError (RPC_INVALID_PARAMETER, "the key is too long");
|
||||
}
|
||||
|
||||
bool hasKey = false;
|
||||
CKevaData data;
|
||||
{
|
||||
LOCK2(cs_main, mempool.cs);
|
||||
if (!pcoinsTip->GetName(nameSpace, key, data)) {
|
||||
std::vector<std::tuple<valtype, valtype, valtype, uint256>> unconfirmedKeyValueList;
|
||||
valtype val;
|
||||
if (!mempool.getUnconfirmedKeyValue(nameSpace, key, val) || val.size() == 0) {
|
||||
throw JSONRPCError (RPC_TRANSACTION_ERROR, "key not found");
|
||||
std::vector<std::tuple<valtype, valtype, valtype, uint256>> unconfirmedKeyValueList;
|
||||
valtype val;
|
||||
if (mempool.getUnconfirmedKeyValue(nameSpace, key, val)) {
|
||||
if (val.size() > 0) {
|
||||
hasKey = true;
|
||||
}
|
||||
} else if (pcoinsTip->GetName(nameSpace, key, data)) {
|
||||
hasKey = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasKey) {
|
||||
throw JSONRPCError (RPC_TRANSACTION_ERROR, "key not found");
|
||||
}
|
||||
|
||||
EnsureWalletIsUnlocked(pwallet);
|
||||
|
||||
COutput output;
|
||||
|
Loading…
Reference in New Issue
Block a user