How can online store embed some context or product-id in a Monero payment? I am writing an online store able to accept XMR payments. I know there are some existing solutions to do so, but this project is self-educational rather than commercial.
Serverside, I run a monerod full node and a monero-wallet-rpc on top of it, to which store's json-rpc client is able to communicate. So far I learned how to manage accounts, wallets and addresses and how to see incoming payments using "incoming_transfers" rpc call. Had to say that the official wallet rpc documentation on getmonero.org is extremely confusing. For instance, a lot of methods require payment ID value as input but none mention where to get it, or rather which of the numerous transfers/payments/whatever hashes/keys/whatevers is ought to be used for it.
Anyway, I can see the incoming transfers but I can not see a way to specify which shop item each transfer was made for.
I assume the workflow of an online store include the client reviewing the catalog of items, picking some, clicking checkout and be presented with QR code or "monero:" payment URI to make actual payment. But how would store's backend know what item the client had picked to deliver it? There must be a way to embed an arbitrary item ID into the QR or URI so it is then seen in the incoming transactions.
Any clues?

There are several different ways to accomplish merchant needs, which one use is up to you.
Payment ID's are just any 8 bytes. You can assign whatever 8 bytes you wish to each product/shop/user then generate an integrated address and resulting QR code for each. Then use get_payments/get_bulk_payments to filter/track.
You could even get smarter and automatically generating payment IDs (and QR codes) based on a combination of customer ID and product ID (i.e. 4 bytes for a customer ID and 4 bytes for product ID), thats two 4 byte integers. Use make_integrated_address to create them in advance or on the fly with random 8 bytes and pair those to an order table row in your orders database.
Then of course there are subaddresses (thus making use of incoming_transfers to track), you could create/assign those by customer/shop/product. These can also be created in advance or on the fly (using create_address).
All the tools are there, just there's no single right or wrong way to organize things, that part is up to you. Research the different approaches and pick one that works best for you.


Is there a formal plan in place for the transition to Quantum Computing? If so, what is it? Here is a list of the most relevant facts and assumptions regarding my concern:

Monero is a POW (proof-of-work) cryptocurrency.
A risk of POW cryptos is the 51% attack, which is possible when a bad actor possesses the majority of the network's hashing power.
Quantum computers will likely be many orders of magnitude faster than silicon-based (which I'll call "legacy") computers.
A bad actor with a quantum computer would potentially pose a threat to a POW network otherwise solely maintained by legacy computers.
The advent of the quantum computing era will contain a small timeframe - right at its inception - where very, very few people will have access to a quantum computer.
One or more of those very, very early possessors of a quantum computer could be bad actors.

Based on the above facts and circumstances, I believe there to be a risk related to the transition from legacy to quantum computing that will eventually need to be addressed, if it hasn't been already.  Does the monero community have a formal plan for blockchain integrity and wallet safety related to this risk?  If so, what is it?

FYI, there is another SE question re: quantum computing here.

The obvious answer: when we have proof that "QC-resistant" algorithms are actually resistant, we can adopt a new algorithm and roll it out in the next scheduled hard fork. At present, everything written about quantum computing and weaknesses of current cryptographic algorithms is purely speculative. The world's most powerful quantum computer hasn't actually proven to be usable for cracking any crypto algorithms yet. http://www.wired.com/2015/09/googles-quantum-computer-just-got-a-big-upgrade-1000-qubits/


Can auditor restore transaction dates/times/amounts? Can date/time/amount/addresses be restored with private view key? Or is just total current balance known.

What about with also having private spend key?

It would be unfortunate to be in a duress situation, and all other addresses become known.

Viewkey only shows in which TX you received something so time, date and the amount you received. It can't possibly reveal source address because it's never actually written inside the TX.

Spendkey additionally reveals whether what you received above has been spent or not and in which TX it was spent and how much. It will tell you the destination one-time key but these can't be tied to addresses. Spendkey can also be used for this in a cold setup or to export the data to auditor without actually revealing the spendkey.

None will reveal destination addresses of your funds because it's never written in a TX. Think of addresses more like instruction to sender, and not as something which itself holds the funds. Funds are always sent to brant-new one-time keys rolled at random for each TX you or someone makes.

The only way to know the destination address is to record it locally when you send and your wallet does that. If you delete the wallet file or lose the password, the information is lost forever.


multiple watch-only wallet management: suggestions?  I have a bunch of wallets for which I expect to cold-sign transactions when required. I have set these up as watch-only hot wallets using monero-wallet-cli --generate-from-view-key, but would prefer not to have multiple wallet daemons running at the same time: after all, my node daemon (monerod and its data.mdb) is the real aggregator and data store!
 Any suggestions on how I can manage multiple wallets(hot or cold) please? How are businesses / DNMs currently managing these(multiple wallets per customer) ?

One daemon instance is enough. It can service multiple wallets simultaneously. The data stored by the daemon in the .mdb is all public knowledge (the blockchain), anyway.

Wallet-specific data is stored in the cache file. See here for more details. So really, you can keep the daemon running and have few instances of the wallet running and talking to the same daemon. Each wallet stores only some data relevant to it, while the daemon stores the entire public ledger (blockchain).


Is there a way to compile an AMD based miner for use on a mac? I have an iMac with a R9 M395 2048 MB for its GPU. I know mac normally has nvidia GPUs nowadays but somehow this one had a mac AMD gpu.

Is there someway I can compile a linux or windows based AMD GPU miner to run on my mac?

Try the following:

brew install openssl libmicrohttpd
git clone -b dev https://github.com/fireice-uk/xmr-stak-amd
cd xmr-stak-amd
mkdir build && cd build
cmake -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_INCLUDE_DIR=/usr/local/opt/openssl/include/ ..
make

It may be necessary to insert the following line in CMakeLists.txt:

include_directories(/usr/local/include)

To run the executable:

cp bin/xmr-stak-amd ..
cd ..
./xmr-stak-amd config.txt

Note that the config.txt file and the opencl folder should be on the same location as the executable xmr-stak-amd.

You'd need to tweak the config.txt file to figure out the best setting for your GPU. To get you started, I've posted below the worst performing setting that should work on any GPU:

https://gist.github.com/stoffu/fa9a35928e0f6325f9d379c2d902d7cc

Relevant post on Reddit:

https://www.reddit.com/r/Monero/comments/6cla1s/can_someone_please_help_me_to_compile_xmrstakcpu/dkubnr4/


How does a third-party verify that I have the XMR to make a payment? Say I have 10 XMR but I want to pay out 11 XMR. How do nodes tell that I don't have enough XMR? Do I have to share my viewkey with them?

According to Section 4.3 of the CryptoNote white paper, transactions aren't directly signed by the sender's spending key. Instead, they are signed by the private key goes with the one-time public key.

For example, suppose Alice sends Bob 5 XMR via pub, a generated transaction public key. Bob can see that pub is for him using his private keys. Whenever Bob wants to use this XMR, he generates the private key, priv, using his keys and the transaction's random data. He signs future spending of this money with priv.

I think Alice can see that priv was used. However, she cannot uncover priv. Also, she cannot see the recipient of the transaction because it is sent to a new generated public key.

Moreover, assuming no other income, Bob cannot send 6 XMR to Carol. Nodes assert this by checking where a transaction's XMR come from via pub. That is, a node would see that pub is only for a transaction that moved 5 XMR and thus cannot sign a transaction for 6 XMR.


Which is more profitable if I have big hashrate? Which is more profitable if I have big hashrate - solo or pool?

My hashrate is around 39 kH/s in total from all the devices.

And I'm able to run a full node 24/7

Thanks in advance

You'll get a little more with solo mining as you won't have to pay the pool fee, but your income will be much less regular because of the higher variance.


What is the bare minimum to mine? What are pools used for and what Linux x86 program could I use to mine Monero?

What is the bare minimum to mine?

Pretty much any computing device can mine.

What are pools used for

To pool the resources of multiple miners to increase the chance of finding blocks.

and what Linux x86 program could I use to mine Monero?

XMRig for pool or solo mining, the official wallet/daemon for solo.


What stops testnet & stagenet coins from acquiring monetary value? There's a splendidly succinct explanation on many faucet websites of why testnet & stagenet coins shouldn't acquire value, but I'm asking how.

My first guess is that Monero's twice-yearly scheduled protocol upgrades (“hard forks”) somehow ‘reset’ things, but that just raises awkward questions about how mainnet doesn't get ‘reset’.  Obviously I must be wrong, because if there were a ‘reset’ mechanism, the market would be crazy to bestow a $843 334 892 marketcap upon mainnet. Is it something to do with the hard-coded seed-node list (which afficionados of certain other crypto-assets like to think of as Proof-of-Work's dirty secret Unique Node List)?

I'd say they do have some value. For example, it's useful to be able to get hold of some stagenet coins in order to do some testing. Ultimately, someone had to mine some blocks to generate those coins, so I'd be willing to pay a tiny amount to acquire some stagenet coins, in order to save me the time and trouble of mining them myself. Luckily, it's so cheap to mine the coins that people give them away for free out of kindness.

The warnings on the first link in your post are mostly to prevent people from being conned into buying stagenet coins for the same price as mainnet coins. They're obviously not the same thing and don't have the same value.

It's possible that people could collectively decide to "reset" the testnets and stagenets that are available by wiping the blockchain clean and starting with a new genesis block. But that's not the main reason that stagenet/testnet coins do not have significant value.


Use official binaries or compile master myself? Is the master branch on https://github.com/monero-project/bitmonero considered to be stable enough at all times to use it for nontrivial amounts of Monero, or would you rather recommend to stick with the official binaries from https://getmonero.org for that, and use the master branch only for smaller amounts?

Is there a compelling reason to switch from the 0.9.4 binaries to the current master?

To answer part of your question, the Monero devs recommend that you stick to tagged releases. So compiling from the head master branch is never recommended unless you are testing or really know what you are doing.

However, you've missed a third option that really is the best of both worlds when it comes to being both paranoid and wanting stability. Namely: compile from source from the latest tagged release.

Doing so is as simple as compiling from the head master, with one extra step. After you get the source and change to that directory

$ git clone https://github.com/monero-project/bitmonero

$ cd bitmonero

you can choose to switch to a tagged release

$ git checkout tags/<tag_name>

For example, if you wanted to switch to v0.9.4, you would do

$ git checkout tags/v0.9.4

If you aren't sure the latest tagged release, you can view all releases with

$ git tag -l

For more information about checking out tagged releases, check here: https://stackoverflow.com/questions/791959/download-a-specific-tag-with-git


data stored in the wallet cache According to the Wolfram Warptangent, Point Release 1 notes, there is now an expansion of the data stored in the wallet cache, including the GUI address book

Is the new data being stored there secured the same way as wallet cache data was stored before? Besides the GUI address book example, what additional data will now be stored in the wallet cache?

Is the new data being stored there secured the same way as wallet
  cache data was stored before?

Yes, all the stored data is encrypted using the wallet password. For details on the encryption scheme, see here.

  Besides the GUI address book example, what additional data will now be
  stored in the wallet cache?

Anything you can think of that needs secure & private persistent storage on the user end. For example (not necessarily newly added): record of outputs belonging to the wallet, record of signed key images for each output and their spent status, custom transaction notes, transaction keys, address book records, etc.

See also: What data do the wallet files contain?


CryptoNight-Lite PoW modifications in Aeon What PoW modifications are contained in CryptoNight-Lite as implemented by Aeon? How much faster is blockchain synchronization because of these modifications compared to standard CryptoNight?

What security concerns if any do these modifications raise?

There are two modifications: the scratchpad is only half the size of regular Cryptonight (1 MB rather than 2 MB) and the number of AES iterations is halved (half a million rather than a million). This makes a light hash about 4 times as fast as a regular one.

It's a bit hard to tell how this change influences blockchain sync since different machines will have different performance behavior and bottlenecks, but for a CPU bound sync, a 4x improvement is a good first approximation.


How do I use my MyMonero wallet via the Monero Core GUI? I have been using a MyMonero wallet for quite a while. Can I start using that wallet from within the Monero Core GUI? How do I do that?

The MyMonero wallets use a different type of mnemonic: 13 words instead of 25 words. The Monero Core GUI (or the CLI) doesn't support restoring a wallet from a 13 word mnemonic seed. Therefore, you'll need to go via the keys.

In MyMonero, once logged in, click on the Accounts drop-down menu, and choose Account Details:

Next, the "Review Account Details" page will be shown, containing the following 3 items (copy the text values from your browser):

Once you have the above information, you can move on and import them into a new wallet using the CLI utility monero-wallet-cli, which is shipped as part of the Monero Core GUI software. Locate the CLI utility on your system. Depending on your platform, it will be in a different location. For example, on macOS, assuming you've installed the software in the Applications folder, the CLI utility will be at /Applications/monero-wallet-gui.app/Contents/MacOS/monero-wallet-cli.
Once you know where the CLI utility resides, open a Terminal (macOS) or Command Prompt (Windows). Create a suitable directory for the wallet, and start the import process with /Applications/monero-wallet-gui.app/Contents/MacOS/monero-wallet-cli --generate-from-keys mymonero.wallet:

If you don't have a daemon active yet, ignore those errors for now. Start up the Monero Core GUI, and choose the option "Open a wallet from file". Navigate to the directory (e.g. mymonero) where you performed the above step. Select the file monero.wallet.keys and click Open. After you've entered the password and clicked on OK, your MyMonero wallet will now start synchronizing against the daemon (assuming it is running, or if you pointed to an external node at the Welcome screen). Once completed, check your address on the Receive page:

Note that on the Settings page of the GUI, clicking on the Show seed button won't do anything, because the format of your wallet's seed is imcompatible with the 25-word style mmemonic used in the official CLI and GUI.


My hash rate is low and volatile and my wattage is high? I have 3 Vegas (1 Vega 56 flashed, 1 Vega 56 not flashed, 1 Vega 64) My 64 can run at 2035 h/s but requires +50 max power and thus takes around 300 watt but is stable. My other two cards are completely wild. They both have power play tables on them yet they are more volatile than anything. I will start the night with 5600 h/s at 850 watt and end with 5150 h/s at 740 watt. I have tried doing power play on my Vega 64 yet every time I do it turns the GPU off after restart. This whole system is fucked up and I have no idea what the hell to do. I already have OverdriveNTool to try to stabilize but to no avail. My other Vega 56 if you were wondering is a msi air boost and there is no way to flash it so that's why it isn't flashed. How do I fix it one problem at a time?

Take a deep breath.

Use restore points.

Follow the guide provided by CircusDad at vega.miningguides.
You should be able to run your Vegas at much lower than 300W and keep stability.


Running monero service on WIN10 with custom --data-dir After few hours of trying, I'm unable to run:

monerod --start-service --data-dir x:\mydir\monerodir

Prior this, service is installed with monerod --install-service and this part goes fine.

Also, I'm tryed to run monerod with custom config file:

monerod --config-file x:\mydir\bitmonero.conf

and this also does not capture any settings from config file in which is:

data-dir x:\mydir\monerodir

ver is: 'Wolfram Warptangent' (v0.10.3.1-release)

Please for  help about this, and I will appreciate some proved recipe.

You can do this on Windows using NTSF symlinks:

Open an elevated CMD window. Then:

mklink /D "C:\ProgramData\bitmonero" "x:\mydir\monerodir"

Then you don't need to specify any other command line options when starting the monero daemon.


CryptoKingdom currency usage of both CKG and XMR Most games only have one currency. Please help explain the reasons for the usage of two in game currencies.

Is it true that CryptoKingdom supports both CKG (CryptoKingdom Gold) and Moneritos (1/1,000,000 XMR)? What is the stated reason of the games developers to support more than one currency?
Is XMR the only currency that can be used to buy CKG
What is the status of the idea to ask Poloniex to trade CKG?
The the CKG/XMR exchange rate fixed or it it variable? If it is variable is the a long term price tracking the CKG/XMR exchange rate?

1 - CKG should be thought more of an asset/equity than a currency.  The town of CryptoKingdom (the game's governing body) pays dividends in-game to CKG holders based on the finances and holdings of the town.  The original stated purpose of the CKG asset sales was to bootstrap the development funding of the game.  CKG could be thought of a share in the town (game development).

2 - The in-game marketplace operates in Moneritos (0.000001 XMR), but OTC trades can happen between players for any items or assets agreed upon.  XMR is stored in a depository and in-game Moneritos are credited.  Withdrawl of XMR from the game requires destruction of the in-game Moneritos.

3 - There are no current plans to offer CKG vs Poloniex.  That being said, there is nothing stopping anyone from developing an outside tradeable asset representing in-game items equities.

4 - CKG/XMR is market based.  There is an in-game coinshop that makes the market for the 100g Gold bars (offering liquidity to sell and buy).  Buying and selling moves the price of these bars.  The historical price of CKG can be found here -
https://docs.google.com/spreadsheets/d/1tgIzgMza7NQsTpMO9pHke1ZVXYH7l5Sj5bHdZHItivo/edit#gid=1541996690


How does a light wallet function? I do know the core wallet downloads and sync the blockchain to the computer and then easily shows amount of monero one holds in this core wallet. But how can we create a light wallet for mobile and still be able to show updated balance without downloading the blockchain ?

Same like mymonero: How does mymonero web wallet work?

Instead of your wallet getting blockchain data and scanning it yourself, you give the service your viewkey and address and it does the scanning for you.

It has privacy drawbacks. The service can see your incoming transfers and amounts. It can not see the destination. However, it could make good guesses when you send to someone else registered on the same service (because it could cross-reference his list of received with yours). That's why the objective is to have people run their own micro-service which they will be ale to do soon when work on open-source back-end will be finished.

However, I imagine mass surveillance of those services and data analysis would require massive amounts of computing power :)


Proving amount of Monero - Range Proofs As far as i understand Monero currently uses range proofs (Soon to be bulletproofs) to prove that when an amount of Monero is sent that amount is between 0 and some large number. this is to protect against negative amounts being sent

My question is can Monero range proofs or bulletproofs for that matter prove that a public key owns a certain amount of Monero. for example can i create a construction that a third party can verify that i have say between 50 and 100 XMR

As far as my research goes the only way to prove balance in accounts is to provide view keys and a set of signed key images to a third party, is this still the only way to do this?

Looking forward to any input
Thanks

Technically, I think it's possible to use the range proof scheme (whether using Borromean or Bulletproofs) to prove that the amount committed by a given Pedersen Commitment falls within a certain range. A Pedersen Commitment C committing to an amount a using a mask (aka. blinding factor) x is represented as

C = x*G + a*H

where G and H are protocol-defined independent base points. The range proof scheme proves that the committed amount in C falls between 0 and 2^64-1. To prove that the committed amount falls between a specific range, say 50 and 100 XMR, we could define two more commitments

C1 = C - 50*H
C2 = 100*H - C

and generate a new range proof for each of C1 and C2.

This approach could be generalized to involve multiple outputs and prove that the sum of the committed amounts falls within a specified range. For auditing purposes, however, I think it's more useful to prove "I hold at least this amount in my wallet" rather than proving "My holding falls within this range". Such a proof scheme called "reserve proof" is currently being developed (https://github.com/monero-project/monero/pull/3027).

See also: Using Monero as proof of funds


How can I sync my blockchain using only other computers on my LAN? I have two other computers which have synced blockchains on my LAN and would like to update the new blockchain using only data from the other computers on my LAN, so as to avoid extra external bandwidth use. How can I do this?

A workaround would be to copy the blockchain from one computer to the other, but I'd rather update the target blockchain instead of replacing it.

Unplug/disconnect internet, monerod --allow-local-ip --add-exclusive-node XXX.XXX.XXX.XXX

With the exclusive argument you may not even need to uplug or disconnect from the internet.


Should the monero community look to have the dev team working on the project full time? Following the recent (Aug 2016) rise in the market cap,  the community is potentially big enough to have the developers paid (In XMR) to work on building out Monero full time.   Has this been discussed in the IRC chats/ dev meetings?     Is there a rough indication of how many hours a week fluffypony et al spend on the project and what it would cost for the community to sustain a couple of people full time (even if paid via project/goal funding) ?

I'm reminded of this quote.

“It is difficult to get a man to understand something, when his salary depends on his not understanding it.”
--Upton Sinclair

No, money creates a conflict of interest. Bounties that devs can choose to accept, as well as donations is fine, but once they get a salary their loyalty is no longer to the users, it is to the salary. What if there's a critical bug that could threaten the value of XMR? what if the salary he's being paid depends on him putting down his fellow devs to get to the top? What if the other devs get jealous/envious and try to make the paid devs lives difficult?

No, a salary is a horrible idea. They'll no longer be doing it because they enjoy working on an innovative, collaborative, vibrant technology, they'll be doing it because they look forward to the pay checque at the end of the month and they'll get fucking vicious if necessary to protect it.

Bounties, forum funding and donations are good, salaries, bad.


How are transactions validated in monero vs bitcoin? Bitcoin

In bitcoin, the signature is a "normal" one and we check it against the signed tx hash. We then check whether the public key/s which signed it, owns the input/s.

we then check whether the inputs are unspent.

We then check that the inputs - outputs - fees = 0

We then check tx integrity, but this is not important in the comparison.

Monero

With monero I am not certain. Please clarify any mistakes.

We have the signature, which we can validate by making sure one member of the ring has signed the message. In this case, the message will be a hash of tx data; same as bitcoin.

Since the inputs/outputs are hidden, we cannot directly check whether an input has been spent already. We use the Key Image instead for this. If a key image has already been seen then it is rejected.

Not certain part: Addresses in Monero are one-time use. And KeyImages link to addresses which links to inputs. So by checking that the keyimage has not been used before, we can be certain that an input has not been used before using I = xH(P) where P is the one time public key, and p is the secret key generated from the sender.

Although the amounts are hidden, we can still check that:

 hiddenInputAmount - hiddenOutputAmount - NotHiddenFees = 0

Additionally, Monero also uses range proofs to show that the hidden amounts are > 0.

Would having a monero utxo db with the hidden outputs be pointless?

And KeyImages link to addresses which links to inputs

Any particular key image specified in a ring signature in a transaction must correspond to one of the output public keys (sometimes called stealth addresses) referenced in that ring signature, but you can't tell which output. These outputs will be created in transactions where it will again not be clear which outputs were actually spent as part of that transaction.

  where P is the one time public key, and p is the secret key generated from the sender

For clarity, P is created by the sender, but the sender cannot mathematically figure out the corresponding private key p. Only the recipient can mathematically determine that. This prevents the sender from spending the outputs that the sender creates for the recipient.

  Would having a monero utxo db with the hidden outputs be pointless?

Only the person that owns an output can tell if it has been spent. For all other outputs, it is unknowable as to whether they have been spent or not. Therefore you can't create a UTXO database.


Explore Monero Blockchain in Ubuntu Can someone tell me step by step approach to explore Monero Blockchain in Ubuntu? From the beginning. Is there any way explore it with the terminal to see inside each block? Like what is the index of a block, transactions, previous hash, current hash etc.

If you want to do it by yourself and not rely on a block explorer, you should read the Daemon RPC Guide and look specifically at the get_block method.


Problem with GUI update I downloaded the binaries and extracted them. I started the daemon and waited until I was completely synced. Then I opened the wallet and after enetering my password I got the following error message:
Couldn't open wallet: basic_string::_M_replace_aux
What should I do? I'm on windows 64bit

I answered this on Reddit. Basically this error is caused by an incompatible wallet cache, which results in the GUI not being able to open the wallet. Therefore, one has to "trick" the GUI into creating a new, compatible wallet cache. This is done as follows:

Exit the GUI.
Browse to the directory your wallet files are located (Documents\Monero\<wallet-name> on Windows | home/<username>/Monero/<wallet-name> on Linux | Users/<username>/Monero/<wallet-name> Mac OS X).
Rename <wallet-name> (the file without extension, i.e., the wallet cache) to <wallet-name>-old
Restart the GUI. This will trigger a wallet refresh from scratch, which shouldn't take longer than 30 minutes.


How much CPU power to mine 1 coin a day? I have been trying to calculate hashrates but it is a little confusing.

I just want to get a general idea. What CPU / GPU would be required to solo mine 1 coin a day?

This answer will attempt to answer the question at multiple levels, as follows:

Section I explains the basics of how to calculate this yourself.
Section II provides updated calculations based on Section I.
Section III provides an abstracted way to determine this based only on the total network hashrate and the total number of coins in circulation.

Enjoy :)

I. Explaining how to determine this on your own:

Some basics:

Monero has an average block time of 2 minutes, meaning that there are approximately 720 blocks per day.
Your expected reward is proportional to your share of the network hashrate. The current hashrate is ~23.3 MH/s (http://moneroblocks.info/), or 23300000 H/s.
Monero's block reward is decreasing slightly every block. Right now it is a little less than 11 XMR, but I'm going to just use 11.0 in my calculations.
To find out the exact reward at any given time, you could go to a block explorer (http://moneroblocks.info/) and click on the most recent block. It will tell you the reward for that block.
Disclaimer: The reward changes based on how many transactions are included in a block. For instance, block 1124279 was empty and had a reward of 10.826400000000, while block 1124278 had 4 transactions and a higher reward of 11.078600000000. Nonetheless, you can get a rough idea using this method...

Okay, putting it all together, where your share of the hashrate is "n":

daily reward ≈ (720 * Avg Block Reward * n)/(Network Hashrate)

Since the question was for a reward of 1 XMR per day, using the numbers above:

1 XMR ≈ (720 * 11.0 * n)/(23300000)

and solving for n:

n ≈ 23300000 / (720 * 11.0)
n ≈ 2942 H/s

which is pretty close to @villabacho's answer.

  I just want to get a general idea.

Generally speaking, the formula to determine the hashrate needed to mine 1 XMR per day is:

n = (Network Hashrate) / (720 * Avg Block Reward)

  What CPU / GPU would be required to solo mine 1 coin a day?

The most energy efficient GPU that I know of for mining XMR is the GTX 750 Ti, which gets approximately 250 H/s for a little more than $100/GPU. 12 of these GPUs would give you 3000 H/s, or a little more than 1 XMR per day at the current mining and reward levels.

II. 20 June 2017 Update to Section 1:

Hashrate: ~87.4 MH/s
Reward: ~7.22 XMR/block (including fees)

Using our formula n = (Network Hashrate) / (720 * Avg Block Reward):

n = 87400000 / (720 * 7.2)

n = 16812 H/s, or 16.81 kH/s to mine 1 XMR per day.

You would need approximately 67 GTX 750 Ti's at 250 H/s each, OR approximately 28 RX 470's at 600 H/s each, OR approximately 22 RX 480's at 750 H/s each.

III. 20 June 2017 addition abstracting calculation further:

A more general formula can be developed that calculates the Average Block Reward used above from the total coins in circulation.

The base block reward is calculated by

Reward = (M - A) * 2^(-19) * 10^(-12)

where M = 2^64 and A is the current amount of XMR in circulation (in terms of atomic units, where 1 XMR = 10^12 atomic units). We can reduce this for ease of use to be as follows:

Reward = (18446744.073709551616 - a) * 2^(-19)

where a = A * 10^(-12) and represents XMR "coins" in circulation as we traditionally think of them.

From this formula, it should be clear that the base reward for each block is progressively decreasing. However, we can consider it roughly constant in the short term for our purposes here, as over a 720 block period (one day) the reward drops ~0.01 XMR at today's rate. Therefore, we can substitute this Reward value as an approximation of the Avg Block Reward over a relatively short period with an error of much less than 1%. Combining our two formulas:

n = (Network Hashrate) / (720 * Avg Block Reward)

and

Reward = (18446744.073709551616 - Coins in Circulation) * 2^(-19)

and reducing gives

n = (Network Hashrate * 2^19) / (720 * (18446744.073709551616 - Coins in Circulation))

or more simply

n = (728 * Network Hashrate) / (18446744.073709551616 - Coins in Circulation)

According to https://www.monero.how/ at the current block height of 1336863,

The network hashrate is 87.4 MH/s or 87400 kH/s
There are 14658448 total coins in circulation

Substituting these values into our formula

n = (728 * 87400) / (18446744.073709551616 - 14658448) [kH/s]

and noting that n is in kH/s, we would need 16.796 kH/s of hashing power to mine 1 XMR today.

Note: This calculation does not include fees, so you should actually mine slightly more than 1 XMR today with that hashrate. But you will have to pay pool fees, account for variance, etc, so it's a fairly good approximation still.

TL;DR - Use one of these formulas:

n = (Network Hashrate) / (720 * Avg Block Reward)

or

n = (728 * Network Hashrate) / (18446744.073709551616 - Coins in Circulation)


Differences between Monero and CryptoNote? In CryptoNote whitepaper:

  The  upper  bound  for  the  overall  amount  of  CryptoNote  digital  coins  is: MSupply = 2^64 − 1 atomic units.

However, in Monero technical specifications, I see that the max supply is infinite. As far as I understand, there is at least a minor difference between the proposed CryptoNote protocol and the CryptoNote-based Monero project.

Is it the only one? Can I find somewhere information about these differences and hopefully the reasons behind these choices?

The Cryptonote white paper says:

  The upper bound for the overall amount of CryptoNote digital coins is:
  MSupply = 2^64 − 1 atomic units. This is a natural restriction based
  only on implementation limits, not on intuition such as “N coins ought
  to be enough for anybody”.

The actual implementation restriction is that a single output cannot have an amount greater than 2^64 − 1 atomic units (which is 1.84 * 10^31 XMR).

Therefore the restriction they are referring to is about individual outputs and not the total sum of all outputs that can exist on the blockchain.

This is currently an implementation limitation related to Monero's "range proofs" which prove that amounts are not negative by proving they are lower than 2^64. Because Monero units are expressed as positive integers which are subject to modular arithmetic, a very high number can be equivalent to a negative number when added to another Monero amount, which is why this "lower than" check proves the number is not effectively negative.

It's easy for this limit to be increased if necessary in the future (it's extremely unlikely to be necessary).

Note that this answer is specifically related to theoretical limitations. It may be possible that certain Monero wallet implementations also store amounts using a data storage technique that would prevent numbers larger than 2^64 from being stored.


Why did the Monero GUI fail to generate a new wallet with the Ledger? I just tried to create a wallet but in the window, after choosing the location for the wallet file, I get this message:

failed to generate new wallet: Unable to enumerate device 11415:11415: NULL device

The system is Windows 10 64 bit.

Can anyone help?

Thanks.

Edit: Monero Logfile:

2019-07-27 20:06:07.430 20860   ERROR   device.io   src/device/device_io_hid.cpp:82 Unable to enumerate device 11415:11415: NULL device
2019-07-27 20:06:38.169 20860   ERROR   device.io   src/device/device_io_hid.cpp:82 Unable to enumerate device 11415:11415: NULL device
2019-07-27 20:07:12.125 20860   ERROR   device.io   src/device/device_io_hid.cpp:82 Unable to enumerate device 11415:11415: NULL device
2019-07-27 20:08:34.524 20860   ERROR   device.io   src/device/device_io_hid.cpp:82 Unable to enumerate device 11415:11415: NULL device
2019-07-27 20:08:37.113 20860   ERROR   device.io   src/device/device_io_hid.cpp:82 Unable to enumerate device 11415:11415: NULL device
2019-07-27 20:18:05.699 20860   ERROR   frontend    src/wallet/api/wallet.cpp:371   Trying to close non existing wallet  QObject(0x0)
2019-07-27 20:18:05.764 20860   WARN    frontend    src/wallet/api/wallet.cpp:367   External WM_DESTROY received for  TipItem_QMLTYPE_212(0x1934ff20) , parent:  QWindow(0x0) , transient parent:  ApplicationWindow_QMLTYPE_228_QML_284(0x9e22370, name="appWindow")
2019-07-27 20:18:05.774 20860   WARN    frontend    src/wallet/api/wallet.cpp:367   External WM_DESTROY received for  DaemonConsole_QMLTYPE_8(0x1a7fc690) , parent:  QWindow(0x0) , transient parent:  ApplicationWindow_QMLTYPE_228_QML_284(0x9e22370, name="appWindow")

It seems a problem related to Windows USB controller, you can try using the Hardware and Devices troubleshooter to fix the problem. It checks for common issues and makes sure that any new device or hardware attached to your computer was installed correctly.

Also, if you are using your Ledger connected to a USB 3.0 port, you can try to use it in USB 2.0 port, or vice-versa.


Are GPUs more efficient at verifying transactions? GPUs are more efficient than CPUs when it comes to mining.

Are GPUs more efficient at verifying transactions also?

GPUs are pretty good at parallel execution of the same program (or similar programs, if they can be made to be the same program where some threads can "dry run" part of the program). They are much less good at running more complex code which doesn't have that much in parallel.

While mining is about doing the same thing again and again, fast, transaction verification is more complex, and less parallelizable. Besides, the basic operations are fairly diverse. A lot of comparisons.

One notable drawback is the speed hit taken by moving data back and forth between CPU and GPU. GPUs really want the same data to be uploaded once, and worked upon many times. This doesn't really apply to transaction verification, which involves different data.

Howover, some parts of verification could make sense on GPUs, such as range proof verification. For this to be worthwhile, there would have to be several transactions to verify in parallel, or verifying several signatures in parallel. Whether it is a win or not would need trying it, though.


Gui wallet seed imported into mymonero web wallet.Any possible security risks? I have a mymonero web wallet that has some moneros in it
I recently downloaded the new GUI wallet and sent some monero to it from exchanges.
The other day I went to the web wallet but I put in my seed from the GUI by mistake.
Not really knowing what I was doing I imported the GUI wallet into the web wallet.
The GUI wallet still has the same amount that I put in it,but it shows up in the
web wallet when I type that seed into it as well.
When I type the original seed from the original web wallet the proper amount shows up for my first wallet.

How do I delete the web wallet with GUI seed?

Is it necessary?
Does this impose any kind of security risk?

Thanks!!

Not really a security risk unless some powerful criminal organization has specifically targeted you.

You don't need to delete anything. Simply create a new wallet with your GUI and send the balance of the mistaken GUI wallet entered into myMonero, to your new GUI wallet. To make a new wallet just press "cancel" when the GUI asks for wallet password. That way the mistaken wallet's balance will be zero and you simply don't use it anymore. Once you are sure the balance is zero, delete your mnemonic seed so you don't get confused.

Your new GUI wallet will now have the funds you wanted in your GUI and will have no connection to myMonero.


Possible error in book Zero to Monero: Second Edition I am reading the book Zero to Monero: Second Edition from the GetMonero Library.
On the 3rd paragraph of page 15, the book mentions an algorithm for finding points inside the subgroup of order l, given an elliptic curve group of order N.
If I understand correctly, the group is assumed to be cyclic. Since in the last paragraph of page 14, it is assumed that P' is a generator.
Since the group is cyclic, we can identify it with Z/(N) = {0, P', 2P', ..., (N - 1)P'} where P' is a generator. Put h = 2, l = 3, then N = 6 and the subgroup of order l is Z/(l) = {0, 2P', 4P'}.
Next we want to check if 5P' is in Z/(l). Now 2(5P') = 10P' = 4P' != 0 mod 6. So by the algorithm, 5P' is in Z/(l)! But this clearly contradicts Z/(l) = {0, 2P', 4P'}.
Is this an error or am I misunderstand something?
Edit: My initial question is confusing. I modify it to specify P' as a generator to make it easier to distinguish between EC points and scalars.

Is this an error or am I misunderstand something?

No it is not an error, you are misunderstanding.

Since the group is cyclic, we can identify it with... Next we check if 5 is in...

Group elements are EC points, not scalars.

Now 2 · 5 ...

In the book, page 15 bullet 3, hP is a point multiplication, i.e. point P added to itself h times.
UPDATE incorporating your question edits above and comments below
With an initial group of {0, P, 2P, 3P, 4P, 5P} then using point 2P to select a subgroup with order l = 3, we have the subgroup {0, 2P, 4P}.
Now per the book, selecting a random point (5P in this example), we have:
h = N/l = 6/3 = 2
P' = 5P
P = hP' = 2P' = 4P

Again per the book, because P (here P = hP' = 2P' = 4P) is not 0, it is in the subgroup of order l = 3, which we can see is correct, 4P is indeed in the subgroup {0, 2P, 4P}.
I believe your confusion is this:

So by the algorithm, 5P' is in Z/(l)!

This statement is incorrect. Using your notation, the algorithm is actually saying 2(5P') is in Z/(l).


Can someone show an actual example of a Monero transaction that uses two distinct private keys? Could someone show me an actual example of a single transaction formed from two private keys.

Say I have 5 XMR in one private key, and 10 XMR in another, so there are two unique private keys.
How do I sign a transaction for 15 XMR so that it sends all those coins to a new address in one single transaction?

The comments in this thread will perhaps be helpful: https://www.reddit.com/r/Monero/comments/6hjnlh/any_tutorials_on_how_to_sign_a_transaction_with/

I would like to see the actual hashes and code as an example with explanations of what it is.

In Monero, every output has a one-time (unique) public key. No output on the blockchain can be associated with any particular wallet address because these output public keys are not the same as your wallet's public keys.

Outputs can be spent if there is knowledge of the one-time private key that corresponds to the output's one-time public key.

Therefore, a transaction that spends two outputs that were sent to the same wallet address is indistinguishable from a transaction that spends two outputs that were sent to two different wallet addresses, because all that needs to be known are the one-time private keys corresponding to the outputs you want to spend.

The code for scanning for incoming outputs and for constructing a transaction is very long and complicated. The summary is that an output is detected as being yours by calculating P' = Hs(aR)G + B where a is your private view key, B is your public spend key, R is the transaction public key published with each transaction and G is the Elliptic Curve base point. You check P' against each output P on the blockchain and if there is a match, then that output is destined for you. The private key that allows you to spend this output is x = Hs(aR) + b where b is your private spend key.

Once you have the private keys for both of the outputs, you can spend them as usual in a transaction as if both of them were your own outputs. This involves constructing a transaction data structure with its own transaction public key, creating new outputs for the recipient based on the recipient's wallet address, creating a ring signature to obscure the source inputs, using Pedersen commitments to prove no Monero were created or destroyed in the transaction (because the amounts are encrypted and not publicly observable), and creating a range proof that demonstrates that no cheating is going on with the Pedersen commitments.

If you want to learn more, the best place to start is the Cryptonote white paper which will introduce you to how Monero transactions work https://cryptonote.org/whitepaper.pdf and the Monero Research Lab papers which detail how ring signatures and confidential transactions work https://lab.getmonero.org/


Why not, on the next Monero fork upgrade, start fresh with balances intact? Since monero forks every 6 months and no one knows each other's transaction history or balance anyway. Why can't we just start from scratch and with a much smaller blockchain size due to bulletproofs. Why can't we just do a new genesis snapshot?

Technically, you could create a new snapshot that would be smaller than the current chain, but not necessarily by much.  Remember, there are a few very important qualities of a blockchain (and Monero's, in particular) that you would likely not want to overlook when considering a snapshot.

The only outputs you could remove from the chain would be provably spent outputs. There are some pre-RingCT outputs and very, very few post-RingCT that eventually were proven to be spent. The vast majority of outputs are not provably spent (otherwise Monero would be much less appealing as a "privacy coin").
There is proof of work in every block that goes into creating every subsequent block. The proof of work is the only reason we rely on the chain as a source of proof. As a result, only so much data is able to be pruned.  And even though pruning some data is possible, pruning is something that only safely happens once a lot of POW is stacked on top.

Okay, so you can prune some data and have a "new" - yet still pretty big - snapshot.  Then there are the logistics of the snapshot.  If you shouldn't prune recent data, then what should you prune?  How far back do you go?  People might disagree on that. Due to the disagreement, maybe there would be multiple implementations of the snapshot resulting in multiple forks (perhaps at least two forks, the second being the original chain for folks who didn't want to do a snapshot in the first place). It's a gamble that the miners would follow and the community would remain intact.

Changing gears... It has already been mentioned that the ability to prune the existing chain has recently been coded up and is coming soon.  As a rough, easy-to-remember estimate, the blockchain on a full node could be shrunk from 60 GB to 20 GB.  Note that the pruning is implemented in such a way that the pruned data isn't permanently destroyed.  Rather, each node that enables pruning retains 1/8th of prunable data; and with a robust network of full nodes each holding a random 1/8th, the network will collectively retain all data required to reconstruct a full, "original" blockchain.

The pruning method that is coming soon™ already works.  Aside from the fact that it does not prune provably spent outputs, its pro/con ratio arguably outweighs the pro/con ratio of the snapshot method, not only because it's ready (aside from further testing), but also because it is not inherently contentious like a snapshot of the Monero blockchain might be.


What does this p2p info mean from the daemon log? 2016-Jul-30 22:32:06.864931 [P2P0][x.x.x.x:18080 OUT]NOTIFY_NEW_BLOCK (hop 3)
2016-Jul-30 22:32:06.865073 [P2P5][x.x.x.x:18080 OUT]NOTIFY_NEW_BLOCK (hop 4)
2016-Jul-30 22:32:06.865221 [P2P1][x.x.x.x:18080 OUT]NOTIFY_NEW_BLOCK (hop 2)
2016-Jul-30 22:32:06.865326 [P2P2][x.x.x.x:18080 OUT]NOTIFY_NEW_TRANSACTIONS
2016-Jul-30 22:32:06.865449 [P2P2][x.x.x.x:18080 OUT]NOTIFY_NEW_BLOCK (hop 2)
2016-Jul-30 22:32:06.835879 [P2P5][x.x.x.x:18080 OUT]COMMAND_TIMED_SYNC
-field1-------------------| |-f2-| -field3----------|----field4----------

So, field 1 is obvious the date and time (local system time?).

Field 2 (here as f2) - what is this? P2P instance 1? There only ever seems to be 0-9, even when my daemon says I have 40 OUT connections.

Field 3 is the IP and port of the peer, and whether the local node initiated the connection or the peer node.

Field 6 is the command or notification? What does the hop mean? Does hop 0 mean that the local daemon is the first to receive this block notification (with the peer node being the solver of the block), and hop 1 would mean that there is 1 other node between you and the block solver?

And what is command_timed_sync mean?

Not sure random debug log questions are on topic for stack exchange, but...

Field 2 is the thread logging this message.

Hop is the (untrusted) number of peers forwarding the object.

COMMAND_TIMED_SYNC is one of the P2P traffic messages.


Pool of very different PCs I would like to mine XMR on 20 PC's. They are very different in terms of power. I think to use some proxy. Could give me a piece of advice which proxy to use?

Either xmrig-proxy or xmr-node-proxy should suffice.


What is the significance of monero switching the G and H points in a Pedersen commitment? Conventionally G is used to denote the standard Generator.

H is then some point whereby the discrete log is not known with respects to G; H = yG where y is unknown.

A pedersen commitment would normally then be P = aG + bH. Where b is blinder and a is the value you wish to commit to.

In monero, we have P = bG + aH.

How would the mathematics break if I used the first definition? My initial guess is that it would not, unless maybe there are places in the code where this role is switched again.

That leads me onto my next question; Are there places in the code where the role of G and H are switched?

Follow-up to this, page35 on zero to monero: https://www.getmonero.org/library/Zero-to-Monero-1-0-0.pdf

Describes the process of going from the private spend key to public spend key: publicSpend = privateSpend * G is the G used here, different from the G used in the Pedersen commitment?

TBC:

If the numbers were switched, we would also switch the maths to match it, for example the commitment to zero would become zH
Assume that x and y are both unknown for H = yG and H = xH

A pedersen commitment would normally then be P = aG + bH. Where b is blinder and a is the value you wish to commit to.

You again have these the wrong way round. The blinding factor goes next to the G and the amount next to the H.

  How would the mathematics break if I used the first definition?

If you swapped the generators in the commitments, every other piece of code that touched/used a commitment would also need to change. This is obvious becausexG != xH.

In theory one could swap them round in the commitments, but then a ton of other code would need changing to factor this in. A change for no gain. Convention, usage and documentation has them positioned the way they are.

  Are there places in the code where the role of G and H are switched?

No. To my knowledge,H is only ever used in the Pedersen commitments.

I find this an odd line of questioning in any case. What possible reason would one have to swap the generators? The Confidential Transactions (the Pedersen commitments), are the only place that requires an extra (different) generator.

The generator G is used in multiple places throughout the code base, not just in the Pedersen commitments for the blinding factors.

Lastly,

  is the G used here, different from the G used in the Pedersen commitment?

No. G is G. It's the curve generator used throughout. If there is ever another different generator needed (as in the case of the Pedersen commitments H), it is of course labeled differently to avoid ambiguity / confusion.


Could I use a Raspberry Pi to mine Monero? I have a Pi sitting around on my desk that I have never used. Could I use this to mine some Monero? I don’t pay for my electricity, so there is no cost for me.

I have my Pi3 mining away on my new pool:

Gulf Coast Mining (XMR)
https://mon.gulfcoastmining.com

I've created two "PI" specific ports on the pool to align difficulty:

PPLNS: 2222
SOLO:  2224

(SOLO of course being a long shot lottery but why not!!)

It's hashing at about 10H/s which even at that rate far exceeds any cost of electricity (yearly estimate is $6). It will get warm though if left on 24x7. I have it encased in an aluminum chassis that acts as a heatsink. I would definitely not do it without addressing the heat. It also gets hot enough in my case that small children should be sure to be beyond reach.

I compiled directly on the Pi3, set it up in a screen session and it has yet to have any issues.

https://github.com/tpruvot/cpuminer-multi


Monero Gui didn't create .keys file for wallet, it crashed, wasn't able to restore wallet, is it lost? My Monero Gui was freezing every 10 seconds when I clicked on it so I just killed the process, after trying to reopen multiple times I killed the monerod daemon process as well

When opening again the gui, I tried to locate the wallet file which is only named walletname, there was no .keys file created, it doesn't even appear in the gui explorer so I have to type the name manually and try to open

After trying to restore through this it gives me an error:

Couldn't open wallet: file not found "C:\Users\Documents\Monero\wallets\walletname\walletname.keys"

I wrote my mnemonic down to a paper when I created the wallet but apparently I only have 23 words and it's not working. Did I copy it right?

Is there any other way to restore this wallet? Because I had just made a big deposit there.

You can restore a wallet by either using the .keys file + its password or the 25 word mnemonic seed.  There is, unfortunately, no other way.

The wallet files are by default, located in Documents\Monero (on Windows). Have a look there and see if you can't find any files there.

If you only wrote 23 of the 25 words, something went wrong when you were copying it down.  If you know which words (the last two perhaps b/c you were interrupted?) that are missing, you could brute force the password, but you're looking at 16162 = 2,611,456 different possible seeds.  That's only if you know where the words are.  If you're not sure which words you've missed, you're looking at a much larger number.
Note that if you're actually only missing the last two words specifically, that would be the best of all possible worlds as the last word is a checksum of all the previous words.

If you'd like to get cracking at your money, have a look at the mnemonic seed list and info about the monero check sum.


From how much hashpower one may consider starting a public mining pool? I have a small mining farm, mining in a public pool. I plan to increase the hashpower of the farm in the coming months.
I also consider starting a public mining pool and move my hashpower to the new pool.
From how much hashpower it can be worthy to start a public mining pool?

There is no definite number here... It mostly depends on how lucky you feel ;)

If you think that you will be the only miner connected to your pool once you make it public, that will be the equivalent of solo mining then... Depends on your hash rate (and lots of luck), this might or might not be profitable for you. However, every beginning is hard, so once you make your pool public, be sure to announce it around and attract miners as soon as possible and just be patient and hope that other will connect too...


What Ports Does Monero Use? (RPC, P2P, etc.) What is the Monero P2P port?

What is the Monero RPC port?

What purposes do the different ports serve? Are there other ports Monero needs to have setup properly in order to use extra features?

On the daemon side (bitmonerod)

P2P Port is the one used to connect with the other nodes on the network (or locally in some cases).

RPC port (Remote Procedure Call) is used to let other applications such as simplewallet or the GUI interact with the daemon, for instance to get information about a block.

Default ports for the daemon are

P2P: 18080 for the mainnet, 28080 for the testnet
RPC: 18081 for the mainnet, 28081 for the testnet

They can be changed with following options

--p2p-bind-port
--testnet-p2p-bind-port
--rpc-bind-port
--testnet-rpc-bind-port

On the wallet side (simplewallet)

RPC port is used to let other applications interact with the wallet for instance to get balance.

The wallet do not act as a RPC server by default. It can be activated with the option --rpc-bind-port.

For daemon and wallet

The RPC data are exchanged using JSON-RPC a protocol based on JSON data format.

This page shows how to use programming language Python to interact with the daemon or the wallet via RPC.

UPDATE: Added 2 information from user36303 for completeness  and because the firewall comment is important

Wallet and daemon may use 53 for DNS, which is optional.

It is recommended to only open the RPC port on your firewall if you need to access RPC from the outside, especially for the wallet.


What is the reason why the monero firmware is delayed until ringCT is implemented? What is the reason why the monero firmware is delayed until ringCT is implemented?

Does this mean the firmware has to be re-written to work with ringCT?

Also will the trezor Monero firmware will be implementated in the Monero-wallet-cli?
(I have read so far it need a modified version of it?)

Noodledoodle has held off releasing the firmware as it needs to be reworked to make RingCT compatible transactions. It will be fine to use as is, but the trezor firmware won't be usable after September 2017. I'm pretty sure that's why he hasn't released it yet as it's not going to be much use to anyone if it isn't properly finished. The Monero-wallet-cli code has already been released and simply needs to be merged properly. Probably once it's been reviewed and polished to the devs' satisfaction. I think he has released a more up to date version, but I'm not sure where he posted it. It may be on the github page.

The newest Monero firmware binary is here.


What is known about the creation and history of the CryptoNote protocol? What is known about the creation and history of the CryptoNote protocol?

Who created Monero and what events led to the Monero community takeover from the original developer?

Much of the history of CryptoNote development is in dispute so I will stick to the facts.

CryptoNote is a new cryptocurrency protocol using some of the Bitcoin principles but with new ideas and an entirely new codebase.

The ring signature implementation described in the CryptoNote whitepaper, while unique, is based on established cryptographic principles and has attracted academic research:
CryptoNote v 2.0 (Annotated Whitepaper)

Bytecoin was the first coin to use the CryptoNote protocol. The launch time and publication dates of the whitepapers on whose principles it was based are a matter of dispute. See these comments regarding the timestamp and authenticity of the alleged digital signatures.

Largely because of the common disbelief of the claimed 2012 Bytecoin launch there was a large level of support in early 2014 of a new CryptoNote coin without a large premine. Bytecoin had already been approximately 80% mined before it was announced on Bitcointalk.

In April 2014 a developer named thankful_for_today launched bitmonero. After generally being unresponsive to community feedback, the project (now known as Monero) was soon forked away from thankful_for_today and has been run by a community based development team ever since.


How to have visitors mine on my websites and is it legal? I was wondering how to have visitors on my website mine monero for me and if it is legal or not. I know that if I don't tell them its illegal, but I plan on telling them in the footer of my website. Thanks in advance.

As long as you ask for their permission I can't see why it could be considered illegal. Coinhive considers it a viable alternative to adverts thus not illegal. In addition I don't think mining on peoples computers using a webpage is any worse than reselling customer information to advertisers.


What are the benefits of restricting difficulty while mining? Virtually all the mining pools I have seen specify a few ports with differing initial difficulties. The difficulty adjusts automatically according to your hash power. I notice that monerohash now offers the ability to set a custom fixed difficulty at a minimum 50000.

What are the benefits of locking down your difficulty? In what circumstances would it be best to opt to specify a fixed difficulty at this value or higher? Would it ever make sense to set it to be lower (hypothetically)?

the pool difficulty is basically how often your miner communicates back to the pool the work it has done. a lower difficulty does fewer hashes before sending results. if the difficulty is too low it will contact the pool too often possibly overwhelming the server, and you may get temporarily banned for spamming the server.


monerod v0.12.2.0 does not start on Linux because of "./monerod: error while loading shared libraries: libpcsclite.so.1" monerod v0.12.2.0 does not start on Linux because of "./monerod: error while loading shared libraries: libpcsclite.so.1". How do I resolve this particular issue?

This particular issue is resolved in CLI & GUI v0.13.

First, this error is caused by the libpcsclite dependency (which is required by Ledger) not being properly compiled statically. Fortunately, however, this error is trivially resolved by installing libpcsclite1. That is:

sudo apt-get install libpcsclite1

Fedora:

dnf install pcsc-lite

If, after installing this dependency, monerod still does not run and throws the same error, I'd recommend installing libpcsclite-dev (Ubuntu / Debian) or pcsc-lite-devel (Fedora)

Sources:

https://www.reddit.com/r/Monero/comments/8ok4hg/v01220_binaries_released/e0e0zoq/
https://www.reddit.com/r/Monero/comments/8ok4hg/v01220_binaries_released/e04w05u/


Can monero-wallet-cli be run as a light wallet? I've set up a Monero node on my server machine ("barrow.home", 10.8.0.1 on my VPN), which is not entrusted with any private keys.

/opt/monero/monero-v0.11.0.0/monerod --non-interactive \
  --config-file /srv/monero/monero.conf

monero.conf:

log-file=/srv/monero/monero.log
data-dir=/bulk/monero/data
rpc-bind-ip=10.8.0.1
confirm-external-bind=1
hide-my-port=1
no-igd=1

From the log file it seems to be working correctly and synced up to the latest block (1409151).

On my laptop, I'm trying to run a "light" CLI client, also v.0.11.0.0, using the server as the full node:

monero-wallet-cli --daemon-host barrow.home --trusted-daemon \
  --restore-deterministic-wallet --restore-height 1335000 \
  --generate-new-wallet=temp --password ""

I type in my seed for an account for which the first transaction was after block 1335000. Everything works... eventually. But it still takes hours for the client to sync with the server. And as far as I can tell, the --restore-height option makes no difference.

So my question is: is there any way to get a "light wallet" experience with a client that only runs occasionally and a server that doesn't hold private keys?

This is a bug: the restore height should have been taken into account. If you don't specify a restore height, it actually works (you get asked for one, which is used). This will be fixed.


How can I convert a blackball LMDB database into a wallet-readable format? The resulting file after running monero-blockchain-blackball is a data.mdb LMDB file. Unfortunately, this file cannot be opened directly by the GUI or CLI. How can I extract the necessary data so that the wallet can read it?

You will need to follow these steps to convert the database to a list of outputs that the wallet can read. I have performed this conversion on Debian/Ubuntu.

In order to extract the data, you need to build the LMDB tools. Follow the instructions on GitHub to make the LMDB binaries.

cd ~/monero/external/db_drivers/liblmdb

make

Then run the following:

./mdb_stat -a /folder/with/blackball/database

This will show the hash of the database that you have created. Take a note of the database name (eg: blackballs-418015bb9ae982a1975da7d79277c2705727a56894ba0fb246adaabb1f4632e3). You will use it in the next step.

You now need to extract the outputs that need to be blackballed. Use one of the following:

./mdb_dump -s blackballs-<hash> /folder/with/blackball/database/ | awk '/[0-9a-f]{64}/{print $1}' > /output/path/file.txt

./mdb_dump -s blackballs-<hash> /folder/with/blackball/database/ | grep ^.................................................................$ | tr -d \  > /output/path/file.txt

The resulting .txt file can be imported into the official GUI and CLI.


Why do monerod and monero-wallet-cli have mine commands? Looking at --help, they each have a start_mining and stop_mining command. monerod includes an argument for an address. How are these different from cpuminer-multi?

When you type the start_mining command in monero-wallet-cli (or simplewallet in older versions), the wallet software forwards that instruction to the daemon together with the address that is  currently open. The demon then starts mining and sends the rewards to that address (in case it can find a block).

If you start_mining in monerod, you have to specify the address where you want the rewards sent. Other than that it works the same way.

cpuminer-multi is a piece of software that is used to mine on pools. You have to specify the pool URL and an address to start mining (there are a few other options like the number of threads to use).


Is CryptoNote.org dead? The CryptoNote.org website doesn't seem to have been updated since 2015. Their support forum is broken (I don't receive confirmation emails allowing me to register) and their twitter account has not been updated in a while. I know that Monero is based on CryptoNote which implies CryptoNote is not dead but why hasn't the CryptoNote.org website been updated or forum working?

Whilst Monero is based on CryptoNote, the codebase and feature-set is now very different.

The CryptoNote website and code repository has not been updated in a long time.

So whilst the website and code has not been updated, for historical purposes, I guess it's nice they are still online, even though not maintained.

Arguably the most active development on privacy focused, decentralized and fungible digital money is happening on Monero, with a wealth of information updated regularly on multiple channels.


xmrig.exe is not recognized as a internal or external command, operable program or batch file Hello I am trying to set up an xmr rig on my laptop. When I run the the start.cmd it runs without issue, but I get low hashrate issue. So I am trying to run as admin but then I get the following error:
"xmrig.exe is not recognized as a internal or external command, operable program or batch file".
Any help would be greatly appreciated.
Thank you.

You can add at the beginning of the batch the following line:
cd /d "%~dp0"

This will change directory from the current one ("C:\Windows\System32") to the one the batch file is


In the CLI wallet, how can I send to an address book contact? Given a contact in the address_book, I would have expected to be able to send like so:

transfer [address book index] [amount]

Or: transfer 3 4.321

Can I directly use the address book entries as a transfer target or is it only possible to list those contacts via the address_book command?

(It would also be cool to store tx priorities with address book contacts by the way.)

Sending directly to an entry in the address book is not possible at the moment. In monero-wallet-cli, those entries can only be used via the address_book command. This is something that's not very hard add though, and might be a good first patch for a new contributor.


What determine the transaction size of Monero? Only the public key size of ring signature or both the public key size and signature size?

Both, and more. TX public key, TX extra data (usually payment ID), output one-time public key(s), input ring signature(s) and key image(s), ring confidential transactions (RCT) range proofs and commitments.


Unauthorized access when calling monero-wallet-rpc I configured the monero RPC with the following command lines:

1/ Firstly I run the monero daemon :
   ./monerod --testnet --rpc-bind-ip=x.x.x.x --rpc-bind-port=28081 --rpc-
     login user:password --confirm-external-bind

2/Then I configured the monero RPC :
  ./monero-wallet-rpc  --wallet-file testwallet --password test --rpc-bind-
  port 28082 --rpc-bind-ip=x.x.x.x  --daemon-address x.x.x.x.x:28081 -
  -testnet --daemon-login user:password --log-level 4 --confirm-external-bind

and the connection is done successfully but when I used it with the CURL it posted a message: "Unauthorized Access".

Can you help me?

Either disable RPC authentication (--disable-rpc-login) or give user:password to curl in digest mode.


A SHA-1 collision has been found. Does that mean the Monero repositories on Github can be compromised? Git (and thus Github) relies on the SHA-1 hash function to guarantee that files can't be secretly changed. Now a collision has been found: two different files that produce the same hash. The commercial cost to create one would be around 100 BTC at the moment. Is this a problem for Monero? Could we implement a safer hash function or would we have to wait for git to fix this?

It'd need to wait for git to implement stronger collision resistance. Work is underway for this: http://www.metzdowd.com/pipermail/cryptography/2017-February/031606.html

However, Linus (original creator of git) thinks it's not that easy to exploit in git: https://plus.google.com/+LinusTorvalds/posts/7tp2gYWQugL


What are the most secure options for backing up your mnemonic seed? You can gpg encrypt a text file or write it down on a piece of paper, but what are other good options to secure your mnemonic seed? I want to hear your ideas :)

