Would a fixed ring size improve anonymity? Currently the ring size of a transaction can be set by the sender. One would think that using a ring size of 10 makes the transaction more anonymous than using a ring size of 5 (current default) as the transaction had more input candidates. But does an increase of the ring size really improve anonymity? In my opinion, transactions not using the default ring size will step out of the mass and can therefore be traced more easily ("Interesting, every time this address XYZ appears as a ring member, a ring size of 9 is used. This can't be a coincidence! Someone must be using a ring size of 9 for all of her transactions!")

There are several people close to the Monero project that would tentatively agree with you that a fixed ring size would improve anonymity.

As you point out, if you use a non-default ring size, your transaction will stand out.

Even if you were to use a random ring size each time, you'll be one of a small number of people that are not using the default ring size each time, so you'll stand out.

If the ring size does become fixed, then the way to increase anonymity beyond the fixed ring size would be to use a 'churn' transaction. This means you'd send the funds to yourself first, and then send the funds to the intended recipient. If the fixed ring size is 10, and you churn twice prior to sending the funds, your anonymity set would increase to 10^3 = 1000.

There are limitations to churning. For example, it is important to ensure that churns are not obvious on the blockchain. If it is rare to see a chain of outputs being spent 3 times in quick succession on the blockchain, then your churn will stand out.

More research therefore needs to be done by the Monero Research Lab to determine the effectiveness of different techniques to increase anonymity before any changes are made to fix the ring size or to recommend any particular anonymity techniques such as 'churning'.


Should I keep monerod instances active on mining rigs? Does it help the Monero network if I keep monerod instances active on different rigs? Or is it not useful?

Generally, 1 Monerod instance per internet IP address, physical location, or operator is adequate to enhance network decentralization.


How do I use long payment IDs in CLI v0.14 / GUI v0.14? I am trying to attach a long payment ID to my transaction. However, in the GUI, there's no field to enter the payment ID. In the CLI, I get the following warning:

  Error: Long payment IDs are obsolete. Use --long-payment-id-support if you really must use one, and warn the recipient they are using an obsolete feature that will disappear in the future.

How do I resolve this issue?

We're slowly trying to phase out long payment IDs, because they are (i) detrimental to user experience and (ii) privacy. Therefore, in CLI & GUI v0.14, it will be more difficult to make use of a long payment ID. You can, however, still use them (although, please ask your service to phase them out too). This is done as follows:

In case you are using the GUI:

Go to the Settings page of the GUI.
Go to the Layout tab.
Check the Enable transfer with payment ID (OBSOLETE) box.

You should now be able to utilize long payment IDs (thanks to sgp for the image!).

In case you are using the CLI:

Basically you have to launch the CLI with the --long-payment-id-support flag. This is done as follows:

Windows:

Close monero-wallet-cli.exe by typing exit
Make sure you are in the folder where monero-wallet-cli.exe is located.
Make sure your cursor is not on any of the files.
Right click, an option to open the command prompt should appear.
Now type -> monero-wallet-cli.exe --long-payment-id-support

Linux:

Close monero-wallet-cli by typing exit
Make sure you are in the folder where monero-wallet-cli is located.
Make sure your cursor is not on any of the files.
Right click, an option to open the terminal should appear.
Now type -> ./monero-wallet-cli --long-payment-id-support

Mac OS X

Close monero-wallet-cli by typing exit
Check in which directory monero-wallet-cli v0.14 is located. An easy way of finding the full path of monero-wallet-cli is as follows (source):

  If you really want the full path to a file in a copyable form, you can drag and drop the file or its proxy icon onto a Terminal window. From there, you can then copy and paste it.

Thus, drag and subsequently drop monero-wallet-cli in the terminal and you should see its full path.

Go to your desktop.
Open a new terminal (if don't know how to open a terminal, see here).
Now type -> cd full/path/to/monero-wallet-cli/directory
For example, if monero-wallet-cli is located in say ~/Applications/Monero, type:

cd ~/Applications/Monero
Once the terminal is in the right directory (note that you can type ls -a to get a list of all files in the directory. If the list includes monero-wallet-cli, you are in the right directory).

./monero-wallet-cli --long-payment-id-support


Can't get AMDGPU-PRO drivers working with R9 290x and xmr-stak I am trying to configure an older mining rig I built about four years ago for Dogecoin into a Monero mining rig. I have a bunch of different Radeon cards, but right now, I just want to get two R9 290x's working on Ubuntu 16. I have down over a dozen re-installs of the OS trying to get it right---was so much easier with fglrx and Ubuntu 12. I tried Ubuntu 14 and fglrx (and found a nice guide about downgrading Xorg components) but still no go. I was able to get the mesa open source drivers working with xmr-stak, but I have a super low hash rate for each card (~150 H/s). What's wrong with my steps below for configuring an XMR miner with R9 290x's?

Install Ubuntu 16 from CD. Didn't choose any third-party installs during setup.
Downloaded and installed AMDGPU-PRO drivers for R9 290x and Ubuntu 16.
Disabled radeon modules in GRUB, updated, etc.

*** After this step, I typically did not see the AMDGPU drivers in use when I ran lspci ****

Downloaded and installed AMD SDK per instructions on xmr-stak compilation guide.
clinfo and xmr-stak dump and/or can't find OpenCL platform. More commonly, there were no IDs returned for the cards that were connected.

I've tried these steps with one card connected or two. Many thanks in advance for any suggestions!

I was struggling too with 290x. Currently I am unable to overclock...but at least I got it up and running.

1) Ubuntu 16.04
2) AMD-APP-SDK-v3.0.130.136-GA-linux64.sh - install it, reboot
3) amdgpu-pro-17.40-483984.tar.xz drivers - install it, reboot
4) /etc/default/grub change GRUB_CMDLINE_LINUX_DEFAULT="amdgpu.vm_fragment_size=9"
5) cp /opt/amdgpu-pro/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/libOpenCL.so.1
6) Clone sgminer-gm and install all needed deps.
7) Go to sgminer folder

autoreconf -fi
CFLAGS="-Os -Wall -march=native -I/opt/AMDAPPSDK-3.0/include" LDFLAGS="-L/opt/amdgpu-pro/lib/x86_64-linux-gnu" ./configure --disable-git-version
make

I hope this helps. In any case you should see, if it ends with _CPU then something is still wrong.

clinfo | grep Type
  Device Type:                                   CL_DEVICE_TYPE_GPU


Identifying the *real* public keys of ring signatures Since a ring signature uses |R-1| decoy outputs for a ring of size R, is it possible to retrieve from them the real (which reveals the true wallet) A,B values from those stealth addresses?

Every public key in the ring is valid as they are all stealth addresses. You cannot determine which is the real destination (which wallet receives the funds or how much).

A good explanation of stealth addresses can be found here.


Clarification on Server Messages I'm a bit new to crypto's in general so please bear with me.

I've been mining for a few days and am starting to build up funds from the pool I am in. I'm running XMRig and, though I have an idea of what the server responses mean, I was wondering if I could get some clarification on the specifics of each message, specifically in reference to my GPU specs. I've outlined four areas below which I would love to hear from you guys about:

Block 1: for 'new job', does this refer to a block that my GPU is crunching the numbers for? Also, is it good or bad to receive multiple new jobs, but not receive a message such as 'accepted' or 'rejected' from the server? Is there a form of a queue?

Block 2: I'm running an NVIDIA 750ti. Where it says 1320/2700, what does that specify? For example, am I only using that ratio of my total GPU computing processes? Or does that represent other information that requires two numbers (such as 20/20 vision)

Block 3: 'Accepted.' For each accepted, does that mean that mean I've solved part of the algorithm for the monero block, and it brings the pool that much closer to completing a full 'coin'? Also, in a pool, is there any individual benefits for contributing an accepted? Or is it all split evenly (aside from fees)

Block 4: This is pretty self-explanatory. It looks like this displays my average hashrate over 10 seconds, 60 seconds and 15 minutes. But, if this is what it displays, I feel that 31.7 is dismal for my graphics card. When using XMR-Stak and using supportXMR pool, I was averaging ~220.

Thank you for your time and consideration in answering. I hope I haven't missed an article from the Reddit wiki or on here that explains this. Thanks!

Block 1: New Job means that your GPU is starting a new process for the mining. 'diff' means how difficult the block is. Can't help for the rest.

Block 2: 1320/2700 MHz(Megahertz) means that your GPU clock is running 1320 MHz out of a max 2700(See block 4).

Block 3: 'Accepted' mean that the result you got might be a viable hash for solving the block.

Block 4: That is low make sure your graphics cards are being forced to work as hard as possible.


Is it safe to use a remote node? I started using Monero from now and my laptop takes a lot of time to download the blockchain. Also, my SSD is small and nearly full.

I was reading about the use of a remote node to sync my wallet, but I'm guessing if it is safe or not. Should I use any caution?

Regards.

Safety is a scale relative to your requirements. If the remote node is not your own remote node, you are trusting that remote node to a) not censor you by not relaying transactions or send you blocks from the main chain and b) not to log your IP address.

Therefore it's always preferable to use your own node (local or remote). If you're happy with the risks above, it safe to use public remote nodes.


Does monero have a dedicated marketing team or continuous marketing contributors? Marketing is everything these days as we all know, It allows worse products to do better than great products, gets the product to stick in our head or create a favorable image in our heads. Is there dedicated personnel in the XMR team or contributors who try every day on a continual basis to get XMR more widely known to the public. And most importantly in Asia as this seems to be what everyone is talking about now days?

Not yet. However, we have probably the best community in cryptocurrencies, what you can see on Reddit, the official forum or here at Stack Exchange.

In my opinion, marketing makes only sense after we have a GUI, so the average user can test Monero and compare to other coins.

So join the community and spread the word about the most advanced cryptocurrency out there!


Is there a way to record my stats from pool sites? I have been mining a few different pools over the past few weeks and I would like to collect my stats that are updated on the pools' pages.  Is there an API or something else I can use to collect this information?

I don't know of any open source Monero pool software that has an API, so most pools do not have API's. The only way to get the stats from these pools would be to scrape the data using a web parsing tool, or building one yourself.


