diff --git a/src/wallet/rpckeva.cpp b/src/wallet/rpckeva.cpp index 8f6b696c6..91c4a1ce7 100644 --- a/src/wallet/rpckeva.cpp +++ b/src/wallet/rpckeva.cpp @@ -360,11 +360,10 @@ UniValue keva_delete(const JSONRPCRequest& request) CPubKey pubKeyReserve; const bool ok = keyName.GetReservedKey(pubKeyReserve, true); assert(ok); - bool usedKey = false; - CScript addrName; - usedKey = true; - addrName = GetScriptForDestination(pubKeyReserve.GetID()); + CScript redeemScript = GetScriptForDestination(WitnessV0KeyHash(pubKeyReserve.GetID())); + CScriptID scriptHash = CScriptID(redeemScript); + CScript addrName = GetScriptForDestination(scriptHash); const CScript kevaScript = CKevaScript::buildKevaDelete(addrName, nameSpace, key); @@ -374,9 +373,7 @@ UniValue keva_delete(const JSONRPCRequest& request) SendMoneyToScript(pwallet, kevaScript, &txIn, empty, KEVA_LOCKED_AMOUNT, false, wtx, coinControl); - if (usedKey) { - keyName.KeepKey(); - } + keyName.KeepKey(); UniValue obj(UniValue::VOBJ); obj.pushKV("txid", wtx.GetHash().GetHex()); diff --git a/test/functional/feature_keva.py b/test/functional/feature_keva.py old mode 100644 new mode 100755 index f0450740d..2b228a6f5 --- a/test/functional/feature_keva.py +++ b/test/functional/feature_keva.py @@ -92,5 +92,12 @@ class KevaTest(BitcoinTestFramework): response = self.nodes[0].keva_get(namespaceId, keyToDelete) assert(response['value'] == '') + self.log.info("Test reset the value after deleting") + newValue = 'This is the new value' + self.nodes[0].keva_put(namespaceId, keyToDelete, newValue) + self.nodes[0].generate(1) + response = self.nodes[0].keva_get(namespaceId, keyToDelete) + assert(response['value'] == newValue) + if __name__ == '__main__': KevaTest().main()