How does the dynamic fee calculation work? A pull request on github for dynamic fee calculation was just submitted.  How does this new dynamic fee calculation work?

According to the pull request from  moneromooo-monero on behalf of ArticMine:

  The dynamic fee is based on the block size in a past window, and the current block reward. It is expressed by kB. This function calculates an estimate for a dynamic fee which will be valid for the next grace_blocks

According to dEBRUYNE_1 this change will take effect with v4 in January 2017 and can be represented with the following formula:

The fee will vary based on the base reward and the current

block size limit:

fee = (R/R0) * (M0/M) * F0

R: base reward

R0: reference base reward (10 monero)

M: block size limit

M0: minimum block size limit (60000)

F0: 0.002 monero

According to this recent study, there are some theoretical (but serious) security risks in situations where transaction fees exceed block rewards. (R/R0) will help keep fees in check by reducing them as block reward falls to buffer against this risk.

(M0/M) acts as a sanity check. When blocks are mostly empty it does not make sense to increase the cap. If the network (that previously had relatively empty blocks) is temporarily spammed in order to increase the block size limit, the network does not benefit so the (M0/M) will punish miners by reducing transaction fees. However when legitimate network usage increases over time the amount of increased transactions will compensate for the reduction in transaction fees as the block size cap scales naturally.

With regard to your spam attack tag and how this will change things:

Transaction fees will scale downwards on a per tx basis in the case of an increasing block size limit as the result of the "M" being larger in the (M0/M) part of the equation. However total transaction fees will increase overall as the number of transactions more than cancels out the reduced fee per tx. Spamming the network to increase the block size will remain expensive after this pull request is activated. In addition, for the reason described below such an impact on tx fees would only be temporary.

It is important to note that the (M0/M) portion of new dynamic fee calculation scales in both directions. Appropriate transaction fees differ based on network utilization which is capable of both increasing and decreasing due to countless unpredictable market factors. This new dynamic tx fee formula allows for both upwards and downwards tx fee scaling.


Mixin 0 (mixin 1) transaction ban Does the network still accept mixin 0/1 transactions?

Did Poloniex update their transactions to use a higher mixin?

As of the Monero 0.9.0 Hydrogen Helix release the minimum mixin is 2 (2 foreign outputs per ring for a total of 3) with the exception of dust transactions. The minimum mixin will be raised to 4 in a future fork probably at the same time as RingCT according to discussions from the most recent developer meeting.

The numbers above along with the simplewallet default come from Monero Research Lab recommendations:

  Our recommended improvements to Monero include a protocol-level network-wide minimum mix-in policy of n = 2 foreign outputs per ring signature, a protocol-level increase of this value to n = 4 after two years, and a wallet-level default value of n = 4 in the interim.

Poloniex upgraded along with every other exchange and major mining pool and therefore abides by the new minimum mixin rules.


How will the world learn of Monero? I do my part in sharing the Monero technology with those I know, of whom I think may be interested.

However, when I was introduced to Monero a few months ago, I found quite a bit of misinformation regarding the Monero platform. Is there any talk of "hiring" a community representative to create video blogs/ pod casts?

If not, what energy is directed towards Monero education?

There have been some conversations about the need for producing professional looking Monero videos. Some videos have been produced from volunteers within the Monero community and from organizers or participants of events where a Monero developer has spoken but more are needed. Here is some existing audio and visual content produced by volunteers:

MoneroEric education videos
gingeropolous education videos
fluffypony at On Chain Scaling
fluffypony at Arnhem Bitcoin City
fluffypony at Bitcoinference
LetsTalkBitcoin - Understanding Monero
fluffypony at BitcoinUncensored
fluffypony at SatoshiRoundtable

For technical users, the most informative educational content is provided by the papers written by Monero Research Lab mathematicians.

While donations can be made directly to those who produce videos, use of the Forum Funding System is highly encouraged. Community consensus seems to indicate a focus on producing more content after the release of the official GUI at which time Monero will be more welcoming to newcomers without technical backgrounds.

There are many aspects to community education, this Stack Exchange site being a prime example that required a large amount of community support. So far only Bitcoin, Ethereum and Monero have been able to successfully meet the requirements of proposing and launching a SE site. No amount of money can purchase the educational materials provided on Monero SE.

  Unfortunately, we no longer offer a subscription service or license the software to host Stack Exchange sites. Stack Exchange sites can only be created via the community-driven process at Area 51. We offer neither "white-label" services, nor the ability to bypass Area 51 to create sites through partnerships.

Monero community members are encouraged to help produce educational materials such as user guides and additional Moneropedia entries. So far most content has been created by volunteers but usage of the Forum Funding System has gradually increased over time and I expect that trend to continue.


GUI Monero Balance: 0 My Monero GUI shows a balance of 0, despite someone having sent me an amount >0 (I confirmed the transaction on https://xmrchain.net/). I rescanned the wallet cache to no avail. Anyone have any idea how I can get the GUI to show a positive balance?

Are you fully sync'd?
You could connect the GUI wallet to a remote node.


Does Monero (XMR) or Pirate (ARRR) offer better privacy and security? I have read several comparisons between Monero and Pirate. Can someone please explain to me the objective pros and cons about their privacy offerings? Is one more secure than the other? What are the main differences between Monero vs. Pirate?

Let's begin by discussing their backgrounds and privacy technologies.
Monero
Monero was launched in April 2014 under the reference CryptoNote protocol. Upon launch, the privacy protections were still better than comparable solutions at the time, but the privacy was weak by today's standards.
Monero uses ring signatures, RingCT, and stealth addresses to hide the sender, receiver, and amount for all transactions. There is no way to send a public transaction using the blockchain alone. Stealth addresses disassociate outputs from addresses. Ring signatures make the sending outputs (sources of funds) in transactions unclear/ambiguous. Ring Confidential Transactions (RingCT) hides the amount. All 3 are forms of zero-knowledge proofs.
Monero's ring signatures are not perfect at protecting against every possible heuristic, but they are good enough in most cases. If you use Monero to interact in strict thread models against colluding actors (including countries and regulated exchanges), then you may need to take extra precautions to "churn" your Monero to get enough privacy to meet your threat model. However, for someone making typical transactions, Monero provides excellent privacy.
Pirate
This is a new cryptocurrency launched in 2018. It claims to be a more private implementation of Zcash. It takes the same zkSNARK technology and makes it mandatory, vastly improving privacy by decreasing the amount of leaked metadata and transparent transactions.
PirateChain hides the sender, receiver, and amount for all transactions just like Monero. However, it offers even better theoretical untraceability protection. It can better hide the sending output by making it appear to come from a wider set of possible sources (keep in mind neither cases connect these sources to identities), rather than just a dozen or so with Monero.
PirateChain relies on Komodo's dPoW security and a trusted setup.
Comparison
Monero is a much larger network with more entropy. Far more people use Monero than Pirate, so it is much easier to hide in a crowd of other people. Pirate may offer theoretical advantages, but in reality, it is likely that these benefits are outweighed by the size of the network. Pirate may offer better privacy than Zcash; even though Zcash is more widely-used, the fully-shielded portion is less-commonly used. Furthermore, at the time of writing, Pirate does not support Sapling, so it takes a powerful machine several seconds to send transactions.
Furthermore, Pirate is less secure than Monero. Monero uses its own standalone blockchain and PoW system to secure it. Pirate uses Komodo's dPoW system. This system has its own (significantly smaller) set of miners. However, they claim it is secure since they "back up" the blockchain to Bitcoin. The actual effectiveness of this security mechanism has received little to no attention, and this claim has little to no academic support. As a result, we generally assume that Monero's much larger mining network makes it more secure, since we have no good way of evaluating the effectiveness of Komodo's security. Of course, Pirate relies on a trusted setup to provide anonymity, so if this was ever compromised, then they could mint new coins without detection.
Pirate claims to be the best of Zcash (ZEC) combined with the best of Monero (XMR) and secured by Komodo's (KMD) Delayed-Proof-of-Work (dPoW)." Though it takes some of the best components of Zcash, it has yet to include the new, better Sapling code. It has nothing to do with Monero in technology or overlapping community. The security model of dPoW has not been researched extensively, so it's dangerous to take their security claims at face value.


Password protection of a transaction The CryptoNote whitepaper contains this example of application for the transaction script system (in §6.3):

  Password protection. Possession of a secret password s is equivalent to the knowledge of a private key, deterministically derived from the password: k = KDF(s). Hence, a receiver can  prove  that  he  knows  the  password  by  providing  another  signature  under  the  key k.  The sender simply adds the corresponding public key to his own output.  Note that this method is much more secure than the "transaction puzzle" used in Bitcoin, where the password is explicitly passed in the inputs.

Is it possible to do that with Monero?
What are some realistic use cases for that?

As I understand it, it'd be a form of 2FA on a particular address.

It could work, but it'd be clunky (no such thing is implemented at this time).

You'd do something like this:

Create a new address type, call it "password-protected address".
Append the public key of k to the normal public spend/view pair. The address will be even longer than normal. :)
The sender then creates a normal stealth output, but adds the pubkey of k to it (P + K if you will).
The receiver, when scanning for outputs, would also check if any match P' + K.
To spend protected outputs, the wallet would prompt for the password to derive s, then add s to the generated private key for that output to get the real one.

Overall it's not that clunky, but you would also have to provide s to get the key image (for spent status when scanning).


Why is there only one GPU miner for NVIDIA cards? I've just started mining (0.8 XMR so far, woo!) with some NVidia cards (4x GTX750ti), mainly due to the low power draw.

As far as I know, the only GPU miner for the cryptonight algorithm is ccminer-cryptonight. I know there are a couple of forks, such as this one by KlausT but considering there are a few different options for AMD GPU mining, and CPU mining, I'm surprised there isn't at least one alternative.

FWIW, I'm happy with ccminer, I just think it's good to be able to compare miners for efficiency and ease of use, etc.

Is there a reason for this or is it just that ccminer works well so why make another?

