How do I set Google Chrome new tab page to Monero Stackexchange URL?

Search for "Blank New Tab Page" extension which allows either blank pages or a specific URL to be utilized.


Long, unencrypted payment IDs have been removed from Monero since v0.15. Only standard addresses, subaddresses and integrated addresses (which embed an encrypted payment ID), can be used now.

Binance have announced (2019/11/28) that they will be supporting the update and will be following up with further details when they reopen deposits and withdrawals for XMR.


Is there a guide available for generating and parsing integrated addresses?

There is an RPC command make_integrated_address to make an integrated address with the wallet:

https://getmonero.org/knowledge-base/developer-guides/wallet-rpc#makeintegratedaddress

Basically, you send the wallet the payment_id and it sends back the integrated_address for the address associated with the wallet.

There is not a command line function to do this, at least not yet.


Why do we have MLSAG when we only need two keys?

We have to sign over more than one set of keys - the private keys for the inputs (real and decoys) and the private keys to the corresponding commitments.

An MLSAG signature fulfills this need - a signature over a set of N key vectors, not simply two keys. It is used to prove the signer knows the secret keys to an entire key vector.

Section 2.2. in the original RingCT paper describes this:

  The intent of the MLSAG ring signature is the following:

  • To prove that
  one of then signers knows the secret keys to their entire key vector.

  • To enforce that if the signer uses any one of their m signing keys in
  another MLSAG signature, then the two rings are linked, and the second
  such MLSAG signature (ordered by the Monero block chain) is discarded.


A proxy doesn't mine. You also don't need a pool to mine. A pool proxy needs a pool.

If you want to solo mine with a collection of your own computers, you have a couple of options. You could set up your own private pool or use XMRig on each computer and connect them directly to your own Monero daemon. Both of these options effectively have you solo mining with a bunch of your own computers.


Invalid rpc-bind-ip address when using a bash script to pass node IP to the --rpc-bind-ip argument

Firstly your bash script is invalid:

you are missing do after the for line
monero should be monerod
you would also need the --detach option, as without it, monerod is running interactively.

Next, your script is actually trying to launch 10 instances of the daemon on a single machine. Not 10 machines each running monero. Also, these 10 instances are each trying to bind the RPC server to separate IP addresses on this same single machine, and I doubt very much you have 10 addresses assigned to your ethernet card(s) on this single machine.


How the H_p(x) (Hash to a point on the curve), is calculated in Monero?

Hash to point first uses keccak, and then interprets the result as an EC point. The point is multiplied by 8 to ensure that the point is in the group of the base point G. You can see the implementation in the Monero codebase here: https://github.com/monero-project/monero/blob/8f6f674753bae7494e1ee4569004947d47a4e983/src/crypto/crypto.cpp#L481


In Monero can you sweep a wallet if you *ONLY* have the private spend key?

Yes. In a nutshell, the spend key is deterministic and therefore you'd be able to derive the private view key. Subsequently, you can generate the public counterparts by multiplying the private keys with the base point (G). Lastly, using the public spend key and public view key, you can construct the public address.

Thus, to answer your question. Yes, you can sweep all coins from an address if you merely have the private spend key.

A more theoretical explanation about how "How Cryptonote Addresses Are Created" (and thus why you are able to sweep all coins from an address if you merely have the private spend key) can be found here. To quote:

  Cryptonote Public Addresses differ in several ways compared to Bitcoin. First, Cryptonote uses two keypairs, known as the spend keypair and the view keypair. Furthermore, these keys are
  EdDSA (specifically ed25519) keys, whereas Bitcoin uses ECDSA (specifically
  secp256k1) keys. Finally, Cryptonote Public Addresses are direct representations of the pair of public keys, whereas Bitcoin (and clones) uses a hash of the single public key. EdDSA keys (both private and
  public) are 256 bits long, or 64 hexadecimal characters. Not every 256-bit integer is a valid EdDSA scalar (private key); it must be less than the "curve order". The function to do this is labeled
  sc_reduce32.

  To add to the confusion, there are presently at least three different methods of private key derivation in existence for Monero (and other Cryptonotes), though Bitcoin also has many:

  Original (non-deterministic) Style – The Private Spend Key and Private View Key are both independently and randomly chosen to form an account. You can simulate this above by pressing the "Random" buttons next to fields 3. and 4., then pressing "Gen 5.", "Gen 6.", and "Gen 7.", in that order. There is no good way to back up a non-deterministic account other than keeping copies of the files; you need to have a copy of both private keys, but presently only MyMonero will accept the two keys as input instead of a seed/wallet file. For these reasons, it is not recommended to use an account of this type.
  Mnemonic (Electrum or Deterministic) Style – In this style, the Private View Key is derived from the Private Spend Key, so you only need to remember one thing: the seed, which is actually just a representation of the Private Spend Key itself. This 256-bit scalar can be easily converted to a "24-digit" Base1626 "number" in the form of a mnemonic seed, which is 25 words long with the last word being used as a checksum. Mnemonics convert on a ratio of 4:3 minimum: four bytes creates three words, plus one checksum word; eight bytes creates six words, plus one checksum word; and so on. The "seeds" created by this method will always be valid scalars as they are sent to sc_reduce32 first. The Private View Key is derived by hashing the Private Spend Key with Keccak-256, producing a second 256-bit integer, which is then sent to sc_reduce32. You can test out this style above by pressing the "Random" button on the upper right, or by pressing either of the "Random" buttons next to fields 1. and 2., then the various "Gen x." buttons. You can backup accounts of this type by writing down or otherwise saving the 25 word deterministic seed; you can easily restore using both Simplewallet and MyMonero.
  MyMonero Style – This is similar to 2., but uses a 13 word seed instead of a 25 word seed. The 13 words convert to a 128-bit integer that is used for both spend and view key derivation, in the following form: the 128-bit integer is hashed with Keccak-256 to produce a 256-bit integer, a. a is sent to sc_reduce32, which returns the Private Spend Key. a is hashed once more with Keccak-256 to produce a second 256-bit integer, b. b is then sent to sc_reduce32, which returns the Private View Key. You may have noticed a critical difference between this style and the Electrum Style: MyMonero's Private View Key derivation is done by hashing random integer a, while Electrum Style derivation is done by hashing the Private Spend Key. This means that 13 and 25 word seeds are not compatible – it is not possible to create an Electrum Style seed (and account) that matches a MyMonero Style seed (and account) or vice versa; the view keypair will always be different. You can test out this style above with the "Random MyMonero" button. To backup MyMonero accounts, save the 13 word seed; you can currently "restore" using MyMonero only (you're really just logging in) – Simplewallet does not currently support 13-word seeds.

  Above we discussed the different ways private keys are derived; the rest of the address generation process is the same in all three cases. The Private Spend Key and Private View Key are sent to the ed25519 scalarmult function to create their counterparts, the Public Spend Key and Public View Key. 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).


How do I get the account_index parameter for the wallet RPC?

Every wallet has a main account at index 0. If you created other accounts in the wallet, they also have an index, as shown in the wallet. Using get_balance, you can even omit the field account_index as it will default to the main account (index 0).


What is RingCT and how does it compare to Confidential Transactions?

RingCT is based on the Confidential Transactions research you cited (combined with ring signatures)

RingCT just like Confidential Transactions hides the amount of each transaction. Unlike Confidential Transactions, RingCT will also make the payments unlinkable.

Confidential Transactions include a cryptographic proof that the sum of the input amounts is the same as the sum of the output amounts, without revealing the actual numbers. You are still able trace which address sent and received BTC.

RingCT protects the privacy of more than just the transaction amounts. Monero transactions are already untraceable thanks to ring signatures and unlinkable thanks to stealth addresses. There are also plans to use I2P to protect IP address with the Kovri C++ router project.


Can I use a copy of a blockchain created on Mac OS X, on an offline Ubuntu (ARMv7) box?

The answer to the subject is already here Is the raw Monero blockchain file different for Linux, Windows, or Mac?

There is nothing to import if you just copy the monero data directly.


Can't create transaction: internal error: Daemon response did not include the requested real output

You can open a 0.11 wallet with 0.13, but not the other way around. The format was updated, and encryption was strenghtened. Once you've updated, you can't go back.

Are you using the same daemon version as wallet version ? If not, that's probably the problem.

In particular, a 0.11 daemon will not be able to sync current blocks, so will not know about any newer output of yours.

For the record, for a testnet wallet (which is not your case here, but putting it here in case people find this), then the problem may also be that you had outputs on the old testnet chain, as it was reorganized after a small consensus change in bulletproof format.


How to create a cold storage & watch-only wallet

Monero Cold Storage, Monitoring, and Spending Guide (MS Windows) - Part 1: Creating The Wallet

Create a bootable USB drive. Follow instructions here.
Get the latest Monero Core binaries. If you followed step 1. to the letter, you will need Windows 64-bit binaries. Extract from .zip and copy them to your bootable drive.
Reboot into your USB drive. When it boots, you will be presented with a console. Initially, you should see:

X:\windows\system32>wpeinit

X:\windows\system32>

Change drive to your USB drive by commanding d:. Note that it could be some other letter depending on your system configuration. After commanding d:, command dir and you will see a list of files & folders on the drive which can tell you where you are and if d: is the correct drive. To help with this, you could also start notepad by commanding notepad and then select File->Open which will let you browse your computer using the standard folder picker, and help you understand which is the correct drive. Close notepad and type the correct drive letter:

X:\Windows\System32>d:

D:\>