You could also scrypt your paper wallet. Then use base64 to get the encrypted data in a printable format. This way somebody stealing it will still need a password to get the keys or mnemonic seed and scrypt will make sure that brute force attacks are infeasible even for weak passwords.

Encode:

scrypt enc -t120 data.txt | base64 > data.enc.txt

Decode:

base64 -d data.enc.txt > data.enc
scrypt dec data.enc

One major drawback though is that you'll probably have to scan+OCR to get the encrypted data back from paper into a digital format ;-)


Running a full node on Tails So I'm running the Monero GUI on Tails, using remote nodes, and the remote nodes are very unreliable. I was thinking about running a local node. I've read the sheep's noob guide but I'm hesitant to mess with IP tables and torsocks. Is this safe and necessary to do on Tails?

If you go into the GUI where it says local node you can specify where you want to download the blockchain.

Thanks

There is no avoiding editing the firewall rules on Tails. Instructions for running Monero on Tails can be found in the projects README and quoted below:

  Using Tor on Tails

  TAILS ships with a very restrictive set of firewall rules. Therefore,
  you need to add a rule to allow this connection too, in addition to
  telling torsocks to allow inbound connections. Full example:

sudo iptables -I OUTPUT 2 -p tcp -d 127.0.0.1 -m tcp --dport 18081 -j ACCEPT

