What is the command code for Wolfram Warptangent, Point Release 0.10.2.1? I am brand new to Linux and just got the older version up and running! Now I have to change but am unsure as to what command code to use.  I am sure that is similar to what I previously used;~/bin $ wget https://downloads.getmonero.org/linux64.

But... I don't think this will get me the update?

In your browser, go to getmonero.org and look for the announcement of the new release. Click on that announcement. Look for the "Linux, 64-bit" download link. Right-click on that link and copy the URL, which is the compressed .bz2 file. Then, in a terminal, you can paste the link by right-clicking in the terminal and selecting "Paste." Type wget first and then paste:

wget https://downloads.getmonero.org/cli/monero-linux-x64-v0.10.2.1.tar.bz2

This will download the compressed files which are already in their own directory. Before extracting it, it's a good idea to verify the sha256 of the .bz2 file to ensure it wasn't tampered with. Do this with:

sha256sum monero-linux-x64-v0.10.2.1.tar.bz2

Check the output with the sha256 listed on the announcement page. Now, you can extract the directory which contains the point release binaries with:

tar -xf monero-linux-x64-v0.10.2.1.tar.bz2

cd into the new directory and start the daemon with:

./monerod

This will download and sync the blockchain, which is stored in /home/yourusername/.bitmonero/lmdb/data.mdb

After the blockchain has downloaded, copy your existing wallet to the new directory, or you can create a new wallet. Open another terminal in the new directory, and if using an older wallet:

./monero-wallet-cli --wallet-file [walletFileName]

Don't include the brackets when you enter your wallet file name. Or, if you want to create a new wallet:

./monero-wallet-cli

From there, it will walk you through the creation of your wallet, which takes at most 1-2 minutes. Enjoy!


Is there a bitmonero.conf file where I can hard code a --daemon-address for use when running monero-wallet-cli? Is there a bitmonero.conf file where I can hard code a --daemon-address so I don't have to manually type it in every time I run the monero-wallet-cli?

There is no default wallet config file IIRC, so just put all your wallet specific settings in a file like ~/.bitmonero/wallet.conf and then start your wallet like:

monero-wallet-cli --config-file ~/.bitmonero/wallet.conf

You can put any of the startup paremeters as listed from monero-wallet-cli --help. Just omit the leading -- and place one option per line. So for your daemon-address it would look like:

daemon-address=node.moneroworld.com:18089


wallet cli v0.12 : " Error : Failed to import Key images" I've already created some view only wallet using --generate-from-view-key and importing key images, but today i've an issue doing this last step with Wallet cli v0.12.

I've the following message when i try to import key images in my view only wallet :

Error : Failed to import Key images

Can someone please help me?

thank you Regards,

Ok, finally i've got it, I did not remember to export output first from my cold wallet (synchronized with the network)

For those who want to create a watch-only wallet, you can find the good tutorial here ==>

https://monero.stackexchange.com/a/2916


What is a sub-address? https://github.com/monero-project/monero/pull/1753 is a pull request for disposable addresses and sub-addresses but what is a sub-address? Kind of like bip32 wallets in bitcoin?

I will quote some comments from kenshi84 (who submitted the pull request).

Subaddresses are just like the standard address that you can use for receiving funds repeatedly. For example, you can use subaddress of index=1 for receiving your salary and index=2 for raising funds for your secret project, and no one can find the link between them.

The number of subaddresses that you can generate for your wallet is limited due to storage requirement (currently the limit is 10000 addresses and they are precomputed during wallet generation).

The number of the precomputed subaddresses is set to 10000 by default, and can be changed via set command.


What is the difference between RCTTypeBulletproof and RCTTypeBulletProof2? There seems to be two types of bulletproof transactions in monero, was there maybe a bug in the first one?

RCTTypeBulletproof2 adds some additional data (beyond the RCTTypeBulletproof type):

It changes the field nbp to a varint field, which has the count of Bulletproof signatures [source]
It adds the encrypted amount to each output [source]


Compare solutions for instant payments. Lightning Network vs Daughter-chain Lightning Network in Bitcoin ecosystem can bring instant payments and better scalability.

I've read that daughter-chain is one possible solution to bring instant payments into monero, but also that lightning-network would be also possible to implement in monero, once multisig transactions are implemented.

What are differences between lightning network and daughter-chains in regard to instant payments? What pros and cons do they have?

It's probably better to understand first that daughter-chains are quite different to Lightning Network. A daughter-chain is a side-chain pegged to the main-chain and what's been discussed is having the implementation in the core wallets. This would make it very useful from a user perspective, in my opinion, alongside the more generic use-cases daughter-chains can offer beyond just faster/micro transactions.

  ...but also that lightning-network would be also possible to implement in monero, once multisig transactions are implemented.

This is incorrect. Multisig (which is now in the code since the v0.12 release) is definitely not all that would be needed to implement Lightning on Monero. There would need to be protocol changes to do things like OP_CheckSequenceVerify.


Can a new participant be added onto a multisisg 2/3 scheme? Once a multisig wallet is created with a specific scheme, can a new participant be added, or does a new multisig wallet need to be made?
The same question for if a participant can be removed?

No. Once the wallet has been finalized, you cannot change the participants. Should you need to add a new participant, you would need to create a new wallet with the old and new participants then transfer funds from the old multisig wallet to the new one.


What is the reason for using the smoothly decreasing block reward? What is the reason for using the smoothly decreasing block reward instead of a periodic "halving" like Bitcoin?

What impact does a smoothly decreasing reward have other than avoiding sudden dramatic changes to the Monero earned by miners?

One of the pros for a smooth curve is to avoid the arbitrary sudden changes.

A second, more subtle, reason is to allow a block size penalty. In most Cryptonote coins, including Monero, it is possible for a miner to create blocks up to the current block size limit (that block size limit is variable, based on the recent history). However, if the block size is between M and 2M, with M being the median of the last 100 block sizes, the block reward will be less than the full reward. This incentivizes miners to not go over the median, which will cause the block size limit to shrink, unless they can make up the loss from transaction fees.

When such a penalty occurs, the recurrence function pushes back the unpaid block reward to the remainer of the emission, slightly increase every single block reward thereafter till the minimum emission (0.3 monero a minute) is hit. This would be difficult to do with a hard segmented block reward.


Is it ok to use same wallet on multiple devices Would it be ok to use the same offline wallet, i.e generated from same mnemonic seed, on multiple devices?

Yes, this is perfectly fine. The only thing to note is that certain information is stored in your local wallet file that will only be available to the device which has access to that wallet file.

In particular, your address book, the "tx keys" which allow you to prove payment, records of the Monero wallet addresses you've sent payment to and the notes you may have written as descriptions of each transaction you've made. These will only be available to the device with the specific wallet file from which those address book entries were created or those transactions were sent. For this reason some people will want to back up their wallet file on each device.

The most important thing is that you will always be able to see your entire balance and have full access to all of your funds from any device, even if you lose all wallet files and have to restore your wallet from seed.


Difference between disposable address, integrated address and subaddress? I've been searching the web for a while, but I'm still not quite clear what roles do they play.

Some of my questions are:

Has disposable address been removed from the wallet, since I can't find how to generate one in monero-wallet-cli's help message? (wallet version Helium Hydra v0.11.0.0).
Since integrated address combines payment id and standard address in an encrypted way, why do we still need subaddress?

I would be grateful if someone could clear up my confusion.

English is not my first language, please edit for clarity, then remove this comment.

Has disposable address been removed from the wallet, since I can't find how to generate one in monero-wallet-cli's help message? (wallet version Helium Hydra v0.11.0.0).

Disposable address was never added to the official Monero wallet. It was originally proposed in PR-1345 which inspired an improved version called subaddress in PR-1753. Disposable address was ultimately dropped in the final version PR-2056 due to the severe limitation that the address reuse will cause privacy leak.

  Since integrated address combines payment id and standard address in an encrypted way, why do we still need subaddress?

The payment ID embedded inside the integrated address is NOT encrypted. The payment ID gets encrypted when the sender constructs the transaction and the transaction is recorded on the blockchain, which can be decrypted only by the receiver.

The purpose of subaddress was to hide the fact from the sender (or anyone other than the receiver, for that matter) that multiple seemingly unrelated addresses actually belong to the same receiver. The only traditional way to achieve this goal was to simply generate multiple wallets (i.e. multiple seeds), which was not only tedious but also highly inefficient.


Cheapest motherboard and RAM for AMD Ryzen 3-gen CPU? I brought two Ryzen 9 3900X for mining Monera and I don't have much budget for the Motherboard so I'm looking for cheapest but compatible motherboard for Ryzen 9 3900X? I have same query's as above for the RAM also. So please help me out from this problem.

There are a multitude of places to acquire a motherboard. Any AM4 motherboard is "compatible" so search the internet for AM4 socket motherboards and purchase one within your budget.


How to speed up balance scanning of addresses? Scanning for an updated balance takes a very long time. I was thinking of getting a high powered cpu like a 32 core AMD threadripper to speed things up while running a remote node with monejuro on android.

Does CPU performance affect scanning time substantially?
When using the android monejuro android app, does the scanning happen on the phone or on the remote server?

Yes, CPU performance does affect scanning time, but so too does Disk I/O speed, and having a sufficient amount of RAM. By the sounds of it you want to set up your own remote node to connect to from your phone?

And yes, my understanding is that when you connect to a remote node, the scanning happens server side, so this should work in theory.

My question to you is, why wouldn't you just use an existing remote node? Unless you are very concerned about your IP address being logged by a remote node operator, using a remote daemon does not compromise the security of your funds. I am unsure whether remote nodes can see your transaction history or not though. Could someone else clarify that?


Mine to Exchange implementation Some pools support payouts to directly go to an exchange by appending a paymentId to the miner's username (which is the wallet address):

ADDRESS.PAYMENT_ID.WORKER

I'm wondering how this is implemented in a mining pool. Do you just invoke the transfer or transfer_split RPC and fill the optional paymentId field with the value of PAYMENT_ID? If this is true wouldn't this make it necessary to payout miners with paymentIds in isolation instead of issuing batch transfers?

This syntax is implemented in a mining pool's code. The transfer or transfer_split RPCs would not parse that kind of address.

A monero transaction can have one payment ID (this is a bit more complicated as this is not a consensus rule, merely a semantics agreement wallet side), so if you need to use N payment IDs, you will have to have at least N transactions. You can include destinations with no particular payment IDs along with one with a required payment ID, since having a payment ID where none is required does not mess things up.


