How do I use cold transaction signing? Cold transaction signing was recently merged into master.  How would one go about using it?

For those who don't know, this feature allows you to:

Create and export an unsigned transaction on an online machine, with a watch-only wallet.
Sign and export the transaction on an offline machine with all your secrets.
Submit the signed transaction to the intertubes back on the the online machine.

You need to have a cold and hot wallet pair for the same account.

In the hot wallet, make a transaction. It doesn't have the spend key, so instead of actually sending the transaction to the Monero network, it will save the necessary information to a file called unsigned_monero_tx (no choice of name for now).

Next step is to transfer that information to the cold wallet's computer. Depending on your degree of security, you may use a USB drive, transcribe it by hand, or find some file transfer program that uses QR codes, or whatever else you want.

On the cold wallet, run sign_transfer. This will load that file, and display the details of the transaction, then prompt you whether you want to sign it. If you do, the signed transaction will get written to signed_monero_tx. Which you get to copy back to the hot wallet computer.

On the hot wallet, run submit_transfer. This will relay the transaction to the Monero network, as well as update balance and spend state of the outputs.

Note that this system does not need the cold wallet to have a blockchain, as the unsigned_monero_tx contains all the information the cold wallet needs to sign the transaction. Only the hot wallet needs to talk to the daemon.


What’s the point of wannacry for exchanging Bitcoins to Monero? At first glance, exchanging Bitcoin for Monero makes sense. But why use Monero with an exchange, which is likely to help the police? (And which did.)

Monero transactions are private only on the block explorer. The sender has a key (view key) that allows one to view to whom and how much was sent.

So, what’s the point of using Monero in that case, rather than something that would resist investigators, like Zcash ?

In the example you are referring to, the WannaCry attackers used Shapeshift to convert Bitcoin for Monero.

Shapeshift would have access to the sending Bitcoin address (known publicly as the WannaCry address), the IP address that accessed the website, the known given outputs to the Monero address, and the receiving Monero address. Minus a few other points of metadata, that's about it.

For Zcash, the leaked data would have been essentially identical if sent to a z-address. However, since Shapeshift does not support sending to z-addresses, Shapeshift would have also had access to when the attacker moved funds from the t-address (and to where - either another t-address or some z-address).

There is no way for Shapeshift to know for certain when the funds are spent on Monero. They know which transactions use the same outputs, but these outputs are likely used in several transactions. Furthermore, the attacker could send Monero to themself to increase the output anonymity set. Investigators are likely looking at how the outputs have been transferred on the blockchain by these different participants over time. They hope to narrow down the anonymity set based on user behavior.

You mentioned the view key, but Shapeshift presumably does not have the view key of the attacker's Monero wallet.


How to manually add public nodes to your node? I want to add peers from a list to my monero node in addition to the nodes to which I am already connected or are connected to me.

I'm using monerod.conf file and add remote nodes (found here) to the end:

add-peer=opennode.xmr-tw.org:18089
add-peer=node.moneroworld.com:18089
#add-peer=node.xmrbackb.one:18081
add-peer=uwillrunanodesoon.moneroworld.com:18089
add-peer=node.xmr.to:18081
add-peer=nodes.hashvault.pro:18081
add-peer=node.supportxmr.com:18081

But after requesting get_connections to rpc node I don't see ip peers added by me from the list above.

Does --add-peer not work in the config file and  only as separate parameters when starting the daemon?

UPD: I'm trying using --add-peer as parameter and still can't see peers from the list above in response of get_connections request...

/usr/local/bin/monerod --config-file /etc/monero/monerod.conf \
    --detach --non-interactive --pidfile /run/monero/monerod.pid \
    --add-peer  opennode.xmr-tw.org:18089 \
    --add-peer  uwillrunanodesoon.moneroworld.com:18089 \
    --add-peer  node.xmr.to:18081 \
    --add-peer  nodes.hashvault.pro:18081 \
    --add-peer  node.supportxmr.com:18081

And another question, will the list of nodes to which my node has an incoming or outgoing connection will be saved and used when rebooting the daemon? Did I understand correcyly that the list of peers is stored in p2pstate.bin file?

... --add-peer  node.supportxmr.com:18081

--add-peer arg is the correct parameter, however, by the peers you are trying to add it's clear you are using the other peers RPC interface, not their p2p interface. The p2p port is 18080.

--add-peer arg is for adding p2p peers.

Also,

  But after requesting get_connections to rpc node ...

You can check which peers your node is currently connected to with the monerod command print_cn, which will show all the inbound and outbound connected peers.

  And another question, will the list of nodes to which my node has an incoming or outgoing connection will be saved and used when rebooting the daemon?

Yes.


What is the purpose of locked balance? Funds get blocked for a few blocks while sending/getting a transaction.

What is the purpose of it and how does it work?

I think the main purpose is to just prevent you from trying to spend a tx output that gets re-orged out of existence. At any point a block, or the last several blocks, or a lot of blocks can get orphaned, and the transactions included in them will be invalidated. However, the probability of a block getting orphaned decreases exponentially as more blocks are built on top of it (see the frequency of orphaned blocks here). So, it is really just a judgment call by the client software that after 'x' number of blocks there is an extremely low probability that the block containing that tx will get orphaned. In Monero the coins are "locked" for ten blocks, or what is now about 20 minutes, while in Bitcoin the core client software recommends waiting six blocks, or about 60 minutes (although the Bitcoin software refers to these coins as unconfirmed, not locked).


Comparison of Monero and Bitcoin Money Supply and Block Reward schedules How do the Monero and Bitcoin money supply and block reward schedules compare?

Are there any graphs that easily compare the two before and after tail emission begins?

If there are graphs, how was the data to generate them created?

Amichateur made a very informative post on Reddit with graphs making this comparison and an explanation of how FreeMat was used to calculate the data.

  9.4 min Bitcoin block time (de-facto avg. time since inception)
  For comparability, Monero block reward shown relates to 9.4 minutes intervals.
  The vertical line indicates the start of Monero's tail emission end of May 2022 (rate of 0.3 XMR each 1 minute).

  9.4 min Bitoin Block Time - Zoomed in
  Monero's block reward falls below Bitcoin's block reward for ca. 9 years from beginning of 2019 till end of 2027. For all other times, Monero's block reward is always higher than Bitcoin's block reward.

  10 min Bitcoin block time (but actual Bitcoin block time is more like 9.4 min)
  For comparability, Monero block reward shown relates to 10 minutes intervals.
  The vertical line indicates the start of Monero's tail emission end of May 2022 (rate of 0.3 XMR each 1 minute).

  10 min Bitoin Block Time - Zoomed in
  Monero's block reward falls below Bitcoin's block reward for almost one decade between mid 2019 and end of 2028. For all other times, Monero's block reward is higher than Bitcoin's block reward.


How can block size grow over time when miners are incentivised to keep size small? Miners are penalised if they mine a block that is larger than a threshold.

Miners can make sure that the blocks they mine don't go over that threshold in order to avoid a reward penalty (by adapting the daemon code).

One of Monero's "selling point" is the dynamic block size but since the miners have a disincentive to push large blocks, isn't there a chance that the block size will actually never grow, creating transactions backlog issues etc.?

Example: "normal" transactions use approximately 13kB, the current median block size is 65kB. Packing 5 transactions is just within the median, and the miner gets the full reward. Packing 6 transactions would cause a reward penalty of 0.34XMR. Assuming an additional transaction fee of maybe 0.02, that's a "loss" of 0.32 XMR for the miner.

TL;DR Actually, with the current minimum fee, there's an incentive for 0.6% growth as long as there's enough transactions coming in. Problem is not in the formulas themselves, but in the typical transaction size / min. block size ratio.

The penalty formula has an optimum block size increase for a set of transactions offering any given fee, see figure below.

The formula works well in the ideal case, where miner would be able to build a block targeting any % increase. If that was the case, for everyone paying the current dynamic minimum fee, the optimum would be 0.6% increase above median. A 1.2% increase would be neutral to the miner, ie he'd get the same total reward as if he just mined a full block without increase.

Problem is, the minimum feasible block size increase is around 20% (adding just 1 typical RCT TX above median). It would be rather hard for a miner to combine such transactions to consistently give an increase of 0.6% above median. He is then left with a simple choice: to add 1 TX above median, or not to. And with the minimum fee, the economical choice will always be not to add. The problem would go away by itself if the blocks would somehow expand above some threshold, as seen in the figure below. Problem is in getting there in the first place.

Currently, to make it neutral for the miner to add just one TX it would mean almost everyone would have to offer around 5$/TX with the current prices. One could argue an user would rather give up transacting then to pay such a fee, unless we're talking about very important transactions.

However, it is planned to fix this with the next HF. There are a few options:

Increase the minimum block size to such that the ratio of typical TX size and min. block size becomes irrelevant, ie to about 1.1MB (to make 1 TX = 1.2% increase). With this, the current formulas would be allowed to work smoothly, but this would make the network vulnerable if someone would want to abuse the free ride to 1MB.
Make the increase for size of 1 TX free. This would mean free increase of 20%, but ever reducing as the blocks grow. This would limit the rate at which the blocks can expand for free, but it would still be free.
Something else. One idea is to tweak the penalty formula such that the current minimum fee will always be sufficient to make it neutral to add 1 TX above the median. This is what I'm currently researching, and the draft is in some readable format at the moment. This would give us a kind of discount with the penalty until we grow up :) It would keep the cost of expansion nearly the same as in the ideal case, but remove this wall made by typical transaction size.


How can I run an open node with RPC restricted only to localhost? Currently, I can run an open node and connect my wallet from another system (with restricted-rpc to be safe)

OR

I can run the node with RPC enabled (so I can monitor from localhost, eg monerod status, monerod stop_daemon, etc) in which case I should not bind to an external IP address (correct?).

How can I configure monerod to do both?

Kind of dodging the question, but it seems to be logically impossible, so...
A way to "kinda" do both is to use a ssh tunnel to connect to your node's host, then connect through localhost, and bind RPC to loopback only.

Instructions on how to use ssh are found all over the internet, and I won't offer guidance there as I'd be more wrong than what you can find.


How do I move the blockchain (data.mdb) to a different directory during (or after) the initial sync without losing the progress? I am currently performing the initial sync to the default directory, but my drive is nearly full. How do I move (and subsequently sync) the blockchain to another drive without losing the progress?

