How much time does it take to transfer monero? Using simplewallet (now monero-wallet-cli), how long does a typical transfer take to be recognized as part of the total balance of the receiving wallet? Does the mixin # influence the transfer time? Does the amount of monero being transferred affect the speed?

how long does a typical transfer take to be recognized as part of the total balance of the receiving wallet?

It varies, but in general it will take less than 5 minutes. Once the receiving wallet scans and identifies the transfer as belonging to the receiving wallet, it will be included in the total balance. A cautious user of any cryptocurrency, however, will wait for additional blocks to be found after the transfer. This ensures that the funds are secured in the receivers wallet.

  Does the mixin # influence the transfer time?

Generally, no. The mixin does increase the size of the transfer, so it is possible for very large mixins to be delayed on the network due to either propagation of the transaction data itself, or that the transaction is so large that a miner doesn't want to include it in a block due to block size penalties.

  Does the amount of monero being transferred affect the speed?

Generally, no. However, if you are creating a transaction that uses a lot of outputs, then the transaction will be large and the same thing described above


Why is there a fee to import old transactions when using mymonero web wallet? When opening and old wallet created by simplewallet, I'm asked for a fee to import old transactions, why?

Re-scanning the blockchain from 0 consumes server resources and takes time. The fee is there to discourage this use case, but providing the utility if it's really required for some users.

If a new wallet is generated, the server doesn't need to re-scan the blockchain as it knows that the wallet has not been used before.


Having more control of output selection As far as I can tell, the user currently has little to no control over how outputs are selected for building a new transaction. I have had instances of trying to send the exact amount of an output, and hoping the transaction building algorithm would realize that and not involve other outputs, but having either the opposite happen, or even at one time having all my outputs sent in the same transaction, many of which were created in the same transactions. That sounds like needless privacy destroying behavior, so I wonder what can be done about that. So, there are a few things I would like to suggest and ask:

(1) Please explain how the output selection works in each of the transfer building algorithms. I have seen some links to the comments in the code, but couldn't get the main points of those constructions and the differences between them.

(2) Could we have a function that allows the user to manually choose what outputs to send, and which ones to include?

(3) Could it be made so that, on using always-confirm-transfers 1, in addition to asking if the fees charged are okay, it would also print out the outputs and their transfers hashes and ask the user if using those together is okay too? Since the transfer building algorithm seems to be randomized in the user's outputs selection, hopefully after trying a few times the user would get a transaction that doesn't involve outputs that they don't want to see linked.

Edit: Thank you user36303 for addressing item (2). I am still very much interested in learning more about (1) and really would like to see (3) get implemented, so I am placing a bounty for anyone addressing those points! (Also, I meant the bounty to be for more details, but it turned out saying I wanted more authoritative answer, for some reason...)

If you have log level 2 IIRC, the whole transactions are dumped to the log.

Output selection is random, within "priority" levels. Priority levels are determined by which outputs are related to outputs already in a transaction that's being built. This means that if you have enough outputs, you'll end up with unrelated outputs as inputs. The usual disclaimers apply: use a recent version (see github), might be buggy (file on github), etc.

There's no manual way to select outputs, mostly because it'd be a pain, but there's nothing preventing you from adding it. Improvements would be welcome.


Mac OSX Monero GUI link on Getmonero seems to not work I have tried three times to download it and I only get a part file and a 'Failed' message.

Is there another (safe) place to get it, and has anyone else had this issue?

Yes, you can download it from the official Monero Github account


Where is the global array of outputs of type txout_to_key? according to cryptonote standard #4,"- key_offsets: The list of offsets in the global array of outputs of type txout_to_key having the same amount as the input. The first value is the ordinal number of the first referenced output       among those having the same amount. Each of the following values is the offset of the next referenced output relative to the previous one. One of the outputs referenced is the actual output being spent, "
Where is the global array of outputs of type txout_to_key?

When you read in the blockchain from scratch, your daemon will start building a table of each output encountered in chronological order. Prior to RingCT, outputs had cleartext amounts. RingCT outputs have the amount '0' assigned to them. Outputs are looked up by both their amount and offset. This means that an output with amount 0 at the 3rd offset would be the 3rd ever output observed which had an amount 0.

Therefore, if you want to look up a key_offset, you need to query your daemon's database. You can make an RPC call to do this, using the "get_outs" method.


Monero private key collision Assuming a properly working RNG what are the chances of creating a Monero private key that is identical to one created by someone else (it corresponds and controls funds sent to the same XMR address)?

How does the above answer compare to the same question for Bitcoin, Ethereum and ZCash?

Well, private spend keys are 64 character hex strings, see here:
https://moneroaddress.org

That will give you around 1e77 possible private keys. If n is the number of possible private keys, and you only generated two private spend keys, the odds they would be the same is:
     1 - (n-1)/n
Which Python tells me is 0.0 due to floating point arithmetic.

In order to estimate how many keys you would need to generate to produce a collision you can just take the square root of n, which is about 3e38, which is a lot of keys.

See this page for more info:
https://stackoverflow.com/questions/22029012/probability-of-64bit-hash-code-collisions

Bitcoin uses the same 64 character hex string for private keys, so I think it should be the same.

Disclaimer: I'm no mathologist.


Is there any way of changing the password of an existing wallet? Let's assume that my wallet's password was compromised. Is there any way of changing the password or do i have to create a new wallet and transfer all the funds there?

This answer depends on whether your .keys file was compromised as well. If an attacker knows your password and somehow has access to your .keys file he will be able to steal your funds. However, if he only knows your password and doesn't has access to your .keys file he won't be able to steal your funds. In the former scenario you should send your funds to a newly created wallet with a new password. In the the latter scenario you could restore your wallet with the 25 word mnemonic seed. It will then ask you for a new wallet name and you can choose a new password. Restoring is done as follows:

Linux and Mac OS X

./monero-wallet-cli --restore-deterministic-wallet

This should be done from the terminal from the directory of monero-wallet-cli itself.

Windows:

monero-wallet-cli.exe --restore-deterministic-wallet

This should be done from the command window from the directory of monero-wallet-cli itself.

Lastly, bear in mind that with the 25 word mnemonic seed is able to bypass any password set on the wallet. Thus, you should keep this somewhere safe.


MyMonero Online Churning? Does using MyMonero online wallet and sending it to yourself (churning) help increase privacy?

I hear people say churning is good for the network. But online wallets do sacrifice some privacy for convenience.

MyMonero has users' public addresses and view keys. Does churning do anything then?

Does churning increase your privacy (and help the network) or not, because MyMonero can see the connections between transactions and trace them?

Does using MyMonero online wallet and sending it to yourself (churning) help increase privacy?

Leaving aside MyMonero online wallets, the benefits or churning are debatable. There are really only a couple of very specific cases where churning can be beneficial (such as breaking the linkage between specific tx outputs, i.e. seep_single, [ref]), but naively just churning all the time, in most cases actually just reduces privacy [ref]. The best advice is to just use Monero normally, as intended.

  I hear people say churning is good for the network.

This is nonsense that was peddled by one specific group of people. The benefit to the network is soo small it's utterly insignificant.

  But online wallets do sacrifice some privacy for convenience.

This has nothing to do with churning. Online wallets have numerous downsides, none specific to "churning".

  MyMonero has users' public addresses and view keys. Does churning do anything then?

Again, not specific to churning, but you are taking huge heavy privacy and security risks using online wallets disclosing any information to them. The moment you are trusting some service with your wallet view key, wallet address and your IP address, you've already obliterated a huge amount of your privacy. Thus whether you churn or not at this stage is largely irrelevant.


How do I verify incoming payment for web based service in XMR? What are my options if I want to build a web based service with XMR payment gateway?

You will want to use the wallet RPC interface, not daemon RPC.

Therefore, if you are going to be using payment IDs you can use get_payments, or if you plan to use subaddresses per customer/order you can use incoming_transfers to monitor incoming transactions by subaddress.


How can we be sure that monero wallet addresses are unique? This question is probably not necessarily limited to monero wallets, but I have been playing around with the Monero Offline Wallet Generator and wanted to know how anyone could ever be sure that a wallet address is unique? Specifically, say I create an offline wallet, and transfer some xmr into it. Is it possible that someone else could ever randomly generate an identical wallet address in the future? If so, wouldn't they have the spend keys to transfer the existing balance of that address once they see the existing balance and think "hot damn, free xmr"?

My brief research has not definitely answered this question, and I assume the answer is that it would be possible but so improbable as to be virtually impossible. I also assume that part of the address creation process involves using things local time when address is being created or other factors to create the initial parameters for creating the wallet addresses and keys, but just wanted to see if anyone more knowledgeable could provide a more clear answer.

The question should be answered here:
Monero private key collision

TL;DR: There are 2^256 possible private spend keys, which would take 3.67×10^66 years to generate all of them at a rate of 1000 per second.

So while it is theoretically possible to have someone else generate the same key, as long as there is a large enough entropy pool for the random generation, you should be fine.


Korbit exchange access and currency support According to this recent blog post Korbit, Korea's largest Bitcoin exchange now supports Monero(XMR) trading.

  This Multi-Trading Service supports trading of more various digital assets other than just Bitcoin, Ethereum and Ethereum Classic, which are already supported by Korbit. Therefore, if you are a level 3 or higher member of Korbit, you can take advantage of the service without the hassle of using a foreign service to do buy and sell digital assets.

What is the definition of level 3? Are you required to be a Korean citizen to use Korbit? What fiat currencies are supported?

I've not used the exchange, but with some google fu I've managed to piece together the following:

You need a Korean bank account, in your name, to use Korbit.

Level 3 means you've verified your account by sending in a scan of your diver's license or equivalent.

If you browse the Korbit site you see that the only fiat that is supported, for the listed pairs, is the South Korean Won.  It's a reasonable guess that the same is true to for the currencies that are available upon verification.


Updating Your Loki Service Node using the Loki Launcher The Loki network is going to be upgrading to v4 in the coming week to prepare for RandomX mining and as a Storage Server for messaging. Currently I am on version 3. How do I update my Loki SN to get ready for this hardfork?

First login to your service node and make sure you are using the user that launches the loki-launcher. Following the guide: https://lokidocs.com/ServiceNodes/UpdateGuide/ -- My user is snode.
For those looking for a one liner, you can do this otherwise skip it:

$ su snode
$ loki-launcher stop; sudo npm install -g loki-launcher; sudo loki-launcher download-binaries; sudo loki-launcher fix-perms snode; loki-launcher start

Then make sure you stop the loki service using:

loki-launcher stop

If that doesn't work you can stop it like this too:

sudo systemctl stop lokid.service

Once stopped, we can proceed to update loki. First update loki-launcher using:

sudo npm install -g loki-launcher

Then update lokid binaries using:

sudo loki-launcher download-binaries

And make sure your permissions are fixed also by:

sudo loki-launcher fix-perms snode

To double check goto your folder:

cd ~/.loki

And see if any of the files or folders have root as the owner. If it does, change it to snode: sudo chown snode:snode < folder/file >

Now lets start your lokid: loki-launcher start
Then do a: loki-launcher client
Let it wait as it will have to scan the blockchain for the new version. My vps took about 10-15 mins to do the scanning. You should see this:

When done, you'll see SYNCHRONIZED OKAY
And check on your SN status with: print_sn_status

Next make sure your STORAGE SERVER is working. Just do a: loki-launcher status -- if it shows OFFLINE, you can try to launch it manually to see if its throwing errors like this: /opt/loki/bin/loki-storage 0.0.0.0 23023 --- I had the issue where it was showing OFFLINE, it was due to my ~/.loki/storage folder was owned by root. A chown to snode fixed it.
Also be aware of:

IP Address: 0.0.0.0
Storage Server Port: 0
Downtime Credits: 720 blocks (about 24.00 hours)

Its suppose to look like that as the fork hasn't happened yet.


Must a tacoshi always remain the smallest possible sub unit of Monero? A tacoshi is one trillionth of one Monero and the smallest sub unit available. Where did the name tacoshi originate?

If Monero becomes widely adopted and its value grows dramatically can small Monero units be created? If smaller units are possible, would there creation require a hard fork or a soft fork?

The tacoshi was named after a Monero developer called TacoTime.

It would be possible to create units smaller than 0.000000000001 XMR but smaller atomic units would require a hard fork so that those smaller units would be recognized by all peers on the network.

Even if prices rose dramatically the need for smaller units would remain uncertain without more information about current network activity, hash rates and transaction fees.


Low hashrate on some CPU instances I have currently 30 CPU instances running minerd on Ubuntu (for XMR). Not all instances have the same CPU, but some of the instances have "Intel(R) Xeon(R) CPU E5-2650L v4 @ 1.70GHz". These instances are all rented Cloud Servers (VPS).

Now these instances give 30+ H/s each on average. Most of the instances can perform at 30 H/s consistently. But some instances which have exactly the same setup and CPU run at a much lower hashrate and perform at only 3 H/s.

What things can I check and how can setup these other instances to also make 30+ H/s? 30+ H/s per instance is profitable. 3 H/s is not profitable at all. Any ideas/suggestions?

BR, Rene

The difference is likely the availability of AES-NI:

grep aes /proc/cpuinfo

Some VM configurations may not allow use of the underlying AES-NI instructions by VMs.

Less likely, it could be the lack of L3 cache memory (Cryptonight needs 2 MB cache per mining thread for good performance).


How is CipherTrace tracking monero transactions and what tools are they using? On August 31, 2020. Ciphertrace released: https://ciphertrace.com/ciphertrace-announces-worlds-first-monero-tracing-capabilities/
What are these tracing tools doing exactly to trace monero?

CipherTrace delivers Monero tracing tools to the U.S. Department of
Homeland Security to support investigations of crimes. Menlo Park, CA
– August 31 2020 – Leading cryptocurrency intelligence company
CipherTrace has developed tools for the U.S. Department of Homeland
Security (DHS) to track transactions of notoriously difficult-to-trace
privacy coin Monero (XMR).
CipherTrace’s contract with DHS Science & Technology Directorate
resulted in the development of forensic tools for law enforcement and
government agencies to trace and visualize Monero transaction flows
for criminal investigations. CipherTrace developed tools to explore
Monero transactions to assist in investigations. These tools include
transaction search, exploration, and visualization tools for Monero
transaction flows that have been integrated with CipherTrace’s
Inspector financial investigations product. This provides ways to
track stolen Monero currencies or Monero currencies used in illegal
transactions. It also helps assure cryptocurrency exchanges, OTC
trading desks, investment funds and custody providers that they do not
accept Monero from illicit sources and investigate Monero received
from potentially illicit sources and take appropriate actions to stay
in compliance.
With 45% of darknet markets now using Monero—the second-favorite
cryptocurrency of choice among criminals just behind bitcoin—law
enforcement interest in Monero tracing has soared. Monero employs a
particularly unique design to ensure user anonymity including
always-on, enforced privacy. Ring signatures, which enable transaction
mixing, are built into the protocol design, so when attempting to
locate the source of a transaction, it will appear as if a whole crowd
of users took part in the exchange, making it nearly impossible to
identify the true source.
“Monero (XMR) is one of the most privacy-oriented cryptocurrencies,”
said Dave Jevans, CEO of CipherTrace. “Our research and development
team worked for a year on developing techniques for providing
financial investigators with analysis tools. There is much work still
to be done, but CipherTrace is proud to announce the world’s first
Monero tracing capability. We are grateful for the support of the
Department of Homeland Security’s Science & Technology Directorate on
this project.”
The tools CipherTrace developed within the scope of this DHS project
have also laid the groundwork for future implementation of entity
transactions clustering, wallet identification, exchange attribution,
and other functionality that will provide law enforcement with even
more tools for investigating Monero transactions and addresses.
For media inquiries, please contact Kili Wall at (310) 260-7901 or
Kili(at)MelrosePR(dot)com

This Press Release (which is all it is) has already been discussed at length on Reddit and largely refuted. The CEO even admitted in an interview they are just using heuristics (he also showed not knowing the difference between a wallet address and an output public key so take from that what you will as to the authenticity/credibility of the rest of their claims).


Number of outputs included in a given ring size Historically the definition of mixin before recent plans to change the name to ring size counted the number of foreign or "fake" outputs in a ring.

So for example a mixin of 6 would include a total of 7 outputs (1 real output from the actual sender and 6 fake or "decoy" outputs).

Does this same definition apply to the new term ring size?

Does a ring size of 10 imply a total of 11 outputs in the ring signature (1 real and 10 fake)?

I ask because the current tag usage guidance is not completely clear on this point:

  The ring size is the number of one-time public keys (outputs) in the ring-signature that authorizes the transaction. One of those belongs to the actual sender, while the remaining ones (foreign outputs) are used for obfuscation and any existing output found on the blockchain can be picked. This achieves plausible deniability in that any given input in a transaction could have come from any of the outputs used in the ring signature.

Ring size refers to the complete ring signature, which includes the signer's output. They're all equal participants in the signature, thus the ring size is the total number of outputs used, including signer's. So while it still refers to the same thing as 'mixin' did, it doesn't exclude the one belonging to you, thus:

Ring size = 'mixin' (number of foreign outputs) + 1 (your output)

I use the term "foreign output" because it's the one found in CN whitepaper.
Someone linked to this paper as well, which uses some nice language:

To produce a ring signature, the actual signer declares an arbitrary set of possible signers that includes himself, and computes the signature entirely by himself using only his secret key and the others’ public keys.
...
We call a set of possible signers a ring. We call the ring member who produces the actual signature the signer and each of the other ring members a non-signer.


Helper functions for ECC operations in Monero 1 - Where exactly the base-point G is defined?  for example the function ge_scalarmult_base should multiply by G, but in the implementation I don't see any reference, where G is initlized.

2- Where can I find helpers functions that give the following abilities:

Convert an Int to scalar (ge/fe).
Multiplication of two points over the curve.
Print ECC point from the type RCT::key.
Print scalar from the type RCT::key.

Thanks a lot!

https://github.com/monero-project/monero/blob/master/src/crypto/crypto-ops-data.c
There are 2 places these ops are found, firstly https://github.com/monero-project/monero/blob/master/src/crypto/crypto-ops.c which has the lower level c code and https://github.com/monero-project/monero/tree/master/src/ringct which has some c++ wrappers.


How does signing the hash of the public key show that the signer knew the private key? I had this previously explained to me, however I do not think I understand it at all.

Taken from Maxwell's confidential values:

"If a signature is
constructed so that the 'message' is the hash of the pubkey, the signature
proves that the signer knew the private key, which is the discrete log
of the pubkey with respect to some generator."

Naively, I could hash someone else's Pubkey and sign it with mine. I am sure I am misunderstanding this sentence.

How does signing the hash of the public key show that the signer knew the private key?

That's what signatures do. They prove that a private key must have been known for a particular public key that the verifier checks there has been a successful signature for. You can sign the message "hello" and that'd still prove you knew the private key for the public key that the recipient is expecting the message to have been signed for.

It explains it a little better further down in that document. It says:

  A pedersen commitment can be proven to be a commitment to a zero by
  just signing a hash of the commitment with the commitment as the
  public key. Using the public key in the signature is required to
  prevent setting the signature to arbitrary values and solving for the
  commitment. The private key used for the signature is just the
  blinding factor.

So your commitment to zero will be P = xG + aH, and since a=0, that simplifies to P = xG. Therefore the public key is P and the private key is x.

So you sign the message H(P) using the private key x. The recipient will know P, and will check the signature, which will prove x was known. Proving x was known proves that the commitment must have been a commitment to zero, because the private keys for Pedersen Commitments to non-zero values can never be known (because H=yG where y is unknowable).

Using H(P) as the message prevents attacks.


Does my mnemonic seed ever need to be updated? I seems like it was only 24 words in the past, and now it's 25. Will it change again and how can I prepare for this, specifically if I have a cold wallet that isn't connected to Simplewallet?

There always exists the risk that the seed words will change. However, because the words correspond to a 256 bit integer which is itself the spend key, I believe as long as you're able to obtain the same version of simplewallet that you used to generate the key, you should be able to restore your wallet.

Additionally, it is possible to restore a wallet without the mnemonic if you have the private spend and view keys. So if you're worried about the mnemonic scheme changing, you should store the private spend and view keys as numbers will never change.


Commitments for RCTTypeSimple transactions Looking at the code, and after reading a post on the subject, it looks as if transactions of type RCTTypeSimple (multi-input, RCT) get new commitments with new blinding factors for the inputs.