Change working folder to wherever you copied monero binaries to. For example, type cd d:\_tools\monero.win.x64.v0-10-1-0\. Note: you can use TAB to auto-complete folder names, just type in the first few letters and push TAB to cycle through suggestions.

D:\>cd _tools\monero.win.x64.v0-10-1-0

D:\_tools\monero.win.x64.v0-10-1-0>

Type monero-wallet-cli.exe. Again, TAB works to auto-complete, so just type mon and hit TAB a few times until monero-wallet-cli.exe appears.

D:\_tools\monero.win.x64.v0-10-1-0>monero-wallet-cli.exe
Monero 'Wolfram Warptangent' (v0.10.1.0-release)
Logging at log level 0 to D:\_tools\monero.win.x64.v0-10-1-0\monero-wallet-cli.log
Specify wallet file name (e.g., MyWallet). If the wallet doesn't exist, it will
be created.
Wallet file name (or Ctrl-C to quit):

Type in your wallet file name and press Enter.

Wallet file name (or Ctrl-C to quit): myWallet
No wallet found with that name. Confirm creation of new wallet named: myWallet
(Y/Yes/N/No):

Type Y and press Enter to continue.

(Y/Yes/N/No): Y
Generating new wallet...
Enter a password for your new wallet:

Type in your password. I advise to type some long gibberish here as you don't really want to save it anyway but it will get saved automatically (to your USB drive). If you type a lot of random characters, it will be impossible to crack open even if saved. Note: you could decide to save it and use this USB as your cold storage instead of paper. If that is the case, set some strong password you will remember and make sure to NEVER PLUG THIS USB INTO A RUNNING SYSTEM if you want to keep it cold.

Enter a password for your new wallet: ****
Confirm Password: ****

Pick a language for the mnemonic.

List of available languages for your wallet's seed:
0 : English
1 : Spanish
2 : German
3 : Italian
4 : Portuguese
5 : Russian
6 : Japanese
Enter the number corresponding to the language of your choice: 0

Your wallet will have been created. Below is the console output.

Generated new wallet: 48LQ1ohLKvvfNv2Kesy1gEe4jm2TfUexM2yS2hGjqLanHt9xbAKZ
Bsj8cyvRiHFmUPFpQwCP9jFm3BXsVAEHBEAQFT6u2cT
View key: 42f04a74bdb49c157fc40b36ea79b1766c2a6c1951b9fe8fa6e9a0fb57ee4809
**********************************************************************
Your wallet has been generated!
To start synchronizing with the daemon, use "refresh" command.
Use "help" command to see the list of available commands.
Always use "exit" command when closing monero-wallet-cli to save your
current session's state. Otherwise, you might need to synchronize
your wallet again (your wallet keys are NOT at risk in any case).

PLEASE NOTE: the following 25 words can be used to recover access to your wallet
. Please write them down and store them somewhere safe and secure. Please do not
 store them in your email or on file storage services outside of your immediate
control.

fictional aplomb ripped habitat onion zesty foggy tell
dilute nearby ditch autumn ornament muppet sneeze spout
sawmill zinger firm puddle sickness pliers offend oxidant ditch
**********************************************************************
Error: wallet failed to connect to daemon: http://localhost:18081. Daemon either
 is not started or wrong port was passed. Please make sure daemon is running or
restart the wallet with the correct daemon address.
Error: wallet failed to connect to daemon: http://localhost:18081. Daemon either
 is not started or wrong port was passed. Please make sure daemon is running or
restart the wallet with the correct daemon address.
Background refresh thread started
[wallet 48LQ1o]:

You will be presented with your mnemonic seed written below the green text. In our example it's fictional aplomb ripped habitat onion zesty foggy tell dilute nearby ditch autumn ornament muppet sneeze spout sawmill zinger firm puddle sickness pliers offend oxidant ditch.
Write yours down and store safely. Make backups. Unless you choose to save the wallet file, THIS IS THE ONLY THING THAT WILL LET YOU ACCESS YOUR FUNDS. IF YOU LOSE IT - YOUR FUNDS WILL BE GONE FOREVER. It goes without saying that if someone finds it, he could steal your funds and probably get away with it, too.
When in wallet, run the command save_watch_only. You will be prompted for a password. Use a good, strong password. Even if the watch-only wallet can't be used for spending, it will still contain some data which is better kept private.

[wallet 48LQ1o]: save_watch_only
Password for the new watch-only wallet: ****
Enter new password again: ****
[wallet 48LQ1o]:

Type exit to exit the wallet. You will be returned to the command prompt.

[wallet 48LQ1o]: exit

D:\_tools\monero.win.x64.v0-10-1-0>

Result: you will have created 4 files. To see them, command dir.

D:\_tools\monero.win.x64.v0-10-1-0>dir
 Volume in drive D is WINPE
 Volume Serial Number is DEB2-6BBC

 Directory of D:\_tools\monero.win.x64.v0-10-1-0

12/20/2016  06:52 PM              .
12/20/2016  06:52 PM              ..
12/13/2016  06:36 PM        13,497,944 monero-blockchain-export.exe
12/13/2016  06:36 PM        13,561,678 monero-blockchain-import.exe
12/13/2016  06:36 PM         6,785,009 monero-utils-deserialize.exe
12/13/2016  06:37 PM        15,977,627 monero-wallet-cli.exe
12/20/2016  08:29 PM            17,043 monero-wallet-cli.log
12/13/2016  06:37 PM        16,757,062 monero-wallet-rpc.exe
12/13/2016  06:38 PM        57,430,407 monerod.exe
12/20/2016  08:23 PM               702 myWallet.keys
12/20/2016  08:23 PM                95 myWallet.address.txt
12/20/2016  08:28 PM               841 myWallet.keys-watchonly
12/20/2016  08:29 PM               353 myWallet
              11 File(s)    124,028,761 bytes
               2 Dir(s)  31,252,447,232 bytes free

D:\_tools\monero.win.x64.v0-10-1-0>

Delete all the wallet files except the myWallet.keys-watchonly file. The command is del followed by a list of filenames to delete.

D:\_tools\monero.win.x64.v0-10-1-0>del myWallet myWallet.address.txt myWallet.keys

D:\_tools\monero.win.x64.v0-10-1-0>

Command dir to check that they're gone.

D:\_tools\monero.win.x64.v0-10-1-0>dir
 Volume in drive D is WINPE
 Volume Serial Number is DEB2-6BBC

 Directory of D:\_tools\monero.win.x64.v0-10-1-0

12/20/2016  06:52 PM              .
12/20/2016  06:52 PM              ..
12/13/2016  06:36 PM        13,497,944 monero-blockchain-export.exe
12/13/2016  06:36 PM        13,561,678 monero-blockchain-import.exe
12/13/2016  06:36 PM         6,785,009 monero-utils-deserialize.exe
12/13/2016  06:37 PM        15,977,627 monero-wallet-cli.exe
12/20/2016  08:29 PM            17,043 monero-wallet-cli.log
12/13/2016  06:37 PM        16,757,062 monero-wallet-rpc.exe
12/13/2016  06:38 PM        57,430,407 monerod.exe
12/20/2016  08:28 PM               841 myWallet.keys-watchonly
               8 File(s)    124,027,611 bytes
               2 Dir(s)  31,252,496,384 bytes free

D:\_tools\monero.win.x64.v0-10-1-0>

Command rename to rename the generated watch-only keys file to a standard .keys filename.

D:\_tools\monero.win.x64.v0-10-1-0>rename myWallet.keys-watchonly myWallet-watchonly.keys

D:\_tools\monero.win.x64.v0-10-1-0>

Open the watch-only wallet to check that all is ok.

D:\_tools\monero.win.x64.v0-10-1-0>monero-wallet-cli --wallet-file myWallet-watchonly
Monero 'Wolfram Warptangent' (v0.10.1.0-release)
Logging at log level 0 to D:\_tools\monero.win.x64.v0-10-1-0\monero-wallet-cli.log
Password: ****
Opened watch-only wallet: 48LQ1ohLKvvfNv2Kesy1gEe4jm2TfUexM2yS2hGjqLanHt9xbAKZ
Bsj8cyvRiHFmUPFpQwCP9jFm3BXsVAEHBEAQFT6u2cT
**********************************************************************
Use "help" command to see the list of available commands.
**********************************************************************
Error: wallet failed to connect to daemon: http://localhost:18081. Daemon either
 is not started or wrong port was passed. Please make sure daemon is running or
restart the wallet with the correct daemon address.
Error: wallet failed to connect to daemon: http://localhost:18081. Daemon either
 is not started or wrong port was passed. Please make sure daemon is running or
restart the wallet with the correct daemon address.
Background refresh thread started
[wallet 48LQ1o]:

Voila, you should now have:

The watch-only .keys file
The watch-only cache file
Paper back-up of your seed mnemonic. THIS IS THE ONLY THING THAT WILL LET YOU ACCESS YOUR FUNDS, IF YOU LOSE IT - YOUR FUNDS WILL BE GONE FOREVER.

Time to test. This is important. I trust you've written down the mnemonic correctly, but better be sure you didn't make some error. We will test that the restored address will match your watch-only wallet's address. Start the wallet with the command monero-wallet-cli.exe --restore-deterministic-wallet. You will be prompted for a filename, confirmation, seed mnemonic, height and password (again, use some long random gibberish).

