Keep mining to replace an already published block If two miners find a valid block for the same height, the block with the largest difficulty is selected and the other one is rejected by the network (orphaned), regardless of their discovery timestamp.

Are there situations where it would make sense for a miner to keep mining towards an already published block, in the hope of finding a more difficult block that could replace it? Could it be turned into a threat to the network?

Assuming that the network is healthy which means there are many competing  miners for a block. It would not make sense for a miner to keep mining an already published block because by the time it will be able to find that block the blockchain is already longer compared to his chain. Even if there are nodes that would accept it the network will always select the longest blockchain.

For example, if we assume that the said miner can find a block every 1 hour and blocks are being found every 2 minutes in the entire network. The worst scenario is when it just mined a block. This means it is impossible for him to grab the block from an hour ago because there are already 30 blocks ahead of it.

Therefore, the best case to steal a publish blocked would be that when the miner found a block an hour ago. There is a chance for that miner to keep mining for that block and be able to be accepted. However, its chances diminishes as the blockchain increases. In this case every 2 minutes. Probably at 2 blocks that miner would not be able to submit its block and accepted in the network.

This would cost a lot for that miner since it has only a very small window to publish an already submitted block. It would  be profitable  to just be a good miner and find the next block which has more probability of mining it rather than mining with an already published block.

In another case if the network is not healthy and that miner can mine blocks faster than the entire network it would be a different story. But this only happens when the network is at its infancy.


Do I need to wait for the entire blockchain to download before daemon will connect to wallet? After having been away from Monero from some time I have uninstalled (hopefully) the old version, deleted the files, and have installed the new gui ( 0.14.0.0 Boron Butterfly). I am restoring from my old wallet and all seems to be going well as monerod is running and downloading the blockchain with the console having been opened automatically and is currently displaying progress. The gui does display the message "wallet is not connected to daemon." with "Network Status" displaying "Searching node" and as such, I am obviously not able to see my balance. Is this normal? Do I merely have to wait for the blockchain to finish downloading for the daemon to connect or has something gone wrong which I need to address?

When you setup your wallet, you will have had an option to use a Bootstrap Node. A bootstrap node allows you to use your wallet whilst your own full node is downloading the blockchain.

