18

First of all, there are no addresses on the blockchain. Imagine the blockchain as a bunch of lockers which all look the same. The blockchain holds only the records from which to which locker funds get transferred. Now, how does it work? Think of your address as containing a special blueprint (public spend key) and a special recipe (public view key). Sender ...


11

No, but it's on the list of things we have to do. At this juncture it would be wasted on Monero, but once / if we switch the wire protocol to something standardised like ZMTP then it will be nearly trivial to do.


11

Double spends are prevented by the use of key images, which are sent along with each output being spent in a transaction, and which are checked for uniqueness before allowing the transaction. In the Cryptonote protocol, an output's private key can be used to uniquely generate a key image in such a way that a miner can check a purported key image really is ...


10

Each transaction generates a key image. In the CryptoNote protocol, key images used more than once are rejected by the blockchain as double-spends. When a new transaction is received, the miner need only verify that the key image does not already exist in the database. When your wallet is scanning the blockchain, it must check each transaction output in ...


7

Research builds upon prior research, so yes, definitely. For example, RingCT builds on both Nicolas van Saberhagen's Cryptonote and Gregory Maxwell's Confidential Transactions for bitcoin, and merges them. I hear some kind of SegWit is theoretically possible with Monero, though I do not know the specifics. Block propagation is currently not very optimized ...


7

The Monero blockchain can be used to send any information, as long as it's part of a transaction. There is a field (tx_extra) where you can effectively put whatever you want in there. It's really a matter of size as the limiting factor. As with the bitcoin blockchain, tx fees need to be paid (based on the size of the transaction). So, yeah, it would work ...


7

The answer is both fascinating and altogether boring, in that it makes you look back to the very beginning of Monero (then "Bitmonero") and the period right after the clear-net debut of the supposedly two-years-old, dark-net-only Bytecoin. Basically, for reasons beyond this answer's scope, Bitmonero was created as a fork of Bytecoin, the original Cryptonote ...


5

A. Is this a wallet rule or a protocol/daemon rule? It's a wallet / daemon rule. The number of blocks is defined as a pre-compiler constant CRYPTONOTE_DEFAULT_TX_SPENDABLE_AGE. B. Does the rule only apply to spending one's own output, or are new/locked outputs also excludable from a ring signature even as decoys/mixins? Generally, it applies to all ...


5

(1) I understand that currently, the range proofs are done with Borromean signatures, isn't it? Not ASLN? ASNL had a flaw, so it was changed to Borromean: What was the problem with ASNL forgery? (2) Does the sender communicate the blinding factors from the Pedersen commitments to the receiver? If not, how can he verify the actual amounts? The network ...


5

Ring signatures are a group of cryptographic signatures with at least one real participant, but no way to tell which in the group is the real one as they all appear valid When sending a transaction, you select some random transaction outputs on the blockchain and mix those with your own coins Mixing enforced across the network, meaning active participation ...


5

This question was cross-posted to Reddit and was answered by dEBRUYNE_1 citing luigi1111's article: You may have noticed that this scheme only gives Alice one output for Bob per r, but with auto-denomination Monero and other Cryptonote coins have many outputs per transaction. To get different stealth addresses for each output, Alice (and Bob) append an "...


4

You're probably referring to the concept where a vendor will accept payment, even when the payment has not been included in a block. Sure, that works the same way in Monero that it does in Bitcoin. The transaction in question will be visible in the mempool. When the vendor sees the transaction in the mempool, he may decide to release goods to the customer....


4

That's right. Normally, your wallet uses your private view and spend keys to recover the one-time key and uses it to sign a transaction spending that one-time key. If you already have the one-time private key somehow, you don't need to recover it and you could spend it by itself. I'm not aware of any tools existing which would let you do it, but they could ...


4

A ring signature is done over N public keys, and one private key matching one of the N public keys. The public keys are selected from all the outputs on the blockchain that have the same amount as the output being spent (when RingCT is in, this same amount restriction will vanish). An observer can verify the signature, which means one of the public keys ...


4

While Monero does not use Keccak for its hashing, one advantage of using CryptoNote is to prevent Monero from immediately being able to be mined by ASICs. There is tremendous investment in SHA-256 hashing because of Bitcoin's popularity, so using a less popular / more memory intensive standard allows Monero to be mined by the "common man"- at least until ...


4

Indeed the protocol uses Borromean signatures for range proofs. A RingCT signature contains all the info allowing everyone to check the validity of the amounts, and allowing the recipient to recover the real amounts (Pedersen commitments, the masks for amounts, etc). I found the following article useful to understand how RingCT works: Confidential ...


3

Monero transactions are pretty similar to Bitcoin ones regarding this: you see them on the network, they linger in the txpool till mined, the block they're in can be reorganized, and the more blocks on top of it, the less likely it is to happen. The Monero wallet offers the get_transfers RPC, which has a pool input field. When set to true, any transaction ...


3

As far as I can tell from the code, the option 1 seems to be the case. Most of the core functions of the wallet are implemented in src/wallet/wallet2.cpp. In pull_blocks which is called from within refresh, the wallet fetches individual blocks in its entirety. Subsequent to that function is process_blocks which then calls process_new_blockchain_entry which ...


3

Keccak has "built-in" protection against length extension attacks. Edit: spelling


3

I will copy my comment from my blog as follows. As a prerequisite for understanding, my blog was lacking a layman’s introduction on Cryptonote’s ring signatures: I will expound a little bit on the linked introduction above. Cryptonote’s “one-time” ring signatures enable the signer of a transaction to group his public key with his choice of the public keys ...


3

It has already if I recall, stealth transactions were the result of research done for Bitcoin by Genjix. This has been the default address type used in Monero.


3

A view key is not a valid address, and thus your transaction should be void.


2

It's less about the security of the data moving across the connection than about the authentication of the remote server. When you have the TLS fingerprint for the pool server set up in your miner configuration, such as with XMR-STAK, then you can be assured that the pool is the same one as last time you connected, and nobody has hijacked the domain name or ...


2

How can I automatically sell Monero? This is a little vague. What are you selling Monero for? Assuming you are selling Monero for some other cryptocurrency, you can still sell with zero-conf if you so wish. Zero-conf being the moment your wallet sees the tx (i.e. the tx is in the tx pool). Of course, there is a level of risk in doing so, which dissipates ...


1

Monero's ring signatures typically use a ring size of 7, which means 1 real output and 6 decoy outputs. However, there are several rings if you spend several outputs. Therefore if you spend 5 outputs, there will be 6*5=30 decoys.


1

Monero uses the Levin protocol for p2p comms. Similar question here. The definitions for the commands are here.


1

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, ...


1

I found this Fluffypony video on YouTube from 2015 quite an good (and easy to digest) introduction for most of those concepts. It doesn't touch RingCT yet I believe.


Only top voted, non community-wiki answers of a minimum length are eligible