Transferred Monero from Shapeshift, want to send to different address I used Shapeshift to convert BTC to XMR, and then had the XMR send to my Monero Desktop Wallet.
This was the first time I used this. I noticed I had to sync, before the balance will show, but I don't want to download the 30GB blockchain because I'm on capped data. This was the default and I used the receive address from the wallet to give to Shapeshift.
Now, I read about and maybe I can avoid downloading the 30GB if I use a moneroworld node? But once I set up that remote node, the receive address is different, so do I have to just download the 30gb blockchain data before I can receive my funds?

If you had used the Monero GUI (desktop app) to create your Monero receiving address, your address will not change if you decide to instruct the GUI to use a remote node.

Syncing with a remote node means you don't have to download and verify the entire blockchain, but you still need to download part of it and it still requires your PC to do some very heavy computation which could take several hours. The use of remote nodes will not make anything 'instant', in the way that using a Bitcoin light wallet would. This is because of Monero's "stealth address" privacy mechanism that requires you to scan the blockchain for incoming transactions. Your wallet will not reveal your Monero address to the remote node.


Beginner: Monero mining in a rented student bedroom with free electricity I would like to contribute actively to this community by mining some Monero or another coin.

I currently:
- A'm not interest in profit just contributing to the community (Although it would be nice to have some)
- I live in a rented student bedroom and have free electricity
- Would like to mine with a low hash rate and a low power consumption so I don't affect the owner
- Only have Wi-Fi (although this may change)
- Would like the operation to be quiet

Somebody could suggest configurations / videos / articles for my situation?

Thanks a lot

I would suggest to take a look at the CoinFoundry Pool. It's a new pool based in Germany that will give you a very good starting point so that you understand how to start mining.

Also the support is good there and they have a very good "Get Started" section: go here and select the "Get Started" tab. The fees are also very low.

If you provide the following info

Operating system (you use)
Mining hardware (for a laptop that would be 'CPU')
Hashpower (for a laptop 'Standard')
Wallet (you need one so that coins will be send there)

they will pre-generate the configuration file for you for the appropriate mining software and you can download the config-file and the software directly on their website.

They support a lot of coins. You can mine Monero but that will in no way be profitable because you need a really high hash rate nowadays. If you still want to do it, you of course can.

If you want to mine something that will give you a visible balance, you could go with Electroneum. It's also based on the CryptoNote protocol like Monero, so you kind of support the base protocol :)


Can the Monero block chain be pruned to increase scalability? Can the Monero block chain be pruned to increase scalability? If so, exactly what data can and cannot be pruned?

Theoretically, there is nothing preventing this. Practically, there is no code to do this yet, however.

There are a few things that can be pruned. Ring signatures, for instance. Once RingCT is in, range signatures can also be pruned. These take a large portion of the transaction data. Note that Aeon, a fork of Monero, does implement some kind of pruning already.

It is important to remember that pruning data makes a node unable to supply the pruned data to other syncing nodes. That data is necessary to fully validate the blockchain in a trustless manner, so while a client may decide to trust a pruned node, there should be at least a few "full data" nodes on the network, keeping the entirety of the blockchain, in order to keep the ability to re-verify the whole thing from scratch.

It is also relevant to note that the current on disk blockchain database is several times larger than the full blockchain data (very very roughly, the disk database is 6 to 8 GB, while the full blockchain data is maybe 3 GB). This is done to speed up subsequent reads from the database.


Theoretically, is it possible to send a value of 0 to someone? And if the answer is yes, doesn't it compromise the anonymity property? Assuming my wallet client does not check the transfer amount.
(I prefer mathematical explanations).

Yes it is possible. You still need to consume an existing output in order to send a zero output to someone else. This existing output will need to have non-zero value, because you'll need some of it to pay the transaction fee. You'll create a zero output for the recipient, and a change output which will go back to yourself.

All output amounts are encrypted using the "transaction shared secret", which is something only the sender and recipient will have knowledge of. It's also encrypted in a second way as a "Pedersen commitment". The first method of encryption is to pass the real value to the recipient. The Pedersen commitment is part of the proof that no Monero is being created out of thin air.

The encryption applies even if the amount is zero. Your anonymity is therefore definitely not compromised or weakened in the slightest.

If you're interested in the mathematical details, see https://people.xiph.org/~greg/confidential_values.txt

Specifically, your amount is encrypted as a Pedersen commitment using a "blinding factor", which prevents any particular amount (like zero) from standing out in any way. The application of Greg Maxwell's paper, which I linked above, is also known as "confidential transactions", which is the CT in Monero's "RingCT" scheme.


Will the experimental Monero Trezor firmware continue to work after January? In January, Monero will hard-fork to begin to support RingCT (optionally until September). It will also introduce dynamic fee transactions.

The existing monero trezor firmware does not support dynamic fee transactions, nor does it support RingCT transactions. Will transactions generated via the Monero Trezor firmware be rejected by the monero network due to an incompatible fee structure? Or will it continue to be useful until the September hardfork when RingCT transactions become mandatory?

RingCT is not mandatory until September 2017.  Compiled v0.10.1 last night, and V0313 experimental Trezor still saw the proper balance with the new node. Have not tested sending a new transaction yet. Without the guru, we will probably need to wait until 2017-01-10 before we know the truth.

Be sure you have tested the conversion of 24 BIP 39 seed words to Electrum seed words to recover without the need for a Trezor. Test the recovery process in advance. I'm sticking with V0313 with a simplewallet --hardware-wallet 0 until judgement time.

Read NoodleDoodle's comments here, the Monero H/W wallet guru.

The edit dEBRUYNE recommended below to Monero v0.10.1 source code appears to breathe new life into Trezor V0313 Monero firmware. This has the potential to be a stop gap solution that might last until September 2017.

10 January 2017 Update:  HARD FORK DEFINITELY BROKE TREZOR V0313 FUNCTIONALITY.
[4NoT0K]: refresh
Starting refresh...
Error: refresh failed: refresh error: block parse error. Blocks received: 0
Error: block parse error Blocks received: 0
Error: block parse error Blocks received: 0
Error: block parse error Blocks received: 0
Error: block parse error Blocks received: 0


How Do I Use XMR to Keep My Privacy? Hypothetically I buy XMR on exchange A, send it to exchange B, sell it, buy XMR on exchange B at a later date, send it back to exchange A, and sell it.

Would these two accounts be associated with each other?

Would someone be able to tell that the XMR left exchange A for a period of time?

If so is there a way to make sure the accounts aren't associated and no one could tell the XMR was missing from exchange A? perhaps a wallet in between the exchanges?

Thanks

It's rather long. Skip to end if you want only to see some good practice :)

Also, to clarify one important thing first - anonimity and privacy are different things. If you're buying from exchange A, obviously the exchange knows your ID and that you're buying Monero so you're not anonymous. However, exchange can't tell what you're doing with the monero, so you keep your privacy and can later do anonymous shopping. Privacy is what enables you to be entirely anonymous, if you want.

Brief Overview of Monero Transactions

This is just for better understanding how transactions work. Imagine that every transaction creates brand-new one-time-use "pot" from which the owner can draw only once. Before you draw, you arrange yours together with some number of others' random pots (belonging to other, unknown wallets) and announce you're about to take from one of them. You approach each one and put your hand inside. At the end, you show your hand, and it contains a certificate (ring signature) saying you own something from one of the pots, and a key image saying you didn't draw from that pot before. All this without revealing which one of the displayed pots is yours. The network verifies that you have rights to take from 1 of them (but not which) - that's the ring signature.

Then, you make some brand-new ones, and distribute the value of your old one into them, usually 1 for the destination and 1 for the change back to yourself. You use invisible paint to mark some secret code on the pots. The recipe for the paint is given to you by the recipient, encoded into his address. Only the recipient has the special lens (view key) letting him find the pot. Without this, it is just some random pot. You gotta have the lens to be able to find it. For anyone else, it's an ordinary-looking pot, nothing special about it, no markings whatsoever. With the lens, he sees the secret marking, and that combined with his spend key lets him produce the certificate and draw from that pot when he's ready to spend.

I will not go into details how the amounts are hidden, but just accept it as fact that the secret marking tells you the amount as well and everyone else is able to verify you didn't cheat even though they can't see the amount.

So, only the sender and recipient know the amount and the secret code written to the pot. Sender knows because he's the one who wrote it (he could forget it forever, though) and the recipient knows because he can always look at all the pots with his special lens and see which ones light up as his (wallet scanning).

So, a wallet is just a collection of pots (one-time keys) from which you can spend exactly once. They all look like any other, but only the receiving wallet is able to identify which ones it has the rights to draw from. Only the spending wallet is able to identify which ones were used. The network would be able to tell if you try to use the same one again, but until you actually try. If it appears in a transaction, it will remain unknown if it was actually used, or it was someone else just putting your pot for display when spending from his.

Sending Directly from Exchange A to Exchange B

If you send directly from exchange A, then it's not you sending but the exchange. You only make the request via your browser. That means the exchange A is the actual sender (and not you) and knows both the amount and destination address, since you type it into exchange A interface.

If exchange B address is publicly known (and it usually is*) then A knows you want it to send to some exchange B. It can't tell whether it's to your own acconunt, or someone else's, unless it asks exhcange B "Hey, who's the user with payment ID XY?". Payment ID's are normally encrypted over "the wire", but since you practically gave it away to exchange A when using it's web interface, exhange A could tell if you repeatedly ask it to send to the same account at exchange B.

*even if B is using integrated addresses for deposits, it doesn't hide the underlying address, that's not the purpose of those.

The takeaway is: don't send directly from exchange to exchange.

Using Your Own Wallet Between Exchange A and Exchange B

You ask exchange A to send to your wallet and it does. Exchange A can't tell whether it's your wallet or not if the info is not publicly available. It just makes the "pot" with the paint (address) according to instruction. Since it made the TX, it knows what's written with the paint, even though it's with invisible paint.

Ok, but now you send to B. Firs, you have to source the funds. You arrange the pots for display, including the one A gave you. A is watching, and sees someone arranged 5 pots for display, and yours happens to be there. It could be someone else drawing from another one, or it could be you drawing from yours. A can't really know for sure. The destination is some other brand-new pots. Since A doesn't know which paint you used, it's just a random ordinary-looking pot. So, A has no idea to where the transaction was sent.

From A's point of view: maybe it was you who made the TX, maybe it was someone else. Regardless, the destination will be unknown, as well as the amount since there are 2 pots created, and A can't know how the amount was split or what it was.

So, the transactions are

A --> You (into pot P1) --> B (into pot P2).

Transaction spending P1 to make P, as it appears on the blockchain (notice no address :))