DNS_PUBLIC=tcp torsocks ./monerod --p2p-bind-ip 127.0.0.1 --no-igd --rpc-bind-ip 127.0.0.1 \
--data-dir /home/amnesia/Persistent/your/directory/to/the/blockchain


What is the impact of having perfectly hidden but only computationally bound commitments? Monero uses Pedersen commitments to make transaction amounts private (hidden), but what, if any, are the problems of perfectly hidden and computationally binding commitments?

There seems to be a fair amount of misunderstanding amongst a few people of what is meant by the phrase "perfectly hiding and computationally binding" when discussing Monero security. In Monero, we use Pedersen commitments to hide the values in transactions and to help ensure there is no hidden inflation. Without an understanding of the context of the words "perfectly" and "computationally", this can lead to unnecessary fears.

To better understand, I find it helps to first grasp the concept of input and output spaces.

In the case of the input space for a Pedersen commitment, this is the set of all integers in a 506 bit range (a tuple x,a, two 253 bit scalars), and in the case of the output space, is the set of all points on the curve (Ed25519) used, a 253 bit range. Here you can see the input space is far larger than the output space. What this means in practice is that different inputs can map to the same output, or to put it another way, it works like a many-to-one relationship. Reference the Pigeonhole principle. Therefore, being in possession of the "one" part in a many-to-one relationship, you have no way (computationally at least) to determine specifically which of the "many" is the real input. Therefore, if an input space is larger than an output space, you can achieve perfect hiding.