Doesn't this mean that the sender can get creative about the input amounts?
There is no way of verifying that they match the previous outputs ...

That additional commitment used in the "RCTSimple" scheme is called "pseudo output". And the short answer is NO: the original input commitment and the pseudo output commitment are guaranteed to commit to the same amount. Below is why.

Suppose the sender's input commitment C consists of the mask (aka. blinding factor) x and the committed amount a:

C = x*G + a*H

The pseudo output is a commitment to the same amount but with a different mask y chosen by the sender:

D = y*G + a*H

The sender forms a ring signature by randomly choosing decoy outputs as ring partners. Let's say the ring size is 5 and the commitments in the ring are denoted as C1, C2, C3, C4, C5 and the sender's commitment is in the second place in the ring, i.e. C2 = C. The ring signature is formed with respect to public keys defined as:

P1 = C1 - D
...
P5 = C5 - D

Importantly, the sender knows the secret key of P2 as x-y because D is a commitment to the same amount as committed to by C. From the verifier's perspective, the fact that the ring signature of pubkeys P1,...,P5 as defined above checks as valid proves that one of C1,...,C5 commits to the same amount as committed to by D.


Additional keys/commitments for MLSAG There is one thing I don't understand about the MLSAG signature.

The additional public keys mixed into the signature ring, must correspond to real unspent outputs in the blockchain, isn't it?
Otherwise one could identify them as just obfuscating keys.

But in that case traceability will increase over time, at the pace those additional outputs are spent.

S. Noether's paper is not very clear at this respect, so perhaps I'm not interpreting this correctly ...
Is there another source that could shed light on this issue?

Kurt

There are in-depth ways to answer your concerns, but it seems like you probably already understand most of it already, and it's just a matter of stepping back and seeing the whole picture.

There are very, very few instances now where outputs can be shown to be provably spent. For this reason, it's not fair to assert that traceability will increase over time.

It is true that there are cases where outputs can be shown to be provably spent.  One such example would be when ring members were all outputs from a prior ring with only one ring member.  This type of situation did happen prior to the enforcement of a mandatory minimum ring size.

Since the hard fork / protocol upgrade in September 2017, there has been a manadatory minimum ring size of 5.  Though through mere chance the occasional output in a post-Septemer 2017 transaction may be shown to have been provably spent, a series of events allowing for that would be exceedingly (though, for me, unquantifiably) rare.


Why were Monero Disposable addresses dropped? Do disposable addresses have any use cases that cannot be handled by sub addresses?

If so, exactly why was development of of disposable addresses dropped? How could their use have a negative impact on-chain transaction linkability?

Disposable addresses require the sender to use an unencrypted payment id specified by the receiver.

This means that if funds are sent to a disposable address more than once, an observer can tell that two transactions on the blockchain have the same recipient  because both transactions will share the same payment id. It may have been difficult to educate people that they should not give out the same disposable address to more than one person, and that they should not receive multiple payments even from the same person to any particular disposable address.

Subaddresses can be used instead of disposable addresses, can be safely reused, and can be combined with encrypted payment ids if necessary. The advantage of disposable addresses though is that unlimited disposable addresses can be issued without any kind of "counter" being used.

A counter needs to be used with subaddresses because to check for incoming funds to a subaddress, a lookup table of subaddresses needs to be generated prior to scanning the blockchain for incoming payments. Lookup table generation is a one-off operation (when you first create a wallet), but it does take a few seconds per 10,000 subaddresses to be generated for the lookup table. Therefore you can't just pick a large random number to generate a one-off subaddress that is unlikely to clash with a previously issued subaddress. A counter needs to be used to ensure the subaddress you generate is both unique and within the bounds of your lookup table.

It is possible that disposable addresses may be introduced in the future if there is a strong use case for them that outweighs the risk of their accidental reuse.


Kovri / Sekreta development status I'd like to know if somebody has a current update on the development status of Kovri. As far as I know Anonimal (the lead dev of Kovri) is currently trying to push Sekreta as an alternative for Kovri.

I really liked the idea of Kovri as a lightweight C++ implementation for I2P. Are there any statements that the community is still committed to finishing Kovri or any reliable information about the dev status? I couldn't get much info about this from their gitlab page.

Kovri appears to be dead. However, there are two other projects that have been active w.r.t. Monero+i2p ambitions: i2p-zero and tini2p.

There is also now i2p support merged into the Monero master code and will be in the upcoming point release. Details on the new flags are in ANONYMITY_NETWORKS. Once released, you can immediately make use of i2p-zero and Monero (or if you build master, you can make use of this now).

There is no relationship between Sekreta and Monero currently. Note that Sekreta is not an alternative to an i2p implementation, it still relies upon secure networks such as i2p/tor; more information of which can be found in the project details.

UPDATE Jan 2020

So Anonimal has still been working on Sekreta (and Kovri to a lesser extent) - there is now a Monero pull request currently open for review.


Pass data from sender to receiver in a transaction I want to pass data from sender to receiver in a transaction.
I need to make a URI with a description field, but one that the receiver can't read.
I've tried to create an old style payment ID (32 chars), but the new style payment ID accepts only 16 chars.
Do you have any ideas to solve this problem?
Thanks a lot.

I've tried to create an old style payment ID (32 chars), but the new style payment ID accepts only 16 chars.

Old style payment IDs were removed several versions ago as they were unencrypted and made transactions stick out like sore thumbs, which is precisely something we want to avoid.
Hence they were removed.
So now, every tx has an encrypted 8 byte payment ID; which if the sender doesn't set, a dummy/random one is attached instead. This means every tx has an encrypted payment ID now, so they are effectively indistinguishable.

I want to pass data from sender to receiver in a transaction.

Monero is not some general purpose blockchain or messaging protocol, it's private digital cash. Thus if you want something to transfer arbitrary data, I suggest you use one of the myriad of other technologies to do so.
If you just need to privately tag a tx, use the 8 byte encrypted payment ID and keep track of that externally. For example, you could place an external database table's row primary key in the payment ID. Or alternatively use a subaddress.


Is there a way to make a public transaction? Let says I want to send 1 XMR to Alice, and I want to prove to EVERYONE that I sent that 1 XMR to Alice without giving them a view-key or anything. Is this possible, and where could someone view the transaction?

The view key would not allow you to prove you made that transaction. To prove that you sent those monero to Alice you'd need to provide the Tx Private Key, the recipient's address and the transaction hash to the people you want to prove that the payment was made.

You have to setup your wallet to save the Tx Private Keys using a switch that I can't really remember now.

There is an online tool run by one of the coreteam members (luigi1111) that lets you check that: XMR Tests. (Since the moneroblocks.info lazy maintainer is yet to add SSL to the API, you can save the page and run it from your own computer)


How will Lightning effect the privacy properties of Monero? There's a lot of talk about using lightning to scale Bitcoin by allowing payment channels, But Bitcoin has a lot of properties that don't easily translate to Monero.

The primary concern for me seems to be that opening a payment channel itself would leak info, I.P. address, send address to the processor, I2P can fix the IP address issue, but leaking send address could allow processors to censor tx's.

Is my thinking correct? is there something I'm missing, how can Monero maintain it's permissionless and fungible nature using payment channels.

To be clear, I'm not talking about on just blockchain privacy, my problem is how can we insure privacy off the chain as well, opening a payment channel implies off chain communication via lightning, In a Alice <-> Bob <-> Eve payment channel the assumption is that Bob pays Eve on Alice's Behalf, but that implies all 3 parties required to share info off chain about amounts, receiver, etc.

Note that the Lightning Network spec is still in flux with compatibility only for Bitcoin and Litecoin currently being developed.  Monero is not compatible with the Lightning Network (lacks script support, has different timelock model, multisig works differently, etc), therefore this question makes little sense today.

That being said, the Lightning Network protocol (for Bitcoin) will enable Onion Routing which will help aleviate the IP address concern.

Subaddresses should aleviate the concern about addresses being "leaked" as they can be single-use.

There is some concern about how a long-lived payment channel might allow greater passive surveillance (transaction correlation) than is currently possible in Monero's on-chain transactions, so we'll have to see how this unfolds.

Note: if you are interested in something "like" Lightning then that may be feasible in the near future.  Still, none of this is currently the focus.


Starting with Monero - verification? Do you need to verify your identity somehow when creating a monero wallet or buying/selling/sending monero?

Thanks

When creating wallets and sending Monero you DO NOT need to identify yourself.

Personally I prefer to use the CLI wallet, This is typically how I create my wallets.

However, when buying and selling Monero, you typically will go through an exchange, this is the point where you will usually have to identify yourself to some degree.

Transacting in Monero SHOULD BE secure as Monero's key value proposition is to obscure your transactions (sending and receiving) using Ring CT.


Where to find my private key on monero gui? I'm new to this so I was wondering where to find my private (view)key in the Monero gui win x64. thanks!

Under Settings tab, click on the Show seed & keys button at the top. And watch your back - as it will show the seed and all the keys, you don't want someone seeing / recording this from behind your back.


How to get an external wallet to work on monero-wallet-cli? I generated a wallet using https://moneroaddress.org/, and want to get that wallet to work using monero-wallet-cli (or anything else that I can actually spend monero on). What's the best way to do that?