There was a proposal on the Monero Forum Funding System for someone to create an improved NVIDIA miner. Unfortunately, the developer never followed through and the project was closed.


Mining and not seeing anything so for at 500H/s I am a Pastor running one GUI wallet synced on two different Dual Xeon Graphics machines and get approximately a combined hashrate avg between them of 425-525 H/s, 117-127 on an 8 core, and 335-375 from a 12-core. But I look at logs and I've been mining with rough avg of 500 H/s now, for almost 48 straight hours, well over 60 blocks have come and gone, since I synced and began mining...yet, no change in balance. I intend to use this to help others, but I am not so sure everything is being done right, wallets are syncedd to current blocks, and continue to be, but I realy have no idea how I might check to see if I just need to set it and forget it....Please Help for the Love of God.

If you're using the GUI to mine, what's happening is the GUI is basically sending a message to its daemon to say "hey, this is my wallet address, please start mining, and then if you find a block, please pay the block reward to that wallet address."

That's fine, but note that you are solo mining.  Mining rewards are only issued to a miner that solves a block.  In a pool, pooled resources add hash power to increase the likelihood of finding a block.  If a pool finds a block, it shares the block reward with the pool miners (generally minus a fee).  In your case, you'll keep the entire block reward if you find a block, but your hash rate is very low compared to the network hash rate, so it will be very, very, very seldom that you find a block.

Assuming a network hash rate of 500 MH/s, and with your 500 H/s, you should statistically win 0.0001% of the time.  There are 720 blocks mined per day, so you'd win .00072 blocks/day.  This basically means you would win an actual block of your own every 1,400 days or so.  So if the network hash rate were 250 MH/s, then you'd only have to wait, on average, 700 days for a block.

Considering that you may not want to play the lottery for several years before accumulating any winnings at all, you may want to use a pool mining software like xmrig or xmrstak, among possible others, and then mine on a pool.


Will future GUI and CLI releases remain seperate? The GUI beta includes the Monero daemon and other components used in Wolfram Warptangent.

In the future, will the GUI and CLI point releases remain separate or will they be packaged together?

What benefit is there in keeping them separate currently other than to emphasize that the GUI is still in beta status?

The current intent is to keep them separate for size reasons. The GUI binaries take a lot of space due to the extra libraries needed (Qt, etc), and so there is an advantage to keeping a separate download with just the CLI tools. Those are incldued in the GUI download because (1) it does not add too much space to the Qt/etc size, and (2) they are needed, and so bundling them ensures the GUI gets to use the matching version.


How do the Monero nodes find each other? Given that there is no point of centralization, where a node can ask 'who are my peers?', how does discovery work?

There is a default set of nodes in the monero source code that it will attempt to use. These default nodes are used to bootstrap the list of peers your node will connect to initially. Nodes are able to request a list of peers from the other nodes they are connected to, which produces a large set pretty quickly. This is helpful to let you get a node up and running very quickly without the daemon having to scan all IP addresses.

However, once the peerlist has been pulled from the default list it can connect to any other known node. In this sense, the initial node list is actually centralized in the monero daemon, but only at first. To see this in action use the print_pl command in the daemon. It will print out a big list of all the peers your node knows about.

For those who are paranoid about the origin of the list, you can use the monero daemon --add-peer (or --add-exclusive-node during your first sync) to add some nodes to your local peerlist manually. You can also try out the --seed-node parameter, which just connects to a node and pulls its peer addresses.


How the receiver knows the amount that he received from the sender? After the receiver scan the blockchain and identifies his own transaction, how does he know the amount that he received in that Tx? (Without off-chain communication)

I appreciate a Technical explanation according to the Monero terminology (RingCT etc..).

Thanks.

