How To Restart New Blockchain Sync? For some reason today, the Monero wallet stopped connecting to the daemon. The best reason for the error I could find is this: Attempt to get block from height 1396361 failed -- block not in db

So I tried to download a fresh version of the GUI, reboot computer, upload blockchain manually, and whatever else I could find to troubleshoot or fix. No luck.

I just want to start fresh. I have my key, so would like to start over and restore my wallet. But I tried deleting everything and starting over, but daemon will still not run.

I'm on Mac OS X Sierra. Any advice?

Unfortunately, this looks like a corrupt blockchain database.

With 0.11.0.0, monerod has a --db-salvage option which might be able to recover your database. Exit monerod, and run it again with that option appended, eg: ./monerod --db-salvage.

Otherwise, the only fix for tis is to exit monerod, delete the blockchain (~/.bitmonero/lmdb/data.mdb) and start monerod again. It will then sync the blockchain again. Nothing needs to be done with the wallet, the GUI, etc. Just the blockchain.


Is there a public remote testnet node? Similar to this public remote mainnet node?

https://www.reddit.com/r/Monero/comments/4jloss/nodemonerohashcom_public_remote_node_for_your/

I couldn't find a public remote testnet node, so I created one on a VPS.

Here's the address...

159.203.250.205:38081

If you're testing the official CLI wallet, include these options...

./monero-wallet-cli --testnet --daemon-address 159.203.250.205:38081

If you're testing the official GUI wallet, you need to do the following...

open monero-core.conf
find daemon_address=localhost:38081
replace with daemon_address=159.203.250.205:38081


Does Monero use replace-by-fee? Replace by fee is a proposed mechanism for bitcoin (that has not been adopted) by which 0 confirmation transactions can be "undone" by submitting a transaction with a higher fee.

Technically, this isn't part of the consensus protocol, since 0 confirmation transactions aren't in the blocks, but miners and nodes will ignore replace-by-fee transactions.

Does Monero support replace-by-fee? If I submit a transaction that contradicts another transaction but has a higher fee, which will (probably) be mined?

There is no such system in Monero.

Now, miners will mine transactions that have the highest fee/byte ratio first. But once a miner accepted a transaction in its txpool, it will not accept another one that's conflicting. So the only way that can work is if the second one is sent right after the first, to another miner, and manages to be mined first (ie, the part of the network reached by the second miner finds a block first). This is essentially a double spending attack, but that's the only way you can replace a tx in Monero :)


How to save the wallet state in monero-core? I'm running Linux Mint 18 and I compiled the monero-core GUI from the development branch.  Every time I start the wallet, it has to refresh from the beginning of the blockchain.  I couldn't find a way to save the wallet state so that I don't have to go through that time consuming practice every time.

Simply type:

save

on the command line, that will save the state of your balance at the current blockheight so it doesn't have to do it again next time it is loaded.


Does mining require a daemon that allows incoming connections (open firewall ports)? I've noticed that if I don't open the correct ports on my computer and router,  and then type status in the daemon, Monero will show 8+0 connections, meaning it has 8 connections where I'm getting data from other nodes, but no connections where nodes are gathering data from me. Basically, I understand that blocking the required ports results in no incoming connections.

My question: is it possible to mine with this 8+0 daemon? And if so, is the mining less efficient, or will the block solution be slower to spread to the P2P network, lessening the chance that my block solution will "win" and end up in the blockchain?

You are confused. The 8+0 does not mean this. The difference between the two types of connections are who initiated it: your daemon, or a peer. Data can flow in both directions, regardless of whether it was initiated locally or by a peer.

This also means that mining does not need incoming connections. It can work as well with or without.

Not allowing incoming connections makes the network fractionally more unstable. If you don't have incoming connections, there are less possible links between nodes, and the "depth" of network interconnectedness is less than it would otherwise be. Push to the extremes and you see it becomes easier to split the network in several parts, since you have less connections to sever.

As a last point, outgoing connections to not need open firewall ports. Incoming connections do. This might have been a mere typo though, but let's add this in case it's a real misconception.


What are specific security threats to a Monero GUI? As the release of the official Monero GUI approaches, I would like to ask the best ways to secure our systems against possible theft.  Apart from keyloggers catching your mnemonic seed or password, I am currently unaware of any other attack vectors that might compromise a GUI wallet.

