Skip to content

Commit 9218bb7

Browse files
committed
Bug fixes
1 parent 38ad687 commit 9218bb7

File tree

4 files changed

+15
-11
lines changed

4 files changed

+15
-11
lines changed

src/rpc/client.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ static const CRPCConvertParam vRPCConvertParams[] =
207207
// Spark names
208208
{ "registersparkname", 2, {} },
209209
{ "getsparknames", 0, {} },
210+
{ "requestsparknametransfer", 3, {} },
210211

211212
/* Evo spork */
212213
{ "spork", 2, "features"},

src/spark/state.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ bool ConnectBlockSpark(
330330
break;
331331

332332
case CSparkNameTxData::opTransfer:
333+
// old name data goes to removed list
333334
pindexNew->removedSparkNames[sparkName.first] =
334335
CSparkNameBlockIndexData(sparkName.second.name,
335336
sparkName.second.oldSparkAddress,
@@ -375,7 +376,7 @@ bool ConnectBlockSpark(
375376
}
376377

377378
CSparkNameManager *sparkNameManager = CSparkNameManager::GetInstance();
378-
379+
379380
auto removedNames = sparkNameManager->RemoveSparkNamesLosingValidity(pindexNew->nHeight);
380381
for (const auto &name: removedNames)
381382
pindexNew->removedSparkNames[name.first] = name.second;

src/sparkname.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -189,13 +189,13 @@ bool CSparkNameManager::CheckSparkNameTx(const CTransaction &tx, int nHeight, CV
189189
if (sparkNames.count(ToUpper(sparkNameData.name)) > 0) {
190190
// it's possible to change any metadata of the existing name but if the spark address is being
191191
// tranferred, new name shouldn't be already registered
192-
if (fSparkNameTransfer || sparkNames[ToUpper(sparkNameData.name)].sparkAddress != sparkNameData.sparkAddress)
192+
if (!fSparkNameTransfer && sparkNames[ToUpper(sparkNameData.name)].sparkAddress != sparkNameData.sparkAddress)
193193
return state.DoS(100, error("CheckSparkNameTx: name already exists"));
194194

195195
fUpdateExistingRecord = true;
196196
}
197197

198-
if (!fUpdateExistingRecord && sparkNameAddresses.count(sparkNameData.sparkAddress) > 0)
198+
if ((fSparkNameTransfer || !fUpdateExistingRecord) && sparkNameAddresses.count(sparkNameData.sparkAddress) > 0)
199199
return state.DoS(100, error("CheckSparkNameTx: spark address is already used for another name"));
200200

201201
// calculate the hash of the all the transaction except the spark ownership proof
@@ -204,7 +204,6 @@ bool CSparkNameManager::CheckSparkNameTx(const CTransaction &tx, int nHeight, CV
204204

205205
txMutable.vExtraPayload.erase(txMutable.vExtraPayload.begin() + sparkNameDataPos, txMutable.vExtraPayload.end());
206206
sparkNameDataCopy.addressOwnershipProof.clear();
207-
sparkNameDataCopy.transferOwnershipProof.clear();
208207
CDataStream serializedSparkNameData(SER_NETWORK, PROTOCOL_VERSION);
209208
serializedSparkNameData << sparkNameDataCopy;
210209
txMutable.vExtraPayload.insert(txMutable.vExtraPayload.end(), serializedSparkNameData.begin(), serializedSparkNameData.end());
@@ -267,16 +266,17 @@ bool CSparkNameManager::CheckSparkNameTx(const CTransaction &tx, int nHeight, CV
267266
}
268267

269268
CHashWriter sparkNameDataStream(SER_GETHASH, PROTOCOL_VERSION);
269+
sparkNameDataCopy.transferOwnershipProof.clear();
270270
sparkNameDataStream << sparkNameDataCopy;
271271

272-
CDataStream hashStream(SER_NETWORK, PROTOCOL_VERSION);
272+
CHashWriter hashStream(SER_NETWORK, PROTOCOL_VERSION);
273273
hashStream << "SparkNameTransferProof";
274274
hashStream << sparkNameData.oldSparkAddress << sparkNameData.sparkAddress;
275275
hashStream << sparkNameDataStream.GetHash();
276276

277277
spark::Scalar mTransfer;
278278
try {
279-
mTransfer.SetHex(hashStream.str().c_str());
279+
mTransfer.SetHex(hashStream.GetHash().ToString());
280280
}
281281
catch (const std::exception &) {
282282
return state.DoS(100, error("CheckSparkNameTx: hash is out of range"));

src/wallet/rpcwallet.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4039,7 +4039,7 @@ UniValue registersparkname(const JSONRPCRequest& request) {
40394039
throw JSONRPCError(RPC_WALLET_ERROR, "Spark name transfers are not activated yet");
40404040
}
40414041

4042-
if (request.params.size() < 3 || request.params.size() > 4)
4042+
if (!fTransfer && request.params.size() > 4)
40434043
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameters");
40444044

40454045
std::string sparkName = request.params[0].get_str();
@@ -4050,14 +4050,16 @@ UniValue registersparkname(const JSONRPCRequest& request) {
40504050
if (numberOfYears < 1 || numberOfYears > 10)
40514051
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid number of years");
40524052

4053-
if (request.params.size() >= 4)
4054-
additionalData = request.params[3].get_str();
4053+
int additionalDataIndex = fTransfer ? 5 : 3;
4054+
if (request.params.size() > additionalDataIndex)
4055+
additionalData = request.params[additionalDataIndex].get_str();
40554056

40564057
if (sparkName.empty() || sparkName.size() > 20)
40574058
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid spark name");
40584059

40594060
CSparkNameTxData sparkNameData;
40604061
sparkNameData.nVersion = chainHeight >= consensusParams.nSparkNamesV2StartBlock ? CSparkNameTxData::CURRENT_VERSION : 1;
4062+
sparkNameData.operationType = fTransfer ? CSparkNameTxData::opTransfer : CSparkNameTxData::opRegister;
40614063
sparkNameData.name = sparkName;
40624064
sparkNameData.sparkAddress = sparkAddress;
40634065
sparkNameData.additionalInfo = additionalData;
@@ -6053,8 +6055,8 @@ static const CRPCCommand commands[] =
60536055
{ "wallet", "identifysparkcoins", &identifysparkcoins, false, {} },
60546056
{ "wallet", "getsparkcoinaddr", &getsparkcoinaddr, false, {} },
60556057
{ "wallet", "registersparkname", &registersparkname, false, {} },
6056-
{ "wallet", "requestsparknamenametransfer", &requestsparknametransfer, false, {} },
6057-
{ "wallet", "tranfersparkname", &transfersparkname, false, {} },
6058+
{ "wallet", "requestsparknametransfer", &requestsparknametransfer, false, {} },
6059+
{ "wallet", "transfersparkname", &transfersparkname, false, {} },
60586060
{ "wallet", "getsparknames", &getsparknames, true, {} },
60596061

60606062
//bip47

0 commit comments

Comments
 (0)