mirror of
https://github.com/wownero/wownero-cpp.git
synced 2026-10-18 07:41:32 +02:00
122 lines
5.8 KiB
C++
122 lines
5.8 KiB
C++
#include "MoneroDaemon.h"
|
|
|
|
#include "utils/MoneroUtils.h"
|
|
#include "include_base_utils.h"
|
|
#include "common/util.h"
|
|
|
|
/**
|
|
* Public interface for libmonero-cpp library.
|
|
*/
|
|
namespace monero {
|
|
|
|
// ------------------------- INITIALIZE CONSTANTS ---------------------------
|
|
|
|
const string MoneroTx::DEFAULT_PAYMENT_ID = string("0000000000000000");
|
|
|
|
// -------------------------- MODEL SERIALIZATION ---------------------------
|
|
|
|
string SerializableStruct::serialize() const {
|
|
return MoneroUtils::serialize(toPropertyTree());
|
|
}
|
|
|
|
boost::property_tree::ptree MoneroBlockHeader::toPropertyTree() const {
|
|
//cout << "MoneroBlockHeader::toPropertyTree(block)" << endl;
|
|
boost::property_tree::ptree node;
|
|
if (id != boost::none) node.put("id", *id);
|
|
if (height != boost::none) node.put("height", *height);
|
|
if (timestamp != boost::none) node.put("timestamp", *timestamp);
|
|
if (size != boost::none) node.put("size", *size);
|
|
if (weight != boost::none) node.put("weight", *weight);
|
|
if (longTermWeight != boost::none) node.put("longTermWeight", *longTermWeight);
|
|
if (depth != boost::none) node.put("depth", *depth);
|
|
if (difficulty != boost::none) node.put("difficulty", *difficulty);
|
|
if (cumulativeDifficulty != boost::none) node.put("cumulativeDifficulty", *height);
|
|
if (majorVersion != boost::none) node.put("majorVersion", *majorVersion);
|
|
if (minorVersion != boost::none) node.put("minorVersion", *minorVersion);
|
|
if (nonce != boost::none) node.put("nonce", *nonce);
|
|
if (coinbaseTxId != boost::none) node.put("coinbaseTxId", *coinbaseTxId);
|
|
if (numTxs != boost::none) node.put("numTxs", *numTxs);
|
|
if (orphanStatus != boost::none) node.put("orphanStatus", *orphanStatus);
|
|
if (prevId != boost::none) node.put("prevId", *prevId);
|
|
if (reward != boost::none) node.put("reward", *reward);
|
|
if (powHash != boost::none) node.put("powHash", *powHash);
|
|
return node;
|
|
}
|
|
|
|
boost::property_tree::ptree MoneroBlock::toPropertyTree() const {
|
|
//cout << "MoneroBlock::toPropertyTree(block)" << endl;
|
|
boost::property_tree::ptree node = MoneroBlockHeader::toPropertyTree();
|
|
if (hex != boost::none) node.put("hex", *hex);
|
|
if (coinbaseTx != boost::none) node.add_child("coinbaseTx", (*coinbaseTx)->toPropertyTree());
|
|
node.add_child("txs", MoneroUtils::toPropertyTree(txs));
|
|
// TODO: handle txIds
|
|
return node;
|
|
}
|
|
|
|
boost::property_tree::ptree MoneroTx::toPropertyTree() const {
|
|
//cout << "MoneroTx::txToPropertyTree(tx)" << endl;
|
|
boost::property_tree::ptree node;
|
|
if (id != boost::none) node.put("id", *id);
|
|
if (version != boost::none) node.put("version", *version);
|
|
if (isCoinbase != boost::none) node.put("isCoinbase", *isCoinbase);
|
|
if (paymentId != boost::none) node.put("paymentId", *paymentId);
|
|
if (fee != boost::none) node.put("fee", *fee);
|
|
if (mixin != boost::none) node.put("mixin", *mixin);
|
|
if (doNotRelay != boost::none) node.put("doNotRelay", *doNotRelay);
|
|
if (isRelayed != boost::none) node.put("isRelayed", *isRelayed);
|
|
if (isConfirmed != boost::none) node.put("isConfirmed", *isConfirmed);
|
|
if (inTxPool != boost::none) node.put("inTxPool", *inTxPool);
|
|
if (numConfirmations != boost::none) node.put("numConfirmations", *numConfirmations);
|
|
if (unlockTime != boost::none) node.put("unlockTime", *unlockTime);
|
|
if (lastRelayedTimestamp != boost::none) node.put("lastRelayedTimestamp", *lastRelayedTimestamp);
|
|
if (receivedTimestamp != boost::none) node.put("receivedTimestamp", *receivedTimestamp);
|
|
if (isDoubleSpend != boost::none) node.put("isDoubleSpend", *isDoubleSpend);
|
|
if (key != boost::none) node.put("key", *key);
|
|
if (fullHex != boost::none) node.put("fullHex", *fullHex);
|
|
if (prunedHex != boost::none) node.put("prunedHex", *prunedHex);
|
|
if (prunableHex != boost::none) node.put("prunableHex", *prunableHex);
|
|
if (prunableHash != boost::none) node.put("prunableHash", *prunableHash);
|
|
if (size != boost::none) node.put("size", *size);
|
|
if (weight != boost::none) node.put("weight", *weight);
|
|
if (!vins.empty()) throw runtime_error("not implemented");
|
|
if (!vouts.empty()) throw runtime_error("not implemented");
|
|
if (!outputIndices.empty()) throw runtime_error("not implemented");
|
|
if (metadata != boost::none) node.put("metadata", *metadata);
|
|
if (commonTxSets != boost::none) throw runtime_error("not implemented");
|
|
if (!extra.empty()) throw runtime_error("not implemented");
|
|
if (rctSignatures != boost::none) throw runtime_error("not implemented");
|
|
if (rctSigPrunable != boost::none) throw runtime_error("not implemented");
|
|
if (isKeptByBlock != boost::none) node.put("isKeptByBlock", *isKeptByBlock);
|
|
if (isFailed != boost::none) node.put("isFailed", *isFailed);
|
|
if (lastFailedHeight != boost::none) node.put("lastFailedHeight", *lastFailedHeight);
|
|
if (lastFailedId != boost::none) node.put("lastFailedId", *lastFailedId);
|
|
if (maxUsedBlockHeight != boost::none) node.put("maxUsedBlockHeight", *maxUsedBlockHeight);
|
|
if (maxUsedBlockId != boost::none) node.put("maxUsedBlockId", *maxUsedBlockId);
|
|
if (!signatures.empty()) throw runtime_error("not implemented");
|
|
return node;
|
|
}
|
|
|
|
// -------------------------- MODEL IMPLEMENTATION --------------------------
|
|
|
|
void MoneroBlockHeader::merge(const MoneroBlockHeader& header) {
|
|
cout << "MoneroBlockHeader::merge()" << endl;
|
|
if (this == &header) return;
|
|
id = MoneroUtils::reconcile(id, header.id);
|
|
throw runtime_error("Not implemented");
|
|
}
|
|
|
|
void MoneroBlock::merge(const MoneroBlock& block) {
|
|
cout << "MoneroBlock::merge()" << endl;
|
|
MoneroBlockHeader::merge(block);
|
|
throw runtime_error("Not implemented");
|
|
}
|
|
|
|
void MoneroTx::merge(const MoneroTx& tx) {
|
|
cout << "MoneroTx::merge()" << endl;
|
|
throw runtime_error("Not implemented");
|
|
}
|
|
|
|
// ---------------------------- PRIVATE HELPERS -----------------------------
|
|
|
|
}
|