D:\_tools\monero.win.x64.v0-10-1-0>monero-wallet-cli.exe --restore-deterministic-wallet
Monero 'Wolfram Warptangent' (v0.10.1.0-release)
Logging at log level 0 to D:\_tools\monero.win.x64.v0-10-1-0\monero-wallet-cli.log
Specify a new wallet file name for your restored wallet (e.g., MyWallet).
Wallet file name (or Ctrl-C to quit): test
Confirm wallet name: test
(Y/Yes/N/No): Y
Generating new wallet...
Specify Electrum seed: fictional aplomb ripped habitat onion zesty foggy tell di
lute nearby ditch autumn ornament muppet sneeze spout sawmill zinger firm puddle
 sickness pliers offend oxidant ditch
Restore from specific blockchain height (optional, default 0): 0
Enter a password for your new wallet: ****
Confirm Password: ****
Generated new wallet: 48LQ1ohLKvvfNv2Kesy1gEe4jm2TfUexM2yS2hGjqLanHt9xbAKZBsj8cy
vRiHFmUPFpQwCP9jFm3BXsVAEHBEAQFT6u2cT
View key: 42f04a74bdb49c157fc40b36ea79b1766c2a6c1951b9fe8fa6e9a0fb57ee4809
**********************************************************************
Your wallet has been generated!
...

Check that the address is the same, exit the wallet and again delete the generated files.

...
D:\_tools\monero.win.x64.v0-10-1-0>del test test.address.txt test.keys

D:\_tools\monero.win.x64.v0-10-1-0>dir
 Volume in drive D is WINPE
 Volume Serial Number is DEB2-6BBC

 Directory of D:\_tools\monero.win.x64.v0-10-1-0

12/20/2016  06:52 PM              .
12/20/2016  06:52 PM              ..
12/13/2016  06:36 PM        13,497,944 monero-blockchain-export.exe
12/13/2016  06:36 PM        13,561,678 monero-blockchain-import.exe
12/13/2016  06:36 PM         6,785,009 monero-utils-deserialize.exe
12/13/2016  06:37 PM        15,977,627 monero-wallet-cli.exe
12/20/2016  09:01 PM            21,006 monero-wallet-cli.log
12/13/2016  06:37 PM        16,757,062 monero-wallet-rpc.exe
12/13/2016  06:38 PM        57,430,407 monerod.exe
12/20/2016  08:47 PM               868 myWallet-watchonly.keys
12/20/2016  08:49 PM               353 myWallet-watchonly
               9 File(s)    124,031,954 bytes
               2 Dir(s)  31,252,480,000 bytes free

D:\_tools\monero.win.x64.v0-10-1-0>

You can copy the resulting myWallet-watchonly.keys file to your online PC. If you opted to use the USB drive as cold storage, you will need another one to avoid plugging the drive with your full wallet into your online PC.

This concludes the 1st part of the guide. Second part will cover transferring first funds to your wallet and monitoring your balance.


Where are the input keys stored for a transaction (understanding vin field)

So I am pretty confused how it can be that the same index in key_offsets can be more than once on the blockchain.

Let's take a step back.

Every output created (i.e. once mined, added to the blockchain), has a global index (its key offset).

Every transaction spends previously created outputs - it uses outputs as inputs to fund the transaction.

Now, when you create a transaction, for each output you own and are spending (so using as an input), you mix with other decoy outputs (other outputs on the blockchain, not owned by yourself). Collectively this is a set of key offsets (the global index of each output on the blockchain that is a member of this collection).

So for each output you spend, you provide a set of key offsets, one of which will be yours, the rest other peoples. This of course means other people creating transactions can also include your owned output indices in their set of key offsets.

As an observer, you can look at any given set of key offsets in a transaction, but have no idea which is the one actually being spent. Therefore, the fact you may see a particular output index in several different transactions, you have no way of knowing which, if any, of the transactions, are actually spending it.

  Where are "the real" input keys stored and how can I acquire them?

If this is not clear from above, the input keys are stored on the blockchain. Each actual key is a previously created output and can be referenced (looked up), using its global index (key offset). You can use the daemon RPC command get_outs to obtain the actual key for an index. E.g. (on testnet here):

$ curl -X POST http://127.0.0.1:28081/get_outs -H 'Content-Type: application/json' \
       -d '{"outputs":[{"index":127232}]}'
{
  "outs": [{
    "height": 877775,
    "key": "3ab3f615dc7ee403d753f3c3604afe57af3bff62f2d95ae74c3ca5603295811c",
    "mask": "843ade9a400589ea368e639aec54a7627d06180eed9fbc5d3149f44bf452f3d9",
    "txid": "0000000000000000000000000000000000000000000000000000000000000000",
    "unlocked": true
  }],
  "status": "OK",
  "untrusted": false
}

UPDATE

Everything above relates to the current transaction version, v2 (i.e. RingCT), which covers the vast majority of Monero transactions. The question however has since been been updated to include references to pre-RingCT transactions as it now mentions heights 345 and 1247, so it's worth noting the following from the v1 transaction spec, section 3.2.2:

  - key_offsets: The list of offsets in the global array of outputs
  of type txout_to_key having the same amount as the input. The
  first value is the ordinal number of the first referenced output
  among those having the same amount. Each of the following values
  is the offset of the next referenced output relative to the
  previous one. One of the outputs referenced is the actual output
  being spent, but only the sender known which one it is. The array
  of the corresponding public keys is a part of one-time ring
  signature verification algorithm input [CNS002].

To lookup a v1 key from its offset, you must also provide the amount field, because as the spec states:

  The first value is the ordinal number of the first referenced output
  among those having the same amount.

And therefore the RPC command to lookup, includes the amount:

$ curl -X POST http://127.0.0.1:18081/get_outs -H 'Content-Type: application/json' \
       -d '{"outputs":[{"index":0,"amount":307304}]}'
{
  "outs": [{
    "height": 1123,
    "key": "45519224a687ec4fbb2675de996d4e3d8e8de8f32b7d6a57d6372f2f96908794",
    "mask": "8de5816e54e57d4c722e905aa5f9931da525ee351c29bb346aa1131f14937a9b",
    "txid": "0000000000000000000000000000000000000000000000000000000000000000",
    "unlocked": true
  }],
  "status": "OK",
  "untrusted": false
}

Therefore:

  This should mean that both txs use the tx with the index 0 as mixin.

As you referenced txs in blocks 345 and 1247, these are v1 transactions. The output at index 0 for amount 307304, is not the same as the output at index 0 for amount 458444. They are different outputs.


How is m calculated when generating subaddresses

After digging through the code and asking some more on IRC, it looks like the salt is "SubAddr" https://github.com/kenshi84/monero/blob/53ad5a0f42174bca57e24485ef3d40e4b9cf5599/src/cryptonote_basic/cryptonote_format_utils.cpp#L134 so it is really more like Hs(prefix || a || i). thank you to the people who helped me on #monero-dev


The HTTP url is: http://127.0.0.1:18082/json_rpc

When you mean with HTTP url, a url that you can type into your browser, than its not possible to achieve the same request with only the HTTP url.
Alternative to curl you could use the chrome App Postman to play around with the json_rpc api. Postman

Post is the called HTTP method.

The -d is the payload, in this case the data that is send as Post request to that HTTP url.

The -H defines a HTTP header that is also send. In this case "Content-Type" is set, it describes the format the POST data is in. Its JSON.

Here is more information about curl. Link


Alert when transaction received in wallet

Probably not something you're looking for, but I've been using this Chrome browser extension which uses monero-wallet-rpc and notifies me of new incoming funds:

https://github.com/Monero-Monitor/monero-wallet-chrome


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

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

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

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

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


Yes that is correct. Only thing that is known is, that there was some transaction. Nobody can tell from which wallet to which other wallet, who did it, which amount was involved and you cant tell the balances of any of the wallets. Not even if a wallet send coins or received coins.

You can basically tell nothing about any transaction. You can just count them without knowing any meaningful context about them.


How could Monero be transmit under the purview of a hostile state actor?