This said (and assuming you didn't select to use a bootstrap node), the fact the GUI says it is not connected to the daemon suggests some other issue. Even though you can see in another window the blockchain is downloading, the GUI should still be connected and a progress bar showing progress of the blockchain sync. I suggest killing all Monero processes and restarting the GUI as a first step.


Sent monero to the wrong address I know that if I transfer moneroj to an incorrect but otherwise valid address, I will lose my moneroj. So I am wondering:

What is the likelihood that a 95-character string corresponds to a valid monero address?
If the address is invalid, will I lose my moneroj?

A monero address includes a 32 bit checksum, so assuming the checksum is randomly distributed over the whole space, you get one match over about 4 billion, or 0.000000023283% chance of the checksum matching by pure chance.
However, all 95 character strings do not represent a valid address in the first place, so a failure to decode as base58 will also get an invalid address rejected.

If the address is invalid, you don't lose your monero, it just doesn't get sent. If it's a valid address to which you do not have the private keys (or do not know who does, or that person/entity is not willing to send back), then you do lose your monero.


What are the main advantages / disadvantages between proposed RandomX to ProgPoW? Ethereum developers recently decided to fork off Ethash ASICs like Monero did before. However, Monero changes its CryptoNight mining algorithm only slightly every six months until a more robust alternative is ready, mainly RandomX is being discussed from what I observed.

Ethereum wants to switch to ProgPOW which is claimed to be hardly ASIC-able. What are the main differences between ProgPOW and RandomX and can some parts of it also benefit Monero's development in a longer-term ASIC resistant mining algorithm?

What are the main differences between ProgPOW and RandomX?

The design goal of ProgPoW is to have the algorithm’s requirements match what is available on commodity GPUs, while RandomX is inefficient (as stated on https://github.com/tevador/RandomX) on GPUs.

  can some parts of it also benefit Monero's development in a longer-term ASIC resistant mining algorithm?

Monero's developers are constantly following the evolution of the other opensource mining algorithms (as for example https://github.com/monero-project/monero/issues/3545) and if something can help the mining algorithm of Monero, it will be implemented in a safe and secure way.


How to generate a new genesis tx? I did a Monero fork and i added to it a code to generate for me a new genesis tx with the knowed command --print-genesis-tx and it works great at start, it generates something like this 013c01ff000180cab5ee01029b2e4c0281c0b02e7c53291a94d1d0cbff8883f8024f5142ee494ffbbd08807121015b6c9c53d57e60a1283edfba1d2a6510c922f351d86c7f537de64082fdb76110 but if a try to do a solo mining i get this:

strat_mining <address>

2017-07-23 16:27:52.542 [miner 0]   ERROR   cn  src/cryptonote_core/cryptonote_core.cpp:917 mined block failed verification
2017-07-23 16:27:52.561 [miner 0]   INFO    global  src/cryptonote_basic/miner.cpp:456  Found block for difficulty: 1
2017-07-23 16:27:52.561 [miner 0]   ERROR   verify  src/cryptonote_core/blockchain.cpp:3164 Block with id is INVALID: <b89cd1e533c067989f52f3dc38f3b14fed297f3b20a2c9a0910e31bcdb9e4092>

I want to premine my own cryptocurrency so the first block is 0 and the next is the max amount. But i think it isn't the problem, I think the problem is the genesis that i create.

I fixed it changing this line from 1 to 0.

your_coin/CMakeLists.txt:102
 # set this to 0 if per-block checkpoint needs to be disabled
 set(PER_BLOCK_CHECKPOINT 0)

It means that before I was running my coin with checkpoints when it does not should have because is a new blockchain.


Can I specify a payment ID when using the sweep_all command? Is it possible to use a payment id with the sweep_all command, and if so, is the syntax simply:

sweep_all address payment_id

It looks like it's undocumented, but I just tested with version 0.10 and it behaves as expected with your syntax.
sweep_all <address> <payment_id>


Compiling the Command Line Wallet How do I build the command line wallet for linux?

Example:

monero-wallet-cli
monero-wallet-rpc
monerod

Where can I get the source code?
Thank you very much.

The source for the Monero tools is on http://github.com/monero-project/monero.
Compiling's done with "make". See the README.md file for the necessary dependencies, and detailed build steps for various platforms.

Note that the GUI is on http://github.com/monero-project/monero-core.


Is there a way to make a public message where anyone can see on the monero blockchain using payment ID? I'm assuming payment IDs are viewable publicly. Is there a way to encode an ASCII message in the payment ID and make it viewable publicly on the blockchain?

Old style 256-bit payment ids are not encrypted. New style 64-bit payment ids are encrypted such that only the recipient can view it.

Monero transactions also have a tx_extra field that you can put whatever extra information you want into, so you are not limited to a message length of 256 bits. Doing this would require you to modify the Monero wallet software unless someone else has already implemented this functionality in their own wallet software for you to use.

Since all blockchain viewers I know of will only display hex and not ascii representations of the tx_extra field, you will have to ask the recipients of messages to use a site such as this to view the hex as ascii characters https://www.rapidtables.com/convert/number/hex-to-ascii.html

Edit: as pointed out in the other answer in this thread, xmrchain.net will display the ASCII representation of the unencrypted 256-bit payment id field. However it will not display the ASCII representation of the entire tx_extra field, so if you create a custom tx_extra field then the recipient will still need to use a hex to ascii converter.

Putting messages into Monero transactions is not something that should be encouraged, since it makes certain transactions stand out on the blockchain as different to other transactions. If too many people start doing this, there would be a good argument for either preventing this functionality (via a consensus algorithm change) or for creating a special new transaction type purely for publishing messages where those special transactions would not ever be referenced by other regular transactions.


Will the dynamic fee algorithm under development be a wallet side calculation or it will be a consensus rule? Will the dynamic fee algorithm under development be a wallet side calculation or it will be a consensus rule?

I ask that question because if the dynamic fee algorithm is a censensus code rule, making adjustments on it will require hard/soft fork and that sounds more troublesome than if the fee were just calculated by the wallet.

Since the 2014 attack the fee where forced by miners. The calculation for the dynamic fee will be made on the wallet side, and then verified by the miners and if it is on the miners default it will be acepted by the network

Note by tewinget: "the network doesn't care about fees for a block, but miners do care about tx fees when deciding which to include in a block"


Permission denied error for monero-blockchain-blackball I'm attempting to run the monero-blockchain-blackball utility in PureOS, and I'm running into a permission error.

I used the syntax to select the tool, then the Monero blockchain, then a forked blockchain (I'm using Monero v6 for testing). The syntax is described here.

Upon running the command, I receive the following text:

I deleted the /.shared-ringdb folder, but the error persists.

How can I fix this permission error?

monero-blockchain-blackball is seeing that the monero v6 blockchain has incorrect block, and is trying to fix it, but the blockchain is opened read only, so it's failing.
This is a bug, since it's expected that the v6 blockchain is borked since people continued mining on it with obsolete software.
Please file this on github.com for the developers to fix it.


Unrecognized TXN format, incorrect balance v0.13.0.4 this is the same error received in v0.13.0.3 GUI

txn extra has unsupported format

all transactions are pre fork by weeks, and is leading to an incorrect balance showing in my wallet.

Re synced the blockchain from scratch post fork. rescan_bc in CLI and refreshed the GUI from genesis, both showing the same incorrect balance after complete wallet refresh. monerod is fully synced and wallet is in sync with monerod.

linux x64, virtual machine, v0.13.0.4

this is my post on v0.13.0.3
Monerod and wallet fully synced, not recognizing transactions made before the fork as valid

where can I submit a bug report?

I have a theory that I'm posting as an answer.

I think you clone and build monero yourself.  And I think you're using the same startup sequence to launch monero-wallet-gui as you did previously.  And I think what happened is you didn't realize that new builds are being put in a different directory hierarchy in the /build directory.  So when you launch monero-wallet-gui, your computer is using the PATH you previously set (build/release/bin), meaning you keep launching the old software.


How high is Multi-Sig on the list of development priorities? .... and is there a rough ETA?  (  Soon..)

If this isn't being actively developed,  then is there things that need to be developed before this can happen?

Otherwise has there been any forum funding proposals concerning this?

Core contributor moneromooo recently got funding for 450 hours of his work on Monero. However, there is no exact estimation:

  As before, I will not commit to any particular piece of work, but will
  work on whatever needs doing to further Monero. Currently, my target
  is rct verification performance, and then there is multisig, though I
  will need help for someone who understands the crypto well to guide
  me.

Browsing his GitHub commits you can see, he is already working on RingCT Performance, but also on several other things, so I think Fluffypony's estimation of 12 to 18 for multisig to be rolled out is quite real.


Deposit before multisig setup is complete? Is there any point during the creation of a multisig wallet that funds can be deposited into the wallet or is it only safe to make deposits after the final step (The exchange)?

You can deposit funds into a multisig wallet as soon as you have completed the multisig wallet make_multisig process (in the case of N/N wallets) or have completed the make_multisig and finalize_multisig process (in the case of M/N threshold wallets).


Understanding payment receiving concepts I'd like to create a script which handles incoming payments to my wallet and once a payment has been confirmed 10 times it saves the payment id to a file.

I've read the RPC documentation, specifically get_bulk_payments. I just want to make sure I understand some key concepts and fill in some gaps in the documentation. Feel free to answer if you know any of the following points:

The results from a get_bulk_payments call includes a block_height value, is this the first mined block this transaction appears in?
Assume that calling get_bulk_payments with a min_block_height of 1010 returns a payment with block_height 1000. This means there have been 10 confirmations?
If a payment returned from get_bulk_payments has an unlock_time != 0 does this mean I can't spend this amount immediately? If so, someone could (say maliciously) put an unlock_time for a year or more. I don't want to record this payment just yet if that's the case.
I'm guessing that payments can have an unlock_time not equal to zero, but the time or blockheight value is in the past so it is spendable immediately.
If there are 2 or more payments with the same tx_hash is it possible they have different unlock_time values?

Thank you!

The results from a get_bulk_payments call includes a block_height value, is this the first mined block this transaction appears in?

Correct.

  Assume that calling get_bulk_payments with a min_block_height of 1010 returns a payment with block_height 1000. This means there have been 10 confirmations?

If you specify 1010 as min_block_height it will only begin scanning blocks from block 1010. Thus, if a transaction was mined in block 1000 it won't be picked up by this specific command. You'd need to set min_block_height to 1000. As the documentation states:

  The block height at which to start looking for payments

However, you are correct that a transaction mined in block 1000 will have 10 confirmations at block 1010. In other words, confirmations is the current block height minus the block height the transaction was mined in.

  If a payment returned from get_bulk_payments has an unlock_time != 0 does this mean I can't spend this amount immediately?

Correct.

  If so, someone could (say maliciously) put an unlock_time for a year or more.

Correct. If I recall correctly, the maximum lock time currently is 4 years.

  I'm guessing that payments can have an unlock_time not equal to zero, but the time or blockheight value is in the past so it is spendable immediately.

Not sure if I understand this question correctly, but the unlock time is, as far as I know, set from the block the transaction is mined in. Note that by default all transactions are locked for 10 blocks. However, if an unlock time is included in the transactions they could be locked for a longer amount of time.

  If there are 2 or more payments with the same tx_hash is it possible they have different unlock_time values?

Transactions cannot have the same tx hash. In addition, multiple transactions also cannot have the same outputs as that would indicate someone would've successfully performed a double spend.


Is it possible to get a rough timeline/cost estimate for the future monero development? I know that this question is a bit of a stretch, so it might be good to go with this overview from the official Monero homepage (https://getmonero.org/design-goals/)

To be more specific, which of the listed items are already in development? Which of the items can be patched with a rough cost/time estimate?

I do realize that there is no definitive answer to my question.

Monero is run as an open source project, rather than a startup. As such, it is developed at the speed at which its contributors... contribute. Something getting done depends on someone with the right skills deciding to help, and finding the time to do so. As such, no timeline can be given. Funding does help, as some people will pour more time if funded, but that can hardly be made into a cost estimate.

About the specific items mentioned on the image you link to, there are a few things that are out of date:

0MQ isn't done. It was pretty much working months ago, but issues with it ended up with a rewrite being started.
SSL/TLS does not exist. I understand this is something that comes with 0MQ.
client side handling of unconfirmed transactions is done (waiting to be merged now merged, see https://github.com/monero-project/bitmonero/pull/916)
address and tx signing, key export is mostly done - tx signing may not be, I'm not sure what this is, but the other two were merged in the last week or so


Percentage of pre-tail Monero that has been mined compared to Bitcoin At what approximate block height/date will the percentage of mined pre-tail Monero emission equal the same percentage percentage as Bitcoin?

Is there a spreadsheet or calculator that can easily help answer identify the percentage of pre-tail coin supply that will be mined as of a specific blockheight/date?

At what approximate block height/date will the percentage of mined pre-tail Monero emission equal the same percentage percentage as Bitcoin?

This will happen at approximately February 11, 2017. At this date approximately 75.72% of the pre-tail Monero will be mined. In the spreadsheet it is marked as "Total Emission Crossover".

  Is there a spreadsheet or calculator that can easily help answer identify the percentage of pre-tail coin supply that will be mined as of a specific blockheight/date?

Yes there is.
For clarity, I have used this spreadsheet to answer your first question as well. Credits for the spreadsheet go to core-team member luigi1111.


How to connect to a remote node from NodeJS? I'm trying to figure out how to connect my NodeJS app to a remote monero node. I need it to query the network.

Here's is the list of available JSON-RPC methods — Daemon RPC documentation

Here's the list of open nodes  — https://moneroworld.com/

Here's what I do:

const rpc = require('json-rpc-client')
const host = 'node.moneroworld.com'
const port = '18089'
const client = new rpc({ host, port })
client.connect()
  .then(() => {
    console.log('Connected')
  })
  .catch(error => {
    console.log(error)
  })

Here's the error:

{ host: 'node.moneroworld.com', port: '18089' }
error:Error: getaddrinfo ENOTFOUND node.moneroworld.com node.moneroworld.com:18089
{ Error: getaddrinfo ENOTFOUND node.moneroworld.com node.moneroworld.com:18089
    at errnoException (dns.js:28:10)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:73:26)
  code: 'ENOTFOUND',
  errno: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'node.moneroworld.com',
  host: 'node.moneroworld.com',
  port: '18089' }

When I use another host:

const host = 'node.xmrbackb.one'
const port = '18081'

I get:

{ host: 'node.xmrbackb.one', port: '18081' }
error:Error: connect ETIMEDOUT 116.93.119.79:18081
{ Error: connect ETIMEDOUT 116.93.119.79:18081
    at Object.exports._errnoException (util.js:1034:11)
    at exports._exceptionWithHostPort (util.js:1057:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1096:14)
  code: 'ETIMEDOUT',
  errno: 'ETIMEDOUT',
  syscall: 'connect',
  address: '116.93.119.79',
  port: 18081 }

I can't event connect to a node. What am I missing?

I've found a solution, using monero-rpc-client library. When I use node.moneroworld.com:18089 as host, the code doesn't work. When ip is used instead everything is OK. The ip is taken from here.

const rpcClientClass = require('monero-rpc-client')
const nodeAddress = 'http://62.210.124.152:18089'
const rpcClient = new rpcClientClass(nodeAddress)
rpcClient.getBlockCount()
  .then(result => {
    console.log(result)
  })
  .catch(error => {
    console.log(error)
  })

Here's the result:

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "count": 1492683,
    "status": "OK"
  }
}


XMR Withdrawal issues Question about withdrawing xmr from exchanges to monero wallet. So, when I click on Receive within Monero official wallet, there is the receiving address, payment ID (16 symbols), and integrated address. However, various exchanges ask for different things and I'm not clear what is meant by those. Some exchanges ask for ''Unique description used to identify this [withdrawal] address'', while Bitfinex, for instance, ask for 64 character payment ID while Monero wallet gives only 16 character payment ID. What to do in each of these cases, what should I submit there for the tx to go through smoothly? Is there a to go resource for all of this? Will appreciate your help.

When you receive funds into your Monero wallet, Monero's privacy features mean that you cannot tell the wallet address of the sender.

Therefore if you have lots of people sending funds to you, you can ask people to identify themselves with a particular payment ID. Since you probably do not transact frequently, it will be obvious to you when the funds arrive from the exchange, so you do not need to provide them with a payment ID or any information other than your wallet address.


Adding misc text values onto the get_info page of a public node Public nodes have a get_info page like this: http://node.xmrbackb.one:28081/get_info
Is there a way to add in my own custom values? Say I wanted to add my monero address or an email to that list. How can this be done?

The only way to add custom values would be to edit the source code and recompile. There are however good reasons why such a feature is not made easily available - fingerprinting. In fact, quite the opposite feature exists, a way of restricting what get_info divulges (restricted mode).
As a node operator one should want to share as little information as possible and for what information is shared, should not have unnecessary distinguishing marks. Monero aims to limit the mistakes users can unwittingly make in this regard, for example the addition of restricted mode mentioned above and the removal of unencrypted payment IDs.


How do I install the Monero GUI on PureOS? Now that Purism accepts Monero payments through globee I am interested in using Monero on a Librem laptop which runs PureOS.

What are the installation steps (including necessary dependencies) required to install the official Monero GUI on PureOS?

PureOS is based on Debian, so you can follow the instructions on this page (follow the Ubuntu and Mint path):

https://github.com/monero-project/monero-gui

Install Monero dependencies
For Ubuntu and Mint

sudo apt install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev

Grab an up-to-date copy of the monero-gui repository

git clone https://github.com/monero-project/monero-gui.git

Go into the repository

cd monero-gui

Install the GUI Dependencies

For Ubuntu 16.04+ x64

sudo apt install qtbase5-dev qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtquick-xmllistmodel qttools5-dev-tools qml-module-qtquick-dialogs qml-module-qt-labs-settings libqt5qml-graphicaleffects

Optional : To build the flag WITH_SCANNER

For Ubuntu and Mint

sudo apt install qtmultimedia5-dev qml-module-qtmultimedia libzbar-dev

Build the GUI

For Ubuntu and Mint

./build.sh

The executable can be found in the build/release/bin folder.

Hope it helps!


Are there any fair strategies to dynamically adjust the transaction fee? As of writing this the transaction fees are 0.01 XMR per KB. This was a reasonable fee when Monero was worth less, however, if XMR retains it's new found value or continues to rise in value against BTC or USD that transaction fee could prevent some users from adopting or using Monero as a currency.

When fees are high it's likely less transactions will occur which may lead to less adoption.

Are there any fair ways to dynamically adjust the transaction fee per KB based on an algorithm? If not, how can they be adjusted on a more frequent basis than once every 6 months during a fork?

Dynamic fees currently do not exist yet and currently the fee is hardcoded at 0.01 XMR per KB. There is a lot of discussion on how to address this subject and core-team member ArticMine is looking into it. However, given that there is nothing concrete yet, it is not possible currently to answer your question.

One thing I've seen discussed is looking at the median blocksize as indicator of transaction volume. Intuitively, a higher median block size equates higher usage (transaction volume). In Bitcoin, as can be seen from here, the price is positively and strongly correlated with transaction volume. Therefore, this is one method that could work. However, it should be noted that the correlation in Monero is currently less strong than in Bitcoin. Although, this correlation will probably increase now that there is real-world demand for Monero (most notably darknetmarkets).


Force daemon to a specific hard fork version I want my node to stay on the v6 hard fork and reject all new blocks from later versions. Is there a command to force my node to stay on that specific hard fork version or do I need to compile and run an old version of the daemon?

You can just remove version 7 and 8 from the testnet fork table near the top of src/cryptonote_core/blockchain.cpp (the last two lines as of this time).
You will have to pop blocks first till v6 with the current binary (monero-blockchain-inmport --testnet --pop-blocks N), then make that change.


Reward penalty: how to control the block size? I understand that there is a penalty for large block sizes and the miner who finds a large block only gets a portion of the nominal reward.

But I fail to see how a miner, who just "packs" transactions in a block, can control the size of the blocks he or she mines.

As a miner, is there anything you can do to limit the size of the blocks you mine?

But I fail to see how a miner, who just "packs" transactions in a block, can control the size of the blocks he or she mines.

Exactly like that. You pack until you get to the target size. Then, you simply don't pack the rest of the queue and leave it for the next block. Or you swap low fee tx-es with ones with higher fee, still keeping the size below the limit. You can choose any packing strategy you want, as long as you're able to express it with code.

It's a dynamic process. Any change gives a different hash and could become the winning block if it hits the target. Then, you submit what you had and start with next one.


Laptop has to go to service center - delete GUI? my new laptop's battery is screwed and I have to take it back for a replacement - recently downloaded GUI and transferred a decent level of Monero into it.

Before taking to the service center should I delete the GUI or just rely on my password - yeah n00b question - but I really don't know who I should trust anymore, reading all this crypto stuff has made me paranoid!

Your password should keep it protected but its probably advisable to at least delete your wallet (found in "C:\Program Files\Monero wallet" I think) as a malicious person could still copy, and brute force it. Alternatively you could simply generate a wallet on a new machine, and transfer them.


Running monerod with --block-sync-size 10 syncs a lot faster, why? Running monerod 10.3.1 on a laptop with a Core i5, 8GB RAM and a DSL connection with 16 MBit downstream and it takes roughly 18 minutes (!!!) for synching 200 blocks when running in default mode (i.e. block sync size 200).

When running with --block-sync-size 10 it takes only 2 minutes to sync 200 blocks.

What's the reason behind this? Is there some effort that's superlinear in the block sync size? What are the tradeoffs? I.e. is a block sync size of 10 only recommended in setups similar to mine with moderate CPU and bandwidth?

Why was the default chosen to be 200?

A large block sync size is supposed to make things faster, as some lookups can be made once and reused. However, this uses more memory, and will be slower if it makes the OS start swapping monerod.

I don't know how 200 was chosen, but it was likely a good value for Tacotime, who added the code.

The upcoming release has the block sync size set to 100 prior to fork version 4, and 20 afterwards. This is based on circumstancial evidence, as there is a lack of systematic testing to determine which block sync sizes are better for which (CPU speed, internet speed, memory) confgurations.


How can I validate a cryptonight algorithm implementation? Is there an easy way to validate an implementation of the cryptonight hash function? I wrote an implementation just to explore the features of various hash functions, but I'd like to validate that I'm producing the same result as the core implementation.

The Monero blockchain is full of test cases: for every block, you can assemble the hashing blob for that block, hash it with your new implementation, and check the resulting hash is below the target for that block. This will be done automatically if you replace monerod's Cryptonight implementation with your own, and try to sync the chain from scratch.

Another way is to replace a pool miner's Cryptonight code with your own, and try to mine. For example, https://github.com/OhGodAPet/cpuminer-multi/


Cold wallet - got the 1 and L mixed up in private view key I just created a cold wallet on moneroaddress.org

I sent some Monero to the wallet.

I then tried to check the balance, which required my private view key.

It said view key was wrong. I am pretty sure I got the 1 and l in the key mixed up as the font is pretty much the exact same.

I have the 25 words, I have the spend key.

How can I recover the private view key?

THANKS

You can download and use the monero-wallet-cli to recover your wallet (and hence the keys) from your seed. See here

You can also use sites like this to generate the view key using seed or spend key. Although the site performs the operation locally (you can disconnect the internet when doing it) i still recommend against it for security reasons


Compiling CPU Multi Miner on OS X I've been trying to compile CPU Multiminer on OS X: https://github.com/wolf9466/cpuminer-multi

Has anyone gotten this to work?

Would be grateful if there was some instructions, I just can't get it to build!

goxed from bitcointalk  has a fork of that repo that fixed the clang issues and works for me on macOS10.12. Here's what I did to use it without the formula:

brew install automake autoconf libtool curl jansson
brew link curl --force
git clone git://github.com/goxed/cpuminer-multi;cd cpuminer-multi
./autogen.sh
perl ./nomacro.pl
./configure CFLAGS="-march=native -mtune=native -maes"
make

Edit: since the wolf9466 repo has seen a few changes since the goxed version was forked, I just tried making the same Makefile.am changes that goxed did to the current wolf9466 repo, and that also works.


onion-monero-blockchain-explorer together with Apache webserver I have installed onion-monero-blockchain-explorer and I am running website using Apache. Explorer listens on port 8081, but I would like to have it on standard www port 80(443) as virtualhost/subdomain. Is it possible? Is there a way how to have website and the explorer working together and reachable from restricted  proxy/work networks?

Thanks for your attention.

Not a Monero question, but the answer can be found in Apache documentation.

ProxyPass "/"  "http://www.example.com/"
ProxyPassReverse "/"  "http://www.example.com/"

Replacing www.example.com with 127.0.0.1:8081.


Newbie questions about XMRig Can one Monero wallet be used to receive results from XMRig installed on 20  (or more) computers?
Should the json file on each computer contain the same data?
May I use XMRig in Whonix?
What the best way to use XMRig anonymously?

Yes, you have to place your xmr address in the config, along with the pool address you chose.
Not necessarily, you could just keep the same address and pool, but other settings depends on your mining hardware
Yes, why not? it's just another debian based OS. you can edit the Cmake file to deal with your OS.
You could probably use it with tor or i2p by redirecting the traffic to it.


Error with transaction on the blockchain Today I experienced the strangest error while sending moneros from one wallet to another. So thought I would share and see if anyone knows what was the cause or could shed anymore light on it.

Sent coins to one of my wallets, everything was fine 'money successfully sent' showed on the terminal window, after 20mins coins didn't show up on recipient wallet but showing as spent from the sender.

After copping the transation hash I managed to find the transaction as well as confirming which block it was in...... Using tx key and view key I double checked that I didn't send it to the wrong address.

89 Confirmations later coins still not showing up at all, and about 100 confirmations and hour or so later the coins showed up but from a different block than the hash id that was given in the original transaction.

Not sure if I am just being stupied or what, anyone here have any ideas what this could be? ringct perhaps?

Thanks guys. Peach

Transactions IDs and block IDs are two different things, so it's not surprising that those are different.

Your transaction probably just took a lot of time to get added to a block. There's sometimes a glut of transactions waiting for inclusion, and the block size does not increase as readily as it should (which will be fixed soon), so that can mean some delay while the glut persists.


Node and mining in ARM device I have an "almost always idle" ARM home server (not a rPi, more powerful) and I was thinking running a monero node in it, plus maybe have it mine if possible/profitable.

For the node part, is the monero code compatible with ARM devices? Has anyone actually tried running a monero node in an ARM device?

For the mining part, I am thinking it might even be profitable because the device tops at 5W consumption plus it has working OpenGL and OpenCL drivers for its Mali GPU. Again, if I wanted to test the mining software, would it compile in an ARM device? has anyone actually tried it? What difficulties can I expect to get the integrated GPU to mine?

For the node part, is the monero code compatible with ARM devices?

Yes, there are even binaries for ARMv7, which can be found here. Alternatively, you could compile from master. From the pull requests to master, it is clear that the Monero developers are maintaining ARM support.

  Has anyone actually tried running a monero node in an ARM device?

Yes, a variety of people have ran Monero on a Raspberry Pi. For example, see here and here.

  Again, if I wanted to test the mining software, would it compile in an ARM device?

Bitmonerod (the daemon) has a solominer embedded. Thus, you can simply start solo mining if you are running a full node by entering the following command in bitmonerod:

start_mining <address> [<number_of_threads>]

Note that the optimal amount of threads is amount of cache available divided by 2. Thus, if you have 4 MB available, you should use 2 as number of threads.

  has anyone actually tried it?

Not entirely sure about that, but there have been some question on reddit about it. See here for example.

  What difficulties can I expect to get the integrated GPU to mine?

According to hyc mining on a 32bit OS is quite slow and inefficient. In addition, there are currently no optimizations for ARM64 yet.


Where can I find the "help set" of commands with examples for the monero cli wallet? Is there a page where I can see all the help set commands for the monero cli wallet?

Monero cli wallet output of the "help set" settings is below since its not found anywhere in cyberspace. Updated as of 2021-Jan-21.
Command usage:
  set <option> [<value>]

Command description:
  Available options:
   seed language
     Set the wallet's seed language.

   always-confirm-transfers <1|0>
     Whether to confirm unsplit txes.

   print-ring-members <1|0>
     Whether to print detailed information about ring members during confirmation.

   store-tx-info <1|0>
     Whether to store outgoing tx info (destination address, payment ID, tx secret key) for future reference.

   default-ring-size <n>
     Set the default ring size (obsolete).

   auto-refresh <1|0>
     Whether to automatically synchronize new blocks from the daemon.

   refresh-type <full|optimize-coinbase|no-coinbase|default>
     Set the wallet's refresh behaviour.

   priority [0|1|2|3|4]
     Set the fee to default/unimportant/normal/elevated/priority.

   confirm-missing-payment-id <1|0> (obsolete)
   ask-password <0|1|2   (or never|action|decrypt)>
     action: ask the password before many actions such as transfer, etc
     decrypt: same as action, but keeps the spend key encrypted in memory when not needed

   unit <monero|millinero|micronero|nanonero|piconero>
     Set the default monero (sub-)unit.

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

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

   merge-destinations <1|0>
     Whether to merge multiple payments to the same destination address.

   confirm-backlog <1|0>
     Whether to warn if there is transaction backlog.

   confirm-backlog-threshold [n]
     Set a threshold for confirm-backlog to only warn if the transaction backlog is greater than n blocks.

   confirm-export-overwrite <1|0>
     Whether to warn if the file to be exported already exists.

   refresh-from-block-height [n]
     Set the height before which to ignore blocks.

   auto-low-priority <1|0>
     Whether to automatically use the low priority fee level when it's safe to do so.

   segregate-pre-fork-outputs <1|0>
     Set this if you intend to spend outputs on both Monero AND a key reusing fork.

   key-reuse-mitigation2 <1|0>
     Set this if you are not sure whether you will spend on a key reusing Monero fork later.

   subaddress-lookahead <major>:<minor>
     Set the lookahead sizes for the subaddress hash table.

   segregation-height <n>
     Set to the height of a key reusing fork you want to use, 0 to use default.

   ignore-fractional-outputs <1|0>
     Whether to ignore fractional outputs that result in net loss when spending due to fee.

   ignore-outputs-above <amount>
     Ignore outputs of amount above this threshold when spending. Value 0 is translated to the maximum value (18 million) which disables this filter.

   ignore-outputs-below <amount>
     Ignore outputs of amount below this threshold when spending.

   track-uses <1|0>
     Whether to keep track of owned outputs uses.

   setup-background-mining <1|0>
     Whether to enable background mining. Set this to support the network and to get a chance to receive new monero.

   device-name <device_name[:device_spec]>
     Device name for hardware wallet.

   export-format <"binary"|"ascii">
     Save all exported files as binary (cannot be copied and pasted) or ascii (can be).

   persistent-rpc-client-id <1|0>
     Whether to keep using the same client id for RPC payment over wallet restarts.

   auto-mine-for-rpc-payment-threshold <float>
     Whether to automatically start mining for RPC payment if the daemon requires it.

   credits-target <unsigned int>
    The RPC payment credits balance to target (0 for default).

   inactivity-lock-timeout <unsigned int>
     How many seconds to wait before locking the wallet (0 to disable).


0 hashrate - issue when mining Monero with CPUminer Note: I know there are some answers out there like but none of them solved my problem. I  also tried installing other miners but none of them worked for me (and I want to mine with CPUminer)...

I've installed CPUminer to mine Monero on my Raspberry Pi 3B (CPU: ARM Cortex-A53 / ARMv8-A) with the following commands:

sudo apt-get update && sudo apt-get upgrade

sudo apt-get install autoconf libcurl4-openssl-dev libjansson-dev openssl libssl-dev gcc gawk

git clone https://github.com/lucasjones/cpuminer-multi.git

cd cpuminer-multi

sudo ./autogen.sh

sudo ./configure

sudo make

and ran it using:

minerd -a cryptonight -o stratum+tcp://xmr.pool.minergate.com:45700 -u myMiningAccount@gmail.com -p x

the pools address and port are correct. I get an output like:

[2018-06-30 17:56:08] Using JSON-RPC 2.0
[2018-06-30 17:56:08] CPU Supports AES-NI: NO
[2018-06-30 17:56:08] Starting Stratum on stratum+tcp://xmr.pool.minergate.com:45560
[2018-06-30 17:56:08] 4 miner threads started, using 'cryptonight' algorithm.
[2018-06-30 17:56:08] Binding thread 1 to cpu 1
[2018-06-30 17:56:08] Binding thread 2 to cpu 2
[2018-06-30 17:56:08] Binding thread 3 to cpu 3
[2018-06-30 17:56:08] Binding thread 0 to cpu 0
[2018-06-30 17:56:09] Pool set diff to 1063
[2018-06-30 17:56:09] Stratum detected new block
[2018-06-30 17:56:09] Stratum detected new block
[2018-06-30 17:56:09] thread 3: 0 hashes, 0.00 H/s
[2018-06-30 17:56:09] thread 0: 0 hashes, 0.00 H/s
[2018-06-30 17:56:09] thread 1: 0 hashes, 0.00 H/s
[2018-06-30 17:56:09] thread 2: 0 hashes, 0.00 H/s
[2018-06-30 17:56:39] thread 2: 0 hashes, 0.00 H/s
[2018-06-30 17:56:46] thread 1: 0 hashes, 0.00 H/s
[2018-06-30 17:56:57] thread 2: 0 hashes, 0.00 H/s
[2018-06-30 17:56:58] accepted: 0/1 (0.00%), 8.59 H/s at diff 1063 (booooo)
[2018-06-30 17:57:02] thread 0: 0 hashes, 0.00 H/s
[2018-06-30 17:57:03] thread 0: 0 hashes, 0.00 H/s
[2018-06-30 17:57:04] accepted: 0/2 (0.00%), 8.63 H/s at diff 1063 (booooo)
[2018-06-30 17:57:05] thread 3: 0 hashes, 0.00 H/s
[2018-06-30 17:57:45] thread 1: 0 hashes, 0.00 H/s
[2018-06-30 17:57:58] thread 0: 0 hashes, 0.00 H/s
[2018-06-30 17:57:58] thread 1: 0 hashes, 0.00 H/s
[2018-06-30 17:57:59] accepted: 0/3 (0.00%), 9.08 H/s at diff 1063 (booooo)
[2018-06-30 17:58:01] thread 2: 0 hashes, 0.00 H/s
[2018-06-30 17:58:05] thread 3: 0 hashes, 0.00 H/s
[2018-06-30 17:58:26] Pool set diff to 500
[2018-06-30 17:58:26] Stratum detected new block
[2018-06-30 17:58:26] thread 2: 0 hashes, 0.00 H/s
[2018-06-30 17:58:26] thread 3: 0 hashes, 0.00 H/s
[2018-06-30 17:58:26] thread 0: 0 hashes, 0.00 H/s
[2018-06-30 17:58:27] thread 1: 0 hashes, 0.00 H/s
[2018-06-30 17:58:59] thread 2: 0 hashes, 0.00 H/s
[2018-06-30 17:59:00] accepted: 0/4 (0.00%), 8.26 H/s at diff 500 (booooo)
[2018-06-30 17:59:16] Stratum detected new block
[2018-06-30 17:59:16] thread 2: 0 hashes, 0.00 H/s
[2018-06-30 17:59:16] thread 1: 0 hashes, 0.00 H/s
[2018-06-30 17:59:16] thread 3: 0 hashes, 0.00 H/s
[2018-06-30 17:59:16] thread 0: 0 hashes, 0.00 H/s
[2018-06-30 17:59:21] thread 3: 0 hashes, 0.00 H/s
[2018-06-30 17:59:21] accepted: 0/5 (0.00%), 7.75 H/s at diff 500 (booooo)

full output here

as you can see, my hashes won't be accepted as well... I am really frustrated of not seeing any results...

I think I've done something wrong during compiling (probably compiled for the wrong cpu architecture...) and need to set CFLAGS but I have no idea how to do so...

Has anyone experience with crypto currencies on the raspberry pi? Please help me solving this issue!

If anything is unclear please tell me.. I need this thing solved!

Any help would be very appreciated!Thanks in advance,Philipp

You are using a 3-4 year old miner.  The mining/hashing algo was changed in April (May?)  You are using the old and incorrect miner, thus bad shares.

Try:
https://github.com/fireice-uk/xmr-stak/

(oh and minergate is a pool with a bad rep for scamming/stealing hashes, from what I've read.)
Quick update:  I couldn't get xmr-stak to compile easy enough.  but got xmrig to compile on a Raspberry Pi3 & and Orange Pi Zero.  Getting accepted hashes/shares.

apt-get install -y git build-essential cmake libuv1-dev libmicrohttpd-dev
git clone https://github.com/xmrig/xmrig.git
cd xmrig
mkdir build
cd build
cmake ..
make


What is miner_tx_hash? I am trying to figure out the Daemon RPC API.

Requesting a block with get_block(), the block header has a field miner_tx_hash.

The block also contains a JSON field miner_tx, which contains the coinbase transaction input "gen" and a single matching output. This I understand.

If I use get_transactions() with the value of miner_tx_hash, it seems to find a transaction, but this transaction seems quite different from miner_tx embedded in the block. The one I get from get_transactions() has many more inputs and outputs etc.

Also, I thought there would be a single miner_tx_hash value in a block, but there seem to be multiple.

Currently, there is no mention of miner_tx_hash as a field in any of the methods in the API docs. If you search the page, some example outputs contain it but no explanation.

So what exactly the miner_tx_hash field in the block, and what is its relation to the miner_tx and other transactions in the block?

So what exactly the miner_tx_hash field in the block, and what is its relation to the miner_tx and other transactions in the block?

miner_tx_hash is just that - the transaction hash of the miner transaction. The miner transaction is the transaction that pays out the reward for mining the block. The inputs to this tx are type gen as they literally generate new Monero.

  If I use get_transactions() with the value of miner_tx_hash, it seems to find a transaction, but this transaction seems quite different from miner_tx embedded in the block. The one I get from get_transactions() has many more inputs and outputs etc.

Perhaps you are calling or parsing incorrectly. Here is a concrete example using testnet:

curl -d '{"jsonrpc":"2.0","id":"0","method":"get_block","params":{"height":1234567}}' \
  http://localhost:28081/json_rpc \
  | jq .result.block_header.miner_tx_hash

Extracts the miner tx hash: c37d119798660baed9ee62b3fc7323f98487b2e9c6a155be843e238e31fdb415

And:

curl -d '{"jsonrpc":"2.0","id":"0","method":"get_block","params":{"height":1234567}}' \
  http://localhost:28081/json_rpc \
  | jq .result.json | jq -r | jq .miner_tx

Will extract the miner tx (form the same result, get_block with height 1234567):

{
  "version": 2,
  "unlock_time": 1234627,
  "vin": [
    {
      "gen": {
        "height": 1234567
      }
    }
  ],
  "vout": [
    {
      "amount": 6059550665332,
      "target": {
        "key": "81fb44f0bbd9e38e467461aed50ded48f2301ee0b0d553a1d0bc5a8a07cd0263"
      }
    }
  ],
  "extra": [
    1, ..., 78
  ],
  "rct_signatures": {
    "type": 0
  }
}

Now using get_transactions with the miner tx hash obtained above:

curl -d '{"txs_hashes":["c37d119798660baed9ee62b3fc7323f98487b2e9c6a155be843e238e31fdb415"],"decode_as_json":true}' \
  http://localhost:28081/get_transactions \
  | jq .txs[0].as_json | jq -r

Yields:

{
  "version": 2,
  "unlock_time": 1234627,
  "vin": [ {
      "gen": {
        "height": 1234567
      }
    }
  ],
  "vout": [ {
      "amount": 6059550665332,
      "target": {
        "key": "81fb44f0bbd9e38e467461aed50ded48f2301ee0b0d553a1d0bc5a8a07cd0263"
      }
    }
  ],
  "extra": [ 1, ..., 78
  ],
  "rct_signatures": {
    "type": 0
  }
}

Identical.


Error building on Windows 10 One thing I enjoy about open source projects is that you can build from source. I enjoy doing it with other coins and with miners. However with Monero I am having error after error. I am unsure if I am doing something wrong. I am following the steps on the Monero GitHub and the build is failing at 90%. I even tried it on a fresh Windows install and am having the same issue. The first issue is the instructions expect you to clone with git. MYSYS2 doesn't have that as an option as git is not installed. I got around this by following another guide to install git in MYSYS2. Here is a link to my CMake Error Log if that helps. https://docdro.id/fvlIh9Q Any help with this issue would be appreciated.

Edit: I have added the console output from the failed build here https://docdro.id/cbURFJn.

Edit: I finally got it to build fully but none of the exe files open.  They attempt to open then close right away.

Figured it out.  The issue was because of the new version of GCC.  There is a fix for the issue in the newest CMake file but I was building the latest release so I just needed to manually apply the fix.  https://github.com/monero-project/monero/pull/4290/commits/2bc977bab9b9a2fa97e034357606270804a3e0df


What Happens When a Miner Doesn't Reach Minimum Payment Threshold? I recently made my own monero pool. While setting up the minimum payment threshold I thought:
What happens when a miner doesn't reach the required XMR Balance?
It might seem like a simple question but the miner did submit some shares to the pool. When the pool finds a new block it needs to reward all miners based on how many shares each one submitted. When paying out does it take into account the shares of miners that didn't reach the required balance? My guess would be that it takes into account all the shares, pays out the miners that reached the minimum payment threshold and keeps the excess XMR until other miners reach the required balance and then pays them out as well.

When a block is found, the block reward is divided among the miners, pro rata with the difficulty weighted shares they submitted for this block. This is done by the pool software's own accounting, not on chain.

On chain transactions only happen when a miner's pending balance reaches the payment threshold. At that point, some amount (based on the denomination set in the pool's configuration) is sent to the miner, and any remnant is kept in the miner's pending balance.

This pending balance is not per block: it is permanent, and a miner mines to it, block after block. Therefore, if a miner's share of a given block is below the payout threshold, the balance (in the pool's accounting) increases by that small amount, and counts for future blocks. This means that small miners will get paid something every N blocks found, while large miners may be paid something every block found.


Digest authentication with monero-wallet-rpc I started monero-wallet-rpc on a remote server (with login and password):

./monero-wallet-rpc --rpc-bind-port 18082 --wallet-dir ./wallets_test  --rpc-login test:test --testnet  --daemon-host node.xmr.to

Then I try to connect to it through node.js

But I receive an error:

<title>Unauthorized Access</title>
401 Unauthorized

However, when I start monero-wallet-rpc on 127.0.0.1 with same login and password it works just fine:

{ id: '0', jsonrpc: '2.0', result: {} }

P.S.
When I use curl it works fine with both (remote and local) servers:

IP=127.0.0.1
PORT=18082
METHOD="create_wallet"
PARAMS="{\"filename\":\"test123\",\"language\": \"English\", \"password\":\"\"}"
curl \
    -u ddd:ddd --digest \
    -X POST http://$IP:$PORT/json_rpc \
    -d '{"jsonrpc":"2.0","id":"0","method":"'$METHOD'","params":'"$PARAMS"'}' \
    -H 'Content-Type: application/json'

Nodejs request example:

const request = require("request");

request.post(
  "http://127.0.0.1:18082/json_rpc",
  {
    forever: true,
    json: {
      jsonrpc: "2.0",
      id: "0",
      method: "create_wallet",
      params: { filename: "megatest123", password: "", language: "English" }
    },
    auth: {
      user: "test",
      pass: "test",
      sendImmediately: false
    }
  },
  function(err, res, body) {
    console.log(body);
  }
);

What can be the reason of such weird behaviour?

Well there seems to be quite a few open issues using that particular nodejs library with digest auth. I suggest using another library. The fact it works with curl proves this is not a Monero issue.


What is the structure of the .raw exported blockchain file like? The monero-blockchain-export tool allows one to export the blockchain as a .raw file. My question is, what does the structure of the file like, and what are some of the tools that can be used to interact with it and explore the data? Pardon my naiveté, but .raw file formats usually refer to photographic files, so what kind of tools would open a .raw file that is not a photo?

It's just a binary (raw) version of the blockchain that can be imported using monero-blockchain-import. To my knowledge the only tool that can read this file is monero-blockchain-import.

The file extension is immaterial.


Overview of what happens when I run monerod diff Just curious if there's some calculation that happens or what exactly because when I ran it on my machine it froze for a solid minute before giving me the difficulty....froze the whole machine nothing would respond. One thing to note is that monerod hadn't been running for but maybe 15 seconds before I ran ./monderod diff.

**Edit - I've since found that the freezing I experienced was due to my graphics driver.

I may be wrong but I assume this is the code initialized when you run "diff" in monerod.

  uint64_t now = time(NULL);

  uint64_t diff = ts > now ? ts - now : now - ts;

  if (diff > 24*3600)

    strftime(buffer, sizeof(buffer), "%Y-%m-%d", &tm);

  else

    strftime(buffer, sizeof(buffer), "%I:%M:%S %p", &tm);

  return std::string(buffer);
}


