Название: Cryptocurrency Mining For Dummies
Автор: Peter Kent
Издательство: John Wiley & Sons Limited
Жанр: Личные финансы
isbn: 9781119885382
isbn:
These fees on the Bitcoin network per transaction average about to less than a few dollars to about $50 when the network is congested with high demand for transactions (see Figure 3-3).
FIGURE 3-3: A view at the time of writing of the average transaction fee as measured in dollars on the network.
A Satoshi is the smallest unit of Bitcoin — one hundred millionth of a Bitcoin. If your wallet balance is 1.00000001 BTC, the last digit denotes one Satoshi. Your wallet software will probably suggest a fee, estimated on current rates and network congestion; some wallet software will pick the fee for you, while other software lets you set that fee manually for more precision and to avoid over spending. Pay too little, and the transaction may not go through or may take a long time; pay too much, and, well, you overpaid. Transactions with higher fees will get picked up by mining software quicker than those with lower fees, of course; the more high-fee transactions in a block, the more the winning miner will earn.
For our example, say that you decide to pay a 0.0004BTC fee. Now, say this is your address:
1x6YnuBVeeE65dQRZztRWgUPwyBjHCA5g
Remember, it has a balance of 1BTC. That’s what’s known as the input for the transaction.
Here’s Joe’s address:
38DcfF4zWPi7bSPkoNxxk3hx3mCSEvDhLp
That’s one of the outputs in the transaction. So far the transaction looks like this:
Input1x6YnuBVeeE65dQRZztRWgUPwyBjHCA5g - 1BTCOutput38DcfF4zWPi7bSPkoNxxk3hx3mCSEvDhLp - 0.1BTC
But wait, we need another output. We’re putting 1BTC into the transaction, giving 0.1BTC to Joe, so we have to decide what happens to the other 0.9BTC. Actually, the other 0.8996BTC, as 0.0004BTC is being paid to the miner as a fee. So, where does the 0.8996BTC go? It goes back to you, of course, as your change. So the transaction might now look like this:
Input1x6YnuBVeeE65dQRZztRWgUPwyBjHCA5g - 1BTCOutputs38DcfF4zWPi7bSPkoNxxk3hx3mCSEvDhLp - 0.1BTC1x6YnuBVeeE65dQRZztRWgUPwyBjHCA5g - 0.8996BTC
We’ve shown 0.8996BTC going back to the original address. (Imagine going into a store with a ten-dollar bill, and paying $1 for something. What happens? You take $10 out of your pocket, hand it to the clerk, the clerk gives you $9 back, and you put the $9 back into your pocket.)
Change address
We’ve shown the change coming back to the same address used for the Input, and that’s certainly possible. However, most wallet software will use a different address, or a change address, for the second of these outputs. Either way, you get the change back to an address owned by you, managed by your wallet software.
Note that nothing is stated in the outputs regarding the fee. That’s because the transaction sent by your wallet doesn’t explicitly state the fee. Rather, it says, “send 0.1BTC to the first address, send 0.89996BTC to the second address, and keep the change!” And that’s just what the miner who wins the right to add this transaction to the blockchain will do: The mining rig will keep the change as a transaction fee.
PUBLIC KEY ENCRYPTION
Cryptography is the crypto in cryptocurrency; it uses what’s known as public key encryption. It’s how you prove that you own the money associated with an address. The person spending the cryptocurrency uses a private key to encrypt the message and then bundles the associated public key with the message. The miner can determine that the address from which the cryptocurrency is coming is associated with the public key, and thus if the public key can decrypt the message, the message must have been created by the person controlling the associated private key. (All three — private key, public key, and address — are mathematically and uniquely associated.) See Chapter 2 for more details.
This transaction information is put into a script, a text message that will be sent out over the crypto network. Your wallet software uses your private key to sign the transaction — that is, it encrypts the transaction information using the private key. It then adds the associated public key to the message and sends the transaction out onto the Bitcoin network. Within seconds, a node will receive the transaction; just as, when you send an email, within seconds your email will be received by a mail server. (You can think of your wallet program as a special form of messaging software, in fact.)Verifying the transaction
The first thing the node does when receiving the transaction is to use the public key to decrypt the message so that it can read it. It must then verify the transaction. This process ensures that the transaction is valid, based on a number of different criteria. We won’t go into all the details, but essentially the node asks itself (and answers) questions like these:
Is the message properly structured and not exceeding the maximum message size?
Does the message contain valid information — for example, does it contain valid input and output addresses and sums, within valid ranges, assigned to the addresses?
Does the input address exist in the blockchain with a valid balance?
Is a sufficient transaction fee associated with the transaction?
Does the wallet sending the transaction have a right to send the transaction — that is, is the public key sent with the message associated with the address from which the cryptocurrency is being sent?
What happens if the message is not valid in some way? The node throws it away because there’s no point sending it on to the next node. But if it’s valid, the node adds it to a pool of valid transactions (a memory pool or mempool), and sends it to other nodes on the network. These other nodes will do the same: decrypt and verify the transaction and add to their mempool if they find it valid. (That’s part of the consensus process, ensuring that everyone agrees.) Thus the message, in a matter of seconds, propagates (spreads) across the crypto network, being picked up by node after node.
So the mempool is a collection of transactions waiting to be confirmed, solidified, and included into a block. The size of the mempool ebbs and flows depending on the current number of transactions hitting the network, and, of course, as the network congestion goes up, transaction fees go up. (You can find a very useful site for inspecting the current backlog of transactions in the mempool and current transaction fees at
https://jochen-hoenicke.de/queue/#0,all
.)
Some nodes are mining nodes. These nodes add blocks to the blockchain, in a competition to earn Bitcoin. These nodes are also creating memory pools, collections of transactions that need to be added to the blockchain.
СКАЧАТЬ