Is there anything else that may prove to be a threat to a GUI wallet (with possible variation depending on the user's OS), and what are the proposed solutions?

It is possible that certain APIs such as for the Monero Twitter feed could be a possible security threat. Although any APIs that are added to the wallet will be believed to be safe by the developers that implement them, the safest practice would be to disable APIs that you will not be using. In the case of Twitter, its API will be disabled by default.


Why is there only a single implementation of mining pool software? Every pool in Monero looks the same and uses the same software. Why is this?

Lack of different implementation may look like lack of interest but in this case its most certainly that the current implementation by zone117x going solid for 2+ years and the first open-source for CryptoNote coins is good enough. There is another pool software implementation being run by Minergate but the client and server-side is closed-source.


Who gets monero transaction fees? I am running a monero node and I would like to know where do the Monero transaction fees go ? Do I need to set something into the monerod node setup to receive transaction fees ?

Transaction fees are paid to the particular miner who includes the transaction in a block. The more transaction you fit in a block, the more fees you get. However, once you pass the median of the last 100 blocks in size, the base reward goes down, so there exists a sweet spot in size which maximizes the base reward plus transaction fees you get.

Once you've start monerod, issue this command to start mining:

start_mining ADDRESS THREADS

ADDRESS will be the Monero address you want the mining fees to go to. THREADS is the number of threads you want to dedicate to mining.

Alternatively, if you have low hash rate, you might prefer to mine in a pool, which offers more frequent, but smaller, payouts, for a long term income which is roughly on par with solo mining.


MyMonero blockchain is behind For the last 10 days my mymonero wallet has not let me withdraw. It says the blockchain is behind and catching up, but every day its further behind so my XMR are trapped. What is going on?

The MyMonero web wallet's infrastructure is behind on syncing to the Monero network, scanning your wallet, or both. Luckily, MyMonero is only an interface to the network. You can access your funds through another mechanism by following these steps.


How do i delete the wallet cache? In rare cases the wallet cache needs to be rebuilt. For example when the wallet cache isn't compatible with the current wallet version.
How do i delete the wallet cache and trigger a rebuild?

In your wallet folder* you have three wallet files.

<walletname>.keys
<walletname>.address.txt
<walletname>

The wallet cache is the file without an extension. If you delete or move that file to another folder the cache will be rebuilt when opening the wallet.

Note. It is advised to properly backup your wallet files before you perform this action. Also note that deleting the wallet cache results in losing some of the transaction history, namely recipient addresses and private tx keys. Thus, if you want to use an existing wallet with the GUI, it is advisable to backup your wallet cache in case you need transaction history info in the future.

*The wallet folders are as follows:

Windows: Documents\Monero

Linux: ~/Monero

Mac OS X: ~/Monero


Recovery from seed not working on monero.mac.x64.v0-9-4-0 Whenever I proceed according to these instructions: https://getmonero.org/knowledge-base/user-guides/restore_account

And type: simplewallet –restore-deterministic-wallet

It just returns:

-bash: simplewallet: command not found

Are there any formatting mistakes that I am making that are causing this error?

Elaborating on user36303's post … Adding the directory location, where Monero's binaries reside, to your PATH variable, is just as simple as adding a line such a the following to the end of the .profile file in your home directory (in the below example, the Monero directory is /opt/monero).

PATH="${PATH}:/opt/monero"

This will avoid the command not found error. Next, you can check if the PATH edit works properly:

mac:~ dpzz$ which simplewallet
/opt/monero/simplewallet


Can monero network exist without miners? Can the Monero network exist without miners? Can we just run monerod on home computers? Must some of us use the start_mining command (or a similar command in other mining software) to support the network?

If no one is mining, and this is very rare for any cryptocurrency, no transactions would be able to be verified, yet your balance would still show up assuming people are still running nodes.


How to understand Monero source code? I am not a professional in C++ but I have good experience in it and can google my way if i have problems. I also have basic knowledge of the GNU Build System and technicians of Cryptocurrencies (From Andre's book) .
My end goal is to test Monero's mining algorithm in isolation. Separate it and try modifying it or integrate it with a custom script in a new blockchain.
However, I don't understand the source code structure. Where should I start? I don't understand the flow of files.
I know this is hard but I am willing to learn whatever is required or give it enormous amount of time if that is required.

The best place to understand Monero mining is to start at https://github.com/monero-project/monero/blob/master/src/cryptonote_basic/miner.cpp

This is the in-built miner which implements the threads for fetching block templates, hashing and if a valid nonce is found, submitting to the network.

From this file, you can grep various other methods it uses to delve deeper.

Understanding the overall project structure requires studying it. Get comfortable with searching the source files with grep or whatever search tool you are used to.


Are there any test input and output vectors for the variant 4 PoW of Monero out there? Trying to play around with implementations, and want to be sure the baseline I've put together is correct.  It appears that in the Monero Project github, the test vectors only go up to variant 2.

There are test vectors for CNv4 in https://github.com/monero-project/monero/blob/release-v0.13/tests/hash/tests-slow-4.txt


How can I check my balance in mining pools that dont have an login/account option? like XMRpool On XMRpool_eu there is no account or login, so how can I check my balance? I assume that's why there is the "Your Stats & Payment History", on the home page, but it doesn't work for me. It says "Enter Your XMR address or address@paymentID", so I though it's ok, when I put in my wallet adress, but it says just "not found". Can you help me? I started to mine yesterday, maybe I have to wait? Til when? I understand I can not see any payments yet but the worker should be find, because I am sending results to the pool. So at least I should see my stats. Thank you

So problem solved - I did a stupid mistake. I did everything acording to this tutorial https://www.usxmrpool.com/#easy_mining_guide, which I find well done (for noobs like me), but I wanted to mine in a different pool, than the tutorial shows. When I checked the pool adress in config file, I overloocked that I didnt change it. There is a lot of pools with similar names so be avare of it (like xmrpool.eu and usxmrpool.com).
Thank you


RPC method to translate key_offsets This SE answer explains the "key_offsets".

Is there any RPC call to translate theses offsets to their matching outputs ?

The method is get_outs.

Here is an example of a query:

curl -X POST http://127.0.0.1:18081/get_outs \
     -d '{"outputs" : [{"amount":500000000000, "index":154735}]}' \
     -H 'Content-Type: application/json'

Result:

{
    "outs": [{
        "height": 141288,
        "key": "29a5f6af06999f1c61c97a415c4ac02a38be8a09be090a76fcf5abc2dad3fc1e",
        "mask": "e9aa7c81cdb5b3148fb7628063cd7a07d1add1643cedd3fa34479d859cc56265",
        "txid": "87dec17ae302c75d202ebcf7bac0d2c295573ec5976b253106fe48ee082c292e",
        "unlocked": true
     }],
     "status": "OK"
}

In addition, RPC method gettransactions return an array of offsets that uses a differential encoding, like :

"key": {
    "amount": 1111111111,
    "key_offsets": [ 103, 46, 15, 24, 36 ],
    "k_image": "6fc468a7e6205ec3acece150343a2b1971743f8292ca51b04079950d975a1da0"
}

Before querying get_outs, the array should be interpreted as

[ 103, 149, 164, 188, 224 ]


What is the proper way of scanning a bunch of monero private keys to get an updated balance? I have a database of monero private keys, but I want to be able to scan these keys for an updated balance and insert this balance data back into my database.

What is the best way to rescan a bunch of monero private keys? Do I use moner-wallet-cli or the rpc command? Is there an example somewhere?

Use the monero-wallet-rpc https://getmonero.org/resources/developer-guides/wallet-rpc.html.

You would use the methods open_wallet, refresh and get_balance.


I sent a transaction and it gave me an error then went through I was sending some XMR using XMR.to
XMR.to gave me the address to send to in my monero wallet. The monero wallet went white and started thinking. It took along time. Then I'm not real clear on what exactly it said but there was a message about the transaction not going through and I hit the button on the right to send it again and it went through.

Did I just encounter a malicious node?
Does this attack I've been told about only effect one transaction?

I guess this could happen if your transaction got into a block that was lost due to a chain reorg.


Can I retroactively add the spendkey to a watch only wallet? If yes, how can this be done?

The reason being that I want to spend the balance, but I don't want to set the wallet up again and sync it as this takes a while. It's just a time saver I'm hoping for.

As per Jolly Mort's comment, this is currently not possible.


How sophisticated will Monero's multisig capability be once RingCT is implemented and it's future plans afterwards? A lot of people talk about the fact that once RingCT is implemented multisig will be possible, but it seems to be a very open statement, can someone give a more comprehensive breakdown of what kind of multisig use cases will be possible initially, as well as the limitations, upper limits and plans for expanding on multisig once it's initially rolled out?

Multisig will not be directly available once RingCT is merged. It will need further changes, which will build upon the RingtCT work. It is intended to allow typical N of M threshold signatures, in a way that is not visible from the blockchain (ie, you can't tell whether a transaction was made with multisig, or not).

See https://web.archive.org/web/20161023005318/https://shnoe.wordpress.com/2016/03/22/ring-multisignature/ for a description by Shen Noether, the author of RingCT.


What is the roadmap for a GUI wallet? I love Monero and always have but the lack of a GUI wallet is a huge issue for people actually trying to use the currency in the real world.  What is the plan for a GUI wallet on all platforms including mobile?

Obviously there is money and interest out there and I want XMR to succeed, so this seems like the next logical leap.

What is the plan for a GUI wallet on all platforms including mobile?

The "official" GUI is funded and in active development and getting closer to completion. Open issues can be tracked on GitHub

There are some existing mobile wallet options (in beta) with more on the way


Function ge_fromfe_frombytes_vartime() step by step explanation? Could somebody please explain how this function works step by step?

Why: I am programming the Monero wallet functions on a quite limited platform with only some inbuilt cryptographic primitives. I need to implement ge_fromfe_frombytes_vartime because this function is needed for computing key images.

What I have available:

// Keccak hash function
keccak256( ... )

// This routine performs an elliptic curve
// scalar point multiple using the Elliptic Curve 25519
ec25519_point_multiply( ... );

// Multiply point by a scalar for Elliptic Curve 25519
ed25519_scalar_multiply( ... );

// This routine recovers X-coordinate given Y-coordinate
ec25519_xrecover( ... );

// Check signature (point) against message string (hash)
ed25519_valid_sig( ... );

// Functions for modular arithmetics, operands could be 32B integers
C = (A+B) mod P
C = (A-B) mod P
C = (A*B) mod P (P odd)
C = B mod P (P odd), A is ignored
C = (A/B) mod P (P odd)
C = (1/B) mod P (P odd)
C = (A * B) F(p) only, P is ignored
C = (1/B) mod P (P even), A is ignored
C = B mod P (P even), A is ignored

Thanks a lot for any help!

ge_fromfe_frombytes_vartime takes as input a field element (as a string of bytes) and outputs a point (a group element), on the ed25519 curve. The precise implementation is detailed in Shen Noether's paper on the subject.

As @knaccc commented above, a better example for porting the implementation is probably Mininero's implementation of hashToPointCN.


Error building monero-stratum on macOS I am getting an error building monero-stratum on macOS. cmake completes without error, but when I run make, I get the following error:

mac:monero-stratum powerkey$ make
Scanning dependencies of target cnutil
[ 20%] Building CXX object cnutil/CMakeFiles/cnutil.dir/src/cnutil.cpp.o
../monero-stratum/cnutil/src/cnutil.cpp:3:10: fatal error: 'cryptonote_basic/cryptonote_format_utils.h' file not found
#include "cryptonote_basic/cryptonote_format_utils.h"
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [cnutil/CMakeFiles/cnutil.dir/src/cnutil.cpp.o] Error 1
make[1]: *** [cnutil/CMakeFiles/cnutil.dir/all] Error 2
make: *** [all] Error 2

I am following the instructions here. Monero 12.2 is installed and working.

I am using MacPorts instead of homebrew on macOS High Sierra (10.13.5) and Xcode 9.4.1 is installed if that changes anything.

My '/path/to/monero' was not correct. I was, incorrectly, pointing to monero binaries instead of source. Changing the path, to point to source corrects the problem.


Command for returning transactions in json format to external code I want to iterate (from a Python program) over all the outputs of all the transactions on the blockchain.
Is there any RCP command or something like that, that returns a structure of transactions as is and not their hashes?

Thank you all!

https://getmonero.org/resources/developer-guides/daemon-rpc.html

Documents all the API methods you would need.

You would first use get_block_count then iterate calling get_block, then calling get_transactions with the returned tx_hashes from get_block.


How to pay the import fee from MyMonero.com for a paper wallet? My current balance shows 0 XMR on MyMonero.com since my account was not yet synced with the blockchain. However, to import transactions, you must pay a fee.

I don't have the monero-wallet-cli to use with my paper wallet. Can I pay this fee by sending XMR directly from an exchange to the fee address?

The fee must be paid to that address but the originating address does not matter. Doing this from an exchange is a valid alternative.


How does block time depend on number of transactions and block size? I've been browsing http://moneroblocks.info while waiting for my transaction to get through and noticed what seems to be a strong correlation between number of transactions in a block and block time:

I looked at the 50 blocks from height 1120832 to 1120881. If I counted correctly, out of the 12 blocks in that interval containing 5 or more transactions (according to that block explorer), 10 blocks took more than 5 minutes, and only 2 blocks less than 5 minutes, while the targeted average block time is 2 minutes.

My uneducated guess now would be that dynamic block size adaptation somehow kicks in here, but I have no idea how the underlying mechanism causes block time increase.

Right now, it's basically a 1:1 relationship in the long term for a very basic reason. According to moneroblocks.info, there have been roughly 8100 transactions in the past week. Since there are 10080 minutes in a week, that means there have been approximately 8 transactions every 10 minutes.

I'm going to go out on a limb and say this have been a higher-volume week due to the big price spike and news, and use a smaller number of 5 transactions every 10 minutes for the rest of my answer. Why 5 every 10? Because for a two minute block size, that means 1 transaction every block on average.

The on average bit is important. Monero has a two minute block time, but blocks aren't always exactly 2 minutes... they just aim to average to be 2 minutes. Sometimes a block takes 10 seconds, other times it takes 10 minutes. And this is the whole crux of why longer blocks seem to have more transactions.

Basically, if we see a transaction on average every 2 minutes, and we get a number of 10 minute blocks, we should see approximately an average of 5 transactions in those long blocks. Likewise, if we see a number of 1 minute blocks, we should see approximately an average of 0.5 transactions per block.

Disclaimer

This is all based on the assumption that transactions are basically included in blocks right away. At very heavy usage times, we could see a backlog of transactions like Bitcoin has at times experienced, and as a result see a bunch of blocks in a row that all have similar large numbers of transactions regardless of how much time has passed. This gets muddied by the variable block limits in Monero, but is beyond the scope of this question.


Error: Stratum request without method or result field I'm trying to connect to pool.minexmr.com with port number 4444.
I'm using the npm package stratum here is the link to the npm package and using the example from the example/client.
But I'm receiving an error which I don't understand. The logic is:
connect-> authorize -> subscribe -> submit

I also tried:
connect-> subscribe-> authorize-> submit

But that didn't work as well and isn't logical to me.
The code and output is codepile.
The socket says the authorization is still pending that where the error comes from?
But how do I know when the socket is authorized if async/await and then not working.
As you can see in the second log from the socket Authorized is still false while my console.log says authorized and the socket says that I'm not authorized.

Bitcoin's stratum is not the same as Monero's stratum. The node module you are trying to use is a Bitcoin stratum module yet you're trying to use it with a Monero pool. That's the primary reason it's not working for you.
Monero style stratum payloads are shown in this answer, amongst others.


2 Monero GUIs, 2 different balances I loaded 2 PCs with Monero GUI and use the same wallet on both.  5 of 6 transactions are the same and the balance is @1 XMR different.  For the 6th transaction, one wallet says I received 0.6 XMR, the other says an "unknown recipient" was sent .94 XMR.  How can I reconcile these transactions?  One is obviously wrong.  I looked at the check transaction feature but I don't seem to have all the right info from one GUI to input into the other.

Which wallet is accurate? The one with 5 or 6 transactions? I would likely delete the GUI and the wallets. Reinstall the GUI and then recover the wallet from the seed but I'm not expert.


How is CryptoNight variant 4 increasing the CPU to ASIC performance ratio? At block 1788000, Monero will switch PoW from CryptoNight variant 2 to variant 4. This change has two main goals:

break any current CNv2 ASIC
make hypothetical CNv4 ASICs perform less well compared to CPUs, making designing such ASICs less appealing to a profit oriented outfit

How is that second goal technically achieved in practice ?

At block 1788000, Monero will switch PoW from CryptoNight variant 2 to variant 4

The current naming is a little misleading as we are really on variant 3 right now, with the next being variant 4. This is because variant 2 actually spanned 2 releases in quick succession. Naming aside...

  How is that second goal technically achieved in practice ?

The best answer is probably found in the README from the original proposal. Quoting two pieces:

  It introduces random integer math into CryptonightV2 main loop.

  ...

  Instruction set is chosen from instructions that are
  efficient on CPUs/GPUs compared to ASIC: all of them except XOR are
  complex operations at logic circuit level and require O(logN) gate
  delay. These operations have been studied extensively for decades and
  modern CPUs/GPUs already have the best implementations.

Ultimately, the idea here (and in other similar proposals such as RandomX/RandomJS), is that the hashing function has to execute some random instructions (a program) which essentially means an ASIC/FPGA would need to have the properties of a CPU/GPU - being good at performing general purpose tasks. This defeats the whole purpose of an ASIC (application specific), therefore the idea is an ASIC can't be as good as general purpose hardware like CPUs/GPUs.

It will almost certainly obliterate any current ASICs/FPGAs, but worth noting a comment from hyc:

  CryptonightR is still only intended as a stop-gap. The instruction set it uses is small enough that a very simple CPU could be added to an ASIC to process it. There is no expectation for CN-R to have longer than 6 months effectiveness.


PoloniexTradeGUI trading application What features does PoloniexTradeGUI offer?

How does it secure login credentials?

Have any Monero core team members reviewed the code?

The GUI just offers an alternative way of trading on Poloniex. There are no additional features.

The password files are stores in plaintext in the same directory of the executable.

The code has not been audited by any core member and is not affiliated with the Monero project in any direct way.


Can the same input appear in a block multiple times? I have questions regarding two situations:

Suppose there are two transactions being made. One uses inputs A, B, and C, with C being the real one. Another is sent using inputs A, D, and E, with E being the real one. Is it possible for both of these transactions to be recorded in the same block? A would appear twice, even though it was never actually spent.
Suppose there are two transactions being made. One uses inputs A, B, and C, with A being the real one. Another is send using inputs A, D, and E, with E being the real one. Is it possible for both of these transactions to be recorded in the same block? A would appear twice, even though it was only spent once.

If it is not possible for the same input to be included in a block multiple times, how does the network choose which transactions get priority?


What is in ~/.bitmonero/lock.mdb? Is it needed to start syncing from a blockchain backup from another computer? I plan on using monerod only for a couple of weeks a year with --prune-blockchain flag to keep
the blockchain data below 20GB. In the meantime I will be reinstalling the operating system of the PC that monerod will be run on.
When starting anew I want my monerod to save time on syncing the blockchain as well as to remember previous settings with regard to pruning.
Do I have to backup the entire lmdb/ directory or just lmdb/data.mdb? What is in ~/.bitmonero/lock.mdb? Is it needed to start syncing from a backup blockchain data from another computer? After starting
anew do I have to run monero --detach --prune-blockchain again or is it unnecessary?

Do I have to backup the entire lmdb/ directory or just lmdb/data.mdb?

You may as well backup your whole ~/.bitmonero folder, to keep your config, logs and blockchain.

What is in ~/.bitmonero/lock.mdb?

It's just a lock file used to control concurrent access. You're presumably going to shut down Monero before backing up so whether you copy this file or not it really won't matter.

Is it needed to start syncing from a backup blockchain data from another computer?

No.

After starting anew do I have to run monero --detach --prune-blockchain again or is it unnecessary?

You don't need to use --prune-blockchain again. Once your blockchain is pruned it will always be pruned. Whether you use --detach or not is up to you.


Can miners know when their pool mines a block? In other words, is it possible to pool mine in a transparent way?

Yes. A pool operator gives its miners the hash of a block it created in the hopes that some miner will discover a unique solution to a hashing algorithm. If a miner finds a solution it gives it to the pool, and the pool then submits the entire block it created on the network. All the miners know the block hash and can thus verify if it is an accepted block.


Purpose of rescan_spent command What is the purpose of the rescan_spent command? Once I spend an output, why would I need to scan my spent outputs to search for it again?

Sometimes, the wallet's idea of what outputs are spent and what outputs are not get out of sync with the blockchain. This can happen if you exit the wallet without saving after sending a tx, or if it crashes.

rescan_spent will look for the key images on the blockchain to make sure it's up to date.

Since this involves sending your key images to the daemon, it needs a trust daemon, since otherwise this is a privacy breach. So if you are using a remote daemon, you will only be able to use that command if you started moneor-wallet-cli with the --trusted-daemon option (by default, local daemons are trusted).


What is the safest method to create a Monero wallet for cold storage? If I want to create a Monero wallet in the most secure manner possible, what are the best practices in doing so?

Are there any written user guides or video demonstrations of this process?

Ok, here is another version. It's not perfect or detailed and it will probably need some additional research.

Preparation:

Get an old computer (and seal its Ethernet port with duct tape – this computer will not touch the Internet again)
Get several fresh USB sticks
Wipe the old computer and the USB sticks (you can use something like DBAN to wipe everything together)
Remove Wi-Fi/Bluetooth cards of your old computer if possible. If not possible, deactivate them in the BIOS.
Get some bootable live OS. You can use Ubuntu, but more or less anything goes. (Check the PGP signature, so you know what you downloaded is correct.)
Download Monero. All you need is monero-wallet-cli. Put that on a stick, too. (Check the PGP signature, so you know what you downloaded is correct.)

Creating the Wallet:

Now boot your old computer with the live OS (only with monitor, keyboard and mouse attached). You can also install the OS, depends on your level of paranoia/convenience.
Copy monero-wallet-cli to your old computer. If you run a live OS, the locations you have to copy the executable to might differ (Google is your friend). Also how to mount the USB stick might need some research.
In case it doesn't work, install the OS. Since it won't "phone home", this is ok too.
Now run monero-wallet-cli. It will create you a fresh wallet. If you intend to save it digitally too (as a .keys file), give it a proper password when asked.

Voilà, you have created your complete secure cold wallet. But wait, it's not done yet.

Data to save:

Now these steps are very important. You have different data to save now. Since most of the data is not allowed to ever touch a computer connected to the Internet again, I would use at least two different USB sticks here.

Check your address in monero-wallet-cli (use command address). This is your public address and it is allowed to touch the internet. Copy it to a textfile on USB 1.
Now check your seed with command seed. You should save it as a text file on USB 2, but also have to note it down by hand several times. This is all you need to restore your account after all. Make sure the words are correct and that the number/sequence is right, too.
In the folder where you ran monero-wallet-cli, three files got created. Copy the .keys file to USB 2.
Optionally, you can also save your view key (maybe put it on another USB, so you can decide later how and when it touches another computer)
It is also wise to note down the seed together with the monero-wallet-cli version. You can check it with ./monero-wallet-cli --version.

The process is now basically finished. Of course there is lots of variance. You can go with a paper wallet only, by just not doing USB 2 and just keeping the handwritten seed as the only backup. USB 2 should only touch offline computers.
Turn off your computer, wipe it again if it was not a live OS, and keep your seed and USB 2 safe.

Please do practice the creating and restoring process before sending any meaningful amount to such a cold wallet


Can simplewallet auto refresh? Sometimes after I send a transaction, I like to use the "refresh" command so that I can see how many blocks (confirmations) have occurred for my transaction.

Similarly, when I am expecting to receive a transaction it would be nice if simplewallet would refresh automatically on my behalf instead of my needing to type "refresh" into the command line myself.

Is there a way to make simplewallet auto refresh?

Recent simplewallet has an automatic refresh, every 90 seconds. If can be enabled and disabled by set auto-refresh 1 and set auto-refresh 0. To view current settings: set.

When this was implemented, I believe the default was disabled, so if you created your wallet at that time (not sure exactly when that was), this might be off, and you need to enable it. The default is now enabled.


Largest ring size ever used in a Monero transacation What is the largest ring size ever used in a Monero transaction?

What was the size of that transaction in kB?

Please share the transaction ID if available

According to Monero Blocks statistics the highest pre RingCT ringsize was 850. I was not able to immediately locate that transaction on the blockchain.

I was able to find a sample 150 mixin transaction from block 1,067,631 with a size of 70,219 bytes and a transaction fee of 0.69 XMR.

The above pre RingCT ring size and transaction size records were prior to the introduction of RingCT. With the recent v0.10.3.1 point release a new dynamic block size limiter algorithm was introduced to account for the unexpectedly fast adoption of RingCT.

Someone recently completed a transaction with a new record ringsize of 4500 with a size of 306,775 bytes and tx fee of 0.093729000000 XMR. This transaction appears to be near current limits, with anything larger according to smooth likely being:

  too big relative to fee and penalty (unless the block size grows).
  If it were slightly smaller, say 4000 instead of 5000, it likely would confirm and with a fee of less than $2. That's a pretty nice demo of how to achieve an extreme degree of untracability at significant but not obscene cost.


Do nodes authenticate other nodes for p2p purposes? (re: incoming connections) What I'm getting at is... what happens if an attacker/bad actor/etc were to see that I'm running a node and that I'm allowing incoming connections?  To what extent is my computer exposed by port forwarding through my router's firewall to my node?  Does monerod block all requests that are not somehow authenticated?  Is authentication unnecessary due to the nature of p2p?  Since monerod is "guarding the door," is this not really an issue?  Does monerod only respond to other monerod p2p requests?

While opening ports does put you more at risk than having none open, you are only in danger if an attack can exploit the service that is using that port. An open port is not an all access pass to your PC/network if an attacker happens upon it. They would need to manipulate whatever it is on the other side to gain some type of basic system access.  Then they could maybe gain enough privileges to compromise your system.

It's a bit like leaving your car keys in a restaurant bathroom 100 miles away. While someone could use them to steal your car, they still have a loooong way to find your car and make it happen.

You should also consider doing the following if you run a full node:

Switch to another OS other than Windows.  They are all much less vulnerable to attack, especially Freebsd and Openbsd.
Hard wire everything--your mouse, your keyboard, your connection to the router.  No Wi-fi.
Use a dedicated computer with only the Monero and one web browser program on it.
While on the web, only go to sites you know are clean and only Monero associated ones at that.  Never surf the internet for anything.  Never click on any ads.

Do the above and your odds of getting hacked and your Monero stolen are low, if not zero, IMO.


Running CPUminer Solo mining without client dependencies Is there any way we can run the mining script on a client machine without installing required lib-jansson and lib-curl libraries after compiling.

https://github.com/hyc/cpuminer-multi/tree/daemon


What is the easiest way to get a notification for incoming transaction? I tried to get a notification for an incoming transaction??
What is the best way?

As I see, I have three options now. (Updated 02/20/2018)

Make a script to check rpc log file. Then get wallet information.
(Not working) Run incoming_transaction on RPC regularly. Then get new inputs.
Modify source and build it.

Any other options there??

Thank you,

Using the --tx-notify parameter to monero-wallet-cli/monero-wallet-rpc, you can run an arbitrary program when the wallet receives a transaction. The option takes a command line as parameter. The binary in that command line should have a path if necessary. Before being called, any instance of the "%s" string will be replaced by the transaction hash.

For instance:

monero-wallet-cli --wallet-file example-wallet --tx-notify "/usr/local/bin/on-new-tx %s"

This on-new-tx binary will be called when the tx appears in the pool, and again when it is mined. In both cases, the txid will be passed as first and only parameter.


What is the the difference from spendkey vs the viewkey in Monero? I'm using the monero cli and was wondering what is the difference from the spendkey and the view key. They both output a secret and public key. Do you give the public view and spend key to the person that is paying you?

Do you give the public view and spend key to the person that is paying you?

Yes. Both are conveniently packed inside your address. Think of them as "instruction to sender".

  I'm using the monero cli and was wondering what is the difference from the spendkey and the view key.

Here's a quick overview of what each key is used for.

The sender reads the public spend key and public view key from your address, and uses them to construct a special one-time "container" which will hold the funds intended for you.

On the receiving end you check each TX against your secret view key (technically, you also need the public spend key) and when there's a match, your wallet takes note of that, adds it to the balance and saves the details into wallet cache.

When you want to spend, your wallet uses both the secret view key and secret spend key to reconstruct a key to the particular "container", and a key image of the container. With that you can spend, or just check if it was spent.


What are hardware requirements to run a small mining pool? Im planning on setting up a small Monero or DigitalNote minig pool just for fun. If for example, 10 people connect to that pool, what would be the hardware requirements for it (CPU, RAM and storage)? Could I run it on a Raspberry Pi 3? Would it somehow be profitable?

I have researched a bit and it looks like Ubuntu 14.04 LTS is the best choice for the server software. The raspberry pi reaches the hardwae requirements, but is it enough?

I use a server at home and it is an old Power Edge 2950 (2 x duel quad core Xeons and 32gb RAM).  I am running UBUNTU 14.04 LTS and it seems to run the daemon, wallet, and front end via Apache2 pretty well. I haven't had a bunch of traffic on it yet because it is still in the testing phase and it is like pulling teeth finding miners to connect and hash to test everything out but it seems stable.  I would think a quad core or better processor and at least 8 gb of RAM would be a pretty minimum requirement.  Anything else would be a bonus unless you are planning on having hundreds/thousands connect in which case a VPS or upgrading to a newer hardware setip (perhaps with a Gb switch) would be warranted.


Using monero-php, I am getting "Method not found" when calling open_wallet I want to open my Monero testnet wallet via a php script
using a remote node but it's returning: "Method not found".

Here is the code I am using:

$hostname = 'node.xmr.to';
$port     = '28081';
$daemonRPC          = new \MoneroIntegrations\MoneroPhp\daemonRPC($hostname, $port);
$getblockcount      = $daemonRPC->getblockcount();
$on_getblockhash    = $daemonRPC->on_getblockhash(42069);
$getlastblockheader = $daemonRPC->getlastblockheader();
$get_info           = $daemonRPC->get_info();

$walletRPC     = new \MoneroIntegrations\MoneroPhp\walletRPC($hostname, $port);
$open_wallet   = $walletRPC->open_wallet('<wallet name>','<wallet password>');
dd($open_wallet);
die();

Also I am trying to get unique deposit address for my Monero wallet.

The wallet RPC and daemon RPC are different. Refer to the projects documentation on how to run both wallet and daemon RPCs.

The node you reference at node.xmr.to is a daemon RPC, not a wallet RPC, therefore you cannot use it for any of the wallet commands, only daemon commands.

To use a wallet RPC (like you are trying to do from php), you have to run this wallet RPC yourself (e.g. the app monero-wallet-rpc, again mentioned in the monerophp documentation). Note, the wallet RPC still needs to connect to a daemon (monerod), for which you can specify a remote daemon if you are not running your own local full node.

For the wallet RPC to use a remote daemon, you launch passing the parameter --daemon-address. E.g.

./monero-wallet-rpc --help
...
--daemon-address arg                  Use daemon instance at <host>:<port>
...


Mnemonic seed creation in "pseudo code" I would like to know exactly what is going on behind the process of creating the mnemonic seed from the string of bits.
For example I don't understand why in the vocabulary is only around 1624 words, I would expects full 11 bit scope (I suppose that bit string is divided into 11-bit parts and each is parsed with appropriate word)..
Maybe I have wrong vocabulary, in this case please point me somewhere.
Thank you in advance!

I would like to know exactly what is going on behind the process of creating the mnemonic seed from the string of bits.

The whole process is explained here:

How are monero wallets generated?

  For example I don't understand why in the vocabulary is only around 1624 words, I would expects full 11 bit scope (I suppose that bit string is divided into 11-bit parts and each is parsed with appropriate word)

It's 1626 words, and a mnemonic of 24 words gives 1626^24 combinations which is slightly above 2^256.

The conversion is done in triplets where each triplet is 32 bits of information:, ie 8 * 1626^3 = 8 * 2^32.0013 = 2^256.01

It's really a conversion between a base1626 number and a base16 number (or backwards), where each word can be though of as a label for some number between 0 and 1625.


Where are the monero-core configuration parameters stored? Where are the monero-core (official GUI) configuration values stored?

The monero-core configuration is stored in the following places:

Linux (File) :

/home/xxx/.config/The Monero Project/monero-core.conf

Windows (registry key) :

Computer\HKEY_CURRENT_USER\Software\The Monero Project\monero-core

OS-X (File) :

$HOME/Library/Preferences/org.getmonero.monero-core.plist


Who receives the change from stealth addresses? Let's say I have the stealth addresses S1 (unspent outputs = 10 XMR), S2 (unspent outputs = 20 XMR), S3 (unspent outputs = 30 XMR). Then I'm sending 35 XMR of the outputs to another one-time public key R.

How does the reference wallet choose which of my stealth addresses will be used to have 35 XMR as input? S1 and S3, or S2 and S3? Why?
To which address does the reference client send the change? To one of my stealth addresses (S1, S2, or S3) or to a new stealth address S4?

How does the reference wallet choose which of my stealth addresses will be used to have 35 XMR as input? S1 and S3, or S2 and S3? Why?

The wallet prefers older outputs (though someone can give you a better, code-based answer, I'm sure).  It does this because of the common heuristic that the newest ring member often indicates the true spender.

  To which address does the reference client send the change? To one of my stealth addresses (S1, S2, or S3) or to a new stealth address S4?

The client will construct a new S4 stealth address.  S3 and S1 and/or S2 are fully spent/exhausted when used.  Outputs cannot be partially spent.  They are fully spent and change is returned.


Usefulness of an intermittent full node I run bitmonerod on my laptop when I'm using the computer but I shut it down for the night. I don't mine due to the computer relatively low capabilities.

How useful for the whole Monero network is a full node that does not mine and that is active only part of the day?

First and foremost, any node run from home, i.e., run on your own personal computer contributes significantly to the decentralization of the network. Ideally, to decentralize hashing power, such a node would also mine. In the future Monero will hopefully maintain decentralization in both hashing power and full nodes.

To answer your question, a node that is only partially online (i.e. only during the day), also benefits the Monero network and its decentralization. Although a node that does not mine is, alas, unable to contribute to the decentralization in hashing power. I'd argue that there is a linear relationship between the amount of hours that the node is online and the usefulness to the Monero network and its decentralization, conditional on the node properties being the same. Bear in mind that running a full node in Monero actually has an incentive, namely privacy. That is, running a full node will give you the greatest privacy in Monero. By contrast, using a remote node via, for instance, a lightweight client is actually detrimental to privacy. In addition, the difference in privacy between a full node/client and a lightweight client is significantly greater in Monero than in Bitcoin.


How long will Monero mining remain profitable? I am worried about the profitability of Monero mining, because according to yahoo finance:

  There will be a total of 18.4 million Monero’s XMR coins in circulation by May 31, 2022. And the project has already mined more than 90% of it

Also according to a post on reddit, right now the block reward is 2-XMR and it will be 1-XMR before January 2021. So my concern is if I setup a rig for mining Monero this year, will I be able to reach the breakeven of my investment if it becomes less profitable after or before 2022?

If the profitability of Monero goes down, less people will mine, meaning the profitability will go back up until it reaches an equilibrium. Ignoring hardware improvements, your profit after paying for electricity will be roughly the same now as it would be in a year.


What will happen to my wallet during next hard fork? I read the following announcement on a mining pool website:

  HardFork V3: 23 days from now

What will happen (if anything) to my actual wallet during this hardfork update?
Will it change address? Do I need to do something to preserve/transfer my balance?

I created the wallet with simplewallet command-line client, version Monero 'Hydrogen Helix' (v0.9.4.0-release)

This answer is assuming you are on any 0.9.x version (lower versions would already have been booted off in the previous hardfork) currently. Note that 0.10 is going to be released soon. In general it is advised to use the latest binaries, because they contain bugfixes and new features.

  What will happen (if anything) to my actual wallet during this hardfork update?

Nothing basically. The only (minor) change is that it will enforce coinbase transactions to be split in denominations. See line 123 of the dev logs.

  Will it change address?

No. Addresses will never change during a fork.

  Do I need to do something to preserve/transfer my balance?

No coins have to be moved. Thus, to answer you question, no you don't have to do anything.


What are spans (as seen in the output of sync_info)? Running sync_info inside the monerod prompt outputs something similar to this (IPs and other information redacted/modified for privacy reasons):

Height: ., target: 1486690 (.%)
Downloading at . kB/s
7 peers
a.b.c.d:18080       ................  1486690  . kB/s, 0 blocks / 0 MB queued
e.f.g.h:18080       ................  1486690  . kB/s, 0 blocks / 0 MB queued
i.j.k.l:18080       ................  1486690  . kB/s, 0 blocks / 0 MB queued
...
13 spans, 0 MB
a.b.c.d:18080       20 (1292174 - 1292592)  -
e.f.g.h:18080       20 (1302114 - 1302532)  -
i.j.k.l:18080       20 (1312194 - 1312312)  -
...

What does the 13 spans, 0 MB represent? What does the 20 (number of blocks?) below that mean?

Those are sets of blocks downloaded from the associated peers. The 20 here is the number of consecutive blocks downloaded at once, and the two numbers after this are their heights, which seems to be off by one. Those are downloaded asynchronously so they're ready when the blockchain sync process needs them.
Here, you have 13 such spans, totalling less than a MB of data.


What is the difference hashing power when running the JS Monero Miner via a browser vs Running solo Mining with the cli? Just learned about the js miner for monero https://coin-hive.com -

What is the difference in hashing power when mining through the browser using this method and doing it via the command line as a solo miner?
Since your mining in your browser for coin-hive, so are they a pool miner?
How do you cash out?

They claim "65% of the performance of a native Miner", and this seems to be roughly the case on my PC.

This is definitely a pooled mining setup, and they're running their own pool. Which means if you want to cash out, you need to ask them to let you cash out through their web site.


Why does md5sum of .keys file change with each restore from mnemonic seed? When using --restore-deterministic-wallet the same Monero address is restored but the md5sum for my wallet.keysis different. Are Monero wallets truly deterministic? Is the change in md5sum cause for concern?

The encryption used by the keys file is randomized. It uses a key derived from your password, and an IV (initialization vector) which is randomly selected. This is designed to prevent an adversary from determining which parts of the file are the same, and which are different, if you encrypt two files (or two versions of the same file) with the same password. So even if the contents of the file were 100% the same, you would still get a completely different (well, ideally, 50% different) file.


What is the concept of Refund Transactions from the MRL? I am searching for more information on the concept of refund transactions.
I found that the MRL is working on a paper on the topic (source).

Would this be something that will be used in channel applications?
How would this work, would a tx be mined but the output timelocked with our current unlock time and another tx would be create that could back send the output before the unlock time?

It sounds like it could be a equivalent to the simple bitcoins timelock tx component.

This isn't particularly helpful, but it's all I can find.

"Refund Transactions

Informal discussions with a Purdue researcher at the IEEE workshop yielded great new information about refund transactions under active research by one of his students. Refund transactions are a necessary component of certain payment channel applications. A scheme was proposed to us that involves modifying the structure of outputs and ring signatures to allow for a sender to include two outputs: one is valid prior to a specified block height, and the other is valid afterward. We are working with the researchers on the details and security of this scheme, which could have great applications to Monero transactions."

Source: https://www.reddit.com/r/Monero/comments/8fzfzx/april_monthly_report_from_sarang_noether/


Reasons for the way the mask/amount is calculated? I am reading some monero docs and it says that the mask and amount are generated like this;

mask = x + H(K); //where x is the blinding scalar
amount = b + H(H(K)); //where b is the amount
`K` is the per-output Diffie-Hellman derived shared secret defined as `K=Hs(8rA||i)`
`H` is a hash function that produces a scalar

Why is it necessary to hash K twice when calculating the amount?

I'll restate the algebra (if the same key was used each time) so it's a bit clearer:

mask = encrypted mask + key
amount = encrypted amount + key

Therefore key = amount - encrypted amount

This means that if you could guess the amount of the output being sent to someone (perhaps you have knowledge that someone owed someone else exactly 5 XMR), then you could determine the key and then determine the mask. So to protect the mask, a different key is used to encrypt it.


‘xmr-wallet.org’ FRAUD last sunday 11/4/2017 I bought 31 Monero coins and sent them to my wallet created through ‘xmr-wallet.org’ but the money never arrived into my wallet, their support never answers my questions about this and their telephone nr does not exist.

Can anyone help me ? I have the hash of the transaction provided to me by Changelly.

I took a look at the Domain registration WHOIS details for xmr-wallet.org and it doesn't look good, im afraid.

The domain was only registered on 31/10/17 and the DNS servers are hosted in Russia - NS1.FIRSTVDS.RU

Here's the info..

Registrant Contact
Name: Stefan Dorner
Organization:
Mailing Address: Pfarrgasse,, Rattenberg Rattenberg 6240 AT
Phone: +43.5337643152
Ext:
Fax:
Fax Ext:
Email:zewegohe@p33.org

Registrar
WHOIS Server: whois.registrar.eu
URL: http://www.openprovider.com
Registrar: Hosting Concepts B.V. d/b/a Openprovider
IANA ID: 1647
Abuse Contact Email:abuse@registrar.eu
Abuse Contact Phone: +31.4482297

Important Dates
Updated Date: 2017-10-31
Created Date: 2017-10-31
Registry Expiry Date: 2018-10-31

Name Servers
NS1.FIRSTVDS.RU
NS2.FIRSTVDS.RU

I'm guessing Stefan Dorner is a bogus name.

You may want to add this to the issue on Monero reddit https://www.reddit.com/r/Monero/ as well, to see if anyone knows anymore, plus I would contact Monero devs directly - Or hopefully they will check this soon.

Dell


Hardware for Monero mining hash rate of 1 MH/s I checked in crypto compare calculator about hash power required for profitable Monero mining. It showed that 1MH/s is required to earn 0.5174 XMR or $86.18 per day
I checked Monero benchmarks and found the max hash rate offered by AMD THREADRIPPER 3990X is 64000 H/s or 64 KH/s
Is there any hardware capable of providing 1 MH/s for Monero mining?
If I assemble the hardware myself, what specification will give me a 1 MH/s for Monero mining?
Thanks in advance

No, I don't think so. Someone achieved 100kH/s https://xmrig.com/benchmark/4nmg1G and that really is the highest we know so far.


How to get the entire block blob for submission after mining nonce After mining a correct nonce on the block template (received from rpc method "getblocktemplate") you need to submit the block back to the daemon. However, the rpc method "submitblock" appears to require the entire block blob. The template does not contain the entire block, just the parts necessary for mining. And I dont see any way to derive the full block information from the template to create the block blob.

So how do I mine on the template and then submit the full block back to the daemon?

The getbklocktemplate RPC returns a blockhashing_blob and a blocktemplate_blob.

You can either try to find a nonce (4 bytes) by mining using the blockhashing_blob, or you can try to find two nonces (4 bytes in the block header, reserved_size bytes in the extra field of the mining reward transaction) using the blocktemplate_blob and computing the transaction Merkle tree yourself.

When your nonce(s) pass the difficulty test, you put it/them in the blocktemplate_blob at the right offset(s) and you send the updated blocktemplate_blob to the daemon using the submitblock RPC.


After I downloaded this recent 17.2.2 update, should I delete the 17.1.9 I had downloaded a few months ago? I just logged into my Gui and it suggested I sownload the 17.2.2 update. I did, I think I did it right. I don't know. It's syncing right now but it's syncing from the 2155416 and going pretty slow. I was enjoying the syncing within 5 to 15 mins the past couple months after I finally got everything figured out and the blockchain downloaded and yes, it's been nice! Love XMR! Anyway, I just did this new update and I don't know if I did it right. I renamed something, but it still shows something to with the old name folder and when I opened the gui it now started all way back like it did couple months ago when I was having trouble. I guess I'll let it just sync for a day or 2 and hopefully I'll get back where I was. It IS showing my correct funds! while it's syncing, I'm happy about that. The GUI is showing the new name I put on the update as it's "path" but I don't know. I was wondering if I could delete all the stuff from the old 17.1.9 or whatever it was before this new 17.2.2 I just updated to?

After you've updated, there's no need to keep old versions.


What is an integrated address? Some exchanges use integrated addresses, but what are they, and what are they useful for? Should they be used over regular addresses?

Integrated address is just your normal address with some extra data bundled with it (the 64-bit payment ID).

Standard public address is made of:

network byte 18 + public spend key + public view key + checksum

Integrated public address is made of:

network byte 19 + public spend key + public view key + 64-bit payment ID + checksum

While the resulting address looks different, the purpose is not to hide your actual address, but to pack it and the payment ID together to avoid errors and to communicate it easily. Anyone can open it and see the 2 pieces of information (that's exactly what your sender's wallet does when sending to it).

Even if you don't care for paymenet ID, it does have one benefit. If you post different integrated addresses publicly, someone can't just google your standard address and see where you've posted it. One would instead have to decode all suspect integrated addresses and compare the underlying standard address.

The 64-bit payment ID uses the stealth payment ID scheme, and it's use is encouraged over the usual plain-text 256-bit payment ID.
This is because 64-bit PIDs are encrypted on the blockchain, ie they appear to be different for each transaction while only you can see the actual one being used.

Considering the above, it would be better if all exhanges used integrated addresses for receiving user funds.

How it works - detailed

To create a standard public address, the following is performed:

The pair of public keys are prepended with one network byte (the number 18, 0x12, for Monero). It looks like this: (network byte) + (32-byte public spend key) + (32-byte public view key).
These 65 bytes are hashed with Keccak-256.
The first four bytes of the hash from 2. are appended to 1., creating a 69-byte Public Address.
As a last step, this 69-byte string is converted to Base58. However, it's not done all at once like a Bitcoin address, but rather in 8-byte blocks. This gives us eight full-sized blocks and one 5-byte block. Eight bytes converts to 11 or less Base58 characters; if a particular block converts to <11 characters, the conversion pads it with "1"s (1 is 0 in Base58). Likewise, the final 5-byte block can convert to 7 or less Base58 digits; the conversion will ensure the result is 7 digits. Due to the conditional padding, the 69-byte string will always convert to 95 Base58 characters (8 * 11 + 7).
This 95-character result is the (obscenely long) Cryptonote Public Address!

If you're creating an integrated address, simply append the 64-bit payment ID to step 1 and continue; everything else is the same except for the lengths (77 bytes total, 106 Base58 digits) and the prepended byte (19, 0x13).

Source


Subadderess transaction. How to receive? The problem is that i mistakenly used subaddress for mining pool, and they sent transaction(multiple outputs). Balance not showing on my wallet. What i can do with that?

To my knowledge, none of the current pool software supports subaddresses. Your best bet is to reach out to the pool operators and give them your standard address so they can update the pools database.


What is a "[P2P0]WARNING: no two valid MoneroPulse DNS checkpoint records were received" warning? At the end of synchronization I saw this error:

  [P2P0]WARNING: no two valid MoneroPulse DNS checkpoint records were received

I noticed no effect on the functionality of the daemon or the wallet, but am curious about what it means.

This was explained by Fluffypony on Reddit:

It says "warning", so it's not an error, it's just a notice:)
MoneroPulse is informational only, unless you're running an unmanaged node and you've thus set the flag to explicitly follow MoneroPulse checkpoints. Currently there are three things to note with MoneroPulse:

moneropulse.co is having issues, it's in the process of being moved to a different registrar. BUT moneropulse.org, moneropulse.net, and moneropulse.se are all fine and pass DNSSEC validation, so finding 2 working ones is not that hard.

We're having issues with our baked-in root trust anchor for systems that don't have trust anchors. You may have noticed a message on startup complaining about "unsupported algorithm for trust anchor . DNSKEY IN" - we have a new format for the baked-in anchor that should fix this, but it's not part of 0.9 or 0.9.1.

Even if 1 and 2 are perfect and resolved there are some ISPs that run DNS servers that don't acknowledge the +dnssec flag when making requests, so there are some environments where you're never going to get a valid MoneroPulse response. That's why MoneroPulse is just informational only:)


Understanding the `set` command in monero-wallet-cli I just typed set and this is printed:

seed = English
always-confirm-transfers = 0
store-tx-info = 1
default-mixin = 0
auto-refresh = 1
refresh-type = optimize-coinbase
priority = 0

I think I understand most of what these things mean, except for the last three; and also it seems like those parameters could be set to something else. Can someone please help me understand them, and tell me how to change them?

If you type help into monero-wallet-cli it will show you all available options for set with a bit of explanation for each of them and their options. That is:

set                  Available options:

seed language - set wallet seed language;

This is the language of your 25 word mnemonic seed. The default language is English as far as I know and also what most people choose.

always-confirm-transfers <1|0> - whether to confirm unsplit txes;

If this is set to 1 if will ask for confirmation before sending the transaction. If set to 0 it will not.

store-tx-info <1|0> - whether to store outgoing tx info (destination address, payment ID, tx secret key) for future reference;

If this is set to 1 it will store outgoing transaction info. Note that the tx secret key is quite important to save, since it is able to prove that you paid someone in case of a dispute. Bitsquare also requires the secret tx key in case of dispute

default-mixin <n> - set default mixin (default default is 4);

This is fairly straightforward.

auto-refresh <1|0> - whether to automatically sync new blocks from the daemon;

If this is set to one the wallet will refresh automatically when it is connected to your own daemon or a remote daemon. Note that the daemon is monerod. If this is set to 0 you'll have to type refresh once in a while to get new blocks.

refresh-type <full|optimize-coinbase|no-coinbase|default> - set wallet refresh behaviour;

I am not entirely sure about this one, but I think if it is set to no-coinbase it won't scan coinbase transactions for outputs / transactions that belong to your wallet. Conversely, optimize-coinbase will look if the first output of the coinbase transaction belongs to your wallet and if not it will skip it. I'd advise to not change this unless you know what you are doing.

priority [1|2|3] - normal/elevated/priority fee

These are simply multiples of the default fee. That is, priority 1 / normal fee is the default fee, priority 2 / elevated fee is the default fee multiplied by 20, and priority 3 / priority fee is the default fee multiplied by 166. This should be left to normal currently, but might be convenient in times the blocksize is ramping up and blocks can be quite full. Bear in mind that the adaptive blocksize algorithm allows the blocksize to grow, but there could still be a few hours that blocks are somewhat "full".

It's fairly trivial to change them. If you want, for instance, to set confirmation for your transfers you have to type the following command into monero-wallet-cli:

set always-confirm-transfers 1

Similarly, if you want to turn it off:

set always-confirm-transfers 0


Using servers to run nodes and mine I have a few spare servers and I would really like to use them as nodes and mines to help support monero.

Is this a) useful and b) worthwhile?

Best,

H

I think almost any server would be capable of running a node, and this is useful in the sense of expanding the network. As far as mining, it's only worth it if the server's CPU is equipped with AES, if it is, then it's probably "worth it" to mine if your electricity costs are less than $0.15/kWh or so. Of course it's always useful to mine to help decentralize the network too, but if your mining at a loss you might just be better off buying XMR from an exchange.


Where did simpleminer go? With Wolfram Warptangent, where did simpleminer go?  Are there any special compilation flags that need to be set?

simpleminer has been removed.

You can either use the miner in the daemon/wallet or any of the mining programs found on https://monerohash.com/#getting_started


What is the AEON currency? Aeon seems to be related to Monero, and is a cryptonote currency.

What exactly is Aeon?

Quoting smooth, who is a member of the Monero core team and stepped in as Aeon lead developer a while ago:

AEON is certainly targeting running a node on a smartphone, but I don't think it is possible to completely rule out Monero (someday) doing that too.
As answered above by others the idea is to do experimental and perhaps even stupid things. Some of them may be adopted by Monero in time, others may not.
Also, as I said earlier in Monero's history when the clones were first appearing, what makes a coin stronger is defeating clones. (I reject the idea of expecting to stop cloning by trash talking clones or cloning, as Adam for example tries to do.) Every coin so defeated serves as credible evidence that the community, process, and technology of the original is sufficiently fit.
So you can think of AEON as a sparring partner to keep Monero healthy and strong. :)