Currently the client says that I have no balance (after having run restore-deterministic-wallet, and so I assume it can't find the wallet.

If you've imported it by running the monero-wallet-cli --restore-deterministic-wallet, it should be ok. To check, just type in the address command while your wallet is running and compare the address vs. the one you used. If they match (and there's no reason they wouldn't) you will be able to see your balance after refreshing the wallet and spend your Monero.

However, note that for the correct balance to show, your wallet needs to search the entire* blockchain for Monero belonging to you. The command to do it (if not done automatically) is refresh. This is because Monero is private and you can't just look up the balance of an address like people are used to doing with Bitcoin, because your address never actually appears on the blockchain.

*To make syncing the wallet faster, and if running version 0.10 of the sofware, you can start the CLI wallet with --restore-deterministic-wallet --restore-height <h> arguments, where <h> is the block height from which it will start the refresh.

You can follow these steps:

Start the Monero daemon and keep it running. This is your node which needs to be synced with the network before you can make any transactions. You could connect to a remote one to avoid this if you need to, but then refreshing will be slower and it is less private.
Find out the block height from when you created your wallet. You can do this by filtering the blocks by date on a block explorer, and writing down the block height of a day before you created the wallet or received your first Monero to it.
Start the CLI wallet with --restore-deterministic-wallet --restore-height <h> arguments, where <h> is the block height from which it will start the refresh. Note that if you specify a block height which is after you first received Monero, you will not see those because the wallet will not be aware of them.
If your daemon is running, the wallet should start to refresh automatically (to make it refresh manually, just type in the refresh command), and shortly after, you will see your transaction appear and the wallet will show the correct balance. From there, you can use the transfer command to send your Monero.


How to simulate (or set up) localhost as a mining pool for XMRig miner? I am trying to run Xmrig miner to run without connecting to an online mining pool. Is it possible to simulate a mining pool (authentication and wallet) using localhost in windows? My goal is not to mine any real coins but to make Xmrig miner to run without wallet and online miner pool. I set up localhost and tried to run it with test username and password. But two things happened:

Huge pages are available but not enabled?
It says

  [localhost:80] JSON decode failed

Your best bet is to install one of the XMRRig supported pools if you are wanting to test localhost.

For large page support, I believe you just need to run the app as an administrator. Information on the XMRRig project page https://github.com/xmrig/xmrig#huge-pages-unavailable


What ports should I forward on my router to be most useful to the network? I'm running monerod --rpc-bind-port 18081 --restricted-rpc, and want other people to be able to sync off my nodes. If I port-forward on my router, which ports should I open?

Edit: According to https://canyouseeme.org/, I already have port 18080 open. It seems monerod created this automatically. Am I already good to go?

As I answered to your previous question, you do not need to forward any ports for the p2p interface. This is the interface nodes use to send each other data, such as blocks. transactions and peerlists. Other nodes can sync with you fine without router port forwarding because when you initiate an outbound connection to a peer, it is kept open, thus data can be both sent and received. More important for p2p traffic is how many connected peers you allow and how much bandwidth you allow. Settings already explained.

Wallets however need to talk to nodes over the RPC interface. Thus, if you want to help wallet users who don't run their own node, you can forward the RPC port to your RPC listening port (in your example this is port 18081). This you do on your router, normally under a section named "port mapping" or similar. You will be filling in details to tell your router to "make requests coming to port 18081 go to computer your.local.ip port 18081"


Can the concept in a hardware wallet like ledger unplugged be ported over to Monero I'm not a expert but it seems to me that since the source code is out there for the ledger unplugged it might not be that hard to port over. I think that it would help with large investors to feel comfortable with monero. I really like it , it's easy to use and feels very safe to me and can fit in your wallet. Any info or feedback is appreciated

I'm not a expert but it seems to me that since the source code is out there for the ledger unplugged it might not be that hard to port over.

That might be the case if Monero was a Bitcoin clone. However Monero uses a completely different codebase than Bitcoin. The Ledger firmware that works for Bitcoin is completely different than what would be needed for a Monero implementation.

If there is sufficient demand for another hardware option after the Monero Trezor firmware is merged by Satoshi Labs then maybe a Monero developer would consider working on Ledger firmware at that time. Monero developer, NoodleDoodle would like to see his Trezor firmware code updated for RingCT compatibility before being merged. Therefore, a large amount of developer focus given to Ledger is unlikely to come soon.


Results of scalarmultKey in MiniNero and monero-project are different I'd like to create LSAG in C and now I need to calculate ciKi as element in L.
Then, I try an example with MiniNero like below:

K = "210330a31c3caab4087c19fbe770514e5e6b80eda552d1e5f8becabd12c4540e"
c = "30837c72f9e0034f5669d5b122a200565666f6d31ba9a4c707ebfd0860303988"
print(MiniNero.scalarmultKey(K, c))

And I got the answer:

4581d73d76f00df2724d15bca43b4b9d2fe43132e3357449fd61d8d961e36b33

However, I got a different result with my C version...

from_hex(c, 32, "30837c72f9e0034f5669d5b122a200565666f6d31ba9a4c707ebfd0860303988");
from_hex(K, 32, "210330a31c3caab4087c19fbe770514e5e6b80eda552d1e5f8becabd12c4540e");

scalarmultKey((const unsigned char *) K, (const unsigned char *)c, (unsigned char *)result);

for(i=0; i<32; i++){
    printf("%02x",result[i]);

I got the result:

454c7252631ea5dfd757df7048796fef1b5c235191897791afb84417b82f9c7a

where the content of scalarmultKey is:

void scalarmultKey(const unsigned char *P, const unsigned char *a, unsigned char *aP)
{
    ge_p3 *A = malloc(sizeof(ge_p3));
    ge_p2 *R = malloc(sizeof(ge_p2));

    ge_frombytes_vartime(A, P);
    ge_scalarmult(R, a, A);
    ge_tobytes(aP, R);
}

Is there difference between scalarmultKeys in MiniNero with monero-project's.

Please help on this problem.. Many thanks!

As @knaccc astutely points out, your keys are not valid.

An example with valid test keys, in Python:

p = '644206dabcd3014180f120c0d3da7fc167701a310ca520467199fcefbd7e0109'
P = 'c2f9d63a7dbfb73fc24dae28df2ecf5b3667eff59124511fa6735ac848938cce'
print MiniNero.scalarmultKey(P, p)

Outputs:

af16f921de9efbf28ec744dbe927e7592de8ee4fb1f5c6112e3458b00369a0a4

And in C:

key r,p,P;
hex_to_pod("644206dabcd3014180f120c0d3da7fc167701a310ca520467199fcefbd7e0109", p);
hex_to_pod("c2f9d63a7dbfb73fc24dae28df2ecf5b3667eff59124511fa6735ac848938cce", P);
scalarmultKey(r, P, p);
for(int i=0; i<32; i++)
    printf("%02x", r[i]);

Outputs the same:

af16f921de9efbf28ec744dbe927e7592de8ee4fb1f5c6112e3458b00369a0a4


Simplewallet password confirmation during wallet creation I like to use very strong passwords, but occasionally make a typo when entering them. Is there a setting I can use so that simplewallet will force me to enter my desired password twice (and ensure they match) when creating a new wallet?

That feature does not yet exist, but there is an open issue for it in GitHub and a fix is being worked on.

+bool password_container::read_from_tty_double_check(const char *message) {
+    std::string pass1;
+    std::string pass2;
+    bool match=false;
+    bool doNotVerifyEntry=false;
+    do{
+        if (message)
+            std::cout << message <<": ";
+        if (!password_container::read_from_tty(pass1))
+            return false;
+        if (m_verify==true){//double check password;
+            if (message)
+                std::cout << message << ": ";
+            if (!password_container::read_from_tty(pass2))
+                return false;
+            if(pass1!=pass2){ //new password entered did not match
+
+                std::cout << "Passwords do not match" << std::endl;
+                pass1="";
+                pass2="";
+                match=false;
+            }
+            else{//new password matches
+                match=true;
+            }
+        }
+        else
+            doNotVerifyEntry=true; //do not verify
+            //No need to verify password entered at this point in the code
+
+    }while(match==false && doNotVerifyEntry==false);
+
+    m_password=pass1;
+    return true;
+  }


Does monero p2p protocol use magic bytes? Bitcoin (and derived altcoins) use magic byte prefixes to identify their network messages and to distinguish between clients running on different networks/chains such as testnet or an altcoin.  Does Monero use something similar?   If so, what is the value, and where is the code that defines it?

In bitcoin, the value is 0xd9b4bef9 and it is defined at:
https://github.com/bitcoin/bitcoin/blob/v0.16.1/src/chainparams.cpp#L115

Monero uses the Levin protocol for p2p comms.
Similar question here.

The definitions for the commands are here.


Daemon stopped syncing I am using v0.14.0.2-release on Windows, and launching the monerod daemon with ./monerod.exe --block-sync-size=10 --data-dir=/f/.monero/ syncs correctly up to height 1788144. After that, the daemon stops receiving inbound connections and stays stuck there. My current status is

Height: 1788144/1797912 (99.5%) on mainnet, not mining, net hash
619.09 MH/s, v10, up to date, 7(out)+0(in) connections, uptime 0d 0h 0m 17s.

I've already tried deleting the whole .monero folder and sync the whole chain from the beginning, but it seems to get stuck right around there.

I've tried disabling the Windows firewall, the router firewall is enabling inbound connections and I've also tried routing everything through a couple of VPNs (Mullvad and NordVPN) without any change. What else should I try?

Edit: I've also tried deleting p2pstate.bin, with no change.

There are a few things to try in such a situation.

Firstly, remove the argument --block-sync-size=10. The daemon uses a sane default, so this option is not required and could potentially cause issues.

Second, try quitting the daemon, deleting p2pstate.bin, then restarting the daemon. This clears your previously used peers, which may have been the problem.

Third, you can also check the status of your connected peers with the daemon's print_cn command. Look for any particularly slow peers, make a note of their IP addresses, then use the command ban IP. This will ban the peer and a new one will be selected from the peer list.


After bulletproofs upgrade, is scanning of the blocks faster for a balance update? Does bulletproofs speed up scanning of the blocks to get your updated balance?

It greatly speeds up scanning of newer blocks that use bulletproofs. It does not speed up the scanning of the existing blocks if you're refreshing your wallet from scratch.


How can I recover XMR sent to my Reddit account with Tippero? Reddit it currently down. On #Monero IRC they said that it was possible to contact operator of tippero to claim XMR tips even if Reddit was down. How would I go about doing that?

I am not in hurry and will be patience. I trust that Reddit is not an exit scam and will rise from the dead to live again. But please teach me this lesson so I can improve my XMR and Tippero expertise.

If my IRC and Reddit accounts are not linked, how can I recover my Reddit XMR tippero balance if Reddit not work?

I think the only way would be to contact fluffypony or moneromooo on IRC and somehow prove that you were the owner of the reddit account holding the coins. I'm not sure how exactly you could do that if reddit was down at the time, but maybe they would be able to think of something. If they accepted that you were the reddit account owner, then shifting the coins to your IRC account would just be a matter of modifying a couple of database entries.


Monero with Trezor - does the seed phrase provide enough bits of security? Monero seed phrases use 25 words, while Trezor Model T seed phrases have only 12 words. If you generate a Monero wallet using the Trezor, does that mean you're not getting a sufficiently strong private key?

(Monero draws its wordlist from 1626 possibilities instead of Trezor's 2048, but Monero's seed still has 10^40 times the number of combinations as Trezor's).

A Monero private key is any 256 bit number mod l and the seed phrase is deterministically derived from this private key. 24 words (the 25th is a checksum), from the dictionary in Monero, gives enough bits (257) to encode/decode from the 253 bit random private key.

As noted, the Trezor Model T uses a 12 word phrase with a dictionary which is only good enough for 128 bits (plus a checksum). This essentially limits the possible range of private keys.

Longer bit ranges are of course more desirable.

It's worth pointing out that both Trezor devices can be initialized with longer phrases [source]:

  Note For advanced users: It is possible to generate 12, 18 or 24-word
  seeds on both Trezor devices. If you want to generate recovery seed
  with different length than default (e.g., 24 words on Trezor Model T),
  please see initialize device with trezorctl command.

Generating 24 words will give enough range to cover all possible Monero private keys.


XMR cpu mining importance of number of threads? I am using xmrig  as my miner. You can see the details in this link.

I am mining XMR with my cpu with more than one computer. And I've decided to check the results of my two different pcs' performances when I set their threads to different values. (You can see the options of the xmrig.exe in the link).

They both returned different performance rates(hash rates) depending on their number of threads.

Intel(R) Core(TM)i7-6700HQ CPU @ 2.60Ghz 2.60 Ghz

This one had the best performance with a thread number of 8 or 9 threads. They were both very close, around 96 h/s.

Intel(R) Core(TM)i7-4700HQ CPU @ 2.40Ghz 2.40 Ghz

This one had the best performance with a thread number of 5 threads. It hash rate was 130 h/s.

What is the reason behind this?

How can I learn how many threads I should set for different CPUs to get the best performance? I am sure people who are/will be running miners for long term might be wondering this too. How many threads for each different CPU? Also what are the factors that might affect the number of threads that we should be using?

Each thread requires 2MiB of memory. That's because an instance of CryptoNight hash function requires a 2MiB scratchpad. If it can all fit in CPU cache it's way faster since RAM is very slow compared to CPU cache. So, divide your CPU cache with 2 and you'll get the optimal number of threads.

  First, the input is hashed using Keccak [KECCAK] with parameters b =
  1600 and c = 512. The bytes 0..31 of the Keccak final state are
  interpreted as an AES-256 key [AES] and expanded to 10 round keys. A
  scratchpad of 2097152 bytes (2 MiB) is allocated.

i7-6700HQ has 6MB of cache so you should try with 3 threads
i7-4700HQ has 6MB as well

I'd expect you to achieve best results with 2 or 3 threads. If you already tried those, and are still getting better results with more then I don't know. The cache size is a thumb rule, but it could also depend on other low-level stuff which are understood by only a few.

You could also try xmr-stak and compare the results.


Are there Monero developers who also contribute to the development of Bitcoin? I wonder, if there are people who are experts both in Bitcoin and Monero.

Edit: To be more precise – I wonder if there are people who have any commits merged in both Monero and Bitcoin repositories.

There are no contributors of my knowledge in both Bitcoin and Monero.

However Monero has adopted many ideas from Bitcoin which have never been implemented there mostly due to politics around (hard) forks. Confidential Transactions (CT) have been extended and adopted by Monero as RingCT and also the initial idea of Stealth Addresses has been adopted from a proposal to the Bitcoin protocol. Even currently (once again) discussed Schnorr signatures are being in Monero since the first Cryptonote reference implementation.

In general you can say most of Monero's developers are very aware of methods used in Bitcoin but are not contributing to it directly (as of my knowledge). Still Bitcoin or any other open source project can adopt anything from Monero's codebase since it's fully open source.


Monero cli transfer command set lower transaction fee Using the monero cli with the transfer command.

transfer 48aBif46.....Ab1d .001

How can you set a custom transaction fee? What if I made the transaction fee .000001 or even zero?

That's not possible as is: you would need to change the code of the wallet and recompile it. And if you do, your transaction may be rejected by miners (in particular, a fee free transaction is not compatible with the protocol and will always be rejected).

However there are 5 pre-defined fee levels. If you want the lowest fee level, you can use this command:

transfer unimportant 48aBif46.....Ab1d .001

The fee will be approximately 0.003 based on current network characteristics.


Why isn't communication between wallet and daemon encrypted? Best I've heard is that it is to encourage local nodes as using a remote node  sacrifices some degree of privacy and may provide a false sense of security - is there anything more?

Are there any technical roadblocks preventing encrypted communication between a wallet and a remote node?

I'm not qualified to answer this but I'll provide this in answer in the hopes that someone more qualified will step in. There is no reason why you shouldn't connect to a remote node, but any node you connect to (local or remote) should be your own, because you can trust your own nodes. In any case, if the node you are going to connect to is remote, you should encrypt communication from the wallet to it with a tunnel. Once zeromq communication has been implemented, tunneling will no longer be necessary since the communication will be encrypted automatically by zeromq.


What are orphaned blocks? I've heard the term "orphaned blocks" being tossed around here and on Reddit. Can someone please explain what orphaned blocks are and what happens to them?

An orphaned block refers to a block that was originally accepted by the network (a part of the network, anyway) as a valid block with a valid hash and valid transactions.

Due to the physical constraints of computers and the internet, a block that is solved by a miner and contributed to the network is not instantly propagated to the rest of the network.  At minimum, it could take several seconds for data to transfer around the world.  Due to this potential time lag, two miners may effectively simultaneously solve the same block.  There will be nodes geographically closer to miner A than miner B, and vice versa, so the network will be temporarily split into two very similar but different chains, as the nodes broadcast to one another what they believe to be the most recently mined block.

Eventually, one of the two chains will demonstrably have a greater proof-of-work than the other, and the nodes on the other chain will update/reorganize their blockchain records/database accordingly and begin to only accept transactions on the chain with the greater proof-of-work.

Orphaned blocks are the legitimate blocks from the chain that lost out to the chain with a greater proof-of-work.

If a transaction was reflected on the 'B' chain, in an orphaned block, but not the 'A' chain, then once the network subsequently is fully on the 'A' chain, that transaction from the B chain will revert to being unspent (or will have been subsequently mined on the 'A' chain).  Spent outputs do not get lost on a 'B' chain, since the history of any 'B' chain spends is effectively erased once the network accepts the 'A' chain.

(Note, I used 'A' and 'B' for example purposes only, with 'A' as the chain that ends up being the "true" chain, as demonstrated by its greater proof-of-work.)


How to use the electrum seed password in monero-wallet-cli? I am using more and more commands from the cli wallet and am curious about the following when restoring a wallet:

./monero-wallet-cli --generate-new-wallet mytestwallet --password="blahblah" --restore-deterministic-wallet --electrum-seed="$(< mnemonic.txt)"

monero-wallet-cli will then prompt: Enter seed encryption passphrase, empty if none:

1) If I leave it empty, the wallet is generated properly from the specified mnemonic seed.

2) If I enter something a wallet is generated with a different mnemonic seed.

Where in the creation process can I even enter a mnemonic seed password?

Is this legacy for old wallets with 12 word mnemonic + passwords?

You can create an encrypted seed by running the encrypted_seed command in monero-wallet-cli. You will be asked for a password, and the encrypted seed will be displayed. This is an extra line of defense to your seed leaking. Old wallets have 24 words, not 12, and this has nothing to do with them.


What would be the minimum mixin for full privacy? How much privacy does the default (I think it's 4) give?

If not enough, how high a mixin is enough?

It will always be a sliding scale, much like how many confirmations will give me full security? The answer is neither can give you "full" security, but they can make it so that it's enough to thwart even the most determined attacker.

Right now RingCT hasn't been rolled out so privacy is "OK", but once it is in effect it will not only obfuscate better, but also allow users to use much higher mixins without having the transaction size explode.

Really at the end of the day it all depends on your needs, if you send round numbers, a mixin of 3-4 will be fine for a regular user. It you are actively trying to hide your tracks, say from a person you are sending money to so that they can't trace the funds back to your previous transactions, then maybe a mixin of 8 to 10. It all depends on how imminent the intent of unveiling you is and how sensitive the context of the transaction is.


Why is Monero address reuse not discouraged? Many Bitcoin users have been taught never to reuse addresses. Why is address reuse less important for Monero?

Strictly from a privacy perspective what are the advantages and disadvantages of creating a new Monero address for each payment request?

Monero/Cryptonote addresses are conceptually similar to Bitcoin's stealth addresses. The Cryptonote Whitepaper describes Cryptonote addresses in the following way:

  We propose a solution allowing a user to publish a single address and receive unconditional
  unlinkable payments. The destination of each CryptoNote output (by default) is a public key,
  derived from recipient’s address and sender’s random data. The main advantage against Bitcoin
  is that every destination key is unique by default (unless the sender uses the same data for each
  of his transactions to the same recipient). Hence, there is no such issue as “address reuse” by
  design and no observer can determine if any transactions were sent to a specific address or link
  two addresses together.

The key thing to note is that no observer can link two addresses together. However, it is possible for the sender to link payments together if the receiver re-uses addresses.

For example, if you withdraw from ExchangeA using AddressA, and then go on to issue another withdrawal from ExchangeA using AddressA, the exchange will easily be able to link these two withdrawals together by simply comparing the withdrawal addresses (even if you used different accounts). Furthermore, if ExchangeA is cooperating with ExchangeB, it would be possible for both exchanges to link address-reusing withdrawals together.

Additionally, even if the sender is not cooperating with other entities in order to link transactions together, it is still possible for the sender to unwittingly link transactions together if their software is poorly implemented and erroneously re-uses the same random data for multiple transactions. Basically, the receiver is relying on the sender to generate good random data in order to generate a one-time key. If the sender fails to use good random data, then the "one-time" key isn't "one-time", and transactions can possibly be linked.

So, for maximum protection against linkability, it's a good idea to generate a new addresses for transactions that you don't want linked.


My Monero have never arrived from Kraken to my Monero GUI wallet. Please help! this is my first time sending XMR and I am kind of nervous. I recently sent 7.78443 xmr from Kraken to my wallet (Monero GUI) I had downloaded less than a week ago from the official monero site. I read some answers here on reddit and stackoverflow but call me dumb, I didn't find any solution to my problem. Back to my issue, I have not received it and it has had over 50 confirmations on the transaction. The balance still shows 0. I followed a help thread to get me to this site: https://xmr.llcoins.net/checktx.html and my results are:

This address owns output 0 with pubkey: fa252df8966e077f5ee22fd2c66dcbd1ee2b8a9681161c3e86270c0176cf630d for amount: 7.78443

This address doesn't own output 1 with pubkey: a4185caa8abcc1c8d70960ace24ff92e3517503cce7851337adaabc3fddaef18 for amount: Confidential

Total received: 7.78443

Also, I followed the advice from dEBRUYNE and I checked also the xmrchain.net resutlted to the following:

Outputs (2)

output public key   amount  output match?

00: fa252df8966e077f5ee22fd2c66dcbd1ee2b8a9681161c3e86270c0176cf630d    7.784430000000  true

01: a4185caa8abcc1c8d70960ace24ff92e3517503cce7851337adaabc3fddaef18    ?   false

My GUI wallet is fully synced. I cannot seem to find my daemon address though( dEBRUYNE says it 's under the debug info and it  should state localhost (or 127.0.0.1) with port 18081).I see nothing of this kind. It says:

GUI version: v0.12.0.0

Embedded Monero version: v0.12.0.0

Wallet creation height: 0 (click to change)
--blank block to fill in a number--

Wallet log path: --I will not share this one ok?--

Wallet name: --not sharing this one, only if needed--

Daemon log path: --also not sharing this--

I am curious about the wallet creation height that is 0, . Do you think that plays a role in my problem?

Both heights in show status are identical.

What can I do? Can someone help me to resolve this? Thanks in advance

No need guys to answer. After an hour I wrote my question, my problem was resolved . I followed the instructions of the member dEBRUYNE and restarted twice the GUI, first without stopping the deamon and the second time with stopping deamon. I do not know if that was the solution but thank God, my XMR are showing now in my Moner wallet GUI. Yeah!


How MoneroDice is provably fair? MoneroDice is a dice gambling game that uses cryptography for provably fair randomness.

How exactly does it proves its randomness?

A hex string is created using a hash_hmac(serverSeed, clientSeed_nonce) function, where "clientSeed_nonce" is literally the client seed, the underscore character, and the nonce, all concatenated together.

Then five characters are taken from the hex string to create a roll number.

If the roll number is over 999 999 the process is repeated with the next five characters.

The resulting number (0 to 999 999) has a modulus of 10^4 applied to obtain a roll number (0 to 9999), and then divided by 10^2 to get a final result (0 to 99.99).

The nonce is the sum of bets you made with the current server and client seed.

With the nonce you roll results can be verified with this PHP code below

  Verify the roll results of Monerodice.net
  *

  required inputs:
  serverHash = $argv[1]
  serverSeed = $argv[2]
  userSeed = $argv[3]
  nonce = $argv[4]
  *
  outputs:
  server hash correctness
  roll result

code:

  if(count($argv) != 5){
      print "useage: php verifyMonerodice.php serverHash serverSeed userSeed nonce \n";
      exit;
  }

  if(hash('sha256', $argv[2]) == $argv[1]){  //check if hashed serverSeed matches serverHash
      print "Server Hash is correct! \n";
  }else{
      print "Server Hash is incorrect! \n";
  }

  //simulate dice roll to get the exact roll result
  print "Roll result is: " . rollDice($argv[2], $argv[3].'_'.$argv[4]);

  //function which executes dice roll based on your input
  function rollDice($server_seed, $secret)
  {
      $hash = hash_hmac('sha512', $server_seed, $secret);

for($i = 0; $i < strlen($hash); $i += 5)
{
    $sub = substr($hash, $i, 5);
    if(strlen($sub) == 5)
    {
        $decimal_number = hexdec($sub);

        if($decimal_number < 1000000)
        {
            $decimal_fourc = bcmod($decimal_number, 10000);
            $final_decimal = bcdiv($decimal_fourc, 100, 2);
            return $final_decimal;
        }
    }
    else
    {
        break;
    }
}


What is the use of the locked_transfer command in the cli? What is the locked_transfer command used for? I'm assuming you can lock your coins for X amount of blocks before it gets sent to a destination. What are some use cases for this?

You can use that function to transfer a certain amount of moneroj and ensure that the balance at the receiving end will be locked for N blocks.

Say you want to make sure you won't be tempted to sell your moneroj in the next 100 days, you can use this function to transfer moneroj to yourself with a lock time of 72,000 blocks (ca. 100 days). That way, you still own the moneroj but can't access them.

This is the reason why this function was added in the first place as can be seen in the related commit:

  I can see people want to use it as a way to lock up monero savings and not panic sell with large swings in prices.


How much does Mymonero take as fees per transaction? Mymonero charges a fee for each transaction sent from the webwallet? What exactly is that fee and how is it calculated?

According to fluffyponyza the fee is 50% on top of the miner fee (with n fee when and it month hosting costs have been recovered:

  50% on top of the miner fee, so the old fees were 0.01 XMR per kb, and if you used MyMonero it was 0.015 XMR per kb. With the new fees it's 0.002 XMR per kb, and 0.003 XMR per kb with MyMonero. We also have an algorithm to turn the fee off once we've covered our monthly hosting costs, but that's never happened:-P


Why Brick and Mortar Merchants should support Cryptocurrency An observation rather than a question:

I live near Chicago and the banks, restaurants, and other stores that sell goods that are getting robbed are on the rise.

If the stores moved to cryptocurrency, they wouldn't get robbed.

Not only that but if merchants solely accepted payments in crypto, another plus is that PCI-DSS compliance cost associated with accepting credit card payments on a commerce server checkout cart goes to zero. A commerce server has absolutely no need to store any private keys online. The same applies to a brick and mortar checkout station.


How do I delete an account from my monero wallet? Using monero-wallet-gui, I accidentally created an account in my wallet.  Now, I see this account in the account list whenever I use monero-wallet-gui or monero-wallet-cli.
Is it possible to delete this account?  It isn't causing me any real issues, but it is annoying to always see it in the list.

You can't delete accounts/addresses.
That said, if it's bothering you that much, you can of course delete (move/backup first) the wallet and restore a new one from seed words, which will restore your wallet without recreating unused accounts/addresses. Be sure to backup your current wallet so you have access to things like tx private keys, labels etc which also don't get restored.


What is the optimal configure.json setting for mining Random XL using xmrig on Loki? I'm mining on a threadripper 1950x and I followed this guide: https://medium.com/luxor/loki-randomxl-fork-af9b141e492a

I got to the point of mining, but now I want to optimize it further for mining Loki Random XL. Currently it only shows mining with 2 threads at 800h/s. I'm not sure what to change to make use of more threads in my cpu. What are the optimal settings?

  {
    "api": {
        "id": null,
        "worker-id": null
    },
    "autosave": true,
    "background": false,
    "colors": true,
    "cpu": {
        "enabled": true,
        "huge-pages": true,
        "hw-aes": null,
        "priority": null,
        "asm": true,
        "cn": [
            -1,
            -1
        ],
        "cn-heavy": [
            -1
        ],
        "cn-lite": [
            -1,
            -1,
            -1
        ],
        "cn-pico": [
            -1,
            -1,
            -1,
            -1
        ],
        "cn/gpu": [
            -1,
            -1,
            -1,
            -1
        ],
        "rx": [
            -1,
            -1
        ],
        "rx/wow": [
            -1,
            -1,
            -1
        ],
        "cn/0": false,
        "cn-lite/0": false
    },
    "donate-level": 1,
    "donate-over-proxy": 1,
    "http": {
        "enabled": false,
        "host": "127.0.0.1",
        "port": 0,
        "access-token": null,
        "restricted": true
    },
    "log-file": null,
    "pools": [
        {
            "algo": "rx/loki",
            "url": "loki-us.luxor.tech:9999",
            "user": "my_address_here",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": false,
            "enabled": true,
            "tls": false,
            "tls-fingerprint": null,
            "daemon": false
        }
    ],
    "print-time": 60,
    "retries": 5,
    "retry-pause": 5,
    "syslog": false,
    "user-agent": null,
    "watch": true
}

Your fallback rx object only specifies 2 threads with no affinity. Add the following into the cpu object to yield 16 threads with no affinity:

"rx/loki": [
       -1,-1,-1,-1,-1,-1,-1,-1,
       -1,-1,-1,-1,-1,-1,-1,-1
    ],

Replace the -1's with CPU IDs to affine the threads to specific CPUs.

Documentation here.


What is Monero Direct? What is Monero Direct?

What payment methods are accepted?
Who runs it?
What are the fees?
What personal information is required to purchase Monero?

Please provide both a basic description and an in depth description of the type found on Moneropedia

@JustinEU4's answer is pretty good. But to expand on a few details:

1) The site is currently in beta test and this is not the final form of the web site. We are looking for additional payment processors and payment methods to add still. We are focusing on fiat currency methods. We assume if you already own Bitcoin or other cryptocurrencies then you don't need our help to buy Monero.

2) I am one of the company directors. The company owner is an established businessman / entrepreneur doing business for over 20 years in Ireland.

3) OKPAY lists their fees as 0% for these transactions. If you compare their Euro-BTC exchange rate to current rates on common exchanges, it looks like they are taking 5% in the Euro to BTC conversion, and they charge an explicit 1% on their payment checkout page.

4) On an unverified OKPAY account, you have a 300 Euro spending limit. OKPAY sends us everything it knows about you as a customer, however we ignore most of it. (The items sent include your full name and address, phone number, and OKPAY reputation score.) The only thing we parse is your email address, for sending you a transaction confirmation email. We don't store any of your personal details - once the transaction confirmation email is sent, all of your personal information is discarded.


Are there test executables that Monero does not run? For instance core-proxy is an executable under tests and is listed under enabled-tests  but has no add_test call in its CMakeLists.txt. I noticed it with some other folders as well like daemon_tests. Is this intended or am I not understanding something?

There are a few. core_proxy is one. The clt and srv in net_load_tests are others. The C++ functional tests is another. I think that's the whole list.


What are the current staking and mining rewards for the Loki Network as of 2019-May? Loki is a cryptonote coin with staking and mining. What is the staking and mining reward calculation for the Loki Network as of today 2019-May-29? And what will it be in the future?

Per the Loki docs, the LSR calculation is:

15000 + (25007/2^((h-101250)/129600))

Where h is the block height.

E.g. using current height 281798:

$ perl -e 'print 15000 + (25007/2**((281798-101250)/129600));'
24521.1959709724

You can calculate the future LSR by simply increasing the block height.


Why do I see only one transaction key R=rG per transaction while there are multiple output keys P=H(rA)G+B to represent multiple denominations? As I understand from the whitepaper, the sender picks random r to create one-time output public key P=H(rA)G+B, and the public transaction key R=rG is attached to the transaction data. Since any amount sent to the receiver needs to be split into denominations, I thought that the sender needs to perform this P generation step n times if the receiver's amount is split into n denominations. Thus, I'd expect R appearing n times in a transaction. However, I noticed on some blockchain explorers that only one such R (which I think is referred to as "one-time public key" on those sites) is shown per transaction. Am I misunderstanding something?

Here are examples of a transaction 1bedc82fed867eb50681c134df7f4c8c3606397ec00de4306930770cd260866e on blockchain explorers by chainradar and minergate.

I tried to find the answer in the previous posts and found some relevant ones such as this and this, but still couldn't find a definitive answer.

This question was cross-posted to Reddit and was answered by dEBRUYNE_1 citing luigi1111's article:

  You may have noticed that this scheme only gives Alice one output for Bob per r, but with auto-denomination Monero and other Cryptonote coins have many outputs per transaction. To get different stealth addresses for each output, Alice (and Bob) append an "output index" (an output's position in the transaction: 0, 1, 2, etc.) to D before hashing it to create the secret shared scalar f. This is a bit of a clarification to Alice's step 2 on unlinkability. That is, while the shared secret D is already unlinkable to observers, appending an output index allows "unlimited" additional unlinkable outputs to be created from one shared secret (see point 3 in the hash section).


Will it be possible to prune all non-RingCT outputs once we know they are all converted into RingCT outputs? Inspired by this question, I realized that it's actually possible to know how much unspent non-RingCT outputs exist (although we cannot know which are unspent) by checking the total amount converted into RingCT outputs against the coin supply. If it ever happens that all non-RingCT outputs are converted into RingCT outputs, shouldn't it be possible to prune all non-RingCT outputs from the blockchain?

Also as a side note, in order to promote such conversions, would it be possible to incentivize it in some ways, e.g., by allowing the fee for such conversions exceptionally small or even zero?

This would be possible only after every single one is spent. Given the extremely high likelihood that at least one output is lost (private key lost), it seems that it's unlikely to yield any benefit, though it seems it could be done per denominations, and there could plausibly be some denominations where all could be spent. Unfortunately, those are likely the ones with few outputs in the first place.


Forgot to use Payement ID when transferring eth to Monero I forgot to send a Payment ID from Eth to Monero (via ShapeShift) and now the monero doesn't show up in my wallet (I use Monero's own wallet). ShapeShift says it is up to the monero wallet support to help me as the transaction went through they informed me. Who can help me on this matter?

Payment ID is used to know from where the payments had came from, if the case was you where sending monero to shapeshift you where forced to use payment id, so shapeshift know that the transaction came from you, for receiving moneros on your own wallet this is not mandatory, the moneros should be on your wallet.. is it fully sync?


What are the differences between incoming/outgoing connections? If I understood correctly, a connection is outgoing if it was initiated by my node, otherwise it is incoming. Therefore, I was under the impression that with a fully synced blockchain, you should have many incoming connections (because many other nodes are currently downloading from you) and very few outgoing connections (because your node doesn't need to initiate a lot of connections, since its blockchain is up-to-date).

However, I've been running a VPS node 24/7 for several months now (hence it is fully synced), and at the time of writing it has 20 incoming connections and ~800 outgoing connections (I didn't put any limits on the number of connections).

How to explain such a high number of outgoing connections? Why does my node need to initiate all these connections, if its version of the blockchain is up-to-date?

Your understanding is correct: outgoing connections are initiated by you, incoming connections are initiated by the peer. You can certainly have a peer syncing from you via an outgoing connection though.

The 800 connections is just a bug in the accounting. They're not all actual connections. You can see that using netstat or similar tool.

When a node is synced, it still needs connections to process new transactions and blocks. The default is to keep 8 outgoing connections, regardless of whether the node is synced.


How to decrypt the amounts properly? I'm trying to decode outputs of transactions using the general algorithm described here. It flawlessly identifies my outputs, which proves I properly extract keys from extra and calculate valid Hs(8aR||i), but then I have strange errors with amount decryption.

Most puzzling is that it actually works in some cases, while for most transactions it generates garbled data. Given the simplicity of operation (hash and xor) either I make some stupid mistake or I get invalid amount data from the transaction.

I looked into Monero source code and it seems I don't miss anything in the algorithm.

Here's my Python code snippet enriched with tons of debug prints. Please note I skipped the part of output identification, because it works.

print("    Hs         = {:s}".format(binascii.hexlify(Hs).decode()))    # Hs is Hs(8aR||i)
amount_hs = sha3.keccak_256(b"amount" + Hs).digest()
print("    amount_hs  = {:s}".format(binascii.hexlify(amount_hs).decode()))
print(
    "    enc_amount = {:s}".format(
        binascii.hexlify(output.encamount).decode()
    )
)    # encamount is tx["rct_signatures"]["ecdhInfo"][oidx]["amount"]

# HERE THE PROBLEMS BEGIN

xormask = amount_hs[: len(output.encamount)]
print("    xormask    = {:s}".format(binascii.hexlify(xormask).decode()))
dec_amount = bytes(a ^ b for a, b in zip(output.encamount, xormask))
print("    dec_amount = {:s}".format(binascii.hexlify(dec_amount).decode()))
int_amount = int.from_bytes(
    dec_amount, byteorder="little", signed=False
)
print("    int_amount = {:d}".format(int_amount))
amount = monero.numbers.from_atomic(int_amount)
print("    amount     = {:.12f}".format(amount))

An example of transaction that passes properly:
f4a11b4b3fb38f737d9cdcc088cd11b00379c4106b4e85132c2a8eeea41febfa:

Wallet master address: 56eDKfprZtQGfB4y6gVLZx5naKVHw6KEKLDoq2WWtLng9ANuBvsw67wfqyhQECoLmjQN4cKAdvMp2WsC5fnw9seKLcCSfjj
 Receiving subaddress: 7ACPcxXBfZaPTsfzMXGKYyfhjcQXQYsTYhEfRx4qTb1fJDgK6EHHVHr47PSYpgMAzY1Vza6C7EcF5JQWV1PVckxTBd1CeVc
      secret view key: e507923516f52389eae889b6edc182ada82bb9354fb405abedbe0772a15aea0a
checking tx: f4a11b4b3fb38f737d9cdcc088cd11b00379c4106b4e85132c2a8eeea41febfa
tx has   2 outputs
tx has   1 keys
checking output 0
  checking key 0: 1bd7ed2b23b246e91450e0cf28bb0fed471dec68d222b0f65c79928df73d83df
     Hs         = 52183965dafe3f7a77e5d544420a6fe6a1dcc9ab4a3d2a6a2559cf3639d31e09
     amount_hs  = e3b6b0fbaa7a5d285133dbb985976230a89c07e8392f2cb2b5bf0ccecf814cfb
     enc_amount = 2bb24b8ab57b5d28
     xormask    = e3b6b0fbaa7a5d28
     dec_amount = c804fb711f010000
     int_amount = 1234567890120
     amount     = 1.234567890120
checking output 1
  checking key 0: 1bd7ed2b23b246e91450e0cf28bb0fed471dec68d222b0f65c79928df73d83df
    no match

However, another one fails miserably:
5e149f7f97f55afb99ecdf7836bea6ef9a0e61202ffcd466300da56b2b083c00

Wallet master address: 56eDKfprZtQGfB4y6gVLZx5naKVHw6KEKLDoq2WWtLng9ANuBvsw67wfqyhQECoLmjQN4cKAdvMp2WsC5fnw9seKLcCSfjj
 Receiving subaddress: 79X56BnG8Ji4G7yCeVvrhvJHbbTyf8Y7XHGo7TUvwJRbjhyDcQM36Na7mkyS33S6WpaFt1WKHuq9AQXotpFbhSC3RZEnNV3
      secret view key: e507923516f52389eae889b6edc182ada82bb9354fb405abedbe0772a15aea0a
checking tx: 5e149f7f97f55afb99ecdf7836bea6ef9a0e61202ffcd466300da56b2b083c00
tx has   2 outputs
tx has   1 keys
checking output 0
  checking key 0: 7a4521bc639bc4398bbbd07c89096348d70189a3f69593b248b2a7cd374dab1f
    no match
checking output 1
  checking key 0: 7a4521bc639bc4398bbbd07c89096348d70189a3f69593b248b2a7cd374dab1f
     Hs         = 4e2918eb07facce065c1fcfe610a5b7d18064d64a7b8844d1844872f6d60159f
     amount_hs  = 2c3fbf97e7afe8a91c1ea2366a781335cbfe2ae955f2c35e79c758f57bba4679
     enc_amount = f10a49feef2673e3
     xormask    = 2c3fbf97e7afe8a9
     dec_amount = dd35f66908899b4a
     int_amount = 5376041249427305949
     amount     = 5376041.249427305949

The real amount here is 3.141592653523 but for some reason 5376041.249427305949 appears.

The Hs value in your failing transaction is incorrect. You've written 4e2918eb07facce065c1fcfe610a5b7d18064d64a7b8844d1844872f6d60159f but it should be f9b573a61a7e27c8dc3d48448e4184c117064d64a7b8844d1844872f6d60150f.

This is happening because your Hs function is doing keccak but not sc_reduce32. You were lucky that in the first transaction, the result of the keccak was lower than the "l" value used in sc_reduce32, so it didn't matter in the first transaction that you didn't do it.


How does the get_reserve_proof command work? The documentation of the command is as follows

Command usage:
  get_reserve_proof (all|<amount>) [<message>]

Command description:

  Generate a signature proving that you own at least this much,
  optionally with a challenge string <message>.
  If 'all' is specified, you prove the entire sum of all of your
  existing accounts' balances.

  Otherwise, you prove the reserve of the smallest possible amount
  above <amount> available in your current account.

Does this command prove that the owned outputs are unspent? Mathematically, how does it work?

Yes. It is supposed to be a more privacy-preserving alternative to the previous method of proving the wallet balance to an auditor by giving out the view key and signed key images. (In my opinion, the watch-only wallet feature should only be used for cold signing purposes; i.e. the view key should never be given out to others.) Similar to the previous method, this method also sends out a set of signed key images to the auditor. The biggest difference is that the view key is not given out, and the wallet owner can explicitly control how many key images to include in the set (i.e. to prove for different amounts). In contrast, the previous method of giving out the view key will inevitably allow the auditor to see all the incoming transfers, in the past and forever into the future, which is probably undesirable.

This is the C++ data structure for each item in the set saved in the proof (see src/wallet/wallet2.h):

struct reserve_proof_entry
{
  crypto::hash txid;
  uint64_t index_in_tx;
  crypto::public_key shared_secret;
  crypto::key_image key_image;
  crypto::signature shared_secret_sig;
  crypto::signature key_image_sig;
};

In addition to the signature for the key image, it also contains the shared secret D = a*R with a and R being the view secret key and the tx public key, respectively, along with a signature proving that the signer knows a such that D=a*R without revealing a.


Does Monero have any mobile wallets available? Mobile usage is growing very fast worldwide. Monero transactions should be easy to conduct from any device

Does Monero have any Android or iOS wallets available?
If there are no mobile wallets today, are there any in development?
What unique privacy or security concerns do Monero mobile wallets have?

Does Monero have any Android or iOS wallets available?

No Monero iOS or Android wallet currently existed in the Apple App Store or Google Play Store for a long time with the custodial Freewallet exception related to Bytecoin/Minergate. This wallet has been marked as distrusted by the Monero community in the Monero Reddit wiki:

  Freewallet – Please read through the many threads out there regarding Freewallet, and the selective scam that it plays on its unsuspecting users

If there are no mobile wallets today, are there any in development?

Monero Research Lab researcher and developer Shen Noether, aka NobleSir created beta wallets for both Android and Windows 10 in 2016 but their respective GitHub pages were closed following his MRL departure. Jaxx spent some time working on integrating Monero (for both Android and iOS) but temporarily halted Monero development for technical reasons (development pre RingCT needed to be altered after the v4 fork in January 2017. Reportedly they have now resumed plans to integrate Monero.

Currently Android development is the furthest along for:

Coinomi is reportedly close to completion and in the testing phase
MyMonero is close to complete pending porting iOS code into the Android JavaScript App. Its source code can be found in GitHub.
Official GUI source code can be tested now, with no release dates known at this time
Monerujo is an open source app now available for beta testing in Google Play. Following more testing and bug fixes its developer also plans to add it to F-Droid.

Late stage iOS development has been reported for iOS by:

MyMonero is complete pending a DUNS number required for Apple App Store approval and a possible small delay to ensure simultaneous cross platform release
XWallet is waiting for iOS approval

What unique privacy or security concerns do Monero mobile wallets have?

Privacy concerns are present anytime you rely on the full node of a 3rd party instead of running your own. Some of the mobile wallets listed above allow users to connect to their own server.

Security risks are highest among closed source mobile applications and those which provide your private keys to a third party. Implementation related errors can occur in any application but are more common with apps that have not received sufficient testing, peer review or that require users to complete complicated setup procedure.


If I use the trezor beta and something goes wrong, can I recover my coins with the seed? If I knew that I could always recover my money with my seed, then I wouldn't be afraid to try out the trezor.

Yes, you can always recover your money with the 24 word seed. If your Trezor somehow gets broken, you can get a new one and import the "old" 24 word seed into the new one.

Alternatively, if the firmware somehow becomes incompatible, you can convert your Trezor 24 word seed to a 25 word seed compatible with monero-wallet-cli using this guide. Thus, after conversion, you'd be able to restore your coins with the monero-wallet-cli using the following command:

Linux and Mac OS X

./monero-wallet-cli --restore-deterministic-wallet

This should be done from the terminal from the directory of monero-wallet-cli itself.

Windows:

monero-wallet-cli.exe --restore-deterministic-wallet

This should be done from the command window from the directory of monero-wallet-cli itself.


Is the blockchain size on disk smaller with v0.10.0? The release notes for version v0.10.0 announce "major space saving gains for the blockchain, despite the performance improvements".

How big are these saving gains ?

User /u/blasium reports on Reddit that:

  FYI: The blockchain went from 17 GB to 8 GB for me

The exact decrease may vary depending on your setup (such as OS and filesystem).


What is the difference between "trustless" and "trusted" system? I have read that Zcash is a "trusted" system and that Monero is "trustless". As they are both open source projects, what is the difference. What makes Monero "trustless"?

Both systems are trustless in regards using the cryptocurrency (note that Zcash still lacks enough peer-review compared to Monero so major bugs could exist), the trusted and worrying factor in Zcash, which Monero doesn't suffer, is that you have to trust that the Zcash team is able to properly setup and dispose the so called "SNARK public parameters" that produces a kind of cryptographic "toxic waste" which could make Zcash counterfeitable.

SNARKs require something called “the public parameters”. The SNARK
public parameters are numbers with a specific cryptographic structure
that are known to all of the participants in the system. They are
baked into the protocol and the software from the beginning.
The obvious way to construct SNARK public parameters is just to have
someone generate a public/private keypair, similar to an ECDSA keypair
[*], and then destroy the private key.
The problem is that private key. Anybody who gets a copy of it can use
it to counterfeit money. (However, it cannot violate any user’s
privacy — the privacy of transactions is not at risk from this.)

More information on the setup parmenters and risks can be found here. The ceremony to construct the zk-SNARK parameters involved the participation of 6 people. Since it cannot be conclusively proven that collusion did not (or will not) occur, Zcash users will have to decide whether or not the level of risk being "quite low" (according to Vitalik Buterin) is acceptable:

I actually recommended a different process for the trusted setup - my preference was to not bother with the airgaps, DVDs, offline laptops, etc and make up for it by having 20-30 participants instead of six and make sure they come from different countries, backgrounds, etc. I got this instinct from my experience managing the ethereum foundation wallet - our original setup was 3-of-4 but had lots of fancy secret sharing, encryption, offline signing and other machinery on each device but at one point it nearly broke, and since then we're using a 4-of-7 hot wallet between online laptops, and I feel much more comfortable with the security of the latter. But these are only my views, not shared by everyone, and others of course have different opinions how the risks and benefits should be balanced.
EDIT: just to be clear, I still personally think that the risks of the current setup having been compromised are quite low.

Peter Todd, one of the six participants in the Zcash trusted setup was more critical:


Monerod and wallet fully synced, not recognizing transactions made before the fork as valid Both wallet and CLI are showing the incorrect balance after many full blockchain rescans, trying with the CLI, same result, rescan from genesis block and arbitrary block numbers, same result.

Full balance was there before the fork, and after the fork, a few txns made well before the fork (1 week+) have been rejected which makes up a significant portion of my balance. I know the funds are still there but the wallet cannot "see" them.

x64 ubuntu 18.04, V0.13.0.3, monerod running with GUI on top

Your transaction has an ADDITIONAL_PUBKEYS tag in the tx_extra field. This means it was a transaction with at least two destinations, at least one of which was a subaddress.

These warnings mean that your wallet does not know how to interpret this ADDITIONAL_PUBKEYS tag. Therefore your wallet must be an older wallet version that does not support subaddresses. Please check that you're using the latest GUI wallet.


Listing payments on subaddresses How can I continuously monitor payments sent to my subaddresses? I'm aware of incoming_transfers RPC call but I would prefer a call that allows me to filter by block height (or something else) so I don't receive old payments which are already processed.

See get_transfers. It has the necessary options to filter by height.


Creating a wallet from the command line using monero-cli command? I'm writing up a php script and I want it to execute a monero-wallet-cli command to create a wallet from my private key. I tried to do this via the command line with monero-wallet-cli, but its in interactive mode and I want to be able to stream line this with php where I can pass in a private key and other parameters.

This is all for internal use so its not exposed to the internet.

Use the monero-wallet-rpc calling it's create_wallet method. https://getmonero.org/resources/developer-guides/wallet-rpc.html#create_wallet


Compile any miner into assembly for WebAssembly I am trying to push my own skill way beyond what I should. I'm a moderate web developer with years of experience, but I've recently become more active with code running faster in the browser, which can be done with WebAssembly and asm.js.

Monero is amazing because of it's CPU-only CryptoNight algorithm. I've been wanting to try this out in the browser, without using something like Coinhive. I guess what I really want compiled and working is slow-hash.c but I'm not really sure.

Has anyone ever done this before, successfully, except Coinhive?

i havent seen it implimented in this way anywhere else. there is jsecoin that is emerging with similar setup.
i am no programmer but have been looking at exactly the same thing since discovering coin hive. i think a web page that enables people to use a simple miner like xmr stak cpu would be a great way to get people introduced to monero etc. i would like to set up a page that points to a pool i use instead of coinhive.


Pool live tracker showing different hash rate than the miner log When I look at the pool live tracker, my worker shows about 160H/s currently and about 190 for 1h average. But my miner software is showing the following in the logs:

[timestamp] accepted: 443/443 (diff 0.000), 232.56 H/s yes!
[timestamp] CPU #3: 58.64 H/s
[timestamp] accepted: 444/444 (diff 0.000), 232.66 H/s yes!
[timestamp] CPU #2: 59.25 H/s
[timestamp] CPU #0: 56.87 H/s
[timestamp] CPU #1: 58.47 H/s

Why does the hashrate differ so much? Is the pool cheating, or calculating the hashrate in a different way? I see there is a question about higher hashrate reported by the pool, but mine is showing way less. Is about 30% difference normal?

The logs are from the cpu miner, but the same happens on the gpu miner too. The pool reports way less for the hashrate.

What your miner reports and what the effective hash rate your pool receives are often different. I'd say 10-30% lower than what your machine reports sounds about right, actually.

This is mostly because not every hash your machine produces is accepted by the pool, and so you have a certain threshold of shares that don't get submitted or accepted. The hash rate you see on your pool is an approximate guess at your hash rate based on the number of accepted shares you receive over time.

However, if you did want to test to see if you aren't getting messed around by your pool, try connecting to a different one for a couple of hours and compare results. Also be aware that it is possible that your mining software reports hash rates which are higher than they actually are. Some software providers have been known to do this to give the appearance that their mining software is better somehow.