How hard is it to create a monero wallet site? There aren't a lot of monero based sites around, and I think there is a lot of opportunity, but I don't really know much about implementing crytocurrency into a website. I figured I might try to start by creating a wallet site, but I wanted to ask if anyone could provide any insight onto the difficulty of that? I may be way in over my head but I'm not sure.

It would be moderately easy to get a working wallet site provided you know some basic programming (python, php, node.js) and a little about web server usage (linux!).

You just need to run a full node on your server, create a wallet, then write some code which checks for payments, makes payments etc. See wallet-RPC for some guidance on this.

As already mentioned, the challenge here would be to implement these things securely/reliably. Making something like this for public use is not recommended unless you know exactly what you are doing. Just imagine if all your users monero was stolen or lost - you'll certainly end up in hot water.

You're right though that there is a lot of opportunity in this space. I encourage you to at least experiment with your idea (i.e get a full node working on your server and programmatically check your balance). Its the best way to learn and from there you'll have a better feeling of what you can do with this technology.


Is Nvidia GPU mining software available for OSX? Title says it all... I am looking for an Nvidia GPU miner for OSX. I've got a 2012 MBP i7 with Nvidia 650m, would prefer to mine without using Windows or Linux.

You might use Tsiv's miner here: https://github.com/tsiv/ccminer-cryptonight/releases but you will have to build it from source. I don't see any OSX binaries available.