I suppose, given the nature of the internet, especially privacy enhancing tools like TOR or I2P networks that even if a government would try to block a specific service - users would always find one way or another to use it anyway. (See TOR bridges for example: https://www.torproject.org/docs/bridges)

Consider firewalling for example - how would a 'anti-crypto' state block you from using it? - blocking the crypto's RPC port? -> One could proxy it through ports 80 or 443 (http/https) so the blocking party could not easily determine whether its legit and simple web-traffic or being used for crypto transactions.
(That's what TOR relay operators often do, they advertise their TOR-Port as 80/443 so when users connect to it - their ISP/Government/Employer would need to do way more than fire-walling).

So the only thing I see happening if a government would outlaw a crypto is, that the users who are really determined will almost always be able to use it - users however would need to compromise on comfortability, ease of use and sadly (let's hope not) risk prosecution by such (imho) stupid laws.


Stealth address, is there a static part at the end?

It's not like last X bits equal to B. If you do elliptic curve addition or subtraction all the bits change. Any random number could be a sum of any two numbers. Same like 5 = 1 + 4 = 2 + 3 = ... but we're talking about really rally big numbers.

Eve can do P - B, and then what? Random looking data - B = some other random looking data.

Compare it against what to see if it's a match? Normally the scanning wallet does this but it can also compute the target because it knows the shared secret rA=aR because it knows the viewkey a. Without the viewkey you have nothing to compare against to see if it's a match.


How do I gracefully stop the monerod daemon process?

Run monerod exit. You can also just kill the process but you might lose the last batch of blocks that way.


Trying to update a small analysis, does anyone have a source on current median transaction sizes?

At the time of writing, there have been 7331 blocks containing 40988 non-coinbase transactions since the Bulletproof fork height at 1685555.

Lowest transaction size:              1869 bytes
5th percentile transaction size:      1875 bytes
Median transaction size:              2330 bytes
95th percentile transaction size:     6063 bytes
Highest transaction size:           121208 bytes

For comparison, here are the stats for the 1000 blocks directly preceeding the Bulletproof fork:

1000 blocks containing 5260 non-coinbase transactions:

Lowest transaction size:              6954 bytes
5th percentile transaction size:     13191 bytes
Median transaction size:             13786 bytes
95th percentile transaction size:    39149 bytes
Highest transaction size:           260489 bytes


You can restore a wallet by either using the keys, .keys file and the password, or the 25-word mnemonic seed.
Restoring from keys
You need to have 3 pieces of data (Address, Secret Spendkey and Secret Viewkey. You can copy them from the wallet - for example, on the GUI wallet under Settings > Seed & Keys) from your wallet.

Open the GUI wallet and, after language selection, select
'Restore wallet from keys or mnemonic seed', then 'Restore from keys' and enter the data.

Using CLI wallet:
Linux - ./monero-wallet-cli --generate-from-keys wallet-name.abc
Windows - monero-wallet-cli.exe --generate-from-keys wallet-name.abc
Next, you'll be asked for the Address, the Spendkey, the
Viewkey, and finally the new password for the re-generated wallet.

You can find all the info about restoring wallet from keys at https://www.getmonero.org/resources/user-guides/restore_from_keys.html.
Restoring from .keys file
You can also use the .keys file which holds the keys info and the password to decrypt it.
The wallet .keys file is, by default, located in C:\Users\<user-name>\Documents\Monero\wallets\<wallet-name> under Windows and ~/Monero/<wallet-name> for Linux.

On the GUI wallet, after language selection, select 'Open a
wallet from file' and open the .keys file. Doing that, the
restoring process will be started.

Using CLI wallet, type:
Linux - ./monero-wallet-cli --wallet-file wallet-name.keys
Windows - monero-wallet-cli.exe --wallet-file wallet-name.keys

Restoring from 25-word mnemonic seed
You must hold the 25-word mnemonic seed that you saved when creating your old Monero wallet.

Retrieve your 25-word mnemonic seed and launch the Monero GUI wallet.
After the language selection, select 'Restore wallet from keys or
mnemonic seed' and then keep 'Restore from seed selected'.

Using CLI wallet:
Linux - ./monero-wallet-cli --restore-deterministic-wallet
Windows - monero-wallet-cli.exe --restore-deterministic-wallet
After the command, you will be prompted to insert wallet file name, password and the 25-word mnemonic seed. You can also choose a specific blockchain height to restore from. After you have entered the 25-word mnemonic seed and have chosen your specific blockchain height, monero-wallet-cli will generate the same public address and view key as your old wallet and begin the refresh process automatically.

You can find additional info on this process on the official guide page https://ww.getmonero.org/resources/user-guides/restore_account.html.

I accidentally lost the 25-word mnemonic seed. Are the wallet coins lost?

If you have lost the keys, the .keys file, and the 25-word mnemonic seed, the coins remain on the wallet, but you will be unable to access them.


How to authedmine.com mining 24/7? (Coinhive)

Coinhive is a javascript-based miner. Since Javascript is web-based, you have to keep the page open in order for it to stay active.


After you change the GENESIS_TX of "cryptonote_config.h", input following commands in your terminal:

Creat node1:

  ./monerod --testnet --no-igd --hide-my-port --testnet-data-dir
  ~/test/node1 --p2p-bind-ip 127.0.0.1 --add-exclusive-node
  127.0.0.1:38080 --add-exclusive-node 127.0.0.1:48080

Creat node2:

  ./monerod --testnet --testnet-p2p-bind-port 38080
  --testnet-rpc-bind-port 38081 --no-igd --hide-my-port --testnet-data-dir ~/test/node2 --p2p-bind-ip 127.0.0.1 --add-exclusive-node 127.0.0.1:28080 --add-exclusive-node 127.0.0.1:48080

Creat node3:

  ./monerod --testnet --testnet-p2p-bind-port 48080
  --testnet-rpc-bind-port 48081 --no-igd --hide-my-port --testnet-data-dir ~/test/node3 --p2p-bind-ip 127.0.0.1 --add-exclusive-node 127.0.0.1:28080 --add-exclusive-node 127.0.0.1:38080

Creat wallet1:

  ./monero-wallet-cli --testnet --trusted-daemon --generate-new-wallet
  ~/test/test1

Creat wallet2:

  ./monero-wallet-cli --testnet --daemon-port 38081 --trusted-daemon
  --generate-new-wallet ~/test/test2

Creat wallet3:

  ./monero-wallet-cli --testnet --daemon-port 48081 --trusted-daemon
  --generate-new-wallet ~/test/test3

More tips.


Is avoiding significant advantage by an specific hardware an active goal of the Monero developers?

Based on above comments ... No. CryptoNight is the exact opposite of what "hardware-agnostic" means. In particular, CryptoNight is designed to run best on CPUs, and run less efficiently on GPUs and other accelerated compute devices.

An algorithm that is truly hardware-agnostic would run efficiently on any compute device.


Monero blockchain usage after importing .raw file

There's little reason to be downloading and importing the raw blockchain these days. Just running the daemon and letting it sync the blockchain is almost always the best approach. If for whatever reason you need to download and import the raw file instead, you should follow the guide.

Addressing some specific points in your question:

  It took 4 days to import .raw file

Then you are most likely using a spinning disk. The Monero blockchain is best suited to solid state drives. It will sync on spinning HDDs, but take longer. If you plan on keeping the node running 24/7, using a HDD is fine, because once synced, the slowness won't impact you. If however you are not going to keep your node running 24/7, you will certainly want to either have the blockchain on an SSD or use a remote node.

  Is there any way to use GUI to sync the rest?

It will do so automatically.

  When I try to use the .mdb directory it starts syncing again from 0?

If after importing a raw file, your daemon starts syncing from zero, you have something pointed at the wrong data dir. Note also there is a difference between syncing the blockchain and scanning the blockchain. If you are using the GUI after importing the blockchain, it will still need to scan the blockchain.


Commitments for RCTTypeSimple transactions

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

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

C = x*G + a*H

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

D = y*G + a*H

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

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

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


Forgot to use Payement ID when transferring eth to Monero

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


Does the --hide-my-port option reduce traffic?

The --hide-my-port option is used to prevent incoming connections of peers to your node, which would reduce traffic if your node could receive incoming connections.

But if your node is behind a router without port forwarding, it already can't receive incoming connections, therefore the --hide-my-port option won't have any extra effect on traffic reduction.


If the Monero started with rCT, would it be needed to have any part of the codebase handling dust?

It would indeed not be needed.

For the "below its weight in fee" case, the wallet could just avoid spending those outputs.


With the Monero Wallet GUI is it suppose to start synchronizing every time you open it even after it completed synchronizing the 1st time i opened it?

You need to sync only the amount that was not synced since the last time you used it.

If, for example, you used Monero on Monday and then used it again on Wednesday, you would only need to sync the difference. You should not need to start over each time you open the wallet.


Do multisig addresses share the same space as regular addresses and produce the same types of keys?

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

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

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

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

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

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

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


How can we be sure that there is no bias in calculating H?

This question seems to boil down to whether Keccak is suitable for the random oracle model.

This answer on crypto.stackexchange.com should answer your question: https://crypto.stackexchange.com/q/70707/69644

As far as I know, there is no bias when going from the low order group to the prime subgroup.

Sidenote: there was an unrelated attack related to the key image in one of the first papers on ring sig, due to the way that the hashing was completed.

$ I = xH(P) $

Where $P = xG$

Defining the hashing function H as $keccak(data) * G$


Need specific instructions on using formula to calculate Monero's current block reward

I went on Freenode IRC #monero-dev and got an answer to Atomic Units

An Atomic Unit, for Monero, = 1e-12 or .000000000001

That's eleven zeros before the 1

Here's the php code I used to calculate this for anyone that would like to use it

//Simple Public Get API
$url = "https://moneroblocks.info/api/get_stats";
// Make Request
$info = file_get_contents($url);
// Digest JSON into a php array (FLAG 2)
$info = json_decode($info,2);

$total_circulation = $info['total_emission'];

// Calclulate total supply, this is taken directly from cryptonote man pages
// https://cryptonote.org/whitepaper.pdf  ATOMIC  UNIT for monero = 1e12
$total_supply = pow(2,64) * 1e-12;
$base_reward = ($total_supply - $total_circulation) >> 20;

$next_step = $base_reward * 1e-12;
// Multiply by 2
$actual_reward = $next_step * 2;

Hope this helps someone!


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


Is there MRL-0007? What topic is it about?

Based on this comment from fluffypony it appears that MRL-007 was skipped and does not (currently) exist.

  @kenshi84 any chance you could do a formal write-up and submit it to the Monero Research Lab repo for us to publish? It would go as MRL-0006, and the current WIP that is MRL-0006 would be moved out to 7 or something.

@kenshi84 confirmed a willingness to begin working on a formal write up (to become MRL-006) for the topic in the one-time receiving address idea that led to this pull request

  @fluffypony Sure, I'd be honored to be able to publish at MRL:)

The previous MRL-006 will be renamed MRL-007 and Difficulty Adjustment Algorithms in Cryptocurrency Protocols research will continue.


View monero subaddress balance without monero-wallet-cli

You cannot get a balance with a view key alone. All you can do with a view key is view incoming transactions - not get a wallet balance. To determine a wallet balance you also need a way to know what is spent. With a view-only wallet, you can import key images which will enable you to view a balance. Thus, you would first have to create a view-only wallet using the view key and then import key images.
For programatic access you would use the monero-wallet-rpc, not monero-wallet-cli. In theory you could run this on AWS Lambda but whichever tool/host you used, you still need access to a daemon also.


Transferring Through Command Line without Syncing

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


What is so different about RandomX from other attempted ASIC-resistant mining algorithms?

Cryptonight really only exploited one particular feature of modern CPUs, fast cache access. When it was designed, it was thought ASICs would be at a significant disadvantage because of their general lack (at the time) of access to fast memory. It was also not imagined the ways in which ASIC manufacturers could overcome the memory constraints.

RandomX however is designed to exploit the very nature of CPUs: general purpose computing. CPUs are designed to be able to run a wide variety of tasks, this is their feature if you will. The algorithm largely achieves this by being dynamic - random programs are created and executed by a virtual machine. For an ASIC to be competitive, it would essentially have to be an improved CPU, for which everyone would benefit, not just Monero.

Quite frankly, no other algorithm (including the broad list you want compared), go anywhere near the lengths that RandomX does to favor general purpose CPUs. Probably the closest design-wise out there is ProgPoW, which targets the features of GPUs.


Connecting Monero Light Wallet on Tails with Remote Node

Many remote node servers use the port 18089 as explained on Connecting to the remote node from the wallet, so you should try using that port.


How can I improve performance of my pool?

It is possible to run several nodes, in a load balancing way. I know of at least one pool which does this (crypto-pool.fr). The specifics, however, I can't say.

The usual suspects: faster CPU, faster network connection. For the latter, this may come in handy if you end up DDoSed. Unfortunately, there are DDoS campaigns from time to time on pools. Whether this comes from competing pools or just generic jerk kids, I don't know. But they come and go.

I see two ways you might improve performance if you want to change the code (first one is an already available change):

improve the performance of the daemon which supplies the pool with the block templates. There is a patch that exists (https://github.com/moneromooo-monero/bitmonero/tree/cache-block-template) which does this, and is said to reduce the CPU load a lot
improve the performance of checking miner shares. There are two ways to do this: skip some (there is a "trusted shares" setting in the pool config.json which you can tweak, it's a tuning where the more you trust miners, the less the CPU load on checking), and using AES-NI for the Cryptonight calculation (I'm not aware of a public patch for this though).

I'm sure there are other things you could look at, but these are two of the main ones that come to mind.


How is CipherTrace tracking monero transactions and what tools are they using?

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


SSL handshake failed due to unexpected packet format

Use a daemon that is up and running
Use a daemon that is running with SSL configured
If using a daemon that is auto-detecting SSL clients, configure your client to allow self-signed certificates.


How to remove monero-wallet-gui from mac

The blockchain (on Linux and Mac) is stored at ~/.bitmonero. See this answer which describes how to find it, then simply delete. If you're short on storage you can run a pruned blockchain instead, or even connect to a remote node.


Is it impossible to calculate Monero Days Destroyed?

This is indeed impossible, since you'd have to know which input in a ring is being spent, in order to know its age, as well as know which outputs are change and which are not, to know the amount (assuming change would not be counted in that calculation, I'm not super familiar with that metric).

Once RingCT is enabled, you wouldn't see amounts at all, so not even a range could be calculated.

Your best bet would be to trust the main exchanges to properly report their volume (but then you only get volume, not age of outputs).

Edit: in fact, I'm thinking another metric might actually be a not-so-bad replacement: Monero has per kB fees which are not trivial compared to bitcoin (0.01 monero per kB). Once RingCT is merged, most transactions will be 1 or 2 inputs and two outputs (payment + change). Assuming nobody will move money just for the fun of it, due to the fees, maybe counting cumulative transaction sizes would give a good idea of the actual amount of use. That'd be closer to "users" rather than "capital", since the amounts will be hidden, but that might not be a bad thing altogether, just different.


Given a view key, can you see payment ids?

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.


Question about mining to a remote online wallet

Yes, the start_mining <addr> command will send your mined Monero directly to the address you specify.

Most people that run their own full node will mine to a local wallet, but mining to a web wallet while not necessarily recommended for privacy reasons is possible. Mining directly to an exchange is only possible if the exchange supports integrated addresses.


Any approximate date we will have Monero wallet with graphical user interface?

2 weeks from now.

(now = whenever you look at this)


What's the difference between "balance" and "unlocked balance"?

According to your wallet (not the protocol) you have to wait 10 blocks (roughly 20 minutes) before you can spend newly received xmr. The is a measure for increased untraceability.

Explanation :

As an example, when you send a transaction, your wallet uses one of the 'bills' it has, say 10 xmr. However, you want to pay someone only 3 xmr, so what happens then? Your wallet splits the 10 xmr into brand new 3 + 7, sends the 3 to your recipient, and 7 back to yourself. Because both the 3 and the 7 bills are brand new, you have to wait until you can spend those.


What does this mean: ./monero-wallet-gui: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./monero-wallet-gui)

Those errors mean that you are trying to run a binary which was not built for the same system libraries you are currently running. That is, monero-wallet-gui was built against versions of libstdc++ (the C++ standard library) and glibc (the GNU C library) which are not compatible with the ones you have on your system.

Your options are to either wait for the next release of the GUI binaries, which will be built to be compatible with a wider variety of machines, or to build the GUI yourself, on that machine.

those .so.6 files are shared libraries. The ".so" suffix is traditionally used for them, and is short for "shared object". The .6 is a version number, signalling the 6 version of the library with incompatible changes. Here, you do not have to care about those versions, since you likely won't try to build compatible libs.


What is to stop mymonero.com from taking everyone's money?

The fact that it never gets access to the your private spend key. The workings of the site are explained here.

Your monero are "kept" on the blockchain and not on the site itself. The site is just an interface to tell the network you want to move your monero, where all the cryptography to spend the coins (using your private spend key to sign the transaction) is performed by your computer. By logging-in, you're giving the program (javascript code running locally on your browser) your secret spend key so it can do its magic.

However, it's important to note that the site does store one piece of information: your private view key. Because of this, the site can see all your incoming transaction and provide you with the convenience of having your balance visible immediately.

Possible attack vectors include:

A hacker spoofing the site somehow, so you would load a different "program" (code running in your browser) which would steal your keys after you type in the mnemonic.

You could protect against this by always checking the correct site address and https certificate.

A hacker hacking the site server, changing the program delivered to the users and being able to steal the keys of whomever logs in after that point

You could protect against this by inspecting the code of the site. Let's say you make a snapshot of the site, and copare the newly downloaded one vs the old one. Not very practical to do, though.

Site owner going rogue and doing the same
Key logger on your PC
Browser extension malware

You could protect against this by disabling all addons/extensions
...

The important takeaways are:

If you have used the site in the past, and someone hacks it afterwards or the owner goes rogue, they won't be able to steal your funds.
Due to how it works, even if someone hacks the site, he would be able to steal only the funds of those who log in during the time the site is hacked
If the owner would go rogue, the word would soon go out. Highly unlikely considering the massive credibility of the current owner (one of core team).
Considering all above, it's recommended to keep larger amouts using simplewallet or cold storage. The site should be used for pocket money, like what you would normally keep in your physical wallet.


Monero mixin 0 versus Zcash "T" address transaction

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

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

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


Determining the private view key by observing the exchange of MultisigV1 strings

I'll reference part of the scheme as detailed in the commit:

2 of 2

User A (coordinator):
Spendkey b,B
Viewkey a,A (shared)

User B:
Spendkey c,C
Viewkey a,A (shared)

Public Address: C+B, A

Both have their own watch only wallet via C+B, a

The format of the MultisigV1 string is, once base58 decoded:

private view key component (32 byte scalar)
public spend key component (32 byte EC point)
schnorr signature of a hash of the two elements above by the private spend key component
  (pair of 32 byte scalars)

Therefore to determine the overall multisig wallet private view key, add together all of the private view key components. The same calculation applies to determine the overall public spend key. Together, these can be used to recreate the wallet public address and to create a view-only wallet.

If you don't mind others being able to observe the multisig wallet address and private view key, and therefore them being able to observe incoming transactions to the wallet, these strings can be shared publicly. Otherwise, they should be kept private.


How do the new rpc-payment... options for monerod work?

Quoting the relevant commit message:

daemon, wallet: new pay for RPC use system
Daemons intended for public use can be set up to require payment
in the form of hashes in exchange for RPC service. This enables
public daemons to receive payment for their work over a large
number of calls. This system behaves similarly to a pool, so
payment takes the form of valid blocks every so often, yielding
a large one off payment, rather than constant micropayments.

This system can also be used by third parties as a "paywall"
layer, where users of a service can pay for use by mining Monero
to the service provider's address. An example of this for web
site access is Primo, a Monero mining based website "paywall":
https://github.com/selene-kovri/primo

This has some advantages:
 - incentive to run a node providing RPC services, thereby promoting the availability of third party nodes for those who can't run their own
 - incentive to run your own node instead of using a third party's, thereby promoting decentralization
 - decentralized: payment is done between a client and server, with no third party needed
 - private: since the system is "pay as you go", you don't need to identify yourself to claim a long lived balance
 - no payment occurs on the blockchain, so there is no extra transactional load
 - one may mine with a beefy server, and use those credits from a phone, by reusing the client ID (at the cost of some privacy)
 - no barrier to entry: anyone may run a RPC node, and your expected revenue depends on how much work you do
 - Sybil resistant: if you run 1000 idle RPC nodes, you don't magically get more revenue
 - no large credit balance maintained on servers, so they have no incentive to exit scam
 - you can use any/many node(s), since there's little cost in switching servers
 - market based prices: competition between servers to lower costs
 - incentive for a distributed third party node system: if some public nodes are overused/slow, traffic can move to others
 - increases network security
 - helps counteract mining pools' share of the network hash rate
 - zero incentive for a payer to "double spend" since a reorg does not give any money back to the miner

And some disadvantages:
 - low power clients will have difficulty mining (but one can optionally mine in advance and/or with a faster machine)
 - payment is "random", so a server might go a long time without a block before getting one
 - a public node's overall expected payment may be small

Public nodes are expected to compete to find a suitable level for
cost of service.

The daemon can be set up this way to require payment for RPC services:

  monerod --rpc-payment-address 4xxxxxx \
    --rpc-payment-credits 250 --rpc-payment-difficulty 1000

These values are an example only.

The --rpc-payment-difficulty switch selects how hard each "share" should
be, similar to a mining pool. The higher the difficulty, the fewer
shares a client will find.
The --rpc-payment-credits switch selects how many credits are awarded
for each share a client finds.
Considering both options, clients will be awarded credits/difficulty
credits for every hash they calculate. For example, in the command line
above, 0.25 credits per hash. A client mining at 100 H/s will therefore
get an average of 25 credits per second.
For reference, in the current implementation, a credit is enough to
sync 20 blocks, so a 100 H/s client that's just starting to use Monero
and uses this daemon will be able to sync 500 blocks per second.

The wallet can be set to automatically mine if connected to a daemon
which requires payment for RPC usage. It will try to keep a balance
of 50000 credits, stopping mining when it's at this level, and starting
again as credits are spent. With the example above, a new client will
mine this much credits in about half an hour, and this target is enough
to sync 500000 blocks (currently about a third of the monero blockchain).

There are three new settings in the wallet:

 - credits-target: this is the amount of credits a wallet will try to
reach before stopping mining. The default of 0 means 50000 credits.

 - auto-mine-for-rpc-payment-threshold: this controls the minimum
credit rate which the wallet considers worth mining for. If the
daemon credits less than this ratio, the wallet will consider mining
to be not worth it. In the example above, the rate is 0.25

 - persistent-rpc-client-id: if set, this allows the wallet to reuse
a client id across runs. This means a public node can tell a wallet
that's connecting is the same as one that connected previously, but
allows a wallet to keep their credit balance from one run to the
other. Since the wallet only mines to keep a small credit balance,
this is not normally worth doing. However, someone may want to mine
on a fast server, and use that credit balance on a low power device
such as a phone. If left unset, a new client ID is generated at
each wallet start, for privacy reasons.

To mine and use a credit balance on two different devices, you can
use the --rpc-client-secret-key switch. A wallet's client secret key
can be found using the new rpc_payments command in the wallet.
Note: anyone knowing your RPC client secret key is able to use your
credit balance.

The wallet has a few new commands too:

 - start_mining_for_rpc: start mining to acquire more credits,
regardless of the auto mining settings
 - stop_mining_for_rpc: stop mining to acquire more credits
 - rpc_payments: display information about current credits with
the currently selected daemon

The node has an extra command:

 - rpc_payments: display information about clients and their
balances

The node will forget about any balance for clients which have
been inactive for 6 months. Balances carry over on node restart.


How does one provide "proof" of payment beyond txid?

Yes, the viewkey comes in here. One can use this tool: http://xmr.llcoins.net/checktx.html

What you need:

the transaction hash
the view key of the receiving wallet, apparently you can also use the TX private key here, however, I don't know what this means... Someone can fill in here?
the receiving wallet address

When you fill these in you can check if the transaction arrived

best regards,


Many altcoins fork from Bitcoin so their codebase is often not much different from Bitcoin. That's why it's relatively easy to make all existing tools work with a coin forked from Bitcoin. Therefore exchanges don't need to spend much development time to implement most altcoins.

Monero is based on CryptoNote, which is a new protocol and very different from Bitcoin. In order to make Monero work they need to change most of their tools. That's a lot of development time the exchanges need to invest.


Is there a way to make a public transaction?

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

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

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


Anybody tied High Throughtput Mining with NVidia GPGPU - Planning to buy a server

check on http://monerobenchmarks.info/ the tesla and xeon are both on the list


monerod throws Error starting server: Failed to bind IPv4 (set to required)

This error is typically due to trying to start more that one daemon process or a previous process not exiting cleanly. Thus make absolutely sure there is no other monerod process running, such as running killall monerod, then trying to start again should fix the issue (or a reboot).


What is the purpose of the Monero GitHub Meta repository?

What type of issues is this GitHub meant to address?

From the dev meeting:

fluffypony:: pigeons: do you want to tell people about the new repo we're using for issues?
pigeons: github.com/monero-project/meta
nanoakron: Please explain?
pigeons: for stuff realted to build machines, build infrastructure, etc
pigeons: anonimal has been using it some to get things setup for kovri needs
pigeons: so feel free
fluffypony: ok so
fluffypony: please use /meta for organisational issues
nanoakron: Roger
pigeons: there is also an empty repo there now, i'll check in some build infrastructure settings there and vm templates
fluffypony: "organisational" as in something that isn't project specific

Will the same Collective Code Construction Contract, C4 guidelines used for other repos be followed for this one?

Given that the meta repository falls under the Monero Project umbrella, I assume it also applies.

Are non developers community members welcome to contribute?

Of course! Note that non developers are welcome to open issues on other Monero Project repositories too.


Converting the network identifier to text

I don't think the numbers encode the phrase, but it must be a reference to Futurama.

In season 2 episode 7, Bender has a nightmare of random 1s and 0s appearing, and he thinks he even saw a 2! Whether our network identifier somehow relates with numbers appearing in that episode, I have no idea.


How to download the monero blockchain testnet?

To download the Monero testnet blockchain, you run monerod with the --testnet flag, ie monerod --testnet. The blockchain will start downloading. Note that you will need a current version of the Monero code: either master from github, or the release-v0.12 branch, as of now. The Monero software in 0.11.1.0 is not recent enough to use the current testnet chain.

I'm not sure what you mean by running on the bitcore, but it will run on most machines. If you can run the mainnet, you can run the testnet, and the mainnet and testnet chains are independent. Since Monero is not a Bitcoin descendent, it will handle differently from Zcash and Litecoin, but the principles should be similar.


wallet rpc call login parameter format please?

As @kenshi mentioned, --digest needs to be added to the curl command. The default behavior for curl is to attempt basic authentication, then abort. I have personally attempted curl with monero-wallet-rpc, so it should work.

The password file is always written to the same directory where monero-wallet-rpc was started. The filename is always monero-wallet-rpc.[port].login where [port] is the port number of the RPC server. The file is only readable by the local user account that started monero-wallet-rpc. The format for the file is [username]:[password] - in other words the first colon separates the username from the password.

Lastly, you have to read from the file. The purpose is proving that your application can read a file only readable by the same local user account that is running monero-wallet-rpc. Pointing to the file provides no proof of authorization.


The monero wallet with optional RingCT transactions will be available in January (RingCT transactions are available on TestNet on the current wallet). RingCT will be mandatory in the next hard fork after that.

You might mean the official GUI wallet. This will be released when it is done and there is no timeline.

Monero is quite a bit different from other cryptocurrencies so no, the wallet is most certainly not compatible with other currencies. You may be thinking of some multicurrency wallets which may soon include monero; we have no information when these will be available either.


Cryptonight, the Proof-of-Work (PoW) algorithm used by Monero, uses a 2 MB buffer to do its calculations. Mining speed is heavily influenced by whether this buffer can fit in your CPU's cache. If it can't, some reads and writes will hit RAM, and slow it down. Therefore, to determine the optimal number of mining threads (at least as far as cache is concerned), you work out how many such buffers can fit in your cache. If your cache is 4 MB, then 2 buffers can fit. This is where the "divide by 2" comes from. Note that if you use your computer at the same time as mining, you may want to go with fewer threads, so your normal workload does not get slowed down.

So, you'll have to check your system's specs to see how much cache it has. It's probably between 2 and 6 MB, giving 1 to 3 threads. In any case, it's safe to experiment with small number of threads, and see how your hash rate varies, then use the setting which seems to get you the best performance.

Note that mining using the GUI like this is called solo mining, as opposed to pool mining. In the long run, solo and pool mining give about the same expected mining gains. However, solo mining will be very much more unpredictable in the timing of the gains. It is like a lottery: you can play for a very long time without winning, but when you win, you win BIG. With pool mining, you win often, but only tiny sums. In the long run, it works out about equal, but make sure you are OK with this before choosing between pool and solo mining. Note that solo mining is also better for the network as a whole, as it avoids centralizing mining to the pools.

Good luck!


Simplewallet: Can I print the current values of the options that can be set by the "set" command?

Just type "set" by itself. All the current values are displayed.


If I saved my view key and spend key can I recover my wallet if my mnemonic seed is lost?

Yes, it is possible to restore your account with just the view and spend keys.

monero-wallet-cli has the --generate-from-keys <name> option, which will create a wallet with the given name, and prompt the user for: address, spendkey and viewkey.

Example:

$ monero-wallet-cli --generate-from-keys myWallet
Monero 'Helium Hydra' (v0.11.1.0-release)
Logging to monero-wallet-cli.log
Standard address: 45FofLeGb1oAR7fDhrNsmvHHxjaY3at6YLxHq7S9YvQ54sMSn6BxtHe9tKYKfQm1YgE4WUyhLcMPiCJ17LQAtnjAQA3Nmh4
Secret spend key: 4941baf224dc238d7329a8c9ef672b3340ccb26eaf460f6c4cc8afa97a735a0c
Secret view key: 8fc685263e28604ebca23e2877e0847d034dc380db3ba800238a481b8719ea09
Enter new wallet password:
Confirm Password:
Generated new wallet: 45FofLeGb1oAR7fDhrNsmvHHxjaY3at6YLxHq7S9YvQ54sMSn6BxtHe9tKYKfQm1YgE4WUyhLcMPiCJ17LQAtnjAQA3Nmh4
Restore from specific blockchain height (optional, default 0),
or alternatively from specific date (YYYY-MM-DD): 2017-11-25
Restore height is: 1450154
Is this okay?  (Y/Yes/N/No): Y
Starting refresh...
Refresh done, blocks received: 1419
Balance: 0.000000000000, unlocked balance: 0.000000000000
Background refresh thread started
[wallet 45FofL]:

If you don't remember your standard address, then there's a sligtly more complicated way, the --generate-from-json option. You then have to create a small JSON file with that information, called, data.json, for instance:

{
  "version": 1,
  "filename": "restoredwallet.bin",
  "password": "some string",
  "viewkey": "abcdabcd...",
  "spendkey": "1234124..."
}

Then:

./monero-wallet-cli --generate-from-json data.json

Once your wallet is recreated, you can view its reconstructed seed with the command:

seed

(only if viewkey is deterministic, non-deterministic wallets don't have seeds)


In shortest / simplest, just to illustrate the principle (may not be 100% accurate).

Take the hash of the last block
Build a block made of transactions which you collect from the network, while verifying that they're valid. You also include a coinbase transaction to yourself, called block reward. Other miners will include theirs.
Keep hashing (1. + 2.) until you find a hash satisfying a criteria (usually looking for a hash which has to be larger than the target).
If you find it first, publish it to the network and claim the reward. Use the new hash and goto 1.
If someone beat you to it, take his winning hash and goto 1.

This process ensures that we can't change the past of our blockchain without having to redo all the cumulative work done by the miners.

Pooled mining works a bit different, where you submit hashes which satisfy an easier criteria than in 3. as a proof you're mining. For each one submitted, you will get a share of any block found by the pool (even if it's coming from you).

Obviously, the goal of any mining software is to perform as much as possible hashes / s with a given hardware.


Recovery from seed not working on monero.mac.x64.v0-9-4-0

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

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

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

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


What exactly has been changed in PoW algorithms in the v7 fork?

In versions 1 to 6 of the protocol, the CryptoNight  algorithm was very roughly:

state = keccak(block_data)
scratchpad = fill_scratchpad(state)
loop 524,288 times
  address = compute_address(scratchpad, state)
  modification1(scratchpad, address)
  address = compute_address(scratchpad, state)
  modification2(scratchpad, address)
text = reduce(scratchpad, state)
result = extra_hash(keccak(mix(text, state)))

In version 7 of the protocol, it is:

state = keccak(block_data)
tweak = compute_tweak(block_data, state)
scratchpad = fill_scratchpad(state)
loop 524,288 times
  address = compute_address(scratchpad, state)
  modification1(scratchpad, address)
  extra_modification1(scratchpad, address)
  address = compute_address(scratchpad, state)
  modification2(scratchpad, address)
  extra_modification2(scratchpad, address, tweak)
text = reduce(scratchpad, state)
result = extra_hash(keccak(mix(text, state)))

So in version 7, two extra modifications are added to the computationally intensive loop.
The extra_modification1 does some bit shuffling.
The extra_modification2 mixes bits of the tweak into the scratchpad.

The idea of these changes to the CryptoNight algorithm is that to make an ASIC for it (when you already have an ASIC design for the previous version) you would have to rework the main loop because it now requires some extra gates (for bit shuffling) and access to some data that was not necessary before (block data in the tweak).


Location of merkleroot per block / block header

The merkle root hash is used when creating the block hash. This is in the block_header as returned from the daemon RPC method get_block.


If you don't have a mnemonic seed, how do you access wallet on a new device?

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

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


What is the proper format for a wallet-cli transfer since 0.11.0.0?

The [] characters are not meant to represent actual [ and ] characters to type. They are normally used to denote optional parameters, though this not always the case.

If you wanted to send a normal priority transaction for 10 monero to address 4blah with ring size 5 and payment id 1234, then you would use:

transfer normal 5 4blah 10 1234

The real payment ID should be 256 bits (64 hexadecimal characters). If you see one that's only 64 bits (16 hexadecimal characters), it's not meant to be used manually, and should be used as part of an integrated address.


Does Multisig have any privacy drawbacks?

No, it doesn't. Monero multisig addresses look and work exactly the same as any other Monero address, and so do transactions. All the "magic" is done off-chain between the wallets involved. The reason that multisig has not been implemented pre-RCT is because the work would have been wasted since non-RCT transactions are becoming obsolete.

Bytecoin, Monero's predecessor implemented multisig (or at least had a documented method for implementing multisig), but it was completely absent any privacy measures so all amounts and so on could be easily deduced as it could not be used without mixin = 0. Ring signatures (together with CT) on the other hand enables the same degree of privacy regardless of whether it is multisig or not. Multisig transactions should be indistinguishable from a normal transaction on the blockchain.


Monero cli transfer command set lower transaction fee

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

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

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

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


How can I invest a low amount of Moneroj?

Can I use that amount to buy another altcoin? I mean trading or something.

Any exchange which accepts Monero also lets you trade Monero for another (crypto)currency. There are dedicated services (e.g. ShapeShift) which allow you to convert coins anonymously.

  Can I use it to invest on Paid To Click (PTC) sites?

I'm not familiar with PTC sites, how would you invest any money into them? I thought they'd pay you and not the other way around.

  Of course it will take a lot of time, but can you make even 2000 USD a year with a good investment strategy?

Sure, just upgrade your mining rig and you can make more than 1 Monero per year :) You can also hodl and wait for the price to moon.


Why is my ShapeShift transaction being denied?

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.


Is there preferred hardware on which to run simplewallet to ensure random wallet generation?

The Trezor built on a 32-bit ARM Cortex has a true Random Number Generator (RNG).

Having analog-to-digital (A/D) converter making very small voltage measurements can assure randomness.  Most electrical engineers are very familiar with the "thermal noise floor" that in a statistical sense is governed by K*T*B*NF physics equation. K = Boltzman's Constant, T = Temperature in Kelvin, B = Bandwidth in Hertz, NF = Noise Figure of amplifier feeding the A/D converter(s).


I forgot to upgrade (from CLI or GUI v0.13 to CLI or GUI v0.14) and created / performed a transaction on the wrong (alternative) chain

First and foremost, you have to ensure that you properly upgraded to v0.14. A guide can be found here. In addition, your blockchain has to be "corrected" such that your node syncs to the right chain. A guide can be found here. Thereafter, follow these steps:

Local node

GUI:

Go to the Settings page of the GUI.
Press on the Log tab.
In the command + enter (e.g. 'help' or 'status') box type -> flush_txpool
If you're unable to execute this command, proceed with step 7.
Your transaction should now show as Failed on the History page.
Your balance should now reflect the proper balance.
If not, exit the GUI, but keep the daemon running.
Browse to the directory your wallet files are located (Documents\Monero\<wallet-name> on Windows | home/<username>/Monero/<wallet-name> on Linux | Users/<username>/Monero/<wallet-name> Mac OS X).
Rename <wallet-name> (the file without extension) to <wallet-name>-old.
Restart the GUI. This will trigger a wallet refresh from scratch, which shouldn't take longer than 30 minutes.
You should see your proper balance once the wallet is fully refreshed.

CLI

Type flush_txpool into monerod
Use show_transfers (in monero-wallet-cli) to verify that your transaction now shows as failed
Your balance should now reflect the proper balance.
If not, type rescan_spent in monero-wallet-cli

Remote node

It's quite unlikely that the remote node you connect(ed) to was running a v0.13 daemon (monerod), as most remote node lookups have proper checks in place. However, use the following steps if it occurred and you created / performed a transaction:

GUI:

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

CLI:

Exit the CLI.
Note that, by default, the CLI stores the wallet files in the same directory as monero-wallet-cli
Rename <wallet-name> (the file without extension) to <wallet-name>-old.
Restart the CLI. This will trigger a wallet refresh from scratch, which shouldn't take longer than 30 minutes.
You should see your proper balance once the wallet is fully refreshed.


How to parse transaction extra field to extract pubkey

The txextra field specification is here: https://cryptonote.org/cns/cns005.txt

That document references "varints", which are documented in section 1.2 here: https://tukaani.org/xz/xz-file-format.txt

You should read through all txextra sub-fields until you arrive at the field with tag 0x01, and the 32 byte tx public key will follow.


What data does the Monero client write as it processes the blockchain?

The Monero daemon (started by hand or automatically by monero-wallet-gui) only writes data that is publicly available (the blockchain). Therefore you can choose a directory on an unencrypted partition as data directory for monerod.

The Monero wallet (monero-wallet-cli, monero-wallet-rpc or monero-wallet-gui) writes the wallet files, which must stay private. These files are encrypted using your password, so they can also be stored on an unencrypted partition. But storing the wallet on an encrypted partition will make it even more difficult for someone stealing your computer to try to steal your money.


Can view keys differentiate between payments and change?

If you think about it, change comes back in the same transaction as the money you sent. If you receive X monero as change, you will have sent Y monero in the same transaction, with Y > X.

The answer to your question boils down to the key images. You give a signed set of key images to the auditor, who can now see money going in and out.

See How to prove my Monero balance to a world? for the procedure.

Nothing about this will change with RingCT.


What is the story with Thankful for Today and the transfer of dev control?

thankful_for_today launched it as bitMonero and the other devs voted to drop the bit part and Monero was born.


How to find out how big the Monero blockchain is?

You can call a daemons RPC get_info method which will tell you the blockchain database size (in bytes) in the responses database_size field.

And you can find a public node on sites like https://moneroworld.com/.

For example:

curl -d '{"jsonrpc":"2.0","id":"0","method":"get_info"}' \
  http://node.moneroworld.com:18089/json_rpc

Response (truncated):

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    ...
    "database_size": 85899345920,
    ...
  }
}