Source: https://www.reddit.com/r/Monero/comments/3f28bk/whats_the_deal_with_aeon_coin_serious/


Small bug with `sweep_all` I am experimenting with the testnet wallet, so I did a sweep_all to my own address to see how it worked. And so this line came up:

Sweeping 0.000000000000 for a total fee of 0.048000000000.  Is this okay?  (Y/Yes/N/No)

I thought it was strange given that there were unlocked coins in the wallet, but I went on anyway and it did sweep all the unlocked outputs, as expected. So it seems that the only thing is that it is not printing the correct balance in the prompt. Has anyone else had the same experience?

EDIT: It just occurred to me, after seeing the transaction on a block explorer with value 0, that maybe this is due to ringCT not making amounts visible. Still, even if that is the case, the wallet should know the amount.

Total and fee calculation seems to happen here:

// give user total and fee, and prompt to confirm
uint64_t total_fee = 0, total_unmixable = 0;
for (size_t n = 0; n < ptx_vector.size(); ++n)
{
  total_fee += ptx_vector[n].fee;
  for (const auto &vin: ptx_vector[n].tx.vin)
  {
    if (vin.type() == typeid(txin_to_key))
      total_unmixable += boost::get<txin_to_key>(vin).amount;
  }
}

Printing happens a few lines later:

prompt_str = (boost::format(tr("Sweeping %s for a total fee of %s.  Is this okay?  (Y/Yes/N/No)")) %
    print_money(total_unmixable) %
    print_money(total_fee)).str();

Since the correct amount of Monero was actually swept and transacted, the bug is most likely somewhere in the printing, though I'm not seeing anything obvious.

Edit: This is an open issue on github


In Loki, Can you stake more than the requirement in a service node? Do you get rewarded more if you stake more Loki in a service node?

No you cannot stake more than the maximum amount of 20,000 loki currently as of 2019-OCT-24. The staking requirement gets lowered everyday until it reaches 15,000 loki after 1-2 years. You must stake exactly the required amount of 20,000 loki, if you don't have enough you can open up your staking node as a pool and others can contribute to it to claim a % share of your staking rewards.


How can I really run a remote node? Well, first of all, I can't keep monerod running on my VPS through an ssh session. When I close the ssh session it stops running.

Second question is do I need to open the port? Is it TCP or UDP port that needs to open? A quick command?

Seriously, the official guide is way too simple...it just tells to "simply run monerod" then you are running a node.

Thanks

Method 1)  A one-time start of monerod

You can use 'screen' to keep it running when you log out.

Ubuntu: apt-get install screen

CentOS: yum install screen