This is, fortunately, fairly trivial and you won't lose any of the progress. It is done as follows.

If you're using the GUI, perform the following steps:

Create a new directory on the other/external drive. In addition, create a subdirectory called lmdb. Thus, if you, for example, created a directory called MoneroBlockchain on the other/external drive, you should also have MoneroBlockchain/lmdb (Linux & Mac OS X) or MoneroBlockchain\lmdb (Windows)
Go to the Settings page of the GUI and add the full path of the new directory as Blockchain location
Click in another box (on the Settings page) to ensure your settings are properly saved.
Exit the GUI and make sure to stop the daemon as well.
Browse to default directory for the blockchain (C:\ProgramData\bitmonero\lmdb on Windows | ~/.bitmonero/lmdb on Linux and Mac OS X)
Note that aforementioned directories are hidden. On Windows, you can use the explorer to manually browse to it. On Mac OS X, you can typically use CMD+SHIFT+DOT to unhide directories. Lastly, on Linux, you can typically use CTRL + H to unhide directories.
Copy data.mdb (the blockchain) to the new lmdb subdirectory directory.
Restart the GUI.
Use Show status (on the Settings) to verify that your daemon is properly syncing (i.e. fetching new blocks) to the new directory.

If you're using the CLI or running monerod separately from the GUI, perform the following steps:

[1] Exit the current monerod gracefully by typing exit

[2] Create a new directory on the other/external drive. In addition, create a subdirectory called lmdb. Thus, if you created a directory called MoneroBlockchain on the other/external drive, you should also have MoneroBlockchain/lmdb (Linux & Mac OS X) or MoneroBlockchain\lmdb (Windows).

[3] Browse to default directory for the blockchain (C:\ProgramData\bitmonero\lmdb on Windows | ~/.bitmonero/lmdb on Linux and Mac OS X).

[4] Note that aforementioned directories are, by default, hidden. On Windows, you can use the explorer to manually browse to it. On Mac OS X, you can typically use CMD+SHIFT+DOT to unhide directories. Lastly, on Linux, you can typically use CTRL + H to unhide directories.

[5] Copy data.mdb (the blockchain) to the new lmdb subdirectory directory.

[6a] On Windows, open a new command prompt from the same directory as monerod.exe. This is done by first making sure your cursor isn't located on any of the files and subsequently doing SHIFT + right click. It will give you an option to "Open command window here". If you're using Windows 10, it'll, most likely, give you an option to open the Powershell.

[6b] On Linux and Mac OS X, open a new terminal from the same directory as monerod

[7a] On Windows, type the following command in the command prompt:

monerod.exe --data-dir path\to\new\directory

If that doesn't work in the Powershell, type:

.\monerod.exe --data-dir path\to\new\directory

If that doesn't work either in the Powershell, type:

./monerod.exe --data-dir path\to\new\directory

[7b] On Linux and Mac OS X, type the following command in the terminal:

./monerod --data-dir path/to/new/directory

[8] Note that, if you're running monerod separately, you have to apply the flags every time you start monerod. Thus, on Windows, probably most convenient to create a shortcut, go to properties, and add the flags after the Target. On Linux and Mac OS X, it's probably most convenient to create a little script.

[9] Once monerod starts it should state (in the terminal or command prompt) where it's loading the blockchain from. Check whether this is the correct directory.


Do Transaction version 2 (ringct) have a different hash function or different input for computing tx hash? I can verify transactions ids with version 1 using the normal Keccak256 hash just fine. I seem to be having trouble with version 2.

For example, this transaction: https://explorer.xmr.my/tx/be9d2cf9b473dbbb2c59ffb07b5d812516f94d64121d87ad61956386a4bc3843/1

I've calculated Keccak256 on the entire transaction which yields: 190c94b59a9d90e8e6ec4ed69092161e82413c121ae0db84f3e859d2eccb9a80

Obviously, this is not be9d2cf9b473dbbb2c59ffb07b5d812516f94d64121d87ad61956386a4bc3843

The TransactionPrefix portion is correctly hashed by Keccak256 to be 1bbfda600fa6affc80dae05b1124bf05ed0e20890aa42601441dbe0f6fa81f4b

I noticed that rctOps.cpp has its own cn_fast_hash which seems to be maybe different than crypto/crypto-ops.cpp's cn_fast_hash. What's the difference if that's what I'm missing?

It turns out that for version 2, the hash is computed by combining 3 other hashes and then computing the hash of the aggregate.

To be specific, the tx hash turns out to be:

H(H(prefix) || H(RingCTBase) || H(RingCTPrunable))

Where H is the Keccak256 hashing function, prefix is the Transaction Prefix serialized, RingCTBase is the RingCTBase serialized and RingCTPrunable is the RingCTPrunable serialized.

The details can be found in src/cryptonote_basic/cryptonote_format_utils.cpp's calculate_transaction_hash.

https://github.com/monero-project/monero/blob/master/src/cryptonote_basic/cryptonote_format_utils.cpp#L604


Why is Monero more sensitive to reorganizations than Bitcoin? According to this answer Monero (CryptoNote) is more sensitive to reorganizations than Bitcoin. What specifically is the reason to support this statement?

This was touched on in another question here Why was the block time changed from 1 to 2 minutes? , and linked to this explanation. https://forum.getmonero.org/20/general-discussion/2401/increasing-the-block-time

Unfortunately smooth doesn't specifically spell it out, but my best guess is that ring signatures make reorganisations more difficult, which would make sense.


Is CryptoNight the hash function which plays the role of the "random oracle"? Is CryptoNight the hash function which plays the role of the "random oracle" in the random oracle model under which certain properties of CryptoNote are mathematically proven in the original paper? Or am I confusing concepts?

If I'm confusing concepts, what is the "random oracle" hash function in CryptoNote?

And how much do we know about the likelihood that the algorithm is good enough to reasonably approximate the behavior of a random oracle and how does that impact the validity of the proofs in the paper, do we have reasons to worry that it might have some bad behavior which would invalidate the Linkability/Exculpability/Unforgeability/Anonimity properties?

The Hp and Hs hash functions of the Cryptonote paper are called hash_to_ec and hash_to_scalar in the Monero code base, and they are based on the Keccak1600 hash function (called fast_hash in the code), not Cryptonight (called slow-hash in the code).


Where can I find the POW hash of blocks? I want to find the POW hashes of each block, which start with or end with many zeros.

This answer showed an example of the POW hash.

I tried many blockchain explorers and didn't find any one with POW hashes.

Is there an easy way to find the POW hashes, like a blockchain explorer or some python script?

To find the PoW hash of a block, you perform two steps:

get the hashing blob for that block (get_block_hashing_blob in the Monero source), which is built by serializing the block, and appending the number of transactions in that block as well as the root of the Merkle tree
run Cryptonight (cn_slow_hash in the Monero source) on this blob

If you just want to lookup the PoW hash of a particular block, you can use the print_block command in monerod, giving either a height or a block hash, eg:

print_block 87493


Why does Monero have 12 decimal places compared to Bitcoin's 8? As the title says, we all know 1 Bitcoin can be divided to 1/100,000,000th (1x10^8) of a decimal place, aka as a satoshi, but Monero divides down to 1/1,000,000,000,000th (1x10^12). Why is this? Is there some benefit to having greater divisability due to Monero's design or incentives? Or is it just because that was how the original cryptonote creator coded it so it was left in place?

The answer is both fascinating and altogether boring, in that it makes you look back to the very beginning of Monero (then "Bitmonero") and the period right after the clear-net debut of the supposedly two-years-old, dark-net-only Bytecoin.

Basically, for reasons beyond this answer's scope, Bitmonero was created as a fork of Bytecoin, the original Cryptonote implementation, shortly after people first heard of Bytecoin in 2014. It's goal was to have a fair launch of a cryptonote currency, and the original creator "thankful_for_today" decided to change up a few of the parameters of Bytecoin so it would not be a carbon copy.

One of those parameters that was changed was that the decimal point was moved: Bytecoin shared Bitcoin's definition of 1 coin = 10^8 atomic units, but had a much larger money supply of ~184 billion coins (2^64 - 1 to be exact). Because of this, block rewards were 4 orders of magnitude higher for Bytecoin than Bitcoin, which thankful_for_today did not like. So he changed it. BUT, note that he did not change the approximate money supply, 2^64 - 1 atomic units.  He simply moved the "coin" decimal place 4 places, to where Monero has an approximate money supply (before tail emission) of 18.4 million, instead of 184 billion.

We can speculate all we want about what the main motivation here was... one that comes to mind is a desire to have a money supply similar to Bitcoin's 21 million coins... but the simplest explanation is probably the best: thankful_for_today wanted to less coins and small block rewards because smaller coin quantities "is much easier for practical use" [1]. In other words, why pay 100,000 coins when you could pay 10? As for why he moved the decimal instead of changing the maximum number of coins? Most likely because it was the simpler change, and probably also because he liked the idea of having 12 decimal places because that helped make Monero more unique.

References:

Original Bitmonero Announcement Thread on bitcointalk.org
https://bitcointalk.org/index.php?topic=563821.0


Help with sending on MyMonero I just sent 6.9 monero from MyMonero, but it showed up as taking 10xmr out of my account instead of 6.9. On the receiving end it shows 6.9xmr as well. Where did the other 3.1 go?? Is that a "fee" taken by MyMonero? Any help would be appreciated.

EDIT: It's back down to the original 6.9xmr. Just had a thought, is that a secuirty/privacy measure? Showing the blockchain a different ammount than was actually sent? I just checked the transaction on chainradar and it shows 10xmr as well. If so I think that's pretty cool.

I just sent 6.9 Monero from MyMonero, but it showed up as taking 10xmr out of my account instead of 6.9.

What you described was not a mistake. It is related to how ring signatures are created and how you as the sender also are a recipient of some of the outputs.

This related question explains why your issue resolved itself:

  Once the transaction is confirmed the change is returned to your wallet. Change like all incoming transactions is unlocked after 10 blocks.

This change issue is not specific to MyMonero.com. It applies to simplewallet the same way.