P1
X1
X2  ?   ---> P2
X3
X4

Ok, so looks like you're good, and achieves what you're asking in the question.

Problem is only if A and B are sharing user data between them, or some adversary has user data from both of them. Then, A would know P2 is the result of transaction you made because it it has your account info at B, and it also appears in a TX using P1 as input.

The takeaway is: this is probably acceptable for daily commerce and average user, but not if you're getting monero from A and buying forbidden books from B, while E has infiltrated both A and B. In that case, E can get you.

Use Your Own Wallet, With Extra Distance

What if you make some random TX-es before sending to B?

A --> You (into pot P1) --> You (into pot P2) --> B (into pot P3).

Suppose both A and B are monitored by E, so it's really:

E --> You (into pot P1) --> You (into pot P2) --> E (into pot P3).

And the possibilities?

P1
X1
X2  ?   ---> P2  --|
X3                 |
X4                 |
                   |
Y1                 ?----> P3
Y2                 |
Y3  ?   ---> Z1  --|
Y4           ...
Y5
...

So now B(E) doesn't know whether P2 is yours or someone else's. Also, E knows that maybe P2 came from P1 which she knows is yours. Maybe means there are 25 other possibilities (2TX-es, 5x5=25) which could also be true. Even if you never did a transaction to B, it could happen that B gets a false alarm that you could have. Any TX can include any "pot" so it's plausible.

So this is way better, don't you think?

For extra paranoia, do extra transactions beteween, and you're golden.

You can send to yourself as many times as you want, without anyone knowing you're actually doing it. Every such transaction (called "churn") puts you in a bigger crowd of possible senders. The more distance between any 2 TX-es, the more possibilities there are. At the same time, it increases the chance of others picking up your "pot" for display, and making even more fake trails without you having to do anything.

I think it's good to have 2 wallets. One you use to receive from A, and one you use to send to B. When moving your money from W1 to W2, be sure to send to yourself a couple of times whenever you're topping up W2, like:

A -> W1 -> W1 -> W2 -> B

You can spend repeatedly from W2 -> B. Just for topping up from A, it's good to do extra TX-es. If you're sending something from B, again do the intermediate cleaning, and use some W3 for sending back to A, like:

B -> W2 -> W3 -> W3 - A.

You can use any combination you want. If really careful, even one wallet will do, but it's easier to keep track what you do if you have more. What's important is to put some distance between A and B, that's all there is to it.

If you do some other transaction to some other party, it also counts as increasing distance between A and B, so if you're using monero regularly at various places instead of only A->you->B, maybe you don't have to do this extra steps


How to get the base transaction hash from the blocktemplate_blob I want to know how to generate different blockhashing_blobs using blocktemplate_blob, returned by the RPC get_block_template method, with different extra fields. To do this, I need  to manually recalculate the transaction merkle tree, and for this, I need to get new base transaction hash. In this answer, I found that the transaction hash is calculated using RingCTBase and RingCTPrunable, but I don't find anything about this in the base transaction structure description. Can anyone please tell me how to get this data from blocktemplate_blob?

edited:
My question is how, having the body of a base transaction, change one of its fields (extra) and calculate the new hash (identifier) of this base transaction. I can't understand where I get the RingCTBase and RingCTPrunable values. In the description of the structure of the base transaction there is nothing about it.

"prefix", "base" and "prunable" just refer to parts in the transaction.

Given the transaction hash is:

H(H(prefix) || H(base) || H(prunable))

"prefix" refers to these fields.

"base" refers to the signatures that follow the prefix.

"prunable" refers to any prunable parts of a transaction.

Here is the source that calculates transaction hashes in Monero.

Important to note that "base" referenced above and "RingCTBase" as referenced in your linked answer, do not mean the coinbase/miner transaction. They just refer to a specific part in a transaction.

Now, to edit the miner transaction returned in get_block_template, you would need to deserialize the blocktemplate_blob to a block structure, edit the transaction in question, serialize back to a template blob and construct a new hashing blob.


Transaction weight/size understanding According to Monero source code there are two metrics for the transaction size:

Size https://github.com/monero-project/monero/blob/v0.17.2.0/src/wallet/wallet2.cpp#L870
Weight https://github.com/monero-project/monero/blob/v0.17.2.0/src/wallet/wallet2.cpp#L878

There is Wallet RPC method returning them both estimate_tx_size_and_weight: https://github.com/monero-project/monero/blob/v0.17.2.0/src/wallet/wallet2.cpp#L14187 and https://github.com/monero-project/monero/blob/v0.17.2.0/src/wallet/wallet_rpc_server.cpp#L4317
I'm trying to understand how that metrics are related to real transaction size, for example:

https://localmonero.co/blocks/tx/82966ee2ade89b159b80bc376b608cc9e8e8cd3b5206abcac267984414fee8f0 real size: 1452 estimated size: 1460 weight: 1460 - both differs by 8 bytes
https://localmonero.co/blocks/tx/46a36725ed36e624fc8de94ed79943284639d4e524d600b0367297f7c575bc01 real size: 1966 estimated size: 1969 weight: 1969 - both differ by 3 bytes
https://localmonero.co/blocks/tx/de4b645e96be1d98b2e753a450b433b5ab2916c2911c0a4a6736cbe43a4624bf real size: 3700 but estimated size: 3253 weight: 7221 - it seems no size and no weight are related to real size because so big difference

What's wrong with the estimation or maybe I don't understand some logic behind?

In your 1st and 2nd examples, where the difference is tiny, you're talking about a few bytes difference between estimated and actual size. I'd expect to see this due to things like varints. Also, weight and size estimates for these match because the bulletproof clawback isn't being calculated/applied due to there only being 2 outputs on those txs.
In your 3rd example, you're seeing a big difference between estimated weight and real size because this tx has 16 outputs, hence you're seeing the bulletproof clawback come into play on the weight estimate. Also, you're seeing the several hundred bytes difference between real and estimate size because that tx has a tx_extra field which is 547 bytes in size and the estimation only uses the common case of tx_extra being 44 bytes in size.


After Kovri arrives will some full nodes need to remain on clearnet? After Kovri arrives will some full nodes need to remain on clearnet?

How would peer discovery work if all full nodes suddenly converted to I2P for both inbound and outbound connections?

If most nodes move to Kovri, but a small number remain on clearnet would the remaining clearnet network become more susceptible to DDoS attack?

There will be three modes:

I2P only: all traffic goes through I2P
Clearnet only: all traffic goes through clearnet
I2P/clearnet bridged: blocks go through clearnet, transactions go through I2P

Since everyone will not be able to use I2P, it will be necessary that some nodes run in mixed mode to avoid the network partitioning. Since the blocks aren't secret, they're a good match for clearnet (faster, which helps miners avoid orphans). Transactions benefit more from privacy, since you can't tell where a transaction originates (which would give a large network adversary a fairly good clue to which node(s) could have created it).


Are deducible monero transactions blackballed by default (or is there a need or plan to do so)? Prior to April 2016, zero mixin inputs were allowed to be used.  As described by paper (link at bottom), transactions with zero mixins once led to provably deducible transactions.
Does the current wallet software blackball these deducible transactions as they're (at best) blockchain bloat?

Further, is there a database of these that is readily available do download and add to our wallet software (and view to search for particular transactions as it could most definitely affect the security and privacy of some of the users involved)?

An Empirical Analysis of Traceability in the
Monero Blockchain: Section 3

There is code to do this, but it requires the database to be created, and this is a fairly heavy process.

You can do so by running monero-blockchain-blackball --inputs ~/.bitmonero.lmdb (on Windows, replace that path with wherever the blockchain is). This can be run every now and again (there is an incremental mode patch on github which will make it a lot faster to be run periodically).

There is no publicly available blackball database at this time. If you use a third party's database, it might lie, and therefore cause you to select outputs which are known spent, rather than the opposite, so you should only use a database from a trustworthy source (possibly yourself). It is possible that the Monero core team will make such a database available for download in the future.

Note that the vast majority of the 0 mixin transactions used pre-ringct outputs, so current transactions will not use them, even if the blackball database is not set up.


Understanding the structure of Monero's LMDB and how explore its contents using mdb_stat I am interested in understanding the structure of Monero's database LMDB and using mdb_stat to extract relevant information from it. I am assuming querying it directly (i.e. via mdb_stat) for information should be a lot faster and easier than doing so through the wallet, daemon or RPC. Is that the case?

For instance, I was hoping to be able to extract information about blocks, transactions, outputs, rings, Pedersen commitments, range proofs, number of rings that use a given output etc, and I think it would be invaluable to have some sort of specific manual on how to conduct such queries on Monero's LMDB, and what sort of information is actually available in this data structure.

While I was able to follow the examples here and perform the first two queries successfully (for number of outputs and key images, respectively), when I tried to adapt them to queries about the number of transactions it didn't seem to work:

$ mdb_stat -s output_txs ~/.bitmonero/lmdb
Status of output_txs
  Tree depth: 1
  Branch pages: 0
  Leaf pages: 1
  Overflow pages: 0
  Entries: 30668498

$ mdb_stat -s spent_keys ~/.bitmonero/lmdb
Status of spent_keys
  Tree depth: 1
  Branch pages: 0
  Leaf pages: 1
  Overflow pages: 0
  Entries: 26564596

$ mdb_stat -s txs ~/.bitmonero/lmdb
Status of txs
  Tree depth: 0
  Branch pages: 0
  Leaf pages: 0
  Overflow pages: 0
  Entries: 0

Does that mean that I am doing a badly formed search, or is it that txs is not yet populated with transaction data?

I understand that there exists a manual for mdb_stat itself, so maybe it is just me, but I figured that everyone could benefit from having a more explicit and comprehensive guide with examples specific to Monero's database.

Thanks in advance!

Understanding the structure of Monero's LMDB and how explore its contents using mdb_stat

Firstly, mdb_stat is a tool to get status information about the database environment, not to explore its contents. Quoting the description directly from the mdb_stat manual:

The mdb_stat utility displays the status of an LMDB environment.

  I am assuming querying it directly (i.e. via mdb_stat) for information should be a lot faster and easier than doing so through the wallet, daemon or RPC. Is that the case?

You cannot perform queries against the data using mdb_stat, as explained above. To actually query the data, you have to use either the LMDB library (as documented here), or use one of it's higher level wrapper libraries for your preferred programing language, or use the wallet/daemon RPC interfaces.