You may well have 10 cores (or 20 threads), but you only have enough cache for 5 threads to mine, and your output is only showing 3 threads mining.


I have a private key for a monero address. Which application lets me load in a custom private key to spend from? If I have a monero private key, how can I spend from it? Which program lets me import this key and spend from it?

Both the official CLI and GUI will allow you to restore a wallet from keys. In order to import a wallet from keys you need (i) the private spend key, (ii) the private view key, and (iii) the public address. Note that in the current implementation the private spend key is deterministic. Thus, if you only have the private spend key, you can easily "derive" the private view key and public address from it. There are tools out there that will streamline this process for you. For example, there is this tool from core-team member luigi1111. You can use either the addressgen or addresstests page to generate the private viewkey and public address from the private spendkey. In addition, for security reasons, it's generally advised to use these pages offline.

To actually restore a wallet from keys, you have to add the following flag to monero-wallet-cli:

--generate-from-keys <new-wallet-name>

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 --generate-from-keys <new-wallet-name>

On Linux and Mac OS X you should use the terminal to launch monero-wallet-cli. Note that this has to be done from the directory monero-wallet-cli is located in. The command is as follows:

./monero-wallet-cli --generate-from-keys <new-wallet-name>

For the GUI, it's fairly straightforward, as the wizard will provide you with an option to restore from keys.