Generating one time use 2FA accounts error When trying to generate cold wallets using the "Ice Cold Storage, One-Time-Use 2FA Account"; I ran into an error when trying to generate the address.  I created a randomly generated address first, but when I try to put in the 'public address' and combine it with a 2FA key it gives me this error

ReferenceError: CRYPTONOTE_PUBLIC_SUBADDRESS_BASE58_PREFIX is not defined

The public address I used was:

44e9dLBemiQRGsAgRRziBjZsCSsfNVenJEv3aRmYKR6h7XtCbUerVUC2epkxDWN4Nd1ZAw5edtnzWgubd1HXBaq21BBvcFD

and the 2FA key I chose was just:

random

Am I supposed to be inputing another type of public address?

Edit: I am using https://xmr.llcoins.net/

By putting "random" in box 10 and your address in box 11, it successfully generate a new address.
Do you still have the problem? Are you filling the same boxes?

By the way I was using the site online, which is absolutely to avoid when using the redeem function.


Run monero only in LAN I'm want to run monerod only on my LAN.  I don't want it communicate with the official blockchain.  I followed this answer except that I replaced the localhost IP with my IP:

./monerod --stagenet --no-igd --hide-my-port --data-dir node1 \
  --p2p-bind-ip 192.168.1.23 --p2p-bind-port 48080 --rpc-bind-port 48081 \
  --zmq-rpc-bind-port 48082 --add-exclusive-node 192.168.1.23:38080

./monerod --stagenet --no-igd --hide-my-port --data-dir node2 --p2p-bind-ip \
  192.168.1.23 --rpc-bind-ip 0.0.0.0 --confirm-external-bind \
  --add-exclusive-node 192.168.1.23:48080

When I run monero-wallet-cli from a difference machine, I get this error:

monero-wallet-cli.exe --stagenet --daemon-address 192.168.1.23:48081 --log-level 0 \
--wallet-file test
...
Warning: using an untrusted daemon at 192.168.1.23:48081, privacy will be lessened
Error: wallet failed to connect to daemon: 192.168.1.23:48081. Daemon either is not started or wrong port was passed. Please make sure daemon is running or change the daemon address using the 'set_daemon' command.

If I pass --trusted-daemon I don't get the warning, but I still get the error.

I am able to connect to 192.168.1.23:48081 if I run a webserver on it.

As you have started the nodes (monerod) with --stagenet, you also need to start the wallet (monero-wallet-cli) with --stagenet.

UPDATE (question edited)

It looks like both your nodes are on the same machine (192.168.1.23) so just run them like:

./monerod --stagenet --no-igd --hide-my-port --data-dir node1 \
  --p2p-bind-ip 127.0.0.1 --p2p-bind-port 48080 \
  --add-exclusive-node 127.0.0.1:38080 \
  --rpc-bind-ip 0.0.0.0 --rpc-bind-port 48081 --confirm-external-bind

./monerod --stagenet --no-igd --hide-my-port --data-dir node2 \
  --p2p-bind-ip 127.0.0.1  --p2p-bind-port 38080 \
  --add-exclusive-node 127.0.0.1:48080

Then on you wallet machine:

monero-wallet-cli.exe --stagenet --daemon-address 192.168.1.23:48081 \
  --log-level 0 --wallet-file test


Download Monero Blockchain data and the official client Is there a site where I can just download the entire monero blockchain instead of waiting for it to sync? And where do I get the official client?

Both blockchain and clients are on https://getmonero.org/downloads/.

The blockchain (https://downloads.getmonero.org/blockchain.raw) needs to be imported once downloaded. Verification is recommended, but it can be turned off for speed (current master is a lot faster for this, so the coming release will be too).

Current master is also much friendlier on the download size needed (barely more than blockchain.raw).


How to check balance of Cold Storage Monero Wallet, easily, when privacy of balance is not an issue? I am aware similar questions have been asked - but I could not find the exact answer I seek.

In the situation of:

The user has a cold storage wallet, made on an airgapped computer,
and has written down both the mnemonic seed / public key / view key.
The user has received multiple deposits to this wallet, with has no record of the transactions ID's and/or some transfers sent with
no transaction ID.
The user does not care if the world can see their balance - but funds must be safe.
Seeking a solution using either a website, or Monero Gui Wallet. (no cli)

How can the user simply check the balance of their cold store wallet under these conditions?  Are there any security issues with the above conditions?

--

It seems like it should be as simple as just entering one's view key into a website and/or Monero Gui Client.  Is it actually that simple? How to do that?

The view key detects incoming funds, and that is not enough to determine balance.

There is an easy way to do so, however: import your account on mymonero.com. There is a (currently) 1 monero fee for the blockchain scanning, but this will end up showing you your final balance. Of course, your wallet isn't cold anymore by that time.

A less easy solution, which keeps your wallet cold, is to export key images from your cold wallet, so the matching hot wallet can compute the final balance. See Can the import\export key images command can be used to check the balance of a paperwallet? for the details.


How do I connect the GUI wallet to a TLS remote node? I have a Monero node running in a cloud container, configured as a public node:

monerod --rpc-bind-ip 0.0.0.0 --confirm-external-bind --restricted-rpc --non-interactive

I have a reverse proxy sitting in front of it that does SSL termination such that you can access the RPC at https://example.com:443/json_rpc and get a successful response

curl -X POST https://example.com:443/json_rpc  -H 'Content-Type: application/json' - '{"jsonrpc":"2.0","id":"0","method":"get_version"}'

returns

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "status": "OK",
    "untrusted": false,
    "version": 131073
  }
}

However, when I enter my node details (example.com and 443) into the remote node and port in the GUI it doesn't successfully connect.  I'm not sure where I can see more details on the error.

Searching online suggests that using a reverse proxy is the proper way to secure the JSON-RPC from prying eyes, but I can't find any information on how to connect the GUI to such a node.

Neither the CLI or GUI have support for SSL RPC connections. Therefore you have to proxy both server and client over SSL. You can setup a client stunnel proxy to point to the node that is fronted by an SSL proxy and then in the GUI, specify the remote node as localhost and your stunnel client port.


Does the Coinomi wallet have a copy of your private view key? How do they make transactions? The Coinomi mobile wallet now has Monero integration. When making a transaction, does the wallet send the private view key to Coinomi servers to perform the transaction?

Coinomi monero dev here!

The server maintains a copy of the private view key to scan the chain on behalf of the wallet. However, this view key is not stored persistently, it is only kept in memory. The server only stores the hash of the address/private view key and uses that for maintaining the account inputs and outputs. This works exactly the same way as MyMonero/openmonero.

Creating and signing a transaction happens strictly on the wallet, except for the output selection part that is done using monerod.


How do I connect to a pool? I am using Putty via a VPS.  I have my wallet set up and can mine using start_mining.  I know how to access my wallet using ./monero-wallet-cli.  What I don't know is the command to use to connect to one of the pools out there.  Any help would be appreciated.

If you want to join a specific pool for example monerol.com, you can go to its getting started page which is http://monerol.com/#getting_started

As you can see there are many ways to connect to the pool just select the mining app of your choice. Normally, a VPS does not have GPU so select the one that support CPU mining. For example  you can use minerd like this

minerd -a cryptonight -o stratum+tcp://monerol.com:3333 -u YOUR_WALLET_ADDRESS -p x

You can install minerd by downloading and compiling it. The source is at https://github.com/wolf9466/cpuminer-multi

Edit: Another miner which is good is called xmr-stak-cpu you can get its source code here https://github.com/fireice-uk/xmr-stak-cpu

Hope this helps.


Check the Balance of Cold Storage Address - Block Explorer I’ve realized, if you want to check the balance of a cold storage address, you can setup a view only wallet in the Monero GUI client.

How does this compare with using Onion Monero Blockchain Explorer via clearnet version - Explore Monero (not to be confused with Monero Explorer) in a Tor Browser?

Monero isn't like Bitcoin, so you can't just go to a block explorer and enter in your wallet address and ask the block explorer to tell you what funds you own.

Monero needs to perform computation on every single transaction in the blockchain to scan for incoming transactions. The block explorer won't do this for you, so you don't be able to use it to see your balance.


Low XMR-STAK hash rate on two cards in a 8 card Linux NVIDIA rig Recently I switched from windows to ubuntu server 16 in order to support more than 8 nvidia cards. However before even getting to install more than 8 cards, I see some issues with the hash rate. (running XMR-STAK, latest. CUDA 9.0, latest. Latest NVIDIA drivers, Ubuntu server 16 latest build, clean install) Check out the 60 seconds and 15 minutes averages. Ran it overnight and the problem persists.

As you can see, cards 0 and 2 (1060 and 1070) are woefully underperforming, even compared to identical cards on the same rig that were ordered at the same time and are the same age. Strangely, in windows, this problem does not occur.

My config.txt:

"cpu_threads_conf" : [
],

"use_slow_memory" : "no_mlck",

"nicehash_nonce" : false,

"aes_override" : null,

"use_tls" : false,
"tls_secure_algo" : false,
"tls_fingerprint" : "",

"pool_list": [
    {
        "pool_address" : "nyc01.supportxmr.com:7777",
        "wallet_address" : "omitted",
        "pool_password" : "omitted",
        "use_nicehash" : false,
        "use_tls" : false,
        "tls_fingerprint": "",
        "pool_weight": 640
    }
],

"call_timeout" : 2,
"retry_time" : 2,
"giveup_limit" : 0,

"verbose_level" : 4,
"print_motd" : false,

"h_print_time" : 30,

"daemon_mode" : true,

"output_file" : "",
"flush_stdout" : false,

"httpd_port" : 0,
"http_login" : "",
"http_pass" : "",

"prefer_ipv4" : true,
"currency" : "monero",

My nvidia.txt: (I tried with default settings as well, these are modified settings but it does not help at all)

    "gpu_threads_conf" :