Which you then convert the bytes to GB however you prefer. The above shows roughly 85 GB. Note this is not the exact size of the blockchain, rather the current size of the database on the node queried.


How to include libboost into the executable? (Ubuntu)

You can build a "static" binary (not actually static, but links statically against most dependencies). See the top level Makefile for the targets. The dependencies will have to be built with -fPIC (neede for ASLR), which isn't always the case for static libraries on all distros.


What is the difference between transfer_split and transfer?

transfer, the older of the two commands, creates a single transaction. This can fail if you try to create a transaction with too many destinations / the transaction becomes too large.

transfer_split may create more than one transaction. This is useful if you are wanting to create transactions with a higher number of destinations as it can efficiently split the the transfer, as necessary, into multiple transactions.

If you are only ever doing single destination transfers, you can safely use either. If you need to create transfers to multiple destinations, it's safer to just use transfer_split.

IIRC, the only reason transfer still exists is for backwards compatibility, i.e. to not break existing applications that were built before transfer_split was added.


You are using the wrong algorithm. Monero (XMR) uses cryptonight. However, I'm unaware that ccminer has been updated for v7 (the latest version). I suggest using software the pool recommends / supports.


How do I upgrade my software to v0.11.0.0?

CLI:

If you are using the CLI you ought to perform the following steps:

Download the new binaries from here.
Extract the new binaries to a new directory of your liking.
Copy over the wallet files from the old directory (the one that contains the v0.10.3.1 binaries).

Note that a blockchain resync is not needed. If you open monerod-v.0.11.0.0 it simply picks up where it left off.

GUI:

If you are using the GUI you ought to perform the following steps:

Download the new binaries from here.
Extract the new binaries to a new directory of your liking.
Open monero-wallet-gui^1. It should automatically load your "old" wallet.

(1) On Linux you ought to start the GUI with the start-gui.sh script.


See this answer for the messages used.
The same above linked answer should be self explanatory apart from maybe the job blob, which is a block hashing blob, e.g. the data to hash. This and this should help on that front.
The same above linked answer also has a link to an example bare-bones Python miner using the stratum protocol.


Lithium Luna CLI no connection to Daemon unable to transfer

Thanks to dEBRUYNE.  This is what worked for me.

Stop monerod
Delete p2pstate.bin
Pop the last 8000 blocks (~800 blocks / day)

  ./monero-blockchain-import --data-dir path/to/data/directory --pop-blocks 8000

Start monerod

  ./monerod

Start monero wallet CLI

  ./monero-wallet-cli --data-dir path/to/data/directory


I am told the program doesn't exist even though the ls command shows it very clearly.

