CLI wallet on Mac unable to connect to local node on RPi So I have a fully synced v0.12.2.0 local Monero node running on my RPi. I am able to connect to this node through my Android Monerujo wallet over my WiFi. I am now trying to connect to this node via the v0.12.2.0 CLI wallet on Macbook. For this, I am running the command ./monero-wallet-cli --daemon-host 192.168.0.yy --wallet-file xxx. However, the CLI wallet is not able to connect to the local node and I see the message -

Starting refresh...
Error: refresh failed: no connection to daemon. Please make sure daemon
is running.. Blocks received: 0

I tried using --daemon-address 192.168.0.xx:yyyy but faced the same result. I am running the local node with --confirm-external-bind parameter. Additionally, I am able to use the same Macbook to connect an Electrum wallet to my Electrum Personal Server running on another RPi indicating that there is no firewall issue. Any ideas what could be the problem?

I saw a similar post here but the accepted solution doesn't seem to work for me.

By default, monerod binds to localhost. So no external connetion will reach it. You need to launch monerod with the flag --rpc-bind-ip=xxx.xxx.xxx.xxx to allow external connections. If you want to open to the outside world, that would be --rpc-bind-ip=0.0.0.0. Of course, you'd also need to ensure your firewall alowed incoming connections on port 18081 (unless you chaned the port via --rpc-bind-port, in which case your firewall should use the port you specified).


I want to view addresses that I've sent payments to in the past? This was working in the past, but I recently did rescan_bc and now when I do show_transfers I can only see amounts and tx_id.

I assume this is related to: When sending monero to an address. Does my wallet keep track of the history of where it was sent to?

So it seems that rescan_bc clears the wallet history?

I often view sent-to addresses to confirm I am sending to a correct address again (to avoid phishing/address swaps). I assume using address_book would be a better option here.

Slowly I am getting the hang of the Monero cli, I am just looking for confirmation on the above. thx.

The set of historical destination addresses is not something that can be obtained from the blockchain, so the only place it is is in your wallet cache. If you clear it, then this info is lost forever. Whether you remove the cache file or restore from seed or run a rescan_bc, it's gone.


What's a quick way to view my Monero Balance without downloading the blockchain? My transaction has been successful, but I'm sitting here waiting for the monero gui wallet to download the blockchain. It's showing my balance as 0 which seems to be a common issue.

This similar question explains how you can connect your GUI to a remote node to verify your balance. For a more technical, but more secure method read about how to use view keys and key images to verify a balance without exposing your private keys to the internet.


Determining the number of available outputs by denomination How can I determine the entire number of available blockchain outputs for each denomination?

Is there a blockexplorer that tracks this data or a bitmonerod command I can use to find the answer to this?

There is a bitmonerod command, output_histogram [[mincount] maxcount], which lists (amount, instances) pairs of outputs on the blockchain. The output is sorted by instances.

output_histogram takes an optional first parameter, which is an instances count minimum cutoff. That is, it will display all amounts with at least that many instances. The second parameter is an optional maximum cutoff. The default is to display all of them. For instance, outout_histogram 5 9 will display a sorted set of amounts for which there are between 5 and 9 intances on the chain, inclusive.

Note that this is rather slow as it reads a lot from the database.

The wallet uses this to determine which outputs can be used for the requested mixin (in that case, assuming a trusted daemon, the wallet will supply the amounts to check, which is a lot faster).


Sidechain with Monero as the base token and Zerocoin as the anonymous token The ZCash protocol has both basecoins which are traceable and Zerocoins which are anonymous. Basecoins can be converted into Zerocoins but the conversion itself is visible on the blockchain.

Could a Monero sidechain be built with Monero as the base token and Zerocoin as the anonymous token?

Would such a sidechain be more private than ZCash itself due to the anonymity that Monero will bring as the base new token?

Essentially I am asking if the ZCash protocol would be more private if the traceable basecoin was replaced with Monero.  Please differentiate your answer as either before or after the introduction of RingCT if it impacts the answer.

Yes it's definitely possible, but why create a whole new coin for that? A better idea would be to create a Zerocoin sidechain (post RingCT) for Monero that allows people to move their Monero into the sidechain, mix it and send it to anyone else on the sidechain, and then pull it back out.

This would avoid the massive risk associated with ZCash's trusted setup because the sidechain would never have much value in it, and so the worst that can happen is an attacker can drain whatever is in the sidechain at the point that they find an exploit.


How much I "deanonymize" transaction when I put my address into "extra" part of a transaction? Does it break untraceability or unlinkability (or something else) if everyone can see the sender's address (or one of the senders because of mixins)?

And I mean doing it for example for every 10th address used in Monero network (only use it with primary addresses, not any sub or ghost addresses).

Btw the extra part is public (not encrypted), just for you to know.

EDIT for knacc answer:

Thanks for the great answer, but when I call

  curl -X POST http://localhost:19835/json_rpc -d
  '{"jsonrpc":"2.0","id":"0","method":"transfer","params":{"destinations":[{"amount":1,"address":"cczJn1gS7VT37m1t5oDUjTFmPZRDSoNq2Bry2JurELfrDfrmqA6z7AVZ2nsKrDo2jTMCt2ZeUaPXN24oxj1y84F75Z1HAVWBKR"}],"payment_id":"000000000000000000000000000000000000000000000000000000000005a1da","mixin":1,"get_tx_key":false,"unlock_time":0,"priority":3}}'
  -H 'Content-Type: application/json'

and then

  ./build/debug/bin/citicashd print_tx
  bf9e43bfbe73b0f27bdc201748b8f039fec740ea7a82b6e8232ee480313a5281

I get a transaction, where I can clearly see the extra

  "extra": [ 2, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 161, 218, 1, 216, 55, 28,
  200, 30, 163, 246, 76, 59, 40, 154,148, 229, 12, 181, 10, 210, 145,
  179, 0, 168, 137, 145, 88, 85, 71, 5, 235, 101, 133, 255, 225, 4, 0  ]

=> 5, 161, 218 is 5a1da and it's unencrypted

It's sumokoin, not monero, but I think it works the same way, so the payment_id is public in both cryptocurrencies.

So should the payment_id be encrypted or not?