Now, for the computationally binding. For a Pedersen commitment C, we have C = xG + aH, where x is the binding factor and a is the amount of Monero. What's important to understand here is that the generator point H must be chosen in such a way that no one knows an h such that hG = H (and it's regarded as safe to simply hash G for H here). Importantly, there is only one h that could possibly yield H (technically there could be others, but only one is actually needed for what follows), or to put it another way, the relationship is one-to-one. The input space is practically the same size as the output space. Now, to calculate this h would require knowing the discrete log of H w.r.t. G. This is what gives us the computationally binding aspect. It requires significant computation, but in theory, it's possible with unbounded computational power, to calculate this h.

So, assuming the sky falls any time soon and we have computers which can solve for the discrete logarithm problem, and thus someone is able to compute h such that hG = H, where does that leave us? Well, apart from all of ECC being vulnerable and the consequences of that, what it means w.r.t. Monero and the Pedersen commitments is that someone can publish a commitment using some random y, e.g. C = yG. Later, when asked to verify this commitment, they can pretend to have bound it with any given x. E.g. to calculate an a which will work for a given x:

xG + aH = C
xG + ahG = yG
thus
a = h^-1(y-x)

Or conversely, to obtain a binding factor x for any chosen amount b, that verifies the published commitment C = yG:

xG + bH = C
xG + bhG = yG
thus
x = y-bh