As for the structure, it is documented in the source code here (quoting):

/* DB schema:
 *
 * Table            Key          Data
 * -----            ---          ----
 * blocks           block ID     block blob
 * block_heights    block hash   block height
 * block_info       block ID     {block metadata}
 *
 * txs_pruned       txn ID       pruned txn blob
 * txs_prunable     txn ID       prunable txn blob
 * txs_prunable_hash txn ID      prunable txn hash
 * txs_prunable_tip txn ID       height
 * tx_indices       txn hash     {txn ID, metadata}
 * tx_outputs       txn ID       [txn amount output indices]
 *
 * output_txs       output ID    {txn hash, local index}
 * output_amounts   amount       [{amount output index, metadata}...]
 *
 * spent_keys       input hash   -
 *
 * txpool_meta      txn hash     txn metadata
 * txpool_blob      txn hash     txn blob
 *
 * Note: where the data items are of uniform size, DUPFIXED tables have
 * been used to save space. In most of these cases, a dummy "zerokval"
 * key is used when accessing the table; the Key listed above will be
 * attached as a prefix on the Data to serve as the DUPSORT key.
 * (DUPFIXED saves 8 bytes per record.)
 *
 * The output_amounts table doesn't use a dummy key, but uses DUPSORT.
 */

  For instance, I was hoping to be able to extract information about blocks, transactions, outputs, rings, Pedersen commitments, range proofs, number of rings that use a given output etc,

The data can only be accessed as described above. It's also worth noting the data is binary. The C/C++ objects are written to the database. For this reason, even if you used a higher level language (e.g. Python or Javascript for example) LMDB wrapper, you are still going to need to convert that data to objects in your other language. For this reason, if you are going to directly query the database, you will almost certainly want to use C/C++, the native LMDB library and make use of the definitions in cryptonote_basic.h.

  Does that mean that I am doing a badly formed search, or is it that txs is not yet populated with transaction data?

If I recall correctly, txs is from an older version of the database and it's data has been migrated into the other tx tables as detailed above. You can verify what tables have data in them by running:

mdb_stat -a ~/.bitmonero/lmdb

  ...when I tried to adapt them to queries about the number of transactions it didn't seem to work

The number of transactions can be seen by looking at the entries count of the txs_pruned, tx_outputs or tx_indices tables.


How can I save the destination address of my transaction? From Reddit:

  I might be mistaken, but I read once that there is a flag that 'saves' the destination address of your transactions in your wallet file. I am not sure if it's the actual address that is saved or the one-time public key, but I'd like more information on that.

In the CLI the command is as follows:

set store-tx-info <1|0>

Where 1 as argument will store transaction info. Note that for newly created wallets it is automatically set to 1. Thus, newly created wallets will automatically save transaction info.

  I am not sure if it's the actual address that is saved or the one-time public key,

It will save the transaction hash, amount, private transaction key (you can obtain this by using get_tx_key <transaction-hash>), recipient's address, and payment ID.

Note that the GUI will automatically save transaction info as well. If you go to the History page and click on Details of a particular transaction, it will show all relevant information.


I am using the GUI and my daemon doesn't start anymore I've been using the GUI for some time and suddenly the daemon doesn't start anymore. How do I resolve this issue?

