mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-27 23:34:20 +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()) {
|
if (!nameOpIn.isAnyUpdate() && !nameOpIn.isNamespaceRegistration()) {
|
||||||
return state.Invalid(error("CheckKevaTransaction: KEVA_DELETE with prev input that is no update"));
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
@ -410,7 +405,10 @@ void ApplyKevaTransaction(const CTransaction& tx, unsigned nHeight,
|
|||||||
|
|
||||||
CKevaData data;
|
CKevaData data;
|
||||||
if (op.isDelete()) {
|
if (op.isDelete()) {
|
||||||
view.DeleteName(nameSpace, key);
|
CKevaData oldData;
|
||||||
|
if (view.GetName(nameSpace, key, oldData)) {
|
||||||
|
view.DeleteName(nameSpace, key);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
data.fromScript(nHeight, COutPoint(tx.GetHash(), i), op);
|
data.fromScript(nHeight, COutPoint(tx.GetHash(), i), op);
|
||||||
view.SetName(nameSpace, key, data, false);
|
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");
|
throw JSONRPCError (RPC_INVALID_PARAMETER, "the key is too long");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool hasKey = false;
|
||||||
CKevaData data;
|
CKevaData data;
|
||||||
{
|
{
|
||||||
LOCK2(cs_main, mempool.cs);
|
LOCK2(cs_main, mempool.cs);
|
||||||
if (!pcoinsTip->GetName(nameSpace, key, data)) {
|
std::vector<std::tuple<valtype, valtype, valtype, uint256>> unconfirmedKeyValueList;
|
||||||
std::vector<std::tuple<valtype, valtype, valtype, uint256>> unconfirmedKeyValueList;
|
valtype val;
|
||||||
valtype val;
|
if (mempool.getUnconfirmedKeyValue(nameSpace, key, val)) {
|
||||||
if (!mempool.getUnconfirmedKeyValue(nameSpace, key, val) || val.size() == 0) {
|
if (val.size() > 0) {
|
||||||
throw JSONRPCError (RPC_TRANSACTION_ERROR, "key not found");
|
hasKey = true;
|
||||||
}
|
}
|
||||||
|
} else if (pcoinsTip->GetName(nameSpace, key, data)) {
|
||||||
|
hasKey = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!hasKey) {
|
||||||
|
throw JSONRPCError (RPC_TRANSACTION_ERROR, "key not found");
|
||||||
|
}
|
||||||
|
|
||||||
EnsureWalletIsUnlocked(pwallet);
|
EnsureWalletIsUnlocked(pwallet);
|
||||||
|
|
||||||
COutput output;
|
COutput output;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user