The binding property is lost. Whilst the existing amounts on the blockchain stay perfectly hidden, we would succumb to a problem of possible hidden inflation (we could no longer trust the amounts in commitments are accurate). And recall, this is a one-to-one mapping, you only need to find h once to be able to use it again for any given x.

Some people ask why we couldn't switch to having computationally hidden and perfectly bound commitments. Of course, we could, there are other commitment schemes that offer exactly this, e.g. ElGamal commitments. The real trade-off here is that ElGamal commitments are significantly larger than Pedersen commitments and also, they suffer the reverse issue e.g. they are perfectly binding but only computationally hiding (so with just one piece of information, all amounts could theoretically be revealed). Some also ask if there are any perfectly hiding and perfectly binding schemes. Not presently is the answer here.

But I'll stress here, just because something is not perfectly binding (or hiding), doesn't present some huge weakness. Being computationally strong is what ECC (and a great deal of other cryptography) is founded on - the discrete logarithm problem. We've got some time yet before computers are powerful enough to solve for this, and when they do, we've got a lot of bigger problems to deal with if we haven't come up with something else by then!

If it's not abundantly clear from all of the above, breaking the binding property does not break the hiding property. You simply cannot brute-force, no matter how unbounded your computational power is, e.g. even in the presence of quantum computing, to unhide the amount of Monero. You could at best calculate an amount that could be valid (recall there are many amounts that could be valid, you just have absolutely no way of knowing which is the one used). And breaking the binding has far more significant ramifications than just Monero's inflation security.