[
  // gpu: GeForce GTX 1070 architecture: 61
  //      memory: 8013/8114 MiB
  //      smx: 15
  { "index" : 0,
    "threads" : 10, "blocks" : 120,
    "bfactor" : 0, "bsleep" :  0,
    "affine_to_cpu" : false,
  },
  // gpu: GeForce GTX 1060 6GB architecture: 61
  //      memory: 5993/6072 MiB
  //      smx: 10
  { "index" : 1,
    "threads" : 8, "blocks" : 120,
    "bfactor" : 0, "bsleep" :  0,
    "affine_to_cpu" : false,
  },
  // gpu: GeForce GTX 1060 6GB architecture: 61
  //      memory: 5993/6072 MiB
  //      smx: 10
  { "index" : 2,
    "threads" : 8, "blocks" : 120,
    "bfactor" : 0, "bsleep" :  0,
    "affine_to_cpu" : false,
  },
  // gpu: GeForce GTX 1070 architecture: 61
  //      memory: 8013/8114 MiB
  //      smx: 15
  { "index" : 3,
    "threads" : 10, "blocks" : 120,
    "bfactor" : 0, "bsleep" :  0,
    "affine_to_cpu" : false,
  },
  // gpu: GeForce GTX 1070 architecture: 61
  //      memory: 8013/8114 MiB
  //      smx: 15
  { "index" : 4,
    "threads" : 10, "blocks" : 120,
    "bfactor" : 0, "bsleep" :  0,
    "affine_to_cpu" : false,
  },
  // gpu: GeForce GTX 1060 6GB architecture: 61
  //      memory: 5993/6072 MiB
  //      smx: 10
  { "index" : 5,
    "threads" : 8, "blocks" : 120,
    "bfactor" : 0, "bsleep" :  0,
    "affine_to_cpu" : false,
  },
  // gpu: GeForce GTX 1060 6GB architecture: 61
  //      memory: 5993/6072 MiB
  //      smx: 10
  { "index" : 6,
    "threads" : 8, "blocks" : 120,
    "bfactor" : 0, "bsleep" :  0,
    "affine_to_cpu" : false,
  },
  // gpu: GeForce GTX 1070 architecture: 61
  //      memory: 8013/8114 MiB
  //      smx: 15
  { "index" : 7,
    "threads" : 10, "blocks" : 120,
    "bfactor" : 0, "bsleep" :  0,
    "affine_to_cpu" : false,
  },

],

Does anyone have any tips to what could be causing this or potential things I should try?

Thank you for any help!

It's been some time since last time i mined with Nvidia GPUs, but let's try with some tips.

First of all, there are 2 versions of the last xmr-stak (2.0 and 2.1). I tried both (amd) and had slighlty better results from 2.0. I encourage you to try both.

Let's recommend you some settings:

-About blocks: take note of the number of SMX of your cards (10 for 1060 and 15 for 1070). The default first config run by xmr-stak its 3 times smx (30 for 1060 and 45 for 1070). If you are fine tuning, you want to increase this value smx times value each test (30-40-50 and so on for 1060; 45-60-75 and so on for 1070). blocks value must be multiple of smx.

-About threads: all i have to say about threads its that they have to be multiple of 8 (8,16,24,32 and so on).

Ok, being explained that, i can recommend you, if you are using, lets say GPU0 for display, to put some bfactor (8) and bsleep (100), just in the card its displaying image. You can do this for testing purposes, if you dont notice improvement and/or stability, just leave it both 0.

Before proceeding on testing, please leave all cards on stock settings (clocks and voltage), and test fine tuning EACH CARD AND EACH SETTING (B or T) per test, because if you fine tune more than 1, it will be hard to know which one is crashing if the system crashes.

Some good combinations? you have to try by yourself. I have seen 8x160 and/or 80x30 gtx 1060s doing over 500H. Those values complies with the rules above explained. For the 1070s you can start with 8x45 and going up with blocks in increments of 15 (smx value) each test.

Last, but not least important, remember VRAM consumption and 2Mb rule. If you want to know how much RAM will it cost the card with each settings, multiply B*T*2=VRAM used. So, a 80x30 value in a gtx 1060 will use about 80*30*2= 4.8GB of VRAM. You cannot run a setting with more than available GPU VRAM, it wont work.

Remember to document each result, to ensure you can max out your perfomance. Fine tuning is the most beautiful and time consuming activity when mining. Im pretty sure you will have so much fun and will spend a good chunk of time fine tuning each card.

Last recomendation: start with "threads 8", fine tune blocks number accordly until you find the limit (unstable mining and/or crash or GPU VRAM limit). Take note of the last good value, both for settings and hashrate. After you have managed to do so try with "threads 16", rinse and repeat. It can be the case that your card likes a middle value instead of so much blocks or threads.

Its a lil long post, but i think i have include most basics here. I dont get tired of this: TEST EACH CARD, dont think that because you found a good setting in one card, lets say, a GTX 1070, it will work in another GTX 1070 just fine. Nothing more wrong about that. There is something called "silicon lottery".

Once you have found nice limits in all of your cards, proceed with overclock/undervolt or w/e you want to do in smi. Again, for EACH CARD separately. never assume a setting will work in another GPU, even if they are twins. This guide works with every NVIDIA card. I hope this helps. Kind regards...


wallet rpc call login parameter format please? I have been using monero-wallet-rpc with --disable-rpc-login so far with success, but would like to start authenticating my calls. Can someone please post what the username and password fields are defined as?
I tried curl:

curl -X POST http://<username>:<password>@127.0.0.1:18082/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getbalance"}' -H 'Content-Type: application/json'

(where <username> is my username) and also the python requests library using parameters 'username' and 'password' in my payload but had no joy. Also I'd ideally just like to point at the password file autogenerated by monero-wallet-rpc rather than having to read it etc. Any help in this direction would be really appreciated, thanks!
I also see sporadic talk online of a 'user agent' ... any documentation of this at all?

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.


Are there any lightweight Monero wallets? I'm new to this amazing ecoin, but a bit frustrated that I could not find any user-friendly lightweight wallet for Linux.

I have downloaded moenro-gui-linux but it takes ages to synchronize the blockchain. Hence the question.

You can use a remote node to sync your Monero blockchain, please read the following:

How can I use Monero without syncing the blockchain?


What is "output" in block? I am new to Monero. In detail of a block, eg 09d3dd1f2c1e167fac4df453fcce727157192217466055a60bc57490a272f564

It has 4 transactions and the outputs of them are all "?" mark.

I would like to know what "output" is. Is it amount of transaction? Why is it "?" mark in block detail?

Outputs are where amounts of Monero are "stored".

The blockchain consists of a set of transactions. Each transaction spends existing outputs and creates new outputs (typically one new output for the recipient and another new output to send change back to yourself). Each output has an amount of Monero associated with it. The output also has a unique public key, and only the recipient is able to determine the private key that is required to spend it.

In the blockchain explorer, it's marked as "?" because the amounts of Monero outputs (since the introduction of RingCT in January 2017) are encrypted and opaque to everyone except the sender and recipient. Pre-RingCT outputs had unencrypted output amounts, e.g. https://xmrchain.net/block/45eca0b6c1845c073d365fedb78ab14e4313d6392a2fde217a46882875428463


How to mine with NVidia GeForce GTX 560Ti on Linux? The questions is in title. Been surfing a bit, and I'm not aware of any software which allows mining with Nvidia GPU on Linux.

We support with xmr-stak-nvidia all gpus from fermi up to the current available pascal generation.


add_address_book does not save after closing wallet I am trying to work with the add_address_bookfunction https://getmonero.org/resources/developer-guides/wallet-rpc.html#add_address_book

I have noticed that I can add and get the addresses, but when I close the wallet and daemon and then reopen them, the address book is emtpy.

has anyone ran into this issue?

Okay, so I found the problem. It was because when I close the wallet, I need to issue the stop wallet command before I close the wallet, otherwise the cache is not saved. https://getmonero.org/resources/developer-guides/wallet-rpc.html#stop_wallet


unable to see wallet balance using simplewallet restore So I have been trying to restore my wallet using the seed and simplewallet, it asks for a wallet name, then a password and finally my seed, it says my wallet has been opened.

Then I set refresh and says 0 balance however I'm 1001% sure there's balance.

And I've received the message on bitmonerod.exe that I was syched

Currently synced 51127/1123555

Is this normal? Should I be seeing my balance already?

thanks...

You should be able to see your balance when it is fully synced, i.e 1123555/1123555


How does the daemon determine the recipient address of the mining reward? One may connect from several different wallets to the daemon. Mining is done on the daemon.

In case a block is found, which wallet/address will the reward be credited to?

When solo mining, the block reward is given to the address which was set in the coinbase transaction. Technically, I think there is no reason why the coinbase transaction could not contain several outputs to different addresses, but there is no support for creating those at this time.

You supply the address as an argument to the start_mining command, eg:

start_mining 4xxxxxxxxxxxxxx 2

will start mining on two threads to the given address.


Is there a monero vanity address generator? Is there a xmr vanity address generator where you can type in a string and it will keep generating until it matches your criteria?

I want to find an address with my name in the beginning of it. Which characters are not allowed in a xmr address?

Go to https://xmr.llcoins.net/ and open up the Javascript console. Then run the command:

while(document.getElementById('pubAddr').value.substring(2).toLowerCase().indexOf('ABC'.toLowerCase())!=0) allRandom(); alert('done');

or to make a case sensitive match:

while(document.getElementById('pubAddr').value.substring(2).indexOf('ABC')!=0) allRandom(); alert('done');