How to check Monero balance via address and view key? I have 3 accounts, without seed phrase, only address, view key and spend key. How can I check my balance?
Maybe I can integrate the accounts with the wallet RPC? I think it`s possible, because xmrwallet and MyMonero work with only this data. But how?

You can restore a wallet (e.g. create a new one) with your existing address and keys. See the guide: https://www.getmonero.org/resources/user-guides/restore_from_keys.html
Once you've restored your wallet you'll be able to scan the blockchain to check your balance.
If you really want to do this via the wallet RPC, see: generate_from_keys.


Different view key and spend key after importing private key? I created a wallet and got a spend key and view key. Then i imported that wallet into Monerujo and there i got a different view key and a different spend key.

I guess that's correct? It's kind of disturbing that there is not only one view / spend key.

For deterministic wallets, you might want to use addresstests JavaScript-based code to examine a low valued Monero wallet.

Also examine results of the XMR C++ package script commands:

% echo "wipeout unnoticed origin timber corrode diet vats fences budget rotate iguana hive koala tuition shackles ticket fossil edited long beer shuffled lukewarm cogs atom hive" | ./inverse_mnemonics | ./xmr

Seed                 : b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
Private Spend Key    : c3b6b5a322e23c37ec9ac7edadd379d6c384efe37a5380ee9088f7ace2efcd09
Private View Key     : c8bc08b2d1ddb3056c43326f3576f7b20e3f626bb00a8ef3b4975dceeab85301
Public Spend Key     : d4ccd3a5f5af9ae368ef20ddc33a7c6422945dc2d1cb61c10c201752ece97bcd
Public View Key      : 90311e7f42443ad0579229154164fbaf882e0b9b0ae3caa728fb9ba6010899e2
Monero Address       : 49gq7ur2BzHf3ALDLNBJ4jHkSGcUT92AtZHoUS6ykkBLbPDpWV2VJrDbrBPV5G5kpzWMt2iXUwYNDUxfQqe4McMvSc79f9W
Electrum Seed Words  : swiftly potato fugitive upstairs jailed people plywood moon koala reunion repent muffin knuckle tugs sewage ticket fossil edited long beer shuffled both gills hexagon beer

% ./sc_reduce32 b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

c3b6b5a322e23c37ec9ac7edadd379d6c384efe37a5380ee9088f7ace2efcd09

% echo b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 | ./bytes_to_words

wipeout unnoticed origin timber corrode diet vats fences budget rotate iguana hive koala tuition shackles ticket fossil edited long beer shuffled lukewarm cogs atom hive

% echo c3b6b5a322e23c37ec9ac7edadd379d6c384efe37a5380ee9088f7ace2efcd09 | ./bytes_to_words

swiftly potato fugitive upstairs jailed people plywood moon koala reunion repent muffin knuckle tugs sewage ticket fossil edited long beer shuffled both gills hexagon beer

Notice with sc_reduce32 normalization how two different seeds (represented as hexadecimal numbers or Electrum seed words) will result in the same set of spend keys, view keys, and the same address.


Error trying to compile Monero on Fedora 25 - makefile:62: recipe for target 'release-all' failed When trying to compile the latest Monero on Fedora 25, I'm getting this error. When I run make, this is all the output below. I double-checked and I have all the dependencies...cmake is installed.

mkdir -p build/release
cd build/release && cmake -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=release ../.. && make
/bin/sh: cmake: command not found
Makefile:62: recipe for target 'release-all' failed
make: *** [release-all] Error 127

You are missing cmake, one of the prerequisites for building Monero. cmake is a build tool, which can be installed on Fedora this way:

sudo dnf install cmake

Once cmake is installed, try make again.

Since you say cmake is installed, then it is either manually installed somewhere not in your PATH, or some of it is corrupted, or it is not actually installed. If you think it's installed, install it again. Or remove it, then install again. To check if cmake is installed:

which cmake

It might be that a non default version of cmake might be installed, then it might be called something like cmake-x.y. Try typing just cmake then TAB twice to attempt to autocomplete to a command in your PATH.


Help! Trouble syncing daemon on mac wallet I just downloaded the wallet for my mac, but the Daemon isn't syncing. If it makes a difference I'm on Yosemite, 10.10.5

Here is the error message I get:

2017-08-21 19:06:23.664     INFO    global  contrib/epee/src/mlog.cpp:145   New log categories: *:WARNING,net:FATAL,net.p2p:FATAL,net.cn:FATAL,global:INFO,verify:FATAL,stacktrace:INFO
Height: 328324/1381579 (23.8%) on mainnet, not mining, net hash 13.64 MH/s, v1, up to date, 9(out)+0(in) connections, uptime 0d 0h 47m 33s

Any ideas what I can do?? Thanks in advance!

Try starting the daemon with ./monerod --block-sync-size 10. Those messages are normal, but you should receive some updates on the progress every now and then.


What happens to a transaction inside an orphan block Cold anyone help me to understand what happens to the transactions inside an orphan block. Will all that transaction be lost?

An orphan block means that a block was found but in the end isn't relevant (will not be part) on the main blockchain, because another valid block was found and accepted. This is possible since there is not only one possible solution.

But this situation doesn't influence any transaction since you are searching for a block that represents a set of transactions. As explained previously, orphan blocks are not integrated in the (main) blockchain because another valid block was previously found. So that means that the transactions are already part (or "inside") of the previously found block.


Is monerujo wallet legit? I recently worked with the Monerujo android app and noticed its strange behavior.

Creates the receive address after connecting to the Internet. This is while the receive address can be generated offline. (It seems that the app developer intentionally wants the user to connect to the Internet)
Synchronization time is very high, it syncs approximately more than two and a half million! blocks with high data usage!. Very very slow!.
Initially there is no node by default. And after entering node, again, the app intentionally wants the user to connect to the Internet.

Is monerujo wallet legit?


What is the loki wallet cli command to join a staking pool service node? Currently the docs only show how to do join a loki staking pool via the gui: https://docs.loki.network/ServiceNodes/GUIStakingGuide/

But how does one join a staking pool via the command line loki wallet?

it is actually described here: https://docs.loki.network/ServiceNodes/SNFullGuide/#622-pool-contributor

stake <Service Node Pubkey> <contribution amount>


Monero Ring Signature data Is it possible to get all the data of all the transaction with all its ring signatures using either the monero-wallet or API?

Yes. See get_transactions from the daemon RPC.


How do I restore a wallet with seed? I am running monero.win.x64.v0-10-0-0 on windows 10. I am trying to restore a wallet with a seed but do not know how to do it. When I open monero-wallet-cli after monerorod synchronizes it asks for a wallet name straight away then generates a new wallet. Can someone tell me how I go about restoring my wallet please?

You have to launch monero-wallet-cli from the terminal (on Linux and mac OS X) or from the command prompt (on Windows) with the --restore-deterministic-wallet flag. Thus:

For Mac and Linux:

./monero-wallet-cli --restore-deterministic-wallet

Make sure the terminal is opened in the same directory as monero-wallet-cli is located in.

On Windows make sure to launch it from the command line. Go to the folder monero-cli-wallet is located and make sure your cursor isn't located on any of the files. Subsequently do SHIFT + right click and it will give you an option to "Open command window here". Lastly, type the following command:

monero-wallet-cli.exe --restore-deterministic-wallet

For all operating systems it will first ask you for a new wallet name and password. Subsequently, you have to enter the 25 word mnemonic seed. Lastly, enter refresh into monero-wallet-cli.

P.S. Note that simplewallet was renamed to monero-wallet-cli in v0.10.0.


Starting a new pool. questions about payout levels We are still in a closed testing phase making sure our hardware and software are working properly. I would like to ask the community if setting payouts to a very low value like 0.01 is a smart thing to do or not. I know low payouts are good to a low powered miner but I am not sure if transaction fees will cause an issue here.

Not a good idea as answered here

https://www.reddit.com/r/MoneroMining/comments/7lrv3r/starting_a_new_pool_questions_arize/

the Tx fee would eat up 30% of miner profit...


Empty destination field in transfer history I have one transaction where i don't see the destination address.
All of other my transactions have it.

I use Monero in command line on my Linux.

When i type command "show_transfer " of this transaction i see:

[wallet 5ByqT1]: show_transfer
159scf6446d*****************************************************
Outgoing transaction found
txid: <159scf6446d*****************************************************>
Height: 14*****
Timestamp: 2017-****
Amount: ***
Payment ID: 0000000000000000
Change: ***
Fee: ***
Destinations:
Note:

(I use bullet list because of strange stackexchange text formatting)

Field "Destinations:" is empty.

Why does it happens?

Thank you for help.

What is happening is that you made that transfer from a different wallet file.  A wallet cache cannot be fully restored once it's gone.

Perhaps your address was originally a MyMonero wallet, and you restored it in the CLI, after sending a transaction from the wallet when it was still a MyMonero wallet.

Or maybe you created this wallet on Linux originally... and you sent some Monero... and then you were goofing around with installing more things on Linux, and your experimentation back-fired... and you ended having to install a fresh Linux system, and you then restored your Monero wallet, and it's been working well ever since.

In both cases, the wallet currently being used was unable to completely restore the cache to include the public addresses for prior (original wallet) outgoing transfers.  This is a consequence of stealth addresses.  There is simply no [reasonable] way to figure out which public address was used to create the one-time stealth address.

For technical details on the matter - the reason the math can't just be run backward to figure out the public address from the stealth address -  check out Elliptic Curve Cryptography and the Discrete Log Problem.


Is it possible to embed message for recipient in transaction? I would like to embed human-readable short text message to outgoing transaction such that only the receiver can read it. May be reasonably short. Something similar like in wire transfer when sending money form one bank to another you can add "note" that the recipient will see with the incoming transaction.

Can payment-id or tx-extra field be utilised for this? Is it possible with current wallet somehow?

I was thinking it might be possible to create such message by sending to integrated address, where I as sender will create the integrated address such that the payment ID is human readable and encrypted by recipient public key.

Or maybe add the message to tx-extra field and encrypt by recipient public key.

However both these would need to be added as features to wallet to be usable by non experts.

How hard would it be to add this functionality into GUI wallet?

Yes you can do it, but.

There are 2 options which you can use at the moment: plain-text 256-bit PID and encrypted 64-bit PID as part of the integrated address scheme. In principle, you could put anything in the tx-extra field but you'd need to customize the wallet software to do this.

Plain-text 256-bit PID - You could encode a string of 32 ASCII characters into this one. However, the receiving wallet would still display it in "hex", so your recipient would need to c&p the "hex" string into some converter to see the human-readable message. This is not private, because anyone could read the message attached to the TX.
Encrypted (stealth) 64-bit PID - You could encode a string of 8 ASCII characters into this one. Again, the receiving wallet would still display it in "hex". This is the more private version, because only the intended recipient would see the actual message. In this scheme the message is encrypted with the shared secret. This means that each TX has a different encryption key so it looks like the PID is randomized every time, while the recipient would see the same message.

Of course, some arbitrary length "note" functionality could be implemented into the wallet, using the TX-extra field. It would be better to encrypt it with shared secret, as it's done for stealth PIDs already.


Why is there a penalty on large block sizes? What problem is the block size penalty trying to solve? If it is just an anti-spam system, aren't there more efficient solutions?

Let's say there are 100 transactions waiting to be included in the blockchain, I can't see the drawback of including all of them in the next block. At the moment, it would take at least 20 blocks to include all of them and stay within the 60kB typical size. I understand that if all the transactions were included in a single block, the next blocks would likely be empty and therefore "waste" space. But 20 empty blocks is probably between 2 and 5 kB so it doesn't seem to be a big deal.

If you were a bank, then I agree with you - clearing all transactions as fast as possible makes the most sense for your customers. After all, you would control all the account information, have plenty of computing power, and would enjoy all the transaction fees that go with them.

We don't want centralization, we want as many people as possible to run a full node. That includes people with laptops, older desktops, and smaller cloud instances (like AWS). Increasing the blocksize makes this difficult to achieve since every full node needs to store, validate, and propagate transactions and blocks. Bigger blocks mean more CPU and bandwidth, so there would be a decline in full node numbers. Bad!

With unlimited block sizes I could also maliciously submit invalid large blocks that take a long time to reject.

This would also benefit miners with the largest hashrate. Suppose a large mining pool mines a block with a huge number of transactions. They know it's valid and immediately start mining the next block as they send out their solved block. Being a large block, it takes additional time to validate this block and propagate it to other miners. An additional 10-20 second delay is a great advantage in a 2-minute block cycle.

So to recap, blocksize must increase over time to accommodate increasing transaction volume. The amount of increase will be debatable at any given time given the available bandwidth, and processing power of the network (nodes and miners) as a whole.


Building an integrated address from a regular address and old-style payment ID I have a bot for automated sending of XMR. The bot can send XMR to integrated addresses only, without separate payment ID support.

One customer has given me both a regular address and an old-style long payment ID.  I have no feedback with this customer and I can't ask him to generate an integrated address or short payment ID.

I know an integrated address is made from a regular address and short payment ID, but the customer gave me a long payment ID. Is it possible to create an integrated address, which corresponds to a given pair? Otherwise, is it possible to convert the long payment ID to a short payment ID?

This really depends on how long the supplied payment ID is. Integrated addresses embed a short payment ID (64 bits - 8 bytes). So if the supplied payment ID is 8 bytes or less, yes, you can construct an integrated address using the supplied regular address and payment ID. Steps would be:

Base58 decode the regular address
Replace the first byte with byte 0x13
Remove the last 4 bytes
Append the payment ID (padded to 8 bytes if it's shorter)
Append the first 4 bytes of the Keccak-256 hash of the above
Base58 encode - this result is the integrated address.

You could alternatively just use the wallet RPC method make_integrated_address passing in the parameters standard_address and payment_id.

If the supplied payment ID is longer than 8 bytes, then no, you cannot create an integrated address using that payment ID and address.


How to show fees paid on show_transfers command in monero cli? Using the show_transfers command on monero-cli, it doesn't show the fee paid. It only shows the full amount. Also what do each column represent in show_transfers?

It does in fact show the fee.
For incoming transaction, the columns in the show_transfers output are:

<block_height> in <date> <amount_received> <txid> <payment_id>

For outgoing transaction:

<block_height> out <date> <total_amount_sent> <txid> <payment_id> <fee> <receiving_addr_1> <amount_1> <receiving_addr_2> <amount_2> ...

Another option is to get the txid of the transaction you need, using show_transfers, and then you can run show_transfer <txid> (that's a different command, no 's' at the end) to get more details about this specific transaction, which includes the fee.


Failing to build from source on OpenBSD I am trying to build Monero according to the official instructions for OpenBSD but I get the following error:
[…]
[ 42%] Building CXX object contrib/epee/src/CMakeFiles/epee.dir/mlocker.cpp.o
[ 42%] Building CXX object contrib/epee/src/CMakeFiles/epee.dir/buffer.cpp.o
[ 42%] Building CXX object contrib/epee/src/CMakeFiles/epee.dir/net_ssl.cpp.o
/home/kenny/Dokumente/monero/contrib/epee/src/net_ssl.cpp:579:19: error: use of undeclared identifier 'SSL_CTX_get0_privatekey'
  if (!(ssl_key = SSL_CTX_get0_privatekey(ctx)) || !(ssl_cert = SSL_CTX_get0_certificate(ctx)))
                  ^
1 error generated.
gmake[3]: *** [contrib/epee/src/CMakeFiles/epee.dir/build.make:303: contrib/epee/src/CMakeFiles/epee.dir/net_ssl.cpp.o] Fehler 1
gmake[3]: Verzeichnis „/home/kenny/Dokumente/monero/build/OpenBSD/master/release“ wird verlassen
gmake[2]: *** [CMakeFiles/Makefile2:1692: contrib/epee/src/CMakeFiles/epee.dir/all] Fehler 2
gmake[2]: Verzeichnis „/home/kenny/Dokumente/monero/build/OpenBSD/master/release“ wird verlassen
gmake[1]: *** [Makefile:160: all] Fehler 2
gmake[1]: Verzeichnis „/home/kenny/Dokumente/monero/build/OpenBSD/master/release“ wird verlassen
gmake: *** [Makefile:107: release-static] Fehler 2

I appreciate any help.

You need to install OpenSSL v1.1.x, a requirement it seems now in Monero v17.2.0.


What type of security audits has Monero received? What type of security audits has Monero received?

Since this question already addressed cryptographic review of the Monero protocol, I am primarily interested in Monero source code and implementation audits. If audits have taken place have results been published in a manner similar to this?

As well as the informal review of CryptoNote provided to the Monero team by SURAE NOETHER here, the source code is available on monero-project's github here.

These slides also review the protocol.
A possibly important note from those slides about the spec that isn't found anywhere else is given after slide 28, saying:

  apparently 2 bad random r in monero same user, make the attacker who has 2 view keys v also, able to compute a linear relation between their e
  keys used to spend...
  nc, 07/10/2016

Edit: I think I know the relation nicolas is referring to -- if we simplify the stealth formula to A + H(S_1)G, A + H(S_2)G, so the private keys are
a + H(S_1) and a + H(S_2), the linear relation between the spend keys is equal to the linear relation between the public keys. something not mentioned is that this also would mean the master spend key can be computed from any leaked spendkey. So don't share your spendkeys, even after use!

Also this paper deanonymising rings with small size: monerolink, and this one tooo: A Traceability Analysis of Monero’s Blockchain. Community response to the monerolink paper can be found here.


Monero daemon causes 100% disk utilization on Windows with new wallet install. I am getting started with monero.  I installed the wallet on my windows 10 laptop.  it appears to be very slowly downloading the blockchain.  However monerod causes my disk utilization to max out at 100% and my laptop is unusable.  I don't mind downloading for a few days in the background, but is there some way to prevent the 100% disk utilization?  I am not using an SSD.

While syncing the blockchain, the Monero daemon generates a lot of disk IO calls to create its database, and HDDs are pretty slow at that compared to SSDs.

I'm not sure if there's a reliable way to limit the disk IO rate per process on Windows, but you could try to open the Task Manager and set the priority of the monerod process to "Low". It might improve the usability of the other applications running with a "Normal" priority.


How can I enable smart mining in my daemon? The most recent 0.10.2 release has an option for smart mining, how would i use this proper?

There are two new optional parameters for the  start_mining command.

Before:
start_mining [address] [threads]

Now:
start_mining [address] [threads] [do_smart_mining] [ignore_battery]

If you pass the value "true" to the do_smart_mining parameter, then mining will only be activated when you're computer is idle AND plugged into a power source, and will only mine to a certain CPU threshold (40% I believe).

The ignore_battery parameter was added since there's no unified way to get power stats for every system, so on some systems determining if your computer is plugged in fails. If you set this parameter to "true" AND the code fails to query whether you're plugged in or not, then it will perform the smart mining as above, but ignoring the battery requirement.


Upgraded Monero GUI, but getting an issue with "update needed" I just "updated" from v0.12.2.0 because I was getting the message "update needed".  I downloaded Current Version: 0.12.3.0 Lithium Luna, extracted the .zip to a new directory, but I still have the same status.

      status
      [9/19/2018 10:25 AM] Height: 1664779/1664779 (100.0%) on mainnet, mining at 47 H/s, net hash 571.72 MH/s, v7, update needed, 8(out)+0(in) connections, uptime 0d 0h 35m 46s
      refresh
      [9/19/2018 10:26 AM] Monero 'Lithium Luna' (v0.12.3.0-release)

Did I do something wrong? When the Wallet splashscreen popped up, I followed some prompts, then I entered in my keys.  Maybe I should have done something differently?

The daemon displays this warning approximately a month in advance of a scheduled protocol upgrade. However, sometimes the new version is not ready yet and you simply need to wait until v0.13.0.0 is released to update. Note that a scheduled protocol upgrade is planned for ~18 October. Thus, make sure to upgrade before that date.

  Did I do something wrong?

No.


Monero Helium Hydra - Segmentation Fault I am running a clean install of Monero client for Linux 64bit, binaries as available on 13-oct-2017, v0.11.0.0

I have deleted previous client, and ~/.bitmonero.  I am importing an older wallet file though.

The blockchain synched for a few hours, but now whenever I run monerod it simply seg faults.

I have tried with monerod --block-sync-size=1 --max concurrency 1 but it still just dumps with a segmentation fault.

Any advice on how to fix this?  Thankyou.

This crash was fixed in https://github.com/monero-project/monero/pull/2492, and you can merge it to your tree with the following commands:

git checkout -b crash-fix
git fetch origin pull/2492/head:2492
git cherry-pick 2492

You're now on a branch with whatever source you had before, plus the crash fix. You can now compile normally.

When you want to get back to master (ie, to pull latest):

git checkout master


When syncing Monero's blockchain from scratch, why does it begin fast and end slow? I'm currently syncing from scratch, and noticed that the first million blocks or so synced really fast, but the final blocks take forever. Why is this?

The speed of transaction validation was reduced with the activation of RingCT at block height 1220517 in early January.

Although RingCT transactions still take longer to validate than pre RingCT transactions, the difference in performance was significantly reduced with the  10.2.1 release that went live this week. Further improvements are expected, the extent of which are yet to be determined.


No hashrate when mining with CPUminer I've set up a monero-miner for my Raspberry Pi (for educational purposes) and when I run my miner deamon the log looks like:

[2018-06-28 07:58:10] Using JSON-RPC 2.0
[2018-06-28 07:58:10] CPU Supports AES-NI: NO
[2018-06-28 07:58:10] Starting Stratum on stratum+tcp://xmr.pool.minergate.com:45560
[2018-06-28 07:58:10] 4 miner threads started, using 'cryptonight' algorithm.
[2018-06-28 07:58:10] Binding thread 1 to cpu 1
[2018-06-28 07:58:10] Binding thread 0 to cpu 0
[2018-06-28 07:58:10] Binding thread 2 to cpu 2
[2018-06-28 07:58:10] Binding thread 3 to cpu 3
[2018-06-28 07:58:11] Pool set diff to 1063
[2018-06-28 07:58:11] Stratum detected new block
[2018-06-28 07:58:11] thread 1: 0 hashes, 0.00 H/s
[2018-06-28 07:58:11] thread 0: 0 hashes, 0.00 H/s
[2018-06-28 07:58:11] thread 3: 0 hashes, 0.00 H/s
[2018-06-28 07:58:11] thread 2: 0 hashes, 0.00 H/s
[2018-06-28 07:58:47] Stratum detected new block
[2018-06-28 07:58:47] thread 1: 0 hashes, 0.00 H/s
[2018-06-28 07:58:47] thread 2: 0 hashes, 0.00 H/s
[2018-06-28 07:58:47] thread 3: 0 hashes, 0.00 H/s
[2018-06-28 07:58:48] thread 0: 0 hashes, 0.00 H/s
[2018-06-28 07:59:17] Stratum detected new block

I know that the Raspberry Pi is not optimized for crypto mining but 5-20 H/s should be possible. To start my deamon I use

./minerd -a cryptonight -o stratum+tcp://xmr.pool.minergate.com:45560 -u <my address> -p x -t 4

as explained here: https://www.electromaker.io/tutorial/blog/cryptocurrency-mining-on-the-raspberry-pi-60

there it says:

  To start mining Monero, run:

./minerd -a cryptonight -o stratum+tcp://xmr.pool.minergate.com:45560 -u youremail@address.com -p x -t 4

the money I mined is also not appearing in my wallet.. (neither on my MyMonero wallet nor on my MinerGate wallet)

What did I do wrong?

Any help is very appreciated

You probably using a XMR Address with the XMO pool port. Change your port to 45700


After Ledger 1.6 update and GUI Nitrogen Nebula upgrade, Can't open Nano wallet In my low tech thinking, I upgraded to Nitrogen Nebula GUI and Ledger XMR v1.6.0 update. Now I can't get the Nano S wallet to open. Got an error 1:11415. There are other posts saying to go back to older versions. How? Please help. Thanks!!!

FIXED THE PROBLEM!!!

Close Ledger Live while opening the GUI wallet.

Simple. Yay!


Number of confirmations and node location How many number of confirmations before a Monero can be spent? Also, if there are two or more users opening the same wallet connected to a different node would a user connected to a faster node has an advantage of having earlier confirmations?

Newly received coins can be spent after 10 confirmations.

I case two conflicting transactions are sent to the network by two clients managing the same wallet, the first to arrive at the node that will mine the next block will probably be considered as the valid one, and the other transaction will then be rejected.

Being connected to a faster node with faster connections to the other nodes will help broadcasting a transaction faster, but if the slower node happens to be connected directly to the node that mines the next block, its transaction will probably be confirmed and the faster node's transaction rejected.


Difference between --rpc-bind-ip 0.0.0.0, or loopback, or actual IP I run a node from home.  I use --rpc-bind-ip as a daemon flag, with my internal/LAN IP address as the argument.  With this setup, I can access my node from wallets on different computers inside my LAN.  When others ask this question, I've seen advice to bind to 0.0.0.0, and I've seen advice to bind to loopback (127.0.0.1) (mainly when you'll connect somehow through hidden services, apparently).

How does monerod behave differently with different bindings?  Would the recommendation for which one to use change if the Monero node were be run on remote VPS rather than as a home node?  Would the recommendation change if running a home node that is meant to be accessed from outside the LAN?

If loopback is strictly for hidden services, then that's probably outside the scope of this question, since I'm mainly curious about binding to 0.0.0.0 versus actual, internal or external IP.

This is a basic networking question, not specific to Monero.

0.0.0.0 means "any address" - it will bind to every network interface on the machine. So it will listen to requests from anywhere.

Using a specific address means it will only bind to that single address.

Using 127.0.0.1 is the loopback address, so it will only listen to requests originating on the same machine.


When setting up Monero wallet with Ledger nano S, what are the options 'restore height' and 'subaddress lookahead' for? While setting up the Monero GUI with a Ledger nano S, I did not enter anything in the 'optional fields' in the GUI.

The guide on the Ledger support website states:

  Enter 1720000 in the restore height field, then enter 3:100 in the subaddress lookahead field

I don't remember doing this (because I did not enter anything where the Monero GUI said 'optional').

Is it necessary to enter a restore height, and if you did not, what are the consequences?

And is it also necessary to enter a subaddress lookahead field? If i did not, because it's stated as 'optional' in the GUI, what are the consequences?

Thanks for your help!

When you restore a wallet from seed, you scan the blockchain to attempt to decrypt the destination of each transaction, to see if any of those transactions were destined for you. This process will discover which amounts of Monero (a.k.a. outputs) are owned by your wallet.

If you know you had not received any funds prior to a certain date, you can save time by only scanning the blockchain from a more recent point in time. Block 1720000 was created on 2018-12-05 (see https://xmrchain.net/block/1720000), so if you restored from this height you would not see any funds in your wallet that arrived prior to that date.

The default subaddress lookahead is 50:200, which means creating a lookup table of 50 accounts with 200 subaddresses each, totalling 50*200=10000 subaddresses to scan for initially. Generating this lookup table requires computation, so by reducing the number you initially scan for, you can reduce the Ledger setup time. This is mentioned here: https://github.com/LedgerHQ/ledger-app-monero/blob/master/doc/user/bolos-app-monero.rst

By reducing the lookahead to 3:100, this means that if you'd created 4 accounts and received funds to the 4th account but not to the first 3, the Ledger would not notice any of the funds received to account 4 when scanning. Similarly, if you'd created 101 subaddresses in the first account, received funds to subaddress 101 but not to any of the first 100, then the Ledger would not notice the funds that arrived at subaddress 101. But if you had received funds at subaddresses 90 and 101, then when Ledger saw the incoming funds at subaddress 90 it would then automatically start scanning further ahead by another 100 subaddresses in the future, so that it doesn't miss incoming funds. For more information, see Funds received from subwallet are not showing

TL;DR: By specifying a restore height and smaller lookahead range, you decrease the computation required by the Ledger and can therefore restore your wallet faster. This comes at the risk of the Ledger missing incoming funds if you are restoring a very old wallet or if your subaddress usage pattern is such that you issue lots of unused subaddresses.


Daemon shuts down on startup ("MDB_BAD_TXN: Transaction must abort, has a child, or is invalid" error) The daemon worked until a few days ago.  Now when I start it up it shuts down with this message:

2017-11-27 21:25:56.989 3056    INFO    logging contrib/epee/src/mlog.cpp:148   New log categories: *:WARNING,net:FATAL,net.p2p:FATAL,net.cn:FATAL,global:INFO,verify:FATAL,stacktrace:INFO,logging:INFO,msgwriter:INFO
2017-11-27 21:25:57.013 3056    INFO    global  src/daemon/main.cpp:279 Monero 'Helium Hydra' (v0.11.0.0-release)
2017-11-27 21:25:57.015 3056    INFO    global  src/daemon/protocol.h:55    Initializing cryptonote protocol...
2017-11-27 21:25:57.015 3056    INFO    global  src/daemon/protocol.h:60    Cryptonote protocol initialized OK
2017-11-27 21:25:57.021 3056    INFO    global  src/daemon/p2p.h:63 Initializing p2p server...
2017-11-27 21:26:00.317 3056    INFO    global  src/daemon/p2p.h:68 P2p server initialized OK
2017-11-27 21:26:00.332 3056    INFO    global  src/daemon/rpc.h:58 Initializing core rpc server...
2017-11-27 21:26:00.359 3056    INFO    global  contrib/epee/include/net/http_server_impl_base.h:70 Binding on 127.0.0.1:18081
2017-11-27 21:26:00.360 3056    INFO    global  src/daemon/rpc.h:63 Core rpc server initialized OK on port: 18081
2017-11-27 21:26:00.360 3056    INFO    global  src/daemon/core.h:73    Initializing core...
2017-11-27 21:26:00.362 3056    INFO    global  src/cryptonote_core/cryptonote_core.cpp:323 Loading blockchain from folder C:\ProgramData\bitmonero\lmdb ...
2017-11-27 21:26:00.492 3056    WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:72   Failed to query m_blocks: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid
2017-11-27 21:26:00.498 3056    ERROR   cn  src/cryptonote_core/cryptonote_core.cpp:399 Error opening database: Failed to query m_blocks: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid
2017-11-27 21:26:00.498 3056    INFO    global  src/daemon/rpc.h:90 Deinitializing rpc server...
2017-11-27 21:26:00.498 3056    INFO    global  src/daemon/p2p.h:90 Deinitializing p2p...
2017-11-27 21:26:00.503 3056    INFO    global  src/daemon/core.h:89    Deinitializing core...
2017-11-27 21:26:00.507 3056    ERROR   daemon  src/daemon/core.h:94    Failed to deinitialize core...
2017-11-27 21:26:00.507 3056    INFO    global  src/daemon/protocol.h:77    Stopping cryptonote protocol...
2017-11-27 21:26:00.507 3056    INFO    global  src/daemon/protocol.h:81    Cryptonote protocol stopped successfully

Is my database corrupted and do I need to start from scratch?   If so is there a source from which I can download it faster?
Many thanks for any help with this.

2017-11-27 21:26:00.492 3056    WARN    blockchain.db.lmdb  src/blockchain_db/lmdb/db_lmdb.cpp:72   Failed to query m_blocks: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid

This indicates that your blockchain is corrupted. You can first try to fix this as follows:

Windows

Browse to the directory monerod.exe is located.
Open a new command prompt. This is done by first making sure your cursor isn't located on any of the files and subsequently doing SHIFT + right click. It will give you an option to "Open command window here". If you're using Windows 10, it'll likely give you an option to open the Powershell.
Now type monerod.exe --db-salvage
If you're using the Powershell, type .\monerod.exe --db-salvage
If that doesn't work, type ./monerod.exe --db-salvage
If that doesn't work you, unfortunately, have to resync from scratch. This is done by deleting data.mdb from C:\ProgramData\bitmonero\lmdb, which will trigger the resync.
Note that C:\ProgramData\bitmonero\lmdb is a hidden directory. Thus, you have to manually use the explorer to navigate to it.

Linux and Mac OS X:

Browse to the directory monerod is located.
Open a new terminal.
Now type ./monerod --db-salvage
If that doesn't work you, unfortunately, have to resync from scratch. This is done by deleting data.mdb from ~/.bitmonero, which will trigger the resync.
Note that ~/.bitmonero is, by default, a hidden directory. On Mac OS X you can typically use cmd+shift+. to unhide directories, whereas on Linux you can typically use ctrl+H to unhide directories.

Lastly, as a general piece of advice, if you need to shut down your PC, first shut down monerod gracefully by typing exit (if you're using the CLI) or click on the x (right top) if you're using the GUI. Otherwise, you might corrupt the blockchain again and you'd have to start all over again.


How does XMR compare to ZCash in terms of transaction fees, mining, coin supply? There was another question about the comparison between ZCash and Monero's anonymity, but I wanted to ask another regarding the other differences.

Do Monero and ZCash have different transaction fees?
Do Monero and ZCash have different mining algorithms?
Do Monero and ZCash have different coin supply curves?

Do Monero and ZCash have different transaction fees?

This is largely going to depend on the price, which is currently unknown because Zcash hasn't launched yet. However, on testnet the fee seems to be approximately 0.00005 TAZ (Zcash tesnet coins) per kB, whereas Monero currnetly has a fee of 0.002 XMR per kB.

A more interesting comparison is transaction sizes. The average transaction size for Monero is currently approximately 1 to 3 kB. By contrast, the anonymous Zcash transactions seem to be approximately 2 kB, according to one of their engineers, namely Sean Bowe.

  Do Monero and ZCash have different mining algorithms?

Yes. Monero uses CryptoNight as PoW algorithm, whereas Zcash uses Equihash as PoW algorithm. Both are aiming for ASIC resistance. However, one could argue that the CryptoNight algorithm is more vetted, because it has already been used in Monero for over two years. The Equihash algorithm, however, was until Zcash's implementation purely theoretical.

  Do Monero and ZCash have different coin supply curves?

Yes. Zcash uses the same supply curve of Bitcoin, whereas Monero uses a faster supply curve. A comparison between both emission curves can be seen here.

There are two things to note. First, in Zcash 20% of the mining rewards will go to the Zcash Electric Coin Company, which is a US based company, in the first four years. This company subsequently distributes the so-called "Founders Reward" to its shareholders. These shareholders are founders, scientists, engineers, advisers, outside council, and investors. They can be seen here. In addition, the "Founders Reward" is depicted here. Secondly, in contrast with Monero, Zcash doesn't have a tail emission, which may lead to disincentivized miners in the future.


Can the sender find an address of the receiver of the transaction when not using GUI wallet? wallet-CLI was used to send the transaction, but the sender forgot, where he send the money, so is there a way to determine, where it was sent?

I would prefer wallet-CLI or wallet-RPC solution if there is any.

The wallet file/wallet cache contains the data it used to construct transactions. If you still have the actual wallet file used to spend the funds, then you can open the file with the GUI wallet or CLI wallet and each software will have access to all the data in the file.

If you have lost the wallet file, and therefore you have been forced to recover from seed, for example, the wallet file may not have all the information you desire.  The wallet will recognize that it spent funds, and it can identify the tx pubkey corresponding with the spend funds, but it will not have a record of the recipient's public address that you used to construct the transaction.


Why does the Bulletproof prover always have T1 = rct::scalarmultKey(T1, INV_EIGHT)? I am reading the source code of Monero. In the Bulletproof prover, there is always a line like T1 = rct::scalarmultKey(T1, INV_EIGHT). Why is there always a INV_EIGHT multiplication with the point? Can anyone help me? Thank you.

For security reasons, input points should be multiples of 8. While there is no known exploit if they're not in this case, having them be multiples of 8 means we can rule those out in the first place. The obvious way to ensure this is to check whether input points are multiples of 8 in the verification code. However, this is slow. Multiplying a point by 8 turns out to be much faster, so the prover will multiply its final points by 1/8, then the verifier will multiply by 8, thereby restoring the original points.
This allows the verifier to ensure its input points are all multiples of 8 while still being fast.


Reading Signed/unsigned tx files I'd like to transfer files between cold and hot wallets via QR codes. Python can't seem to decode/encode the bytes in the unsigned tx file. Can someone confirm they are mostly binary, and some sort of encryption scheme? Is there a way to decrypt then before rendering in QR?

I'm able to use the bitstring library to make the files into ones and zeroes, and make QR of that, but I don't know how to go in reverse to reconstitute the file on the other side. Is there a method for covering from 10001101... To the file again?

Credit to @JollyMort

the python base64 module can encode/decode the unsigned_tx file into ascii for transmission via QR code:

import base64
...
...
with open(args.infile, "rb") as source:
    with open(bitPath, 'wb') as dest:
        dest.write(base64.b64encode(source.read()))
<transmit sliced up bitpath file via qr codes as is now ASCII>

<on receive side, concatenate ascii qr codes to one file>
with open(asciiPath, "rb") as source:
    with open(stitchPath, 'wb') as dest:
        dest.write(base64.b64decode(source.read()))

file stitchPath should match original unsiged_monero_tx file


Is there a monerod config file to change certain settings when you run monerod in linux? I'm looking to change the default port of monerod for RPC, but I wasn't sure is there a monerod hidden config file I can put in my home folder to set the settings? And what other useful settings are there? I want to make a public node so I can connect my monerujo wallet to it.

You can create one in any directory you have permissions to access and name it anything (such as monero.conf). Add any of the options used on daemon startup, but leave off the leading double-dash (--). The examples I have seen separate key from value with an equal sign (=) instead of a space. (The space separator is used on the command line.)

Here's an example I found:

# /etc/monero/monerod.conf

# Data directory (blockchain db and indices)
data-dir=/nocow/blockchain/monero

# Log file
log-file=/var/log/monero/monerod.log
max-log-file-size=0            # Prevent monerod from managing the log files; we want logrotate to take care of that

# P2P full node
p2p-bind-ip=0.0.0.0            # Bind to all interfaces (the default)
p2p-bind-port=18080            # Bind to default port

# RPC open node
rpc-bind-ip=0.0.0.0            # Bind to all interfaces
rpc-bind-port=18081            # Bind on default port
confirm-external-bind=1        # Open node (confirm)
restricted-rpc=1               # Prevent unsafe RPC calls
no-igd=1                       # Disable UPnP port mapping

# Slow but reliable db writes
db-sync-mode=safe

# Emergency checkpoints set by MoneroPulse operators will be enforced to workaround potential consensus bugs
# Check https://monerodocs.org/infrastructure/monero-pulse/ for explanation and trade-offs
enforce-dns-checkpointing=1

out-peers=64              # This will enable much faster sync and tx awareness; the default 8 is suboptimal nowadays
in-peers=1024             # The default is unlimited; we prefer to put a cap on this

limit-rate-up=1048576     # 1048576 kB/s == 1GB/s; a raise from default 2048 kB/s; contribute more to p2p network
limit-rate-down=1048576   # 1048576 kB/s == 1GB/s; a raise from default 8192 kB/s; allow for faster initial sync


How are outPk, mask and amount fields created when spending RignCT coinbase transactions? RingCT coinbase transactions don't have ecdhInfo fields with mask, outPk and amount. For example, this is how ringct coinbase transactions looks like (look at JSON representation):

https://explorer.xmr.my/tx/b3630cecf07e3db8a3bad74f9e3ec29451148ec3a0cce1475d73549576bbc773/1

Notice that the ringct fields are empty:

"rct_signatures": {
"type": 0
}

Now compare this with a normal ringct transaction:
https://explorer.xmr.my/tx/91870fad32873d8e01f1e1328540dd9d997a042343664aec4e5a1ace58d4554a/1

rct_signatures structure is field. Of special interest is ecdhInfo:

"ecdhInfo": [ {
"mask": "ea3f55ede33a6500cbaf8209494f98f47c8e2c392ae1c4829ca2b6e56fa7a80a",
"amount": "0aeff00281a107ae87a1d36d15d935a5af4bb42386feccb0913e98deeb67ee09"
}, {
"mask": "4238c9f9cdc40045e79970ad9481af1fa1f2141e9dedc58a13adfb3dec21f607",
"amount": "826a729c9bf014af4af3b801b195c3787566b89d28a887f6c0262ed26237ba09"
}],
"outPk": [ "8d58a7e35b866bcb8f3fc14dd44d7190a8b8057917d8b1362a36562bf5466aef", "6bcb6810dcf18c4f6480c695b619e3302c92ab1642ce6b263bfdbbd935d18649"]
},

Normal transactions have outPk, mask and amount provided and available in the blockchain. Those values are not available for coinbase ringct transactions. My guess is that they are created in flight when spending ringct coinbase transactions? But how? I can't find this information. They are needed for spending coinbase ringct transactions from what I understand.

Any info is appreciated.

The person(s) mining would need to provide these fields. They are normally created by the sender of a normal transaction whereby a new private / public key pair and corresponding shared ECDH secret is created. In this case the person(s) who successfully mined a block gets to "send" themselves the block reward. But instead of sending it as RingCT type 0 (more on this below), they'll need to split the coinbase into multiple inputs can adopt RingCT type 1. It is not yet mandatory that coinbase transactions do this, but I believe the next hard fork will make this a requirement.

Also pay attention to the RingCT/type: yes/0 field in the first link you provided. There are three types of RingCT, and a 0 indicates NULL:

  Null is used for coinbase transactions. There are no inputs to sign, so no signatures can be provided. If a miner uses this mode (as opposed to tx.version == 1) then the coinbase output can be used as a dummy input in any rct transaction (AFAIK, primarily due to how it is stored in a database).

In your second link you'll notice RingCT/type: yes/1, with type 1 indicating Simple:

  Simple is currently used when a transaction has multiple inputs. There is a LSAG signature for each input. Each LSAG is smaller in size than a tx.version == 1 signature, so there is still some space savings over the original signature method.

Source

This accounts for the missing fields.

This may also be of interest to you: RING CONFIDENTIAL TRANSACTIONS


Cold multisig wallet I'm trying to sign a multisig transaction offline following multisig and offline guides.

I got stuck when I tried to transfer funds, because the online view only wallet can't create multisig transaction and the offline signer wallet needs a daemon.

Is this even possible right now?

There is no code for doing cold multisig. There is not really much point since you can have one of your multisig wallets on an offline machine already, so adding a cold/hot system would not really add much I think.

If a multisig wallet on an offline machine cannot sign without a dameon, that should be fixed as I don't think it's inherently needed.


Error while loading shared libraries I am getting this error when trying to run Monero Wallet from www.getmonero.org on my Ubuntu machine:

  $ ./start-gui.sh

  ./monero-wallet-gui: error while loading shared libraries: libxcb-glx.so.0: cannot open shared object file: No such file or directory

I have downloaded the "monero-gui-v0.11.1.0" wallet. I tried this with both 32 and 64 bit version.
I also installed all the required dependencies listed on https://github.com/monero-project/monero
The Ubuntu system details are:

  Description:   Ubuntu 16.04.3 LTS

  Linux pc 4.4.0-98-generic #121-Ubuntu SMP Tue Oct 10 14:24:03 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Any help on this matter is appreciated.

Thank you.

I had the same error on a 64 bit system and could get rid of them via:

sudo apt install libxcb1:i386 libx11-xcb1:i386 libxcb1:i386 libxcb-glx0:i386 libfontconfig:i386 libx11-data:i386 libx11-xcb1:i386 libx11-6:i386 libxext6:i386

But afterwards still a segfault happens - seems that the monero wallet gui is not (yet?) compatible with 64 bit systems.


Download version (v0.12.0.0) is a mess on my OSX. I downloaded new version GUI (v0.12.0.0) My current GUI helium Hydra was not connecting and the Daemon was not connecting today when I did this.   This helium hydra wallet has been generally good to use. This new download is a mess and I am not a techie. I had completed the wizard but the Daemon was disconnected and the wallet was not connecting.  I closed it. Then, every time I try to open it, the wizard window opens and I am asked to create or restore a wallet. When I type the menomic seed, it says that the user name has already been used and that I need to type in another user name. The user name that has already been used is the user name that is connected to the menomic seed; they are definitions of the same wallet. So, I have a big mess. The language used is new to me in this field. What do I do?  Do I discard the download into the trash? I am not a techie and the technical answers have a vocabulary that is new to me.  Do you have any suggestions???

If you had a wallet on the old 11.x running fine, then you didn't need to run the wizard.  Just select wallet and enter password. So here's my suggestion:

Open the GUI app

If it prompts you for a password (for the correct wallet) enter and go.

If wrong wallet, then cancel and you will be dropped to the 'flag' screen.

Once in the 'flag' screen choose your language.

Then select open wallet from file

Here you will be prompted to load your wallet from a file (standard OSX file open dialog)

Navigate to the wallet (will have the walletname with 'keys' on the end.)
Will probably be in your home folder, but I can't say for sure where it is on your machine.

Select

Enter password

profit.


Trying to understand how RCTTypeSimple works We cannot use MLSAG and sign all inputs at once; as all real inputs would need to share the same index.

The partial solution is to use a ring signature on each input separately.

We need to ensure that the inputs balance out the outputs.

To illustrate how I believe it works, I will use an example:

Definitions

A Pedersen commitment P is defined as P = bG + aH

where a is the amount and b is blinding factor.
Discrete Log is unknown with respect to both G and H.

Example

Alice wants to send 5XMR to Bob.

Alice uses two inputs:

Input1 has amount 2XMR and the commitment C1 = xG + 2H
Input2 has amount 3XMR and the commitment C2 = yG + 3H

Alice creates an output addressed to Bob:

Output1 has amount 5XMR and the commitment C3 = kG + 5H

Alice creates new pseudo-commitments for each input, whereby the amount stays the same:

C'k would denote the input associated with Ck.

C'1 = x'G + 2H
C'2 = y'G + 3H

Alice then calculates a commitment to zero for each input:

Commitment to Zero for input 1 would be C1 - C'1 = (x - x')G = z1G
Commitment to Zero for input 2 would be C2 - C'2 = (y - y')G = z2G

The sum of all k' scalars are chosen in such a way that they cancel out the sum of the blinding factors of k.

This means that:

(x' + y') - (x + y) = 0

This would allow us to prove that the input amount equals the output amounts because:

C1 + C2 - (C'1 - C'2) = (x + y)G + 5H - (x' + y')G + 5H = 0 (fee is omitted for simplicity).

At this point, someone verifying this transaction could do the sum(Ck) - sum(C'k) = 0 for all inputs, maybe checking that Ck and C'k are different.

Question: This would not be enough because the scheme does not end here, why?

Moving on:

Since each input is signed individually, I will focus on input1 only, as it is the same for input2.

As mentioned above the Commitment to Zero for input 1 would be C1 - C'1 = (x - x')G = z1G

*Alice is now attempting to sign input1.

She gathers a set of decoy outputs and their commitments. The one-time public key associated with each output is used as mixins.

In 5.7.2, still I mis-understand why z1G is being used in the ring.

For a ring signature, we need a message m and signing key k and a set of public keys Pk where k=x is the public key corresponding to the signing key k. If this is correct, then what is the purpose of z1G  in this ring signature?

I cannot seem to decouple the signing process from proving that the inputs and outputs balance out, mainly because the signing process uses zG for some reason.

I'm going to focus on this following part of your question as opposed to pointing out the issues in your math. The math used in Monero is covered very well, in full detail, in both Zero to Monero and MRL-0005.

But I think from this part of your question, and your other recent questions, here is your key problem:

  I cannot seem to decouple the signing process from proving that the inputs and outputs balance out, mainly because the signing process uses zG for some reason.

So let's take a step back. An MLSAG signature needs be constructed with a ring of input keys and commitments (real and decoys), then signed, to prove that the spender indeed owns one of the input keys in each input ring. The network also needs to be able to verify this, but crucially, without knowing which input in the ring is the actual input being spent.

We also need a way to hide transaction amounts from the rest of the network - only the sender and receiver should be able to decode the amounts. The Pedersen commitments fulfill this task, the amounts get blinded.

Now we also need to prove the sum of the real inputs being spent minus the sum of the outputs being created is zero and that they fall within a positive range.

The commitment to zero is used for both 1) validating the sum of the real inputs being spent minus the sum of the outputs being created is zero, but also 2) proving that an input being spent from an input ring is owned by the sender, without disclosing which input is the real input.

When speaking specifically about validating the real input amounts minus the output amounts is zero, recall that verifiers have a bunch of input commitments & public keys (one real, the rest decoys) and one or more outputs that need using in the calculation. They need to know that one of the input commitments used in the calculation is real. Clearly they cannot use all of them.

Finally, proving the amounts are all positive is the job of the range proof.

Hopefully that clears up some of your confusion. Perhaps reading specifically pages 8 & 9 of MRL-0005 may also help you, along with the math.

Update

Having digested a little more of your question, another thing jumps out at me that you seem to have missed:

  This would not be enough because the scheme does not end here, why?

Everything proceeding this part of your question, used the assumption (incorrectly), that there were only two inputs (the real ones). You miss the fact that if 2 inputs are being spent, there are actually 2 input rings of inputs. Each ring contains one real input being spent, the rest are decoys. Hopefully everything I detailed above helps you see why the scheme doesn't simply "end here", so to speak.

Monero uses a collection of interdependent pieces and it's well worth understanding the concepts behind these pieces and how they relate to each other before jumping head-first into the math.


Cannot get version 2 transactions to work on private testnet I built Monero private testnet (basically used these instructions https://github.com/moneroexamples/private-testnet, but with the latest codebase).
Everything seemed to work fine, but I realized that transactions created by the wallet have tx.version=1 in cryptonote_tx_utils.cpp

tx.version = rct ? 2 : 1;

It looks the boolean rct variable is calculated using earliest_height, which is based on m_earliest_height. Basically, this code appears to look at the block height where a fork is activated and apply true or false based on that.
There is something strange going on, specifically m_earliest_height is basically composed of extremely large numbers (maximums of unsigned integers). So, it looks like 'rct' would never actually be true (because it would take some enormous block height to activate it). The code that generates m_earliest_height strange huge integers is in node_rpc_proxy.cpp.
When I try to overwrite max integers and add something like block 1000 for earliest_height (because testnet node is about 2000 blocks only), I actually get tx.version 2 and everything seems normal.
But then it says that 'transaction was rejected by daemon with status (Failed)'.

Can you please help me figure how to actually work with ringct transactions by making sure that tx.version 2 is enabled and node accepts it? Much thanks.
Thank you. I tried to modify hard fork heights like so:

    testnet_hard_forks[] = {
  // version 1 from the start of the blockchain
  { 1, 1, 0, 1341378000 },

  // version 2 starts from block 624634, which is on or around the 23rd of November, 2015. Fork time finalised on 2015-11-20. No fork voting occurs for the v2 fork.
  { 2, 100, 0, 1341378000+1000},

  // versions 3-5 were passed in rapid succession from September 18th, 2016
  { 3, 200, 0, 1341378000+10000 },
  { 4, 300, 0, 1341378000+11000 },
  { 5, 500, 0, 1341378000+11100 }, // add 5 months on testnet to shut the update warning up since there's a large gap to v6

  { 6, 1000, 0, 1341378000+11199 },
  { 7, 2000, 0, 1341378000+11900 },
  { 8, 1057058, 0, 1515967497 },
};
static const uint64_t testnet_hard_fork_version_1_till = 99;

But the node gets stuck on block 100 this way (I see it by doing 'diff' command). I see that the stagenet part of the code does something like this, so not sure why it is not working. Could you help me to get testnet to current version (but without bulletproofs)?

As dEBRUYNE told me once on reddit:

Testnet has different forks (and fork heights), which can be found here:
https://github.com/monero-project/monero/blob/master/src/cryptonote_core/blockchain.cpp#L120

You should edit the forks height and recompile to get your testnet to the HF where it has been implemented (v5 if I'm correct for testnet).


How to restore access to wallet in Monerujo with restore password I forgot my passphrase but have written down Wallet Files Restore Password (CrAzYpass):

XXXX YYYY ZZZZ ...

How to use it? I don't see any restore button.

Use it instead of normal password (passphrase).

That's it.


What should I check if Kovri can't connect to peers? I downloaded a recent (pre-)alpha build on my RPi3 (Raspbian Lite - Jessie 8.0) using wget.  It installed fine and runs.  The problem is it never actually connects to peers.

I get only warnings and errors.  After hours and hours, it's still the same messages.

Are there some tests I can try to ensure there is nothing wrong with my system?  Are there system processes that are taken for granted to be running correctly that perhaps I can look into?

(Note that I've run the Java I2P router from another computer on this network, so I would think it's not router/firewall related.)

Your best bet is to open an issue on Kovri's GitHub repository. Stack Exchange isn't the best location to do back-and-forth troubleshooting.

https://github.com/monero-project/kovri/issues


How to configure MoneroD logging Is it possible to configure what monerod is logging to the console?
Specifically I would like to filter out the marked as INC.

There is no such ability in Monero. However, grep, sed and awk can be used for this, along with tail -f. Remember --line-buffered with grep.

That should do what you're asking:

tail -f ~/.bitmonero/bitmonero.log | grep -v --line-buffered INC

The grep pattern might need tightening a bit in case it matches other things with INC in the line, though I can't think of one right now.

In the nebulous future, an overhaul of the logging system is planned, which may include an ability to turn on and off different sections of logs.


Merkle Tree Root for Empty Block I am trying to use stratum to do pool mining.

https://en.bitcoin.it/wiki/Stratum_mining_protocol#mining.notify

Here, for multiple cases, we have List of Merkle branches to be empty.
I am confused in calculating the Merkle Tree Root and would appreciate some insight on how to proceed from here.

For example, I have the following mining.notify request with no Merkle Tree Branches.

{ params:
   [ '0000002548928482',
     '204cb62c9bb6e4b6f5009a84fd795402bc1ebb8b1b7d4569aa0e0c2ec1ce97fb',
     '0100000021403b5b010000000000000000000000000000000000000000000000000000000000000000ffffffff1b03294e230422403b5b08',
     '7a706f6f6c2e636100000000000180ea822b000000002321026a4dab2feb92c30910f6cd20ef98babaf43ef3787cb6868b848b53d0133aa147ac00000000',
     [],
     '00000804',
     '1b010707',
     '5b3b4021',
     true ],
  id: null,
  method: 'mining.notify' }

I am using the NiceHash CryptoNight Pool.

EDIT 1:

My goal is to construct the mining blob from the given information.

I have seen this, How to Generate a Blob for PoW Hashing and am facing issues with tree_root_hash = compute_merkle_tree_root_hash(transaction_ids)

EDIT 2:

To my understanding from here, https://bitcoin.stackexchange.com/questions/22929/full-example-data-for-scrypt-stratum-client

I apply keccak 256 to coinbase = coinb1  + extranonce1 + extranonce2 + coinb2 to get hash

Followed by,

for each Merkle_branch
    byte = hash + merkle_branch
    hash = keccak256(byte)
end

to get the Merkle Tree Root Hash, is this correct?

If the transaction pool is empty, a mined block will still have 1 transaction (the miner's transaction claiming the block reward).

So to compute the Merkle tree root, you call the tree hashing function on the single hash of the miner transaction, which is in fact equivalent to doing nothing (Merkle tree root = miner transaction id).


How to run Monero-wallet-rpc on windows? I downloaded monero-cli for windows, I double clicked monerod, when its synchronised I double clicked monero-wallet-cli, I created wallet, then I clicked monero-wallet-rpc, it gets closed within a second, I tried to use wallet rpc methods using postman but could not get any response, but when I use daemon rpc methods which are on 18081 as per official documentation, it gave me
a response. What am I doing wrong while accessing wallet-rpc methods?

When starting your monero-wallet-rpc you need to specify which wallet file to use along with a password and a port.

run monero-wallet-rpc -h to see arguments to start the wallet rpc server.


Do all coins using CryptoNote provide untraceabilty? I know Monero is a fork of ByteCoin. Does this means ByteCoin also provides untraceabilty? Does this mean all currencies using CryptoNote is untraceable?

PS: By untraceability I meant, no one can trace ByteCoin transaction by just knowing a wallet address.

Thank you.

Kind of.

All CryptoNote coins use stealth addresses. This helps make it difficult to know what accounts receive money. Monero also uses stealth addresses. However, there are large differences with ring signatures and RingCT.

Ring signatures mask the source of funds being used to send a transaction. Monero mandates that at least 5 possible inputs must be used (including the real one) when sending a transaction. Few other cryptocurrencies have this same mandate. Bytecoin, for instance, allows people to send transactions without masking the source used. This means certain transactions are partially traceable, and this traceability even negatively impacts other transactions that try to mask this information. To substantially mitigate these concerns, Monero made this masking mandatory.

Furthermore, Monero includes RingCT, which hides the amount sent in a transaction. Most CryptoNote projects (especially old ones) do not include this, which means people can try to analyze the amounts being transacted.


Churning and subaddresses Today I was thinking about churning again. But I was wondering, since we now have subaddresses, does it matter or make any difference when I churn to the main-address or to a subaddress?
Is one way better than the other or does it not matter at all?

Thanks

Using a main address or subaddress, the result/act of churning is the same.


Average daily trading volume What is the current average daily trading volume for Monero on known exchanges?

How many known exchanges trade Monero?

Is there any way to estimate the amount of P2P trading that takes place but is not published?

You can see the total daily volume on non-p2p exchanges and broken down market here:

http://coinmarketcap.com/currencies/monero/#markets

Over the last 24 hours the total volume was about 316 BTC or 207k USD, with most of that concentrated at poloniex.

There is one p2p trading service that you can check the volume on - bitsquare, but I don't think they're doing more than $100 per day at the moment.

As far as I know there is no way to know how much OTC trading is occurring on any given day, except maybe trying to estimate by lurking in #monero-otc channel in freenode.


View Key of Monero Core Development Team donation account Does the core development team publish the view key of its donation account so that current and prospective donors can see how much XMR has been donated so far?

Although donated funds are spent solely at the discretion of the core team, has there been any voluntary disclosure of how donated funds are being used?

The viewkey for that address is:

f359631075708155cc3d92a32b75a7d02a5dcf27756707b47a2b31b21c389501

(Taken from https://github.com/fluffypony/bitmonero)

Remember, though, that a viewkey only allows you to see any incoming transactions.  It does not allow you to see the spent outputs of the address, so it doesn't function the same way as looking up a bitcoin address on blockchain.info.


TLS and authentication for RPC TLS and authentication for RPC has been completed in the Monero dev branch for quite some time. Has it been reworked to fully address any conflicts with net_skeleton's license so that it will be ready to merge to master along with the OMQ branch when ready?

Once TLS and authentication for RPC is merged are there any changes a security conscious exchange should make to the setup in the diagram below?

The dev branch has been canned, and the 0MQ effort is being refactored / partially rewritten by tewinget. Unfortunately the net_skeleton licensing issue isn't one we can work around, as far as we can tell, so we are actively looking at an alternative. Note that you can, right now, stick something like nginx in front of it to handle both authentication and TLS, and use nginx's proxy_pass to reverse proxy the RPC calls. In fact, this may be a preferable route for a security-conscious exchange, as nginx can provide fine-grained control over user access, TLS cipher suites, and so on.


How does one register a Loki Network Name on the Loki name service? I want to register a lns loki name service name on the loki network. How do I do this via the command line? And what is the cost of it?

You can register using the command:

lns_buy_mapping namehere 0000...1111

You link the name to a session chat id or a loki address.

To check if you own it do:

lns_print_owners_to_names

Cost is currently 20 loki.


Transaction from suprnova to local gui wallet failed over the weekend I installed the newest XMR gui wallet (windows 10) and imported my old (2014) wallet file into it. Daemon synced over the weekend, all looked good.

Yesterday night I decided to cash out mining proceeds from suprnova and sent these to my local wallet address. 15 hours later, it still hadn't appeared. Ocminer was nice enough to credit the failed cash-out transaction back to my pool account, but I am still at a loss in regards to what happened.

Why didn't that transaction go through? I'm mining on nanopool as well currently and would hate to have the same happen to me there. Is my old wallet not compatible anymore? Have I done something wrong? Should I have generated a payment ID in the wallet before I sent a cash out request on suprnova?

Would appreciate any help on the matter!

Many thanks
Mike

A transaction may fail to make it into the chain for various reasons:

it might be intrinsically invalid in some way: for example, the signatures being incorrect, or using a ring size smaller than the network minimum
it might be double spending an output already on the chain: this can happen if a transaction is dropped from a daemon, which then accepts another spending one of the original inputs, but other daemons might mine the first one in the meantime
it might stay more than a day in the txpool, in which case it'll be dropped due to age: if the tx was valid, it could be because its fee was too small and there was non stop contention by other txes.

If you got a transaction hash for that missing transaction, you can check whether it's on the chain by looking it up on a block explorer, for instance moneroblocks.info. If it is there, then it was not really missing, and it could be a bug in the wallet, or the wallet wasn't up to date. Or it could have been mined later than the time you deemed it to be missing.


monero-wallet-qui removing from PC My Monero GUI wallet cannot connect to monerod. I get this:

Status connection error

This is what I had tried:

I did a completely new installation.
I have deleted C:/ProgramData/bitmonero folder.
I deleted the unzipped folder containing Monero GUI wallet.
I downloaded the wallet again.
I ran Monero GUI wallet but the old wallet is still open and asked me for a password.
After I set a password the wallet will open with 0 balance and status disconnected.

Any idea to solve that? monerod seems open and work correctly.

Thanks for help.

To completely remove Monero GUI Wallet from Windows 10 you need to:

Delete folder bitmonero in: C:\ProgramData\bitmonero\
Delete folder Monero in: %userprofile%\Documents\Monero
Delete registry entries The Monero Project:

regedit > Computer\HKEY_CURRENT_USER\Software\The Monero Project\


Duplicate output keys Output keys are 256 bits public keys. They should be unique.

Are there any duplicate output keys ?

What happens if there is any ? Is it a double spend ?


Using Monero as proof of funds I'm writing an article about the future of Healthcare. I wondered if it was possible to use Monero to make a proof of funds. For example: the hospital wants to know that I can pay for the medical care I'm going to receive, I sign some kind of message that proves that I own at least x amount of XMR, they are convinced and I get treated with no delay.

Is that possible? I understand that range proofs do precisely that, the question then becomes: is it possible for an owner of XMR to create this proof without deanonymizing his account? Note that I do not want to make an on-chain transaction, it should just be some kind of signed message. If the answer is yes, then I will mention Monero in the article.

It is partially possible and will probably be implemented in the future. An interesting post was created about this and a member of the Monero Research Lab stated the following 8 hours ago:

[...]
Currently, the only way to prove your balance to an auditor is to give them your view secret key along with the set of signed key images (i.e. ingredients needed for cold signing using watch-only wallet). This approach has a serious drawback that the auditor knows (and continues to know in the future) about all the funds you received and when those funds (whose key images are disclosed) get spent. If the auditor (i.e. a government) does this for a lot of users, they will acquire a considerable amount of information about which output belongs to who and which is the real spend in each ring signature. This is clearly detrimental to everyone's privacy.
A new feature called "tx proof" (https://github.com/monero-project/monero/pull/2487) was designed to partially address the above issue; instead of disclosing your view key to the auditor, for a given transaction where you received some funds, you can generate a cryptographic proof that proves your having received funds in that tx, and then you can give the proof to the auditor. Importantly, this can be done on a per-tx basis, so the auditor will have no way of knowing the rest of your transactions.
An idea that occurred to me just now inspired by this post, is to augment the above tx proof with the signed key image, so that the auditor can also check if the fund received in the given tx is spent or not. This way, you can easily prove to the auditor that you have at least X amount of funds in your wallet. The major advantage compared to the existing method (giving out the entire key image set) is that you don't need to reveal the entirety of your balance to the auditor.
-/u/stoffu


Monero GUI quits within a few seconds after launching I am trying to get Monero GUI working, but it quits within a few seconds of launching, without displaying a dialog.
The Windows error message is:

monero-wallet-gui.exe has stopped working

Here is my data:

--- Windows 7 Pro
--- Monero downloaded as;  monero-gui-win-x64-v0.11.0.0.zip
--- I tried putting the path to the Monero directory in the Windows system PATH environment variable
--- I tried launching the GUI with a CMD file that specifies the complete path to the executable
--- there are no blank spaces in the path to the executable
--- the daemon, monerod.exe seems to run without a hitch
--- the CLI executable seems to run without a hitch and I was able to create a new wallet
--- in the file,  monero-wallet-gui.log,  I have the following error messages:

2017-10-03 15:45:10.500 2828    INFO    logging contrib/epee/src/mlog.cpp:148   New log categories: *:WARNING,net:FATAL,net.p2p:FATAL,net.cn:FATAL,global:INFO,verify:FATAL,stacktrace:INFO,logging:INFO,msgwriter:INFO

2017-10-03 15:45:23.217 2828    INFO    logging contrib/epee/src/mlog.cpp:156   New log categories: *:WARNING,net:FATAL,net.p2p:FATAL,net.cn:FATAL,global:INFO,verify:FATAL,stacktrace:INFO,logging:INFO,msgwriter:INFO

I would REALLY like to get the GUI up and running.

Any help would be greatly appreciated.

Thanks,
rp108

monero-wallet-gui uses Qt, which uses OpenGL by default, and this does not play well with some machines. For this reason, monero-wallet-gui includes a script called start-low-graphics-mode.bat to run in fallback mode, which should be compatible with more machines, but at the cost of (I believe) some graphical glitches.


Why does my bitmonero fail to load? I'm trying to run a node for the first time on linux mint, and let the blockchain update while I was asleep. When I woke up this morning my computer was unresponsive, and I did a hard shutdown.

Now when I start ./bitmonerod, I seem to get an error.

> ~/Desktop/Monero $ ./bitmonerod  Creating the logger system
> 2016-Sep-10 10:01:27.870535 Initializing cryptonote protocol...
> 2016-Sep-10 10:01:27.870570 Cryptonote protocol initialized OK
> 2016-Sep-10 10:01:27.870683 Initializing p2p server... 2016-Sep-10
> 10:01:28.190553 Set limit-up to 2048 kB/s 2016-Sep-10 10:01:28.190686
> Set limit-down to 8192 kB/s 2016-Sep-10 10:01:28.190727 Set limit-up
> to 2048 kB/s 2016-Sep-10 10:01:28.190764 Set limit-down to 8192 kB/s
> 2016-Sep-10 10:01:28.191659 Binding on 0.0.0.0:18080 2016-Sep-10
> 10:01:28.191734 Net service bound to 0.0.0.0:18080 2016-Sep-10
> 10:01:28.191749 Attempting to add IGD port mapping. 2016-Sep-10
> 10:01:29.361620 Added IGD port mapping. 2016-Sep-10 10:01:29.361668
> P2p server initialized OK 2016-Sep-10 10:01:29.361754 Initializing
> core rpc server... 2016-Sep-10 10:01:29.361800 Binding on
> 127.0.0.1:18081 2016-Sep-10 10:01:29.361875 Core rpc server initialized OK on port: 18081 2016-Sep-10 10:01:29.361897 Initializing
> core... 2016-Sep-10 10:01:29.362047 Loading blockchain from folder /home/linuxnoob/.bitmonero/lmdb ... 2016-Sep-10 10:01:29.362070
> option: fastest 2016-Sep-10 10:01:29.362084 option: async 2016-Sep-10
> 10:01:29.362099 option: 1000 2016-Sep-10 10:01:29.362223
> Deinitializing rpc server... 2016-Sep-10 10:01:29.362293
> Deinitializing p2p... 2016-Sep-10 10:01:29.363450 Deinitializing
> core... 2016-Sep-10 10:01:29.363562 Closing IO Service. 2016-Sep-10
> 10:01:29.363597 Failed to deinitialize core... 2016-Sep-10
> 10:01:29.363628 Deinitializing cryptonote_protocol...

What am I doing wrong here?

Thanks for the help!

A rough guess would be that the blockchain has been corrupted and may need to be resynced from scratch. The errors aren't really informative enough but it does seem that it shuts itself down after it attempts to verify the blockchain.


Running Monero Remote node Im having some difficulty getting a remote node setup, as far as i understand all you need is a fully synced node. and then you add some start up flags to get the remote node running currently im trying with the below startup flags

--rpc-bind-ip YOUR.EXTERNAL_IP.GOES.HERE --rpc-bind-port 18089 --restricted-rpc --confirm-external-bind

i've tried using both my external IP address as provided by my ISP and my internal network IP address as assigned by my router but neither are working

Whenever i try to start the Daemon with those flags i get the error
couldn't connect to daemon 127.0.0.1 : 18081

I've tried this on 2 computers so far and cant work this out, if i can get this working ill be writing a user guide that i can slap up on getmonero.com

Thanks in advance

You use port 18089 in config, but try connect to port 18081.
Also you need set your extetnal ip and config your routers and firewalls to redirect port 18089 to you daemon host.


Counterparty On Monero Counterparty is a cryptocurrency that sits in a layer 'on top of' Bitcoin. Unlike colored coins, which map identities to units of Bitcoin, Counterparty tokens aren't attached to any units of Bitcoin at all. Instead, they exist only in the OP_RETURN, a piece of arbitrary data that can be attached to any Bitcoin transaction. The Counterparty protocol defines certain opcodes that you can add to create and transfer assets and management rights between addresses on the Bitcoin blockchain, with the same level of security that Bitcoin offers.

I'm wondering if something similar to this could be implemented in Monero, but with the caveat that the asset in question have plausible deniability in it's transfer/ownership. A trackable token could be stored in TX_EXTRA, where the data contained is a transfer opcode and a signature proving ownership, but this would reveal which of the ring members is yours (degrading privacy). It would be possible to trace this asset's path through a series of one-time addresses as it moves within the blockchain. Can this be done in a private way?

I've spoken to Robby Dermody from Counterparty about this exact thing. Shoving the data into tx_extra is the trivial part, and in my opinion the best way to handle it would be to encrypt the data with the viewkey. You could reveal the tx key or the viewkey to reveal your asset movement, but it would otherwise stay private. Since transfers of an asset to another person would be encrypted with their viewkey (as with regular transactions, via DHKE) they would be able to decrypt the data and act accordingly.


Are there any Monero devs involved with the LOKI project? The Loki project is pretty new, but who is really behind it? Who are the main devs to be able to just fork monero code and build out their own software. The Monero software is pretty complicated, I'd imagine there are Monero devs behind this new system.

Not to my knowledge. However, tewinget is a former Monero contributor, and a current (or recent past) contributor to Loki.


Why is the wallet-GUI Payment ID field not accepting an ID? Wallet GUI 10.3.1
Linux Mint 18.1, 64 bit

Send and Address book tab appear to reject any payment ID I put in there. Send will only allow me to send when there is no payment ID.

EDIT:  If I recall, the application is in beta. Is this something that I should merely report as a bug on github? I have not used the wallet until now.

The problem occurs with integrated addresses. Because it already contains a payment ID, it rejects any additional IDs by the user.

106 character integrated address (causes the Payment ID to fail).

95 character normal address (does not cause a problem with the Payment ID).


How can I check if a transaction is mined into the blockchain? How can I check if a transaction is mined into the blockchain ?
How much time does it take for this if the transaction is less then 1000$ ?

You can paste the txid in a block explorer, or just look at the history in the gui to see if it has started confirming.
In cli I think show_transfer <txid> should do.

No matter the amount, if the network is not overloaded, your transaction should be mined within an average 3 minutes (1 minute average for current block to be mined and then the 2 minutes blocktime for the block including your transaction to be mined).


How to unlock a PENDING order in Monero Wallet GUI? Yesterday I tried to send moneros from my Monero wallet GUI (v0.11.1.0).

But they are stucked since. So I updated the wallet to the last version (v0.13.0.3) two hours later.

Unfortunately, this morning they are still not sent with a Blockheight status as "PENDING" and a wallet status "Unlocked balance (waiting for block)".

Blocks seem to be updated:

But GUI says is "waiting for block":

I managed to solve the issue by updating to last Monero Wallet version (v0.13.0.3). I was then able to cancel the order using the wallet CLI.


Monero Payments for WooCommerce plugin? There is at least one plugin that allows WordPress sites running WooCommerce (a very popular and free e-commerce solution) to accept Bitcoin. As far as I know no similar solution exists for Monero. How difficult would it be to develop such a plugin? Is Monero core development at such a stage that developing a Monero Payments plugin is not yet feasible or advisable?

Serhack is developing the woocommerce plugin for wordpress.
Check it: https://github.com/monero-integrations/monerowp


What is the technical definition of "dust" that is allowed to be sent with a mixin of 0? What is the technical definition of "dust" that is allowed to be sent with a mixin of 0?

Is there any way I can avoid or reduce dust creation?

Dust is not a very well defined term in general. However, in the context of your question ("allowed to be sent with a mixin of 0"), this is about which outputs have enough other outputs of the same amount on the blockchain. If there are enough such outputs, then the output is not considered dust for the purposes of mixin 0 rules. If there are not enough, then it is. "Enough" here is defined as two within the current monero rules: the minimum mixin is 2 (except when dealing with that dust), so you need two other outputs with the same amount as the output you are considering.

Dust used to be created all the time, but is now less so. The main offender was the mining pool software, which would send small amounts at every block, with "complex" amounts such as 0.000026483653. Unlikely to find a lot of outputs of that particular amount on the blockchain. The block reward was also dusty till the first hard fork. Now, dust creation is much more rare, for the following reasons:

the mining pool software sends quantized amounts when a threshold is reached
the block reward is quantized by default
amounts are split by denominations down to the smallest amount

Moreover, once RingCT is included in monero, this problem will disappear altogether since amounts will be encrypted, and all/many new inputs will technically have "weird" amouts, but they will be mixable with any other, regardless of amounts.

The only thing I'd suggest now is, if you are mining, use a pool with a higher threshold. While they won't send dust anymore, you want to avoid small outputs since sending them takes up more in fees.