Can a DEX like bisq.network profit from Kovri? Right now the only decentralized exchange for cryptocurrencies is bisq.network. It is based on TOR.

As far as I understand it, Kovri is a better way to obfuscate network analysis.

Is it possible for bisq to switch to kovri? What would be the advantages? Are there drawbacks?

The approach of network traffic obfuscation is quite similar in both projects, however there are some major differences.

TOR is used by a vast majority of users as a proxy service for the clearnet, what we commonly call "internet" but only a small percentage of users are acting as nodes actually relaying traffic for others.

I2P on which Kovri is based has a different approach and is not designed to proxy clearnet traffic but to build a really decentralised network of equal nodes which all act as relays by default.

In general, TOR is more centralised, since comparatively few strong nodes with good connectivity are relaying most of the traffic. This is even more valid for "exit" nodes to the internet, since many relays don't want to act as such for security or legal reasons. An attacker might setup many of these strong nodes to control a major chunk of all relayed traffic and log its activity on the network to determine where it actually comes from and where it goes to.

These aspects disappear for I2P network since there are no "exit" nodes and for any node it is not distinguishable if the current traffic it relays (which is encrypted) is intended for the node it is actually communicating or if it is just another relay. Every single user / node makes the network stronger against attacks aiming to overtake the network and log its traffic.