(replacing 'ABC' with the string you're looking for).

Beware, brute force generation of Monero addresses requires elliptic curve multiplication, which is a slow operation. If you attempt a match that is longer than 2 or 3 characters, expect a wait of several hours. The time required for a match will rise geometrically with each additional character in the match string.

Monero addresses are represented in base 58, so you can have any alphanumeric characters excluding 0 (zero), O (capital o), I (capital i) and l (lower case L).


transfer fails with invalid output I'm using the latest monero-wallet-cli version Monero 'Boron Butterfly' (v0.14.0.2-release) on linux. When I try to submit the transfer, it throws the following error:

Error: transaction <txid> was rejected by daemon with status: Failed
Error: Reason: invalid output

Additional Info:

I'm using a remote node (moneroworld), I know, I know, but I don't have a SSD so monerod would take a looong time to sync
I already recreated the wallet and refreshed it, to no avail
I tried rescan_bc but it took a long time and finished after block 85000 or so

Can anybody help me?

You're most likely using an old daemon, which cannot understand the new transaction output format. This is what you get for using some random daemon from somewhere on the internet :)

Either use your own, or find a sane one.


What is the height used for when creating a View only wallet in monerujo android app? On the android monerujo app what is the height used for when creating a view only wallet? I put in my public address and my secrete view key. Or should I use my public view key?

The scanning takes a long time since its starting from zero. I'd imagine it has something to do with setting the height? But what number do I even put there?

To determine the starting height, you can use a block explorer to get an idea of what block was mined on what date.

For example, if you know you created your portfolio in July 2017:

Go to a blockchain explorer, such as Monero Blocks
Check the current height (~ 1,470,000 as I write this answer)
Calculate roughly the number of days since you created your portfolio: we are in December 17, so approximately 6 months x 30 days = 180 days.
Multiply by 720 (see note*) to calculate the number of blocks since that date: 180 x 720 ~ 130,000
Subtract from the current height: 1,470,000 - 130,000 ~ 1,340,000
Check the timestamp of that block on the same website: 25th of June 2017

So you can use 1,340,000 as a starting height and not miss any transactions.

*Note: I'm using 720 for the daily block emission - it was different before April 2016 so if your wallet was created before that date the calculation won't work. But for such an old wallet you may as well start from height 0.


RPC 'create_address' after restart daemon creates same addresses again When I restart the daemon the method 'create_address' somehow cycles already used addresses (not used as in received monero but already created before).

is there a way to prevent the daemon from returning the same address twice?

Subaddresses are deterministic, so the same index will yield the same address. If the wallet daemon is returning repeat addresses, it means it does not remember it has already gone through them. Most likely, you did not save before stopping the wallet daemon. Call the store RPC before quitting, or after generating a new subaddress (saving can get slow for large wallets, so you may want to save on a timer instead in that case, details will depend on your particular conditions).


Multisig wallets cannot spend non rct outputs I'm experimenting with multisig wallet on private testnet. I have followed this tutorial: How to Use Monero Multisignature Wallets (2/2 & 2/3) but when I try to transfer from multisig wallet I get:
{
  error: {
    code: -4,
    message: 'Multisig wallets cannot spend non rct outputs'
  },
  id: 0,
  jsonrpc: '2.0'
}

What's the reason and how can I overcome it?

This was not implemented. Multisig came after rct, so there should not be pre-rct outputs in multisig wallets. It is possible to have code that spends those, it's just that there is no such code currently.


When compiling from source, do we git checkout release-v0.17 or latest (currently v0.17.1.9)? In the docs, we are told to run git checkout release-v0.17.
But according to releases, latest release is currently v0.17.1.9.
Which one should be checkout?

Figured it out... release-v0.17 for sure (last commit was 13 days ago).
Latest release (currently v0.17.1.9) was released on Jan 8 (months ago).


How vulnerable is Monero to Quantum Computing? Elliptic curve cryptography, which is used in Monero, is vulnerable to QC. Would Monero be more vulnerable than Bitcoin, because the addresses contain public keys, not hashes of public keys? What plans are in place to deal with future QC concerns?

From Monero developer Smooth:

  “Yes it would be more vulnerable (with regard to public keys) but the protection it affords if uncertain and fragile. If QC can crack keys "slowly" then you can safely move coins from an address that hasn't been spent before to a new quantum-resistant output (assuming such a thing is implemented). But if QC can crack keys "quickly" (before any spend attempt is deeply buried in the blockchain) then any attempt becomes a race to securely move your coins before an attacker can steal them. I doubt Bitcoin would survive the latter.”

Source: Reddit

From Monero developer/researcher (Monero Research Lab) NobleSir:

  “Once the current round of improvements is finished (apps/ guis/multisig/etc) the attention will likely move to quantum secure, and hopefully by then there will be more signature implementations available to choose from. Hopefully a Bernstein type will have coded the new ref for quantum. Note that a lot of the necessary math (i.e. ring sigs / one time keys) has been studied already in the literature.”

Source: Reddit

One possible replacement for more conventional schemes like RSA and ECDSA is Sphincs. See: https://github.com/jedisct1/libsodium/issues/371


What exactly are side chains? Monero could implement side chains at some point. What exactly are they? Monero can exit and enter them, for example.

Side chains are blockchains that Monero can be moved to and from with a form of pegging.

Decentralized sidechains will need miners to secure the network for the same reason miners are needed to secure Monero. For this reason adding sidechains only make sense once the main chain has achieved a high enough hashrate to be very secure.

Federated sidechains have the potential potential to eliminate the need for a P2P mining network but at the expense of decentralization. Some level of trust would need to be put into 3rd parties with some sort of multi-signature setup.

Sidechains are often discussed as potential ways to allow additional features (but sometimes at the expense of security or centralization). Since Monero has an adaptive blocksize and privacy as a core focus there appears to be no immediate need to create a sidechain.

Monero research goals include sidechains that could bring many additional features to Monero in the future.


Could a DDoS attack on the hardcoded seed nodes bring down the Monero network? I've seen a list of hardcoded seed nodes in the Monero code. If somebody DDoSed these IPs until their servers crashed, would it be enough to bring down the Monero network? If not, what effect would it have?

It would not bring the monero network down. At most, it would prevent new nodes from adding to the network.

The seed nodes are "well known" nodes which act as the first port of call for newly setup nodes. Once a node is already in the network, it does not need the seed nodes. If a node stops and is then restarted after a delay, the list of known peers is kept in the p2pstate.bin file, so seed nodes are not needed either (though they are still contacted).

If a DDoS happens, new nodes still have the ability to connect to the Monero network from scratch with the --add-peer argument to monerod, eg:

./monerod --add-peer 1.2.3.4:18080


How to solo-mine Aeon? Suppose one has the Aeon software built and installed, how does one then initiate solo-mining Aeon using the CPU?

If you don't want to have the target Aeon wallet open all the time (for security reasons, or you prefer to start mining at system startup non-interactively), you can also start solo CPU mining using the daemon itself. Example syntax (replace the placeholders with actual values obviously):

aeond --start-mining <target-aeon-wallet-address> --mining-threads <number-of-CPU-threads>

Finding the number of available CPU threads:

On macOS, you can show the number of available threads with sysctl -n hw.ncpu.
On Windows, you can see the number of available threads with the msinfo32.exe utility. In there, go to the "Processors" line, and note the number of "Logical Processors".

Once the daemon is active, you can enable and disable displaying the hash-rate with the show_hr and hide_hr commands. This is optional, mining still works if you don't show the hash rate.

When you're lucky to mine a block, you'll see something like this in the daemon logging:

2017-Jan-20 12:58:36.932824 [miner 0]Found block for difficulty: 224668625


What are the pros and cons of relaunching Monero? Monero has evolved considerably over the years, and some of the "legacy" and historical facets prove to be sub-optimal (payment IDs, emission curve, mixin 0 transactions on the blockchain, hardcoded blocks due to attacks, etc).

Considering that Monero is in of itself an exercise of the philosophy that its better to re-code and create anew (as opposed to improving upon - i.e., why didn't Monero supporters just improve bitcoin), why would Monero stop itself from creating a blockchain without the historical baggage?

(and yes I speak of Monero as an entity for the sake of simplicity)

The biggest con is that monero has a lot of stakeholders, and it would be a challenge to convince them to switch to a new chain. This would sort of be the ultimate hard fork. You could potentially start a new chain bootstrapped with the current output set so that stakeholders all still have the same amount of the new monero, but in that case I'm not sure much is to be gained by rebooting.


How to set up Monero GUI wallet + Trezor on Tails I have Tails 4.2.2, Trezor T firmware 2.2.0 and Monero GUI wallet 15.0.2. There is a lot of help on how to get the GUI wallet and Trezor working as well as GUI wallet and Tails. However, there is no user guide on how to get all three working together with a full or remote node.

The questions/problems I have are:

1) Would I need the Trezor bridge for the GUI wallet (I know I need it for updating the trezor firmware, but this is done elsewhere)?

2) Why would the wallet not recognise my Trezor T when setting up a hardware wallet in Tails? I read the problem should have been solved with version 15.0.2.

3) Do I need to change the iptables settings or any other settings?

Thanks!

You shouldn't need the Bridge as that is for browser <=> USB communication.
It is supposed to work out of the box. If it doesn't, you probably need udev rules setup so the OS can see the device: https://wiki.trezor.io/Udev_rules -- note, if you want these to persist, you need to specially configure that (or copy them each reboot)
Tails sends all traffic over Tor, so I believe (may be wrong) no port config should be needed.  You will probably need to run with torsocks however. This might be helpful: https://garlicgambit.wordpress.com/2017/01/15/monero-how-to-connect-wallet-to-tor-onion-service-node/


GUI can not start daemon on OSX OSX 10.10.5
downloaded Monero GUI, I see "Wallet is not connected to daemon", when I click on start daemon, I see "Waiting for daemon to start". Then again "Wallet is not connected to daemon"
I have used command line Monero 0.10.0.0 before that worked ok, and then since I downloaded 0.10.1.0 and start that on the command line with ./monerod, I see "Bus error: 10"
What can I do to get a wallet running again?

The GUI wallet came packaged with a node compatible with the wallet. If you are running a node in the background while starting up the GUI try shutting it down and just start the GUI by itself. The node will start up and the GUI should run properly.


Why is the content of tx different between monero-utils-deserialize and print_block? I built a private testnet with reference to https://github.com/moneroexamples/private-testnet.
When I used monero-utils-desirialize to check the public tx key, I noticed that the displayed tx content was different from the print_block command of monerod.

First, in monerod

  print_tx
  f7356602a1b6e3efaf66d3ef96cc797384b03de8e8447c57457e52935da8c0b1
  Found
  in blockchain at height 760
   print_block 760

Then the following tx information was output.

Second, using the output of

  print_tx
  f7356602a1b6e3efaf66d3ef96cc797384b03de8e8447c57457e52935da8c0b1 +hex

I executed monero-utils-deserialize. Then the following was output.

I found that the extra pub key was what I wanted. However, I was worried that the contents of tx were different between print_block and monero-utils-deserialize.

Why is there a difference between the two?

A block is not a transaction. Obviously, if you print different things, you will get different results. This should not come as a surprise.

A block may contain more than one transaction (in addition to the coinbase transaction). It appears you are comparing the block's coinbase transaction to the transactiou you had the txid for. These things are also different, and will give you different results.


Clarification about old generated addresses? I often create a batch of wallets (on an air gapped RaspberryPi) for later use. But would like clarification on a few things:

1) With these recent forks, are wallets I created with the 0.11.1.0 cli (or older) invalid or have the potential to decay in anyway?

2) Can empty wallets from the batch still be used with the latest client 0.12.0.0 and beyond?

3a) Is a wallet/address that was never used (e.g. no initial deposit) invisible on the monero blockchain (since no transactions took place)?

3b) Is it correct that: whether the wallet was generated several months ago, or yesterday; only when a deposit/transaction is created will be the first time the monero blockchain knows about it?

I would answer the questions grouped.

1 and 2:

The address format has not changed from 0.11.1 to 0.12. So all monero addresses that you generated are still valid and you can send to them with 0.12.0 wallets.
But to move the funds again from a 0.11.1 wallet you need to set the ring size to 7 manually since otherwise the 0.12 v7 network would reject your transaction. Use the following command on the cli

  transfer 7 ADDRESS AMOUNT

More information is available here.

3a and b:

Short answer is No.

The blockchain will never know about your addresses. It only saves, transactions, so it will never know about the addresses you generate with your wallets.
Monero also uses stealth addresses, so each transaction you are receiving will not have your address linked to it. The transaction will go to a unique address that is displayed on the blockchain but there is no way for anyone without your private view key to know that the unique address on the blockchain belongs to your generate address.

Bonus you mind want to look into sub-addresses in order to reduce your batch creation overhead. (You will get multiple addresses from one wallet so only one backup seed is needed.)


Can't verify Gitian deterministic build signatures with GPG I pulled this repo: https://github.com/monero-project/gitian.sigs

Using GPG 2.2.17 on windows 7 x64.

Imported contributors' pub keys by python verify-merge.py -i with no problems and gpg --list-keys shows it's okay.

When I try to check signature manually it fails:

C:\monero\monero-gitian\v0.15.0.1-win\dikdust>gpg --verify monero-win-0.15-build.assert.sig
gpg: assuming signed data in 'monero-win-0.15-build.assert'
gpg: Signature made 11/24/19 21:06:59 UTC
gpg:                using RSA key 7A499ECDBF8A30A8B3B8A190144D6E86DA9446B8
gpg: BAD signature from "Antonio Alessio "dikdust" Di Pinto <dikdust@gmail.com>" [unknown]

C:\monero\monero-gitian\v0.15.0.0-win\hyc>gpg --verify monero-win-0.15-build.assert.sig
gpg: assuming signed data in 'monero-win-0.15-build.assert'
gpg: Signature made 11/11/19 00:30:50 UTC
gpg:                using DSA key 9404619A9BA7CB5F799E0EA1FD2A70B44AB11BA7
gpg: BAD signature from "Howard Chu <hyc@symas.com>" [unknown]

Obviously, python verify-merge.py fails to check the signatures.

What is wrong?

I found out that the problem was in line endings.
On Windows it's defaulted to CRLF of course with core.autocrlf set to true.

If I manually change line endings to Unix-style LF all checks pass okay:

C:\monero\monero-gitian\v0.15.0.1-win\dikdust>gpg --verify monero-win-0.15-build.assert.sig
gpg: assuming signed data in 'monero-win-0.15-build.assert'
gpg: Signature made 11/24/19 21:06:59 UTC
gpg:                using RSA key 7A499ECDBF8A30A8B3B8A190144D6E86DA9446B8
gpg: Good signature from "Antonio Alessio "dikdust" Di Pinto <dikdust@gmail.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 7A49 9ECD BF8A 30A8 B3B8  A190 144D 6E86 DA94 46B8

My suggestion: *.assert files should be considered as binary.


Bitfinex to Poloniex - Payment ID Newbie here..

I have some XMR in bifinex and want to transfer them to Poloniex. Bitfinex asks for a Payment ID while Poloniex just shows an XMR address and not a payment ID. Where can I check it in Poloniex?

Please help.

Thanks
TnnJ

Payment ID is provided by the receiver of funds. In poloniex, It can be the case that they use Integrated addresses (where the payment ID its already attached to the public address). If its the case, you dont need to put Payment ID in bitfinex when sending to polo. Looking at this tweet seems to corroborate the above description. I hope this helps. Kind regards...


How do I start the GUI for a testnet wallet? I started the Monero Wallet GUI and ticked the Testnet checkbox at the opening page. I imported the testnet wallet from file, that was created in the CLI. After entering the password, I get the following error:

Rahter than clicking on the app from the Applications folder (macOS), I also tried starting the GUI from a Terminal, with the following command: /Applications/monero-wallet-gui.app/Contents/MacOS/monero-wallet-gui --testnet, but after trying to open the wallet, that threw the same error. Any ideas what I'm doing wrong?

There's a bug in the gui beta preventing the testnet setting to be saved when opening wallet from file. As a workaround you can create a new testnet wallet and then close and reopen your old one. When you switch back to main net you need to repeat the same procedure: Create a new main net wallet before opening from file.


Does the key vector approach in RingCT represent linkability among transactions? Can it be exploited by blockchain analysis? As I understand from MRL-0005 (Definition 4.1 in page 9), when creating a RingCT transaction with, say, m inputs, n outputs, and q mixin, the i-th member (where i=0...q) of the ring signature R is constructed using output keys {P[i,j]}, their associated commitments {C[i,j]}, and output commitments {C_out[k]} where j=1...m and k=1...n. Due to the use of key-vector in MLSAG, the signature proves that there is one secret index s such that all of {P[s,j]|j=1...m} belong to the same sender. Even though no observer can tell such s, this seems to me like a slight but certain leak of information about potential links among transactions. Can this information be possibly exploited by future blockchain analysis? Is this a legit concern?

One possible direction for improvement I can think of would be to increase the number of members in R exponentially, ie. |R|=(q+1)^m. For example, in the case of m=2, the (i,j)-th member of R (where i=0...q and j=0...q) would be defined using P[i,1] and P[j,2] along with C[i,1], C[j,2] and {C_out[k]}. This way, it is no longer possible to assume the existance of such s as above. Was this kind of idea already discussed in MRL?

smooth (and I) expressed concern about this same thing during the implementation. The good news is Shen came up with an alternate construction where one MLSAG is used per input rather than combined (see here and below).

With the new construction the single secret index goes away, and we get a straight improvement on untraceability due to less inputs on average. I don't think the proof for the new construction is published anywhere; that would be a good thing to add to the document.

It also wasn't really compatible with existing Monero transactions in the original form for more than one input, as they reference (and order) inputs by offset rather than by key or arbitrarily.


What are the chances of Monero having a marketplace similar to Openbazaar? I realize this would likely need multisig, but are there any plans to add Monero support to Openbazaar? Whether by the OB developers or could we get a FFS to get people working on it to PR the code to the OB repo?

That's exactly right, OpenBazaar isn't opposed to other integrations and all PRs will be reviewed. And while multisig is definitely an important part of another cryptocurrency getting accepted, adding in support at all would be a significant undertaking. We've tried to make the code more modular in the 2.0 server version, but Bitcoin is a core aspect of the code and any attempts to add Monero or any other currency shouldn't be taken lightly. If anyone is serious about such an effort, we recommend contacting the devs first in our Slack: http://slack.openbazaar.org"


Mining intermittently throughout the day New to this and on a slow learning curve. Mining with cpu at approx 80-90 H/s. I only start the daemon when I am working on my computer. So on-and-off many times throughout the day. Besides being inefficient, will this prevent me from being rewarded with coins or will it just take a lot longer? Should I set the cpu never to go to sleep while mining?

at that hash rate even running 24/7 you'll be lucky to make .5 coins in a year depending on your pool

if you're just having fun testing then go ahead

if you actually want to make coin you need a lot more hashing power - try adding at least one GPU

there should be no issue leaving your CPU (and GPU) running 24/7 running as long as you have enough cooling and airflow


What is the purpose of running a Monero node? Why should I keep a Monero node running? Will I be making profit from network fees from transfers?

Purpose is to independently transact yourself, and verify the blockchain state yourself. If you don't need to transact or check transactions, you don't need to run a node.

If you don't run a node, you must rely on others to do the checks for you and broadcast your TX to the network when you want to transact.

And no, nodes don't make any profit unless they also mine.

For average user behind NAT (like me), he's hardly contributing to the network (as he's not accepting connections, and is connected to 8 open nodes by default) and his node is mostly of use to only himself. Nodes with lots of connections and high bandwidth are those which actually matter to the network and form its backbone: nodes of pools, exchanges, wallet providers, block explorers, big services, enthusiasts etc. and they're incentivized by their own (mostly economic) interests, and not by direct monetary incentive.


Is there any enforcement on a transaction output being associated with an address? As far as I understand, Monero allows Alice to create a public key for Bob that only Bob knows, on the fly, by using the following mechanism:

Bob's address:  A = aG, B = bG, where only Bob knows a and b.

Alice's creation:  R = rG, P = h(rA)G + B

This allows Bob to know that the private key of P is equal to h(aR) + b.

My question is, is this key creation process enforced?

For example, could Alice send money to a different P that is in no way associated with an address A and B, and is instead an arbitrary P = xG and simply generating a random unassociated R?  Or is there a mechanism that I am not aware of that somehow prevents this?

My suspicion is that this is a valid maneuver, as it doesn't violate any of the unlinkability protections and is, as far as I know, undetectable.

EDIT:  Just to be clear, this P = xG has not been used before.

EDIT 2:  I should clarify that x can be a value known by Bob.

Is this key creation process enforced?

There is no protocol level enforcement beyond P and R being points on the curve.

  For example, could Alice send money to a different P that is in no way associated with an address A and B, and is instead an arbitrary P = xG and simply generating a random unassociated R?

So yes, in theory at least, Alice could manually construct a transaction with output key P and transaction key R as you described.


Why don't GPU miners work with open source drivers? What kind of special functions are used such that the open source AMD or Nvidia drivers don't work for any GPU miners?

GPU miners use the GPU programming framework, which is usually proprietary (like CUDA for Nvidia cards).

Therefore to use the GPU programming capabilities with the open source drivers (probably with the OpenCL framework), the people working on the drivers have to reverse engineer how the card works internally. And so far the open source drivers' support for OpenCL is too immature/slow to be usable for GPU mining.