Is there a written document or resource about CryptoNight v2? I am looking for something like this:

https://cryptonote.org/cns/cns008.txt

It's got a detailed, written explanation and not just code. I am trying to make a miner for learning purposes so I guess code answers like ports or different language implementations are useful too.

Thanks

Not that I'm aware of. The changes are quite minimal and are found in the file slow-hash.c. The changes introduced are in the macros VARIANT1_1 and VARIANT1_2, so if you search the linked file, you can see what they are doing and where.

There's some more information in this somewhat related question's answer too.


Trouble restoring FreeWallet account Just after updating the FreeWallet app I lost my passwords book.

The FreeWallet app is asking to restore my wallet. I've used the "email restore" option + "forgot password " but I never received the verification code in my email.

Writing to FreeWallet support doesn't work for now, as there's no response (not even notification of complaint record) for 4 days.

What should I do?

FreeWallet is a third party, closed source wallet associated with Bytecoin and Minergate where you are not in control of your private keys. Therefore the only way to be able to recover your XMR/account is to keep asking them. However it looks like that they are not replying to you.

The best way to address this is go to the App and submit a review so other people may know. Probably FreeWallet may have to help you.

Sorry, hopefully you'll be able to recover your account and withdraw your XMR to a real monero wallet. In case you've recovered your account you can create  a wallet here https://moneroaddress.org/ and transfer your XMRs.


If a business or REIT wanted to purchase Real Estate and keep the owners anonymous could it use Monero to do so? As mentioned above, could a REIT (Real Estate Investment Trust) purchase property or send funds to where it needed to go and keep the transaction private between the buyer and seller? What Steps would the business take in setting up its address to hold Monero? I assume downloading Monero's software for a Mac or PC would be the first step after we establish the transaction is possible.

Well, the answer is more an answer about law rather than Monero.

Part of any real estate transaction is the recording of the transaction in public records.  The parties to the transaction must be known.  The seller must be known, since they must be proven to be the lawful owner of the land.  The buyer must be known, since they must be able to be proven as the lawful owner in the future.  More than likely, the government will impose real estate taxes, so the government needs to know who to tax.

In short, this particular use case doesn't seem like a good one for Monero (generally), since exchanging real estate isn't really a peer-to-peer transaction.

As far as setting up an address, any wallet software will create an address for you.  Be sure to write down the 25-word seed and store it in a safe place, since the seed can be used to restore your wallet and recover your funds in case the wallet file is corrupted/lost/deleted/etc.


Could Monero implement zk-SNARKS in the future? At the moment ring signatures are more eficient than zk-SNARKS, but as fluffypony already comment, probably any cryptocurrencie in the future will use this technology. Can monero implement zk-SNARKS in the future if needed?
How can it be done?

Riccardo has mentioned that zk-SNARKs could be used in temporary sidechains. There is no official plan laid out yet to my knowledge.


Why does my pool say my hashrate is lower than what my computer reports locally? My pool always seems to think I have a much lower hashrate than what I see locally. The only thing I can think of is that my pool moves onto the next block before my computer submits hashes, but my ping time is just 83 ms and my connection log shows no errors.

The hashrate that is reported by the pool is an average over some time period - for example the original core pool implementation uses a window of 10 minutes (600 seconds) to compute the average.

Your miner probably reports the average hashrate over a shorter window.

That could be the reason why you may observe discrepancies at a particular moment in time (if your miner has mined more slowly at some point over the past 10 minutes).


Can the Trezor Model T wallet store both Monero and Bitcoin at the same time? I just bought a Trezor Model T last month to store my Bitcoins, and now I am interested in buying some Moneros, too. But before I do that, I need to know whether I can store both at once on my Model T wallet. If I try to install the Monero GUI using the 'Create a new wallet from hardware' option, will that somehow overwrite my Bitcoins? Will I still be able to see/access both my Bitcoins and Moneros once I have the Monero GUI set up? Are there any other related issues or hazards I should be aware of? Thanks in advance for your help ... DS

You can safely use and store Bitcoin and Monero simultaneously with your Trezor model T device.

If I try to install the Monero GUI using the 'Create a new wallet from hardware' option, will that somehow overwrite my Bitcoins?

No. The Trezor Model T, upon initializing the device, essentially provides a 'master' mnemonic seed that is valid for both Monero and Bitcoin.

Will I still be able to see/access both my Bitcoins and Moneros once I have the Monero GUI set up?

Yes. Setting up the Monero GUI in conjunction with the Trezor Model T will not affect your Bitcoin (or any other coin for that matter) holdings on the Trezor device.

Are there any other related issues or hazards I should be aware of?

It is advised to diligently read the guide:
How do I generate a Trezor Monero wallet with the GUI (monero-wallet-gui)?
And evidently, it is imperative to properly and safely back up your Trezor mnemonic seed.


How long are unmined transactions kept in the memory pool? Since the RingCT hard fork, there's quite a backlog of transactions in the memory pool, even a single transaction sitting there for 40 hours already.

Are unmined transactions "returned to sender" after a while? If so, after how long? If not, are those moneroj at risk if those transactions would stay there forever?

Transactions drop from the txpool:

after 7 days if they were included in a block that was orphaned
after 24 hours otherwise

The orphaned block case can happen with invalid transactions, if they were mined by a daemon which does not obey consensus (maybe an old one). This is something that may need a bit more work to determine when to apply the first limit, and when to apply the second one.

Once transactions drop off the txpool, the wallet should notice this in short order, and consider the transaction as failed, and its inputs spendable again.


Are Confidential Transactions in Monero perfectly binding or hiding? Bitcoin contributor Pieter Wuille recently commented on Reddit:

  Bulletproofs and the Pedersen commitments they operate on are
  perfectly hiding, but not perfectly binding. This roughly means that
  if they're adopted inside Bitcoin, and elliptic curve crypto is
  (completely) broken, new money can be printed. On the flip side, it
  does mean that the privacy of anyone who used CT in the past is
  unaffected. Alternative formulations of CT exist for which this is the
  other way around (perfectly binding but not perfectly hiding), where
  money can never be printed (even if the cryptography is broken), but
  privacy can be retroactively lost. There is currently a discussion on
  the mailinglist which of these is the better tradeoff (it is
  mathematically impossible to have both perfect hiding and binding).

Which design did Monero choose to use?

Perfectly hiding. I don't think perfectly binding even existed at the time RCT was developed (not sure, though).

As to what should be chosen, think about this:

  We can always replace lost money, but we can't ever replace lost privacy.


Send monero with Payment ID but public address, not intergated address I have just sent monero from binance exchange to my monero wallet. I use Payment ID but I do not use integrated address. I used my public address. Now, how is it going on? Will I lose my coin? Thanks. Vu

If you are sending funds to your own wallet, you do not need to specify a payment ID. Payment IDs and integrated addresses are only there to help differentiate senders, and do not affect whether you receive funds to your wallet. Therefore regardless of whether you used an integrated address, a payment ID, or no payment ID, you'll still receive the funds.

The reason exchanges need you to use payment IDs is because they receive funds from lots of different people, and in the absence of payment IDs, Monero's privacy mechanisms prevent them from knowing who sent what.


Does a CPU or GPU mine better on the RandomX algorithm for Monero mining? Was RandomX made specifically for CPUs or GPUs for mining? I know it's ASIC resistant.