screen monerod --rpc-bind-ip <your external IP address> --rpc-bind-port 18089 --restricted-rpc --confirm-external-bind

Replace  with the IP address of your VPS.

When monerod is running inside of screen, you can press Control-a-d to detach from the screen session and return to the command line.  You use screen -r to reattach to the session.

Method 2) Keep monerod running perpetually

Create a new blank file called monerod-cron and add the following line.  Be sure to enter the full path to your monerod binary and your external IP address.

0 * * * * <full/path/to/monerod> --detach --rpc-bind-ip <your_ip> --rpc-bind-port 18089 --restricted-rpc --confirm-external-bind

Example:

0 * * * * /usr/local/bin/monerod --detach --rpc-bind-ip 100.22.33.44 --rpc-bind-port 18089 --restricted-rpc --confirm-external-bind

Save the file and load it into your crontab by running crontab monerod-cron.  This will start monerod automatically every hour.  If monerod is already running, it will not start a second copy.

To view the monerod logfile:
tail -f ~/.bitmonero/bitmonero.log

To view the crontab logfile:
tail -f /var/log/cron

Notes

Your firewall will need to accept incoming connections to TCP port 18089.

There's some more info at https://moneroworld.com/#nodes


Generate a wallet file from a spend key in the command line using the CLI wallet in a "non-interactive" way for scripting purpose I have a monero spend key and I want to generate a new wallet file using the CLI, but I want to do it in an non-interactive way so I can use this same command in my scripts. I tried doing:

  monero-wallet-cli --generate-from-spend-key "xxxxxx"

