merged
This commit is contained in:
parent
ec2057cf9c
commit
e563c015e8
|
@ -173,7 +173,7 @@ set_target_properties(wallet-crypto PROPERTIES IMPORTED_LOCATION
|
||||||
|
|
||||||
add_library(cryptonote_format_utils_basic STATIC IMPORTED)
|
add_library(cryptonote_format_utils_basic STATIC IMPORTED)
|
||||||
set_target_properties(cryptonote_format_utils_basic PROPERTIES IMPORTED_LOCATION
|
set_target_properties(cryptonote_format_utils_basic PROPERTIES IMPORTED_LOCATION
|
||||||
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/monero/libcryptonote_format_utils_basic.a)
|
${EXTERNAL_LIBS_DIR}/${ANDROID_ABI}/wownero/libcryptonote_format_utils_basic.a)
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# System
|
# System
|
||||||
|
|
|
@ -8,7 +8,7 @@ android {
|
||||||
applicationId "com.m2049r.wowwallet"
|
applicationId "com.m2049r.wowwallet"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 30
|
targetSdkVersion 30
|
||||||
versionCode 11010
|
versionCode 1101000
|
||||||
versionName "2.1.1.0 'Vertant'"
|
versionName "2.1.1.0 'Vertant'"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
|
|
|
@ -191,12 +191,13 @@ struct MyWalletListener : Monero::WalletListener {
|
||||||
/**
|
/**
|
||||||
* @brief refreshed - called when wallet refreshed by background thread or explicitly refreshed by calling "refresh" synchronously
|
* @brief refreshed - called when wallet refreshed by background thread or explicitly refreshed by calling "refresh" synchronously
|
||||||
*/
|
*/
|
||||||
void refreshed() {
|
void refreshed(bool success) {
|
||||||
std::lock_guard<std::mutex> lock(_listenerMutex);
|
std::lock_guard<std::mutex> lock(_listenerMutex);
|
||||||
if (jlistener == nullptr) return;
|
if (jlistener == nullptr) return;
|
||||||
LOGD("refreshed");
|
LOGD("refreshed %s", success ? "true" : "false");
|
||||||
JNIEnv *jenv;
|
if (!success) return;
|
||||||
|
|
||||||
|
JNIEnv *jenv;
|
||||||
int envStat = attachJVM(&jenv);
|
int envStat = attachJVM(&jenv);
|
||||||
if (envStat == JNI_ERR) return;
|
if (envStat == JNI_ERR) return;
|
||||||
|
|
||||||
|
@ -229,7 +230,7 @@ std::vector<std::string> java2cpp(JNIEnv *env, jobject arrayList) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
jobject cpp2java(JNIEnv *env, const std::vector<std::string>& vector) {
|
jobject cpp2java(JNIEnv *env, const std::vector<std::string> &vector) {
|
||||||
|
|
||||||
jmethodID java_util_ArrayList_ = env->GetMethodID(class_ArrayList, "<init>", "(I)V");
|
jmethodID java_util_ArrayList_ = env->GetMethodID(class_ArrayList, "<init>", "(I)V");
|
||||||
jmethodID java_util_ArrayList_add = env->GetMethodID(class_ArrayList, "add",
|
jmethodID java_util_ArrayList_add = env->GetMethodID(class_ArrayList, "add",
|
||||||
|
@ -506,8 +507,8 @@ Java_com_m2049r_xmrwallet_model_WalletManager_startMining(JNIEnv *env, jobject i
|
||||||
const char *_address = env->GetStringUTFChars(address, nullptr);
|
const char *_address = env->GetStringUTFChars(address, nullptr);
|
||||||
bool success =
|
bool success =
|
||||||
Monero::WalletManagerFactory::getWalletManager()->startMining(std::string(_address),
|
Monero::WalletManagerFactory::getWalletManager()->startMining(std::string(_address),
|
||||||
background_mining,
|
background_mining,
|
||||||
ignore_battery);
|
ignore_battery);
|
||||||
env->ReleaseStringUTFChars(address, _address);
|
env->ReleaseStringUTFChars(address, _address);
|
||||||
return static_cast<jboolean>(success);
|
return static_cast<jboolean>(success);
|
||||||
}
|
}
|
||||||
|
@ -538,7 +539,7 @@ Java_com_m2049r_xmrwallet_model_WalletManager_closeJ(JNIEnv *env, jobject instan
|
||||||
jobject walletInstance) {
|
jobject walletInstance) {
|
||||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, walletInstance);
|
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, walletInstance);
|
||||||
bool closeSuccess = Monero::WalletManagerFactory::getWalletManager()->closeWallet(wallet,
|
bool closeSuccess = Monero::WalletManagerFactory::getWalletManager()->closeWallet(wallet,
|
||||||
false);
|
false);
|
||||||
if (closeSuccess) {
|
if (closeSuccess) {
|
||||||
MyWalletListener *walletListener = getHandle<MyWalletListener>(env, walletInstance,
|
MyWalletListener *walletListener = getHandle<MyWalletListener>(env, walletInstance,
|
||||||
"listenerHandle");
|
"listenerHandle");
|
||||||
|
@ -937,9 +938,9 @@ Java_com_m2049r_xmrwallet_model_Wallet_createTransactionJ(JNIEnv *env, jobject i
|
||||||
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
Monero::Wallet *wallet = getHandle<Monero::Wallet>(env, instance);
|
||||||
|
|
||||||
Monero::PendingTransaction *tx = wallet->createTransaction(_dst_addr, _payment_id,
|
Monero::PendingTransaction *tx = wallet->createTransaction(_dst_addr, _payment_id,
|
||||||
amount, (uint32_t) mixin_count,
|
amount, (uint32_t) mixin_count,
|
||||||
_priority,
|
_priority,
|
||||||
(uint32_t) accountIndex);
|
(uint32_t) accountIndex);
|
||||||
|
|
||||||
env->ReleaseStringUTFChars(dst_addr, _dst_addr);
|
env->ReleaseStringUTFChars(dst_addr, _dst_addr);
|
||||||
env->ReleaseStringUTFChars(payment_id, _payment_id);
|
env->ReleaseStringUTFChars(payment_id, _payment_id);
|
||||||
|
@ -962,9 +963,9 @@ Java_com_m2049r_xmrwallet_model_Wallet_createSweepTransaction(JNIEnv *env, jobje
|
||||||
Monero::optional<uint64_t> empty;
|
Monero::optional<uint64_t> empty;
|
||||||
|
|
||||||
Monero::PendingTransaction *tx = wallet->createTransaction(_dst_addr, _payment_id,
|
Monero::PendingTransaction *tx = wallet->createTransaction(_dst_addr, _payment_id,
|
||||||
empty, (uint32_t) mixin_count,
|
empty, (uint32_t) mixin_count,
|
||||||
_priority,
|
_priority,
|
||||||
(uint32_t) accountIndex);
|
(uint32_t) accountIndex);
|
||||||
|
|
||||||
env->ReleaseStringUTFChars(dst_addr, _dst_addr);
|
env->ReleaseStringUTFChars(dst_addr, _dst_addr);
|
||||||
env->ReleaseStringUTFChars(payment_id, _payment_id);
|
env->ReleaseStringUTFChars(payment_id, _payment_id);
|
||||||
|
@ -1174,7 +1175,7 @@ Java_com_m2049r_xmrwallet_model_Wallet_getLastSubaddress(JNIEnv *env, jobject in
|
||||||
JNIEXPORT jint JNICALL
|
JNIEXPORT jint JNICALL
|
||||||
Java_com_m2049r_xmrwallet_model_TransactionHistory_getCount(JNIEnv *env, jobject instance) {
|
Java_com_m2049r_xmrwallet_model_TransactionHistory_getCount(JNIEnv *env, jobject instance) {
|
||||||
Monero::TransactionHistory *history = getHandle<Monero::TransactionHistory>(env,
|
Monero::TransactionHistory *history = getHandle<Monero::TransactionHistory>(env,
|
||||||
instance);
|
instance);
|
||||||
return history->count();
|
return history->count();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1241,7 +1242,7 @@ jobject newTransactionInfo(JNIEnv *env, Monero::TransactionInfo *info) {
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
jobject cpp2java(JNIEnv *env, const std::vector<Monero::TransactionInfo *>& vector) {
|
jobject cpp2java(JNIEnv *env, const std::vector<Monero::TransactionInfo *> &vector) {
|
||||||
|
|
||||||
jmethodID java_util_ArrayList_ = env->GetMethodID(class_ArrayList, "<init>", "(I)V");
|
jmethodID java_util_ArrayList_ = env->GetMethodID(class_ArrayList, "<init>", "(I)V");
|
||||||
jmethodID java_util_ArrayList_add = env->GetMethodID(class_ArrayList, "add",
|
jmethodID java_util_ArrayList_add = env->GetMethodID(class_ArrayList, "add",
|
||||||
|
@ -1260,7 +1261,7 @@ jobject cpp2java(JNIEnv *env, const std::vector<Monero::TransactionInfo *>& vect
|
||||||
JNIEXPORT jobject JNICALL
|
JNIEXPORT jobject JNICALL
|
||||||
Java_com_m2049r_xmrwallet_model_TransactionHistory_refreshJ(JNIEnv *env, jobject instance) {
|
Java_com_m2049r_xmrwallet_model_TransactionHistory_refreshJ(JNIEnv *env, jobject instance) {
|
||||||
Monero::TransactionHistory *history = getHandle<Monero::TransactionHistory>(env,
|
Monero::TransactionHistory *history = getHandle<Monero::TransactionHistory>(env,
|
||||||
instance);
|
instance);
|
||||||
history->refresh();
|
history->refresh();
|
||||||
return cpp2java(env, history->getAll());
|
return cpp2java(env, history->getAll());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
MONERUJO_wownero master with wownero wonerujo
|
MONERUJO_wownero feature-v0.10 with wownero wonerujo-v0.10.1.0
|
||||||
|
|
|
@ -66,6 +66,47 @@ enum NetworkType : uint8_t {
|
||||||
bool set;
|
bool set;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @brief Transaction construction data
|
||||||
|
*/
|
||||||
|
struct TransactionConstructionInfo
|
||||||
|
{
|
||||||
|
struct Input {
|
||||||
|
Input(uint64_t _amount, const std::string &_pubkey);
|
||||||
|
const uint64_t amount;
|
||||||
|
const std::string pubkey;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Output {
|
||||||
|
Output(uint64_t _amount, const std::string &_address);
|
||||||
|
const uint64_t amount;
|
||||||
|
const std::string address;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtual ~TransactionConstructionInfo() = 0;
|
||||||
|
virtual uint64_t unlockTime() const = 0;
|
||||||
|
virtual std::set<std::uint32_t> subaddressIndices() const = 0;
|
||||||
|
virtual std::vector<std::string> subaddresses() const = 0;
|
||||||
|
virtual uint64_t minMixinCount() const = 0;
|
||||||
|
virtual std::vector<Input> inputs() const = 0;
|
||||||
|
virtual std::vector<Output> outputs() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @brief Detailed pending transaction information
|
||||||
|
*/
|
||||||
|
struct PendingTransactionInfo
|
||||||
|
{
|
||||||
|
virtual ~PendingTransactionInfo() = 0;
|
||||||
|
virtual uint64_t fee() const = 0;
|
||||||
|
virtual uint64_t dust() const = 0;
|
||||||
|
virtual bool dustAddedToFee() const = 0;
|
||||||
|
virtual std::string txKey() const = 0;
|
||||||
|
virtual TransactionConstructionInfo * constructionData() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Transaction-like interface for sending money
|
* @brief Transaction-like interface for sending money
|
||||||
*/
|
*/
|
||||||
|
@ -101,6 +142,13 @@ struct PendingTransaction
|
||||||
virtual uint64_t txCount() const = 0;
|
virtual uint64_t txCount() const = 0;
|
||||||
virtual std::vector<uint32_t> subaddrAccount() const = 0;
|
virtual std::vector<uint32_t> subaddrAccount() const = 0;
|
||||||
virtual std::vector<std::set<uint32_t>> subaddrIndices() const = 0;
|
virtual std::vector<std::set<uint32_t>> subaddrIndices() const = 0;
|
||||||
|
virtual std::string unsignedTxToBin() const = 0;
|
||||||
|
virtual std::string unsignedTxToBase64() const = 0;
|
||||||
|
virtual std::string signedTxToHex(int index) const = 0;
|
||||||
|
virtual size_t signedTxSize(int index) const = 0;
|
||||||
|
virtual PendingTransactionInfo * transaction(int index) const = 0;
|
||||||
|
virtual void refresh() = 0;
|
||||||
|
virtual std::vector<PendingTransactionInfo*> getAll() const = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief multisigSignData
|
* @brief multisigSignData
|
||||||
|
@ -160,6 +208,9 @@ struct UnsignedTransaction
|
||||||
* return - true on success
|
* return - true on success
|
||||||
*/
|
*/
|
||||||
virtual bool sign(const std::string &signedFileName) = 0;
|
virtual bool sign(const std::string &signedFileName) = 0;
|
||||||
|
virtual void refresh() = 0;
|
||||||
|
virtual std::vector<TransactionConstructionInfo*> getAll() const = 0;
|
||||||
|
virtual TransactionConstructionInfo * transaction(int index) const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -198,6 +249,7 @@ struct TransactionInfo
|
||||||
virtual std::string paymentId() const = 0;
|
virtual std::string paymentId() const = 0;
|
||||||
//! only applicable for output transactions
|
//! only applicable for output transactions
|
||||||
virtual const std::vector<Transfer> & transfers() const = 0;
|
virtual const std::vector<Transfer> & transfers() const = 0;
|
||||||
|
virtual const std::vector<std::pair<std::string, std::vector<uint64_t>>> & rings() const = 0;
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* @brief The TransactionHistory - interface for displaying transaction history
|
* @brief The TransactionHistory - interface for displaying transaction history
|
||||||
|
@ -260,22 +312,66 @@ struct AddressBook
|
||||||
virtual int lookupPaymentID(const std::string &payment_id) const = 0;
|
virtual int lookupPaymentID(const std::string &payment_id) const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The CoinsInfo - interface for displaying coins information
|
||||||
|
*/
|
||||||
|
struct CoinsInfo
|
||||||
|
{
|
||||||
|
virtual ~CoinsInfo() = 0;
|
||||||
|
|
||||||
|
virtual uint64_t blockHeight() const = 0;
|
||||||
|
virtual std::string hash() const = 0;
|
||||||
|
virtual size_t internalOutputIndex() const = 0;
|
||||||
|
virtual uint64_t globalOutputIndex() const = 0;
|
||||||
|
virtual bool spent() const = 0;
|
||||||
|
virtual bool frozen() const = 0;
|
||||||
|
virtual uint64_t spentHeight() const = 0;
|
||||||
|
virtual uint64_t amount() const = 0;
|
||||||
|
virtual bool rct() const = 0;
|
||||||
|
virtual bool keyImageKnown() const = 0;
|
||||||
|
virtual size_t pkIndex() const = 0;
|
||||||
|
virtual uint32_t subaddrIndex() const = 0;
|
||||||
|
virtual uint32_t subaddrAccount() const = 0;
|
||||||
|
virtual std::string address() const = 0;
|
||||||
|
virtual std::string addressLabel() const = 0;
|
||||||
|
virtual std::string keyImage() const = 0;
|
||||||
|
virtual uint64_t unlockTime() const = 0;
|
||||||
|
virtual bool unlocked() const = 0;
|
||||||
|
virtual std::string pubKey() const = 0;
|
||||||
|
virtual bool coinbase() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Coins
|
||||||
|
{
|
||||||
|
virtual ~Coins() = 0;
|
||||||
|
virtual int count() const = 0;
|
||||||
|
virtual CoinsInfo * coin(int index) const = 0;
|
||||||
|
virtual std::vector<CoinsInfo*> getAll() const = 0;
|
||||||
|
virtual void refresh() = 0;
|
||||||
|
virtual void setFrozen(int index) = 0;
|
||||||
|
virtual void thaw(int index) = 0;
|
||||||
|
virtual bool isTransferUnlocked(uint64_t unlockTime, uint64_t blockHeight) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
struct SubaddressRow {
|
struct SubaddressRow {
|
||||||
public:
|
public:
|
||||||
SubaddressRow(std::size_t _rowId, const std::string &_address, const std::string &_label):
|
SubaddressRow(std::size_t _rowId, const std::string &_address, const std::string &_label, bool _used):
|
||||||
m_rowId(_rowId),
|
m_rowId(_rowId),
|
||||||
m_address(_address),
|
m_address(_address),
|
||||||
m_label(_label) {}
|
m_label(_label),
|
||||||
|
m_used(_used) {}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::size_t m_rowId;
|
std::size_t m_rowId;
|
||||||
std::string m_address;
|
std::string m_address;
|
||||||
std::string m_label;
|
std::string m_label;
|
||||||
|
bool m_used;
|
||||||
public:
|
public:
|
||||||
std::string extra;
|
std::string extra;
|
||||||
std::string getAddress() const {return m_address;}
|
std::string getAddress() const {return m_address;}
|
||||||
std::string getLabel() const {return m_label;}
|
std::string getLabel() const {return m_label;}
|
||||||
std::size_t getRowId() const {return m_rowId;}
|
std::size_t getRowId() const {return m_rowId;}
|
||||||
|
bool isUsed() const {return m_used;}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Subaddress
|
struct Subaddress
|
||||||
|
@ -382,7 +478,7 @@ struct WalletListener
|
||||||
/**
|
/**
|
||||||
* @brief refreshed - called when wallet refreshed by background thread or explicitly refreshed by calling "refresh" synchronously
|
* @brief refreshed - called when wallet refreshed by background thread or explicitly refreshed by calling "refresh" synchronously
|
||||||
*/
|
*/
|
||||||
virtual void refreshed() = 0;
|
virtual void refreshed(bool success) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief called by device if the action is required
|
* @brief called by device if the action is required
|
||||||
|
@ -460,6 +556,7 @@ struct Wallet
|
||||||
virtual bool setDevicePin(const std::string &pin) { (void)pin; return false; };
|
virtual bool setDevicePin(const std::string &pin) { (void)pin; return false; };
|
||||||
virtual bool setDevicePassphrase(const std::string &passphrase) { (void)passphrase; return false; };
|
virtual bool setDevicePassphrase(const std::string &passphrase) { (void)passphrase; return false; };
|
||||||
virtual std::string address(uint32_t accountIndex = 0, uint32_t addressIndex = 0) const = 0;
|
virtual std::string address(uint32_t accountIndex = 0, uint32_t addressIndex = 0) const = 0;
|
||||||
|
virtual bool subaddressIndex(std::string address, std::pair<uint32_t, uint32_t> &index) const = 0;
|
||||||
std::string mainAddress() const { return address(0, 0); }
|
std::string mainAddress() const { return address(0, 0); }
|
||||||
virtual std::string path() const = 0;
|
virtual std::string path() const = 0;
|
||||||
virtual NetworkType nettype() const = 0;
|
virtual NetworkType nettype() const = 0;
|
||||||
|
@ -869,6 +966,18 @@ struct Wallet
|
||||||
uint32_t subaddr_account = 0,
|
uint32_t subaddr_account = 0,
|
||||||
std::set<uint32_t> subaddr_indices = {}) = 0;
|
std::set<uint32_t> subaddr_indices = {}) = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief createTransactionSingle creates transaction with single input
|
||||||
|
* \param key_image key image as string
|
||||||
|
* \param dst_addr destination address as string
|
||||||
|
* \param priority
|
||||||
|
* \return PendingTransaction object. caller is responsible to check PendingTransaction::status()
|
||||||
|
* after object returned
|
||||||
|
*/
|
||||||
|
|
||||||
|
virtual PendingTransaction * createTransactionSingle(const std::string &key_image, const std::string &dst_addr,
|
||||||
|
size_t outputs = 1, PendingTransaction::Priority = PendingTransaction::Priority_Low) = 0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief createSweepUnmixableTransaction creates transaction with unmixable outputs.
|
* \brief createSweepUnmixableTransaction creates transaction with unmixable outputs.
|
||||||
* \return PendingTransaction object. caller is responsible to check PendingTransaction::status()
|
* \return PendingTransaction object. caller is responsible to check PendingTransaction::status()
|
||||||
|
@ -884,6 +993,26 @@ struct Wallet
|
||||||
*/
|
*/
|
||||||
virtual UnsignedTransaction * loadUnsignedTx(const std::string &unsigned_filename) = 0;
|
virtual UnsignedTransaction * loadUnsignedTx(const std::string &unsigned_filename) = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief loadUnsignedTx - creates transaction from unsigned tx string
|
||||||
|
* \return - UnsignedTransaction object. caller is responsible to check UnsignedTransaction::status()
|
||||||
|
* after object returned
|
||||||
|
*/
|
||||||
|
virtual UnsignedTransaction * loadUnsignedTxFromStr(const std::string &unsigned_tx) = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief loadUnsignedTx - creates transaction from unsigned base64 encoded tx string
|
||||||
|
* \return - UnsignedTransaction object. caller is responsible to check UnsignedTransaction::status()
|
||||||
|
* after object returned
|
||||||
|
*/
|
||||||
|
virtual UnsignedTransaction * loadUnsignedTxFromBase64Str(const std::string &unsigned_tx_base64) = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief loadSignedTx - creates transaction from signed tx file
|
||||||
|
* \return - PendingTransaction object.
|
||||||
|
*/
|
||||||
|
virtual PendingTransaction * loadSignedTx(const std::string &signed_filename) = 0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief submitTransaction - submits transaction in signed tx file
|
* \brief submitTransaction - submits transaction in signed tx file
|
||||||
* \return - true on success
|
* \return - true on success
|
||||||
|
@ -934,8 +1063,29 @@ struct Wallet
|
||||||
*/
|
*/
|
||||||
virtual bool importOutputs(const std::string &filename) = 0;
|
virtual bool importOutputs(const std::string &filename) = 0;
|
||||||
|
|
||||||
|
virtual bool importTransaction(const std::string &txid, std::vector<uint64_t> &o_indices, uint64_t height, uint8_t block_version, uint64_t ts, bool miner_tx, bool pool, bool double_spend_seen) = 0;
|
||||||
|
|
||||||
|
virtual std::string printBlockchain() = 0;
|
||||||
|
virtual std::string printTransfers() = 0;
|
||||||
|
virtual std::string printPayments() = 0;
|
||||||
|
virtual std::string printUnconfirmedPayments() = 0;
|
||||||
|
virtual std::string printConfirmedTransferDetails() = 0;
|
||||||
|
virtual std::string printUnconfirmedTransferDetails() = 0;
|
||||||
|
virtual std::string printPubKeys() = 0;
|
||||||
|
virtual std::string printTxNotes() = 0;
|
||||||
|
virtual std::string printSubaddresses() = 0;
|
||||||
|
virtual std::string printSubaddressLabels() = 0;
|
||||||
|
virtual std::string printAdditionalTxKeys() = 0;
|
||||||
|
virtual std::string printAttributes() = 0;
|
||||||
|
virtual std::string printKeyImages() = 0;
|
||||||
|
virtual std::string printAccountTags() = 0;
|
||||||
|
virtual std::string printTxKeys() = 0;
|
||||||
|
virtual std::string printAddressBook() = 0;
|
||||||
|
virtual std::string printScannedPoolTxs() = 0;
|
||||||
|
|
||||||
virtual TransactionHistory * history() = 0;
|
virtual TransactionHistory * history() = 0;
|
||||||
virtual AddressBook * addressBook() = 0;
|
virtual AddressBook * addressBook() = 0;
|
||||||
|
virtual Coins * coins() = 0;
|
||||||
virtual Subaddress * subaddress() = 0;
|
virtual Subaddress * subaddress() = 0;
|
||||||
virtual SubaddressAccount * subaddressAccount() = 0;
|
virtual SubaddressAccount * subaddressAccount() = 0;
|
||||||
virtual void setListener(WalletListener *) = 0;
|
virtual void setListener(WalletListener *) = 0;
|
||||||
|
@ -992,9 +1142,10 @@ struct Wallet
|
||||||
/*
|
/*
|
||||||
* \brief signMessage - sign a message with the spend private key
|
* \brief signMessage - sign a message with the spend private key
|
||||||
* \param message - the message to sign (arbitrary byte data)
|
* \param message - the message to sign (arbitrary byte data)
|
||||||
* \return the signature
|
* \param address - the address to make the signature with, defaults to primary address (optional)
|
||||||
|
* \return the signature, empty string if the address is invalid or does not belong to the wallet
|
||||||
*/
|
*/
|
||||||
virtual std::string signMessage(const std::string &message, const std::string &address = "") = 0;
|
virtual std::string signMessage(const std::string &message) = 0;
|
||||||
/*!
|
/*!
|
||||||
* \brief verifySignedMessage - verify a signature matches a given message
|
* \brief verifySignedMessage - verify a signature matches a given message
|
||||||
* \param message - the message (arbitrary byte data)
|
* \param message - the message (arbitrary byte data)
|
||||||
|
@ -1086,15 +1237,6 @@ struct Wallet
|
||||||
|
|
||||||
//! shows address on device display
|
//! shows address on device display
|
||||||
virtual void deviceShowAddress(uint32_t accountIndex, uint32_t addressIndex, const std::string &paymentId) = 0;
|
virtual void deviceShowAddress(uint32_t accountIndex, uint32_t addressIndex, const std::string &paymentId) = 0;
|
||||||
|
|
||||||
//! attempt to reconnect to hardware device
|
|
||||||
virtual bool reconnectDevice() = 0;
|
|
||||||
|
|
||||||
//! get bytes received
|
|
||||||
virtual uint64_t getBytesReceived() = 0;
|
|
||||||
|
|
||||||
//! get bytes sent
|
|
||||||
virtual uint64_t getBytesSent() = 0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1202,6 +1344,25 @@ struct WalletManager
|
||||||
return createWalletFromKeys(path, password, language, testnet ? TESTNET : MAINNET, restoreHeight, addressString, viewKeyString, spendKeyString);
|
return createWalletFromKeys(path, password, language, testnet ? TESTNET : MAINNET, restoreHeight, addressString, viewKeyString, spendKeyString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief recover deterministic wallet from spend key.
|
||||||
|
* \param path Name of wallet file to be created
|
||||||
|
* \param password Password of wallet file
|
||||||
|
* \param language language
|
||||||
|
* \param nettype Network type
|
||||||
|
* \param restoreHeight restore from start height
|
||||||
|
* \param spendKeyString spend key
|
||||||
|
* \param kdf_rounds Number of rounds for key derivation function
|
||||||
|
* \return Wallet instance (Wallet::status() needs to be called to check if recovered successfully)
|
||||||
|
*/
|
||||||
|
virtual Wallet * createDeterministicWalletFromSpendKey(const std::string &path,
|
||||||
|
const std::string &password,
|
||||||
|
const std::string &language,
|
||||||
|
NetworkType nettype,
|
||||||
|
uint64_t restoreHeight,
|
||||||
|
const std::string &spendKeyString,
|
||||||
|
uint64_t kdf_rounds = 1) = 0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \deprecated this method creates a wallet WITHOUT a passphrase, use createWalletFromKeys(..., password, ...) instead
|
* \deprecated this method creates a wallet WITHOUT a passphrase, use createWalletFromKeys(..., password, ...) instead
|
||||||
* \brief recovers existing wallet using keys. Creates a view only wallet if spend key is omitted
|
* \brief recovers existing wallet using keys. Creates a view only wallet if spend key is omitted
|
||||||
|
@ -1373,3 +1534,6 @@ struct WalletManagerFactory
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace Bitmonero = Monero;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue