Are there any pre-built Monero miners for Linux? I've been having problems compiling wolf's miners.
Are there any pre-built linux miners, and if not, what are the packages that I need to fully build his CPU and GPU miners?

For CPU Miner on linux, you can check Yam releases here:

https://mega.nz/#F!UlkU0RyR!E8n4CFkqVu0WoOnsJnQkSg

And for GPU releases, you could try Claymore v9.1, available here:

https://drive.google.com/drive/folders/0B69wv2iqszefdkVDNkxla3BCZHc

Note: Both are closed source.


How can I check the network usage of my Monero node? I would like to check the network use of my Monero node (daemon). I would like to see the average upload and download speeds, and I would like to see the total amount of data (eg: in MB, GB, TB) that has been transferred. How can I do this easily?

This is possible with the 0.14.1 (April 2019) update. rbrunner created new code that allows users to see global traffic stats.

While monerod (the node software) is running, you can type the following command in the terminal:

print_net_stats

This will display information on how much data was transferred and the average upload and download speeds, among other useful network connectivity information. Here is an example output:

Received 7354450 bytes (7.01 MB) in 4682 packets, average 1.39 kB/s = 0.02% of the limit of 8.00 MB/s
Sent 49976456 bytes (47.66 MB) in 4705 packets, average 9.47 kB/s = 0.46% of the limit of 2.00 MB/s


What if the lead developers abandon Monero, like what happened to Boolberry? I noticed that CryptoZoidberg basically stopped updating Boolberry in late 2015, as seen here: https://github.com/cryptozoidberg/boolberry/commits/master. Since then, the currency has almost completely flopped.

What would happen if the same thing occurred in Monero? What if MoneroMooo and Fluffypony and the rest simply lost interest or had other sudden priorities, and walked away?

I think Monero's community is a lot bigger than Boolberry's and you would hope that others would step in and fill the breach, but there's no getting away from the fact it would be terrible for the coin were (m)any of the devs to just quit.  Indeed I believe one of the devs passed away last year.  That said, as the community grows in usage and popularity more devs have gotten involved. It will need to continue growing to get more devs interested but that hopefully won't be too hard - Bitcoin's inventor stepped away and that hasn't held it back.


How can someone verify funds in a XMR wallet usint public viewkey? I know that to create a view only wallet you have the following option using the secret view key:

  ./monero-wallet-cli --generate-from-view-key wallet-name

  Standard address:
  4jkshetduseokd...

  View key:
  ffgksijdmniod...

Someone with your XMR wallet will be able to see the funds you have in you wallet.

If I share the XMR wallet and the public view key, what could anyone do with that information and how can it be used (which are the steps https://xmr.llcoins.net/checktx.html)?

Thank you :).

A view only wallet only allows seeing incoming transactions.

https://src.getmonero.org/resources/user-guides/view_only.html

  A view-only wallet can only see which incoming transactions belong to
  you. It can not spend any of your Monero, in fact it can't even see
  outgoing transactions from this wallet. This makes view-only wallets
  particularly interesting for

  Developers writing libraries to validate payments End users validating
  incoming transactions to cold wallets

To check a transaction on the blockchain (like with your linked service), you need either the transaction private key or the wallet private view key.

To be clear, you cannot track transactions on the blockchain with only a wallets public view key.


How do I check my public facing remote node is up and running via a web browser? I have a Monero daemon (monerod) setup on a public facing VPS server. How can I check it's running fine by using a web browser, or what type of linux command can I run?

I'm using the default ports.

You can easily test via the daemon RPC interface. Assuming default ports used, you can browse to:

http://x.x.x.x:18081/get_info

Replacing x.x.x.x with your servers IP address. This will return some JSON like follows if the node is up and there are no firewalls blocking it:

{
  "alt_blocks_count": 0,
  "block_size_limit": 600000,
  "block_size_median": 85,
  "block_weight_limit": 600000,
  "block_weight_median": 85,
  "bootstrap_daemon_address": "",
  "cumulative_difficulty": 49806683508,
  "database_size": 2565951488,
  "difficulty": 68748,
  "free_space": 92892508160,
  "grey_peerlist_size": 373,
  "height": 1138572,
  "height_without_bootstrap": 1138572,
  "incoming_connections_count": 0,
  "mainnet": false,
  "nettype": "testnet",
  "offline": false,
  "outgoing_connections_count": 8,
  "rpc_connections_count": 1,
  "stagenet": false,
  "start_time": 1548297116,
  "status": "OK",
  "target": 120,
  "target_height": 0,
  "testnet": true,
  "top_block_hash": "398f1733354f8371440d9ecb9947e69f7a615353f32c630b220083bb674192af",
  "tx_count": 57606,
  "tx_pool_size": 1,
  "untrusted": false,
  "update_available": false,
  "version": "0.13.0.0-master",
  "was_bootstrap_ever_used": false,
  "white_peerlist_size": 43
}


If you don't have a mnemonic seed, how do you access wallet on a new device? If you don't have a mnemonic seed, how do you access the wallet on a new device?
Which files do I need to copy from my wallet and where can I find them on Windows OS?

You may always generate a mnemonic seed with your opened cli wallet.

You need to copy the three wallet files in your monero directory.


Transferring monero from Binance to my wallet When transferring monero from Binance to my wallet last night,
I sent monero with an address and payment ID.
Not an integrated address and payment ID.

As of now, payment will not be made to my Wallet.
If payment does not come,
Is there a solution?
Please help me.

Please see this post to resolve your issue.

It's most likely an issue with the GUI and not with your payment


Transfering from multiple accounts? I see in the wallet RPC documentation that the transfer command can take the account_index and subaddr_indices arguments. Are these optional? What happens if these are not specified? Can the transfer command send Moneroj from multiple accounts and/or subaddresses on the same wallet?

To my understanding, if not specified, account_index will default to 0, while subaddr_indices will allow the wallet to use outputs from specified sub-address indexes as inputs.
If you specify multiple subaddr_indices, you restrain the wallet to only pick from those. But it will depend on the outputs available and the amount you want to transfer. It could pick one from one subaddresses, or more from the same or from other subaddresses.
However, you cannot send from multiple accounts at the same time.


What use cases will Kovri have for Monero? Kovri will be used for Monero wallets and nodes, but how else will Kovri benefit Monero in the future? I thought I heard Kovri could be used to safely access remote nodes for things like  MiniNero in the future for mobile devices, is this true?

Kovri will function as a full i2p router, thus increasing the utility of the i2p network overall, and providing the Monero user a gateway into that network. i2p is The Private Internet - its really its own network, you can sort of think of it like America Online back in the day. If you didn't use AOL in the early 90's, it was not the internet. AOL had its own subnetwork, almost, and if you wanted to browse the internet (not that there was much to browse in the early 90s), well then you had to essentially leave AOL's cordoned-off area.

So, if there is a distinctly private internet, and there is a distinctly private internet-currency, Kovri will essentially create the Monero-centric world.

And yeah, you can also access remote nodes. Actually, you can do that now already using an independent i2p router.


How can I test fluffyblocks? How can I test Fluffyblocks on mainnet? I found this GitHub repo linked on Reddit but I am unsure how to use it in production.

Can I compile this source code to work with my existing blockchain or will I need to sync from scratch?

What types of bug or behaviors should I be looking for while testing it?

Good that you ask. Actually, a
coordinated test is ongoing and you could join in: https://www.reddit.com/r/Monero/comments/6eef96/fluffynet_update_please_move_some_to_tier_3_4_and/

And yes, you can use existing blockchain, the change is in networking part so interest is in blocks / TX propagation etc.


What caused the mandatory update for the hardfork in early January 2017? As far as I know, the plan for hard forks is to always release the code for a hard fork approximately six months into the main repository as a point release before the hard fork code activates. However, there was some issue recently (mid-December 2016), that requires all users to update their clients again before the next hardfork in early January 2017. What was the issue that resulted in everyone being required to update in a matter of a few weeks? How was it resolved? Links to Github commits would be appreciated, but also a plain English (as much as possible) explanation as well.

First, some background. In MRL-0005 - Ring Confidential Transactions there's a section on range proofs, relevant quotes below.

5 Aggregate Schnorr Range Proofs
In [11], the confidential transactions without ring signatures uses a
type of ring signature based on [1] called a Borromean ring signature,
which helps to prove a committed value lies within a certain range. In
this article, I will outline an alternative method, inspired by [7],
which has the same space savings, but perhaps simpler security proofs.

...

For space savings, one can either use a Borromean ring signature (as
in [11]) to combine all of these simple ring signatures, or a type of
aggregate ring signature defined as follows:
5.0.1  Aggregate Schnorr Non-linkable Ring Signature (ASNL) Generation

Now, why do we need these? From the same paper (emphasis mine):

... as -1 is a very large number modulo the curve group order, free
money has been created. It is therefore necessary to prove that the
C_out,i are commitments to values which are positive and lie in a
restricted range [0,2^n] for some n.

These signatures are used to prove that one is not using just anything to hide the amounts, ie to prove what I've highlighted above. It's important because allowing just anything would make it possible to cheat the sum(ins) == sum(outs) part of transaction verification. Thus, it's important that the proof be air-tight.
Now, an issue had been discovered with proof for ASNL signatures used in ringCT. If I understand well, it would open a theoretical possibility of someone forging the range proof somehow. Because of this, it had to be changed from ASNL to Borromean signatures.
If there was no update, everyone running the already deployed code of 0.10.0 would move on and start making rCT-ASNL transactions, but the theoretical problem would still be there and present an unnecessary risk.
Thankfully, at the time of this writing, there's still approx. 27 days until the HF (as reported by monerod).
See also: Failure of an exchange or pool to upgrade to Monero v0.10.1 by January 5th


Would smart contracts ever be possible on Monero? Way in the future say in a sidechain or something would smart contracts be possible? And if so would they be able to benefit from Monero's privacy features?

There are a number of projects currently developing protocols that could be used for p2p transactions, financial derivatives, decentralized governance, and self-enforcing agreements.

Once multisig is implemented, it would be possible to incorporate Monero to enhance the privacy features of a smart contract application.


How to make a debug build of monero on mac os x? I am able to compile monero on mac os x v 10.10.5 using the directions found here:
https://github.com/monero-project/monero
specifically

brew tap sammy007/cryptonight
brew install monero --build-from-source

But I would like to make a build that I can debug with gdb.
What is the easiest way to do this on mac os x?

I would recommend following the instructions to build from source (not using the  brew package). https://github.com/monero-project/monero#compiling-monero-from-source.

Once you have the dependencies installed you just make debug in the cloned repository directory.


What programming language(s) are used in building Bitmonerod, Simplewallet, Kovri, and the Monero GUI? What programming languages are being used to build Bitmonerod, Simplewallet, Kovri and the Monero GUI?  Are multiple languages used within the same application? What is the level of programming language competency needed to assist with these various projects?

bitmonerod/simplewallet are written in C++, with some C too. C libraries are used (unbound, lmdb, etc). Some C++ bits are pretty intricate. Wallet code is simpler.

Kovri is C++. I've not looked at the code much to say what level is needed.

The GUI is Qt/QML, and C++. I've not looked at it much, but it's way smaller than core, so easier to get to grips with.

Best way to help out is to look for open issues, or something which you find not working, or not working well enough, or not working as you think it should, and go about fixing that issue. Simple things first, and soon you get the hang of it.

https://github.com/monero-project/bitmonero/issues

https://github.com/monero-project/kovri/issues

https://github.com/mbg033/monero-core/issues


Do I need mod approval to get my "idea" moved into the funding required phase on the getmonero.org forum? What is the process to get my idea into the "funding requred" phase on https://forum.getmonero.org/#category-2 ? Does a mod have to deem the idea valid? What are some requirements for a monero idea?

You first need to post your idea as a link on reddit, asking for others to comment, to give suggestions. Optionally, post the FFS Link or Reddit post link on IRC monero-community channel.
Then when a few of us will have asked to move your idea down to "funding required", either ask a Core Team Member on IRC to do it (but they are really busy), or wait for the Next community meeting to talk about it (with a prepared explanation of your idea and the link to the FFS proposal).


Transactions per block by time of day I am wondering if there are certain times of day where the Monero network is much busier (on average than others).

Is there any resource to help sort the number of transactions per block by the time of day?

This site has statistics and graphics on Monero transactions. It has 5 graphs, Transactions count (all), Transaction counts (per period), Transaction fees, Transaction outputs (sum), Transactions size (average). From these graphs you should be able to infer if the Monero network is much busier on certain times of the day.


Is it possible to fake the date of arrival of funds? Let's say I claim I've had X Monero for 1 year in my account and truth is I just received that amount X to my account yesterday. If I'm giving away all (private) keys to that person, he could see the date when my funds actually arrived, right? Could I somehow fake that date? Would using an cold-storage account help?

No, this is not possible.

Knowledge of the private keys for a wallet will identify the specific outputs on the blockchain owned by the wallet. The blockchain holds an immutable record of the creation timestamps of those outputs.

The closest thing to what you're looking to achieve is to send the funds from your wallet to the other person's wallet. Monero's ring signature will obfuscate the actual outputs on the blockchain that you're spending. If your ring size is 7, then for each real output you're spending, there are 6 other outputs your transaction will reference that you could have been spending instead. Therefore the timestamps of the outputs being spent could be the timestamps of any of those 7 outputs.

To fake a particular timestamp for the outputs you're claiming to spend, you'd therefore need to ensure that for each real output you're spending, your transaction's ring signature references a decoy output that has the timestamp you wish to fake. This would require manual construction of your transaction so that you can directly specify which outputs to use as decoys. This is a feature that does not yet exist, so you'd need to make modifications to your wallet software to do this.

Of course, this method falls apart if they simply ask you for the wallet view key for the outputs you claim to originally have received. You'd have to claim you lost it after sending them the funds...


Minimum recommended user knowledge requirements Cryptocurrency newcomers are disproportionately victims of financial loss both because of trusting dishonest 3rd parties and because of poor OPSEC.

Does Monero have a defined set of minimum recommended user knowledge requirements?

For example is there a list of recommended knowledge requirements (with a link to resources to learn more) available to new Monero users? Such a list could include:

Difference between a hot wallet and a cold wallet
Difference between individual control, and 3rd party control of funds
Importance of strong passwords and avoiding password reuse
Importance of backups
Definition of key-loggers and precautions that can be taken to avoid the possibility of them collecting your passwords or mnemonic seeds.

Every user has a different background and intended use case for Monero. There is no officially defined knowledge set that is recommended to all users.

Instead, there are basic user guides and tutorials to help new users choose an appropriate wallet for their needs and get started mining Monero.

Generally, the Monero community advises against the use of exchanges and web wallets for storage of large amounts of Monero. Security and education are emphasized in importance to new users. Usage over investment is highly emphasized by members of the development team. It is not uncommon for newcomers to be advised not to buy Monero if their primary objective is speculation.

It is impossible to anticipate every possible question that Monero users and developers may have. One of the primary goals of this StackExchange site is to create an easily searchable database of common questions and useful answers for the Monero community.

Since Monero development is ongoing, the education effort must continually evolve with the changing technology.


What is the difference between tx version 1 and RingCT version 2? What were the changes from version 1 to version 2?

I think that version 1, did not have confidential txs, but was still based on cryptonote?

I'm also guessing that in version 1, we did not have these different signature types like RCTTypeSimple and RCTTypeNull.

I think we still had ring signatures but it was something called LSAG and Borromean signatures?

Pre-RingCT (tx version 1), the main difference is the amounts were not hidden. They still had a form of ring-signature, but no, there were no signature types like the RCTType... ones as found in RingCT transactions - because they were not RingCT transactions.

RingCT (tx version 2), generalized a new type of ring signature, LSAG, into an MLSAG signature and incorporated Confidential Transactions to hide the amounts. The original RingCT paper can be found here which describes the changes and background.


Problem with compile part of monero sources to create python bindings I want to create python module with C++ bindings of monero functions:

parse_and_validate_block_from_blob
get_block_hashing_blob
rx_slow_hash
and more...

I'm using ubuntu 18.04.
For the simplicity of this question, I removed the code associated with creating of python module using pybind11.

I cloned the monero repository. I installed all dependencies following this instruction. Then, I run following commands to build static libs which I need:

$ cmake .
$ make cryptonote_basic

And I want to compile simple target pymonero.cpp (full):

#include <iostream>
#include "cryptonote_basic/cryptonote_format_utils.h"

using namespace cryptonote;
using namespace std;

int main() {
    blobdata b_blob = h2b("0c0ce185b0f2053941deed208d6449bb432fbce9778efb4cd9229cc79e4c04ef7b2a2f7c99df4a0000000002afdd1f01fff3dc1f018f918980888803025b08e22c6cb11c61b628de4217c3959627414d2d10579b780ca1e1fec0164bba210174b9819eb50c698d574bc408a0f7fedd608296647291551e98be4f7134bc26660000");
    blobdata hashing_blob;
    cout << "Input:\t" << string_to_hex(b_blob) << endl;

    block b = AUTO_VAL_INIT(b);
    if (!parse_and_validate_block_from_blob(b_blob, b)) {
        cout << "Not valid blob" << endl;
        return -1;
    }
    hashing_blob = get_block_hashing_blob(b);
    cout << "Output:\t" << string_to_hex(hashing_blob) << endl;
    return 0;
}

I'm trying to build this target with following commands:

echo "Building CXX object"
/usr/bin/c++  \
-I$MONERO_DIR/src \
-I$MONERO_DIR/contrib/epee/include \
-I$MONERO_DIR/external/easylogging++  \
-o _build/pymonero.cpp.o \
-c pymonero.cpp

echo "Linking CXX executable pymonero"
/usr/bin/c++ _build/pymonero.cpp.o -o pymonero \
-L$MONERO_DIR/src -lversion \
-L$MONERO_DIR/src/cryptonote_basic -lcryptonote_basic \
-L$MONERO_DIR/src/device -ldevice \
-L$MONERO_DIR/src/ringct -lringct_basic \
-L$MONERO_DIR/src/common -lcommon \
-L$MONERO_DIR/src/crypto -lcncrypto \
-L$MONERO_DIR/contrib/epee/src -lepee \
-L$MONERO_DIR/external/easylogging++ -leasylogging \
-L$MONERO_DIR/external/randomx -lrandomx \
-L$MONERO_DIR/external/miniupnp \
/usr/lib/x86_64-linux-gnu/libboost_thread.so \
/usr/lib/x86_64-linux-gnu/libboost_chrono.so \
/usr/lib/x86_64-linux-gnu/libboost_system.so \
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so \
/usr/lib/x86_64-linux-gnu/libboost_regex.so \
/usr/lib/x86_64-linux-gnu/libssl.so \
/usr/lib/x86_64-linux-gnu/libcrypto.so \
/usr/lib/x86_64-linux-gnu/libhidapi-libusb.so \
/usr/lib/x86_64-linux-gnu/libsodium.so \
/usr/lib/x86_64-linux-gnu/libunbound.so \
-lpthread -ldl

$MONERO_DIR is path to the cloned monero repository.
Output of last command give me following error:

Linking CXX executable pymonero
./monero//src/device/libdevice.a(device_ledger.cpp.o): In function `hw::ledger::device_ledger::reset()':
device_ledger.cpp:(.text+0x4a52): undefined reference to `MONERO_VERSION'
collect2: error: ld returned 1 exit status

I tried to build this target on ubuntu 16.04 and again got this error.
I don’t know if I did it right that I came here with a question about compilation of C++ sources. But I am very tired and feel that here is some kind of simple inattentive mistake.

This is not specific to Monero, rather a C/C++ linking question, nevertheless...

The order you add the libraries matters. In your example:

...
/usr/bin/c++ _build/pymonero.cpp.o -o pymonero \
-L$MONERO_DIR/src -lversion \
-L$MONERO_DIR/src/cryptonote_basic -lcryptonote_basic \
-L$MONERO_DIR/src/device -ldevice \
...

Linking CXX executable pymonero
./monero//src/device/libdevice.a(device_ledger.cpp.o): In function `hw::ledger::device_ledger::reset()':
device_ledger.cpp:(.text+0x4a52): undefined reference to `MONERO_VERSION'
collect2: error: ld returned 1 exit status

You have specified version before device, which is why you are getting a linking error. All your libraries need to be in the correct order based on their dependencies. Linking searches forwards for symbols, not backwards.


Which is the more reliable coin after April 2018 network upgrade? As far I understand monero is now divided as monero and monero classic/original/0 . So which is the more reliable coin?

I do have a linux node in which an old version of monerod was installed.  To what blockchain should I upgrade it to ?

From where can i download a fully synced blockchain of XMR?

Can you please explain in simple terms as iam a crypto newbie. Thanks in advance!

An oversimplified explanation is as follows:

Bitmain, an ASIC manufacturer, created a Cryptonight ASIC.  This enabled the company to "control" a large portion of the Monero hash rate and consequently mine many coins.

When The Monero Project learned about this, it modified the Cryptonight proof-of-work (PoW) so that any previously-created ASIC's would be rendered generally ineffective.

The PoW change was made effective as of the Spring 2018 Monero non-contentious network upgrade (which requires a hard fork), at block 1546000.  The transaction version as of block 1546000 is v7.  The Monero Project is currently developing on top of this (and its users are using it too, of course).

Bitmain didn't actually fork Monero.  They simply neglected to update.  They are using deprecated code and continuing to mine on an invalid fork.  Granted, if enough people treat the fork as valid, then it becomes "valid" in that sense.

As far as I know, there is no development on the deprecated code.  Perhaps if there was a legitimate reason to maintain the deprecated code, someone would have at least changed the network ID so that the two forks wouldn't confuse each other's nodes, which has happened.  Since the deprecated code does not appear to have maintainers (and since the only apparent reason for that fork to exist is so a company can mine it more efficiently than anyone else), it may make sense to treat that fork as invalid.


Use bip39 mnemonic to generate monero keys Is it possible to use bip39 mnemonic used in btc/eth etc and generate monero keys ?

If not possible is it possible to generate a monero compatible mnemonic deterministically from bip39 mnemonics ?

There is an option called --generate-from-spend-key in the monero-wallet-cli program to generate a wallet from a private spend key.

To avoid having to rely on tools via web sites which may not be around in the future, you can use the following Linux/MacOS command to generate a Monero private spend key from your BIP39 Mnemonic:

echo "ibase=16;obase=10;"`read line && echo $line | shasum -a 256 \
| tr '[:lower:]' '[:upper:]' | awk {'print $1'}`" % \
1000000000000000000000000000000014DEF9DEA2F79CD65812631A5CF5D3ED" | bc

What this does is take your BIP39 mnemonic (or other suitable key with sufficient entropy), and produce a SHA-256 hash from it (SHA-256 hashes are suitably uniformly distributed). Monero private keys must be lower than 2^252+27742317777372353535851937790883648493 (which is 1000000000000000000000000000000014DEF9DEA2F79CD65812631A5CF5D3ED in hex), and so the command reduces it accordingly. This is equivalent to the Monero sc_reduce32() function.

Beware that input to this command is case sensitive, in order to allow it to be used with any kind of source input.


Does Monero implement voting of any sort? Currencies like Etherium and Dash pride themselves on having implemented voting in their system so they could make changes faster than bitcoin.

Where does Monero stand on this? Are there any provisions for the 50% to be able to impose their preferences on everyone else, or is it like bitcoin, where consensus is notoriously difficult to reach?

There isn't a "formal" voting system if that's what you're asking. Anyone is free to fork the project and "vote" by making changes he wants. Already happened and that's how we got the current awesome team.

There isn't a need for a formal voting system of any kind as that would mandate some central authority tallying the votes. Even if everyone votes, what is to force a dev. group to go with the majority vote? You can vote all you want, but someone has to write the code. It all boils down to trusting a group of developers. If they are widely trusted, then they will be allowed to lead the project and continue to smoothly improve. If the trust is lost, the project comes to a road-block and needs to fork its way to continue. Natural selection, one could say.

On the other hand, we have the forum funding system, where funds are raised for specific goals, so you could say people are voting with their money.

Maybe we should look here for some good ideas on governance, but that's just me :)


Monero hard fork procedure I understand Monero has a planned hard fork twice a year (on approximately March 15 and September 15) and I would like to understand more about how it will in practice:

What is the minimum amount of notice users will receive in order to upgrade prior to a hard fork date (assuming the dates above remain somewhat flexible and may be modified slightly in order to release important updates such as RingCT at fork time)
Will future Monero releases include some sort of notification panel for available updates? Currently, who is in charge of notifying miner pools, exchanges, merchant, etc.
What happens if an important merchant or service provider  does not update in time. Is there a grace period before their client will be dropped from the network?

30 days before the fork there will be a code freeze + tag + release, If there are no major changes there will at least be an increase in the protocol version. A similar fork system to Bitcoin will apply, whereby a rollover to the new code after the trigger block will only occur if a sufficient number of miners are running the new code.
I am not aware of a wallet or daemon notification system that would provide advance notice. Of course if an old client fails to upgrade and is forked from the network, new blocks will no longer be consistent with those found on Monero block explorers or other clients that have upgraded. Currently it is up to Monero users themselves to upgrade in time. Community members and developers have assumed the responsibility of contacting exchanges and mining pools in the past to remind them of forks but cannot guarantee compliance. In the past there have been a few known service providers that were late in updating (ie. Shapeshift) but updated shortly afterwards. It is suspected there may have been one or more botnets that were taking off line after enforcement of the LMDB fork.
Everyone received 1 hard fork's grace period before you have to update or are kicked off the network (or left on an old fork). Just like your OS security software users are expected to remain up to date. There is no goal to support old upgraded clients for longer than the grace period described.

In terms of what is a hard fork (following the above procedure) vs what is a soft fork:

  Anything that is more of a soft fork will kick in immediately (as long as it doesn't drop pre-fork clients off the network). Anything on the p2p layer (ie. hard forkable) will be kept in the wings until the next fork date (as roughly estimated from block height) and then is enabled.


Can you make contingent payments in Monero? Bitcoin allows one to make contingent payments, where the transaction only goes through if the receiver reveals some piece of information. The most basic example of this is P2SH, which is hard coded into the Bitcoin protocol. It allows one to buy a value that hashes to a given value.

This shows that P2SH can be upgraded to buying any piece of information using zero-knowledge proofs.

Are contingent payments currently possible in Monero?

Applications are listed here. In particular, the one about security researchers sound like a good use case for Monero (since Monero has better anonymity). P2SH itself has many applications.

Indeed you can. Let's say Alice has Y XMR and Bob knows a secret s. Let's also say that there is program C that checks if s is correct (I will assume that C is known by both Alice and Bob, but this could be modified). For example, in the case of P2SH, it could check that Hash(s)=x for some x, or could check if a painting is beautiful or not.

1-4. Do step 1-4 from here to set up a time locked multisig wallet that sends Alice her funds back in 24 hours.

Bob generates keys k_1 and k_2. This keys can be either private-public or symmetric (I would recommend symmetric, since they are more secure, and smaller), and they may be the same if she likes.
Bob sends Alice z=Enc_k_1(s).
Alice and Bob do a Secure two-party computation with Alice's multisig key, Bob's multisig key, k_1, k_2 as secret input. It will first perform C(Dec_k_1(z)). If it yields false, the computation terminates with "Bob cheated, Trade Aborted" (in this case, Alice retrieves her Y XMR once the escape transactions from step 3 becomes valid). If C yields true, the computation yields Enc_k_2(transaction of Y XMR from multisig wallet to Bob, with payment id that contains k_1).
Bob decrypts and publishes the transaction from step 7, which gives him his Y XMR. Doing so, Alice can see k_1, decrypt z, and learn the information.

To see this is secure, note that:

If Alice or Bob refuses to do any of step 1-4, no valid transaction has been signed, and trade is aborted.
If Bob refuses to do 5 and 6, the trade is aborted. Alice can recover her Monero after 24 hours.
If Alice or Bob refuse to do step 7, the trade is aborted. Alice can recover her Monero after 24 hours. Alice has not learned the secret unless you she can break the AES key k_1.
In a multiparty computation, it is possible for a malicious party to learn the output and then prevent the other party from learning the output. In this case, it is only important that Bob learns the output. If Alice learns the output and prevents Bob from learning it, the trade is aborted. She can not learn anything without breaking the AES key k_2. (She will be able to recover her Monero in 24 hours).
If Bob refuses to do step 8, the trade is aborted. By not publishing the transaction, he can not get his Y XMR, so Alice and recover it in 24 hours. (She also won't be able to learn the secret.)

Note: Payment ids are 1024 bits, AES keys are 256 bits. Therefore, a random 768 bit identifier could be added to the payment id in step 7 to help Alice find (instead of having to check every payment id of every transaction).


How can I contribute to Monero as a software developer I work as a software developer for my day job. I recently gained a lot of interest in the Monero project and I'd like to contribute. How can I start?

The primary ways to start are to become familiar with the codebase, the cryptonote standards, and to engage with other developers. All of the developers communicate via IRC on #monero-dev or #monero on freenode's IRC servers.

Documentation is severely lacking so the most efficient way to obtain any information that you can't find is to ask on #monero or #monero-dev. Please stick around, your question will eventually be answered.


How to download latest builds from the Monero Buildbot? Monero has a BuildBot that automatically compiles the latest Monero builds for multiple operating systems here. I cannot find an option to actually download these builds. For instance, suppose I want to download the latest build of Kovri for Windows x64. How can I do this?

You can download the files for the build you would like to examine under the "Steps and Logfiles" section. For Windows, you will often find a .zip file. The file you can download is underlined in red.

Not all builds will have files you can download and run.

Finally, since these are not official releases, they may not be stable or as safe as official releases. Use these only for testing purposes with care, not for storing any Monero.


How can one solo-mine Monero using their laptop? How can I solo-mine with my laptop / desktop? Do I use the Monero cli software with Ubuntu or can I do it with the same software on Windows 10 too?

You can solo-mine with either the command line daemon or wallet (monerod/monero-wallet-cli with the start_mining command) or using the GUI (instructions). The same applies to whichever operating system you use.


Can I run/host my own private block explorer? I host my own node because I want my privacy level to be as high as possible.  But if I want to view my transactions on the blockchain, right now I have to use a block explorer that someone else is hosting.  That seems not ideal for privacy.

Is there an open source block explorer that can be downloaded or cloned and built from, say, GitHub?

Yes there is, and people do host it themselves, and for others:

You can download it here:

https://github.com/moneroexamples/onion-monero-blockchain-explorer

An example running is here: http://explore.moneroworld.com/


Harmonizing Monero with HD Wallet BIP 39 Technology? Monero currently uses Electrum Word List for recovery purposes.  This causes conflicts with wallet developers that want to support both Bitcoin-based BIP 39 technology that has a separate Word Lists. End users will want to use only one set wallet recovery words. Here is a Lingua Franca Rosetta translation approach so wallet developers can give end users the option of going either directions.

% echo "artwork crowd need rent install fire draw escape moment myth strong belt chair quiz cinnamon lab park leopard bicycle empty harvest cream matter teach" | bx mnemonic-to-seed -p 123 | bx hd-new -v 61143388 | bx hd-to-ec
a41ebdce18ffcbad14e8d0313b14017884fd51e2344e0353242cb686a00a588e

% echo "artwork crowd need rent install fire draw escape moment myth strong belt chair quiz cinnamon lab park leopard bicycle empty harvest cream matter teach" | bx mnemonic-to-seed -p 123 | bx hd-new -v 61143388
msec6JS8ftS7w7Ca2w8Kesn3xpDSto9rdAefrWoJ9NchAv6ub7AGQBLQZZGbSPxt6SbAzTAncGn8gQKMGuDnNMmohNLodVhwnaLsyNbqTeeaAQw

% ./mnemonics a41ebdce18ffcbad14e8d0313b14017884fd51e2344e0353242cb686a00a588e
dyslexic buffet veteran tamper racetrack hefty joking negative sedan initiate vague hounded dewdrop governing ecstatic skulls nabbing tumbling pledge long aided jetting reorder evaluate reorder

If https://xmr.llcoins.net/ is used to encrypt the Electrum seed words above with the password “123”, the following encrypted recovery Electrum seed words result:

syndrome koala daytime tuition tufts yanks unafraid meant fuming inorganic drowning rudely affair emit coils refer tiger dynamite selfish galaxy aunt eclipse tunnel poker inorganic (These words can later be decrypted with the password of 123)

The following will then become Monero's private spend key from which a stealth address can be calculated:

% ./sc_reduce32 a41ebdce18ffcbad14e8d0313b14017884fd51e2344e0353242cb686a00a588e
3c7f0ee745e638ed6101141a464509d183fd51e2344e0353242cb686a00a580e

Does it make sense to recognize this BIP 39 synthesis approach as a legitimate means to synthesize stealth addresses that supports interoperability with Electrum's recovery words?

Note the dependence upon BIP 32 Harmonization with the EXT_SECRET_KEY assumed to be 61143388.

Yes it does make sense for Monero to support BIP 39 words used by traditional HD hardware wallets such as Trezor, Keepkey or Ledger.

We will see how much the https://forum.getmonero.org/4/academic-and-technical/2495/experimental-trezor-firmware-testing distribution for tailored Monero Trezor firmware, a forked simplewallet, and a forked trezorctl command will support the recommendations above.

Specifically, the trezorctl recover_mnemonic command line is the use case for converting BIP 39 seed words provided by a Trezor device and converts them to Electrum seed words for wallet recovery outside a Trezor hardware wallet.

For more information, see With Monero firmware loaded on a Trezor, how does one create private spend keys from the BIP 39 seed words supplied during a Trezor's configuration? that also desires to push the envelope for having Monero provide nominal BIP 44 support.


How to start syncing and check status of Remote Daemon Node using monero-javascript npm package? I am using monero-javascript library to make a web app. When, I change the remote node, how can I start syncing my existing wallet with new Remote node.
Also when I do:
curl http://node.moneroworld.com:18089/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_connections"}' -H 'Content-Type: application/json'
I am getting following response:
{
"error": {
"code": -32601,
"message": "Method not found"
},
"id": "0",
"jsonrpc": "2.0"
}.
Please help me understand the flow

You can use setDaemonConnection() to change the wallet's daemon endpoint using monero-javascript.


Is there a way to make unsigned transaction, sign and submit manually using wallet RPC? I want to make unsigned transactions, sign and submit manually using wallet RPC. I know that transfer method does them directly, but I want to do it separately. However I can't find the way using wallet RPC. Please give me your insights.

I have been trying to accomplish exactly what you are describing for the past few weeks and I have come to the conclusion that this is not possible via RPC. You can only do this via the CLI. I am in the process of writing a RPC wrapper around the CLI so that I can make programmatic RPC calls that issue the proper CLI commands. A step-by-step guide around the CLI process can be found here: How do I use cold transaction signing? but you've probably seen this already. I am using this as a guide for the RPC wrapper.


Reason for 9 month period between v4 and v5 forks From this question it is clear that the v4 hard fork was advanced to January 2016 (from March 2016) so that RingCT could be activated sooner. The v5 hard fork scheduling (for September 2016) was unaffected.

Aside from the general convention of aiming for March and September hard forks is there any reason why the v5 fork could also not happen sooner?

RingCT code was released with Monero v0.10.0 - Wolfram Warptangent several months ago and Monero users, are excited about improved privacy features. Why is there a need to wait until September to enforce RingCT network wide?

If convention is the primary reason why not activate v5 in March 2016 and resume the conventional fork schedule after that? Since RingCT is working on testnet today, if January 2016 until March 2016 not long enough of a (main-net) testing period before RingCT is enforced?

Aside from the general convention of aiming for March and September hard forks is there any reason why the v5 fork could also not happen sooner?

RingCT is a significant protocol change involving complex cryptography. Sticking to the original date increases the time to test this relatively novel technology.

  RingCT code was released with Monero v0.10.0 - Wolfram Warptangent several months ago and Monero users, are excited about improved privacy features. Why is there a need to wait until September to enforce RingCT network wide?

While RingCT will not be enforced until September, RingCT transactions can be performed during this phase. Indeed, I think any new wallet software will default to RingCT transactions - so the only people that would be making old-style transactions are those using old software. So people can use RingCT in the interim.

  If convention is the primary reason why not activate v5 in March 2016 and resume the conventional fork schedule after that? Since RingCT is working on testnet today, if January 2016 until March 2016 not long enough of a (main-net) testing period before RingCT is enforced?

3 months can go by extremely fast in an open-sourced, volunteer driven project. And as I mentioned above, RingCT isn't enforced, but its also allowable.


Is there a tool for making secure cold wallets? There is a quite long and complex guide on how to make a secure 'cold' or offline wallet on reddit. Is there a quicker and more simple way to do this that takes less time and is less complicated, but still just as secure?

Funny you should ask, Taushet, because indeed there is!

The Taushet USB Monero Cold Wallet Generator is a pre-packaged, pre-hashed and pre-zipped collection of the tools required to make a secure wallet that only requires a single checking/security hash. It takes around 10 minutes to make a secure cold wallet. The tool has been hashed and verified by many community members (see here).

The full instructions can be found on the reddit post, but here is the meat of it:

What you need:

1 x taushet-USB-wallet-gen.zip
3 x USB thumbdrives
1 x paper
1 x pen
1 x Hash utility ()

How to use:

Download the zip from the link on the reddit post (pgp signed)
Physically disconnect from the internet.
Check that the hash of the file matches those on the reddit post.
Extract the zip file, which contains: slacko64-6.3.0.iso, Rufus-2.11.exe, monero-wallet-generator-master (dir), and this ReadMe.txt.
Make a bootable USB of the ISO using Rufus 2.11. Agree to all the default settings in the dialog boxes.
Drag the monero-wallet-generator-master directory to the USB drive.
Reboot using the USB into PuppyLinux (hold down F12 during boot to select boot drive)
Open the monero-wallet-generator.html file in the directory, generate the wallet seed and keys
Save the seed, address and keys to the second USB drive. Copy/paste, don't type. This is you digital vault, not to be used until fund extraction.
Write down the seed three times on a single sheet of paper. This is your physical vault.
Save the address (and maybe viewkey) to the third USB drive. This is your address usb, which can be used with relative abandon.
Remove second and third USB drives.
Wipe the first USB drive (containing the wallet generator and linux), or destroy it.
Remove all USB drives.
Reboot, reconnect internet.

You now have a cold wallet!


Where does the actual decryption of the recipient stealth address occur? I want to find out where in the code an output of Alice's transaction becomes Bob's money.

Alice has 10 XMR, and she sends Bob 2 XMR, the tx looks like this -

OUTPUT:

#recipient output:

first output: amount->2 , stealth address -> Bob's address

#change output:

second output: amount->3 , stealth address -> Alice's address

third output: amount->5 , stealth address -> Alice's address

Miner starts mining, finds the tx and stores it on the blockchain. Where exactly in the code does the decryption of Bob's stealth address that makes the money go to Bob's wallet?

wallet2::scan_output is probably what you're looking for as this checks if any of the tx outs are for this wallet. Then you can see here where it stores to wallet.


Using Monero as a payment source for my business I've been thinking about the best way to handle payments in a business I want to start. My first thought was Bitcoin, but after doing quite a bit of reading on Monero, I think that would be the best option.

I don't want to transfer the Monero into my local currency. I want to keep it as Monero for as long as possible.

Is it possible to have a different payment address for each registered use?

Is there anything else I should consider?

I believe you are looking for subaddress


Hard Fork Replay Attacks? When the Ethereum fork happened a few months ago, users were cautioned to protect against so called "replay attacks". A replay attack, as far as i understand it, is when a transaction occurs on one fork and an adversarial player submits the exact same transaction onto a second fork. A contrived example would be an XMR->BTC exchange that takes your XMR on one fork and then, secretly, replay that same transaction on the older fork.

This question is mostly theoretical rather than a pratical concern of mine.  i imagine that Monero hard forks very rapidly reduce in value and so replay attacks are probably not worth much (you have to have a buyer, afterall) and after a few weeks the Mixin Transactions likely make an exact replay impossible.

But there is anything i need or can do to protect myself against a replay attack? Are replay attacks "features and not bugs" in the case of short one-to-three orphan blocks (a vendor could probably resubmit a transaction trapped in an orphan block if they notice it in an hour or so)?

The most obvious way is doing something like gratuitously increasing the Tx version or changing Tx structure. However, wallets have to be aware of this too, so it's a little more complicated (plus you waste version numbers). We haven't done that as the prior chain forks (especially in the recent one) haven't been extended much at all (i.e., they weren't controversial); it's just been not a concern.

In the future, if an old chain fork does pick back up, the easiest thing for you to do as a user (assuming RingCT is enabled) would be to add a coinbase transaction from your fork to your transaction as a mixin. This will ensure it's always invalid on the other chain. This solution is pretty simple and would likely be preferable to mucking with version numbers or other params. Coinbase transactions are locked for 60 blocks, so just make sure you don't spend for approx 120 minutes after a fork, and include an unlocked-but-only-on-your-chain coinbase as a mixin (again, only works for RingCT unless you're spending denominations that match the coinbase). This could be pretty easily implemented if it became necessary.


What is the hash-rate difference in the available CPU miners? From these miners, is there a difference in hash-rate with the same hardware, if so what is it for your hardware?

CPU Miners

Wolf's CPUMiner - Open-source
YAM Miner - Dev fee, Closed-source
Claymore's CPU Miner - Dev fee, Closed-source

I think this question misunderstands how miners work. Within the ones you listed, they each have a different purpose.

Wolf's CPUMiner, YAM Miner, and Claymore's CPU Miner are all meant for CPU. Some work on more operating systems than others.

Wolf's GPU miner and Claymore's GPU miner are both meant for AMD GPUs. Wolf's is open-source, and Claymore charges a mining fee but is sometimes a little bit faster.

All the ones you mentioned are about the same difficulty to use. The Monero Spelunker is the easiest to use CPU miner for Windows.

Performance for each will vary significantly depending on what cards/chips you have.

For a good start, check out the the Wiki on /r/MoneroMining. It doesn't have information for all the miners you had listed (yet), but it should help you understanding mining a little bit more.


Does the Key Image leak privacy information? If I Sign two different transactions with the same private key and send it to the same node. Would this node now be able to know which member of the ring is trying to sign?

As I believe the public keys would be the same and the key image.

If so, why is this not a problem?

The key image of the real output being spent in a transaction is consistent, regardless of the choice of other outputs referenced as decoys.

Therefore if you attempt to spend an output twice, and each time a different set of decoys are chosen, then from the perspective of any nodes listening for transactions it will be obvious which output is the real output being spent.

This is a problem if you are using the same wallet on multiple computers and there is a simultaneous attempt to spend the same output. It's also a problem if the transaction you attempt to send is aborted for any reason (perhaps due to connecting to a malicious node), which causes you to reattempt the transaction to spend the same output using a different selection of decoys.

Therefore to avoid these attacks, announce transactions to your own node rather than directly to a public one, and do not attempt to spend funds from the same wallet simultaneously from multiple devices.

Outputs are only supposed to be spent once, and so under normal conditions this isn't a problem.


How can I use the SpendProofV1 to prove I sent Monero to an exchange? I've recovered an old wallet, where I previously Monero to an exchange from. How can I use the SpendProofV1, recovered from the History tab of the GUI, to prove I deposited Monero into their exchange?

The SpendProofV1 string contains a second, newly created ring
  signature that proves exactly the same input ownership again, but
  using different random initialization data. Only someone that owned
  the inputs of the transaction would be able to create this second
  valid ring signature. That is all the SpendProofV1 string contains.
  There is no key derivation communicated, because it is unknown by the
  wallet in this scenario.

(See What is the "SpendProofV1..." or "OutProofV1..." in the details of a sent transaction in the GUI?)

Therefore you need to send both the transaction ID and the SpendProofV1 string. The exchange will be able to use this information to verify that you sent the funds.


Is transaction malleability an issue with Monero? Is transaction malleability an issue with Monero, like it is in Bitcoin?

If so, is there an identified possibility to solve it?

If it isn't an issue, what makes the difference?

At section 4.3.3 of One-Time Ring Signatures in the MRL-003 it is specified how the Monero network protect itself from transaction malleability (invalidating attempts of forcing invalid data in the key set).

I don't think Monero is completely immune since someone could create a bad client exploiting the protocol and with enough users using it the network could become vulnerable, this is a plausible scenario but very unlikely, hence why its important users download binaries and/or compile the source code only from the official getmonero.org website or the github.


Why does the SHA512 code include numbers ending in ULL? The sha512-blocs.c file contains five blocks like these:

F(w0 ,0x428a2f98d728ae22ULL)
F(w1 ,0x7137449123ef65cdULL)
F(w2 ,0xb5c0fbcfec4d3b2fULL)
F(w3 ,0xe9b5dba58189dbbcULL)
F(w4 ,0x3956c25bf348b538ULL)
F(w5 ,0x59f111f1b605d019ULL)
F(w6 ,0x923f82a4af194f9bULL)
F(w7 ,0xab1c5ed5da6d8118ULL)
F(w8 ,0xd807aa98a3030242ULL)
F(w9 ,0x12835b0145706fbeULL)
F(w10,0x243185be4ee4b28cULL)
F(w11,0x550c7dc3d5ffb4e2ULL)
F(w12,0x72be5d74f27b896fULL)
F(w13,0x80deb1fe3b1696b1ULL)
F(w14,0x9bdc06a725c71235ULL)
F(w15,0xc19bf174cf692694ULL)

EXPAND

I assume these are hexadecimal digits, but I don't see where the second variable k of this function is declared. Does ULL have a special meaning?

Found the answer by googling in order to formulate a somewhat intelligent question: ULL means Unsigned Long Long integer.


What is to stop an adversary from inserting malicious code through Monero's compiling software? I know Monero typically uses things like the make command to compile its software, and I assume that these compilers are software themselves. What is to stop this compiling software from getting compromised, where an adversary could insert vulnerabilities and malicious code without the community knowing?

It depends on how you got make/gcc/etc. in the first place. I'm going to assume that you got an "official" copy and verified its signature (which is automatically done if you use a package managemement system, like apt for example).

So someone would have to push a malicious change to the compiler codebase and have that change go through the 100s of pairs of eyes that monitor the code without anybody noticing. That's very unlikely and, to be honest, less probable than having a bug (malicious or not) in the monero codebase.

In the end, you could have malicious code running on your hardware, in your OS, in the compiler etc.: you always have to trust someone...


How to generate a Monero wallet address with the API? Can anyone tell me how to generate a Monero wallet address with API???

On the Monero offical website I read that document but I can't understand.

If anyone knows, please update....

You didn't specify any specific language so I'll assume you're using a shell. Even if you don't, it shouldn't be hard to run a shell command using a different language.

Download the latest command-line tools from https://getmonero.org/downloads/

Extract and run the following command

monero-wallet-cli --generate-new-wallet "my_wallet_name" --password "pass123" --mnemonic-language English --create-address-file

This will create and open a new wallet (and keep it open). If you want to create a wallet and immediately close it you could use

echo "exit" | ./monero-wallet-cli --generate-new-wallet "my_wallet_name" --password "pass123" --mnemonic-language English --create-address-file

That's it. A new wallet named my_wallet_name was created with password pass123. You can see your address by running

cat my_wallet_name.address.txt


What is a sweep input and how do they work? I've heard people referring to 'sweep inputs' and I'm not exactly sure what they are. I'm assuming sweeping has something to do with moving Monero to another address, but I haven't been able to find a clear explanation.

Are there fees involved for sweeping, and how does sweeping differ to simply sending a regular transaction?

Your balance is made up of outputs of various amounts which you've received in the past. Every time you send, some of those get combined together until you reach some amount, which is then sent to the destination, and some change returned to your wallet.

Think of outputs as bills: you received a bill of 40 and 100 in the past, and now you want to pay something worth 120. Your wallet 'burns' the 100+40 bills, creates new bills of 120 and 20, sends the 120 to your recipient and returns the 20 to yourself and you're left with the bill of 20, plus whatever else you already had in the wallet. In Monero, these 'bills' can now be created with any amount (pre-RCT, they had to be round numbers like 10, 1, 0.1, 0.01 ...).

Sweep takes all of your outputs and sends the balance to an address of your choosing. You'd want to use this to move entire balance of one wallet to another, or to clean up your wallet and combine everything into one big output (by sweeping to the same wallet).

There are normal transaction fees (per kB) applied. Of course, each additional output increases the size, and with it the fee. Another reason why it's convenient to have just a few big 'bills' instead of lots of small ones in your wallet.


Why are the fees hard coded? Most cryptocurrencies let you choose your fee. Why does Monero use a hard coded fee?

Edit: Or rather I should say why is the minimum fee hard coded.

The fees are not exactly hard-coded, the amount per kB is hardcoded. This was enacted after the block overflow attack where the attacker had to expand the blocksize by flooding it with transactions until they were able to fit more than 512 transactions in a single block, which they were able to do for little cost because tx fees were so cheap at that time. So, the switch to a fixed fee per kB was done to make any kind of flooding or spam attack much more expensive to pull off. I believe the intent is that it is a temporary measure, and it will be removed allowing for dynamic tx fees per kB in the future.


Can you add a payment ID to a subaddress during an exchange withdrawal? Can one add a payment id to a subaddress? When withdrawing from an exchange you can put in a payment id and a subaddress. Will it work?

A payment ID is part of a transaction, not an address. Therefore, yes, if the exchange supports adding a payment ID field, it will be added to the transaction and you can view the payment ID in your wallet incoming transfers.


I did not receive 0.37 Monero sent from FreeWallet on my iPhone to Monero-wallet-GUI (on MacBookAir) I wanted to send 0.4 XMR from my FreeWallet on my iPhone 6 and after deduction of 9%, i.e. 0.03 XMR (=extremely expensive if you ask me), to my monero-wallet-GUI on my macbook air, 0.37 was sent out of my FreeWallet on Nov 26.
Since I have checked my monero-wallet-GUI and nothing has arrived.
I did the transaction using the scanner function in my FreeWallet. No transaction ID, just the address of my monero-wallet-GUI.
Why hasn't the 0.37 XMR arrived?
Can anybody tell me what possibly went wrong

Freewallet is not a trustworthy wallet service. Please use the monero wallet binaries at getmonero.org


I lost all my funds after performing a transaction on the wrong (old) chain Firstly I am assuming the responsibility for this loss, it was my mistake and if I cannot get back my coins, that is something I will have to deal with myself. I won't blame anyone other than me.
Back in 2018 I purchased some Monero and stored it in my Windows GUI Wallet (v0.11.1.0) using a local node and kept it in a spare computer I that I only use for crypto.
A few days ago (precisely on the 16th of may 2021) I logged in my Windows GUI Wallet (v0.11.1.0) and performed a transaction moving all my funds to a new address. The transaction did not finish successfully as I couldn't find it in any Monero blockchain explorers.
I did some research online and I found someone who had a similar issue. I followed all the steps on this link here:
I forgot to upgrade (from CLI or GUI v0.13 to CLI or GUI v0.14) and created / performed a transaction on the wrong (alternative) chain
I noticed that the transaction status has changed to Failed, but the funds have never returned and my balance is still zero.
I tried different approaches to solve this issue, with different Wallet Versions. In the first attempt I performed a database conversion that took more than 24 hours to finish. Then I tried remote nodes and also accessing the wallet by the CLI, but nothing worked.
This is what I see using the CLI:
[wallet 48doH9]: balance
Currently selected account: [0] Primary account
Tag: (No tag assigned)
Balance: 0.000000000000, unlocked balance: 0.000000000000
[wallet 48doH9]: rescan_spent
[wallet 48doH9]: show_transfers
  failed    out        -       2021-05-16 21:35:53       3.168872840000 8bab9614f5aa07f69481c5d01dff3fc111d01c3f1a33f5eb8e788041bafc8eff 0000000000000000 0.006060080000 48fGK9GYBrPSTMt23FUYMuZXuv7K37GrCi4ss7Um8RopVU4yPDt8CppPvkvyCDDapCQApnqPHyY1P3PcayBuq7wvEhoFYJL:3.168872840000  -
[wallet 48doH9]: balance
Currently selected account: [0] Primary account
Tag: (No tag assigned)
Balance: 0.000000000000, unlocked balance: 0.000000000000

Is there any hope or is it too late?

Normally, you have not lost your XMR I think.
Why not start with the latest version of GUI/CLI and restore your old wallet with your seed.
The coins should be in your old wallet. Also check the restore hight.


Linking transactions when using XMR.to to send bitcoins? Since xmr.to is a xmr to btc converter. Does xmr.to use the same bitcoin address to send out?

I'm worried if the previous person that used the service to send bitcoins to a known dark web address and then in theory it could be linked back to me as I also used the same service with bitcoins coming from the same address.

I am not sure if XMR.TO uses the same address, but honestly it wouldn't matter. It would be relatively trivial to correlate all of XMR.TO's Bitcoin addresses.

Your more important concern regarding any links back to you is not something you should worry about.

When you connect to XMR.To, the only link to you is your IP address. If you connect to the site with Tor or I2P (as is recommended), then the site has no strong link to you.

The Bitcoin transactions you make with XMR.TO would look the same as the transactions from every other XMR.TO user. All transactions made from XMR.TO could be known as such, but that would not create any connections to the users of these services.


Is there a way to see all the transactions coming through my Monero node? I'm running monerod on my Ubuntu server and if I create a transaction using Monerujo using my node to process it, can I see it in my monerod console? If not, how can I see the transactions going through my node?

Yes. You will need to increase the log level in the daemon. E.g. set_log +daemon.rpc:DEBUG should suffice.


What does "Can't create transaction: internal error: Known ring does not include the spent output..." mean? When sending a transaction from the 0.12.0.0 GUI, I get an error:

Can't reate transaction: internal error: Known ring does not include the spent output [number]. Replace [number] with a specific number.

What can I do to enable the sending of the transaction?

This isn't an excellent answer, but for now, you can get around this by deleting the .shared-ringdb folder.

For Windows, this located in C:\ProgramData\.shared-ringdb

For Mac OS X and Linux, this is located in ~/.shared-ringdb

Note that ~ is typically short for home/<user-name>

Restart the GUI, and you should be able to send a transaction.


Is there any build options that compiles monerod better optimized for x86-64? Frustrated in my intention to contribute to the network with a public full node. I encountered lot of problems with the blockchain replication using monerod.
I've tried for few days to get monerod syncronized but apart of the continuous time-consuming DB resize which takes from 1 second to 20 minutes, there is also a problem when at some point in the process it starts throwing exceptions and sudenly block syncing slows down from 1s for each 20 blocks chunk to almost 20 seconds for each chunk.
The sync was initiated from scratch, just after compiling I started with command monerod --detach and it took days and the logs were full with exceptions. After been fully syncronized it was still filling logs with exceptions and it looked too slow in syncing new blocks so I decided to discard it and repeat the process in another machine.
So to experiment a bit I went to AWS for an EC2 c5ad.xlarge instance with NVMe SSD, downloaded blockchain.raw (took 8 hours from getmonero.org to the EC2 instance) and import it using monero-blockchain-import tool. It took almost another 10 hours for the task to finish even with NVMe memory. After that, as the blockchain was 22959 blocks behind, then started syncing with monerod --detach. Everything was fine and fast for the first 2 minutes until the same kind of exceptions arised and it started to slow down again. Also CPU was very high. So I decided to abort the process as it was going to take much more time and at the end I'm not sure if these nodes will be autocorrupted or what, so for that reason I discarded them.
Now, my initial and extended question:

Is there any other build options that compiles monerod free of runtime exceptions and better optimized for x86-64?

More related questions:

Do mining pools discover new blocks to be mined using monerod node RPC API or they use another faster syncing tool?
Is there any other better optimized tool apart from monerod that can be used as a Monero public full node?

For the last question I only found PiNode-XMR but this is for ARM processors like RaspberryPi.
My goal here is to contribute with a public Monero full node that I also could use to sync an internal more secured private node that would be used for personal wallets connection and for mining XMR from 3 workstations connected in internal LAN. However it looks like I'm not been lucky.

Is there any other build options that compiles monerod free of runtime exceptions and better optimized for x86-64?

The exception logs did used to be a bit spammy until the latest release (v0.17.2.0) and almost all of them were one particular issue that had no material impact. If you don't want any logs just launch it with: --log-level 0. Using any build optimization flags different to the ones used by the standard release build aren't going to affact your sync speed.

Do mining pools discover new blocks to be mined using monerod node RPC API or they use another faster syncing tool?

Mining pools use monerod to create block templates (not "discover new blocks"), and to submit mined blocks back to the network. Initial sync speed is not a concern in this regard as once a node is synced, staying in sync uses far less time/resources. Pools do want their node(s) to be well connected to the rest of the Monero network however.

Is there any other better optimized tool apart from monerod that can be used as a Monero public full node?

No. The only full node implementation is monerod, which is already heavily optimized.

For the last question I only found PiNode-XMR but this is for ARM processors like RaspberryPi.

Not sure what your question is there but there are ARM release binaries made available: https://www.getmonero.org/downloads/ and https://github.com/monero-project/monero/releases


What happens if I try to send money to an invalid address? Do the Monero just disappear? Say that I want to send money to address 46ABCD, but I incorrectly input 46ABCF, and 46ABCF is an invalid address that no seed will ever generate. Does the protocol automatically reject the transaction, or will the money be burnt?

Monero (and Cryptonote) addresses include a simple (32 bit) checksum, so a simple typo in the address will be detected. The checksum is embedded inside the base 58 layer, after the public keys.

If, however, you ended up making a typo which keeps the CRC identical [1], the monero would be essentially lost, since it'd require a brute force search to find the private key corresponding to that address.

[1] If we assume equiprobability, a 32 bit CRC has one chance in about 4 billion to verify on an incorrect input.


How to perform cold signing with JS? How can I construct a transaction using a watch only wallet RPC and cold sign using any nodejs library? In the end, I have to send this to the blockchain using the daemon or watch only wallet RPC.

Using the wallet RPC on your view only (hot) wallet, you can call transfer with get_tx_metadata: true and do_not_relay: true which will yield an unsigned_txset in the response.

Then on the spend wallet RPC (your cold wallet), call sign_transfer, passing in the unsigned_txset from above, which will yield a signed_txset in the response.

Back on the view only (hot) wallet RPC, call submit_transfer, passing the data from signed_txset above in the tx_data_hex parameter.

The linked methods all have examples of these steps using curl. The calls are just simple HTTP POST requests, so libraries are not really needed.


How can I give a different address to a sender for each transaction in an easy way? Basically the subject. I've been reading on stackoverflow and the FAQ and can't find the answer.

What I want is give them different addresses each they send XMR to me. If the only choice is creating a new wallet each time, is there a way to automate the process? I couldn't find in the RPC docs a way to do this. https://getmonero.org/knowledge-base/developer-guides/wallet-rpc https://getmonero.org/knowledge-base/developer-guides/daemon-rpc

Creating a new wallet is the only way, yes (assuming you want to give different addresses for the purposes of preventing correlation). An integrated address will allow trivial correlation, as its intent is different.

There is no RPC to create a new wallet. New wallets have to be created with a simplewallet command line (ie, simplewallet --generate-new-wallet).

Newer versions of Monero (ie, 0.10.0) are very much faster in creating new wallets, however, since they know they do not have to scan the blockchain up to the point of creation.

When the GUI is out, it will include a way to create a new wallet, though I do not know how easy/quick the process will be.


Getting transaction hash / ID from the raw data Is it possible to get the hash/ID of the transaction having its raw signed hex value only?

The tx hash is not serialized. Rather it is computed from the tx data. This answer discusses how the hash is calculated.


Opening Port 18080 for Incoming Connections on Router How do I make port 18080 open for incoming connections on my router on Linux (Ubuntu 16.04) for running the Monero daemon?

I don't have access to the physical router in my building that I use for wireless connection to the Internet and I am wondering if I can do so using Ubuntu 16.04.

The methods to open ports are specific to the router you have. You don't need physical access to the router, just access to the routers web admin interface. So, I suggest you search for your specific router model and instructions, if this is your own router.

If you are on a non-configurable network like a public WiFi, instead you need to ask the Internet provider to open the port for you.

If you need to configure the Ubuntu firewall, you can install iptables plus ufw and open the 18080 port on the firewall with the directive ufw allow.


How do you calculate the size of a Monero transaction before it is sent? Given the number of inputs, number of outputs, and mixin count, what is the formula to calculate the expected size (in bytes) of the resulting Monero transaction?

For comparison's sake, in Bitcoin, the formula for calculating the size of a transaction is (from this stackexchange question):

in*148 + out*34 + 10 plus or minus 'in'

I have this, which may be wrong as I've not tested it a whole lot. The constants at start are "close enough", I did not try to be 100% precise:

47 + inputs * (39+(mixin+1)*2) + outputs*38 + 64 * inputs * (mixin+1)

If you want to know whether a fee is acceptable before it is actually sent, you can use set always-confirm-transfers 1 in simplewallet, and you'll always be prompted with the transaction before it is sent to the daemon.

For RingCT, the calculation is more complicated, see https://github.com/moneromooo-monero/bitmonero/blob/rct/src/wallet/wallet2.cpp, estimate_rct_tx_size (which is also a good approximation only, not exact).

The main reason for "not exact" is that integers tend to be stored as variable length, depending on their value.

In both cases, a tx_extra of 40 bytes is assumed (typically, a payment id). You can remove 34 bytes if there's none.


Is there a monero pruned blockchain mode like how bitcoin core has a pruned blockchain? Monero's blockchain is almost 50GB as of March 2018 and my laptop doesn't have that much space to spare anymore. Is there a pruned version of the monero blockchain?

No there isn't. Pruning is currently being implemented though, with chances to be in the next hard fork.


Which font is used in the Monero logo? This is a relevant question for developers. Which font is used in the Monero logo, found here?

Riccardo Spagni (fluffypony) stated that the logo uses Century Gothic here.

The 'R' used in some versions (current branding package) doesn't seem to belong in the font family though. The 'E' also looks slighty wider. It's likely customized from the original submission.


Upgrading APK version of Monerujo with Google Play Beta version When I install the new updated v8 Silver Colobus Monerujo Beta version from the Google Play store can I use my existing password and wallet files created by v7 Gray Grilse or will I need to recover with my mnemonic seed?

it should work. BUT it may not, because the wallet folder has been renamed from "Monerujo" to "monerujo" (small m) so you may need to rename the folder with a file explorer.


How to send funds with a watch-only and cold wallet set up? So I have a cold wallet set up with an online watching only. My question is how do i go about sending funds with this set up? As well as updating the cold wallet balance if that's necessary. This is not a paper wallet and I'm using QubesOS.I tried creating a transaction normally following this guide but it wouldn't create the unsigned_monero_tx file and instead displays Error: this is a watch only wallet.

This SE post asks questions about cold transaction signing that may or may not lead you to your answer.  That post links to another SE post, which describes the process of cold transaction signing.

It appears you may already know much/all of the information from those two posts, so maybe you're just using not the most recent version of monerod.  Did you download prebuilt binaries, or did you build yourself?  If you didn't build yourself, you may need to.  If you did build yourself, you may need to update, which can be found in this SE post.


What is the Monero testnet? How can I participate in it? I've seen people talk about the Monero testnet, but I don't know what they mean. What is testnet? What advantages come with using testnet? Finally, how do I get involved?

From what I know about testnet, you can run a sort of "fork" of a code with other people to test if it's works or not before you put it into an actual fork. For example, people have recently been testing Ring CT on test net to work out any bugs and then correct them.

You can connect and help the testing in the network by still using the same daemon and simplewallet program you already have downloaded. You can start syncing with the testnet daemon and wallet by using

./monerod --testnet

And

./monero-wallet-cli --testnet

There are other options you can use when regarding testnet, and you can check them out using.

./monerod --help

This is just a basic intro of just what I know, but I hope this somewhat helps.


What privacy or security trade offs are associated with not running your own full node? If I choose to use a webwallet such as mymonero.com or connect to a Monero node run by someone else to make transactions, what are the unique privacy and security concerns I will face (compared to if I was running my own full node)?

Using a third party node has drawbacks in two main categories: privacy, and performance.

When you refresh your wallet, the daemon sends blocks and transactions to your wallet, which then inspects each transaction to see if you received any monero. If you did, the wallet will, at least currently, ask the daemon for more information about that transaction (technically, the global indices of the outputs for that transaction). This lets the node know that at least one of the outputs in that transaction is yours. Note that this is about to change,This is now fixed, and global indices will be are sent with all blocks as soon as https://github.com/moneromooo-monero/bitmonero/commit/30203f11f1581deec214e5a45ead36ac35c3a316 is merged. The result is that the daemon can not tell anymore which transactions contain inputs to the wallet.

When you send a transaction, the wallet will request fake outputs to mix with from the node. Thus, the node will know which output in a ring signature is the real one once you send the transaction: it's the one it did not supply. If the daemon did by chance supply your output, then it won't know, however. This is pretty easy to change (just request twice as many fake outputs, and pick locally), but is not done yet. This is now done: the wallet selects the outputs it wants, so the daemon only knows that one of them is the real one, but not which, which is the same as any blockchain observer can know.

Some less used commands also leak information to the node: the rescan_spent command will send the daemon a list of your outputs, to know which ones are considered spent on the blockchain. For this reason, this command is disabled by default when you are using a remote node (see the --trusted-daemon option in simplewallet).

Starting mining in the wallet tells the daemon your standard address (to get the block reward). This should not be done on a remote node, but I include this for completeness.

Performance wise, using a node that's not local is just slower. Not only is the node on the internet, but other people may also be using it at the same time, compounding the slowdown.


How does Monero protect users from inflation bugs if the blockchain can't be audited? Many Monero critics use statements like:

  How does Monero protect users from inflation bugs if the blockchain can't be audited?

Supposedly there is a way to audit the Monero supply. I've never done it, I've only read that its possible and that other people have done it. But how does one do it in a step by step way?

Can someone make a post about this so we can just point to this answer every time someone brings it up? Annoying to see people post about this all the time with the same people trying to give an answer but not really actually giving it.

How do you audit monero coin supply step by step?

The daemon command print_coinbase_tx_sum is useful for auditing the supply (sum of all coinbase transactions).

help print_coinbase_tx_sum

Command usage:
  print_coinbase_tx_sum <start_height> [<block_count>]

Command description:
  Print the sum of coinbase transactions.

You then verify, the amount obtained from above, is less than per the Emission curve allows for. Example code to get this value for a given height here.

For anything else, you would have to audit the code (for bugs) and the math (for soundness).


How can I check if a key image has been imported into a view wallet? How can I check if a key image has been successfully imported into a view wallet, particularly a cold wallet that has never spent any of the funds it has received?

The easiest thing to do, in my view (due to it being the most thorough), is to set up a normal wallet and daemon on an air-gapped computer (one not connected to the internet).  Your air-gapped wallet will contain both the private viewkey and the private spendkey.

You can periodically save a copy of the blockchain from an internet-facing computer, transfer it via USB or whatever to the air-gapped computer, and have the wallet sync to that.  During the sync process, this method will create key images for all outputs owned by that wallet (and, of course, it'll also check whether the key images have been spent).

This is the most thorough way of knowing that all key images are accounted for, since the wallet will create any that are missing.  In fact, this is arguably the only way for a cold wallet to "know" it reflects an accurate balance, because it has the private spendkey to do the key image work.

If you have an internet-facing wallet which only contains a private viewkey, but does not contain a private spendkey, then this task may be more of a manual process. If you know the key image of a particular deposit, and you think you've imported the key image but you're not sure, you can run incoming_transfers_verbose to see the list of key images currently in the wallet.  See this thread for more details on looking up key images.


Are mnemonic seeds available in multiple languages? If yes:

What languages are currently supported?
Are there plan to support more languages in the future?

Monero does support arbitrary language seeds.

Currently, several languages are implemented in terms of seed: English, Italian, German, Spanish, Portuguese, Japanese, Russian. More may be added by people familiar with other languages, as the main task is to find a set of 1626 words in a language which obey a few simple rules:

the words should be common enough for most speakers to know them
synonyms and similar words should be eschewed where possible
any two words should not share a prefix between them

That last requirement bears some explanations: the intent is that a mnemonic seed only needs the first few letters to be unambiguously recognized as a word for that language's list. For instance, the English word list has a 3 letter unique prefix, which means that if a word starts with "pig", there is no other word in the list which starts with that same 3 letters prefix. Here, the only word starting with "pig" is pigment. Pig would also work, since only the prefix matters. This allows one to change words in order to remember better, as well as potentially disguise a mnemonic seed by using words that do not appear in the list, but which share a prefix with one of those words.

As far as I know, there are no new languages currently slated for inclusion, but those simple rules are there for anyone who wants to have their own language included.


I can't setup a monero pool on current software I know this is the wrong place, but I need help setting up a pool with the current versions of node.js and the other requirements. Every reference I found is 3 - 4 years old and github code years old or the maintainer says to follow the readme.  How would I create a pool from scratch?  For example, you need to know how to code in node.js, Ajax, HTML, and bash. These are the functions you will need to code to setup a node.js pool.
Unless someone knows of a pool that is using node.js 8.x and is willing to share the code.

Thanks,

I would recommend you to use Snipa's nodejs-pool. It runs on NodeJS 8+ if I remember correctly and has auto-deployment script which does most of the work during setting up phase... Also, refer to repository's issues for further questions, I think you will get an answer there faster than here.


What are the key differences from the LOKI project which was a fork of monero? The LOKI project was a fork of Monero. What did they change that makes it different from Monero?

Loki fork main differences are:

Developed by a public development team vs monero's anonymous developers. However there are a few loki devs that are anonymous. The only public monero dev that is also on the loki team is Tom Winget.
Its a hybrid POW and POS mining model vs monero is just POW.
Has adopted monero random x mining algo.
More focus on private communications like the loki messenger and mixnet than vs monero's target as being money.


Multisig one to many transaction Is it possible to sign one to many transaction in multisig 2/2 wallet?
I want functionality where both sides can sign transaction that split the wallet without a need to create gap that requires a trust where one part will be sent to A in person A favor but B will not be sent in person B favor because person A will not want to do so.

Seems like multisig works as a normal wallet so same as with a regular one you use the same command for it and then add following addresses and amounts you need. That's it.


Why is 10.1 a mandatory upgrade? So 10.1 is the version that includes all updates necessary for the next hardfork in january 2017.

But as far as i understood the hardfork cycle, one version below the hardfork version will still work or?

For example could i still run version 10 after the january 2017 hardfork? What about version 9.4? Would it also work and how long would it work?

10.1 has a fix for RingCT. Changes have been made to 10.1 nodes to fork one block before 10.0 in order to avoid letting anyone use the flawed RingCT code, so Miners need to make sure they mine on 10.1 as they need to make sure they include the bugfixed RingCT transactions only, otherwise they will fork themselves off the network. The code changes that result in this is shown here

In short, the wallet software can be used until september 2017, but the node software MUST be upgraded (most importantly miners) otherwise the nodes running 10.0 or earlier will no longer be visible on the fixed chain.


Sent Monero to Atomic Swap Wallet using GUI Wallet - Slow Transaction I sent some Monero to an Atomic Swap wallet using GUI Wallet and the Transaction is still pending after 24 hours. I can see the block confirmations is moving very slowly. Can someone help me on this? I'm using Windows 10.

Just got an email from Atomic Swap support and they said the following.
"XMR is under maintenance in Atomic Wallet due to the incompatibility with the new update. You won't be able to send, exchange, and possibly see your balance. Our team is working on the issue, but there is no ETA."
Issues has been resolved.


What plans are there to lower the monero fees to under 10 cents? As monero increases in price, what are the plans to lower the fees? Paying a few dollars per transaction is a bit much. anything less than 10 cents would be ideal. What are the proposed plans to do this?

Fees are variable, based on the current moving average of the block size, and the block reward. It is thus expected to go down as time goes on, assuming constant usage. Since usage is also expected to increase in the long run, this adds another downward pressure. If you're measuring in dollars, then the exchange rate adds another variable which the consensus can't take into account as it's extrinsic. I suppose if the fees become too low or too high, they might be scaled, but there are no such plans at the moment.


Which part of the daemon RPC is restricted? When running monerod with restricted-rpc which of the rpc methods will not be allowed?

Also, is the daemon RPC documentation on getmonero.org up to date? If not, is there an up to date version somewhere?

When running monerod with restricted-rpc which of the rpc methods will
  not be allowed?

The following changes occur when Monerod daemon runs in Restricted Mode via restricted-rpc and/or rpc-restricted-bind-port options.

The following RPC methods are not registered:

flush_txpool
generateblocks
get_alternate_chains
get_bans
get_coinbase_tx_sum
get_peer_list
in_peers
mining_status
on_get_connections
on_set_bans
out_peers
relay_tx
save_bc
set_bans
set_limit
set_log_categories
set_log_hash_rate
set_log_level
start_mining
start_save_graph
stop_daemon
stop_mining
stop_save_graph
sync_info
update

  Also, is the daemon RPC documentation on getmonero.org up to date? If
  not, is there an up to date version somewhere?

You can find interesting alternative reference at Monerod Restricted RPC Mode and referenced code at monero-project/monero/rpc.


Is there a service for recurring buying of Monero every 2 weeks? I know Coinbase has the ability to buy BTC, LTC, and ETH on a recurring set time. But is there a service that can do this for Monero? I don't care what the price is, but I just want to buy monero every week as a way to dollar cost average.

There are two possibilities:

You find an exchange where you can set up buying an order every week. Not really sure but i think that at Kraken this could work.
You create an account on an exchange, get API keys from them and execute the API call to create a buy order every week. If you really want to automate this, you could set up a python script (or any other programming language) on Heroku (which you don't have to pay) and let that execute periodically.


Trouble connecting to my remote full node I setup a full node on an Amazon EC2 instance running on Amazon Linux. I can see monerod running testnet in my SSH terminal (fully synchronized).

The security group for this instance has an inbound and outbound rule that allows all connection types, protocols, and ports from any source. I'll change this later but wanted to rule out a firewall issue blocking a port.

On my windows PC I try loading a wallet like so:
./monero-wallet-cli.exe --testnet --daemon-host ec2-xxxxxxx.compute-1.amazonaws.com replacing the xxxxxxx with my actual ec2 link.

I get:

Error: wallet failed to connect to daemon: http://ec2-xxxxxxx.compute-1.amazonaws.com:28081. Daemon either is not started or wrong port was passed. Please make sure daemon is running or restart the wallet with the correct daemon address.

I also tried using --daemon-address with ports 28080 and 28080 with no luck.

Not sure what else I can try to get this working, does anyone have any ideas or suggestions I can try?

I was able to solve this issue. Testnet wallets connect on port 28081 by default, so seeing this port being closed made me try a few things. The one that worked, though I'm not sure exactly why, was to set --rpc-bind-ip 0.0.0.0. This opened port 28081 and everything works well now.


Is it a bad idea to use CpuLimit with Monero software? CpuLimit is a Linux program that sends SIGSTOP and SIGCONT signals to a program to throttle it's CPU usage. I have a Monero service that keeps wallets in sync by opening them, syncing them, and closing them on loop - but it's very CPU intensive on my server.

My question is if I run CpuLimit, will the Monero software still behave as expected, or will some complexities in the threading/communication with daemon/etc/etc cause unintended side-effects?

edit: For reference, this is the command I'm running:

cpulimit -l 50 -- ~/monero-wallet-rpc --wallet-file ./wallets/wallet353 --password ${PW} --rpc-bind-port ${PORT}  --disable-rpc-login

It should be fine, unless the programs stay stopped for a long time, in which cases timeouts may occur. If you're local, timeouts with a single client is more than 3 minutes IIRC, so it should be just fine. I've done this a few times before with a loop and kill pidof monerod and there was no problem.


Monero Fork Seed Nodes There is no Monero Forking guide so started by using the original CryptoNote documentation (https://cryptonotestarter.org/inner.html). This refers to the following reference for registering Seed Nodes but it is out of date:

src/CryptoNoteConfig.h

 Add IP addresses of your seed nodes.
    Example:
    const std::initializer_list<const char*> SEED_NODES = {
      "111.11.11.11:17236",
      "222.22.22.22:17236",
    };

I am trying to find out where in the Monero codebase I register the IP Addresses of Seed Nodes. Searching within the Monero Source files, I have found the following:

src/p2p/net_node.h line 226

std::set<std::string> get_seed_nodes(cryptonote::network_type nettype) const;

src/p2p/net_node.inl line 367:

template<class t_payload_net_handler>
  std::set<std::string> node_server<t_payload_net_handler>::get_seed_nodes(cryptonote::network_type nettype) const
  {
    std::set<std::string> full_addrs;
    if (nettype == cryptonote::TESTNET)
    {
      full_addrs.insert("212.83.175.67:28080");
      full_addrs.insert("5.9.100.248:28080");
      full_addrs.insert("163.172.182.165:28080");
      full_addrs.insert("195.154.123.123:28080");
      full_addrs.insert("212.83.172.165:28080");
    }
    else if (nettype == cryptonote::STAGENET)
    {
      full_addrs.insert("162.210.173.150:38080");
      full_addrs.insert("162.210.173.151:38080");
    }
    else
    {
      full_addrs.insert("107.152.130.98:18080");
      full_addrs.insert("212.83.175.67:18080");
      full_addrs.insert("5.9.100.248:18080");
      full_addrs.insert("163.172.182.165:18080");
      full_addrs.insert("161.67.132.39:18080");
      full_addrs.insert("198.74.231.92:18080");
      full_addrs.insert("195.154.123.123:18080");
      full_addrs.insert("212.83.172.165:18080");
    }
    return full_addrs;
  }

My Questions:

Is this the right location for setting Seed Nodes?
Assuming it is the right location for setting Seed Nodes, how do I set the *nettype * variable which the above switch statement relies upon? What is best practice for using nettype
The port numbers are different. Why? For simplicity, can i just stick with the standard 18080 ?

Yes.
It is set for you based on flags passed in when launching the daemon. Without the --testnet or --stagenet flags, it defaults to mainnet.
Unique port numbers are used to prevent clashing with other services. A fork using the default monero ports would be very bad practice.


If Monero was sent to an address, do I have to wait to actually "see" the funds before transferring I changed bitcoin to Monero on Changelly, and got a successful transaction notice from Changelly.

I have the address that Changelly sent the funds to (it's supposed to be at my wallet, but because my wallet won't synch up, I can't "see" the funds.

Here's the question:  If I know the address that Changelly sent the funds to, could I just use that address as a send off point, and direct the funds away from my wallet over to, say, my wallet at coinbase?

Hope I'm making sense.

No. This is because your address is not actually written to the blockchain. Think of address as an instruction. The sender read that instruction, and put the money in a special envelope hidden among all others. He didn't write an address on it, otherwise everyone could tell it was for your address. Instead, he wrote a little secret and only your wallet knows how to recognize it, but it needs to scan the whole blockchian. To spend it, you need to find it first, open it, and make a new TX from what you recovered.


Why is it faster to synchronize from the network than to import from a raw data file? I've read some places that its faster to synchronize from the network than to download and then import a raw blockchain file. Why is it faster to synchronize from the network?

Mainly it's a question of available RAM and I/O bandwidth. When you're importing a raw file, reading the raw file takes up disk bandwidth as well as RAM in the filesystem cache. This competes with the disk bandwidth (and RAM) needed to write out the database file. When you're syncing over the network, this extra disk and RAM overhead isn't present.

Note that you can get some of the speed back by using a separate device for the raw file (separate from the device holding the database file). And if you have enough RAM to hold both the raw file and the entire database file, then the import can be done with no speed penalty at all; it will in fact be faster than syncing over the network.


Generating an integrated address using only the Monero address Is it possible to generate an integrated address using only the Monero address? Let's say I don't have the private keys. Can it be done with the Monero wallet or some other library?

Yes.

First you need to get the public spend key and public view key from the Monero address, which you do by converting it from base 58 to bytes, skipping the first byte, and then reading two 32 byte sequences which represent the public spend and public view keys.

Then to construct the integrated address, concatenate the bytes (0x13 || public spendkey || public viewkey || payment id || checksum) and then convert to base 58.

Note that Monero uses a modified base 58 encoding scheme, and that the payment ID must be a 8 byte value.

For source code, examine the Javascript source at this page: https://xmr.llcoins.net/addresstests.html


Full node with "8+0 connections" My full node has been completely synced for a while, but it never shows anything different that "8+0 connections". What do those numbers mean? Shouldn't they increase over time?

8 is the number of peers that you are connected to. 0 is the number of peers that are connected to you. if you want to allow others to connect to you, you need to open port 18080 on your firewall/router.


"I go faster as root" When I run cpuminer-multi as a normal user, the first message I get is "I go faster as root". It indeed does not appear anymore when run as root (with command sudo)

What is made possible by being root? Is it safe?

There are two operations at the operating system level that can be perform to improve performance in some cases but require the software to be run as superuser (root).
This is mostly useful for a user who want to mine while using their computer intensively for other tasks (see comments by Gilles and hyc below).

Setting niceness

Niceness on Unix systems is a level of priority for a task relatively to others. It is enforced by the kernel.
If priority is the same as other tasks, the access to the CPU is not optimal.

Niceness is set to 6 instead of the default 20 (the lower the niceness is, the higher the priority is)

Locking memory

If the system does not have enough RAM, part of it might be moved to the swap space when not used and then moved again to RAM when needed. This cause CPU time to be spoiled.
The system call [mlock][3] allows to lock a variable in RAM.
Variable persistentctx (of type cryptonight_ctx) contains the context of Cryptonight algorithm and is protected.

Is it safe ?

You must be careful when running a software as root on your computer. There is however no risk here is you've download the mining software from the official repository.

Note that these optimizations are not in lucasjones original software but have been added by wolf9466 (however it tried to change niceness regardless of user but was not advising to run as root).