What does this ERROR from the daemon mean? ERROR   ringct  src/ringct/rctOps.cpp:264       ge_frombytes_vartime failed at 264

It is preceded with a date, and then a 12-digit hexadecimal number, which I wasn't sure was something personally identifiable, so I left it out.  It starts with 7bf and ends with 700.

There are occasional warnings or errors in the daemon log that are really unimportant from the node owner's perspective.  Is this one of those?  Perhaps this is from a transaction that someone broadcast from an old incompatible wallet?  It would be nice to know that this message was about someone else on the network, rather than something wrong with my build.

This happens when the data inside a ringct transaction is invalid in a certain way. For instance, an previous version of ringct had the same layout, but used the data in it differently, with different assumptions, checked there, so a tx made with a wallet from that version would trigger this.

It is possibly doable to have more in depth preliminary checking, but it is unclear whether it'd require redoing part of the rct code in the preliminary check code.

Unless your daemon stops syncing, this is ignorable.


How can I delete my wallet? So I didn't have enough space on my current HDD for my wallet, the "install" stopped about halfway through because of this
I decided to delete the files it had created but I can't find them. I've searched almost my entire computer, and even went trough my entire appdata and documents folders manually but can't find anything regarding my monero wallet.

Where are these files located and how can I remove them?

Blockchain is usually located in C:\ProgramData\bitmonero.

Wallet will be located wherever you started the CLI, or wherever you saved it with the GUI, if you ever made a wallet.

The wallet program will be in the folder into which you unpacked the .zip. There's no installation, you just start it from there. The only folder automatically created will be the C:\ProgramData\bitmonero one.


Byte reversing (nonce and resulted hash) I've tcpdump'ed a session with my miner and xmr pool (port difficulty 1063). My miner sent the pool this result:

{
  "id":2,
  "jsonrpc":"2.0",
  "method":"submit",
  "params":{
    "id":......,
    "job_id":.......,
    "nonce":**"38000000"**,
"result":**"1af55da342371e2f1aca3063bb478ebb0e1e004d7937dd1392687c1e7bf23b00"**
  }
}

but here, the nonce and result hash are byte reversed. Why is it so? See (python):
get difficulty from resulted hash (which i copied from tpcdump session):
>>> ((2 ** 256) - 1) / int("1af55da342371e2f1aca3063bb478ebb0e1e004d7937dd1392687c1e7bf23b00", 16)
**9.496091376910952**
For this hash we have difficulty 9, but port difficulty 1063. Try byte-reversing it:
>>> ((2 ** 256) - 1)/ int("003bf27b1e7c689213dd37794d001e0ebb8e47bb6330ca1a2f1e3742a35df51a", 16)
**1093.2288693564817**
you get difficulty 1093. Good. Similarly for the nonce value.

I can't find any information about for how this workse? Can someone explain to me? Or is it STRATUM future?

Computers are byte based, and can store numbers in little endian and big endian (and other more esoteric variants). The Intel architecture uses little endian, so 257 will be represented as 02 ff. Monero hashes are stored in little endian format. Python reads numbers in big endian format. Endianess in this case is the ordering of bytes when interpreting them as a number.


What is an airdrop attack? I just came across this thread on Twitter discussing Zcash and Monero usage in Dark-Net Markets. This quote bothers me:

too much risk that an "airdrop attack" deanonymizes a chain like Monero

@lightcoin 4:59 AM - 13 May 2018

What is an airdrop attack? How can it deanonymize the chain? Does this affect the whole chain or only targeted accounts?

I'm guessing this refers to the "mass social engineering" attack where people are "paid" to use their Monero keys against the network. If you can get enough people to "de-anonymize" their transactions, the remaining anonymity pool decreases.

It works like this:

someone forks monero, and sets their starting chain to be a copy of the existing monero chain
that person tells others that they are now the owners of coins on that new chain (due to copying the original monero chain)
the only way to use these coins is by using your monero keys (again, due to copying the original monero chain)

The clever part is that the fork is worth nothing, but psychology will likely make people think it is worth something, so some fraction of Monero users will then use it, most likely to dump on an exchange, assuming anyone wants to buy it.

So far, so good. The trick is that if you send an existing monero output on both chains after the fork, it will create two rings for that output. These rings can either be different (if each software selects a random one), or the same (if each software reuses the first ring to be made). In the first case, you end up with two different things with one output in common, which means this is the real spent output. In the second case, no extra info can be deduced and you're safe.

So this will expose the real spent output in your transaction. If enough people do this, then this exposes more outouts as being spent. In turn, an observer can make deductions to decrease the effective ring size of other transactions using this output in rings. If enough people do this, this can have an effect on overall ring signature strength in the network.

The other two protection mechanisms (stealth addressing and ring confidential transactions) are unaffected by this.

Current Monero includes a shared ring database where it stores used rings, so you should always end up in the second case and be safe. However, if you use the same keys on two different computers/VMs, then you'll need to tell Monero (or the other fork) about used rings so they can be reused (see How can individuals safeguard themselves and the community against a key reusing fork? for details).

So this was a problem till recently, but the Monero team added this shared ring database to counter that attack. Someone forking Monero and trying this again might remove this safety protocol, but then it'd be pretty obvious they're attacking the network, and not just being dumb.

Now, this all relies on people thinking the fork created money and they can claim it by reusing their keys this way. However, the forkers will never pay you any money. Where does this "new" money come from then ? It just comes from others who think that fork might have value and buy these coins. It's just smoke and mirrors.

So, in short, this "airdrop attack" is a clever social manipulation to make people think they can get money by sabotaging themselves, and the Monero network as a result, and Monero now has automated defenses against it. If succesful at scale, this can decrease the strength of ring signatures on the whole network, but does not impact stealth addressing nor confidential transactions, the other two privacy layers in Monero.


Is solo mining nonviable on non-specialized rigs? I have a water-cooled 1080ti, and the most H/s I had with the basic Monero GUI is 250 or so.

If I understand right, this is barely enough to break even with electricity cost, over months.

Basically my options are to try a different mining software and/or to join a mining pool, right?

Side question, how do I even tell that I am making progress in mining? I can't really find any information telling me anything about the blockchain or the hashing power of my computer over a night of mining, on Monero GUI.

The Monero software, cli or gui, both only do CPU mining.  Solo CPU mining is generally thought to be non-viable these days, yes.  In general, solo mining is non-viable in this environment.

However, if you want to solo GPU mine, you can.  See this thread for discussion and options for how to solo GPU mine.

Generally, you're best off pool mining.

To address the side question, you're touching on a general feeling of new miners, or even small pool owners.  Everyone gets a little on edge when they've been mining for a while and haven't won a block.  That's normal.  The truth is you just need to know what to check, like ensuring your node is keeping up with the network, and otherwise you just need to wait and hope to win a block.  If you pool mine, there's much less waiting to receive positive feedback.


Does Monero/the CryptoNote Protocol support multi signature wallets? I did not find a question directly asking for multi signatures and Monero. Right now there doesn't seem to be support for multi signatures in Monero. So I want to know if it is technically feasible and if so what are the necessary development steps?

I found this question on multisig (How does ringct interact with multisig?) but it appears to be very specific in regards to RingCT.

Monero does not support multisig at the moment. It will at some point, probably not very long after RingCT is merged, since that work relies on RingCT building blocks.