But it hits me with an input for the spend key. How can I pass in the spend key from the command line and also not have a password to the wallet file. Or possibly how do I set the wallet password via the command line if I wanted to.

You should use --generate-from-json for this.
The input fields in the JSON file are:

      version: integer, should be 1
      filename: string, path/filename for the newly created wallet
      scan_from_height: 64 bit unsigned integer, optional
      password: string, optional
      viewkey: string, hex representation
      spendkey: string, hex representation
      seed: string, optional, list of words separated by spaces


Where is the blockchain saved, in windows? I'm kind of mystified. Bitmonerod says it's up to date. I don't see anything in my monero folder that looks like a blockchain. I also searched, using the windows file explorer, for all files bigger than 128MB and didn't find anything. I'm running Windows 10.

On Windows the blockchain is stored in C:\ProgramData\bitmonero\lmdb. It's a hidden folder, but if you simply copy paste aforementioned path into your Windows explorer it will go to it. The folder contains your blockchain (data.mdb).


Multiple different wallets connected to same monero node I'm trying to connect multiple wallet-RPC to the same monero node. I have started two separated terminals in order to test the setup and started it with the following command:

./monero-wallet-rpc --rpc-bind-port 18082 --wallet-file /path/to/my/wallet/wallet-viewonly --password "" --disable-rpc-login --daemon-host node.moneroworld.com:18089