Summing up probably it would benefit decentralised exchanges to choose I2P over TOR and it would also benefit the I2P network, since TOR (at least in terms of users) is probably more popular. However, when it comes to relaying nodes it probably is not.


How does Monero's transaction fees change according to price? I understand that Monero uses high xmr/KB fees in order to prevent blockchain bloat, like what happened in the '2014 hack'. If I understand correctly though, Monero will decrease the transaction fees if the price in fiat goes up; as to pose the same high costs in terms of fiat so there can be some form of protection to prevent blocks from being bloated like crazy by malicious intent.

So how will Monero implement dynamic fees exactly, or do dynamic fees already exist? How would they work exactly in terms of continually changing and keeping up to date? Do transaction fees change every hard fork, or do they continually change according to the current price? Is/would the price be in USD, EUR, BTC, or any other currency/KB?

Monero's fees are not dependent on price. They are based on the size of the transaction (minimum 0.002 Monero per kB, rounded up).

There is some research going on about making the fees dynamic, based on directly observable quantities such as transaction rate, but this isn't anything firm yet.

Monero price is inherently foreign from the blockchain, and as such it is difficult to have an automated consensus system which takes it into account. It may be vulnerable to Sybil attacks, and attackers paying miners to lie about the current exchange rate.

For at least the near future, fees are expected to be changed "manually" by the dev team, if the price of Monero stays for enough time at a level which makes transaction fees too expensive, or too cheap (yes, it's pretty subjective, and it will be that way until a non gameable automated way is worked out).


Is it normal for the disk activity to be so high while running monerod? Mine runs at 99% most of the time.

If the blockchain is behind and synchronizing, then definitely. When it is fully synchronized, the usage should drop to 0-10%, even on a HDD.


Base58 prefix, network id and wallet address prefix The question NetworkByte for Monero Stagenet gave me the impression that, there's a relation between ADDRESS_BASE58_PREFIX and NETWORK_ID, defined in src/cryptonote_config.h

If it is so, I can't find it. Anyone care to elaborate?

And how is it related to the public address prefix?

NETWORK_ID is a 16 byte identifier that allows Monero nodes to identify themselves to other nodes, in order to prevent different Monero networks (e.g. mainnet vs stagenet) from accidentally talking to each other. It has nothing directly to do with wallet addresses, although there are different wallet address prefixes designed for use on different networks.

The web site you've linked to uses the the separate term "Network Byte", and shows the hex representations of what src/cryptonote_config.h defines using decimal numbers instead.

E.g. a network byte of 0x12 in hex is the number 18 in decimal, which is why the web site you've linked defaults to the value 12 and the cryptonote_config.h defines the value as CRYPTONOTE_PUBLIC_ADDRESS_BASE58_PREFIX = 18;


Wallet Creation Height Upon creating a wallet in the GUI. At what point does the wallet.cpp scan the BC to get a creation height?. My wallet creation height seems to be different completely to the actual blockchain height.

It is normally the current blockchain height. Do you see a different behavior? How do you tell it's not the blockchain height from wallet creation time?


For the CLI wallet, how can I teach myself all that it can do? Monero has motivated me to get interested in Linux.  I'm relatively inexperienced with Linux.  To those more experienced, this question may seem like a silly one.  I expect I'm not the only Linux n00b (well, CLI n00b), so I hope this question helps many people.

I've managed to install Monero on Ubuntu a few times now.  Once I get it installed, I only know that ./monerod (formerly ./bitmonerod) will make the daemon run.  Once it's running, I can type --help for a list of commands.  Similarly, I can get monero-wallet-cli (formerly, simplewallet) running, and I can run --help there too for its commands.  My knowledge pretty much ends there.  But I know there is much more that those two programs can do.

For example, I've asked on IRC chat whether I can run a node on one computer that I always keep on, and then run the wallet from another computer that only refreshes itself from my personal node.  The IRC fellow mentioned adding commands like --rpc-bind-ip and --daemon-host.  Are those commands listed somewhere?  Where do I find the full list?

I hope a question so basic will help lots of people in my shoes that want to get their hands dirty, but are missing some [probably pretty elementary] tools.

Utilise the "flag" --help to see additional options regarding the software. i.e './monerod --help'


How to upgrade Linux Monero to 0.10.3.1? What is the best way to update to the newest version of Monero on Linux?

I would like to do so without downloading the blockchain again or typing the private key in.

Also, I was curious how you find your current version of Monero through the command line?

Whether you're on Linux or macOS, I personally think the most elegant way to install or upgrade the CLI software is using this method, by storing the binaries in /opt/monero, as one would typically do with optional software outside the packaging system on UNIX-like systems.
Make sure to cleanly shut down the previous version of the monerod daemon, using just the exit parameter. See also this question. The blockchain LMDB database stays within ~/.bitmonero and will be picked up by the new version where you left it with the old version. As an extra precaution prior to starting up the new version of the daemon, you could optionally either export the blockchain to a file (using monero-blockchain-export), or make a (recursive) copy of the ~/.bitmonero folder. The latter will be faster to put it back in case something broke your blockchain …
When you add --version to either the monero-wallet-cli or monerod command, it will print the version, e.g.: Monero 'Wolfram Warptangent' (v0.10.3.1-release)


How to create a view-only wallet for the GUI? Say I have a cold storage wallet, is there any way I can make a view only wallet with GUI?

The GUI can now create view only wallets. I've not used the GUI in a while, so I'm unable to give detailed steps, however. Please someone who knows post an answer :) See JollyMort's answer below, I can't delete an accepted answer.

Original answer is now obsolete, as pointed out below:

The GUI does not support view only wallets yet.

However, if you don't really care about having a correct balance, and just want to see incoming transfers (ie, not see spends), you should be able to load a view only wallet made by monero-wallet-cli into the GUI. There may be glitches.


What's the purpose of Kovri? Obviously the literal purpose of Kovri is to hide the IP address associated with Monero network activity, but what does this achieve in the sense of improving the anonymity of transactions?

I could see the anonymity benefit of decoupling one's IP address from one's addresses if stealth addresses were not a thing. If that was the case, and all inputs (including decoys) came from a single address per wallet, it would be possible for a sufficiently powerful adversary to inject a large number of nodes into the network, associate each new transaction with the first IP found to broadcast it, and then associate this IP to an address by taking the set of all transactions believed to have originated at that IP and finding the most commonly referenced address among that set. Non-full nodes that connect to one of the adversary's Sybil nodes could also be identified this way. This attack would unveil the true "sent from" address in monitored transactions, and allow this address to be filtered as a decoy from any transactions not successfully monitored in this way. Kovri would serve as a defense against this attack, as you could no longer associate an IP address with a transaction broadcast.

Stealth addresses would seem to have already resolved this issue though. As each transaction sends Monero to a completely different address and stealth addresses are not linkable (barring a breakthrough in cryptography), it seems like it would be highly unlikely that you would ever see the same address appearing in the blockchain twice as a real input. As a result, the heuristic of "the address most commonly seen in transactions broadcast from this IP is the address used by the person at this IP" breaks down.

I guess using Kovri hides the fact that you're using Monero, but it just replaces "is using Monero" with "is using I2P," which seems equally suspicious from the perspective of someone operating in an adversarial local network.

Am I missing something here? I'm sure there's a very good reason for Kovri to be implemented, it's just that from the perspective of transaction anonymity I can't see it. Please correct me if I'm wrong.

Firstly, Kovri is an abandoned i2p router implementation. There are plenty of other actively developed i2p routers (such as i2p-zero), all of which can be configured to work with Monero via the various Anonymity Network options.

Second, when discussing anonymity of transactions, there are multiple threat models that need considering. By default, Monero transactions on the blockchain hide the sender and recipient wallet addresses and the transaction amounts. However, this alone does not cover all possible threat models. A simple example could be a regime that outlaws cryptocurrencies. Simply running a node then becomes a threat. One also needs to consider various deanonimization attacks. If a vendor/exchange/ISP is coerced or compromised, transactions could be linked to IP addresses, and IP addresses link to actual identities via the network providers.

This is why it's soo important to consider all possible places that data can be leaked and all types of adversaries. Hiding the sender and receiver wallet addresses and the transaction amounts from the publicly visible blockchain covers some threat models, but not all.