Cryptonote itself does not support multisig either, but Bytecoin (Cryptonote's first actual currency) does support it for mixin 0 (ie, without ring signatures involving other outputs). Monero's implementation will support ring signatures (which is the point of Cryptonote currencies).


How does sending transactions to myself reduce privacy? And what is the best way to eliminate this reduction in privacy? For example, if I send txs through another wallet, does that fix the problem?

Due to the way Monero works, sending to yourself actually increases your privacy, but why is that?

When you receive monero, they're always stored in some one-time destination(s) which only your wallet can access. Every time some monero moves, some existing one-time destinations are permanently spent in their entirety and brand new ones created by the sender, of the same total amount. Trick is, the new ones always have a random factor in them, so whether you send monero to someone else or to yourself - it's all the same to some outside observer, as there's no way to tell who owns the new destination. Only spending it could give away some hints, but that's why we have ring signatures.

A ring signature will add a factor of uncertainty each time the funds move. Say you actually move funds from one-time destination A and create a new one-time destination Z. Thing is, when you're spending from A, you're "pretending" to be spending from any of A,B,C,D,E which are equal members in the ring signature. So, someone can say only: Z originated from either A, B, C, D or E. Now, we spend Z to create X, and "ring" with F,G,H,I. Now, someone can say only: X came from either Z,F,G,H or I. Thing is, each of those has another 5 potential sources, and then each of those sources has 5 potential and so on... the deeper you try to go, more easily you get lost following a potential trail. So, the more transactions you move from some "hidden source", the link between it and final destination will be better obfuscated. It doesn't matter if both X and Z belong to you. When you move from Z to someone else, that means now there's at least 3 "hops" to get to your actual source of funds.


Where can the wallet address prefix be set In Electroneum (A monero fork), there is a prefix set such that every wallet address begins with ‘etn’ . Where can this be set in the monero code and what is the purpose of it?

Transaction prefixes are set in the cryptonote_config.h file in the src subdirectory of the source code root directory.

The purpose is so coins using the cryptonote protocol can be differentiated from one another. Monero was a coin among a range of other created in 2014 along with Bytecoin and others. It's changed a lot since those days with the help of this community, but that prefix structure is still there.

To set it, you'd have to convert your desired prefix into the equivalent Base_58 value. Cryptonote actually created a tool on their site that allows you to do this: https://cryptonotestarter.org/inner.html


How can I automatically sell Monero? What about the balance locking? I am a developer at a company that operates crypto-currency ATMs, and I passionately want to add Monero to our service. Until recently, there were legal and technical barriers that made this impossible. But those obstacles no longer exist, and I want to get XMR on our machines as soon as possible.
The normal way we (and all other operators) sell cryptocurrency is by sending funds from our hot wallet to a customer's address. This means that we need to be able to send a transaction from our hot wallet every time a customer makes a purchase. This might (and probably will) be much more frequently than once per ten Monero blocks. But if our balance is locked, then transactions will fail.
I know it is possible to lower the waiting period to one block, but I have not seen a way to lower it to zero. Further, that explanation gives the following warning:

One could ask, but why isn't it set to 1 then?
Problem is, the input one-time keys are referenced using an offset. If a re-org would swap the order of transactions, then the transaction referencing any one-time key at the wrong offset would become invalid and would never confirm.

I don't understand fully what this means. Is it possible to manage a Monero wallet carefully enough that a "re-org" never happens? I don't know what a "re-org" is.
You can see that some operators already offer Monero, so it must be possible. The most obvious solution I can think of would be to keep track of transactions and send them in batches, rather than immediately. For several reasons, I would like to avoid delaying transactions if I can. I am also concerned that batching would also run into problems because we still would not have enough unused inputs.

How can I automatically sell Monero?

This is a little vague. What are you selling Monero for? Assuming you are selling Monero for some other cryptocurrency, you can still sell with zero-conf if you so wish. Zero-conf being the moment your wallet sees the tx (i.e. the tx is in the tx pool). Of course, there is a level of risk in doing so, which dissipates after it is mined into a block, then further dissipates the more blocks deeper down the chain it goes. In terms of "automatically", you will have to write something that sends the Monero when you have received whatever currency you are accepting. From the Monero side of things, you will use the wallet RPC, monero-wallet-rpc.

  What about the balance locking?

This can mean a few things, but in the context of the rest of your question I assume you are referring to the situation where you want to make lots of transactions in succession but cannot because you have no unlocked balance. This situation is one whereby you are unable to send a tx until your change has confirmed on the blockchain.

If you have 10 XMR in only one output and send 1 XMR to someone, two outputs are created, one for 1 XMR to your recipient and 9 XMR in change back to you. Your 9 XMR is locked until confirmed on the blockchain. Another way of thinking about this is with bank notes in a wallet. If you have a single $100 note and buy something for $10, you are giving the merchant $100 and then have to wait for your change ($90) before you can go buy a coffee for $2.

The simplest way to mitigate this is keep your wallet fragmented with small outputs. One way of helping achieve this is via a couple of wallet options, found with help set:

min-outputs-count [n]
 Try to keep at least that many outputs of value at least min-outputs-value.
min-outputs-value [n]
 Try to keep at least min-outputs-count outputs of at least that value.

Another thing you can do is make sure to send lots of small transactions from your cold-wallet to your hot-wallet regularly.

  Is it possible to manage a Monero wallet carefully enough that a "re-org" never happens? I don't know what a "re-org" is.

A re-org is a network level consensus thing (chain with most work wins) and as such there is nothing you can do at the wallet level to prevent a re-org. A re-org can in theory happen at any time/depth, though it's not that common and usually only small. By default, Monero transactions are deemed fully confirmed after 10 blocks (~20 mins) depth in the blockchain, which is a safe depth to deem the tx as final. Circling back to your first question, you can deem a tx final at any depth you like (i.e. when you release goods), and many merchants are happy to take on the risk of a zero or single block confirmation. The level of risk and semantics are different depending on which currency you are accepting of course.


Using the monero cli or gui, how do you sweep all the coins from a private key into your own address? Lets say I printed out a paper wallet for monero and put it on my website. Now I want to sweep all the coins from this wallet into my own address. How can this be done in the cli and gui? Then I want to delete this private key from my wallet.

Then a few weeks pass, this account has coins again. Do I do the same process again?

If you have a paper wallet which you received funds to, you don't need to sweep the funds to use them (sweeping means sending all funds to some address), you just need to restore the wallet.

A paper wallet may be a 25-words electrum-style seed (supported by the official wallet), or it can be the two private keys (spend+view).

Restore wallet using the CLI

Restoring from a 25 words seed:

monero-wallet-cli --restore-deterministic-wallet --electrum-seed <your_seed>

Restoring from private keys:

monero-wallet-cli --generate-from-keys <wallet_name>

Then you will be asked to enter your address and both private keys.

Restore wallet using the GUI

Restoring with the GUI is very straightforward. Open the GUI, choose your language, and then choose the option 'Restore wallet from keys or mnemonic seed' (something like that, depends on your language). Then choose between seed/keys and fill the necessary fields.

___

  Then a few weeks pass, this account has coins again. Do I do the same
  process again?

If you just plan on receiving funds to your wallet, without using them, you shouldn't do anything. Receiving funds does not require any action from your side. You should restore your wallet only when you want to spend your funds.


Monero margin trading on Poloniex and BitMEX Please help clarify the Poloniex margin rules for the following:

What equity percentage is needed when taking out a Monero loan?
At what equity percentage are margin called issued?
Can loan principle be repaid early with proceeds from a new loan offered at a lower rate?
If I loan Monero what percentage of loan fees do I need to surender to Poloniex?

How do the above margin procedures compare with those of BitMEX? In particular how do the liquidation and "Dynamic Profit Equalisation" rules of BitMEX differ from Poloniex?

I'm going to just put a link to Poloniex's documentation, as pasting it here wholesale would be too much copy to be considered fair use (and it has formatting and images, and might change in the future):

https://poloniex.com/support/aboutMarginTrading/

And, one word of warning: margin is high risk, high reward. Keyword being "risk".


Where can I download the pruned Monero blockchain that is 25+ GB instead of the full blockchain I'm looking to download the full pruned blockchain for Monero instead of syncing it and then pruning it. Where can I find this pruned monero blockchain file?

It helps to better understand first how pruning works.

When pruning, your blockchain gets split into stripes. These start from a random point chosen when you first decide to prune. If you are pruning, only your pruning stripes get pruned (non-essential data gets removed after validation). The non-pruning stripes will have full data. So every node that prunes, their stripes of unpruned data will be different to other pruned nodes, based on the random starting point mentioned earlier. Your pruned node still participates on the network sharing blocks to other nodes that need to sync - but you are obviously only able to share blocks that you have not pruned.

Armed with this information, you can see it would be extremely harmful to the network if every node had the exact same stripes of pruned/unpruned data. This is why it makes no sense to have a pruned blockchain file available for downloading.

Also, when you run a node, you want your node to have fully validated every block. A pruned node still does this - it only prunes data for blocks that fall into a pruned stripe after it has validated it. This is another reason why you wouldn't want to download a pruned blockchain file - you'd have no way to validate it.

I'll also add, the full blockchain.raw download file is pretty much redundant nowadays anyway. The syncing speed of the blockchain directly from the daemon, on the network, has been greatly improved over the years.

To wrap up, if you wish to run a pruned node, start the daemon with --prune-blockchain. It will download and validate every block from the network but not save everything to disk. It will continue to participate on the network in sharing blocks it has not pruned to other nodes.


Is it possible to connect to multiple remote nodes? A big drawback with connecting to a remote node is adding a central point of failure by trusting that node. Being able to connect to multiple remote nodes would reduce this significantly - is this possible?

No, connecting to multiple remote nodes would increase your risk as you are then having to trust more remote nodes.

Remote nodes are not a centralization risk in any case (you can use any remote node that is open and you can always use your own node). Using a remote node, your risk is hoping they are not a bad actor (e.g. they could be logging your usage/IP, not on the correct chain, not broadcasting your transactions). If these risks are unacceptable for you, run your own node, local or remote.


Will I/O speed or swap space effect the hashrate? I was wondering if I'm mining Monero with CPU, will I/O speed or swap space effect my mining speed (hash rate)?

For example, if I installed Arch Linux on SSD with 50 GiB swap space will the CPU mining got better performance (hashrate) compare to CPU mining on Windows 10 on SSD due to Arch Linux's lightweight?

So which will effect the hashrate (excluding CPUs)? RAM? Swap space? Lightweight OS? I/O speed?

Your miner will ask the daemon for the next block blob and start hashing it until it finds a result that satisfies the difficulty.

In that process, only the daemon preparing the blob may use some hard drive and/or swap space.

But the mining process in itself is just a repeated computation that uses the CPU/GPU - your speed will mostly depend on the type of CPU/GPU, on the drivers and on the miner's configuration.

So improving I/O and/or swap space is unlikely to make any significant improvement, everything else being equal.

As to the Linux vs. Windows performance, it depends on your hardware, the distribution and the drivers you use. For CPU mining, I've sometimes noticed that Linux is marginally faster but for GPU mining Windows tends to fare better because of better GPU drivers.


Are mixins now officially called decoys (and when did that happen)? I was reading something written by a community member SamsungGalaxyPlayer, where they mention casually that "decoys" are the new name for "mixins".
First time I've heard that.  Can someone confirm and tell me why or when it happened?

Full quote:

  Transactions with zero decoys (previously named "mixins") have no ring signature protection. This is self-evident.

from getmonero.org

There's no "official" anything. The term appeared about 1.5 yrs ago and it has since caught on. Many share the thought that "mixin" is misleading.

In the "official" software, mixin got replaced with ringsize (=mixin+1)

See also: Mixin vs Ring Size


How to create a wallet from my own seed? I have my own diceware-based mnemonic seed which does not follow 25 word electrum-style rule.

For other coins I have used services like walletgenerator.net to generate wallet keys.

Is it possible to create deterministic wallet for Monero with own seed?

I assume you've created the equivalent of a 256 bit number by throwing dice.

First, you need to ensure your number is less than 2252+27742317777372353535851937790883648493 (which is the group size of the base point G).

This gives you your private spend key.

Then you need to compute a keccak(256) hash of the spend key, interpret the resulting 32 bytes as a number, and determine that number mod 2252+27742317777372353535851937790883648493.

This gives you your private view key.

If you want to generate your seed from your private spend key, you need to convert it to base 1626.


Is there a monero address monitoring service? Is there a monero monitoring service where it will email/sms me if it receives any coins? I'm assuming you'd have to give this service your public view and public spend keys in order for them to see anything?

There is none so far. You'd need to give it also your private view key, and it would have to spend some CPU resources to keep scanning. I assume that's one of the reasons nobody created such service.


Why does monero have higher transaction fees than bitcoin? median and highest fees

source: monero.how

This information is based on the last 100 transactions. That particular screenshot is an anomaly and unrepresentative of the norm.

If you refresh right now, for example, you'll see the median Bitcoin transaction fee is $4.76 vs $0.86 for Monero.

Note that there is work being done on reducing the Monero "range proof" size, which will result in smaller transaction sizes (measured in bytes) that will significantly reduce Monero transaction fees in the future.