First of all, this is likely caused by your blockchain being corrupt. A blockchain can corrupt if you shut down the daemon ungracefully (e.g. a hard shut down or your PC going into sleep mode while you were syncing). As a general piece of advice, if you need to shut down your PC, first shut down monerod gracefully by typing exit (if you're running monerod separately) or click on the x (right top) if you're running monerod from within the GUI. Otherwise, you might corrupt the blockchain and you'd have to start all over again.

Now, let's verify that your blockchain is really corrupt so that you don't unnecessarily have to start all over again. This is done as follows.

[1] Exit the GUI.

[2] Browse to the directory monerod is located. On Windows and Linux this is the same directory as monero-wallet-gui, whereas on Mac OS X monerod is located in ~/Applications/monero-wallet-gui.app/Contents/MacOS | Note that if you cannot find monerod, it could be that your AV (AntiVirus) has quarantined it. In case this occurred, I'd advise to either put it back in the original folder / directory and create an exception or re-extract the binaries (the .zip file (Windows) or the tar.bz2 file (Mac OS X and Linux)) to a new folder / directory (for which an exception is created).

[3] Open monerod manually by double clicking on it (Windows and Mac OS X) or from the terminal with ./monerod (Linux).

[4] It'll likely shut down itself quickly. If that happens, proceed with the guide.

[5] If it doesn't shut down itself, type status a few times to check whether it's fetching any new blocks. If it isn't, proceed with the guide. It it fetches new blocks, however, it's not corrupted and the GUI was simply unable to start the daemon. Try restarting monero-wallet-gui. It should automatically connect to the daemon that's already running.

[6] Browse to C:\ProgramData\bitmonero (Windows) or ~/.bitmonero (Linux and Mac OS X).

[7] Note that, by default, both C:\ProgramData\bitmonero and ~/.bitmonero are hidden directories.

[8a] On Windows, you have to use the explorer to manually navigate to C:\ProgramData\bitmonero

[8b] On Mac OS X, you can typically use cmd+shift+. to unhide directories.

[8c] On Linux, you can typically use ctrl+H to unhide directories.

[9] Now open bitmonero.log

[10] If your log contains this line or something similar, the blockchain is corrupted:

  Failed to query m_blocks: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid

[11] We'll first attempt to fix this before performing a resync from scratch.

[12] Again browse to the directory monerod is located.

[13a] 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.

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

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

monerod.exe --db-salvage

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

.\monerod.exe --db-salvage

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

./monerod.exe --db-salvage

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

./monerod --db-salvage

[15] If you were using a non-default directory for the blockchain, you have to add the --data-dir flag too if you start monerod separately. If you already have monerod running, type exit first to gracefully stop the daemon. This is done as follows:

On Windows, type the following command in the command prompt:

monerod.exe --db-salvage --data-dir path\to\your\blockchain

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

.\monerod.exe --db-salvage --data-dir path\to\your\blockchain

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

./monerod.exe --db-salvage --data-dir path\to\your\blockchain

On Linux and Mac OS X, type the following command in the terminal:

./monerod --db-salvage --data-dir path/to/your/blockchain

[16] If that doesn't work you, unfortunately, have to resync from scratch. This is done by deleting data.mdb from C:\ProgramData\bitmonero or ~/.bitmonero (Linux and Mac OS X), which will trigger the resync.


Editing Monero Papers I have been reading some of the papers available on Monero, and they contain a lot of typos and other small errors. It would be great if we could fix and clarify them. Don't get me wrong, I greatly admire the work that those authors put into producing those papers, and also the speed of production that we see both in research and new code, which is all the more reason not to bother them with rewriting papers that are already "clear enough" for those that are already in the know.

On the other hand, I would love to have a place where we could have these papers posted, and edited by anyone who wants to contribute. This would be something kind of like Wikipedia (in its permissionless editing ways), but for editing a paper (TeX and PDF), so kind of like Github in that sense. I was hoping that if such a website exists, or can be made, then the authors would kindly provide the TeX file to the repository as a starting point.

Does that exist? Could we do this? I have a lot of small corrections I would like to make already.

Find everything you asked for at https://github.com/monero-project/research-lab

I do not know how well PRs will work on that though, but do try.


Error: send que size more than ABSTRACT_SERVER_SEND_QUE_MAX_COUNT What does this bitmonerod error mean?

  ERROR   {6} {p1} 2016-07-24 17:47:31.294360 [abstract_tcp_server2.inl+512 ::do_send_chunk] send que size is more than ABSTRACT_SERVER_SEND_QUE_MAX_COUNT(1000), shutting down connection

After restart the node is working again properly.

It means communication with that particular peer is stuck. It can be ignored, and is likely fixed in master (hard to be 100% sure).


Where to find the Monero blockchain by itself? as many of you know it takes a huge amount of time to sync-up to a full Monero node. So what I want to do is download the blockchain(or at least most of it) so it is much quicker; and then point that to the source of the blockchain later in the terminal (I'm using a Macbook Air.) I can't find any links to the raw blockchain anywhere, does anyone know where I can find it? Thanks!

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

Note that hours of processing power is still required to verify the blockchain when you import it. You can disable this verification by following the guide here: https://getmonero.org/resources/user-guides/importing_blockchain.html

Warning: The whole point of verification is that you can trust that the blockchain you download is not compromised. Turning verification off is not recommended.


Are there any neat tricks to enable SPV like functionality for Monero? I think one of the biggest things holding Monero back from a user experience standpoint is the need for every user to download a large subset of information each time they want to check their balance.

Although with light wallets this information is not stored permanently we still require a user that has been offline for n blocks to temporarily download and check for new transactions, to ensure they have not missed any transactions that were sent to their address.

This property results because of the mandatory implementation of stealth addresses across the whole of Monero's TX base, which ensures that users must attempt to calculate the spend key for all transactions that occur.

Is there any significant research that has gone into potential solutions to this problem?

Naively, I can only think of modifying the existing approach to this problem which is to give your view key to someone else to perform the calculations. Perhaps instead of allowing them to see transactions which you owned, we could use a MPC scheme, a set of untrusted nodes and split the computation among those nodes so that no one node knew who was holding what funds Then if the results of the MPC were combined by the user, they could understand which TXs were sent to them.

There are various things which have been implemented to aid in light, SPV-like wallets. E.g. light-wallet support for MyMonero, more recently and related, pruning. But you correctly identify one of the main obstacles - scanning the blockchain for receiving funds.

The biggest problem with your suggested approach is divulging the view key to someone else. This is a huge privacy leak. Ultimately, you have to scan the blockchain with your view key to update your balance and get your fresh unspent outputs. This is why there has been a fair amount of work minimizing what a client wallet needs to sync to enable the scanning (this has been dramatically improved over the last year). Currently, using a remote node, the data transferred is pretty minimal for wallets to scan and the scanning code itself has been pretty well optimized.

I do like your thinking outside-the-box though. I'd suggest it best to sound these kind of ideas out in the dev IRC channel #monero-dev rather than SE - it's better suited to this kind of discussion.


SHA256 hashes for newest AEON release Where can I find the SHA256 hashes for AEON v.0.9.11? Preferably I would like to see the hashes GPG signed by an AEON developer and is the norm for Monero releases

At the momnent, they don't exist. This is likely to change as the currency gains traction. You can always go on IRC Freenode #aeon and ask the devs to add some hashes.


Ephemeral cryptocurrency with hard limit of blocks I have an idea but I'm not sure if it makes sense or not.

I understand that CryptoNote uses addresses just twice, the first when a payment is received, and the next when a payment is made and that specific address is never used anymore.

Having that in mind, does it makes sense to think on a cryptocurrency with a limited number of blocks (let say one year of blocks), and if there are coins on an address that were not spend they are burned.

This way the disk usage of the full blockchain would be limited, and the usage of the coins would be enforced.

Does it makes sense? It is possible to implement something like that?

Yes, that's possible to implement. Some blockchain bloat would be avoided. However:

People will be upset, because they forgot/didn't realize their outputs would expire.
People will remember, and will create a transaction to spend the output back to themselves before it expires. Seeing an output being used in a transaction soon prior to expiry is a good sign that the real owner is the one spending it. Therefore this is a possible privacy leak for anyone that had previously used that output as a decoy in their own transaction, because it could be successfully guessed that their transaction would now have one fewer possible source input.


Can I enter a password & wallet file name through JsonRPC? This would be the ideal circumstance for programming monero-wallet-cli -
however, this raises the same concern that running the client with the password supplied via an argument monero-wallet-cli --password="somethingPublicThroughTop":

If you ran {,h}top you would be able to see the forked processes' full invocation arguments.

If the Json-RPC server is just using http, which is not encrypted, than anyone using wireshark on the same computer (with read access to the process? I'm not sure how that part goes) could sniff the packets and read the User Agent header, defeating the recently added --user-agent flag.

No, you can't.

The Wallets RPC - Interface opens the connection only after opening the wallet and its lifetime is completely dependant on the wallet. If you close a wallet, it will shut down the RPC interface as well. This is caused by the design of a wallet instead of a dynamic daemon.

Your described problem with a visible password when listing the running processes is known and has been discussed already. While it is faster for an attacker to just read the password from the window title, your wallet is compromised anyways as soon as an attacker has access to your computer. This cannot be stopped by encrypting a connection or not having the password in the window title, as he would be able to read the password from your computers memory, trick you into entering it again, running a keylogger etc.

While a possible attacker in your network could sniff your user-agent, this wouldn't be much use to him as he can't modify your browser user agent to perform the CSRF attack the user-agent was established against. Keep in mind that the user-agent is not a password protection and trying to protect a public wallet in RPC mode like this will lead to a compromise by anybody who can take a look at your connection to it. The user-agent is only a temporary solution against CSRF, a more secure solution is worked upon (since some time, the priority is considered very low due to the very limited attack opportunities).


Can I obtain Monero testnet coins without mining? Is there an easy way to obtain free Monero testnet coins without needing to start mining on testnet?

The goal is to just make 2 testnet wallet addresses, either from the CLI or the GUI, and send some coins back and forth, to get familiar with the way Monero works.

If you pop into /r/monero on reddit, or on Slack/IRC #monero, you will find people who would be happy to send you testnet coins.

Alternatively, it is rather satisfying to mine your own.  The difficulty on the testnet is quite low, so odds are high that you will see returns in the first day or two.  I highly recommend it.


Is it possible to set the priority / fee multiplier below 1? I just read an article on Coindesk about gas price explosion of ETH due to its price spike in recent months. There is an example of a "smart contract" of a simple user registration, which was around $1 back in January, but is around $7 now and makes several applications on ETH useless / too expensive.

I know about dynamic block size and dynamic fees, but in my understanding it wouldn't prevent fees (in fiat) to skyrocket if let's say Monero price would rise x00% but the block size wouldn't grow much at the same time.

So is it possible to set the fee multiplier below 1? Would such a transaction be likely included by miners in a block (if it's not "full" already with higher fee tx) or rather stuck in the mempool?

Consensus rules don't disallow it, so a lower fee than priority 1 would be a valid TX in a block. If you're a miner, you're free to mine 0-fee TX-es.

On the other hand, as a non-miner, getting into a block is another story because anything lower than minimum fee won't get relayed through the network so no miner will ever see your TX for it to have a chance at getting mined.

Note that the minimum do-not-relay fee could be changed without a HF in case situation would require it. If some % of nodes are running clients with looser requirements, it could end up in a block and get mined.


How much larger would a mixin=4 Monero transaction be compared to a Bitcoin transaction? I've heard estimates ranging from 5-10 times bigger, but is it possible to come up with a more precise answer? By how much will this figure change after RingCT is implemented? What other factors might affect this size difference in the future? That is, can it be optimized?

Well, looking at a few transactions gives you the answer quite plainly, at least for the Monero side. I'm not familiar with Bitcoin transaction sizes, but I think they're a few hundred bytes, typically.

A small tx, 4 inputs and 4 outputs: 1692 bytes.
http://moneroblocks.info/tx/f634025ef2d0fd0836ce2a5207e782609c3250cd5f8a0dd5269ce4e5c2f71bb7

A large tx, 21 inputs and a whopping 40 outputs: 9464 bytes.
http://moneroblocks.info/tx/069884b2ff99fb9b9a3f026d51c204c2abf5e23e23b6ce5c8fc73245cf81f67a

With RingCT, transactions will start at about 6.7 kB, and typically increase not a lot from there, since most transactions are expected to be 2 inputs and 2 outputs, typically. A RingCT tx with 2 inputs, 2 outputs, and mixin 4 looks like about 13 kB. Interestingly, making it mixin 85 only takes it to 24 kB, which means a large increase in privacy only takes 50% more space.


Monero Daemon - cannot send transaction(s) no available connections Using Ledger Nano S
I have a 100% downloaded Blockchain - Synced ok ...
But the Daemon warns: "cannot send transaction(s) no available connections"
I assume that is the reason why - no matter if simple mode, advanced mode in gui or cli ... nothing works (gui - remaining wallet - blocks not loading // cli also not working) I can see my balance - but it is not available ... no sending possible at all.
How can I fix this ?
Is there any other Software to manage my Monero "on" Nano S. The Monero Gui (and cli) Wallet doesn't work here ar all and so I am stuck with coins, which I can see, but not access .... This is no goal for Monero :-(

This means exactly what it says: you have no peers (or no suitable peers) to which to send transactions. This happens at startup if you have transactions in your txpool, since you've not connected to the network just yet.
If it happens later, it can mean you've been disconnected from the network for a few minutes, or your daemon is forked from the network.
If you're using Tor and/or I2P, it can mean monerod cannot find enough peers of that type to keep an active connection all the time.
If you run "status" in the daemon, you'll get the current number of in and out connections to other monero peers. If you have 0 and 0, you are disconnected from the network.


Does entropy vary depending on the language of my mnemonic seeds? Are there more words in word lists in some languages than others? If so how would my language choice impact the entropy of my randomly created mnemonic seed?

I will answer your second question first:
Yes, a longer word list would lead to increased entropy and a shorter list would lead to decreased entropy.
Monero avoids this problem by relying on an Electrum word list that is exactly 1626 words for each language. Because of this, the entropy of mnemonic seeds created with simplewallet for each language below will be the same.

0 : English
1 : Spanish
2 : German
3 : Italian
4 : Portuguese
5 : Russian
6 : Japanese


How does one prove that a user has locked Monero for X blocks? Is there a way to do a proof-of-locked coins? I know Bitcoin has the ability to lock for X amount of blocks. Does Monero have something like this and how does a 3rd party prove that a user has locked X amount of coins?

You can prove a) that a tx has locked coins by providing the tx hash of the tx which has the locked funds and b) prove you created the tx.

To prove a tx has locked funds, simply give the user the txid so they can inspect it on the blockchain (using either their own local daemon or a blockchain explorer). E.g.

$ monerod print_tx 6cd029...bf8c34 +json
Found in blockchain at height 1991755 (pruned)
{
  "version": 2,
  "unlock_time": 1991815,
  ...
}

Which shows that this tx is locked until block 1991815.

To prove you sent the tx, use the wallet command get_spend_proof:

[wallet]: get_spend_proof 6cd029...bf8c34
signature file saved to: monero_spend_proof

Then send the resulting file and txid to the user so they can verify with the wallet command check_spend_proof:

[wallet]: check_spend_proof 6cd029...bf8c34 monero_spend_proof
Good signature


What is the symbolism of the orange and gray Monero logo? I see that the Monero logo is basically a monogram with a white M whose ends extend to the circular sides. It also has a orange upper half and the gray lower half. What is the symbolism of this design and colors?

The logo is a creation of designer rantjack in logo design contest site 99design. There is no public statement by rantjack about a symbolism.
We can note that three of the four inspirations given in the brief (Bitcoin, NXT, Blackcoin) feature orange/yellow/gold color.
A similar question asked on BitcoinTalk forum have had not specific answer other than the general symbolism of orange:

Can someone show me why orange and gray were the colors chosen aside from the fact it looks nice (in a generic way), or if there was any deeper symbolism to the logo? not that it matters much but man and his symbols always fascinate me.
[Orange] combines the energy of red and the happiness of yellow. It is associated with joy, sunshine, and the tropics. Orange represents enthusiasm, fascination, happiness, creativity, determination, attraction, success, and stimulation.


What are factors to consider to choose the best mining pool? I have seen a lot of parameters regarding each mining pool, but my question is how to consider them when choosing a mining pool:

Difficulty
Payout threshold
Number of miners
Geographical location

In particular:

Difficulty: how must this be taken into consideration? If difficulty is high, should I mine on that pool only if have have high-end hardware in order to get some profit? And if I mine with high-end hardware (like 6-8 servers with Xeon CPU) on low difficulty what should I expect?
Payout threshold: I understand that it is the threshold after which the payment happens. If it takes
Number of miners: if it is high the blocks are found faster but the reward is splitted among all.
Geography: how much it counts within Europe?

With this question I would like to open a discussion to derive a mining-pool-choosing formula based on these parameters.

If the pool has variable difficulty like most pools do mining with high end hardware should not be a problem as the difficulty will adjust based off the shares your hardware submits.
If the pool has a high payment threshold for those with low end mining hardware may not be feasible.
It should not matter how many miners a pool. It is more to do with hashrate which would increase often a block is found by the pool. The higher the hashrate of the pool the more consistent your payments will be however overall earning should not be affected when averaged out.
Your ping to the pool will count as you may submit outdated shares leading to penalties on your earnings so best to stick to pools that are geographically close to you.

That being said the fee which the pool takes is also important to consider as well as trying to keep the network decentralised. My method would be finding a set of pools with low pings as well as fees and then deciding how often you are willing to go without payment, If it is multiple days try to stick with smaller pools to decentralise the network, else you could stick to slightly bigger pools that pay out more often. Finally if your hardware has a low hashrate avoid pools with high payment thresholds.


CPU Miner for Mac OSX? I'm new to the Monero community, but I've successfully mined many other cryptocurrencies. After a couple hours of digging, I could not find a pre-built CPU miner for OSX. Could someone point me in the right direction?

I found a few that require source code downloads and builds, but I'm looking for something precompiled that I can put my config settings into and be on my way.

Because I couldn't find anything and didn't receive any help here, I wanted to share what I ended up doing to help others in the future. This is what I did to mine on NiceHash on OSX Sierra:

Install Docker
Open Terminal
Run docker run hmage/cpuminer-opt -a cryptonight -o stratum+tcp://cryptonight.usa.nicehash.com:3355 -O [YOURMONEROADDRESS].[YOURWORKERNAME]:x


Ledger Nano S and seed words On my Ledger Nano S there is a wallet in BTC and a wallet in XMR.
When I created the BTC wallet I wrote down the 24 seed words for restoring the wallet in case of an emergency.

The Monero app installed on Ledger doesn't supply seed words (in this case I assume it should be 25 words instead of 24).
Both the Ledger and in the Monero GUI, the fields for seed words are empty.

Is there anyone that can help clarify the matter?

I have also downloaded the Mnemonic Code Converter tool, but without a guide is very difficult to use (at least for me). I am concerned making a mistake on this issue, could cause the loss of the wallet.

Thanks everybody for you help.
Giovanni

This URL provides two independent means for mapping 12, 18, or 24 BIP 39 seed words used to configure Ledger devices to Monero Electrum seed words (25 seed words) that enable other traditional Monero wallets to gain access to your funds.


Easy way to see my balance without having wallet synced just joined and have a question...

I started mining XMR when the new GUI was released and used the address generated to receive payment from pool. Unfortunately the mac I'm using is very old and it is taking forever to sync completely. So my question is, if there's a way to verify and make sure the coins are being sent to the address I used without syncing completely?

Thanks for any help.

If you have tx hashes/id of tx that you expect (i.e., incoming txs) then you can check using this tool: http://xmr.llcoins.net/checktx.html
or this blockchain explorer: http://explore.moneroworld.com/

Just use your address and viewkey. No need to sync entire blockchain.


Verifying an AEON transaction sent to cold storage How can I verify the receipt of AEON sent to cold storage?

Does AEON have a view key tool similar to this XMR check transaction tool or this Signed Outputs Public Keys Checker described in this answer?

With stoffu’s rebased Aeon code, you could create a watch-only wallet with the view key, similar to Monero. Unless you also want to track outgoing transaction (which I think is unlikely for cold storage), this is quite a simple setup.


What are advantages and disadvantages of Monero's privacy features as compared to Bitcoin? What are the advantages and disadvantages of Monero's privacy features as compared to Bitcoin?

I would say. The primary difference, privacy wise, is. Monero got it, and Bitcoin don't.

What are the primary differences between Monero and Bitcoin
What advantages does Monero offer that are not provided by other cryptocurrencies
Does Bitcoin have any technical advantages over Monero


Trademark dispute resolution What was the resolution of the Monero trademark dispute described here and here.

If there has been no resolution what is the most recent update?

Is the company Moneero out of business? Their former website is no longer operational and I can locate no recent information about them.

Monero was represented by the incredible lawyers at the Software Freedom Law Center, completely pro bono. They dealt with the Moneero counsel and indicated that we were all ready for a fight. Shortly thereafter Moneero closed up shop, much to our great collective dismay:-P


electrum seed word list for monero != official electrum wordlist (english): why? even if only the first three characters are significant/considered, the english wordlists differ quite a bit, in terms of population(2048 words vs 1626) as well as content(other language versions probably do too?). Any reason why?
  I am comparing electrum's english.txt to monero's english.h
Does this mean that mymonero-simplewallet wouldn't accept a Bitcoin-style seed phrase I generated inside electrum(and not inside monero)?
 Neither seed type would be accepted in the current implementation of monero-wallet-cli (--restore-deterministic-wallet) anyway because (the latter) only accepts 25-word seeds. But I tried converting 13word (official)electrum seeds using Luigi's address tool but those are failing too :(

Any reason why?

TL;DR: It's a different convention. Monero is not a fork of Bitcoin, so most things were worked out from scratch.

Does this mean that mymonero-simplewallet wouldn't accept a Bitcoin-style seed phrase I generated inside electrum(and not inside monero)?

Yes

Neither seed type would be accepted in the current implementation of monero-wallet-cli (--restore-deterministic-wallet) anyway because (the latter) only accepts 25-word seeds. But I tried converting 13word (official)electrum seeds using Luigi's address tool but those are failing too :(

That's to be expected because it's a different convention. It's not only the matter of wordlist and length, but the whole checksum and key derivation process.
If you really want to have one mnemonic for both Bitcoin and Monero, you'd have to hash the Electrum mnemonic with something to get a 256-bit integer, and continue from there, or invent some other method.
Simplest way is to input your Electrum seed into "custom entropy" box on Monero offline wallet generator. If you go this way, save a copy of that page somewhere for future reference. Given the same input, it will always create the same Monero wallet with the corresponding Monero mnemonic. This will run the string through 10000 rounds of Keccak-256 and use the result as your seed and private key. Looking at the source of the site, your seed will be derived using:
seed = cnUtil.sc_reduce32(poor_mans_kdf(user_entropy));

function poor_mans_kdf(str)
{
  var hex = cnBase58.bintohex(cnBase58.strtobin(str));
  for (var n = 0; n < 10000; ++n)
    hex = keccak_256(cnBase58.hextobin(hex));
  return hex;
}

Note that sc_reduce32 actually performs a = a mod l operation, where l is defined in CryptoNote whitepaper. This is to make the seed a point on the elliptic curve and a valid private key.

Any reason why?

Long answer
Looking at Electrum documentation, we find the following:

Electrum was the first Bitcoin wallet to derive private keys from a seed phrase made of English words. Early versions of Electrum (before 2.0) used a bidirectional encoding between seed phrase and entropy. This type of encoding requires a fixed wordlist. This means that future versions of Electrum must ship with the exact same wordlist, in order to be able to read old seed phrases.
BIP39 was introduced two years after Electrum. BIP39 seeds include a checksum, in order to help users figure out typing errors. However, BIP39 suffers the same shortcomings as early Electrum seed phrases:

...

Electrum currently use the same wordlist as BIP39 (2048 words). A typical seed has 12 words, which results in 132 bits of entropy in the choice of the seed.

In Electrum, the seed is used as the root for deriving individual Bitcoin keys (addresses). Since Monero only needs one address, the seed is used to derive the private key of the address, and that's all it's used for. Actually, seed == private spend key, and the private view key is derived from it. Public counterparts of those are what makes a Monero address.
Electrum is trying to achieve the following: have the mnemonic seed generate the same HD wallet, without having to know the dictionary used to create it. The size of dictionary was chosen to give exactly 11-bits of entropy to each word in the mnemonic, resulting in total of 132-bits for 12 words.
Monero is not a fork of Bitcoin and neither is Monero wallet software a fork of Electrum, so it did not inherit this.
Monero uses another philosophy. A seed mnemonic is just an encoding of a 256-bit integer seed. It's 2-way. You can always calculate back and forth BUT you need to have the dictionary to recover the wallet. This has a benefit that you can convert an English seed into Japanese, or any other language and get the same result. This allows far more flexibility but the "drawback" is that you have to keep the dictionary around. I'd argue you always need to keep something around (with Electrum, it would be the technical specification of the method used) anyway, so what's the point of wanting to get rid of the dictionary?
The number of words is such that there's approx. same number of combinations of 24 words as there is 256-bit numbers. The words were chosen to prevent mix-up, and also for all to have unique 3-letter prefix. We see that 24^1626 is approximately equal to 2^256 so it's possible to encode 256 bits to 24 words (25th is the checksum).
For more details:

Why one word is found two times in each seed?
What is the checksum at the end of a mnemonic seed?
Will Monero mnemonic seeds need to be converted to BIP 39 for standardization reasons?


Monero GUI app v0.14.0 not showing mnemonic seed and secret keys may have 'filler' values When I go into the 'Show seeds & keys' screen from the Settings menu tab, the mnemonic field is empty. I'm trying to get a copy of it as the one I saved from the initial setup is somehow missing one word. I found this out when I pasted the see into the 'https://xmr.llcoins.net' website.

Also, the secret keys have strange values. The view key is a bunch of zeroes and the spend key is a bunch of 'f's.

On a positive note, I saw that the account received some test XMR that I sent a couple of days ago and it now shows in the balance. I was also able to do a 'Send' just a couple of minutes ago and it's showing some confirmations.

So it looks like the wallet is working even though there might be an issue with the seed & keys.

The mnemonic field is empty because your Ledger 24 word mnemonic seed (which was generated upon initializing the Ledger device and is essentially your Monero seed for a Ledger Monero wallet) is retained on the device. Similarly, the private spend key (note that the 24 word Ledger mnemonic seed is simply a representation in words of your private spend key) and the private view key values are also not obtainable in the GUI.

In sum, essentially, the notion of a hardware device is to provide security by retaining your private spend key (the 24 word mnemonic seed) on the device. Therefore, the GUI cannot show your keys or mnemonic seed.

  I found this out when I pasted the see into the 'https://xmr.llcoins.net' website.

Entering your 24 word Ledger mnemonic seed into your system basically renders the security provided by the hardware device obsolete.


Is this an optimal setup for solo mining XMR? I know it's possible to solo mine XMR using XMRig through some pools, but I'd like to try to solo mining on my own, with no pools involved. As I have the intention to set up a public full node using monerod, I have decided to also setup some miner rigs to solo mine with the arrangement represented in the picture below.

Explained:

These 3 miners will be connecting to an internal private full node for new blocks to be mined. They will connect to the private monerod using the Daemon RPC interface.
The internal private full node will be syncing from the public one using --add-exclusive-node or --add-priority-node whichever is better. Still don't know.
The public full node will be totally optimized for syncing with as many external nodes as possible so that generated blocks arrive as fast as possible (I still don't know how to setup for that).
Personal wallets will connect to private full node to increase security.
The proxy component was discarded because there are only 3 miners and I guess monerod is able to deal with them. I'll see...

Now my main question: Is this an optimal solution for solo mining?
Some concerns:

As monerod looks a bit slow when syncing I'm not sure if it is the right tool to be used for getting new blocks to be mined.
If monerod gives exactly the same jobs to all 3 miners, XMRig could end up waisting CPU by computing the same hashes in each rig. But apparently it won't happen although I'm not totally sure so I need confirmation. According to RandomX docs it looks like randomness happens for each result hash on program initialization stage (not sure now), they all use the same key (K) that RandomX gets as input together with the block data to be hashed (H), then a 1st random program is generated to get each result hash, so it is suposed that there won't be a problem getting the same data from monerod. Could anyone confirm this?

An improvement:

Would it be an improvement connecting the miners to a public full node?
Would then the security for the private full node be compromised?

Is this an optimal solution for solo mining?

Looks reasonable.

As monerod looks a bit slow when syncing...

Then make sure it has a good internet connection, fast disk (SSD) and a decent enough CPU.

I'm not sure if it is the right tool to be used for getting new blocks to be mined.

The only tool right now for getting block data to be mined is monerod. Even if you used a pool, that pool uses monerod, and right now there is only one implementation of a Monero full node and that is monerod.

If monerod gives exactly the same jobs to all 3 miners, XMRig could end up waisting CPU by computing the same hashes in each rig.

Except it doesn't. XMRig calls get_block_template passing in some random bytes, so the resulting block hashing blob will be unique to each miner.

According to RandomX docs...

This has little to do with RandomX or the random nature of it. The data being hashed is already unique to each miner, as outlined above. If the data being hashed wasn't unique, then calling the hashing function with the same data will result in the same hash (which is how others can reproduce a hash and thus verify submitted blocks).

Would it be an improvement connecting the miners to a public full node?

If the public node you chose to use is better maintained and configured than your own node, then yes.

Would then the security for the private full node be compromised?

No.


Is there a stratum like protocol for Monero mining pools? I'm trying to learn a litle more about how Monero mining pools work.  I'm somewhat familiar with Bitcoin mining pools and the Stratum protocol (https://en.bitcoin.it/wiki/Stratum_mining_protocol) that was developed that allows pools to send work to miners and accept shares.  What's the equivalent protocol in the Monero world of mining pools?

Stratum can be used for monero mining. Stratum is the protocol for communication between miner and mining pool server. getworktemplate is being replaced by stratum.
Here is a monero miner which uses stratum: https://github.com/sammy007/monero-stratum


How to generate deprecated Monero Payment ID I'm using the monero-gui-win-x64-v0.15.0.2 version wallet.

I understand the usage of Payment IDs is now deprecated, but some miner companies - such as Genesis Mining for example - are still asking for a Monero Wallet + Payment ID. Without a Payment ID no payments are performed.

How is it possible to generate a Payment ID with Monero nowadays?

Thank you

Old unencrypted payment IDs were deprecated some time ago and support was finally removed from the official wallets last release. Therefore, while it's still technically feasible to add an old style payment ID, no wallets will actually recognize it.

Only encrypted payment IDs are supported nowadays and these are created by making an integrated address. Alternatively use subaddresses.

If your question is about how to technically add a payment ID, knowing nothing will recognize it, this is done by adding the data prefixed with the TX_EXTRA_NONCE and TX_EXTRA_NONCE_PAYMENT_ID bytes to the tx extra field.


What is a dynamic dust threshold system? According to the Wolfram Warptangent, Point Release 1 notes, Monero has switched to a dynamic dust threshold system

What does that mean? How is the definition of dust or its treatment dynamic?

Dust threshold used to be considered as a fixed amount. The threshold is now dynamic in relation to the transaction fee.


Calling MyMonero API with generated parameters I'm trying to call the MyMonero API to get some info about a wallet. By doing a call with curl, it seems to work fine.

Request:

curl -w "\n" -H 'Content-Type: application/json' -X POST https://api.mymonero.com:8443/get_address_info -d '{"address": "4212xxB5reLXdvoNQQFi7DCBVEyqmK1ZH7Dw584eQTmRbwe6d7NbwoAV4EkoPhFvUoZCjjerotB6bRHAHVRsCbqu1V6s6ZN","view_key": "197dbd7e30fec43d8d57e7fe485dab2c45b73644a4572bf80a9d88b715037605"}'

Response:

{"locked_funds":"0","total_received":"0","total_sent":"0","scanned_height":5787871,"scanned_block_height":1754582,"start_height":5304924,"transaction_height":5787871,"blockchain_height":1754582,"spent_outputs":null,"rates":{"AUD":63.31,"BRL":173.09,"BTC":0.01269,"CAD":63.43,"CHF":52.92,"CNY":308.03,"EUR":39.71,"GBP":35.15,"HKD":352.61,"INR":4791.628,"JPY":4936.01,"KRW":51050,"MXN":862.83,"NOK":430.55328,"NZD":64.33,"SEK":440.08,"SGD":61.68,"TRY":251.55,"USD":45.65,"RUB":3148.49,"ZAR":665.92}}

Now I want to do the same with randomly generated wallet from the XMR Address Generator tool at https://xmr.llcoins.net/. So for example, I will fill up my curl request with random data from llcoins like follows.

Request:

curl -w "\n" -H 'Content-Type: application/json' -X POST https://api.mymonero.com:8443/get_address_info -d '{"address": "46wNqWTmh6TLbaM4UYCbTY4v5hMQDpnUThJj3r4gtNZGRqjxhBXXEmfDAwwF1xccBDiusrMYXxghXdgeuWS8GcPgNNVuLmK","view_key": "82c31f3041ab4248c4c6ebe3432ea4fa92d0483a72ac02db514156e66753b7bd"}'

Response:

{"Error":"Internal server error"}

Can anyone advise me what I'm doing wrong? I'm not even sure if the API expects the private or public view key, neither of them works for me.

Thank you

To get the kind of information that API method returns would require scanning the whole blockchain, hence why it is not returning data for an arbitrary address.

If you want to scan the blockchain using an arbitrary address and keys, you will need to use the Monero tools to first restore a wallet from keys and then, assuming you want to do this as an RPC call, open the wallet using monero-wallet-rpc and calling it's methods, such as get_transfers.


Formulas for calculating current target and difficulty I'm looking for formulas on how Monero/CryptoNight/Keccak1600 are calculating difficulty and current target.

E.g. something like:

max_target =?
current_target = f(max_target, blockrate) //some function f

I assume these are different from bitcoin/SHA256.

I'm not interested in mining profitability calculations per second, just in the basics of the PoW algorithms.

The specific difficulty target function can be found in the source code here.

Difficulty is adjusted so that a block is mined every 120 seconds on average. What affects this is the total network hashrate and the time it's taking to mine a block. If total network hashrate is high, difficulty is adjusted up. If total network hashrate is low, difficulty is adjusted down, so that a block is expected to be be mined in 120 seconds.


Monero RAM requirements compared with Zcash Does a Monero full node require more or less RAM than a Zcash full node?

Assuming 8GB of ram how much time would it take to generate one RingCT transaction of average size with a standard mixin compared to the time to create one standard "mint transaction" (converting the non-anonymous basecoin into anonymous zerocoins) and one "pour" transaction to follow (making a private payment with the zerocoins)?

Monero originally required a lot of RAM, because it stored the blockchain in RAM. Currently, Monero uses LMDB to store its blockchain. As a result, people are able to set up Monero nodes with only 512MB of RAM. When running, bitmonerod (the daemon) uses less than 100 MB of RAM.  For Zerocash the requirement will be much higher for nodes that generate spend (aka "pour") transactions:

  Zooko also added that privacy-preserving spend generation likely requires more than 4 gigabytes of RAM, although he also mentioned that they don’t have precise measurements on RAM requirements quite yet.

In your 8GB RAM example a RingCT Monero transaction would be generated nearly instantly, while a Zcash transaction would take minutes according to Zooko, Zcash founder & CEO

  “The current alpha code that we have running on a testnet ‒ it takes like about a minute or two of CPU time to generate a new privacy-preserving spend and only like a few milliseconds, I think, to verify. The latter part is for the good for performance, and that’s really important because all the full nodes and the miners have to be doing verifications all the time. The former part is pretty bad because it takes a whole minute or two on like a high-powered, supercomputer 64-bit laptop CPU.”

Lastly, it should be noted that the integration of RingCT will not result in additional RAM requirements.


What changes are planned for the September 2017 hard fork? I am having trouble finding information about which of the following will be included in the September 2017 hard fork:

Fluffy blocks
Minimum / uniform ringsize
ZMQ (Zero MQ)
?

Is there a reliable resource where I can view which major changes/features are slated to be included in the next hard fork? The closest thing I could find is https://getmonero.org/resources/roadmap/ which is vague and does not seem to be updated.

The only change from that list which actually requires a HF is the minimum / uniform ringsize. The other 2 can be rolled out at any time. AFAIK, the current list for the upcoming hard fork is:

Only RCT transactions will be allowed
Minimum / uniform ringsize
Range proof size reduction

and the exact date hasn't been decided yet.

The discussion on 2. can be found here.

For 3., I've not yet seen any code or Github issue so hard to tell the progress of this. Luigi1111 (one of "core team") is working on it.

The best way to be on top of things is to monitor the dev meetings which get published on a few places, or just stalk various community channels. There's not something like a "live HF list", but anyone could volounteer to keep track. All it takes is to have a chat with some key contributors, make a list and add a page to the official site repo.

In any case, a version tag will be made on Github prior to HF, and that will happen some ample time before the HF date where everyone will be able to easily see what gets changed.


Getting rid of old transactions A few times I have attempted to send Monero, but the fee was too small, so I now have a bunch showing "Pending" I have already resent them with higher fees successfully. But now Im afraid that they may get actioned as well. Can I remove them? My unlocked balance is looking quite low too. Should I just hit "rescan spent" ?

Using the GUI wallet

Thanks!

You can type the following command in the monerod, it is the black square box with many text named "monerod".

flush_txpool

This should clear all your pending transactions. However, if there is a backlogged or your transaction is already in the mempool it may not work, so just try it.


Does Monero protect against timing analysis? Does Monero protect against timing analysis?

As I understand it, Monero mixes the transactions so that you cannot definitively determine UserA sent money to UserB. Not 100%, but because the outputs are being mixed with UserS, UserQ, UserL, it would seem these users are just as plausible senders.

However, if UserA broadcasts that TX at 8:00PM, is there any record of that?

Assuming there is a record, and assuming the analyst sees it is currently 8:01PM, could analysts determine that the most recently created output has a high(er) probability that UserA was the authentic sender?

This is somewhat related to the Temporal Associations, described in MRL4 here, and temporal alignment, described in this SE question.

To specifically answer your questions:

  However, if UserA broadcasts that TX at 8:00PM, is there any record of that?

The broadcast of the transaction isn't stored in the blockchain, but its time of inclusion into the blockchain is (the timestamp of the block). However, someone sniffing the network could record the time of all transaction broadcasts.

  Assuming there is a record, and assuming the analyst sees it is currently 8:01PM, could analysts determine that the most recently created output has a high(er) probability that UserA was the authentic sender?

Theoretically, yes. However, this is only problematic under the following circumstances. 1- you just received your monero, so you only own recent outputs. 2) you only own outputs in 1 block.

Issue number 2 will be somewhat fixed with RingCT because denominations will not be necessary so there will no need to stack many outputs into a transaction - so no alignment.

Issue number 1 can only be dealt with (using the current Monero client) by letting your monero "bake" in the blockchain. Future developments could include custom ring partner (mixin, fake output) selection, such that the user could decide which ring partner collection (created at random using probability density functions of different distributions) will work best for the outputs owned by the user.


Python lmdb version mismatch I tried to explore the lmdb using  python -mlmdb stat --env C:\ProgramData\bitmonero\lmdb, but got the follwing error message:

  MDB_VERSION_MISMATCH: Database environment version mismatch

I am using the latest version of lmdb (0.98), Windows 10. What went wrong here? I will delete and re-sync the lmdb folder as a last resort.

If you delete the lmdb folder and re-sync you will be in the same position. Just use the version (0.9.70) of mdb_stat that's in the Monero source tree (monero/external/db_drivers/liblmdb).

Also note, the python module version number (0.98) is not the lmdb version number. The python module you reference actually uses lmdb version 0.9.24. Therefore, if you need to use the python wrapper, you're going to have to build that first with the correct version of lmdb as used in Monero (0.9.70).

To use the LMDB library included in the Monero source code, uninstall your currently installed python lmdb module and reinstall following steps like:

cd ~/monero.git/external/db_drivers/liblmdb
make
cd ~
export LMDB_FORCE_SYSTEM=1
export LMDB_INCLUDEDIR=~/monero.git/external/db_drivers/liblmdb
export LMDB_LIBDIR=~/monero.git/external/db_drivers/liblmdb
pip install lmdb

Which ensures the version of LMDB the python module uses is the same version as used by Monero.


Missing TX, 24+ hours and XMR is missing :( I sent some XMR 30+ hours ago, the funds are no longer in my CLI wallet and are not showing up at the exchange.

This is with the old version of the wallet, what will happen if it is still stuck during the fork?

Here is the Tx:
84084c82f1f0f58ab1605d61f0c9e35603b445aafd6e80f6d9155b3696efcb22

[wallet 4AmGQG]: transfer 47sghzufGhJJDQEbScMCwVBimTuq6L5JiRixD8VeGbpjCTA12noXmi4ZyBZLc99e66NtnKff34fHsGRoyZk3ES1s1V4QVcB 220 2d3a1f8de837ea570f5c6fe21577ce4d3e8bf6454369c99347ffbe6ac636e2b4
Sending 220.000000000000. The transaction fee is 0.025485311456.
Is this okay? (Y/Yes/N/No): y
Money successfully sent, transaction <84084c82f1f0f58ab1605d61f0c9e35603b445aafd6e80f6d9155b3696efcb22>

If the transaction is not recorded on the blockchain (as suggested from you looking up your tx ID), then the outputs you were trying to spend are still unspent and still owned by your wallet.

Please update your daemon and wallet.  Your daemon may be on a forked-off outdated chain (along with other daemons who failed to update).  And then you may need to let your wallet rescan, once you know you're on the current (actual) chain.


Is there any pre build nvidia - cpu miner for Centos I need a pre-build CENTOS 7 monero miner.  I have been looking for the answer of this quesition for a while, I have found the similar questions as well. However, the answers are old (around 2016) and those miners does not run properly on my CentOS 7. I have a normal (non-root) in a CENTOS 7 server. However, I cannot run sudo on it. Therefore, I need a prebuild CENTOS 7 monero miner.
However, I also came up with this idea to compile a miner on my personal CENTOS7 system and run the built one on the server? Since I am not too much familiar with linux programming, can anybody answer my question?

If you don't have root access on the server, sounds sketchy to me.


How much traffic does the simplewallet use? Lets assume I want to start to sync from the last 10.000 blocks.

What does the wallet need to refresh from the monero daemon or remote node?
Something like block headers?

How big is that that needs to be transferred from daemon to wallet?

The wallet will get block and pruned tx data (that is, roughly everything except the signatures and range proofs). For current transactions, that's around less than 5% of the full block size I believe. So if you have 100 kB average block size, you'd get about less than about 50 MB for 10000 blocks. I think it's less than that, but let's say 5% to be conservative.

For reference, 10000 blocks is about 2 weeks' worth of blocks.


Unable to send funds from GUI, error: Couldn't send the money: daemon is busy. Please try again later Dameon is connected and sync'd yet won't send funds. I've been trying for 2 days and every time it confirms the address and the send request and then after entering the wallet password it says "Couldn't send the money: daemon is busy. Please try again later."
Please help.
Ryan

"Busy" means one of two things:

the daemon has not finished syncing the blockchain
the daemon has not found at least one other peer

Run "status" in monerod, and it'll tell you about both these things:

The X/Y numbers at the start of the line tells you the height it's reached vs the height it thinks the network reached. It'll download and verify new blocks so X can increase to get to Y.

The X(out)+Y(in) numbers near the end of the line tell you the number of peers you connected to and connected to you, respectively. If they're both zero, then your daemon is unable to connect to the Monero network.


What is the Monero Messaging System Used for? https://github.com/monero-project/monero/pull/4134

From the initial ticket, it states that the MMS is for making multi-sig easier. But why is it called a "messaging system"? I'm thinking from a lay person as if you can attach messages to your monero transactions, but its not. Also reading from the ticket, there seems to be the need of opening a new port: 18083

What is the MMS and what potential use cases are there for it?

It's a messaging system for nodes to talk to each other which would make multi-sig less burdensome on users. Users would no longer need to transfer transaction files over email for example, they would let their node talk to the other node directly.


Calculate fee before sending while using RPC calls Is there any way to find out what the fee of a certain transaction will be before sending it, via RPC calls?

As a side note, is it possible to see the transaction fee on a transfer via RPC from the returned TX hash/key?

Edit: If this is currently not available, is it something that could be considered for inclusion? It seems like this would be a very useful function for wallets that use RPC so the user is not blindsided by TX fees.

Knowing the transaction fee in advance is not possible [1], due to two reasons:

the output selection is randomized, so sending, eg, 100 monero several times will potentially need different fees, for example if one tx needs just one 150 monero input (small tx, small fee), but a second attempt happens to pick many 1 or 2 monero inputs (larger tx, larger fee).
there is no RPC command to create a transaction without relaying it to the daemon.

It would be fairly simple to add a boolean to the transfer RPC to tell the wallet to return the signed transaction to the caller, instead of relaying it. The caller could then decide whether the fee is acceptable, and relay it to the daemon if so. This is a good candidate to add as a github issue on https://github.com/monero-project/bitmonero/issues. All the building blocks are pretty much there already.

[1] you can get a lower/high bound based on the wallet owned outputs, but that probably doesn't help here.


CryptoNight can mine monero? Thanks in advance for all answers

at first I am new in this business.
I want to buy Baikal N240 which has Algorithm CryptoNight and CryptoNight-lite. I want Mine Monero.

My question is, can we mined Monero Algorithm CryptoNight? or must need CryptoNight variant 1 (CNv1)?

or can I go with any good product for mine? if any good profitable product than please give me suggestion

Thanks

I really salute you from bottom of my heart.
that means I should't buy CryptoNight algorithm hardware?
please could you suggest me which hardware is profitable for mining.

thanks and regards

The current algorithm is CryptoNightV1 [edit: now Cryptonight v4 as of may 2019], and will change in the future.
If you want to mine with ASIC or FPGA, you're looking at the wrong cryptocurrency.
Monero will change its algo at every network upgrade to remain ASIC and FPGA-resistant, and help the decentralization through the smaller player (CPU & GPU) wider participation.

With a CryptoNight ASIC/FPGA you could mine some XMC along with other ASICs.

Edit: If you want to mine Monero, then CPU (AMD ryzen series) and GPU (AMD RX550 and newer) are good hardware.
If you have enough Money, choose AMD Vega 56/64 GPUs.


What is the 'tail-hash' in Cryptonight? I understand cryptonight uses keccak and aes. I don't understand what the tail-hash means though.

There is a diagram on page 6 and 7 here which labels the last (tail) hash as "Chosen hash".

And described:

Then, the 2 low-order bits of the first byte of the state are used to
select a hash function: 0=BLAKE-256 [BLAKE], 1=Groestl-256 [GROESTL],
2=JH-256 [JH], and 3=Skein-256 [SKEIN]. The chosen hash function is
then applied to the Keccak state, and the resulting hash is the
output of CryptoNight.


I set up my public node to use port 18089, but why does monerod keep trying to connect to port 18081? I have a VPS and would like to run a public node and get it indexed by moneroworld to help the network.

I made the necessary changes to monerod.conf to change the port to 18089 and to restrict things to keep people from mining on my system. But whenever I use monerod to check the status, it keeps trying to connect to port 18081.
See screenshot below.

My node is currently running (209.159.146.140:18089) and I can connect to it directly using wallets on different systems just fine. But I keep getting the above error when running monerod status.

The default config file location is actually in ~/.bitmonero/bitmonero.conf, so if you are using another location, you need to start the daemon with --config-file /etc/monerod.conf in your case.

Or if your domain is, as you say, already running on the port 18089, to run the status command you would need to:

monerod status --rpc-bind-port 18089