Then on two web pages, I'm showing the addresses to see that they are connected to RPC. What is happening is that no matter which wallet-rpc first got connected this address is shown on the page.

So, I have two addresses, two pages and two terminals for monero-wallet-rpc. The expected result is when both terminals are connected on both pages to see those addresses. Instead on both pages is shown same address -> the first connected to the node.

Can I run multiple wallet-rpc's and connect them to the node on the same machine? How can be accomplished this?

You can run multiple monero-wallet-rpc processes on the same machine (or different ones), and connect them to a single node (which can be either on the same machine again, or a different one). You don't have to do anything special for this, though it's best if the monero-wallet-rpc processes don't run off the same wallet file, or they'll overwrite each other's wallet cache when they exit, which is usually not what you want.

Now, it's pretty unclear what you mean by "I'm showing the addresses to see that they are connected to RPC. What is happening is that no matter which wallet-rpc first got connected this address is shown on the page.". What are these addresses ? Incoming connection IP addresses ? Wallet addresses ? How are you obtaining those addresses ? You really need to give information if you expect people to tell you what the problem is.


What is fungibility and why does it matter? Fungibility seems to be extremely important in the Monero world.

Why does it matters for Monero and for the future of cryptocurrencies?

Does any other cryptocurrency have that property?

Does fungibility mean that at some point, we will be able to have a physical Monero wallet device, that could just be manually given (or lost :)? That would be so '80s sci-fi and cool :) (and don't underestimate the importance of exchanging physical things for humans :)

Fungibility is the property of a good or a commodity whose individual units are capable of mutual substitution. That is, it is the property of essences or goods which are "capable of being substituted in place of one another."
For example, since one ounce of pure gold is equivalent to any other ounce of pure gold, gold is fungible. Other fungible commodities include sweet crude oil, company shares, bonds, other precious metals and currencies. Fungibility refers only to the equivalence of each unit of a commodity with other units of the same commodity. Fungibility does not relate to the exchange of one commodity for another different commodity.
This from https://en.wikipedia.org/wiki/Fungibility also check this: http://www.investopedia.com/terms/f/fungibility.asp
Now, let's compare Bitcoin to Monero: In this case the transaction history is very important. Bitcoin is not fungible because one can always trace where the coins come from (the public ledger is clear for everyone to see). So let's assume that a Bitcoin was used in a shady transaction (drugs, stolen goods, ...). When that coin lands in your wallet, it would be possible to look into the transaction history of that coin and detect that said shady transaction was carried out, so the Bitcoin that landed in your wallet is not equal anymore to a 'fresh' Bitcoin without transaction history. So that Bitcoin is now tainted... Now that Bitcoin/address could be blacklisted so it can't be used anymore.
Monero on the other hand has an opaque blockchain, aka the coins' transaction history can't be looked up, so one XMR will always be one XMR, no matter in which transactions it would have been used before. In a way one could compare it to cash vs digital money. Monero would be cash (untraceable) and Bitcoin would be digital money (traceable), though there are still subtle differences.

No other cryptocurrency that I know of has this property worked out as well as Monero, because Monero is private on the protocol level with the option to be transparent, the other coins are public by default, with the option to be private (Dash, Zcash, ...). In the latter case it means that coins must 'leave' the public blockchain to make them private (via mixing service or other mechanism), this already means that those coins are 'different' (aka not fungible) from the ones that are always on the public blockchain. And those services still don't offer the same level of anonymity that Monero does...

For your last question, could you expand a bit more? I don't quite get the link between physically giving some 'thing' and fungibility.


Is the connection over Tor between client and remote node safe? I'm using torsocks to connect my CLI wallet to a remote node (geo.node.moneroworld.com:18089). I don't need a high level of anonymity, but I would like to understand what information is at risk. For example, can a malicious hacker sniff my wallet password?

Your wallet password is local to the wallet. It's not sent to the daemon, which never gets hold of that, nor the wallet keys. Using Tor, information is encrypted between your own tor daemon (though if you're going to use a third party Monero daemon, you might be using a third party Tor daemon, which is even worse) and the destination hidden service, so any snooper in the middle is not going to see anything unencrypted.


Building a service to hold Monero private keys. I need to update user's balance every 1-3 hours I trying to build out a service that holds user's monero private keys. But the issue I'm having is how does one update their balance of these private keys? And no I cannot use subaddresses for my use case as each user has their own unique private key. The solution I came up with was scanning each monero private spend key manually one at a time and updating the balance like that. But that's not going to really scale that well if I had 100k private keys to scan.

What can I do to solve updating monero balances of 100 user's private keys?

The only way I can see to speed this up is to write some code that does parallel crypto ops at a lowish level, roughly where the calls to is_out_to_acc_precomp are made. You can then save all the tx processing, and you then compute the crypto part for N keys rather than one. You can also early out when one key finds a match, since other keys won't find a match for the same output. Doing it this way allows you to have a very parallel run of many times the same small amount of crypto code, which you can offload to a GPU, as those are pretty good at that type of workload.


Question on understanding monerod command Flush_txpool and the bug that resulted Now that I've been running a node consistently now, I've been trying to understand the commands given listed in 'help'. Recently, I noticed a tx id that has sat in the mempool for over a day.

First, is that a circumstance when flush_txpool [tx id] should be used? Otherwise, what is its purpose?

Next, in attempting to paste the tx id into the command, it instead started entering commands like '260302.305830' or something similar to peer data. This was not even on my computer's clipboard.

What would cause this?

It should be noted that I was not able to repeat the issue.

The flush_txpool command can be used to flush an individual transaction, list of transactions (by RPC command) or the entire transaction pool.

A use-case like you describe (flushing a transaction that has been sitting for a long time without confirmation) would be a normal use for the tool. Another purpose could involve network load or dynamic block-size testing, where excess transactions are flushed at the end of the test.

  Next, in attempting to paste the tx id into the command, it instead started entering commands like '260302.305830' or something similar to peer data. This was not even on my computer's clipboard.

What operating system were you using and exactly how were you attempting to paste the tx id into monerod?

  It should be noted that I was not able to repeat the issue.

This probably is because what you described was a copy/paste error.


Why wallet download page is unecrypted? Why is monero website using https but when you click to download the command line wallet you get a warning from the browser that the site is not safe?  You end up having to click through warnings to get to the downloads?
Also, how do I verify that my download is the correct one and hasn't been messed with?
Thanks,
Glenn

https://www.getmonero.org/downloads/ uses HTTPS. The links on that page going to the actual downloads appear to be HTTPS as well. If there is one or several which is/are not, post the actual links as well as where they appear.
The site uses HSTS:

Strict-Transport-Security: max-age=15552000; includeSubDomains; preload

So your browser should not access it via HTTP if it's already accessed it and spotted the HSTS header.
You might be using the wrong website, such as monero.org, a well known squatter.


Priority among transactions with same fees If there are too many transactions in the mempool to be included in a single block, and assuming they all have the same transaction fee per kB, will the older transactions be mined first?

It's up to the miner which transactions will be chosen to be included in a block, so a miner might optimise his selection to fill as much as possible of the available block size limit.


At what dates did the Monero blockchain version update? I want to download the v1 and v2 versions of the Monero blockchain for experimental purposes, but since I don't know when the blockchain upgraded from v1 -> v2 and v2 -> v3, I don't know which node version to run.

Also if you know the blockheight, that would be beneficial as well!

You can find the fork heights and approximate dates in blockchain.cpp:

mainnet_hard_forks[] = {
  // version 1 from the start of the blockchain
  { 1, 1, 0, 1341378000 },

  // version 2 starts from block 1009827, which is on or around the 20th of March, 2016. Fork time finalised on 2015-09-20. No fork voting occurs for the v2 fork.
  { 2, 1009827, 0, 1442763710 },

  // version 3 starts from block 1141317, which is on or around the 24th of September, 2016. Fork time finalised on 2016-03-21.
  { 3, 1141317, 0, 1458558528 },

  // version 4 starts from block 1220516, which is on or around the 5th of January, 2017. Fork time finalised on 2016-09-18.
  { 4, 1220516, 0, 1483574400 },

  // version 5 starts from block 1288616, which is on or around the 15th of April, 2017. Fork time finalised on 2017-03-14.
  { 5, 1288616, 0, 1489520158 },

  // version 6 starts from block 1400000, which is on or around the 16th of September, 2017. Fork time finalised on 2017-08-18.
  { 6, 1400000, 0, 1503046577 },

  // version 7 starts from block 1546000, which is on or around the 6th of April, 2018. Fork time finalised on 2018-03-17.
  { 7, 1546000, 0, 1521303150 },

  // version 8 starts from block 1685555, which is on or around the 18th of October, 2018. Fork time finalised on 2018-09-02.
  { 8, 1685555, 0, 1535889547 },

  // version 9 starts from block 1686275, which is on or around the 19th of October, 2018. Fork time finalised on 2018-09-02.
  { 9, 1686275, 0, 1535889548 },
};