What tor/i2p aim to do is hide network usage. If a transaction is broadcast over i2p/tor, it's considerably harder to tie that transaction to an IP address and thus a real world identity.

It's also worth noting that tor/i2p are not silver-bullets here, which is why other techniques have also been under development, such as adding network "noise" and some kind of Dandelion++ implementation.


What are MLSAGs, and what is their significance for Monero and/or RingCT? I've seen MLSAG mentioned in a couple places.  I believe it has to do with the "signature" part of "ring signature," but I'm otherwise clueless.  Can anyone provide more information?

MLSAG is an acronym for "Multilayered Linkable Spontaneous Anonymous Group". The MLSAG signatures are the type of signatures used by Shen Noether's Ring Confidential Transactions [1], based upon Gregory Maxwell's Confidential Transactions [2] and Nicolas van Saberhagen's Ring Signatures [3].

[1] https://lab.getmonero.org/pubs/MRL-0005.pdf
[2] https://people.xiph.org/~greg/confidential_values.txt
[3] https://cryptonote.org/whitepaper.pdf


Wanna Use this library for a small project Hope someones here, I wanna ask if what are the parameters in this code, in line 315:

void cryptonight_hash(void* output, const void* input, const int aes_ni_supported) {
    struct cryptonight_ctx *ctx = (struct cryptonight_ctx*)malloc(sizeof(struct cryptonight_ctx));

    if (aes_ni_supported) {
        cryptonight_hash_ctx_aes_ni(output, input, 76, ctx);
    }
    else
    {
        cryptonight_hash_ctx(output, input, 76, ctx);
    }
    free(ctx);
}

What is the input and output parameter, I havn't read that on my journey here. How do I form a code to get it? where did it came from?

input is the block data you want to hash.

output is where the resulting hash will be stored.

aes_ni_supported is a flag to indicate whether the machine running the code has a processor with AES-NI support.


Alert when transaction received in wallet Is there a way to receive an alert if a transaction is received into my wallet (i.e. if I receive moneroj)?

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

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


Is Monero Project goal to use Darknet Markets? Is the anonymous usage of Darknet Markets (DNMs) the goal of Monero developers?

No, it is just a possible usage that Monero developers neither promote nor advise against.
As written by fluffyponyza:

From the very earliest days of Monero's existence we've been quite insistent on not writing any use-cases for Monero. Our baseline use-case for Monero is somebody purchasing something, like a religious text, that puts their lives at risk due to it being banned by the government. If we treat every Monero user's privacy as just as important as that hypothetical person, we will be able to successfully improve Monero's privacy and protect all its users.
Of course, a tool that provides that level of privacy can also be used for all manner of purposes, both amazing and nefarious, both legal and illegal, both innocent and far-less-so. Let me be as clear as possible: our focus is, and always will be, on building out and enhancing Monero and all its tools, regardless of the use-cases of individual users.


Can a pool keep blocks for itself without giving out rewards to miners? Can a pool keep blocks for itself without giving out rewards to miners? Can it do this in secret?

Yes. This is one of a few problems with current pool implementations.

Miners are trusting pools to:

give miners their fair share of any blocks the pool mines
payout on all blocks mined
not censor transactions
give miners hashing blobs for the main chain they want to mine
not be performing a 51% attack
display accurate information about the pool (e.g. its hashrate, payouts, etc)


Does Monero network difficulty affect the amount of XMR I get from a pool? Does Monero network difficulty affect the amount of XMR I get from a pool?
I used a calculation from one of the previous questions:
((your hashrate) / (the network hashrate)) * (720 blocks per day) * (block reward) = XMR/day

Now I'm interested in the importance of network difficulty.

Difficulty is the same as network hash rate, but expressed differently.


What alternative cryptography could be used in the future to protect Monero against quantum computers? I know most cryptography Monero uses relies mostly on EC crypto which would be easily broken by a quantum computer powerful enough. What options does Monero have in the future to protect itself?

Hash functions are not (as) vulnerable to attacks made possible by the existence of quantum computers, as the quickest way to break a hash function is via Grover's algorithm, which provides "only" a quadratic speedup, unlike other quantum algorithms, which can provide exponential speedup over their classical counterparts.

So if you never reveal your public key until you spend all the money from that address, and reveal only the address, you might be okay, as address -> public key would require inverting a hash, which we can assume is still difficult.

Signatures such as edDSA would be broken though, so Monero would probably be best moving to hash-based signature such as Lamport signatures, so that an attacker with a quantum computer can't calculate your private key from your public key/signature and then attempt to double spend your coins.


How can we make Monero based eCommerce payment integration? If we want to make Monero based eCommerce websites, what is the process? how do we integrate Monero into the website so a seller can set a price for the product and buyer can pay in Monero and get the product, for both immediate and escrow based?

You will have to have some code or product that is able to determine when a monero payment has been received at your merchant address, and compare it to the payment id (or integrated address) your ecommerce system generates.

There are two easy approaches:

Use a 3rd party merchant solution
Run your own wallet live on your server to scan for incoming transactions

Number one is easy, but does require you to rely on a 3rd party. You may be sacrificing some privacy or reliability, but these are pretty easy to work with. From getmonero.org has a list of merchant info, including payment processors:

https://getmonero.org/getting-started/merchants

At this time, there are two publicly known services to help:

https://payb.ee/
https://monero-merchants.com/

PayBee is in beta, and requires a beta signup. I don't have details on their API or how to use it.