The amount is encrypted by the sender and then communicated as part of the transaction (it's a field called amount in the ecdhInfos part of the transaction).

To decrypt the encrypted amount, you need to know your private view key a. The transaction already includes the transaction public key R.

Decrypted amount = encrypted amount - Hs(Hs(8aR || i)) where i is the index of the output whose amount you want to decrypt, || means byte concatenation, and Hs() is a hashing function that returns a kind of number called a scalar.

Update:

In order to reduce the storage required for the encrypted amount from 32 bytes to 8 bytes, the scheme is now:

decrypted_amount = 64-bit encrypted amount XOR first 8 bytes of keccak("amount" || Hs(8aR || i))


Monero mining set-up with GPU 8*NP106 I have 8 GPUs of the model NP106 and I have been trying to use them for a monero rig. Is there any way I can use ccminer or claymore even though they are not GTX or AMD build. Would appreciate your view on how to go about with it.  Thanks, guys!

It is my understanding that the NVidia P106 (if this is what you mean) are GTX without the display port. If I am correct, you should be able to use any NVidia compatible mining application based on your OS. CCMINER should do admirably.

Feel free to give a test on my Monero Pool and if I'm around I'll try and help via the chatbox.

Gulf Coast Mining
https://mon.gulfcoastmining.com


What are the primary differences between Monero and Bitcoin? Addressing each of the following factors, what are the major differences between Monero and Bitcoin?

Privacy (including any limitations privacy may have on auditability)
Scaling (including blockchain size and ability to prune)
Security (including network hash rate, PoW and elliptic curve)

Privacy

You won't find your standard address on the blockchain. Every single output is its own one time address, there is no choice about it (as opposed to Bitcoin, where address reuse is discouraged, but commonplace, and easy to do).

Ring signatures allow transactions to be ambiguous about which outputs are spent, since any one of the N inputs in a ring signature appears to be a possible candidate.

Once RingCT is merged, transaction amounts will be fully obscured (they currently are ambiguous due to the split by denominations). Bitcoin amounts are in the clear (but may not be in the future, if CT gets merged to Bitcoin).

Auditability is based on voluntary disclosure of, depending on the task at hand, the private view key (allows a third party to see all your income, but not your spends, nor spend anything), the per tx keys (allows a third party to ascertain whether you did send a tx, as well as the amounts sent - useful for arbitration is someone claims you have not paid them), and signed key images (allows someone with your view secret key to determine which outputs of yours were spent, and which were not - essentially, your outgoings, also proof of reserves - but not where they were spent).

With Monero, nobody can see your balance from looking at the blockchain.

Scaling

This is a bit of a mixed bag. Monero transactions are larger than bitcoin (typical transaction is a few kB, while in bitcoin they can easily be sub kB). Higher mixin (for better privacy) also increases transaction size.

On the other hand, Monero has no fixed blocksize limit. While there is a blocksize limit for any given block, this limit evolves based on demand in the previous blocks, allowing increasing demand to increase block size, and vice versa.

Pruning is possible both with Bitcoin and Monero. In Monero, signatures are a large part of a transaction's size (even more with RingCT), and a node does not have to keep them once they've been verified (a side effect is that this node can't serve a verifiable blockchain to other nodes after pruning). Some kind of SegWit system is also possible with Monero, though I do not know the details.

Cryptonight is heavy to verify, contrary to SHA-2. This implies CPU load on nodes, which may become significant if transaction volume increases. There has been talk of switching PoW to Cuckoo Cycle, another hash algorithm with the same goals as Cryptonight, to alleviate this.

Last, since Monero is ambiguous wrt which outputs are spent, the TXO set never decreases (or very, very seldom does), whereas with Bitcoin, spent outputs can be removed from the UTXO set.

Security

Monero uses Cryptonight instead of SHA-2. There are currently no ASICs available for Cryptonight, which was designed to diminish the performance gap between CPUs, GPUs, and ASICs by demanding comparatively large amounts of memory (which are commonly available in today's PCs but very expensive to have in ASICs). This means that CPU mining is still possible, whereas in Bitcoin, CPU mining is utterly pointless. The hope is that this will encourage people to mine with existing computers, preventing too much centralization, like we see in Bitcoin with a few Chinese pools having the majority of Bitcoin hash rate.

As a consequence, CPU mining makes Monero more attractive to botnet miners as various (news) reports prove (e.g. 1, 2 and 3). This is an interesting point, because it harms zombies' owners, while benefiting Monero. While this can be seen as an overall plus, since botnets exist anyway, and are providing a good thing (Monero security) to society at large, instead of a bad one (sending spam, or serving child porn, or whatever it is they would do otherwise), it can also be interpreted as an additional (a presumably very strong) financial incentive to expand existing botnets and put more ressources into malware distribution.

On the other hand, the value of Bitcoin now has attracted a lot of miners, and it is vastly more costly to attack Bitcoin than to attack Monero. Hopefully this will change if Monero attracts a lot of attention from miners, but this is not a given.


Open alias integrated address Open Alias addresses are great. Integrated addresses are great. But is it possible to add a payment ID to an Open Alias address? eg:

donate@getmonero.com#057980027d4b36df

Or something else?

Yes, this is possible, though I don't think a wallet implementation of it exists at the moment.

First, we need to understand that OpenAlias is simply a protocol whereby a DNS lookup can be used to query an alias, such as donate@getmonero.org, and return a regular address. As of 21 March 2017 for this example, this is:

44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A

Understanding the construction of an address and of an integrated address is also crucial, and is discussed here: What is an integrated address?
Given that we understand how to construct both a normal address and an integrated address, a rundown of how a wallet could send to an integrated address using an OpenAlias name is as follows:

Given: donate@getmonero.com#057980027d4b36df

Parse:

OpenAlias: donate@getmonero.com
Payment ID: 057980027d4b36df

Get address via OpenAlias:
44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A
Decode address:

Version (hex): 12
Public Spend Key: 42f18fc61586554095b0799b5c4b6f00cdeb26a93b20540d366932c6001617b7
Public View Key: 5db35109fbba7d5f275fef4b9c49e0cc1c84b219ec6ff652fda54f89f7f63c88

Encode integrated address:

Version (hex): 13 <-- Note that integrated addresses use a difference version #
Public Spend Key: 42f18fc61586554095b0799b5c4b6f00cdeb26a93b20540d366932c6001617b7
Public View Key: 5db35109fbba7d5f275fef4b9c49e0cc1c84b219ec6ff652fda54f89f7f63c88
Payment ID: 057980027d4b36df

Output Integrated Address: 4DrvGduF3ynBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVPkaWoLSK6nHSCXS5b6

So a company could easily say "please pay 4 XMR to pay@mystore.com#0123456789abcdef". The important thing in terms of making this useful is that the payment ID does not need to be included in the OpenAlias registration, which would be an unsustainable solution.


Verifying a payment in Monero in an automatic manner, without a third-pary and without full node? On my website I'd give a user a) a Monero address b) amount to send
But how would I verify a payment in an automatic manner, without a third-pary and, preferably, without a full node either? Would I have to ask a user to enter a transaction ID after he's sent a payment? Meaning, a user would return on a payment page and enter a transaction ID, and my script would verify an incoming payment by it.
Would transaction ID alone be enough? Would he be able to re-use some else's transaction ID in a attempt to cheat me?
Additionaly, would there be an issue in regards to verifying a payment, if I reuse an address among multiple users?
Note that I'm ok with connecting to the public Monero nodes and block explorers. And I might be ok with running a full node too. But I'm not ok with using third-party paid services.

That would not work, since you cannot check the transaction id is on the chain or not without a node or a third party to do the check for you, without even getting into checking whether that transaction id does pay you.
If you really must have no node and no third party, then...
The customer sends you the block header the tx was mined in, plus the ordered transaction id set in that block, which includes the tx the customer sent you. The customer also sends the actual tx.
Then you can verify that the transaction hash is in the claim tx id set. Then you can calculate the hashing blob, and thus verify the block yields a hash below a high difficulty which corresponds to the rough Monero difficulty.
Doing the above ensures about as much energy was expended in creating the block as was on the real Monero network, so it is unlikely someone would expend thats much work without actually mining. Of course, it can still mean the block was orphaned.
If this is not enough, you can request N blocks prior to the block with the tx, and do the same for those N blocks too.
Once this is done and you know with reasonable certainty the tx is certain to be in the chain (and thus valid), you can check the tx actually pays you and how much. For this, the customer would also send a proof generated by get_tx_proof, which you'd check using check_tx_proof.
If you're worried about the block being orphaned, you can also require M blocks after the block containing the tx, and do the same block checking work for those (do not forget to verify each block does point to the block hash of its purported parent). This will of course mean a delay before such a proof can be made.


Can you send Monero from an exchange to an exchange directly? Can we send Monero from an exchange to an exchange directly? Lets say from Bittrex to Poloniex, or do we need an actual wallet and send from an exchange to a wallet first and then from wallet to a new exchange.
Is it same with AEON?

It depends. Several exchanges have a requirement for a payment ID to be included when depositing, but have no option to add it to withdrawals.

In general it's safer to withdraw to an own wallet and then deposit to another exchange, since you can track all steps and in case handle out view keys to prove you didn't get or you sent coins.


How to create a transaction offline using javascript? I saw a method for sending a transaction to a daemon, but can't find information on how to create and sign a tx using javascript. I can't use the wallet-cli/RPC etc.

mymonero has javascript code to create transactions which you can reuse (some surgery needed). Some of it runs binary blobs compiled from C++ though, which may not be what you want. See https://mymonero.com/.


Why is AEON wallet not working on Bittrex? Withdrawals and deposits for AEON are disabled on Bittrex, while trading works. Is there actual maintenance going on? Are developers in contact with Bittrex?
When do you expect this problem to be fixed?

There were some large reorgs/forks in June 2017, like on the order of 50 or 100 blocks, the cause of which was not clear. Prior to that there was a bug that required a chain rollback, which resulted in delisting from cryptopia exchange. After these incidents the maintainer of aeon GitHub repo, smooth, requested bittrex to take the wallet offline until aeon could be updated to a more recent monero codebase. That process still hasn't been completed, so the wallet is still offline.


How to identify sender when they send monero? My current understanding is that when I expect to receive monero from many people, I send each subaddress to each one of them to identify which one sent how much. But it seems to be troublesome for me to generate a lot of subaddresses.
So I will just have an address and people send monero to that. Then they send me an email with 2 information TXID TXKEY so I can check it.
Is that the correct way ?

You could do that, if you want something way more cumbersome than giving a different address to everyone. Another, more secure way is to get the sender to generate a proof of sending a transaction (see get_tx_proof and check_tx_proof), but that is also more cumbersome than using a subaddress per sender.


keys file is opened by another wallet program First of all restoring my wallet is not an issue, no inocent XMR's are being harmed here.
My issue my pc crashed with my wallet open I am using monero-gui latest version on Ubuntu.
While starting the monero-gui after a reboot the monero-wallet-gui does not want to open the wallet anymore
ERROR   frontend    src/wallet/api/wallet.cpp:416   Error opening wallet with password:  internal error: "/path/to/monero-storage/redacted/redacted.keys" is opened by another wallet program

Being curious to which program/user was having this keys file open I tried to do some research.
But fuser came up empty
fuser /path/to/monero-storage/redacted/redacted.keys

lsof at least found some traces monero-wallet-gui but the specific keys file was not opened
lsof | grep monero

I killed the process anyways but still the same error when trying to restart the wallet.(later I realized this where just leftovers from me starting the wallet gui before)
Then I moved on lookup for some hidden lock files but ls -la did not reveal anything in the monero-storage folder this revealed nothing.
So I gave up searching my self as this is all the linux knowledge I have to investigate.
But still curious to why this is happening I was wondering if someone where knows this error and what causes it?

In the end it turned out the the keys file owner was root setting this to the correct owner with chown solved the problem.
sudo chown $USER:$USER keys /pathto/monero-gui/monero-storage/$USER/$USER.keys
sudo chown $USER:$USER keys /pathto/monero-gui/monero-storage/$USER/$USER

It was caused by me using sudo the first time I run the wallet this created the wallets keys file with root as owner.


how do I make monerod play nice with process supervision? For some reason monerod gets angry if it reads EOF from stdin and decides to exit.  I don't know why.  Go ahead, try it:

monerod < /dev/null

This is really unfriendly behavior for daemons, because it is incompatible with process supervision (daemontools, runit, etc) which keep the daemon as a child process of the supervisor so it can do things like notice when the child dies and restart it, prevent two copies of the daemon from running at the same time (no more stupid pidfiles) or centralize logging policy by having the daemons send their logs to stdout.

Running monerod with the --detach option is not what I want; this causes it to double-fork and deliberately trick the parent process into thinking it has died.

How do I get monero to just act like a normal daemon?

Monero now has this feature, added two months after the question was asked (way to go responsive devs!).  Here is the pull request that added it:

https://github.com/monero-project/monero/pull/1897

To use the feature, just launch monerod using the extra option shown below:

 monerod --non-interactive

to the command line when launching monerod.  This will make it act differently than a normal unix daemon and not exit right after starting up.  Works great!


What is the maximum number of incoming connections by default? 0 or unlimited? Based on this question in 2016, there is no limit on the number of incoming connections. However, based on this commit in 2018, users can set a limit for this number.

By default, when I don't set any limit for the arg_in_peers via RPC command, the value will be -1. Does this mean my node cannot accept any incoming connection, or there will be no limit on this number? In other words, what is the default value of max_in_connection_count?

The default value for in-peers is -1 (unlimited). The reason -1 is (in effect) unlimited is because max_in_connection_count is an unsigned integer and therefore 0-1 wraps to the maximum of an uint32_t (i.e. 2^32-1).

If you need to limit the inbound connections, set in-peers=N (replacing N with the number of incoming peers to allow) in your daemon config.


Is there a transaction time lock mechanism in Monero? In Bitcoin and many other cryptocurrencies, we can create and sign a transaction that will not be valid until after a certain period of time.  This is often used to lock down money used in a protocol while allowing for the protocol to time out and return the money if the protocol fails.

An example is prepaying, where you regularly buy stuff at a shop and you want to reduce the number of transactions sent to the blockchain, so you create a multisig or shared account between the party and the shop.  Whenever the customer wants to buy something, they simply sign a new transaction sending that amount plus the amount the customer already owes to the shop, sending the rest back to the customer.  This allows you to buy any number of things with only 2 transactions posted to the blockchain.  However, if the shop is malicious and refuses to serve the customer after the money is put in the shared account, then the customer needs to be able to get their money back eventually, so a time locked return transaction would be created before any money is added to make sure the money can't be locked down forever.

Note I am not talking about transaction unlock time, where a transaction is posted but can not be used as an input for a period of time.  Instead, I want the transaction itself to be invalid until a certain period of time has passed.

Is there a time locked transaction mechanism in Monero?

No. Monero does not have an equivalent to Bitcoins CheckLockTimeVerify or CheckSequenceVerify.


Tweaking our Private Monero Pool We set up a private pool and are mining at about 9KH/s, at least for now.  All of our miners are using the same XMR address, so we are not concerned with sending out payments.

What should I set the vardiff to in a situation like this?  Are there any other settings we should consider that would help the pool find a block more often, or do the settings even matter for that?

The server running the pool is fairly beefy.  We have about 32 devices mining to it and resources are barely taking a hit, so I am not concerned with this at all.

The devices have a varying range of H/s, some at only 150, some at 900, and currently all are pointing to the same port.  All this is CPU at the moment...we are waiting for our first block to invest in some GPUs!

Whatever the difficulty, you have the same expected return in the long run, so it does not matter. If you use a difficulty that's twice as high, you'll find half as many shares. A higher difficulty will just increase the variance. Some people say "but it can mean this miner never finds a share so it's wasted", but that's hindsight bullshit since they won't complain when the worker gets lucky and finds way more than its expected share.

If it's your own pool, shares don't matter anyway. Whether or not a miner gets a share, you only get some monero if its difficulty is at least the current target, so any share with less difficulty is pointless.


Install latest Monero GUI before fixing corrupted blockchain My computer did an automatic reset the other night, after which the daemon failed to restart.  After trying a few recommendations found here I am still unable to restart the daemon and looking at the log files I highly suspect a corrupted blockchain.  Since a full download/sync is needed, I figured I'd wait until the new GUI (v0.12.0.0) was released, however now I am not sure of the order of steps to take to make the transition easiest. My current GUI is v0.11.0.0 "Helium Hydra".

If I install the new GUI before deleting my likely corrupted blockchain, will this cause any problems when the new GUI tries to fetch my current wallet information?  On the other hand, if I install the GUI after deleting the corrupted blockchain, but before re-downloading/syncing it, will this cause any problems when the GUI tries to fetch my current wallet information?  By wallet information I mean "login" information, not balance (I suspect it won't get the balance because the blockchain is corrupted).  Basically I don't want to have to restore the wallet from the seed, and want to make the blockchain re-sync as painless as possible.

The daemon and the wallet run independently of one another.  The daemon is in charge of the blockchain, and it'll look up information for a wallet.  The wallet doesn't have a copy of the blockchain.  It manages your keys and transaction history.

With that said, it doesn't matter when you delete the blockchain.  It will be semi-painful, since the IBD (initial block download) will take up to a couple days or more.  Once you're caught up, though, you'll be fine.

In other words, the deleting of the blockchain doesn't affect your wallet.  In fact, the GUI has a new feature called "Bootstrap daemon" which means you can connect to a remote node, while your daemon syncs in the background.


send (all) from command line In the desktop wallet you can send your entire balance but clicking the "All" button which puts (all) in the amount.  Is there a way to do the same thing in the command line client?

You can use the sweep_all command. It will send the full balance, minus the fee needed for that transaction. For example:

sweep_all 4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

See help in monero-wallet-cli for full command syntax.


Could a prediction market like Augur be built on top of Monero? Are there any technical reasons preventing a decentralized prediction market like Augur from eventually being built on top of Monero?

Besides multisig what other Monero development needs to be completed to more easily facilitate Monero smart contracts and sidechains?

In the future, yes. Check out the Tari announcement. This, alongside the ongoing work at the Monero Research Lab to bring daughter-chains to Monero, is a big step forwards towards Layer 2 capabilities.


Monero transaction from kraken to bitfinex stucks in status confidential transaction My Monero transaction sucks since 2 months and I have no idea how to get my coins back. Bitfinex support does not answer and according to kraken support moneros were send successfully. Find my transaction info below:

https://moneroblocks.info/search/97a4b71c59c6305ad27ec33242ed3e6cce8408bfb5e554a9a3e9897c82ddc380

Is there a way using the monero-gui?

Thank you very much for help.

If you sent to an address owned by someone else (Bitfinex), then you cannot use a wallet to recover the funds.  It is the responsibility of the address owner (the exchange, Bitfinex) to credit you with those funds, as long as you can prove that they were sent by you or on your behalf.


Does AEON offer a sweep transaction feature? I found these sweep transaction instructions for Monero but cannot find anything similar for AEON. Does a similar feature exist? If not what is the AEON strategy for dealing with lots of dust generated from mining payments or many other small transactions?

Right now, with release 0.9.8.0, it isn't possible, as there's no equivalent sweep command in Aeon's CLI.

I asked your question on Slack today, and this is what moneromooo had to say on the topic:

  I think it's fairly new in monero. I also think it relies on the new tx composition algorithm, so not an easy port.

  It'd be possible to add a function to do this using the previous algorithm, but it's less well suited and might well fail pretty often, which makes it not very useful.

Hope this answers your question.


CryptoNight Algorithm Keccak1600? I've looked at this file https://github.com/monero-project/monero/blob/master/src/crypto/slow-hash.c#L543

What does it mean when it says " CryptoNight Step 1:  Use Keccak1600 to initialize the 'state' (and 'text') buffers from the data. */?"

The Cryptonight description by the Cryptonote team states that

  First, the input is hashed using Keccak [KECCAK] with parameters b = 1600 and c = 512.

In the primitive family Keccak, b is the width of bit block of the permutation function.

  Given an input bit string N, a padding function pad, a permutation
  function f that operates on bit blocks of width b, a rate r and an
  output length d, we have capacity c = b − r and the sponge
  construction Z = spongef,pad,r, yielding a bit string Z of
  length d, works as follows

This value of b is also used by SHA-3 for instance.

EDIT

Regarding your question about the location of the value 1600 in the code:

Function keccak1600 is defined as a special case of function keccak with parameter mdlen equal to the size in bits of the type state_t. This type is an array of 25 uint64_t so the total size is 25*64=1600.


What will make Monero scale up and get Mass adoption? Right now as we all know Monero just got added to dnm which was precursor to Bitcoin price being pushed up, Monero has been tested for about 3 years and be proven flawless in privacy/anonymity and did not have premine/ico etc... I am curious how Monero will go forward if it needs more people to use it, what initiatives are we taking and what projects are we doing that will say we reach an user base of 1 million users (example Bitcoin has 2 to 3 million users), how are we going to do it?

For mass adoption, we certainly need a simple way (official GUI) to use Monero, since the average user will not be able to run the CLI. It would be also great to see some mobile wallets (with private key control) to adopt Monero. But I am sure, we will see this in the near future.

Most Bitcoin users think that they are anonymous, but law enforcement and some startups are already analysing the blockchain and try to deanonymise step by step. When more people become aware, that they are not anonymous with Bitcoin, they will probably look for alternatives. The first step are tumblers, but you have to trust them and I am not aware of a single tumbler, that is run by a trusted entity. So if they get to know a better alternative, they probably will find Monero.

The whole Monero community can help by spreading the word about the most private and anonymous cryptocurrency available.

However, it is still a long way to mass adoption. First, there will be some speculants joining and causing price fluctuation. The average user wants stability, not speculation and fear of loosing money.


XMRig-Proxy Performance I have a farm of around 50 rigs running xmrig.  I'm setting up xmrig-proxy, but am having trouble finding information.

Does it set individual difficulties?  I have some old desktops churning 200H/s up to gpu rigs turning 2KH/sec.  I noticed xmr-node-proxy does this, but wasn't sure of xmrig-proxy.

Also, on the comparison page for xmrig-proxy, it states Share Validation is "Basic" versus node-proxy being "Full".  What consists of "Basic" validation?  Will it still have a performance boost versus connecting all these a pool?

Yes, you can define individual difficulty for miners connected to xmrig-proxy. However this only tells the miners which results to submit to the proxy. Another difficulty is set between the proxy and pool and this difficulty says which results (shares) will be submitted by the proxy to the pool.

So if your pool diff will be 100.000 and diff for miners (either by proxy config or individually as part of username) will be 10.000, proxy will receive all shares with diff >10.000, but will forward to the pool only those having diff >100.000.

At the end it doesn't matter if you submit diff X share every 10 seconds or diff X*2 share every 20 seconds.


Transactions Bitfinex  Wallet not going through since 24 hours Good Evening,

yesterday i made 2 transactions from the monero wallet to bitfinex and one withdrawal from bitfinex to monero wallet

All three transactions havent gone through.

are there any network problems recently ?

jan

So for me, it was that I used a local CLI wallet and my monerod daemon was out of sync. After syncing the wallet (by starting ./monerod) I saw my balance. The best is probably to use some shared online daemons instead of a local one.


What does output of running ccminer for mining monero actually means? I am curious about monero, therefore I installed ccminer to try it out in fastest way. I am getting following output not sure what it means. Can somebody please explain. That would be great.

[2017-06-20 22:37:00] Stratum detected new block
[2017-06-20 22:37:00] GPU #0: ------------------------------------
[2017-06-20 22:37:19] GPU #0: ------------------------------------
[2017-06-20 22:37:19] accepted: 1/1 (100.00%), 320.07 H/s (yay!!!)

Also, I wanted to know how much block needs to be accepted to reach the payout of 0.5 XMR.

Stratum detected a new block

Stratum is a protocol for miners, wallets etc to talk to nodes. It's not specific to Monero and it is used for other coins too. It's just informing you that the miner has started on a new piece of work.

  accepted: 1/1 (100.00%), 320.07 H/s (yay!!!)

When miners mine in a pool, they're not working together. You're doing the same work as if you were mining on your own.

Think of miners going through a load of random numbers, doing "maths things" to them and seeing what comes out. If the number that comes out is greater than the difficulty, they've found a block (or a share). The problem is that the difficulty on the network is very high, most miners would never see a block despite all of the work they're putting in.

Pools give miners reduced difficulties, this means that not every share found is a block. If it's a block, it's mined by the pool and then all of the miners get rewarded based on how many shares they've submitted (and the difficulty of the shares). If it's not a block, the pool just gives you a thumbs up for trying and you carry on working.

I'm not sure if that was a terrible explanation or not, but to summarise, shares are just a way of miners to show that they are attempting to find blocks.

  Also, I wanted to know how much block needs to be accepted to reach the payout of 0.5 XMR.

It's not possible to know just from the number of shares submitted, it also depends on the difficulty. You could submit hundreds of shares with a low difficulty and then still earn less than somebody submitting only a few shares with high difficulty.


Importing a paper wallet to GUI I have a paper wallet that I made from moneroaddress and wanted to import it to the GUI. Can I import it by starting up the GUI and clicking, "restore wallet from 25 word mnemonic seed," and entering the seed from the paper wallet?

You are correct, that's all you have to do. However, when you restore it in a GUI/any live method its not a cold wallet anymore. So be very extra careful that the computer you are working has an anti-virus and you are positively sure that it is clean from malwares/keyloggers.

If you want to make your paper wallet still "cold", there are other ways you can view your funds. E.g. How can we view the balance of a cold wallet storage and keep it cold?


Does Monero have any connection to the Esperanto community other than its name? In addition to the Esperanto name Monero, the name Kovri was chosen for another Monero related project. Is there some deeper connection between the Esperanto and Monero communities? Or does part of the Monero community just like to use Esperanto vocabulary because of the project name?

There is no official relationship. The Monero name was inherited from the original developer who never revealed any connection to the Esperanto community other than providing the definition:

  Bitmonero = bit + monero
  monero = mono (money) + ero (bit) = coin (esperanto language)

There are some unnoficial connections such as an Esperantist named Kaja accepting Monero for Esperanto lessons and an attempt from longtime Monero user dnale0r to encourage more Monero users to begin learning the language


Problems with daemon syncing past block 1341326 I just noticed that my daemon has not been able to sync past block 1341326. A little investigation shows my node reporting that I'm behind by so many blocks, and then randomly it will say that I'm so many blocks ahead.

Question - when it reports that I'm ahead, is that just because someone who is further behind is still syncing up? Or is there something else going on with peers who are that far behind, (and yet somehow are telling me I'm ahead)?

I do see an error popping up which appears to be related to a network service or something but I'm not sure if it's related. I can connect to the internet just fine as I'm writing this post from the same machine where monerod is.

The error I see is this.

2017-Jul-10 09:40:04.660681 [P2P6]ERROR /DISTRIBUTION-BUILD/contrib/epee/include/net/abstract_tcp_server2.inl:1061 Exception at [boosted_tcp_server::connect], what=resolve: Service not found

Should I just blow away my current install and install fresh or are there some commands that might get me past this?

Thanks for any help!

Sounds like you're on an old release. The current version (v0.10.3.1) doesn't bounce around like that on reporting sync state any more.


How does nicehash perform share validation? I'm talking about two services: NiceHash and MiningRentals and CryptonightV1 algorithm (which they call CryptonightV7), for example.

Let's suppose someone trying to fool one of them and:

Miner (seller) tries to fool pool (buyer) and sends invalid shares, which not calculated, just generated.
Or pool (buyer) tries to fool miner (seller) and tells it invalid share, but actually, it's valid.

How do these services technically decide who is not a liar at this example? As well as I know, to perform full validation, you need block template from a network. But NiceHash doesn't have it; they only get three params: blob, target, job_id.

For example, xmr-node-proxy, – they have its format and receive everything they need to perform full validation.

xmrig-proxy don't (they perform basic validation), so it can be bypassed, isn't it?

Whilst I can't speak to xmrrig-proxy as I'm not familiar with it's codebase, I can to xmr-node-proxy, which does actually perform full validation of the miner submitted job.

Aside from this clarification and to answer your specific points:

Pools perform full validation of submitted jobs and therefore a miner cannot send invalid work and get shares awarded.
A malicious pool could indeed not accept valid work, so there's an element of trust here. If a pool appears to not be accepting valid work and giving the correct shares, miners will begin to notice and use another pool.


Is it true that a vendor can see my IP address if I send moneros via my GUI wallet without using Tor or I2P? xmr.to recommends to always use Tor or I2P to cover the ip address. I've tried to inform myself on that topic, but to be true it is to complicated for me. Is it right that, in the future, a possible Kovri implementation would solve that problem?

For now, do I really have to use Tor or I2P? Which steps would a vendor have to do to reveal my IP address to find out my identity? In which way could paying via mymonero until the Kovri implementation solve my problem?

I know these are noob questions, thank you in advance for explaining it as easily as possible.

If the vendor also runs a Monero node, and is currently connected to your own node, then their node will see your transaction being forwarded to their node.

If they set things up to keep track of IPs through which they seem transactions come in, they can determine which IP forwarded each transaction to them. This may or may not be the originating node (they'd have to be connected to every single node in order to determine which node is the originating one). But if they somehow were connected to the whole set of nodes, they could determine the originating node.

Now, most merchants aren't running a node. Most, in fact, accept Bitcoin, and accept Monero only due to paymene systems, shapeshift, xmr.to, or similar services.

Using mymonero would sidestep this, as the merchant's node would see the mymonero node's IP (or one of them, if mymonero uses several).

Using Tor or I2P negates this problem altogether.

Note: the above assumes you're using your own node. If you're using a public node, then the usual privacy guidelines matter: use Tor between your wallet and the public node, instead of between nodes.


Does moneromooo have a direct donation address? I know there's a general Monero project donation address here.

I'm not sure if that only goes to the core team.  moneromoo is not listed as a core team member here, but he has the most commits shown here.

Also, I know he gets paid sometimes with the FFS like here, but I'd like to know where someone can send a one off donation.

Others have expressed interest in donating directly to him like here.

His donation addresses are:

Monero: 4AfUP827TeRZ1cck3tZThgZbRCEwBrpcJTkA1LCiyFVuMH4b5y59bKMZHGb9y58K3gSjWDCBsB4RkGsGDhsmMG5R2qmbLeW

Aeon: WmtXcFZj5iGY21JxAtFsJVQmQQyo7jgoJP8V4zLWVzDeeTfvbP8Mzb5gbNpQEc6BkeUYUqjGntHDSDyA6LKjdGBQ1w9iEpfVw, as seen in his address generator page.


Confusion over Monero Mining Software I have read all the Monero official website and many other sites(pools ...) and it seem there is no clear indication on what is the best software to do CPU or GPU Mining with Windows 10.

On the CPU side there is :

Monerod (CPU mining only as per my finding)
CPUMiner(Lucas and Wolf)
Claymore CPU Miner
YAM Miner
XMR-Stack-CPU (new kid on the block)

On the GPU side:

GPU (AMD):  Claymore GPU Miner
GPU (Nvidia): CCMiner (tsiv)

On both side what is the best option in term of performance (h/s)?

Is there other option that I should consider?

On the security aspect, I notice there is no signature for most of them, are they all safe?

Thank you!

The Monero Mining Wiki for Windows that I wrote can clear up a few initial misconceptions.

All of the ones you listed have been around for a long time. If you are running them intentionally, then they are safe. Often, virus scanners flag mining software as malicious since attackers often install this software on other users' computers.

CPU

The easiest mining tool for Windows CPU in my opinion is the Monero Spelunker. This simply adds a GUI to Wolf's CPU miner. Also pretty simple to use is XMR-STAK-CPU, which is newer and should have a higher hashrate. You can try rates for the other ones, but these two are the two prominent CPU miners.

AMD

Claymore seems to give the best performance on my RX 470s. Claymore's latest release added SSL support and lowered the developer fee. Wolf's is another option, which is open-source.

NVIDIA

NVIDIA mining support is quite limited. I believe ccminer is all you have.


Does using a remote node provide risks to anonymity? If I were to use a remote node for monero GUI (latest version), would I risk privacy issues? If so, what can be done to minimize these issues? Thanks in advance.

Yes, this is not recommended.

There are several ways using a remote node may impact privacy. They can be separated in two categories: passive attacks and active attacks.

Passive attacks involve just recording what's happening. This can be done by the node owner (if it's not you) or routers on the way, since the daemon connection is unencrypted. While secret keys are never transmitted betwen wallet and daemon, you can still glean some information, such as when you are sending a new transaction, or the last time you had synced your wallet.

Active attacks involve tampering with the connection. By sending invalid data, the daemon can in some cases make the wallet error out sending a transaction, and if the user decides to retry, new ring siblings will be requested, allowing the daemon to deduce the true output.

There are variations of these, and this is one of the reasons why you should run your own node, similarly to why you shouldn't connect to Tor through a remote Tor server, etc. Besides, running your own node adds to the network's decentralization.


How CryptoNote derived coins get balance from secret keys? How can I get balance instantly when I have blockchain data synchronized and with the spend and view secret keys on hand.

In CryptoNote you can't just get a balance for an address since CryptoNote uses one time addresses or stealth addresses.

Because of that, in order to get your balance you have to scan all transactions on the blockchain. You need to check each output if you can access it with your private view key.

Because of that, there is no easy way to get the whole balance without such scanning.

What you have to do is basically create a view wallet with your private view key and let it scan the whole blockchain for you. After the scan is done you can access the balance via a JSON RPC.
In order to speed up the process you can also give the wallet a starting height. For example, the scanning should start at the block where you sent your first coins to the address.

This is how it works for Monero and it should be true for some other CryptoNote coins.

What the simplewallet does (wallet2.cpp) is it gets all the blocks and pruned transaction data and starts generating a key derivation for each transaction and checks whether the transaction belongs to it.

If you want to go even more in to detail, I would read the follwing blog post:
https://steemit.com/monero/@luigi1111/understanding-monero-cryptography-privacy-part-2-stealth-addresses


How to convert Ledger seed to Monero compatible seed on Windows? My Ledger HW is broken and I can’t access my funds. I have my Ledger seed but I can’t enter it in Monero wallets. How do I convert the seed?

Note: Entering your seed on your computer can potentially expose it to malware if your computer is compromised.

First step is to download Git for Windows.

Go to gitforwindows.org and use the Download button.
Install it with default settings.

Next step is to install Python 3.

Go to python.org and download the latest Python 3 Windows x86-64 executable installer. I used the following link: https://www.python.org/ftp/python/3.8.1/python-3.8.1-amd64.exe
Open the installer, select Add Python 3.8 to PATH and then install with default settings.

Afterwards open the git-bash shell the following way.

Open the following path: C:\Program Files\Git in Explorer.
Start git-bash.exe as administrator, maximize the window.

Then enter the following commands, line by line.

pip3 install pycryptodomex ECPy ledgerblue pyreadline
git clone https://github.com/LedgerHQ/ledger-app-monero
cd ledger-app-monero/tools/python/
export PYTHONIOENCODING=utf-8
PYTHONPATH=`pwd`/src  python -m ledger.monero.seedconv.py offline

Now the program should have started successfully. To confirm the seed language, enter 2 for English. Then enter yes and it will ask you for your 24 word Ledger seed. Your Monero compatible seed should finally show up now.


GUI Beta 2 error on login: std::bad_alloc - I got the GUI BETA 1 and get this error message while trying to login on my wallet. How do I upgrade to BETA 2 safely and what shall I backup? I have my seedwords but I figure out that I could switch to another PC but my other PC has non-ascii letters in its path file so the wallet refuse to generate keys buts thats another problem.

Locate your wallet files, there should be 3 files with the name of your wallet:

YourWallet.address.txt (This is not important, just the address written inside)
YourWallet.keys (This is the main thing to back-up, it holds your keys encrypted with your password - if you lose it you will need to restore from your seed words to make a new file; if you lose both this file and the seed your funds can't be recovered)
YourWallet (This holds wallet refresh data, and your TX history. If you need the history, keep a backup. You're probably getting the error because of compatibility of this file between GUI versions)

Rename the last one to YourWallet.backup and try to start the GUI again. You will have to wait for it to refresh the wallet, shouldn't take too long since you're already synced with the network.


MoneroWorld Remote Nodes Not Working I am mining Monero using Remote Nodes. To mine, I use the following command:

sudo ./monero-wallet-cli --daemon-address eu.node.moneroworld.com:18089 --trusted-daemon

The nodes are from moneroworld.com/#nodes

e.g.

geo.node.moneroworld.com at port 18089 - AUTOMATIC
eu.node.moneroworld.com at port 18089 - Europe

When I run the "start_mining" command I get the following error:

Error: wallet failed to connect to daemon: eu.node.moneroworld.com:18089. Daemon either is not started or wrong port was passed. Please make sure daemon is running or change the daemon address using the 'set_daemon' command.

I have tried other addresses and still the same issue:

set_daemon geo.node.moneroworld.com:18089
start_mining

Result:

Error: wallet failed to connect to daemon: geo.node.moneroworld.com:18089. Daemon either is not started or wrong port was passed. Please make sure daemon is running or change the daemon address using the 'set_daemon' command.
[wallet 42X2yL]:

Is MoneroWorld dead? If so, is there alternative nodes that can be recommended?
Alternative, if it is not dead:
Could this be a firewall/ports issue? If so, how do I explicitly open the standard ports required for Monero on Ubunto?

MoneroWorld is not dead.
Unlikely a ports issue, it's all outbound. You are connecting to it then trying to start_mining and herein lies your issue - you are trying to mine on a remote public node. Please see this Q&A.


How can I change the proxy settings of the official GUI / CLI? How can I change the proxy settings of the official GUI / CLI ?

This is down to whatever proxy program you're using.

If you want to proxy through Tor, then use torsocks as described in the README.md file, eg:

  DNS_PUBLIC=tcp torsocks ./monerod --p2p-bind-ip 127.0.0.1 --no-igd --rpc-bind-ip 127.0.0.1 --data-dir /home/amnesia/Persistent/your/directory/to/the/blockchain

If you want to proxy using another method, such as proxychains, look at the proxychains docs (http://proxychains.sourceforge.net/howto.html).

Note that you will usually want to run the daemon through a proxy, then use th wallet to connect locally to your dameon, so without a proxy.


Securely funding a Monero physical coin Assume that someone who ordered a physical coin from smoothie either:

Lost the funding instructions
Received the instructions but wants to verify them in case they were replaced in a MITM attack before delivery

What are the instructions to securely fund a physical coin?

You cannot “fund a physical coin” with Monero, because Monero exists only as data on a distributed ledger. These so-called “physical coins” are just arbitrary objects on which seed-phrases can be stuck or engraved (and in this case apparently hidden behind a sticker).

A physical coin could function as a back-up of your seed phrase, but it has no real advantages over a seed-phrase written on any other object. A sticker might not even be waterproof, let alone fireproof. An engraved seed-phrase would be tougher, but brass has to be protected from corrosion, and it melts at 900–940°C. As a transferable bearer-bond, it's useless, because the bearer has no way of knowing whether or not a previous bearer wrote down the seed-phrase before handing over the coin.

If you really want to use one of these things to store your seed phrase, and you have nimble fingers, then perhaps you could engrave it. Or you could convert your seed-phrase into a tiny QR-code, print it on sticky paper and stick it to the coin. Your question specified “securely”, which would mean using a non-networked computer to generate the seed-phrase (& convert it to QR code) and a directly connected printer (a low-tech printer so your funds can't be compromised by printer malware). But why would you want to?


Simplewallet: How do I get the tx_id needed for check_tx_key and get_tx_key? I tried to use the transaction hash, but that seems to be something different than tx_id. For example with this:

get_tx_key <my-transaction-hash>

I got an error "no tx key found for this txid".

Transaction hash, transaction id, txhash, txid, are all terms for the same thing.

When you send a transaction, the tx key will be saved in your wallet cache (assuming you have this enabled, this is the default for most wallets, but for a short time after this feature was coded, it was not the default. Use set store-tx-info 1 to enable, in case it's off).

If you remove your wallet cache, this will be removed. If you need to remove your wallet cache, and you think you may need the tx keys, you can write them down or save them in a text file). Unfortunately, the wallet cache sometimes becomes corrupt, and it will be made into an LMDB database in the near future to avoid this.


Bandwidth option in kovri From kovri command line help, bandwith default parameter is the character "L"

  -b [ --bandwidth ] arg (=L)

What does it represent and what are the possible values ?

This setting is adopted from the original i2pd and the documentation tells:

  Bandwidth limit: integer in KBps or letters: L (32), O (256), P (2048), X (>9000)


Number of possible Monero wallets and seeds How many possible unique Monero wallets and seeds exist?

If the number of possible seeds is greater than the number of possible wallets, does that mean that more than one seed could control the spend key for the same wallet?

How does the above answer compare to Bitcoin

How many possible unique Monero wallets and seeds exist?

To understand the number of possibilities, we must first look into how are monero wallets and seed mnemonics created. I think this pretty much covers everything there is to know about it.

To answer your question, number of possible wallets is:

Default wallet generation method

The private spendkey defines the wallet since private viewkey is generated deterministically from spendkey. Number of possible wallets is then equal to number of possible spendkeys, which is:

l = 2^252 + 27742317777372353535851937790883648493.

The private spend key is just a number between 0 and l-1. The public key is obtained by multiplying the elliptic curve basepoint G with that number. An interesting property is that multiplying with some number greater than l will result in the same public key as if you multiplied with some number from the above range, ie

B = b * G = (b+l) * G,

where B is the public spendkey, and b the private spendkey.

Once the private spend key is determined, it's encoded into human-friendly 25-word seed mnemonic.

That's why using numbers above l as private keys is pointless, but possible.

Non-deterministic wallet generation method

You can actually create a wallet by independently generating both the spendkey and viewkey. In that case, number of possible wallets is l^2.

  If the number of possible seeds is greater than the number of possible wallets, does that mean that more than one seed could control the spend key for the same wallet?

Seed mnemonic

Seed mnemonic uses a dictionary of 1626 words. To be able to represent any private spendkey, we need enough words so that the resulting number of combinations is bigger than the number of possible spendkeys. This is achieved with 24 words, and the number of possible combinations is 1626^24 which is bigger than l. If a bigger number is represented by the words, that just means you'll "wrap around" as above and it will decode to some private spendkey in the range between 0 to l-1.

That means that there are some wallet combinations which can be represented by exactly 2 seed mnemonic combinations. The wallet software will give you only the "lower" mnemonic.

  How does the above answer compare to Bitcoin

It's relevant to highlight the fundamental difference in the way the addresses work.

With Monero, your address can be thought of as a recipe. The recipient takes the recipe, adds his own secret ingredient ("sender's random data" AKA TX private key) and creates an one-time public key (AKA output) which will actually hold the funds and be recorded to the blockchain. It's one-directional, so nobody can work out which recipe was used since the special ingredient is randomness. The number of possible one-time keys is also equal to l so any individual output is as secure as the wallet itself. This method is referred to as "stealth addresses".

With Bitcoin, the address itself is what's recorded to the blockchain and what holds the funds. Unlike Monero, the standard address is a hash of the address public key. When spending, the user must publish both the address public key and the signature produced using the private key. Verification is done by checking the signature against the address public key, and hashing the address public key and checking it against the input address.

Number of possible keys is exactly:

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141,

which is slightly less than 2^256. The above number has the same meaning as l in case of monero and is the order of the basepoint but for Bitcon's elliptic curve (secp256k1).

Address is obtained by hashing the public key first with SHA256 and then with RIPEMD160. Number of possible Bitcoin addresses is thus 2^160.

Interestingly, there can be multiple Bitcoin private keys which are able to spend from some Bitcoin address.

Also, if I understand the sources well, one public key can have 2 different valid addresses depending on whether the uncompressed or compressed one was hashed to obtain the address.

More details about Bitcoin addresses can be found here:

https://bitcoin.stackexchange.com/questions/1389/how-are-public-private-keys-in-an-address-created

https://bitcoin.stackexchange.com/questions/37373/how-can-i-test-if-a-bitcoin-address-is-compressed-or-not

https://bitcoin.stackexchange.com/questions/22/is-it-possible-to-brute-force-bitcoin-address-creation-in-order-to-steal-money


Getting "Error retrieving blocks, missed (#) transactions for block with hash" while running pruned node I've been running a pruned node on a very low-end server ( <2GB of RAM), and monerod keeps spitting out lines like that every couple blocks.

May be relevant, opening a wallet with the RPC throws this warning: WARNING: You may not have a high enough lockable memory limit, see ulimit -l as well.

From moneromoo on Github:

That's from nodes that don't understand pruning are asking you for data that you pruned. It's OK.
For the lockable memory issue, you can increase the amount of lockable memory using the command the message is giving you.


Is there a tutorial how to compile my own monero cli wallet software from source? Is there an easy to follow guide on how to compile my own monero cli wallet from source code? I want to modify some very minor settings that has to do with initial wallet creation settings specifically the ask-password variable. Currently the ask-password variable on wallet creation is set to 1 as default. I want it to be 0 when creating a wallet as it doesn't seem like this can be set globally from a .conf file.

Compiling from source instructions are in the project README.

Though changing the Monero source code just to deviate from a sensible default value, which can be easily changed as soon as the wallet has been created in any case, seems a pointless exercise to me.


sending XMR with MyMonero, to low fee, long time stuck A month ago I sent XMR using MyMonero to recipient (MM was my first wallet and default to making transaction). Unfortunately I used a too low of a fee. My transaction at this moment is still frozen :(. I have hash of the transaction (af97f53681598fa6fe517d23f26bd197e95b415f9863ce0ccb9984a22c739017) and nothing else. After that I imported wallet to GUI with keys from MyMonero. I haven't 25 seed, only 13. Option rescan_bc in monero-wallet-cli show status OUT of this transaction. Monero GUI show ID on the history. Source go to the limbo? Any chance to fix this situation?

That transaction was successfully sent on the 9th of December, more than a month ago. So the xmr is available to whoever owns the recipient address.


Why do the current mobile MyMonero builds use Cordova 6.5.0? After testing Apache Cordova 7.0.0 why did MyMonero devs decide to remain with 6.5.0?

Specifically what is the distinction between how the two versions handle plugins that made 7.0.0 more problematic for MyMonero?

As mentioned in the repo Read Me,

  Note about Cordova version Apache has recently released Cordova 7.0.0.
  It was tested, but because it now places plugins into package.json,
  npm cannot update, as a handful of those plugins do not have
  package.json files, and npm and yarn (based on current info) cannot
  install them as deps. So 6.5.0 is the Cordova version that MyMonero
  currently supports for mobile builds, and it can be selected for use
  with [sudo] npm install -g cordova@6.5.0.

The moment this changes, or if someone patches up the install process to make it so that all the plugins which don't have package.json files can still be installed with Cordova 7, we'll remove this warning.


Is there information available about the Levin protocol? Is there any information available about the Levin protocol?
It seems to be used for the peer to peer communication.

Things like:

The working of the protocol?
What are the benefits? Why was it chosen for Monero?
Is it used in any other product?

I did find the following information:

Some information about the history you can find here.
It is part of the so called 'epee' library.
The creator is a Russian programmer called Andrey N. Sabelnikov, who seems to be well known for creating a botnet.
The original code is located on Github.
It doesn't seem to be used anywhere else besides some cryptocurrencies with a similar background as Monero.
On the site of the Boolberry cryptocurrency you can find some design information.


Should we synchronize blockchain from scratch after every scheduled hard fork? Should we synchronize blockchain from scratch after every scheduled hardfork or just update the binaries and synchronizing blockchain from where it was synced with pre hardfork binaries?

I think generally just update the binaries and sync from where you left off. I believe the resync from scratch with the most recent binaries (v0.10) were due to significant changes to the database format, and resyncing was generally faster than converting the old one.


My monero is stuck in the blockchain Here is my hash: 7752063fb973b84030feca75b085ff7f38d1a6f9d857ac7df868b97d13d9048e

I need to retrieve my monero. How can I do this?  Thank you.

The transaction was confirmed in block 1,281,619.  The monero probably remained locked for the typical 10 blocks, which is approximately a 20 minute wait time.  Once the 10 blocks passed, your monero was unlocked and was able to be spent.

If you don't see your monero in your wallet, then the node you're syncing to may not be fully synced.


Monero Gui syncing... is this supposed to take this long? So i just bought some Monero and tried to put in the Monero wallet. The first blocks were kind of fast but now its taking a ridiculous amount of time.
The code below was ran for like 2m. I still have 70 blocks to run, this will take an absurd amount of time. Am i the only one who is facing this problem?

SYNCHRONIZATION started
    2018-01-03 13:24:30.645 [P2P6]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1154    [1;33m[94.140.116.213:18080 OUT]  Synced 1403220/1479070[0m
    2018-01-03 13:24:48.237 [P2P6]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1154    [1;33m[94.140.116.213:18080 OUT]  Synced 1403240/1479070[0m
    2018-01-03 13:25:10.017 [P2P6]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1154    [1;33m[94.140.116.213:18080 OUT]  Synced 1403260/1479070[0m
    2018-01-03 13:25:36.846 [P2P6]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1154    [1;33m[94.140.116.213:18080 OUT]  Synced 1403280/1479070[0m
    2018-01-03 13:26:00.985 [P2P6]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1154    [1;33m[94.140.116.213:18080 OUT]  Synced 1403300/1479070[0m
    2018-01-03 13:26:28.593 [P2P6]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1154    [1;33m[94.140.116.213:18080 OUT]  Synced 1403320/1479070[0m
    2018-01-03 13:26:48.702 [P2P6]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1154    [1;33m[94.140.116.213:18080 OUT]  Synced 1403340/1479070[0m
    2018-01-03 13:27:21.921 [P2P6]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1154    [1;33m[94.140.116.213:18080 OUT]  Synced 1403360/1479070[0m
    2018-01-03 13:27:52.981 [P2P6]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1154    [1;33m[94.140.116.213:18080 OUT]  Synced 1403380/1479070[0m
    2018-01-03 13:28:29.171 [P2P6]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1154    [1;33m[94.140.116.213:18080 OUT]  Synced 1403400/1479070[0m
    2018-01-03 13:28:59.711 [P2P6]  INFO    global  src/cryptonote_protocol/cryptonote_protocol_handler.inl:1154    [1;33m[94.140.116.213:18080 OUT]  Synced 1403420/1479070[0m

You aren't alone and it's one of the reasons (imo) that Monero isn't more largely adopted. Sync'ing the blockchain when spinning up a node takes a full day - which is simply untenable.


Why did I get an error -18 whilst attempting an RPC transfer? I recently tried to send a transaction on the local testnet running 'Beryllium Bullet' (v0.13.0.2-release) and got this error:

{"code": -18, "message": "Transaction would be too large.  try /transfer_split."}

JSON RPC call was:

08:49:57.379 [debug] Request URL: "http://127.0.0.1:49537/json_rpc""
Request HEADERS: [{"content-type", "application/json"}]
Request BODY: "{\"jsonrpc\":\"2.0\",\"method\":\"transfer\",\"params\":{\"destinations\":[{\"address\":\"A1GaAstQMq4Pb6DFpJXCuD67kzMgkcUwWgSxruWkxkGGexomEohbrG3b2Fv7yQWkE6UJoGPtvJhi5bHb1CxX7oXAQQvQLHt\",\"amount\":1080655990637146}],\"ring_size\":1}}""

Ring size 1 was set because otherwise I'm getting "not enough outputs" error.

Why did that happen, are there any ways to proactively prevent that in the future and what is the best way around that?

Given that you're attempting a transfer of over a 1080 XMR, you will likely be using a high number of outputs to fund the transaction internally, which is pushing up the transaction size. As the error message states, try transfer_split instead.

The ringsize parameter is redundant these days as it has to be 11 for the tx to be valid now. The code for the RPC method is adjusting the supplied ringsize, but in a funky way. I suggest just setting it to 11.

The documentation needs some love to keep it current.


Time from the block added to the pool to time it gets executed Is there a way to get the data for when each block has been added to the pool and to when it has been executed in monero?

Firstly, blocks don't get "added to the pool". A wallet instructs a daemon to broadcast a transaction which gets added to the transaction pool. A miner constructs a block template by bunching transactions that are in the transaction pool, then mining that block template. When a miner successfully mines a block, it is broadcast to the network, and if valid, get's added to each peers blockchain.

If you need an external notification when your node adds a block to your blockchain, you can use the parameter --block-notify when starting your node, which will instruct it to execute a program every time a block is added:

monerod --help
  ...
  --block-notify arg                    Run a program for each new block, '%s'
                                        will be replaced by the block hash
  ...

You can also call the daemon's RPC method get_last_block_header, which includes a timestamp field in the response. Note that this timestamp however is a miner created timestamp, not the time your node added the block to your local blockchain.


where does "my pending balance" stay until I receive my payment in mining pools? where does "my pending balance" stay until I receive my payment in mining pools? what is the procedure? where/how pool keeps the pending balance?

You can think of the pending balance as merely a number on a spreadsheet. First, some details:

Pools can choose different methods to allocate the reward amongst the miners.  The most common method of allocating miner rewards is to allocate it to miners only once a block is found and is mature (about 2 hours old).

Continuing that example, every time a block is found by the pool, the reward is recorded on the blockchain as an output owned by the mining pool's address.  The mining pool owns those funds until it decides to pay miners.

The mining pool software run by the pool is, of course, tracking how many shares are submitted by each miner.  It is therefore easy for the pool to calculate the number of shares submitted by each miner as a percentage of the total shares contributed that resulted in the block being found.

Once the two hours is up and the block is mature, the mining pool will retain its stated percentage of the block reward as its fee, and then will credit all the miners' pending balance with their respective percentage of the remainder.  In this sense, the pending balance is merely a number on a spreadsheet.

To reiterate, the pool owns the Monero until it has been disbursed to miners.  Miners trust that the pool operator is honest, that the pool operator is allocating shares correctly/fairly, and that the pool operator will make payouts according to the stated schedule or threshold.  Miners, therefore, appreciate it when pool operators use open source pool software.

So, over time, miners' accounts on the "spreadsheet" are credited with their respective portion of the mining rewards the pool earned.  Once the pool's payout threshold is reached for each miner, the pool will issue payments to that miner.  Generally, a miner can expect a small delay after they have reached their threshold, since it is more economical for the pool operator to wait and send payouts to multiple miners at once, rather than one at a time.


Can cpuminer-multi be used for solo CPU mining? It seems that Wolf's cpuminer-multi only allows to connect to a mining pool and can't be used for solo mining.

I've tried to use -o daemon+tcp://: to have it connect to monerod but it doesn't work.

Can cpuminer-multi be configured to mine solo?

Wolf0's CPU miner does not contain any code to support the fairly new daemon+tcp scheme, so cannot be used to solo mine.

However, you could setup your own private pool, and connect to it.If you disable payouts, this is as close to solo mining as you can get without being standard solo mining.


Setup remote node on i2p? As I understand, the next Monero release will include an option to connect to the network over i2p.

If I have a remote node right now running with ./monerod --rpc-bind-ip <external ip> --restricted-rpc --confirm-external-bind, what do I need to do to make the node run over the i2p network instead?

As I understand, the next Monero release will include an option to connect to the network over I2P.

Actually the current release has experimental options to use over i2p/tor. Work is underway on the GUI to add support there too, which should greatly simplify the usage (e.g. just ticking a checkbox to send transactions over i2p/tor).

  ...what do I need to do to make the node run over the I2P network instead?

Firstly, I'd encourage reading of the documentation so you are familiar with how it works.

Then the steps required essentially boil down to the following:

Run an i2p router, such as the extremely light-weight i2p-zero.
Configure a SOCKS tunnel at the router to forward outbound traffic over i2p.
Configure a server tunnel at the router to accept incoming connections from the i2p network and forward them to a local service (which will be your monerod node below).
Run monerod with the appropriate flags:

You need to use --proxy i2p,127.0.0.1:9000 (replacing 9000 with whatever SOCKS port you configured for your i2p SOCKS tunnel in step 2 above). This is for your nodes outbound connections to i2p destinations.
If you know any other i2p Monero peers, add them with --add-peer address.b32.i2p:28083 (replacing the address and port with their long hex i2p address and port). If you don't add any i2p peers, you cannot relay transactions over i2p or discover other Monero peers on i2p.
You need to use --anonymous-inbound address.b32.i2p:28083,127.0.0.1:28083 (replacing the address and port with the server tunnel address and port created in step 3 above). This is for your inbound connections from i2p.

You should now have an up-and-running Monero node that can handle both inbound and outbound i2p traffic. It will sync blocks over clearnet and relay transactions over i2p.


How do I move the Monero blockchain files safely? I am using the latest version of the monero GUI on Windows.
The problem is that I do not have enough space on my main drive to download the full blockchain for synchronisation of my wallet.

I want to move the blockchain files from the lmdb folder on my C drive to my d drive, and make sure they continue to be updated on the D drive

How do I do this so I can synchronise my wallet fully?

Thanks for your help.

First of all, make sure your daemon (monerod) is stopped. Then navigate to

C:\ProgramData\bitmonero (ProgramData is a hidden folder)

and copy the contents to a folder on your D drive, e.g. D:\monero\blockchain. After that you can start your GUI wallet but be carefull not to start the daemon automatically. Say no and navigate to the advanced options for the daemon and specify custom startup settings (command line arguments). Put this there:

--data-dir D:\monero\blockchain (or the directory that you used)

After this start the daemon manually (there is a button) in the same window. Now check that the files in D:\monero\blockchain are updated (timestamp, growing filesizes) so you know it worked. After this you can delete the data in C:\ProgramData\bitmonero to free up space.


How does having a negative number in a Pedersen commitment, create money out of thin air? Given two inputs of value: 10, 11

And two outputs of value 31, -10

The Pedersen commitment would look like:

Let b + c - d - e = k

(10G + bH + 11G + cH) - (31G + dH + -10G + eH) = 0G +  kH

Without range proofs, this Pedersen commitment would look valid. How would a bad actor, then use this in another transaction to create money out of thin air?

What I thought was that he would then do:

Input = -10

Output = 10

But I am not so sure, it is this simple. Could I get some clarification on the amount that would be created out of thin air also, as I read somewhere that the amount created would be 11 in this case.

A good description of this is found in Greg Maxwell's paper on CT:

 (1 + 1) - (-5 + 7) == 0

This would be interpreted as "someone spends two bitcoins, gets a '-5'
bitcoin out that they discard out, and a 7 bitcoin output".

If we substitute your example values:

(10 + 11) - (31 + -10) == 0

The commitment is to zero and the -10 output is simply discarded (it's just one of the two outputs and can be ignored), so you are left with one output of 31. That is, a spend of 21 to get an output of 31 (10 created from thin air).

Hence why range proofs are needed - to prove that each committed value is within a range (positive).


Where can I find the transaction amount checking logic in the source code? I'm a newbie to Monero. My question is how Monero does the amount checking logic (the input amount should be larger than the output amount in a transaction) when a node receives a raw transaction.

I found there is some checking logic in wallet implementation wallet2::create_transactions_2.

THROW_WALLET_EXCEPTION_IF(needed_money + min_fee > balance_subtotal, error::not_enough_money, balance_subtotal, needed_money, 0);
THROW_WALLET_EXCEPTION_IF(needed_money + min_fee > unlocked_balance_subtotal, error::not_enough_unlocked_money, unlocked_balance_subtotal, needed_money, 0);

And tx_memory_pool::add_tx also has some checking logic when tx.version == 1

if (tx.version == 1)
  {
    uint64_t inputs_amount = 0;
    if(!get_inputs_money_amount(tx, inputs_amount))
    {
      tvc.m_verifivation_failed = true;
      return false;
    }

    uint64_t outputs_amount = get_outs_money_amount(tx);
    if(outputs_amount > inputs_amount)
    {
      LOG_PRINT_L1("transaction use more money than it has: use " << print_money(outputs_amount) << ", have " << print_money(inputs_amount));
      tvc.m_verifivation_failed = true;
      tvc.m_overspend = true;
      return false;
    }
    else if(outputs_amount == inputs_amount)
    {
      LOG_PRINT_L1("transaction fee is zero: outputs_amount == inputs_amount, rejecting.");
      tvc.m_verifivation_failed = true;
      tvc.m_fee_too_low = true;
      return false;
    }

    fee = inputs_amount - outputs_amount;
  }
  else
  {
    fee = tx.rct_signatures.txnFee;
  }

But I don't think we use version 1 in transaction right now.

Could somebody give me a hint? Or is it impossible to do this kind of check in the raw transaction?

You already found the place for v1 transactions.
For v2 (RingCT) transactions, since in/out amounts are masked, the check is done in src/ringct/rctSigs.cpp, in either verRctSemanticsSimple or verRct (depending on the signature type):

          //check pseudoOuts vs Outs..
          if (!equalKeys(sumPseudoOuts, sumOutpks)) {
            LOG_PRINT_L1("Sum check failed");
            return false;
          }

This compares the sum of (masked) inputs to the sum of (masked) outputs plus the masked fee (the fee is not masked in the actual transaction, so the verification code masks it at that time). The dozen lines above perform these sums.


Please help noob to start monero wallet recording deposit or withdrawal events I am currently using getMonero Wallet service to create a recorder of my account withdrawal and deposit history program. The language and the environment are not yet defined.
I would like to record the deposit to my wallet and I want to distinguish each payment by paymentID. My research on the web shows that we can use the "show_transfers" command to get a list of all past history. However, in such cases, it is difficult to call each time because there are also duplicate details of past deposit or withdrawal events. Is there a way to view or record only new deposits by date? If so, which API should I use and how can I get it in the same string as the string data type?

Q1 : how to get an event signal (like a Windows API event handler) on every deposit or withdrawal?

Q2 : how to get record on each event (deposit or withdrawal)?

To monitor a wallets activity you can make use of the monero-wallet-rpc program which exposes a JSON RPC interface. Once you have this running, you'll want to call the get_transfers method as documented here.

Currently there is no notification system so you will simply need to poll requests to this at a frequency that meets your requirements and check for changes since you last called the method.


Should I prune "From Scratch" or should I prune "From going forward", using the GUI version 0.17.1.9, and why? I've tried and tried to run my full node about 15 different times over 3 weeks now. It just goes too slow and never syncs. I can never find the answers I need to figure out my personal situation with why I can't get a full local node to work quicker. I did get it to sync like 1 time! I was so happy. That only lasted for about 10 minutes before it just crashed and started the entire syncing process over, why I don't know. I use win10, envy laptop 3 years old, have plenty of storage space and I could utilize an empty new 1tb external hard drive if I needed to but yet for some reason I cant get the full local node to work. I'm giving up, regretfully, and am now going to try the pruned node before I eventually probably end going remote node for rest of my life! haha.Sorry for my ignorance, its certainly not from a lack of effort, persistence, dedication and devotion!

Pruning is best done on the fly, as pruning an already synced blockchain is a very slow process - a lot slower than setting it to prune from the get go.
About the sync speed, using a spinning hard drive is a major source of slowdown. Monero just doesn't like slow hard drives, so if you have a SSD, it'd sync in hours rather than days. Once synced, the chain can be moved to a HDD where it'll keep up with the network.
As for the chain corrupting on an OS crash, it looks like a bug either in Monero or the OS/filesystem layer. Probably Monero, since there's been a number of such reports, but no known cause yet (and thus no fix).


How do I safely shutdown the daemon in ubuntu? I have started monerd detached and need to exit it safely. I have tried adding stop to the /proc/(pid of monderod)/fd/0 but monerod doesn't accept the input. Is it ok to kill the process? I want to restart monerod in screen so I can more easily attach/detach to send commands.

There is no problem in forcibly stopping monerod, the daemon is constantly writing the received blocks into the disk and LMDB is one of the most robust databases on the market, it doesn't corrupt easily unless there is a hardware problem, only thing that doesn't get saved are the IP bans but this will be fixed in a next release.
To make sure everything is saved type exit in the daemon window.


Simplewallet: Can I print the current values of the options that can be set by the "set" command? I did not see something like a "get" command, and for example "set auto-refresh" without an argument does not show the current status of auto-refresh.

Am I overlooking something?

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


Monero GUI 2 on tails os text not visible issue On running monero wallet on tails os the text is not visible.

To run Monero GUI wallet on tails use the 32 bit version.

Open the start-gui.sh file. This file is inside the folder where all the monero binaries are.

add this line before the ./monero-wallet-gui line.

export QT_QPA_FONTDIR=/usr/share/fonts/truetype/unifont/

This line will provide the path to the fonts folder. Now to run the gui use command:

bash start-gui.sh


How to create an integrated address with a payment id on Monero v12 GUI? I don't see the option to create a new address using payment ids anymore on v12. Was this removed from the gui because of sub-addresses?

The payment ids and integrated addresses are supposed to be phased out and replaced by subaddresses, which is why the integrated address generation was removed from monero-wallet-gui 0.12 and replaced by the subaddress generation.

For example, if you have some customers who have to pay you, instead of giving your main address and a payment id or an integrated address to each of them, you give a subaddress to each of them.