Why isn't safe sync mode enabled by default? Currently, people need to manually type "save" in the daemon when they want to save the blockchain. Why doesn't the daemon have the option --db-sync-mode safe enabled by default? This way new users are less likely to abandon Monero out of frustration if their computer restarts unexpectedly.

Mostly because it's a lot slower, which could cause users to abandon Monero out of frustration if they can't sync in a few days.

There are recent improvements to a "sweet spot", however. See https://github.com/monero-project/monero/commit/65e33b1bc51d6540f23c8de0dbf4826a56549373


How does the seed offset passphrase affect entropy? I figure that a portion of the random space has to be sacrificed for including an additional passphrase chosen by the user.

How much lower is the random space and does the length of the passphrase affect how much randomness is lost?

All the "seed offset password" does is modify the existing key before getting the seed words. It works as follows:

seed_words = get_words(sc_add(key, cn_slow_hash(password)))

Where sc_add is scalar addition modulo the curve order.

Therefore:

  I figure that a portion of the random space has to be sacrificed for including an additional passphrase chosen by the user.

Is incorrect. Nothing is "sacrificed". The seed password does not affect the randomness of the key generation, it only modifies the key when used to get the seed words.

In effect, what this means is, you need both the password and the seed words (as obtained above), to get the actual key.

For example:

key = sc_sub(get_key(seed_words), cn_slow_hash(password))

Where sc_sub is scalar subtraction modulo the curve order.


Why was 0MQ selected to replace the current RPC system? What are the benefits particularly?

I've heard it's more efficient, is that in terms of bandwidth? I've also heard it will allow for block and I believe transaction notification, which currently must be done by polling.

Are these the only two benefits?

Are there any security implications with replacing the json-rpc system with 0mq?

Is the current RPC system going to be left in place to support backwards compatibility and legacy systems?

I cannot speak to all of the pros/cons of using zmq, as it was decided upon before I started work on it.

So far, I'd say that if you use it well it gets out of your way, but does all the networking things that are simply tedious and error-prone.  I'm sure there are other solutions that are adequate for this, but zmq seems to be pretty good and is available on a lot of platforms/languages.

I don't know that it will be more efficient for bandwidth, that's difficult to say.  I think long-term it will be far more efficient for developer time when someone comes along and wants to write a service that uses the RPC, and to me that's very important to get right.

Backwards compatibility will be around for a while, of course.  I'm debating whether that should be "simply keep the old RPC around for now" or "write a translation layer that translates the old calls to the new for less error-prone maintenance until the old is deprecated completely".  Regardless of what it looks like internally, the old RPC should stick around for a while (and appear unchanged from the outside).


Is mixin still needed with RingCT? If RingCT hides amounts (so dust would no longer be a problem, as I've heard) and addresses, is there any downside to using a mixin of 0?

Edit: I am aware that RingCT won't be available for the public network until the next hard fork in January. I was just playing around with Testnet and was wondering for the future.

Yes.

The intent of mixin is to make it ambiguous which output in a ring is being spent. This still applies, whether the amount of the output is visible or not.

As an example of a case where this matters:

Alice sends Bob output P in a transaction. Alice knows the size of that output (she created it). Alice can then track on the blockchain to see when that output gets included in a transaction. With mixin 0, Alice knows Bob respent that output (though does not know where to). With mixin > 0, Alice does not know, since it could be either Bob, or someone else using that output as a fake out for their own ring signature.


Does the ARM v6 have enough power to be a Monero node? I have compiled Helium Hydra, Point Release 1 on a Raspberry Pi first model powered by ARM v6. It took about 10 hours to compile all, but now it's fully working and I'm able to use it like a Monero node for my LAN.

The problem is that Monero daemon isn't able to stay in sync, every time it remains behind the blockchain for nearly 500 blocks. Internet connection is fine, the Pi is connected by Ethernet and the daemon on another PC works fine and fast.

With 'top', I can see that CPU usage is fixed over 92%, so it's possible that the Raspberry Pi hasn't enough power to handle a Monero node. Should I consider to switch to something more powerful, like a Raspberry Pi Model 3?

Thanks in advance for answers.

Thanks to Monero Reddit people, I solved the issue. This is the link to the discussion.

The issue was related to timezones because the timezone of the system was set on wrong timezone, one hour behind the correct one. So, I changed timezone with:

sudo dpkg-reconfigure tzdata

and restarted the Pi.

After a long time, the node completed the blockchain synchronization and now it's fully functional. I can access it from all the devices on the LAN, but all the operation are really slow.

So, to answer the question of the title, the Raspberry Pi Model 1 has enough power to run Monero daemon software, but not enough to be a Monero node in a real world because any operation takes too much time to be completed.


How will payment metadata be incorporated into the range proof? According to this comment, which reads:

  @kenshi84 I now agree with JollyMort's idea that we should not allow integrated subaddresses and should not allow multiple integrated addresses in a multiple destination payout, because we're likely to choose to deprecate txextra payment IDs altogether, in favor of placing payment ids and other payment metadata into the range proof using monero: URIs.

payment ID information would ideally be included in the range proof instead.

Can someone please explain the technical method by which this can be completed successfully? What are the advantages of using this method over the current txextra method? Are there any disadvantages?

Can someone please explain the technical method by which this can be completed successfully?

The range proof requires generating a lot of random values in the process. Nothing would change security-wise if that data was not entirely random and carried some encrypted payload instead.

  What are the advantages of using this method over the current txextra method?

The main one is that you wouldn't be able to tell whether a given TX contains a message nor what its length is. It's like steganography. With the payment ID, it's simple to tell whether or not there's a message. If we wanted to allow arbitrary length of payment ID, you could also tell the length unless we force some padding to nearest 256 bits or whatever.

Another advantage is that we use the bandwidth which has to be used anyway so that message is not inflating TX size. Few kB of covert data could have many useful applications we haven't even thought of yet.

For example, you could make a shop where the act of payment is also an order. You embed your return (monero) address, shipping address, item no., qty, size, color etc... all in the TX. Only the recipient can see this, and send the order. For anyone looking, it's just another TX on the blockchain.

  Are there any disadvantages?

Maybe some, but not really significant, IMO. Sometimes you want the possibility to leave a message on the blochchain out in the open, to be easily read. Maybe it could be achieved with range proofs as well, but then you'd have to reveal some secret info by other means in order for anyone to be able to decrypt the message.

Another disadvantage is that range proofs could be pruned eventually so those messages may not be readily available permanently.

Also, the amount of data you can store is limited, but then again you could chain multiple TX-es. It's not like we're seeing TX-es with 10s of kB in TX-extra, anyway.

In conclusion, with sub-addresses alone, most common payment-ID use-case (telling incoming TX-es apart) could be entirely replaced by sub-addresses with another advantage of support for sending to multiple sub-addresses in the same TX.

Public messaging would remain as an use-case of "legacy" 256-bit payment ID, while stealth payment ID could be replaced by range proof messaging unless you want the message to be kept in the blockcain forever for which you could still use the TX-extra.


Estimated R9 290 h/s? I'm looking to build a dedicated mining rig and found a cheap r9 290, but when I checked this website http://monerobechmarks.byethost5.com/index.php?i=1 that shows mining benchmarks, the ones for the 290 were all over the place. It ranged from 789h/s to 250 h/s. Any idea what I would actually be getting if mining with a r9 290?

Thanks!

I have two R9 290's online mining. I have an AMD Sapphire running approximately 723h/s sure I can do it a little better. Also have a PowerColor running but its only at 636h/s hopefully that will give you a little idea. A lot depends on the model.


Simplewallet shows zero balance after recovering XMR paper wallet (using Mac) I have made two paper wallets and can recover neither.

I use the Monero Test app to check balance once I have sent the Monero to the paper wallet (made with offline generator).

Then I launch simplewallet and use:

--restore-deterministic-wallet

When it asks, I put in the paper wallet seed, and recovery seemingly works OK, the address and view key etc match.

But when I type 'balance' it comes up zero...

I have no idea what I am doing wrong, or if I am somehow wiping the wallet balance during recovery (I have tried multiple times).  I sent small balances over - three XMR the first time, then 1.00 XMR the second time and cannot recover them. Both wallets I created and named Wallet 1, Wallet 2 in Simplewallet respectively, show up with balance 0.

I did refresh the entire blockchain too with the bitmonerod daemon open in another window and synched up.

Any thoughts on where the XMR are? I am totally loathe to do any larger transfers for obvious reasons.

I am losing sleep over having a lot of XMR on MyMonero - so was just testing this method of safe storage

EDIT - got some help from members of BTCT forum in Monero thread and it was due to the folders I had things in - the terminal and daemon are better in one folder with key files etc.  Then only open using command line direction to that folder.

Wait until bitmonerod is totally synchronised and then try refresh command.   All good now (and all XMR in safe offline created paper wallets) Cheers!

After you use --restore-deterministic-wallet and the address loads correctly, type "refresh".


Do multisig addresses share the same space as regular addresses and produce the same types of keys? Let me word it another way. Can a normal Monero seed produce the same address as a multisig wallet?  And, if so, would that mean that the private spend key generated by that wallet would be able to spend the outputs of what would otherwise be a wallet requiring >1 signature?

To take it a step further (or possibly restate the same question in a different way), can a multisig wallet produce a single seed that allows the wallet to be created, along with master private keys for that address?  Hopefully the way a multisig wallet is constructed, it would preclude the "reverse engineering" of a seed.

Multisig addresses are like any other address generated from independent spendkey and viewkey. In fact, there exists some spendkey which lets you spend from it alone, but nobody knows which one of all the possibilites it is. Same like nobody can tell a spendkey of a regular wallet.

  Can a normal Monero seed produce the same address as a multisig wallet?

Probably no. That's because the view key is not derived from the spend key.

For the second part of your question, it's possible to create such a wallet. Not by using the seed, but by using the keys.

For N/N, it's as simple as taking the same viewkey, and adding the individual spendkeys together and using the result as the spendkey of this "master" wallet. Of course, you need all the spend keys for N/N.

The "master" wallet will be no different than any other wallet created by using --generate-from-keys option. All you need to do is compute the EC sum of individual keys and use the result for the spendkey.

In fact, PR-2218 makes a command-line option to do the above.