more stuff

This commit is contained in:
blackjok3r
2018-10-25 10:24:19 +08:00
parent 81ae02e649
commit e42dcb0474

View File

@@ -257,6 +257,12 @@ UniValue blockToDeltasJSON(const CBlock& block, const CBlockIndex* blockindex)
return result;
}
int convertstreamid(char *streamid_str, char *streamid_hex) {
char decodedhextest[32];
decode_hex(streamid_str,32,streamid_hex);
printf("decoded hex: %s\n",decodedhextest);
}
UniValue getdatafromblock(const UniValue& params, bool fHelp)
{
if (fHelp || params.size() < 1 || params.size() > 2)
@@ -314,12 +320,6 @@ UniValue getdatafromblock(const UniValue& params, bool fHelp)
if(!ReadBlockFromDisk(block, pblockindex,1))
throw JSONRPCError(RPC_INTERNAL_ERROR, "Can't read block from disk");
/*BOOST_FOREACH(const CTransaction&tx, block.vtx)
{
fprintf(stderr, "%s\n",tx.GetHash().GetHex().cstr());
}
return chainActive.Height();
*/
UniValue result(UniValue::VOBJ);
signed int firstseqid,lastseqid;
int i = 0;
@@ -338,9 +338,9 @@ UniValue getdatafromblock(const UniValue& params, bool fHelp)
} else {
std::string opretstr = HexStr(tx.vout[2].scriptPubKey.begin(), tx.vout[2].scriptPubKey.end());
if ( opretstr.size() > 81 ) {
std::string idstr = opretstr.substr (8,64); // stream ID or txid
std::string idstr = opretstr.substr (8,64); // stream ID or txid
std::string seqidstr = opretstr.substr (72,8); // sequence ID
std::string data = opretstr.substr (80); // data chunk
std::string data = opretstr.substr (80); // data chunk
unsigned int seqid;
std::stringstream ss;
ss << std::hex << seqidstr;
@@ -349,6 +349,8 @@ UniValue getdatafromblock(const UniValue& params, bool fHelp)
streamid = idstr;
} else if ( seqid == 2 ) {
firsttxid = idstr;
} else if (firsttxid.isempty()) {
firsttxid == idstr;
}
if ( seqid == (lastseqid + 1 )) {
blockdata.append(data);
@@ -364,13 +366,24 @@ UniValue getdatafromblock(const UniValue& params, bool fHelp)
}
i = i + 1;
}
result.push_back(Pair("streamid", streamid));
if (streamid.isempty()) {
uint256 hash,firsttxid_256; CTransaction firsttx;
firsttxid_256 = bits256_conv(firsttxid);
if (GetTransaction(firsttxid_256,firsttx,hash,false)) {
std::string firststreamid = HexStr(firsttx.vout[2].scriptPubKey.begin(), firsttx.vout[2].scriptPubKey.end());
std::string streamid = firststreamid.substr (8,64);
}
}
char decodedstreamid[32];
decode_hex(decodedstreamid,32,streamid.c_str());
printf("decoded hex: %s\n",decodedstreamid);
result.push_back(Pair("streamid", decodedstreamid);
result.push_back(Pair("firsttxid", firsttxid));
result.push_back(Pair("firstseqid", (int)firstseqid));
result.push_back(Pair("lastseqid", (int)lastseqid));
result.push_back(Pair("data", blockdata));
} else {
result.push_back(Pair("error","there are no TX in this block."));
result.push_back(Pair("error","there is no data in this block."));
}
return result;
}