Monero Merchants appears to be an open API that does not require an account or API keys. You will need a developer to help write some of the code, but it should be very easy to set up. Your website just tells the merchant API how much monero you need and what address you want it deposited into. They respond with a different monero address and payment id for your customers to send monero into. Your website can then check to see if the monero has been received. They collect the monero in a wallet they control (that you can't see) and will then transfer it to your account.

If you need more control or privacy (so a third party isn't involved) you will need to run a wallet live on your servers to scan for incoming transactions to your wallet address. There are libraries available for a developer to integrate with your website, although it requires an ecommerce platform that can accomodate custom code. You can see a list of libraries at https://getmonero.org/getting-started/merchants in the "Libraries and Helpers" section.

One such library is https://github.com/PsychicCat/monero-php which is a php library that will communicate with a monero wallet via RPC and is a good starting place if you need something custom.


How to query the memory pool? Block explorer explorer.xmr.my shows the contents of the memory pool. Does monerod, monero-wallet-cli or another CLI utility allow to query the Monero's memory pool? If so, how?

monerod has a get_transaction_pool RPC call:

curl -X POST http://127.0.0.1:18081/get_transaction_pool -d '{}' -H 'Content-Type: application/json'

This will return the current state of the tx pool. Each transaction in the pool has this information:

    std::string id_hash;
    std::string tx_json; // TODO - expose this data directly
    uint64_t blob_size;
    uint64_t fee;
    std::string max_used_block_id_hash;
    uint64_t max_used_block_height;
    bool kept_by_block;
    uint64_t last_failed_height;
    std::string last_failed_id_hash;
    uint64_t receive_time;
    bool relayed;
    uint64_t last_relayed_time;

monero-wallet-cli has a get_transfers RPC call. This can be configured to return transactions in the pool going to the wallet, by setting "pool" to true:

curl -X POST http://127.0.0.1:1234/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_transfers","params":{"in":false,"out":true,"pending":false,"failed":false,"pool":true,"min_height":735000,"max_height":1000000,"filter_by_height":true}}' -H 'Content-Type: application/json'

This will return this information for every transaction:

      std::string txid;
      std::string payment_id;
      uint64_t height;
      uint64_t timestamp;
      uint64_t amount;
      uint64_t fee;
      std::string note;
      std::list<transfer_destination> destinations;

Note that some information may or may not be present. For example, destinations is not known for incoming transactions (sush as those incoming transactions found in the pool).


As in my post to MRL Issue #6, I now figured out what pseudoOuts mean. Assuming the outPk means the output commitments, what I'd like to know (assuming the ring signature is valid), would be to see the following hold:

sum_j{pseudoOuts[j]} = sum_i{outPk[i]} + fee*H

What I'm missing in Luigi's JS code is a way to get fee*H.

Edit:
Luigi kindly answered my question!
Here's the full JS code you can try at: https://xmr.llcoins.net/

> var H = ge_scalarmult(cn_fast_hash(ge_scalarmult_base("0100000000000000000000000000000000000000000000000000000000000000")), "0800000000000000000000000000000000000000000000000000000000000000");
undefined
> H
"8b655970153799af2aeadc9ff1add0ea6c7251d54154cfa92c173a0dd39c1f94"
> var fee = swapEndian(d2h256("30000000000"));
undefined
> fee
"00AC23FC06000000000000000000000000000000000000000000000000000000"
> var feeH = ge_scalarmult(H, fee);
undefined
> feeH
"527e4c0b6e34f948fb59ab014ec8eedf9eccfda4930a0b30d12790a0ec0d91f2"
> var pseudoOuts = [ "276f03ba8c7852cb545830f7fedcdcd08789675d2a6c265bea236d0de90f6b11", "c611cc551db3b05ad6e5dba4ce89a8eeeb18317d8b565031941e98b6b9b8db4f", "8a088f1ccd11dd1633a663538faa9cb18c157b4fd37c421697a6356b4d7a98f6", "9e1238add1c1a4712904e5d5d8913482dcd6d31af166bc73918fd8148a42f22b"];
undefined
> var outPk = [ "f9cabc6b0fd32822feb3e13c70b54b2cdc2a3ce7c88ac661c29ab20732e2974f", "cfb010382648e11d7d5744fe8051c8606f31c901f9ede5b7e392f73790f9e7f8"]
undefined
> var sumIn = ge_add(ge_add(ge_add(pseudoOuts[0], pseudoOuts[1]), pseudoOuts[2]), pseudoOuts[3]);
undefined
> var sumOut = ge_add(ge_add(outPk[0], outPk[1]), feeH);
undefined
> sumIn
"a340fb56b64d831d4f06079f1fc4d507a7a2d1b0107ea7814c626c7394190da6"
> sumOut
"a340fb56b64d831d4f06079f1fc4d507a7a2d1b0107ea7814c626c7394190da6"


How does a Monero pool confirm/reject a submitted nonce? I'm trying to get a handle on how the protocol works between Monero miners and pools.  Although I've looked at Stratum, the rules seem slightly different with Monero mining.  For example, I'm using a CryptoNoter tool (derived from Coinhive) and when it subits a share to the pool the request looks like the below

{"type":"submit", "params":{"job_id":"966964311173375", "nonce":"9be9fff4", "result":"40ff373cd53535952c5b195f5fafeaeb632ed5742fc6ad426d083f4bd7290200"}

I got the following response from the pool with reference to what I sent ...

{"type":"hash_accepted","params":{"hashes":1}

What exactly does the above mean?  I see "hash_accepted" so I'm thinking it means teh pool accepted my submission?  If so, what does "hashes" mean?  If not, what does the above response mean?

The hash_accepted field is the response from the proxy server for when a hash is acknowledged by the server the hashes field is the number of hashes the worker has submitted in the past.

When the server gets a new connection it sets it up like so:

var conn = {
    uid: null,
    pid: crypto.randomBytes(12).toString("hex"),
    workerId: null,
    found: 0,
    accepted: 0,
    ws: ws,
    pl: new net.Socket(),
}

This creates a variable called accepted and set to 0. now when a valid share is called this snippet of code is called which increments the accepted hashes and responds to the client:

conn.accepted++;
buf = {
    "type": "hash_accepted",
    "params": {
        "hashes": conn.accepted
     }
}

These code snippets are pulled from the server.js file on the CryptoNoter Github page, found here


Using crypto library from wallet I'm trying to access functions from the crypto libray such as:
ge_frombytes_vartime(ge_p3 *h, const unsigned char *s)
ge_p3_to_p2(ge_p2 *r, const ge_p3 *p)
both in crypto-ops.c

I've added the crypto lib to the CMakeList:

target_link_libraries(wallet
  PUBLIC
    multisig
    common
    cryptonote_core
    mnemonics
    cncrypto <-- This one
    ${LMDB_LIBRARY}
    ${Boost_CHRONO_LIBRARY}
    ${Boost_SERIALIZATION_LIBRARY}
    ${Boost_FILESYSTEM_LIBRARY}
    ${Boost_SYSTEM_LIBRARY}
    ${Boost_THREAD_LIBRARY}
    ${Boost_REGEX_LIBRARY}
  PRIVATE
    ${EXTRA_LIBRARIES})

and I get the following error from the linker:

 98%] Linking CXX executable ../../bin/monero-wallet-cli
../wallet/libwallet.so: undefined reference to `ge_frombytes_vartime(ge_p3*, unsigned char const*)'
../wallet/libwallet.so: undefined reference to `ge_p3_to_p2(ge_p2*, ge_p3 const*)'
collect2: error: ld returned 1 exit status
src/simplewallet/CMakeFiles/simplewallet.dir/build.make:122: recipe for target 'bin/monero-wallet-cli' failed
make[3]: *** [bin/monero-wallet-cli] Error 1
CMakeFiles/Makefile2:2688: recipe for target 'src/simplewallet/CMakeFiles/simplewallet.dir/all' failed
make[2]: *** [src/simplewallet/CMakeFiles/simplewallet.dir/all] Error 2
CMakeFiles/Makefile2:2700: recipe for target 'src/simplewallet/CMakeFiles/simplewallet.dir/rule' failed
make[1]: *** [src/simplewallet/CMakeFiles/simplewallet.dir/rule] Error 2
Makefile:812: recipe for target 'simplewallet' failed
make: *** [simplewallet] Error 2

I can't figure out where the problem is coming from

You are probably linking them in as C++.
Lookup the different in linkage between C and C++, and/or copy how Monero already does, ie:

extern "C"
{
#include "c_header.h"
}

Alternatively, rctOps.h has a convenience layer above these if performance isn't critical.


Creating and Splitting Transactions I left a node mining the testnet for a few days and got a bunch of coinbase transactions (close to 1200). I tried doing sweep_all [my address] but that failed: Error: payment id has invalid format, expected 16 of 64 character hex string: [my address]. That didn't make a lot of sense, so I tried the same command again. This time it failed with a different message: Error: failed to find a suitable way to split transactions.

So I tried the command transfer [my address] 16385 (that amount is the available balance without its decimal part) and got this: Error: failed to find a way to create transactions. Apparently the wallet is okay with the amount 16300 XMR, but it says it will have to split it into 9 transactions.

It seems that I am reaching some internal limits in building transactions. Could someone explain what is happening in the background, and how does splitting work?

So the transaction splitting function is not an anonymity thing, it's due to the dynamic block size limiter. Right now testnet is on the block median, and you're trying to create a transaction that is much larger than that block limit. So it tries to split the transaction up into several that fit into the block limit, but if it needs to create thousands of transactions to do that it would chew up your computer for ages, so it eventually wipes out. You would either have to wait until the block median is higher (unlikely any time soon on testnet) or you'd have to send it in smaller chunks:)


C# simplewallet RPC calls I'm quite new to cryptocurrencies, and I want to make a program that runs simplewallet (monero-wallet-cli) in the background as an RPC server and make calls to it using C#.
I already somewhat know how to start it as an RPC server (per this bytecoin wiki link), but how would I make calls to get information like the current balance and display it on the GUI, or make a transaction?

I think you should have a look at Monero's official Wallet RPC documentation. There's an example for each command.

Update: Those examples use the curl utility to send the HTTP request. The meaning of the parameters can be looked up in the man page.


Has a Monero GUI ever been hacked and the coins stolen? Just as the title states. Has someone had the misfortune of this occurring?

To this date, I haven't seen anyone losing money from the GUI. When you think about it, it's not that simple: someone has to get not only your password but also the wallet file.


What is the difference between Monero (XMR) and Electroneum (ETN)? I have heard of the Monero fork Electroneum (ETN), which they claim adds additional features to Monero, includes ICO funding, and takes a mobile-first mentality. How is Electroneum different from Monero, especially in terms of privacy?

Going through the commits there is really only one significant difference. Electroneum has no decoys, thus removes a significant aspect of privacy:

#define DEFAULT_MIX                             0
#define DEFAULT_RINGSIZE                        1

A couple of other things to note:

There is no attribution given to many commits which are simply copies of Monero commits since it forked (so they don't know how to use git to fetch upstream commits and merge to their fork)
There was a premine
They had an ICO
They believe in patents as opposed to FOSS
Good luck finding the patent they claim to have (1805708.3 applied for != granted)
This is not [as] decentralized, it is run by a company
Their mobile app is closed source [which is a huge red flag]
They reference "US Dept. Defence" being engaged for a security audit (big claim when in fact they are actually just using HackerOne)


Can I set up the GUI or daemon to use a non-standard blockchain location in Windows? In Windows, it's comfortable to double-click the link/icon to a program (as opposed to using the command line).  The problem is that the default links/icons for the GUI or daemon (monerod) don't let the GUI or daemon use a non-default location of the blockchain.

I save the blockchain on a different, bigger drive.  When I open the GUI or daemon with double-clicking the link/icon, it automatically starts to re-download the blockchain to the standard location.  Can this conundrum be solved?

On Windows, this can actually be done fairly simply.  These options are slightly technical, but not terribly difficult, and only have to be done once.  There are a couple quick ways.

Option 1 - Make a copy of the shortcut link used for launching the GUI (or monerod).  Then right-click the copied shortcut to edit the shortcut's properties; and then add at the end of the Target: line/box --data-dir \path\where\bitmonero\folder\is. Click OK to save.  Double-clicking the link will launch the program with the --data-dir flag, which will be pointing to where you're keeping your copy of the blockchain.

Option 2 is to create and open a new text (*.txt) document, which you can do just by opening up Notepad.  Enter C:\path\to\monerod.exe --data-dir \path\to\bitmonero\folder.  Save the file with whatever name you like.  And then change the file extension from txt to bat.  This file will now behave just like the shortcut link from Option 1.


Any approximate date we will have Monero wallet with graphical user interface? What is the approximate date we will have a Monero wallet with graphical user interface?

2 weeks from now.

(now = whenever you look at this)


Trojans and generic suspicious malware blocked by MalwareByte while downloading blockchain I am in the process of downloading the blockchain.  I am 90% finished but it is going very slowly.  I started 2 days ago.  Hopefully it will download fully.  I have the Monerod application as an exception in my Bitdefender and MalwareByte programs.  I have checked the Monerod application with Bitdefender and it came back "clean".  However, MalwareByte blocked 20+ websites because of Trojans and quarantined 3 suspicious malwares. Here are some of the IP addresses, all outbound, if it's any help:
IP address 5.9.109.205 Port 51538
IP address 37.59.56.102  Port 50881
IP address 5.9.109.205  Port 59114

Those ports have nothing to do with monerod.
It is likely that your computer is infected with some kind of malware.
You should avoid using a spend wallet on this computer, keep it as a read-only/audit wallet here at best.
You may lose a bit of privacy but not your money doing so.

Anyway, I strongly advise you to format your disks & reinstall your operating system.

Regards.


Is there a simple Monero price lookup API? I use cryptocompare.com for PHP lookups of Crypto-currency prices (i.e.
https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD). But they do not support Monero (XMN) for whatever reason. Is there anything similar for Monero?

That's because you're using the wrong ticker. Try XMR.

https://min-api.cryptocompare.com/data/price?fsym=XMR&tsyms=BTC,USD,EUR


Is there a config file for monero on ubuntu / linux installs? Currently the bitmonero folder resides in the home folder, but is there a config file I can just put this in vs having to start monerod with the --data-dir parameter?

The default configuration filename is bitmonero.conf. You should create it in the default data directory for your appropriate operating system.

Just add:

data-dir=[/path/to/your/new/dir]

On Unix/Linux/macos systems, the default directory is ~/.bitmonero