If you include your (the sender's) public wallet address unencrypted in the tx_extra field, then for an outside observer, this will not affect untraceability in the sense that it still cannot be known which outputs are really being spent.

However the person that sent you the outputs in the first place could obviously see that when you spend those outputs, you've included your wallet address, and so could infer that it's you that's spending those outputs. Of course they won't know who the recipient of your transaction is, since you'll be sending funds to a one-time stealth address that cannot be correlated with the recipient's wallet address.

It will not affect unlinkability because stealth addresses mean it cannot be known whether you're sending funds to the same person each time or different people each time.

You could encrypt your sender address using the transaction shared secret prior to putting it in the tx_extra field (the transaction shared secret is what is currently used to encrypt payment IDs that appear in tx_extra).

The problem with this, though, is that it's rare to see people place their own custom content into the tx_extra field. Your transactions would therefore stand out.


How to back up my wallet using monero core gui beta? How to back up my wallet using monero core gui beta? I use the windows 64 bits version thank you.

The seed is all you need to restore the wallet. Write it down on a piece of paper. If you want to backup the full wallet history (i.e which addresses you have sent transactions to, and the tx key for each transaction) you need to backup the wallet files. They are usualy located in Documents/Monero on windows, if you didn't choose another location when you created the wallet.


How to view properties of a wallet opened with the monero-wallet-cli How does one view the properties of a wallet opened with the monero-wallet-cli to be able to change settings like ask-password and refresh-from-block-height?

The command to view the properties is the set command. You can access it like this:

./monero-wallet-cli --daemon-host XMR_NODE --wallet-file WALLET_FILE \
    --password 'XXXXX' set

To set a property, you just run the following:

set ask-password 0


What is the best way of accepting payments for listings using monero as payment, converted and paid into bank What is the best way to accept Monero as a payment for listings in small sums of $1 - $30 dollars? I will be selling listing space on a website, like a classifieds site. Most of the listings will be free, but some will be paid for depending on city and classification of listing and number of days.

So the customer should be able to pay online with Monero. The conversion should take place automatically, and I can either accept the Monero in my Android Monerujo wallet, or I may opt to have it converted into GBP and the balance put in my UK account.

I am not a coding expert, and I prefer a simple solution, the listings website will not be Wordpress, but it will be built with PHP and MYSQL database.

Any advice welcome. Thanks.

If you want to get Monero converted to fiat directly to your bank account, you'll want to check out https://globee.com/, which allows your users to pay in several cryptocurrencies and will pay you in your choice of fiat (you can also decide to keep some part of the income in monero if you wish).

Globee offers plugins for various website hosting software (https://globee.com/plugins) but also allows you to use their API directly should you decide to integrate it manually.

For small users, there is a "free" tier, though it will require a $10 minimum price (and will charge 1%, so not actually free, they have to earn somewhere). This might be a showstopper since you mention prices as low as $1.

If this doesn't meet your requirements, then maybe https://github.com/monero-integrations might help, though I think it's Monero only - no fiat conversion.


What do Monero addresses have in common? Monero addresses are very long and are supposed to be random, but I have noticed that all of them start with the number 4. Are there any other similarities shared by all Monero addresses?

A more technical answer on how addresses are generated is provided below, as found here. Any similarities between the addresses are a consequence of how they're created.
As you can see, the first byte is always the same which, when encoded to base58, results in addresses starting with "4".

  To create the actual Public Address, the following is performed:

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


What is a reliable Monero remote nodes that is used in the CakeWallet mobile app? I tried many of the monero nodes on monero world and many of them do not connect reliably when using the wallet cli. I find the cake wallet mobile app remote node to be most reliable. What is the remote node connection?

You can use the following cakewallet remote nodes as used in the mobile wallets:

East coast:
xmr-node-usa-east.cakewallet.com:18081

West coast:
xmr-node-usa-west.cakewallet.com:18081

If your using the monero wallet cli command, you use it like this:

./monero-wallet-cli  --wallet-file=MY_WALLET_FILE --daemon-address
xmr-node-usa-east.cakewallet.com:18081


Is Dash based on CryptoNote or CoinJoin? Is Dash based on CryptoNote or CoinJoin? Is there more than one coin with that name?

If there are multiple coins, which one used the name first?

What is the history between the name usage?

There are two coins with that name. The first is called Dashcoin (DSH) and is a CryptoNote coin that was launched July 05, 2014 as an automated fork of Bytecoin (BCN) without the large premine.

  Dashcoin is a Next generation anonymous cryptocurrency and the first automatically mutating cryptocurrency created with CryptoNote technology. What does this really means? Our network code is always up to date with minimal developer cost and close to 0% errors. You are no longer depending on developers good will

On March 16th, 2015 DarkCoin (DRK) formerly XCoin (XCO) officially announced its rebranding to Dash (AKA Dashpay), effective May 25th, 2015 becoming the 2nd cryptocurrency to use a dash related name. Dashpay uses a modified version of CoinJoin currently branded DarkSend (soon to be re-branded as PrivateSend).

On March 12th, 2015 Dashpay (XCoin/DarkCoin) founder Evan Duffield wrote:

  Months ago the community organically came up with the name “Dash” as a possible re-branding idea of Darkcoin, I took notice of this and the good deal of support it had in the forums. This lead to us researching the Dash brand for a few months. In the process of doing some investigation, we found that there was another company in the financial space that was filing a trademark. This resulted in me buying another coin “Dashcoin” and challenging their trademark application.

Of course his claim of buying another coin Dashcoinis not accurate because you cannot buy the entirety of a decentralized PoW blockchain, particularly one that is an automated fork (no developer needed) with miners who continue to support it. Dashcoin has a small but viable community today, the coin has been mined since its inception and is traded on a major exchange Poloniex.

In reality, Evan Duffield purchased the password to the GitHub repo and a former Dashcoin website from a Dashcoin "maintainer". Many Dashcoin users persevered and simply set up a new website and code repository after the old dev sold his passwords to Evan. Dashcoin has always used the ticker DSH and continues to do so today. Dashpay changed its ticker from XCO to DRK to DASH which it commonly uses today. However naming confusion was renewed when BTC-e preferring 3 letter tickers listed Dashpay as DSH which is the ticker that Dashcoin has used since its inception in 2014.


Why is my ShapeShift transaction being denied? I'd really like to to exchange BTC for XMR. I'm attempting a transaction via Circle.com to ShapeShift.io according to this guide:
https://forum.getmonero.org/5/support/2384/the-easiest-way-to-buy-monero

Circle is currently taking hours to process, only to inform me that it fails. I've only ever exchanged USD to BTC before, so this is my first time exchanging BTC for another currency.

Being unable to find simple, straightforward exchange is a barrier to using these currencies. I'm not looking to be a trader. I just want to exchange BTC for XMR the easiest way possible. I don't know why the exchange from Circle to ShapeShift is failing, but I need something that works.

Is there some alternative method to easily exchange BTC to Monero?

Update: While the selected answer is correct regarding the time limits, this problem is directly related to Circle dot com failing to complete BTC transactions. I have not been able to access my funds since creating an account with them. As for the Monero guide linked to here, I highly recommend using another option if you need to purchase BTC before exchanging for XMR.

Update II: The delays were entirely due to account verification being incomplete. I have since tested and precise ShapeShift transfers are successful and quick.

Circle is currently taking hours to process

There is nothing wrong with using Shapeshift to exchange BTC for XMR. The problem you are having is because of your use of a 3rd party wallet and the resulting inability to reliably send a transaction without delay. According to your comments below I understand you were using the "precise" Shapeshift conversion option which you correctly noted enforces a 10 minute time limit.
Using 3rd party wallet providers can lead to transaction delays for any number of reasons including a sudden spike in user transactions requiring more funds being to be moved from cold storage.
Circle is a 3rd party wallet where it controls your private keys as can be seen from clicking the Circle description on the bitcoin.org choose your wallet page:

Money controlled by a third party
This service has full control over your bitcoins. This means you need to trust this service will not freeze or mismanage your funds. Although this service claims to be providing insurance against failures on their side, you are still responsible for securing your wallet.

Look for wallets where you control the private keys. When you control your private keys, no 3rd party can delay or prevent you from submitting a transaction to the Bitcoin network.
Bitcoin Core is one of many wallets where you have full contol of your Bitcoin:

Control over your money
This wallet gives you full control over your bitcoins. This means no third party can freeze or lose your funds. You are however still responsible for securing and backing up your wallet.

In addition to possible transaction delays (and security concerns) when relying on 3rd party wallets you are also subjecting yourself to censorship. Reddit has countless examples of Coinbase and to a lesser extent Circle accounts being closed because of blockchain analysis. Even if you do nothing to violate the ToS of the 3rd party wallet provider, the parties you send Bitcoin to (or receive Bitcoin from) might thereby giving justification for your account to be closed.


Syncing stagenet daemon I use Monero 'Lithium Luna' (v0.12.3.0-release) CLI only.

I opened another thread that might or might not be related to this one.

I have 3 stagenet daemons running (for testing purpose, not on the same system), all running the version mentioned above.

2 of them show strange logging lines like these:

[94.19.172.18:51393 INC] Sync data returned a new top block candidate: 136994 -> 250777 [Your node is 113783 blocks (79 days) behind]

Strange thing about this message is, that it shows another block height. In between those messages I can find the real log info which says:

[51.15.235.157:57076 INC]  Synced 137854/146135

When triggering the monerod status command both daemons show V1 (see the other thread).
The stagenet daemon not producing such messages shows V7 instead.

This is one obvious difference I could find, but I am not sure what to do about it.

It keeps on displaying those logs even after completing the synchronization. That's why I started all over - to no avail.

Additionally every now and then the following message appears in the logs:

[207.180.196.236:57862 INC]  peer claims higher version that we think (9 for 232290 instead of 7) - we may be forked from the network and a software upgrade may be needed

It looks like the daemons claiming to be 79 days behind have found a peer (or peers) which are running a modified version of the monero stagenet protocol, and are therefore unable to sync. They'll only be able to once they find a peer on the correct chain.

Alternatively, it might be a monero fork (since the P2P comms appear to be compatible) and they incompetently failed to modify the network ID.

To try to get out of this mess, you can try manually banning those peers that claim v9:

ban 1.2.3.4

The IPs are in the messages.

One thing isnot clear: what makes you think some of the logs are not real ?


Should I worry about dust in my wallet? MRL-0004 talks about how if I get sent a weird amount of XMR like 103.32111111, I'll have a weird output of .00111111 in my wallet, and assuming there will be no other outputs of the same amount in the blockchain, it's not possible to mix this output, and if I spend it, everyone will be able to link those two transactions.

But when I look at real transactions like this one, the weird amounts seem to be getting broken into many outputs and I don't see any dust output being created.

What's going on here? When do I need to do something about dust in my wallet?

The behavior in the transaction you linked is a new one. It did not exist at the time MRL-0004 was written.

Now, if you make a transaction now including your 0.00111111 output, it will appear as is as an input to that transaction (and you may have to send it with mixin 0, unless there are two other outputs of that size on the blockchain already). However, should this transaction pay out some dusty amount like 3.32111111, this amount will be decomposed. This behavior has been current since last fork in march 2016.

So if you have dust, you can either spend it with mixin 0 (current simplewallet has a sweep_unmixable command for this), or wait to spend it later. Note that dusty amounts might be mixable. For instance, if several people send an integer amount of monero, and the transfer had to be split into 3 different transactions, all would generate a 0.003333333333 monero output, so that particular amount is likely to have been created several times before that fork.


How can I get the public tx key on private testnet? I built a private testnet with reference to https://github.com/moneroexamples/private-testnet.
I want to check the public tx key of the issued tx, but I don't know how to check it.
I cannot use https://xmrchain.net/tx/[tx_id] because I use a private testnet.
How can I check the public tx key?

The public tx key is contained in the extra field. You can use monero-utils-deserialize to decode it from the transaction's hexadecimal representation, which you can get from the daemon, like this:

In monerod:

  print_tx TXID +hex

(replace TXID with your transaction's txid)

Then, in a shell:

  monero-utils-deserialize --input DATA

(replace data with the output from the previous monerod command)

If the transaction contains a tx public key (and the vast majority do), it will be printed out.

Note that monero-utils-deserialize is only built for debug builds.


When using the android and iOS monero wallets. How does it not send the private spend key to the node to scan the blockchain? I'm curious to how this is done in a secure way when using a mobile wallet on android or iOS. We  have our private spend keys on these devices, but when scanning the blockchain to update your balance, how does it not send these keys to the remote server?

Monero has two private keys, the private spend key and the private view key.

The private spend key is needed for determining whether an output that you own has been spent, creating a key image for when it will be spent, and for signing the transaction.

The private view key is needed for determining whether any outputs on the blockchain were sent to your public address.  In cases where your wallet's blockchain-scanning is delegated to a remote node, the remote node will use your private view key to do the blockchain scanning.

Once the remote node has scanned and provided your wallet with a list of outputs, the remainder of the work happens locally on the device, so the private spend key never leaves the device.


What is OpenAlias and what is its relation to Monero? What is OpenAlias and what is its relation to Monero and its core development team?

How does OpenAlias compare with other aliasing systems?

Which other open source projects have implemented the OpenAlias system?

Is there a way to use OpenAlias with Monero if I do not own my own domain name?

OpenAlias is an alasing system designed to map a domain name to a cryptocurrency address, so that it becomes possible to use those user friendly domain names as addresses.

The basic idea is that domain names are easy for people to remember and map to a particular person/entity. A DNS TXT record (a particular type of data attached to the registration data for a domain) is used to advertise a set of cryptocurrency addresses. A wallet implementing OpenAlias (eg, Monero's simplewallet) will lookup that domain name, find the TXT record, and see the Monero address in it.

The advantages of the DNS route are:
- more user friendly than raw addresses
- registration does not need a blockchain transaction like, for instance, Boolberry's alias system
- prevents "spammy" registration (ie, someone goes and register every single first name)
- support for DNSSEC for authentication and privacy
- an alias can be discontinued or changed
- cross blockchain (ie, you can set up a TXT record with both monero and bitcoin addresses)

Currently, OpenAlias is implemented for Monero (it was originally designed by the Monero team) and Bitcoin (in Electrum). However, it is not intrisically limited to those and could be easily implemented by other currencies.

If you do not have a domain, and cannot add a TXT record to a domain directly, you can apply to an OA service, which allocate you a hostname and associated TXT record. There were two in the past (xmr.link and another I can't recall), but I think they're both inoperative. Maybe a business opportunity ?

See http://openalias.org/ for details.


Why are there so many different amounts received when receiving a payment? Do the amounts received correlate to the mixin level when sent?

When sending a payment, the amounts are split by denominations, such that every single output's decimal representation is made up of a single non zero digit, and zeroes for the remainder.

For instance, 875.4 would be split into 800, 70, 5, and 0.4. If you're sending, or receiving, 875.4, the protocol will be sending these 4 different outputs. The intent is to make it easier to find other outputs of the same amount on the blockchain, so they can be mixed (this will become moot when RingCT transactions are used).

Mixin has essentially no relevance for this (on the output splitting side).


How do I check if monerod is up to date Is there a way to tell if a node I am running is "current" along with the rest of the network?  For example, if I am checking transactions against my node, how do I first ensure that my node's copy of the blockchain is the most current and up to date?

Reason being- I'd like to be able to write a script that checks for this and alerts me if my node is running behind.

There are two ways you can do that:

check your node is at most one or two blocks behind the highest height known in its peers
check whether a new release is available

The first one can by done by running sync_info in monerod, which reports your height as well as that of your peers. The RPC to get that information is sync_info.

The second one can be done by running "update check" in monerod. The RPC to do this is update.


Where can I find a description of the CryptoNight hash algorithm? Where can I find a description of the CryptoNight hash algorithm?

Both a thorough and ELI5 description of the hash algorithm would be appreciated

The description of the CryptoNight hash algorithm and the steps it performs can be found in the code as well as in a written file by the CryptoNote team, which can be found here. Lastly, in his blog, professor David Anderson also briefly describes the CryptoNight algorithm with an accompanying graph that illustrates it. From the blog:

This was a brilliantly designed proof-of-work function targeting the strengths of modern CPUs -- native AES encryption and fast 64 bit multipliers -- tuned to use a scratchpad exactly the size of the per-core L3 cache on Intel CPUs (about 2MB) that someone then wrapped in such a thick blanket of crap it was nearly unrecognizable until you started jumping in, tearing it apart, and putting it back together again.
Here's what it looks like without the crud (diagram shows one round):  Some initial 128 bit values are determined by hashing the block state using a Keccak (sha3) variant - call them A and B.  The big lookup table is also populated using that same state, mixed around using AES.  Then, executed 500,000 times, are rounds of mixing as shown at the right:  Use A to determine a pseudorandom location in the scratchpad, take that, mix it in, AES encrypt it (one round), use the result to determine a second location, use that in a 64 bit multiply, store it back, and repeat.  Elegantly simple.


Duplicate ring members A Monero transaction input's ring signature contains a set of one time output keys corresponding to the outputs of some previous transactions. Such a transaction can have multiple inputs, and therefore multiple sets of old outputs. It would not make sense for any one old output to appear more than once in the bunch of inputs, since an output can only be spent once.

Within a single input's ring, does the core Monero implementation allow duplicate ring members? Within all the rings combined, can a member appear more than once? If either of these rules hold, are they held by the protocol or merely by the standard implementation?

This question corresponds to protocol v12. Were the answers above different in previous versions? (this is not necessary to answer, just curious)

A ring may not include the same input more than once. Prior to v6, duplicate ring members were allowed. This is enforced by the protocol (otherwise it wouldn't be a rule, would it).

Distinct rings in the same transaction may include the same input more than once. This is in fact necessary for the corner case of spending 2 inputs of an amount for which there are 11 instances on the blockchain (admittedly, it could still be rejected and you'd get to spend your outputs separately).


What is "aes_round" in the Monero hashing algorithm? I'm embarking on the fool's errand of attempting to understand the Monero hash algorithm.  Using this link -- https://cryptonote.org/cns/cns008.txt, I'm struggling to understand this step

3. Scratchpad
...
      for i = 0..9 do:
          block = aes_round(block, round_keys[i])

The docs say "SubBytes, ShiftRows and MixColumns steps are performed".  SO which of these function is "aes_round" ?  What would be an example input and output?

An AES round uses the three functions (SubBytes, ShiftRows and MixColumns).

The Wikipedia article on AES has a high-level description of the algorithm and links to the AES standard, reference source code, etc.


Origination of Monero terms and phrases I understand that some Monero terms originate from Esperanto. What is the Monero specific meaning and origination of the following non Esperanto words and phrases?

Is it true?
Soon
Don't buy Monero
Darkflarb
Going full Pegasus

Please add definitions for any additional well known terms or phrases I overlooked.

I agree with the answer of Jolly Mort with regard to answers 1, 3 and 5. I will add an answer for # 2 and 4 and provide some additional evidence to support the answers Jolly Mort provided.

More in the origination of Is it true?

  One last thing: without doing too much language analysis (which is mostly supposition and bullshit), it's easy to see common grammar and spelling fuck ups. My personal favorite is the "Is it true?" question. You can see it in the Bytecoin thread asking if it's Satoshi's second project, in the Monero thread asking if the Monero devs use a botnet to fake demand, and in the Dashcoin thread confirming the donation address (for a coin whose only claim is that they copy Bytecoin perfectly, what the fuck do they need donations for??).

Monero developers are mostly volunteers and have never provided firm deadlines. Since 2014 people frequently asked when an official GUI would arrive. Although a formal explanation is available, saying "soon" became a common response to questions about specific Monero release dates for the GUI or anything else. Those that want a more precise answer than soon, are encouraged to look at progress in Github
Monero speculation has never been encouraged by Monero developers. Instead research, development and buying only for an actual (non speculative) use case has been the standard recommendation to newcomers. Although the "Don't buy Monero phrase" or its equivalent has been used by many Monero community members, this is perhaps the most high profile example from core develer Riccardo Spagni.
On April 1st 2016 (known as April Fool's day in some countries) the operators of Bitcointalk temporarily replaced the name Monero with Darkflarb. Many people found this funny and still occosionally use the name
Nyancoin in 2014 was the first "Full Pegasus" cryptocurrency moment and led to a nearly complete loss of invested capital. AmericanPegasus did take out a loan to buy some Monero for about 40 cents in 2015, but subsequently sold some Monero to pay off some loans and diversify. Reportedly he now owns large quantities of Aeon and has recently expressed varying levels of interest in ETC, SIA, IOC and BCY. "Going Full Pegasus" may also reference the use of large market orders instead of patiently placing small limit orders over time to open new positions. In the case of Aeon (which far less liquidity than Monero) this led  to a large spike in price when he opened his position. Related to this practice is the phrase "Pegasus pump". American Pegasus is quite transparent and often discloses his position. In the case of Aeon his holding remains visible on the Bittrex exchange distribution chart where he has self identified as the largest holder.


How much of the Monero code has been changed since the Bytecoin fork? Is a large portion of the code still 'original' bytecoin code, or has, over the years, with the edition various new features, most of Monero become original code and the remaining Bytecoin code (<20%?) been changed? More to the point, how much remaining Bytecoin code is left still?

This is of course a coarse method, but we can do the following:

Get git to work out who authored a given line for all the lines in src:

$ find src/ -name \*.cpp -o -name \*.c -o -name \*.inl -o -name \*.h | while read f; do git blame -CC "$f";done > full-files

Then check how many of those lines were authored by the pre-Monero authors (anjuarez for the Cryptonote team, and thankful_for_today for the original fork):

$ grep -iE juarez\|thankful full-files | wc -l
22332

And do the same for those lines not authored by them:

$ grep -ivE juarez\|thankful full-files | wc -l
83706

So most of the code was rewritten or modified.

Note that git sees a modification of the line as rewritten, so this may be an overestimate.

You can redo the selection to include other authors, in case there's a significant amount of code written (as reported by git) by another person than amjuarez.

If we include the epee support library:

$ find contrib/epee/ src/ -name \*.cpp -o -name \*.c -o -name \*.inl -o -name \*.h | while read f; do git blame -CC "$f";done > full-files

$ grep -iE juarez\|thankful full-files | wc -l
44115

$ grep -ivE juarez\|thankful full-files | wc -l
87377


Block cumulative size is too big I'm getting this error after upgrading to 0.10.3:

src/cryptonote_basic/cryptonote_basic_impl.cpp:114  Block cumulative size is too big: 165421791, expected less than 132478

Any ideas?

Thanks!

This issue was fixed in a minor point release 0.10.3.1:

  The 0.10.3.1 point release disables a portion of the server-side hash
  cache that was preventing a small subset of nodes from syncing.

https://github.com/monero-project/monero/releases/tag/v0.10.3.1


Which existing hardware wallets have expressed an interest in adding Monero support? Which existing hardware wallets have expressed an interest in adding Monero support?

When will the Trezor code now being tested be made open source?

Has there been any interest from KeepKey, Ledger, Case or any other hardware wallet manufacturers?

The Trezor code will be made open source when NoodleDoodle thinks it is ready.  Currently it is only suitable for testing with very small amounts of Monero because until it is open-souce, it cannot be trustless. SatoshiLabs is willing to eventually update their firmware once the code is open-source and thoroughly tested. NoodleDoodle prefers to wait until after RingCT is released to open the source code designed to support it

  It's just NoodleDoodle's work. I can ask if he'd like to accept donations for it. He said he doesn't want to release the source for the current version with RingCT coming so soon

AFAIK, there have not been any public reports of adding Monero support to KeepKey, Ledger, Case or any other hardware wallet. Most hardware wallet sales are made to Bitcoin users and Monero relies a completely different codebase. In the near term, Monero developers will likely need to write code to enable Monero support from additional hardware wallets. After that happens the companies creating those wallets may consider updating their firmware.


What solutions are there to do a refund of a transaction when sending monero xmr? Since you can't see who sent you monero, what are some of the proposed ways of issuing a refund to users? Say I did a crowdfunding campaign and collected a bunch of monero. How would I refund the users that paid me if my campaign wasn't 100% funded?

Monero's stealth addresses make it impossible for you to know the wallet address of anyone that sends you funds, unless they tell you.

Therefore you need them to prove that they sent you funds, and at the same time tell you the wallet address where they would like their refund sent.

There is a guide to proving payment here: https://getmonero.org/resources/user-guides/prove-payment.html


Why are web miners mostly mining monero? There are a lot of web miners - based on WebAssembly. Most of them mine Monero. Is there any special reason for that?

Monero is one of the coins which use an ASIC resistant PoW algorithm (Cryptonight), which means ASICs for it are expensive to make, so CPU have a good shot at mining it, contrary to most other coins, where ASICs and/or GPUs leave CPUs with pretty much no chance.


Signatures instead of rct_signatures in a transaction I'v noticed that the current version of transaction in monero is now:
vin, vout, extra, rct_signatures etc.
My question is - when I run monero in testnet environment on my computer, the transaction include 'signature' field instead of the 'rct_sigantures' filed, and I'v try to figure out why is that.
From the context of the code I understood that this difference caused by the 'version' field, but I don't understand when 'version' is changed, and if I can use the rct_signatures field from the start (height 0)

Thank you!!!

RingCT transactions are only activated at Monero version "4".

Take a look at testnet_hard_forks in blockchain.cpp, and you'll see that version 4 is configured to activate at block height 801219, and therefore you won't see rct_signatures until that block height.


How much funds or runway does the Monero foundation / marketing department have? How much funds does the Monero foundation or marketing department have to help promote Monero as of 2017-08?

There is no Monero foundation or marketing department. If any funds are gathered, it's for a specific purpose via project-specific crowd-funding platform known as FFS (forum funding system): https://forum.getmonero.org/8/funding-required


How to configure two daemons to use the same database? Do I just have to make sure they have the same data-dir?

With 0.11 (and possibly 0.10.3.1, though I'm not 100% certain this was ready then), there is no particular precautions to take in order to share a database between two daemons. Pointing the daemons to the same directory using --data-dir should be safe. I'm not sure this has been tested a lot, however, so if anything like corruption should happen, please report it to https://github.com/monero-project/issues.


NV or AMD for mining Which one delivers more coins per watt?

AMD or Nvidia? And am I right when I think that always the newest generation of a card is the best for mining?

In terms of raw performance, Nvidia and AMD compare favorably. Once electricity usage is factored in, Nvidia wins out with far higher efficiency in the current round of technology.

http://monerobechmarks.byethost5.com/index.php?i=1

In terms of Nvidia cards, the GTX 1070 seems to be at a good price/performance/efficiency inflection point.


What are the hex representations of the small subgroup curve points on Ed25519? Monero uses Ed25519, which has a cofactor of 8. This means the curve has a prime order l = 2^252 + 27742317777372353535851937790883648493 and the total number of possible points on the curve is 8l. The number of points in the group of the base point is l.

The cofactor results in 4 small subgroups. What are the compressed hex representations of those subgroup points?


How many people own monero? (Sept 2016)
Obviously I'm looking for some thumb in the air estimates as this isn't a 'knowable' figure.  If we look on say the reddit it has ~5800 subscribers which gives us a rough ballpark for the community.  Is there anything other smart way to guesstimate it?

Here's an analysis I did of the monero thread on bitcointalk in May 2016:
https://bitcointalk.org/index.php?topic=583449.msg14785207#msg14785207

You have to figure that the number of posters/subscribers/users has gone up significantly in the last month or so though.


Was there evidence of any ASICS after the new POW upgrade in october 2018? There was obviously ASICS made prior to the 2018 March POW fork, but was there evidence of this for the 2018 October fork?

No hard evidence I'm aware of. The changes this time were made to thwart any ASICs that may have been under development since the last fork. By changing the algorithm every 6 months, this severely impacts the time to develop and ship any new ASICs to market, making it an unprofitable venture. Until we come up with an alternative algorithm (such as the discussed RandomJS), it looks like we'll be changing the algorithm every 6 months to retain the egalitarian nature of mining Monero.


How do you confirm payment via a JSON RPC call? I know you can use e.g. monero-wallet.cli to confirm payment via a payment ID, but how do you do this with a JSON call to the daemon?

There are get_payments and get_bulk_payments JSON RPCs you can send to a running monero-wallet-rpc daemon to get a list of incoming payments using some given payment IDs.

There are some examples at https://getmonero.org/resources/developer-guides/wallet-rpc.html

curl -X POST http://127.0.0.1:18082/json_rpc
     -d '{"jsonrpc":"2.0",
          "id":"0",
          "method":"get_payments",
          "params":{"payment_id":"4279257e0a20608e25dba8744949c9e1caff4fcdafc7d5362ecf14225f3d9030"}}'
     -H 'Content-Type: application/json'

{ "id": "0",
  "jsonrpc": "2.0",
  "result": { "payments": [{ "amount": 10350000000000,
                             "block_height": 994327,
                             "payment_id": "4279257e0a20608e25dba8744949c9e1caff4fcdafc7d5362ecf14225f3d9030",
                             "tx_hash": "c391089f5b1b02067acc15294e3629a463412af1f1ed0f354113dd4467e4f6c1",
                             "unlock_time": 0 }] } }


Wolf GPU miner using CPU? I downloaded Wolfs OpenCL miner (github) and made a .bat file to start it. I noticed that it uses the CPU as well (and on the cmd output it says Capeverde 200h/s and then 50 h/s for 2 cpu cores total 300h/s). When using the miner the CPU usage gets to 50%. How can i disable the CPU mining? Maybe pass something from the .bat file? Im using windows.

Configuration is done  in the file "xmr.conf".

Index "-1" is used for the CPU.

You can disable CPU mining by setting  "threads": 0 in the section with "index": -1


Get Transactions from payment ID I know how to generate payment id and how payment id works. But how can i get all transactions for a payment id from monero wallet CLI. Is there a way to do that? And command for that will be greatly appreciated. Thanks

The payments command in monero-wallet-cli lists the transactions matching specific payment ids.

payments payment_id_1 [payment_id_2 payment_id_3 ...]


Monero setting up a testnet wallet in terminal, can't sync I am currently running Ubuntu 16.04 server with monero-v0.11.1.0.  I successfully downloaded the live chain without problem.  When I tried to download the testnet chain I get over and over:

2018-01-30 03:31:18.531 [P2P2]  WARN    net.p2p src/p2p/net_node.inl:759        [212.83.175.67:28080 OUT] COMMAND_HANDSHAKE invoke failed. (-4, LEVIN_ERROR_CONNECTION_TIMEDOUT)
2018-01-30 03:31:18.531 [P2P1]  WARN    net.p2p src/p2p/net_node.inl:808        [212.83.175.67:28080 OUT] COMMAND_HANDSHAKE Failed

I wanted to set up a test wallet to program and do testing with fake coin.  Is there a way around this?

Also the command I am using is

./monerod --testnet --log-level=1

I wanted to use an rpc wallet for a website to accept monero as hobby project :)

You need a more recent version to use the public testnet. In particular, the public testnet is currently running v7, while 0.11.1.0 only knows up to v6.
At some point, the testnet will also be reorganized as bulletproofs will be moved to v8, and v7 will be re-mined, so be aware that coins you mine on testnet on v7 will go poof at some point.


More cores are better for Monero CPU mining? Considering that I have the same intel processor, but one has 4 cores and the other has 8 cores. It will mine better or its the same?

I know that several parameters are important but consider that every other parameter is the same and the cores are the only difference, which is better?

I would say that it will not automatically mine better. What is important is the cache size of the CPU. You need 2 MB for one thread.

Let's say your cache is 4 MB and you have 8 cores, you still can only mine with 2 threads - or at least having more cores doesn't help.


How does one query the OpenAlias DNSSEC to return an XMR address in Javascript? Is there an example of how one would query the OpenAlias DNSSEC to return an XMR address for a registered alias? And how would one reference an OpenAlias address like http:// ? OA:// ?

To query OpenAlias is to simply perform a DNS query on TXT records for a given domain. These queries can be secured by utilizing DNSSEC.

Full details of implementing (and more) is all documented at https://openalias.org


What are the technical advantages of Ring Signatures (CryptoNote) compared to CoinJoin? What are the technical advantages of Ring Signatures (CryptoNote) compared to CoinJoin?

Which privacy technology provides a higher level of privacy and why?

What is the difference between "passive" and "active" participation in mixing?

Note: this is based on darkcoin's use of Coinjoin, and Coinjoin itself is not necessarily vulnerable to spying by third parties (see the comment below by gmaxwell).

The main difference is whether you are trusting third parties to do the mixing for you, or not. Coinjoin relies on third parties, while cryptonote allows you to do the mixing yourself locally.

In the Coinjoin case, you have to trust the third parties to not log, to perform the mixing, and to be available when needed. In the Cryptonote case, once you have the blockchain, you can mix locally, with cryptographic proof.

In both cases, if you mix an output of yours with N other outputs, the ideal case is that each output is equiprobably mapped to the real output. For Coinjoin, getting more information that equiprobability depends on the above (whether the third parties were honest, kept logs, etc). In the Crptonote case, it depends on cracking the ring signature algorithm, wihch is well understood peer reviewed cryptography.

Other ways to get information over equiprobability typically apply to both Coinjoin and Cryptonote (ie, newer coins are more likely to move).

If we go beyond privacy, then a difference between Coinjoin and Cryptonote mixing is that Coinjoin needs others to mix with you when you do. If nobody else wants to mix coins on friday when you want/need to mix some, you can't mix. With Cryptonote, you can mix alone without interacting with any third party.


How to run monero-wallet-rpc in background without revealing my password to the server? I know that I can run the Monero RPC wallet in the background on Ubuntu by adding a & to the command or by using setsid.

But that would result in me having to use the following code on the command line:

./monero-wallet-rpc --daemon-address node.moneroworld.com:18089 --rpc-bind-port 18085 --wallet-file MyMonero --disable-rpc-login --password MYPASSWORD &

and thus, my wallet password is viewable using htop or other tools. Also, it’s visible in the command line history.

Do you have a better solution?

Thank you!

One possibility is to run it with --wallet-dir option instead. Then use the open_wallet RPC when you're ready to use it.


How will the transition to RingCT work? When Monero implements RingCT, how will the transition be handled?

In particular, how will pre RingCT outputs be migrated into outputs available for use in RingCT transactions?

When someone uses a rct transaction, the outputs are necessarily rct. From hard fork 4 (expected in or around march 2017), both rct and non rct transactions will be permitted. From hard fork 5 (expected in or around september 2017), non rct transasctions will be permitted only if they are spending unmixable outputs (ie, the rules for allowing mixin 0 now).

If you want to make all your outputs rct, you should be able to use sweep_unmixable first, then sweep_all. Assuming you do not have a large amount of tiny inputs, that should make your whole balance only in rct outputs.


What is the difference between v7 and v8? Only the version changes in block.major_version?

const int cn_variant = b.major_version >= 7 ? b.major_version - 6 : 0;
crypto::cn_slow_hash(bd.data(), bd.size(), res, cn_variant);

Am I right?

Is it qualified enough for anti ASIC? and Why?

Thanks.

Biggest change is Bulletproofs:

  Bulletproofs is a highly anticipated form of cryptography that increases the privacy of digital currency transactions while at the same time significantly decreasing their size.

Source

Another change is, globally setting ring size to 11:

  Previously the minimum ring size was set at 7 and optionally users could also choose larger ring sizes. Now for better anonymity the size of the ring signature is globally fixed to 11. With static ring size the transactions cannot be differentiated and this increased ring size increases privacy level.

Source

And finally, changing PoW algorithm from CNv1 to CNv2 to render every known ASIC useless and make it even harder for possible ASICs to be developed.

There are of course other smaller changes but the mentioned ones are the most significant.


Multiple Users Per Node Via JSON RPC I have been looking at the JSON RPC Api for connecting to a Node. Can a node support multiple users connecting to it, all with individual wallets...? I've been looking at https://getmonero.org/knowledge-base/developer-guides/wallet-rpc and it indicates that is support for a session, but I'm not sure how to start a new session.

Does anyone have any examples of doing this...?

A "node" is the monerod daemon. It can support arbitrarily many wallets connecting to it concurrently. A wallet generally supports only one user at a time.


error first running new monero fork build I built a new Monero Fork. Trying to run it for the first time and getting errors:

  2018-07-05
  10:09:30.989  7612    ERROR   cn  src/cryptonote_basic/cryptonote_format_utils.cpp:167    Failed
  to parse transaction from blob

  2018-07-05
  10:09:30.989  7612    ERROR   default src/cryptonote_core/cryptonote_tx_utils.cpp:650 failed
  to parse coinbase tx from hard coded blob

  2018-07-05
  10:09:30.989  7612    ERROR   blockchain  src/cryptonote_core/blockchain.cpp:409  Failed
  to add genesis block to blockchain

  2018-07-05 10:09:30.989   7612    INFO
    global  src/cryptonote_core/cryptonote_core.cpp:525 Loading
  checkpoints

  2018-07-05 10:09:31.305   7612    WARN
    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:74   batch
  transactions not enabled

  2018-07-05
  10:09:31.305  7612    FATAL   daemon  src/daemon/daemon.cpp:194   Uncaught
  exception! batch transactions not enabled

How can I fix this?

See answer here: How to generate a new genesis tx?

your_coin/CMakeLists.txt:102
set this to 0 if per-block checkpoint
needs to be disabled  set(PER_BLOCK_CHECKPOINT 0)


How will the temporal output alignment of ring partners (mixins) be addressed? The Issue: If you only own outputs in a short span of blocks and you spend them, the mixin partners (the fake outputs / ring partners) will be different for each of the outputs and have a blockchain temporal pattern that suggests which inputs are real.

For instance, in this transaction, it can be observed that in each of the 5 inputs, there is 1 output used that was created in the 2016-07-18 to 2016-07-22 date range.

Now, while it is not entirely possible to know that the most recent inputs are the real ones, it is highly probable that they are the real ones and could therefore be used to trace coins.

So the questions.

How will this be addressed in the future?

How can monero users avoid the issue now?

There are three main ways to fix this.

The first one is to attempt to select outputs which are unrelated, if possible. This only works if you are sending an amount of monero that can be represented with unrelated outputs. This means that if you have received a single payment, you won't be able to select unrelated inputs, since they're all related - unless one single input in that transaction is enough. This is partly taken care of by https://github.com/moneromooo-monero/bitmonero/commit/90fb5e411307a949779c65a1931f3462ee3a564d, which selects unrelated inputs first, before falling back to related ones. However, this can only work if you have enough unrelated outputs.

The second one is to add "streaming payments" to Monero. These would split a payment into multiple transactions, such that each transaction has a single input, and these transactions are randomly distributed in time, so they can't be linked together. This is a bit complicated, since it requires the recipient to have a concept of "not received, partly received, received", and it requires things like the wallet staying up long term so that transactions may be emitted over time.

The third one is to select fake outputs to be clustered around each real output. I'm not sure this really achieves the purpose. It might look good visually on the graph (ie, you can't see obvious correlations), but I think a computer will still see correlations just fine.

Once RingCT is in, this problem will also become less acute, since transactions will typically require less inputs, as amounts will not be split by denominations anymore. Howerver, it will still exist to some lesser extent, and that's the reason the patch above was made (and could be improved, I suppose, but it's unclear how right now).

tl;dr: just waiting a bit will fix most of it.


How is Monero going to defend itself against future attacks on the community, politics etc? While Monero has been under attack by trolls since day one and has become quite resilient. Bitcoin and Ethereum communities have lots of tension with corporate takeover and stalling development(divide and conquer is quite common among adversaries). How will this be stopped in the Monero community? The Forum funding system I hope would be able to address a lot of these shortcomings Bitcoin and Ethereum suffer.

EDIT: Not sure why we are downvoting a genuine question, but by 'stalling development' I am referring to the bitcoin ecosystem. General corporate takeover is a threat in both bitcoin and ethereum ecosystems.

I think that Monero community is adamant at keeping the corrupting money away (the kind of money which could force another direction of the project). This is amplified by the fact that many of contributors are already having a steady cash flow by other means, so they can't really be bought easily. There was an interesting related question on whether the developers should be employed full time.

It is in the nature of open source projects that people just come and do what they like to do, by their own free will. Most of the worlds open source projects don't involve money, but solve some other problem, so it's hard to corrupt those. I believe it is important to keep that kind of open source spirit in the Monero community, and so far it looks like it isn't going anywhere :)

Ideally, contributors would be motivated by only wanting to solve a problem, or build and improve something, just because they like doing it. Pick a problem you like to solve, and just go ahead and solve it. If you involve money in the equation, in a way "you will get paid X to keep doing Y" then it becomes a job and it could mean you're not anymore doing what you like, but are forced to do "Y". It would suck - who wants a 2nd job like this, or even to replace the one they're currently doing just to have all this pressure from various "investors" on their back? That's why I get annoyed by people thinking they can "push" for GUI, it shows that they don't respect people's free time or the open source spirit. In the end, it is the beauty of open source that you're free to say "No".

Also consider, that if someone believes in the project and is willing to spend his time and energy working on it, that he probably loaded up on Monero while it was still around 2$/xmr. I mean, if you're investing your time in future of money, you might as well invest some of your money to capitalize on your efforts. I certainly hope that all the contributors had their bags filled before the run up to 10$.

So to answer your question: by maintaining awareness of how money can corrupt, and keeping the spirit of the project going.


Which mining of Monero is more cost efficient CPU or GPU? Which mining of Monero is more cost efficient (both use same expensive energy) CPU (INTEL CORE I3-6300T LOW POWER TRAY PROCESOR - CM8066201927004) or GPU (Nvidia 750Ti)?

I know GPU mining gives you higher hashrate but it also uses more energy.

The NVIDIA 750 Ti returns about 250 H/s with about 60W of energy (hash source, wattage source).

I do not have data on the i3-6300T, but the AMD FX 8350 also returns about 250 H/s (source), and this should be a faster processor than the i3-6300T (I'm guessing 150 H/s). The i3-6300T uses about 30W (source).

Use the Monero mining calculator here to determine which is best for you based on your energy cost.


Computing division of Ed25519 scalars Is there any implementation that computes div(x,y) mod l, where l is the order of the base point G and x,y are from that field (i.e. they are ge), or a function that calculates the inverse of a scalar in that field
(inside the monero code base)?

(I saw that there might exist a function that computes it in the case thatx,y are fe- called fe_invert (or maybe fe_divpowm1?))

Thanks.

No. Bulletproofs currently use used to use openssl's BN API for this, and now use an optimized algorithm for computing the inverse of a set of scalars.


Clean up Monero on Mac OSX I used monero before the GUI came out.
Whenever a new version came out I created a new folder in my home directory and as far as I remember copied the wallet files into the new folder and never deleted the old folders.
Then the GUI came out and I don't remember what exactly I did to get it to open my old wallet because there were some errors initially.

When I close the wallet that is currently open and try to open others, it seems it needs to download the blockchain again?

I have many monero folders and wallet files on my Mac, also in my home directory and I would like to know what actually gets used and what I can safely delete.

When I open the GUI, I can not see what version of Monero daemon it actually starts and I can't see what wallet files are open (exact folder not just the name).

GUI version: 13253c3

Embedded monero version: dd580d7

These don't tell me if I use the latest version or if I need to update.

Where do I see what daemon version the GUI actually uses and in which folder it is?

Can somebody help me to clean this up and offer some general tips how to update the GUI or how to tell the GUI which daemon version to connect to?

What folders can I delete, how do I check which wallet file the GUI actually uses right at the time? (The name when starting the GUI doesn't help because I have so many copies of that wallet by now.)

Thank you

As long as you have the wallet's 25-word mnemonic in a safe place, you cannot lose any funds, even if you remove all the wallet directories. Because, you can always recreate the wallet with the mnemonic. Of course, when doing that, you'd need to rescan the blockchain.

However, keep in mind that only the wallet you're sending transactions from, keeps a cache of the destination addresses. As far as I know, there's no way to sync that between CLI and GUI wallet folders (for the same address). Maybe in the future, one would be able to export and import that …

I am in a somewhat similar situation, starting using the GUI after the CLI. So, I copied the CLI wallet folder for use with the GUI. For past transactions performed with the CLI, the destination addresses are also visible via the History page of the GUI (click on Details there). However, the reverse wouldn't be true. Transaction details for transactions performed from the GUI would not be available if I were to restart using the wallet from the CLI directory. After syncing up, the balance would obviously be the same, but I wouldn't be able to see where I sent money to.

If you "branched" off the wallet directory from the CLI to the GUI (by copying it), there's generally no use in keeping the old directory. In theory, I think you would also be able to use the CLI with the wallet in the directory used by the GUI. You could verify that by making another copy, and then type show_transfers out in the CLI.


LMDB conversion vs downloading from scratch What are the speed and security differences between a pre LMDB (0.8.6) to LMDB (0.9.4) conversion vs syncing the blockchain from scratch?

I have a Linux Ubuntu desktop with 8GB RAM a 512 GM SSD and a blockchain that has not been updated since December 2015.

Security wise, it's the same, assuming you do not disable verification on the conversion process (which speeds up a lot, but then if there are problems, they won't be detected).

Speedwise, it varies. Typically, syncing is faster, as this can do some things in parallel. However, if your internet download speed is pretty slow, or if you can't download much (e.g., you have a data use limit on your internet connection), converting might actually be faster or favorable.

Syncing also has the benefit of having known block hashes for the first million blocks or so, and avoids some checking if hashes match the expected hashes. This is safe, due to hash function properties, and also a fair bit faster. You'll also have to sync about 8 months of blocks afterwards anyway if you choose to convert.

So, in a nutshell, I think your're best off syncing from scratch.


monero-wallet-rpc while running GUI? Platform: Windows
Version: Monero 14.0.2 x64

It seems like due to some recent updates, I'm no longer able to use monero-wallet-rpc to make calls to my wallet while the GUI is running because the GUI has a lock on the wallet file.

Is there a way to simultaneously have the GUI running and make calls using monero-wallet-rpc? Here is the monero-wallet-rpc.log

2019-04-09 14:00:35.448 4620    WARN    wallet.rpc  src/wallet/wallet_rpc_server.cpp:3402   Loading wallet...
2019-04-09 14:00:35.588 4620    ERROR   wallet.wallet2  src/wallet/wallet2.cpp:4585 !is_keys_file_locked(). THROW EXCEPTION: error::wallet_internal_error
2019-04-09 14:00:35.595 4620    ERROR   wallet.rpc  src/wallet/wallet_rpc_server.cpp:3445   Wallet initialization failed: internal error: "xxxxxxx.keys" is opened by another wallet program

To my knowledge, it's never been possible to have more than one process that is using the same wallet at the same time.

Should you need to run both the GUI and the wallet RPC at the same time, you can duplicate (and rename) the wallet files so you use one for the GUI and one for the RPC. They can both use the same daemon and will be operating on the same keys, but independent files. You will still be able to send and receive funds from both, but bare in mind, sending from one wont show in the other without a rescan of spent outputs.

Lastly of course, depending on your use case, you could run one of the wallets as a view-only wallet and the other as a normal view & spend. For this you would create a view-only wallet.


Monero mining speed? Helo Everyone:

I started mining a few days ago from several of my computers (CPU).
I joined moneropool.com, my question is why sometimes when I check my stats on their website it says that I'm mining as low as 300H/s then it jumps to 6 KH/s and it's like that the entire day, how can it change so much??

The only answer I can think of, is that I'm using yam for linux and maybe I'm mining way too much for the developer?? (Using the default mining-params = xmr:av=0&donation-interval=50)

Thanks in advance :)

I suspect that node-cryptonote-pool, that moneropool.com and other mining pools run on, averages your hash rate over too short a time window. If I'm reading the source code correctly, the default is 600 seconds (10 minutes).

(The reason can also be your shares are not accepted. However, that is easy to check in the output of most mining software.)

I calculate my own average of submitted work every hour instead. That produces a number that fluctuates some ±20% compared to the numbers my workers report. I run on 50 cores, + 1 GPU.

These sites have an API where you can poll your own stats. The raw numbers for your own wallet can be extracted via:

https://api.moneropool.com/stats_address?longpool=false&address=[WalletID]

It returns something like:

{
    "stats":{
        "hashes":"841291891",
        "lastShare":"1495972253",
        "balance":"2499455408",
        "paid":"500000000000"
    },
    "payments":[]
}

If you poll every hour, subtract the numbers for accepted hashes compared to last time, and divide by the difference in time, you can calculate your own numbers with a simple python script.


Is there an online block explorer that supports view keys? Is there a block explorer that allows you to upload a view key and view the transactions associated with it? If the view key is public (such as a donation address's view key), there is no security risk involved with uploading it to that service. You could even imagine a service that keeps track of common public view keys.

Is there such a thing?

To my knowledge, there is no such service. Rescanning the blockchain from scratch takes a good bit of server resources, and is definitely not a few simple lookups.

However, I can think of a way, but one which is discouraged (and I don't feel too bad mentioning it here, since it's a paying service).

Generate a view only wallet using the donation address and view key with simplewallet. Run seed to get the matching seed. Import that seed into MyMonero, and pay the 10 monero fee. Wait a bit for donations to show up.

You won't see spends though, since you do not have the spend key. Also, note that incoming outputs may be either donations, or change from a transaction spent by the donation address, so you won't see the total donated unless that wallet never spent anything.


Energy consumed to protect the Monero network Based on typical Monero mining equipment used today, approximately how many Kilowatt-hours (kWh) of electricity are consumed each day in by computers running the Monero cryptonight PoW mining algorithm?

Based on global average energy costs and the above daily Kilowatt-hour (kWh) usage estimate how much money is spent on network energy consumption based on the Monero network hash rate today?

Generally you can simply look at the value of the current block reward as an indication of how much electricity it takes to secure the network. At 8.7 XMR per block it costs about 78k USD in electricity to secure the network each day.

Based on this, lets roughly say it is 0.15 USD / Kwh, so 78k/0.15 = 514,800 Kwh each day.


When does validation of blocks occur At what point does a miner validate blocks shared and created by other miners on the blockchain?

When a block is received while the node is not syncing through backlog, it is validated on the spot. If the node is doing backlog syncing, the block is placed in a queue, and blocks in the queue will be validated in height order.

Since miners are typically always up to date, the former will apply, and blocks will be verified as soon as they are received. "Received" here means the block is complete: it is possible that a block is received which refers to a transaction the receiving node does not know about. In that case, the node will ask for that (or those) transactions(s). Once received, the new block will be complete, and will be validated. Usually, all transaction in a new block are already known, since transactions are propagated before the block.


How to tell if start_mining is mining When I type start_mining, there is no visible indication that anything is happening. Can anyone help with with advice on how to see a visual indication that something is happening?

Note, balance says 0. Typing stop_mining says "Mining stopped in Daemon"

I am using a remote node with monero-wallet-cli.

In the following post Why do monerod and monero-wallet-cli have mine commands?, it says that the show_hr command can be used but this relies on monerod running which, given that I am using a remote node, it doesn't apply.

Check the daemon (monerod) logs. When the node is mining, it prints logs to show it's mining.

  it says that the show_hr command can be used but this relies on monerod running which, given that I am using a remote node, it doesn't apply.

The mining is happening on the daemon monerod (remote or local) and show_hr will indeed show you your mining hashrate.


Given a view key, can you see payment ids? So the view key allows you to see all past and future incoming transfers for the corresponding address. Are you able to read a payment id belonging to a transfer if one was set? Is the answer the same for integrated addresses?

Anyone without the view key can see the 'long' payment ID (64-char hex string). Here's an example:

https://xmrchain.net/tx/09b862419da472c03fc9cb956fc3bd299ec8d36b88a58a79f88c34418de85bb5

Note that it is highly discouraged to reuse the same long payment ID in multiple transactions because those transactions are easily linked. Here's a search result of the long payment ID in the above transaction:

https://xmrchain.net/search?value=cdb2c6283784a99c09b5009f70ad4cd22870ffc46469bafe88cba6f225169b9f

(This unfortunate situation is somewhat inevitable at the moment since some exchanges still support long payment IDs only.)

On the other hand, the 'short' payment ID (16-char hex string) included in the integrated address is encrypted using the ECDH shared secret between the sender and the receiver (rA=aR in the whitepaper). Here's an example:

https://xmrchain.net/tx/c6075864be61c90ed9d1a24c98b1f61c972a9a1a47c3979706c9fff5be0ad3be

The short payment ID can be decrypted only by those having the view key. Thanks to encryption, it is totally safe to reuse the same integrated address in multiple transactions.

So the answer is yes: anyone can read long payment IDs which are unencrypted, and those having the respective view key can decrypt and read short payment IDs.


monero-wallet-cli mining hash rate I am mining from a Remote Node using monero-wallet-cli and using the start_mining command.

How do I find out the hash rate?
How do I maximise the mining to use as much of the CPU as possible?

The wallet does not report on the daemon mining hash rate, you will have to run status in the deamon, or use RPC directly, eg:

curl -v -X POST http://NODEIP:NOTEPORT/mining_status -d '{}' -H 'Content-Type: application/json'

Then replace NODEIP and NODEPORT with the IP and port of your remote daemon.

Note that this RPC will only work if you did not set your daemon to use restricted RPC mode (which is recommended if strangers have access to your daemon's RPC).


Transferring Through Command Line without Syncing Do you have to sync the entire blockchain before transferring from a monero wallet via the command line??

You need to have the wallet sync, but you dont are forced to have the bockchan, you can sync the wallet and transfer from it using an remote node.
When syncing the wallet will run all the blockchain (or from specific high) to check your belonging inputs
When transfering the wallet will ask the node for inputs to mix with yours, this can leak some information from your transactinon and compromise your privacy level


How sweep_all without prompt in CLI? I want run sweep_all command, but I don't want entering password or press "Y" (when prompt).

My guess would be:

set ask-password 0
set always-confirm-transfers 0


What is the best way to help the Monero network? Apart from profitability, for the Monero network it doesn't make a big
  difference if you solo-mine or not.

This answer to Is it better to mine Monero on solo mining or joining a mining pool? suggested to me a new question: which is the best way for a single user to help the Monero network?

Running a full Monero network node?

Doing solo mining? Pool mining?

Or something different.

There are many ways to help the Monero both directly and indirectly.

Run a full node to directly support the network
Donate to the Monero Forum Funding System
Join a Monero workgroup for mining, support, or any others
Participate in many of the Monero forums, such as here on the Stackexchange, on Reddit, Quora, etc
Learn as much about Monero as you can so you can help others
Join a local cryptocurrency/Monero meetup or start your own
Contribute to the Monero Ecosystem project
Run as a solo miner or join a small pool to help decententralization aspects

You could additionally set up a mining rig, to both equalize on profits and make your hashpower of larger significance.


Is there a tool that tells me if my transfer has been used by others in a ring signature? Is there a tool that, given a tx hash and/or a specific output, can search through the blockchain to see if it's been used as input in other transfers? This would preferably not be a web service but something I run offline on my own copy of the blockchain.

You can search the blockchain for your outputs with a given address and view key, but I'm not sure if you can actually determine if a given output has been used in other transactions.

Here are some useful tools.

lmdbcpp-monero
transactions-export


How large is the Monero's sync file? Just wondering, how large is it?

I am kind of on a limited data plan here so I was wondering if I cold be able to download the whole thing before running out of bandwidth.

It's at 14.3GB (16-Jul 2017)

If you're already partially synced, you can first generate the .raw file from the data you already have:

monero-blockchain-export

and then continue downloading only what's missing:

wget -c -O ~/.bitmonero/export/blockchain.raw https://downloads.getmonero.org/blockchain.raw

and finally import the now full .raw file

monero-blockchain-import


Hiding TCP traffic for Monero miners Using Wireshark I have noticed that the stratum protocols transmits the JSON strings without encryption.
Is the amount of network traffic high when mining monero? Is it possible that the continuos tcp traffic is raising suspicions for the internet provider?
If my connection is spoofed, how can I mine in total anonymity?

Maybe the easiest would be to go through VPN, although I don't know exact instructions.

The amount of traffic shouldn't be much considering what's being transmitted and the frequency of it. Possibly increase your mining difficulty so that your miner doesn't spam solved shares every second (which also reduces efficiency of your mining due to communication overhead), but not too much so you don't time-out. Maybe 10s target would be just fine.

There's only one miner which supports SSL connection: https://www.reddit.com/r/Monero/comments/5ow0ch/supportxmr_optimized_claymore_ssl_support/


Why does the stealth address involve a hash function? According to the cryptonote white paper, a stealth address of the form P = H_s(rA)G + B. My question is, why is the hash function necessary? It seems that P=rA + B would work just as well. Using a hash function makes scanning the blockchain for your incoming tx's more difficult, since you have to perform a hash for every transaction on the blockchain.

Give two transactions sent to the same user, P_1-P_2=(r_1-r_2)A=a(R_1-R_2), but I don't see how that opens any attack vectors.

Am I missing something?

In your system although the recipient can still find his transaction using R, he would also need to know r for deriving the corresponding private key.

You could fix that by making r also public, and still only the user would be able to derive the private key ra+b, but then everyone in the network can figure out that the recipient was the address (A,B)... Using the hash eliminates the need to publish r and thus preserves the recipient's privacy.


What is the best way of monitoring if monerod is still running on a VPS server? I have monerod running on my VPS server and would like to know if it ever fails or isn't running. What is the best way to monitor this service and have it alert me on telegram or some other app?

There are lots of ways this can be achieved. The simplest is to make use of the daemons RPC interface and call a method like get_height or get_info. When you start monerod, I'd recommend starting with the --restricted-rpc flag (to restrict it to view only commands). Then just configure your firewall to allow inbound connections to port 18081 (or a different port if you changed from the default via --rpc-bind-port).

As an alternative to opening up for inbound connections, you could write a cron job   that runs on the same host, which again uses the RPC interface, but emails you if there are issues.


Can I copy the .bitmonero folder? I'm wondering: can I save a copy of the hidden .bitmonero folder that contains the blockchain and keep it on my computer, and if my blockchain gets corrupt can I just erase the corrupt one and copy over the new one into the same place to prevent having to wait to synch the whole chain again?

Yes, you can certainly backup the blockchain and restore from the copy if it becomes corrupted. You'd then have to sync only what's been added to it since the last copy.

However, you can't do this without precautions, since monerod will be writing to the database regularly. You need to either exit monerod first, or copy the blockchain using mdb_copy.

You can also use a single backup for multiple machines, though the blockchain will not work on a machine with a different endianness (though it is otherwise compatible with different architecture differences such as word size).


Is the upcoming release of the Monero GUI v0.14.2.0 or v0.15.0? I'm looking/waiting for the version that has the fix which allows the GUI to created view only wallets.

I was using v0.14.0.0 which has the problem and I downloaded v0.14.1.0 and the zip only has a subset of the files/folders that v0.14.0.0 has. Do I copy/paste these files/folders into a folder containing the v0.14.0.0? Is there a release notes file for this release?

At the time of writing, the current release is GUI v0.14.1.0, which can be found here:
https://www.reddit.com/r/Monero/comments/c8eg6k/gui_v01410_boron_butterfly_with_ledger_nano_x_and/
The next release, which is expected to be out soon, is GUI v0.14.1.1. Thereafter, the next release will be GUI v0.15.0.0.

I downloaded v0.14.1.0 and the zip only has a subset of the files/folders that v0.14.0.0 has.

That is expected. The total amount of files was reduced to improve user experience. Put differently, monero-wallet-gui.exe was compiled statically such that the other files did not have to be present in the folder anymore.

Do I copy/paste these files/folders into a folder containing the v0.14.0.0?

No, simply extract the GUI v0.14.1.0 .zip file to a new and separate directory / folder.

Is there a release notes file for this release?

Yes:

Release notes

White theme
Addressbook redesign
History redesign
A check update feature that notifies the user (in the GUI) of a new release
Trezor Model T and Ledger Nano X support
Blockchain pruning
Fiat price conversion
macOS fullscreen support
Various UI/UX improvments
Bug fixes and major performance improvements


How can I submit a transaction created in --do-not-relay mode? I've created a transaction in wallet started with --do-not-relay switch. It landed in raw_monero_tx file.

How can I push it to the network using wallet software? I know about online pushers but want to do it locally.

submit_transfer looks for signed_monero_tx and requires the file to have magic prefix.

The content of raw_monero_tx is a raw byte array of a complete tx that is meant to be passed to the daemon RPC /sendrawtransaction. Here's an example on testnet (you need to have your testnet daemon running by doing monerod --testnet):

~$ cat raw_monero_tx
[encoded data, 4098 characters]

~$ curl -X POST http://127.0.0.1:28081/sendrawtransaction -d '{"do_not_relay": false, "tx_as_hex":"[encoded data, 4098 characters]"}' -H 'Content-Type: application/json'
{
  "double_spend": false,
  "fee_too_low": false,
  "invalid_input": false,
  "invalid_output": false,
  "low_mixin": false,
  "not_rct": false,
  "not_relayed": false,
  "overspend": false,
  "reason": "",
  "status": "OK",
  "too_big": false
}

Note that you need to set do_not_relay to false in order to make the daemon relay the transaction.


Required confirmations before newly received Monero can be spent I do not like to give exchanges the address for my cold storage wallet so I would like to use a webwallet as an intermediary point.

If I request a withdrawal from an exchange to mymonero.com how many confirmations are required before than same Monero can be sent again to my cold storage address?

Received monero can be respent after 10 blocks (see CRYPTONOTE_DEFAULT_TX_SPENDABLE_AGE). At two minutes a block targetted, that means approximately 20 minutes.


How does a wallet check when their output has been spent from the keyimage shown in a tx? How does the wallet check against the key image in a tx that it was them that spent it, given the private/public view and private/public spend?

If a wallet has received an output in the past, that means the wallet will know the private key for that output. This is the case even if you restore the wallet from seed.

The private key for the output is calculated as x=Hs(8aR||i)+b, where a is the private view key, R is the transaction public key published with the transaction, i is the index of the output in the incoming transaction, b is your private spend key, and Hs() means keccak hash the contents and return a scalar (integer).

The key image is calculated as xHp(Hs(8aR||i)G+B), where G is the agreed-upon base point on the ed25519 curve, B is your public spend key, and Hp() means keccak hash the contents and return a curve point.

The wallet checks if the key image of any previously received output is observed to be attached to any transaction it comes across as it scans the blockchain.

The daemon will reject transactions that are broadcast which contain any previously encountered key images. Although the daemon will not know which specific output referenced in each ring that each key image refers to, it doesn't need to know. All it needs to do is reject duplicates.


Recovering Cake wallet from a lost iPhone to MyMonero on Android I'm a new here so please bare with me. I would like to know if both of these wallets are compatible. I don't know much about the tech side but have Monero I need to recover from my lost (or stolen) iPhone. If they are not compatible, what can I do?

I've downloaded the Monero GUI (I hope that's correct), but cannot remember the exact date I created my wallet. I have not yet started the recovery process because it looks a bit intimidating. The more I read, the more I get confused, so I decided to ask my questions here first instead.

Thank you in advance for your assistance.

-Monero Muchacha

The 25 word mnemonic seed provided by Cake Wallet is compatible with MyMonero. However, MyMonero will have to scan the full blockchain looking for transactions that belong to your wallet. This is quite resource intensive and therefore an import fee of 0.1 XMR is required, which has to be paid by another wallet. Put differently, it cannot be subtracted from the current wallet. Note that Monerujo, another third-party Monero wallet for Android, does not require an import fee and the seed is compatible.

  but cannot remember the exact date I created the wallet

First note that for a wallet like Monerujo, you'd have to use a Restore height too. If you don't remember the exact date, you can use an approximate date. If, after the wallet is fully restored, not all transactions show up, you can always redo the process with a lower Restore height. A list of sensible Restore heights can be found here by the way:

What is the relevance of the restore height?

  I have not started the recovery process because it looks a bit intimidating

It is not particularly intimidating if you (i) choose a sensible Restore height and (ii) diligently go through the steps. That being said, if you need any help, you can always open a new thread on r/monerosupport and the community will help you out.


Monero wallet RPC don't work I have a huge problem with the RPC wallet.
It starts ok, tried - - log-level 4 and all goes OK but it does not bind on the RPC port and I cannot send RPC commands. It just stops at Starting RPC server.
I am trying to setup a pool and the pool just says faill at contacting walletd with the wallet response being {}

It can take a while to fully start up, especially on lower end machines.


monero-python "No module named 'sha3'" I have followed these instructions for installing monero-python.
https://github.com/monero-ecosystem/monero-python#development
when i try to call the wallet class in my programs
from .monero_python_master.monero.wallet import Wallet, it can't find sha3. This is the error message i get.

Traceback (most recent call last):
  File "/home/#/Documents/#/Project/Monero Wallet/Code/Layer1/MainWindow.py", line 11, in <module>
    from monero_python_master.monero.wallet import Wallet
  File "/home/#/Documents/#/Project/Monero Wallet/Code/Layer1/monero_python_master/monero/__init__.py", line 1, in <module>
    from . import address, account, const, daemon, wallet, numbers, wordlists, seed
  File "/home/#/Documents/#/Project/Monero Wallet/Code/Layer1/monero_python_master/monero/address.py", line 3, in <module>
    from sha3 import keccak_256
ModuleNotFoundError: No module named 'sha3'

After running pip i have tried copying in the files that it download to where i thought the my program wanted it. this includes a sha3.py file but it still returns the same error.

When i run pytest i get an error that tells me via a "hint" in the output to delete the "pycache" in the "test" after doing that I run pytest again. This time it runs and shows green at the bottom but the percent it shows is 94%. I am wounder if this is because i am missing these files.

Any help would be greatly appreciated. I am not great at using pip so I am wondering if i am using it wrong (im geussing you not ment to copy the files in from monero_python_master/.venv/lib/python3.6/site-packages). Is the sha3 that pip download the one the error is about if so why cant it find it when I moved it in to its directory. I have been able to get the cli working from herehttps://monero-python.readthedocs.io/en/latest/quickstart.html I am using the same command for both "from monero.wallet import Wallet" vs "from .monero_python_master.monero.wallet import Wallet" why do they work differently

This is more of a generic Python question. And the docs are wrong. The last line should be .venv/bin/pytest. I'll correct that.

Also you may just install pysha3 (and other required modules) system-wide from packages that come with your OS. Then you may disregard all lines referencing to .venv


Can I chose my own outputs to mix in a transaction? Will it only be random output to mix in a transaction or can i chose my own?

In theory, you could choose yourself if the software supported it but I don't see much benefit in doing so.

In practice, the current monero-wallet-cli has 2 different transaction building algorithms depending on which transfer command is invoked. The 2 commands for the monero-wallet-cli are transfer and transfer-original. I'm not familiar with how they decide which outputs to pick, though.


monero-wallet-cli and monerod has different block height Running monero-wallet-cli on macOS gives me this error:
The wallet's refresh-from-block-height setting is higher than the daemon's height: this may mean your wallet will skip over transactions

The wallet CLI then quits.
Poking around I have found out that the wallet block height is 2365949, and monerod lists height as 1273180/2365980.
I have tried to do a rescan_bc on the wallet from a lower height, but this has no effect.
So I think maybe I should change the height on monerod.
Looking at the monerod command line options I can't see a way to change it - or is there some other way to solve this problem?

...monerod lists height as 1273180/2365980

Your daemon is not fully synchronized.
When fully sync'ed, you won't get the wallet message mentioned.


Monero v0.11.1.0 CLI Permission denied Hi I'm on a Mac and am upgrading my monerno CLI wallet version to v0.11.1.0. I copied the guide here how to upgrade monero wallet to v0.11.1.0 but when I type this on terminal window ./moneroD I get this error message:

-bash: ./moneroD: Permission denied

When I try to override it using sudo ./moneroD I get this:
sudo: ./moneroD: command not found

How do I fix this?

Permission denied is typically due to... bad permissions, unsurprisingly. You need at least execute permission (for owner if you own the file, for group if you're on its group, others otherwise).

Here, sudo fixes it, so it's likely you don't have read rights on the directory. Fix that. You probably saved this as root, which is a bad idea in the first place. chown will help here (chown user.group monerod, replacing user and group with your own).

Next, command not found means just that. There's probably no moneroD binary in the . directory. Typically, monerod is called monerod, not moneroD. Double check its name.

Last, if there really is a moneroD, then it might be the wrong excutable format (eg, 64 bit if you're on a 32 bit machine, etc). Double check you got the right binary format.

Anyway, this is a UNIX usage question, not a Monero question, so if further help with this problem is needed after those things are checked, you will be better off asking a UNIX/Mac stack exchange (assuming any further problems aren't Monero ones).


Why Monero used to split amounts by denominations? I'm reading about Monero and the CryptoNote paper in general. I somewhat understand both the stealth addresses and the ring signatures.

Reading this stackexchange I've encountred several times that Monero outputs used to be split by denomination and that this is not the case any more due to the RingCT feature deployed in early 2017.

I'm still curious though, what was the rationale behind the denomination splits? I guess this was to somehow obfuscate the amounts being spent, could you provide more details?

The splitting by denominations was indeed intended to allow ring signatures to easily find other candidates to sign with.

Pre-ringCT, a ring is made up of a number of inputs, possibly one (just the one that's being spent), or more. In order to verify that no money is being created from thin air, all inputs in a ring must have the same amount, since you can't tell which one is actually spent. In fact, technically, it would be enough to say that the smaller amount in a ring is used to prevent money creation, but then there is very strong monetary incentive to not lose money by selecting fake outputs with a lower amount than the real output, so you'd end up with ineffective ring signatures if you did that.

Now, if each transaction was sending amounts as is, you'd typically have two outputs per transasction: one which is the actual payment, and a change output. The actual payment would typically be a nice round amount (ie, please pay only 1.95 for our widget!), while the change would be weird amounts, as it'd be the result of subtracting the fee from whatever input sum you had, and the fee has more decimal places, typically.

This means you'd end up with a wide range of output sizes on the blockchain, and, in turn, it'd be pretty hard to find other outputs of the exact amount you need to sign with.

Therefore, splitting by denominations ensures that even weird amounts such as 8.54753282 end up creating "simple" amount outputs.

With rct, since amounts are encrypted, we don't need inputs to be the same amount anymore, since we rely on commitments to ensure no monero is created out of thin air without knowing the actual values.


Auditing outgoing transactions in Monero So I know that a view key is not suffice to audit outgoing transactions.
Still, can't a person re-sign his outgoing transactions and produce a valid ring signature with the same key image to an auditor?

Yes, this is called a SpendProofV1 and is implemented by the official Monero wallet. See this answer: What is the "SpendProofV1..." or "OutProofV1..." in the details of a sent transaction in the GUI?


How do I create a Monero testnet wallet address and account? I have already downloaded the Monero software. It includes monero-cli-wallet, monero-gui-wallet, monerod, monero-wallet-rpc etc.

How do I create a new wallet using using these tools?

Using GUI Wallet I am not able to change to Testnet. Is there any way to change the network type?

How do I setup a daemon for a testnet wallet using monerod/monero-wallet-cli?

You could do something like this (Linux shell):

export NETTYPE=testnet
export WALLET=my-${NETTYPE}-wallet

monerod --detach --${NETTYPE}

monero-wallet-cli --${NETTYPE} \
    --use-english-language-names \
    --generate-new-wallet ${WALLET} \
    --create-address-file \
    --password 'secretpassword'

Your public address will be in a file my-testnet-wallet.address.txt

Don't forget to copy your mnemonic seed words to a safe place


If I compile from source, how can I change default wallet and daemon 10-block lock time? Before I go further, I'll point out:

This is procedure could put one's privacy at risk.
This would cause a tx to fail more often in the case of a chain reorg.
There's likely more than two consequences of doing this. (Feel free to point them out.)

Let's say I'm comfortable with cloning the git repo and building Monero from the source code.  Let's also say that I want to experiment with the occasional item here and there, and my current curiosity is the 10-block lock time.  What variable(s) in the code requires editing to change this value?  Further, in what file(s) can I find where this variable is set?

All that's required is to change one line of code in the cryptonote_config.h:

#define CRYPTONOTE_DEFAULT_TX_SPENDABLE_AGE             10

and build with the new value.


Monero Applications Development I'm a software engineer (Mobile/Native) with interest in cryptocurrency.

I would be interested in taking pet projects for monero, but, i've read recently that the jaxx guys halted the monero's wallet implementation due to lack of API support.

Makes me wonder, if the current state of monero is still too volatile for application level clients to be easily implemented.

Anyone knows anything related to this?

Cheers
Bruno

According to the bottom of this CoinTelegraph article:

  The Jaxx team clarified that they halted work on Monero due to recent
  protocol changes that caused difficulties, and because the integration
  had gone significantly over time and budget, and was therefore
  hindering development for the 1.2 release.

There was a large divide in the community, and I speculate that Jaxx did not fully understand how to work with Monero. The protocol change they are likely referring to is RingCT, which they probably did not understand the large impact the change would have when they first began development. If you are interested in an approach for a project, c789 listed several resources in their post. Furthermore, I would suggest asking technical questions in the Monero StackExchange, community consenss questions in Reddit, and developer help in the #monero-dev IRC. While people will not write code for you, they can point you in the right direction.