Need more info here.  Sounds like monerod is just not in your $PATH perhaps?  If so, you need to use the full path to the executable.

  monero-wallet-gui. log says...

I see invalid password in the log, have you checked for sure that the password is correct? (remove all special characters / symbols to test).  Are you even using a username / password?

Are you sure that monerod is configured to accept incoming RPC on IP 127.0.0.1 and port 18081? (the default)


Help with cryptonote-universal-pool for use with other cryptonotes besides Monero

At least part of the solution might be in the answer below - address checking assumes Monero, and between various CryptoNote cryptocurrencies there are some differences in how addresses are made - see here for some explanation and you can try some XDN address in the tool to see how it is built - the difference is mainly in the network byte so any code dealing with addresses would need to be looked at and patched accordingly.

The second error is most likely due to an address being passed which doesn't match the expected format. This can be due to two reasons: either the address is really wrong (Monero addresses are 95 characters long, and start with a 4), or the pool's address being wrongly set (the pool will compare the first character of the miner address with the pool address' first character and expect the same).
The address validation code is at the end of lib/utils.js (isValidAddress). You can add traces to see which part of it fails.

With regards to merged mining support, I'm not aware of some ready-to-use solution and I don't know how to solve your problem (and I doubt many here have experience with XDN in particular, but maybe someone pops in with a better answer), it might be worthwhile to look into this pool released by the XDN team: https://github.com/xdn-project/cryptonote-universal-pool
Analyzing the difference between that one and the original might give some hints. Maybe that pool works out of the box - did you try that one as well?


Where can I find the p2pstate.bin file so I can delete it?

p2pstate.bin is stored in ~/.bitmonero on Linux and Mac. On Windows it's stored in C:\ProgramData\bitmonero.

However, the gotcha in the link you gave no longer applies: the node ID is now regenerated at random at each daemon start. Therefore, deleting the p2pstate.bin file is not necessary for that reason. It might theoretically be used to fingerprint you based on the set of known peers, but that seems quite a stretch.


You're probably referring to the concept where a vendor will accept payment, even when the payment has not been included in a block.  Sure, that works the same way in Monero that it does in Bitcoin.  The transaction in question will be visible in the mempool.  When the vendor sees the transaction in the mempool, he may decide to release goods to the customer.


How can I check the balance of a Monero paper wallet?

The procedure is a bit more involved for Monero, but you can do this in two ways:

The easy one off solution is to gather the standard address you sent to, the txkey for the transaction (you said you sent the monero, so you should have it: the txkey is the private key of a random keypair generated when you send a monero transaction: you can get it with get_tx_key TXIDGOESHERE in monero-wallet-cli), and the transaction id for the transfer. Then you run this in monero-wallet-cli again:

check_tx_key TXID  TXKEY  ADDRESS

This will check how much monero was transfered to that address in that transaction. The txkey is what allows you to unscramble the data on the blockchain for that particular transaction.

If you want to send repeatedly to your cold wallet as well as spend, the hot wallet can keep track of these, though for it to work well, you will have to process all spends via that hot wallet, for things not to get out of sync. The current commands for creating, signing, and relaying a transaction signed by a cold wallet transparently handle all of this. However, the interesting case happens when your cold wallet receives a transaction, which you want to detect spend of. You will then have to do the following:

in the hot wallet: export_outputs OUTPUTS
copy the OUTPUTS file to the cold wallet computer
in the cold wallet: import_outputs OUTPUTS
in the cold wallet: export_key_images KEYIMAGES
copy the KEYIMAGES flie to the hot wallet computer
in the hot wallet: import_key_images KEYIMAGES

From then on, the hot wallet should be able to detect a spend of those monero.

As said above, those outputs and key images import/export functions are transparently updated while doing a cold signed transfer, so you only need to do the manual version if you receive in the cold wallet, and want to detect spending of that monero without making an intervening spend.


Funds in limbo because the transaction took too long, how do I get them back?

The recipient says my transaction id is not in their system.

Assuming you sent to the correct address and the tx has been mined, you can provide the recipient with a proof of payment. See: How to prove payment

One of them looks fully completed in XMRchain.net. The other shows up in my wallet's transaction list as "unidentified recipient".

If you sent funds and the tx has has been mined (so you can find it on an explorer like xmrchain.net), the only way to "get them back" is by asking the recipient to refund you.

If you sent funds that have not been broadcast or mined (i.e. they are stuck pending), see this Q/A.

When I look up the transaction id, the confirmations are in the 4000s... How do I get the funds back?

See point #1 above.


What is the lowest fee one can pay to make a monero transaction?

According to the monero.how calculator the lowest priority (1x) fee is currently about .00168 XMR assuming 1 input, 1 output and a ring size of 5

With a more common  1 input, and 2 outputs and a ring size of 5 the lowest fee is currently about .00312

With 2 input, and 2 outputs and a ring size of 5 thelowest fee is currently about .00336

Generally transactions that are not accepted by th network are dropped from the txpool after 24 hours

EDIT: As JollyMort stated in the comment below the min network relay fee is codified  based on the transaction size divided by the block size multiplied by the block reward and a set multiple:

((TX size)/(block size)) * (block reward) * 1.2%

Individual wallet clients are free to label the different fee priority levels however they like but the math remains the same. Monero.how chooses to refer to the 1x priority fee as "lowest" and the official GUI refers to the .25x priority fee as "slow". The answer is still the same as defined in code.


I searched your transmission hash on XMRchain.org and the coins were sent.

Download the entire block chain to a computer.  Check completion status, and when 100.0%, nothing less, reconstitute your paper wallet into a real wallet, using your 25 word mnemonic seed.  Your coins will magically appear.


We are quite new into Cryptonote technology! We are looking for a web wallet!

You could use the same base that MyMonero is using. It's a really nice web wallet.

You can take a look at the source code here.


Which currencies will be supported by GloBee?

GloBee is out from beta. Check http://globee.com website

GloBee will support Monero, Bitcoin, Bitcoin Cash, Litecoin, Dogecoin and Decred cryptocurrency payments. Merchant settlements will be handled in any combination of Monero, Bitcoin and fiat currency