RandomX is designed to run efficiently on general purpose hardware, e.g. CPUs and to some extent, GPUs.

Quoting the project README:

  RandomX is a proof-of-work (PoW) algorithm that is optimized for general-purpose CPUs. RandomX uses random code execution (hence the name) together with several memory-hard techniques to minimize the efficiency advantage of specialized hardware.

And quoting the section on GPUs:

  Note that GPUs are at a disadvantage when running RandomX since the algorithm was designed to be efficient on CPUs.

Note that whilst GPU mining wont be as efficient as CPU mining, GPU mining is still effective on RandomX, it just wont have the same advantage it currently has over CPU mining with the current algorithm, CryptonightR.


Where can I download the entire Monero blockchain in one shot? Monero syncing via the daemon can take days/weeks. Where can I download the entire 50GB+ monero blockchain from a fast connection?

The current blockchain can be downloaded from https://downloads.getmonero.org/blockchain.raw


What parts of Bitcoin's Lightning Network can be ported to Monero? As a fork of Bytecoin, Monero has been unable to directly port much of the tools and code written for Bitcoin and its forks. However, as a layer-2 solution, what parts of Lightning would need to be rewritten for Monero? Would the Lightning Network Daemon be compatible with minimal changes, for instance? What are some things that wouldn't be compatible?

Thanks

Lightning Network (LN) was predominantly devised as a way to scale Bitcoin (in terms of both throughput and keeping tx costs low). Some people also throw in "privacy", but that has been largely debunked, e.g. 1.

Monero doesn't have these problems, hence there is not some great need for LN with Monero.

Another much trumpeted "feature" of LN is the potential for cross-chain atomic swaps. However, this has also come up against some criticism, for example 2.

Leaving aside the questionable needs / benefits of LN, the question isn't really what or not can be "ported" due to the fact Monero is not a Bitcoin clone, but rather: is it possible to implement LN for Monero. And the answer to this right now is no. LN requires time-lock and refund mechanisms to operate. Whilst some kind of time-lock trickery could perhaps be achieved, due to the way the blockchain and transactions operate, there is no refund mechanism currently.

So,

  ... what parts of Lightning would need to be rewritten for Monero?

Monero would need non-trivial changes to be able to use the LN scheme. Then any LN daemon would need work to implement on top of the Monero blockchain. Thus "what parts" is actually a lot of both.

  Would the Lightning Network Daemon be compatible with minimal changes, for instance?

No.

  What are some things that wouldn't be compatible?

Given how tightly any 2nd layer needs to operate with any base layer, there's a considerable amount of incompatibility.

Lastly,

  Monero has been unable to directly port much of the tools and code written for Bitcoin and its forks

You say this like it's some kind of negative. There are many issues with Bitcoin's (and its forks) design and code. Monero is not a fork of Bitcoin for good reason.


How to start Wolf's AMD miner on boot with Ubuntu? How can I set Wolf's AMD miner (version 0.4) to start on boot with Ubuntu 16.04?

I already have the miner configured to run properly on command in my Downloads folder.

sudo nano /etc/systemd/system/runminer.service

In there, paste this (everything between the lines):

[Unit]
Description=Monero GPU miner
After=network.target

[Service]
User=YOUR_USER_NAME_HERE
Group=YOUR_USER_NAME_HERE
WorkingDirectory=~

Type=simple
ExecStart=PUT_LAUNCH_COMMAND_HERE_USING_FULL_PATHS

[Install]
WantedBy=multi-user.target

After that, do

sudo systemctl enable runminer.service

Then, to launch right now.

sudo service runminer start

Or just reboot it. To see if its running, run

sudo service runminer status

to see the full logs, try

sudo journalctl -u runminer.service

(caveat - I think that should all work. Haven't tried it yet)


Could (merge) mining provide a vector for deanonymization? With the recent news that Digitalnote (XDN) is implementing merge mining in an effort to boost the hashrate by basically piggybacking off of Monero, I was wondering if this could lead to some leakage of information for Monero users who mergemine.

If a pool is monitoring payouts of both XDN and XMR to addresses that they can correlate to a miner's IP address, and they send the XDN tx with mixin of zero, does this leak any additional information compared to someone purely mining Monero? Is the only way to avoid this IP/address correlation by mining over tor or i2p?

When merge mining all you're doing is re-using your PoW calculation on different blockchains that share PoW algorithms.

Merge mining is therefore equivalent to, but more efficient than, running two or more miners in parallel against a mining pool supporting multiple currencies.

Since one blockchain doesn't know anything about the other (remember, you're only submitting PoW solutions) the XMR payouts cannot be tracked (by the properties of XMR) as they're moved around.

The XDN on the other hand, can be tracked, unless you take steps to hide your trail.

In conclusion, it's only slightly worse than if you were to only mine XDN, because the pool operator would also know your XMR address.

If you've re-used that XMR address, e.g. in your forum signature to solicit donations, they could watch the XDN blockchain and know what that forum user is up to.


Literature suggestions to understand the cryptography used in Monero? For a computer scientist familiar with theoretical aspects of the field and a solid understanding of mathematical foundations, but no background in cryptography, what are recommended books or papers to deeply understand the cryptography used in Monero? Ideally, I'm looking for something concise yet easy to read and expanding a bit on the stuff mentioned in the MRL papers. I'd say I can follow the MRL papers 50 to 75 percent, but sometimes I'm a bit lost and need some more background.

Here's someting about elliptic curve cryptography that helped me understand it. Also, there's a site studying security features of various elliptic curves. For other things (such as ring signatures), I'm hoping that someone else can provide useful references.


Is Monero's wallet creation truly random? The wallet creation with monero-wallet-cli results in a seemingly random mnemonic seeds and wallet address. Since the result of any computer program is deterministic and thus relies on an external random state to create true randomness - what mechanism creates the entropy for Moneros wallet creation algorithm?

Imagine I set up two computer systems with identical hardware (lets assume I can do this, ie. that there is a fabrication line that is able to produce identical parts). Lets assume further that these machines share one connection to the outside world, ie. input devices and power cables. I shall start them at the same time (in a relativistic sense, that is their CPU clocks are running synchronously). Will the wallet creation on these two systems result in the same wallet?

Monero uses a Keccak based PRNG. I believe this is one that was proposed by the team behind Keccak, though I am not 100% certain. The seeding is done from /dev/urandom (or, for Windows, some Windows specific API). There is no reseeding, but the Keccak construction is rated for LOTS of random numbers before reseeding is needed.

See "Sponge-based pseudo-random number generators" by Bertoni et al. I can't recall where I got it from, but it might be keccak.noekeon.org, though I can't see it there at first glance.

It would be nice if someone reviewed that code to make sure it really is the same construction.


Received monero, how many confirmations do I need to wait before fully confirmed? Why do we need to wait for such a long time when receiving monero? I thought it was 2 minutes only, but it seems that is not the case and I have to wait still a good 5+ minutes for a transaction to confirm.

Seeing as you mixed two concepts in your question, receiving and full confirmation...

Just like practically every other cryptocurrency, two things happen when you send money: 1) the transaction gets broadcast and placed in a transaction pool. Your wallet sees (receives) this almost straight away, but it is locked until 2) it is mined in a block and then N subsequent blocks have been mined afterwards. In Monero's case, wallets keep the funds locked for N=10 blocks (which is roughly 20 minutes).

Cryptocurrencies do this locking / confirmation wait because of a few reasons, mostly to avoid double spends (whether intentional or accidental), but also because of the possibility of orphaned blocks.

With this knowledge,

  Why do we need to wait for such a long time when receiving monero?

You don't. Your wallet receives / sees the transaction almost instantly.

  I thought it was 2 minutes only, but it seems that is not the case and I have to wait still a good 5+ minutes for a transaction to confirm.

You thought wrong. For the transaction to be fully confirmed (unlocked) by your wallet, it takes 10 blocks (roughly 20 minutes). For comparison, Bitcoin aims for a 10 minute confirmation / unlock time.

Lastly, it's worth noting, there is nothing at the consensus level enforcing an N blocks lock time. The wallets / merchants implement this. Some wallets / merchants accept a lower block confirmation (even zero in some cases), but that's a risk they are willing to take (a risk they never get to use the funds because of a double spend for example).

UPDATE (for v0.15+)

The 10 block lock time is now enforced by the protocol (consensus). Therefore it is now only possible to spend funds with at least 10 blocks of age.


Monero mixin 0 versus Zcash "T" address transaction How does the privacy of a Zcash "T" address transaction compare with a Monero mixin 0 transaction (back when they were available)?

Does 'T" stand for transparent?

Would it be technically possible for Zcash to eliminate "T" address transactions in the future just as Monero has eliminated mixin 0 transactions except for very limited use cases involving dust.

Monero mixin 0 is still superior to a Zcash "T" transparent transaction due to the fact that Monero uses stealth addresses for every transaction whereas Zcash does not have this feature.

I do not imagine there would be any scenario for Zcash to eliminate transparent transactions as this would break a lot of the intentional bitcoin compatibility that is currently part of Zcash. There's also no feasible way to create a Z shielded transaction on a mobile device due to the RAM and CPU requirements. It takes 60 seconds on a 4 core top of the line x64 processor - expect it to take maybe 20 minutes and to kill the battery on a mobile processor. Not going to happen.

TLDR; the default use of Monero is far more private than the default use of Zcash and this will continue to be the case for the foreseeable future.


Blocks added when mining monero My computer is mining monero with monerod daemon pointing to my monero wallet, and I found in the logs some messages like this one:

[timestamp]    BLOCK ADDED AS ALTERNATIVE ON HEIGHT 1382864

I thought my miner had found a block but there is nothing new in my monero wallet. Please explain the meaning of this log message and how does it looks like when the miner find a block and add some monero in my account. Thank you.

That means the blockchain had a re-org because 2 blocks were found at almost the same time by 2 different miners. The one with bigger difficulty came later and pushed the other one out.


Which type of hardware is the most efficient for mining Monero? I'm not looking for any specific product recommendation, but I'm just curious in terms of type of hardware which has been proven as the most efficient in terms of  mining Monero.

Is it GPU, CPU, ASIC, or is there anything else?

In terms of power efficiency, the reigning champ was the Nvidia 750Ti. That GPU will get you 250H/s and use about 30-40W power. For efficiency, that puts it around 6H/s/W.

With the optimized ARM64 code I've been working on, a small ARM64 box (like a high end TV box) can get you 22H/s using less than 5W power. Much slower mining, but much higher efficiency, at 4.5H/s/W.