recognize btc backnotarisations and include ccid in MoMoMdata rpc
This commit is contained in:
@@ -124,13 +124,6 @@ extern char ASSETCHAINS_SYMBOL[65];
|
|||||||
*/
|
*/
|
||||||
class NotarisationData
|
class NotarisationData
|
||||||
{
|
{
|
||||||
bool IsBack()
|
|
||||||
{
|
|
||||||
if (IsBackNotarisation == 2) {
|
|
||||||
return ASSETCHAINS_SYMBOL[0] != 0;
|
|
||||||
}
|
|
||||||
return (bool) IsBackNotarisation;
|
|
||||||
}
|
|
||||||
public:
|
public:
|
||||||
int IsBackNotarisation = 0;
|
int IsBackNotarisation = 0;
|
||||||
uint256 blockHash;
|
uint256 blockHash;
|
||||||
@@ -149,16 +142,21 @@ public:
|
|||||||
|
|
||||||
template <typename Stream, typename Operation>
|
template <typename Stream, typename Operation>
|
||||||
inline void SerializationOp(Stream& s, Operation ser_action, int nType, int nVersion) {
|
inline void SerializationOp(Stream& s, Operation ser_action, int nType, int nVersion) {
|
||||||
|
|
||||||
|
bool IsBack = IsBackNotarisation;
|
||||||
|
if (2 == IsBackNotarisation) IsBack = AutoIsBackNotarisation(s, ser_action);
|
||||||
|
|
||||||
READWRITE(blockHash);
|
READWRITE(blockHash);
|
||||||
READWRITE(height);
|
READWRITE(height);
|
||||||
if (IsBack())
|
if (IsBack)
|
||||||
READWRITE(txHash);
|
READWRITE(txHash);
|
||||||
SerSymbol(s, ser_action);
|
SerSymbol(s, ser_action);
|
||||||
|
if (s.size() == 0) return;
|
||||||
READWRITE(MoM);
|
READWRITE(MoM);
|
||||||
READWRITE(MoMDepth);
|
READWRITE(MoMDepth);
|
||||||
if (s.size() == 0) return;
|
if (s.size() == 0) return;
|
||||||
READWRITE(ccId);
|
READWRITE(ccId);
|
||||||
if (IsBack()) {
|
if (IsBack) {
|
||||||
READWRITE(MoMoM);
|
READWRITE(MoMoM);
|
||||||
READWRITE(MoMoMDepth);
|
READWRITE(MoMoMDepth);
|
||||||
}
|
}
|
||||||
@@ -178,6 +176,20 @@ public:
|
|||||||
throw std::ios_base::failure("couldn't parse symbol");
|
throw std::ios_base::failure("couldn't parse symbol");
|
||||||
s.read(symbol, nullPos-&s[0]+1);
|
s.read(symbol, nullPos-&s[0]+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename Stream>
|
||||||
|
bool AutoIsBackNotarisation(Stream& s, CSerActionUnserialize act)
|
||||||
|
{
|
||||||
|
if (ASSETCHAINS_SYMBOL[0]) return 1;
|
||||||
|
if (s.size() >= 72 && strcmp("BTC", &s[68]) == 0) return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename Stream>
|
||||||
|
bool AutoIsBackNotarisation(Stream& s, CSerActionSerialize act)
|
||||||
|
{
|
||||||
|
return !txHash.IsNull();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -50,29 +50,10 @@ UniValue assetchainproof(const UniValue& params, bool fHelp)
|
|||||||
|
|
||||||
UniValue crosschainproof(const UniValue& params, bool fHelp)
|
UniValue crosschainproof(const UniValue& params, bool fHelp)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
UniValue getproofroot(const UniValue& params, bool fHelp)
|
|
||||||
{
|
|
||||||
std::string symbol;
|
|
||||||
int kmdHeight;
|
|
||||||
|
|
||||||
// parse params and get notarisation data for tx
|
|
||||||
if ( fHelp || params.size() != 2)
|
|
||||||
throw runtime_error("getproofroot needs a symbol and a kmdHeight");
|
|
||||||
symbol = params[0].get_str();
|
|
||||||
kmdHeight = atoi(params[0].get_str().c_str());
|
|
||||||
if (kmdHeight <= 0)
|
|
||||||
throw runtime_error("Invalid kmdHeight");
|
|
||||||
|
|
||||||
UniValue ret(UniValue::VOBJ);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
UniValue height_MoM(const UniValue& params, bool fHelp)
|
UniValue height_MoM(const UniValue& params, bool fHelp)
|
||||||
{
|
{
|
||||||
int32_t height,depth,notarized_height,MoMoMdepth,MoMoMoffset,kmdstarti,kmdendi; uint256 MoM,MoMoM,kmdtxid; uint32_t timestamp = 0; UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR);
|
int32_t height,depth,notarized_height,MoMoMdepth,MoMoMoffset,kmdstarti,kmdendi; uint256 MoM,MoMoM,kmdtxid; uint32_t timestamp = 0; UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR);
|
||||||
@@ -120,10 +101,10 @@ UniValue MoMoMdata(const UniValue& params, bool fHelp)
|
|||||||
UniValue ret(UniValue::VOBJ);
|
UniValue ret(UniValue::VOBJ);
|
||||||
char* symbol = (char *)params[0].get_str().c_str();
|
char* symbol = (char *)params[0].get_str().c_str();
|
||||||
int kmdheight = atoi(params[1].get_str().c_str());
|
int kmdheight = atoi(params[1].get_str().c_str());
|
||||||
int ccid = atoi(params[2].get_str().c_str());
|
uint32_t ccid = atoi(params[2].get_str().c_str());
|
||||||
ret.push_back(Pair("coin",symbol));
|
ret.push_back(Pair("coin",symbol));
|
||||||
ret.push_back(Pair("kmdheight",kmdheight));
|
ret.push_back(Pair("kmdheight",kmdheight));
|
||||||
ret.push_back(Pair("ccid", ccid));
|
ret.push_back(Pair("ccid", (int) ccid));
|
||||||
|
|
||||||
uint256 destNotarisationTxid;
|
uint256 destNotarisationTxid;
|
||||||
std::vector<uint256> moms;
|
std::vector<uint256> moms;
|
||||||
@@ -134,7 +115,7 @@ UniValue MoMoMdata(const UniValue& params, bool fHelp)
|
|||||||
ret.push_back(Pair("MoMs", valMoms));
|
ret.push_back(Pair("MoMs", valMoms));
|
||||||
ret.push_back(Pair("notarization_hash", destNotarisationTxid.GetHex()));
|
ret.push_back(Pair("notarization_hash", destNotarisationTxid.GetHex()));
|
||||||
ret.push_back(Pair("MoMoM", MoMoM.GetHex()));
|
ret.push_back(Pair("MoMoM", MoMoM.GetHex()));
|
||||||
auto vmomomdata = E_MARSHAL(ss << MoMoM; ss << ((uint32_t)0));
|
auto vmomomdata = E_MARSHAL(ss << ccid; ss << MoMoM; ss << ((uint32_t)0));
|
||||||
ret.push_back(Pair("data", HexStr(vmomomdata)));
|
ret.push_back(Pair("data", HexStr(vmomomdata)));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user