What are some of the risks of speculating on bitcoin value?

Volatility: The price of Bitcoins is fairly unpredictable. A speculator is basically trying to predict the future price of Bitcoins.

Security: A speculator generally has to trust his Bitcoins and currencies to an exchange, at least some of the time. That exchange could disappear or claim he transferred out his Bitcoins. When his Bitcoins are not in an exchange he has to store them in a wallet which is vulnerable to compromise.

Technology: Bitcoins could become obsolete overnight if some new, superior crypto-currency came out. This could start as a sharp drop faster than a speculator can react. He would then have to either take a big loss or risk a total loss.

Unknown Defect: There has already been one case where a software defect in the client forced the unwinding of many transactions. What other problems might pop up one day and negatively impact the speculator either directly (by causing him to lose Bitcoins) or indirectly (by causing his coins to lose value)?

Known Defect: A 51% attack, double-spend attack, or similar problem could cause the Bitcoin system to become unstable or could impact the speculator's transactions directly.

Legal: The legal status of Bitcoin trades and the tax implications are in many cases unknown and in all cases subject to change, particularly if Bitcoins become popular.

Physical: Since Bitcoins can be easily moved halfway around the world and are untraceable, if someone knows you hold a lot of Bitcoins, he could kidnap/rob you and physically compel you to transfer your entire stash of Bitcoins to him. This is much less traceable than currencies, and you may have a very hard time getting police to take you seriously. (You couldn't even prove that you had lost the coins as opposed to having transferred them to another wallet you control.)

Mistake: A speculator could make a typing mistake, especially while making a large number of transactions of different kinds, that results in a loss. A price or quantity could be entered incorrectly or someone else's Bitcoin address could be given as a destination for a withdrawal.


Can you explain some of the dynamics that drive the variations in mempool depth?

Mempool basics
When a bitcoin user wants to pay another user, they craft an announcement to the whole network. This announcement takes the form of a transaction which specifies the funds that are being spent and the funds to be created. It also includes proof that the message was authorized by the owner of the spent funds. These payment promises are gossiped through the network. Each node keeps track of unconfirmed transactions in their individual memory pool (mempool).
As transactions are gossiped through the distributed network, the mempools of any two nodes generally overlap greatly (and I refer to this overlap as "the mempool"), but do not match exactly. Particularly, two nodes may receive transactions at different times or even have conflicting information altogether. The network needs a mechanism to resolve conflicting information among participants and converge on a common state. To this end, some nodes, called miners, assemble sets of unconfirmed transactions and propose them as updates to the network's state. The protocol performs a perpetual distributed lottery to select one among the many proposed updates to the shared state. The winning block commits the transactions to the network's journal (the blockchain) and indicates to participants that they should update their copy of the ledger (the Unspent Transaction Output set).
The protocol limits the overall transaction data as transactions consume resources of all participants in the network. Blocks are limited to 4,000,000 weight units, and the network regulates itself by targeting a stable block interval.
On the other hand, the amount of transactions that get submitted to the network is flexible. Miners can often not include all transaction that are queued in their mempools and they pick which (valid) transactions to include. Each transaction offers miners a small amount of bitcoin to incentivize inclusion in a block. Miners generally choose the transactions that pay the highest feerate (fee per weight unit) to maximize their revenue.
Especially, when bitcoin's exchange rate makes big swings, the volatility prompts people to participate in the market. As "being your own bank" is a core tenet among many Bitcoin users, a lot of people do not keep funds in exchange accounts but in wallets fully controlled by themselves. This means that market moving news and price swings often prompt the creation of higher than usual transaction traffic. Once the transaction creation rate exceeds the available blockspace supply, the mempool grows quicker than transactions get confirmed.
Anecdotally, transaction creation seems to follow a daily and weekly cyclical pattern. Transactions pick up with the start of the business day in Europe, and slow down with the end of the business day of the US west coast. The mempool usually shrinks between those hours as the Asian markets currently do not seem to produce as much traffic. Generally, the transaction volume drops on weekends. These patterns are sometimes overshadowed by other influences such as price rallies, or slumps in the hashrate that reduce the blockspace production.
Reading the mempool chart
As mentioned before, each node keeps their own view of the queued transactions in the so-called memory pool (or mempool). Jochen Hoenicke's website publishes mempool statistics of his own node. The website has three different graphs:

Unconfirmed Transaction Count (Mempool)
Pending Transaction Fee in BTC
Mempool Size in MB

All of the below charts show  the "mempool size in MB" from Jochen's site.

In the past few days, transaction creation has been exceeding transaction confirmation and more than 50 blocks worth of data have accumulated in the queue. This is about 1/3 of a day's capacity as the network targets 144 blocks per day. As users have varying urgency to see their transactions confirmed, they bid accordingly for inclusion of their transactions.
The colors in the graph represent different feerates. The feerate of a transaction is the ratio of fee per data amount. The higher the feerate, the more money a miner will make by including the transaction in their block.

The blue bands in the bottom represent low-urgency transactions. The users may just be consolidating dust or have other reasons to prefer low cost over quick confirmation. The blue bands collect transactions in the feerates of 1–10 sat/vB.
The green bands in the middle consist of transactions that want to get some priority, but are unwilling to pay a premium to get confirmed as quickly as possible. These are users usually aiming to see transactions confirmed in a day or two. The green bands collect transactions in the feerates of 10-40 sat/vB.
The yellow (and red) bands at the top are users vying for express confirmations. They usually choose their bids to get confirmations within the next hour. These transactions could for example facilitate business deals or attempt to enter a market as quickly as possible. Yellow ranges from 40–140 sat/vB, red starts at 140 sat/vB.

While the transaction creation exceeds block capacity, the mempool grows more quickly than it shrinks. New transactions attempt to skip to the front of the line to make yet a higher bid and especially get added to the top. This pushes up the top feerates.

Eventually, the transaction creation slows down and drops below the rate of blockspace production. The mempool starts clearing from highest feerate to lowest feerate.

However, during a market frenzy or a hashrate slump, the demand for blockspace may exceed production for an extended period of time and bridge the nights and weekends which have lower blockspace demand. For example, in May after the third halving, more than 50 blocks worth of transactions amassed in the 1-2 sat/vB band (the lowest blue) when the transaction queue did not clear for over two weeks.

Last weekend, the mempool did not clear out either.

This is by no means the worst we have seen. In the 2017/2018 winter, around the time that the Bitcoin price reached its latest all-time-high, the transaction queue never fully cleared between Oct 26th 2017 and February 22nd 2018.

At the peek, just before Christmas, Block 500,546 collected 14.82150630 BTC for an average feerate of 1,415 sat/vB.
When to send your transaction
This really depends on the urgency of your transaction. If you need to make a payment that will be confirmed soon, you will need to be aware of the current queue and bid appropriately near the top. If you can choose the time of your transaction, you can either send with a lower feerate and just wait for the mempool to clear to that level, or wait for the transaction queue to recede to the levels you are willing to pay and submit your transaction then.


Can I download only a coinbase transaction at a specified block height?

The Bitcoin p2p network doesn't provide any methods for downloading transactions at a specific index (in this question, zero) within a block. SPV clients aren't able to perform any sort of validation of transactions that aren't their own, and only basic validation of ones paying to them, so this sort of method isn't provided. Bitcoin Core additionally doesn't maintain indexes of transactions on disk so this would require an additional one to be built for the purpose, or have the node load entire blocks and re-parse them to find transaction positions.


Lost my Bitcoin wallet and have only 11 out of 12 mnemonic seed phrase words. How can I get my Bitcoins?

If you are missing the first word and you know the rest of the 11 words, there are 2048 possible mnemonics but only ~128 of them are valid.
Using Python and this library you can print all the valid ones with this simple script:
from cryptotools.BTC.HD import check, WORDS

phrase = "{x} decrease enjoy credit fold prepare school midnight flower wrong false already"

for word in WORDS:
    mnemonic = phrase.format(x=word)
    if check(mnemonic):
        print(mnemonic)

The output is:
alcohol decrease enjoy credit fold prepare school midnight flower wrong false already
alien decrease enjoy credit fold prepare school midnight flower wrong false already
ancient decrease enjoy credit fold prepare school midnight flower wrong false already
animal decrease enjoy credit fold prepare school midnight flower wrong false already
apple decrease enjoy credit fold prepare school midnight flower wrong false already
baby decrease enjoy credit fold prepare school midnight flower wrong false already
bamboo decrease enjoy credit fold prepare school midnight flower wrong false already
become decrease enjoy credit fold prepare school midnight flower wrong false already
blanket decrease enjoy credit fold prepare school midnight flower wrong false already
body decrease enjoy credit fold prepare school midnight flower wrong false already
...

Then you can try them one by one to a wallet that support BIP39. Obviously change the last 11 words in my example with your words.
Good luck!


What is the main difference between " enterprise" blockchain and regular blockchain?

The line between a blockchain and a distributed database (or ledger) is currently blurred (some would say deliberately so given the hype surrounding "blockchains" at the moment). R3 have recently concluded that it does not make sense to use a blockchain for their enterprise use case as financial institutions do not want to publish data on all their transactions to all nodes on the network. Therefore signed messages are exchanged bilaterally on R3's Corda. I am not an expert on Hyperledger but I think it is focusing predominantly on private or permissioned blockchains. These have a chain of blocks (that each contain a number of transactions) but access (ability to transact and verify transactions) is restricted to a finite number of participants. My personal opinion is that if there are transactions being batched into blocks, cryptographically attached to previous blocks and verified by all (or a subset of) nodes on a network then it should be considered a blockchain. Bitcoin and Ethereum are public blockchains. There are no restrictions in terms of those who can transact on it, view it or verify it.


bitcoind getrawtransaction returning numbers and letters


You don't need a second wallet to mine. You absolutely do not need bitcoin to mine bitcoin. You need an ASIC miner (with power supply), electricity and an internet connection.

They are scammers trying to steal from you.

If you want to mine then buy an ASIC miner. But be careful, there are also scammers pretending to sell miners.


Purpose of unique header in block hashing algorithm

I think you might have misinterpreted the article. The MerkelRoots is a representation of all the transaction in the block that you're currently trying to mine. They are unique because the first transaction in each block is unique to each miner. The uniqueness guarantees that the sequence of generated hashes will be different for each miner. And because of this uniqueness, the sequence of hashes generated by a low-powered CPU might occasionally lead to the desired result before a high-powered monster CPU does, whereas if everyone were following the same sequence, the high-powered monster CPU would always find the desired result first. So in essence, the first transaction introduces uniqueness that makes CPU speed less important and not the MerkelRoot.

Incidentally, I had almost finished answering the question in a completely different way when I realized the confusion. In case that answer is helpful, here it is ...

In mining, you're constantly changing a block (by updating the nonce) and trying to find a hash that meets the proper requirements. You're also changing the transactions in a block, (which also changes it's hash), but this happens much less frequently. Hashing the entire block is an expensive operation, but hashing only a small part is not as expensive. Since you're changing the transactions -- by far the largest part -- much less frequently than the nonce, it makes sense to "cache" the change so that the mining hash operation doesn't take so many resources.

The Merkle Root is this cache, that is, it [compactly] represents any changes in the list of transactions. Thus when you hash the header (which includes any change in the nonce or the transaction), you are still hashing the entire block.

Assuming that CPUs scale linearly, the answer to your question about how much less important CPU speed is disappointingly probably not at all. The benefit that you get is that any CPU will be able to calculate more hashes per second than with the alternative, and this should be proportional to the CPU's power/clock-speed.

You also mentioned network latency, but as all of the hashing takes place on individual computers and full transactions are sent throughout the network, whether or not a Merkel Root is used wouldn't affect network traffic.


What is the actual threat of a majority attack on the Bitcoin blockchain?

An attacker controlling more than half of the mining power could do a few things. For example.

They could declare certain transactions as invalid. By refusing to include them in their blocks and refusing to build on any block that includes them the unwanted transactions would see any confirmations they picked up quickly reversed. Someone trying to make money could use this to set minimum transaction fees. A government trying to regulate bitcoin could allow only addresses registered with the government.
They could collect all the mining rewards by refusing to build on anyone else's blocks, since the total mining rewards are roughly fixed this would get them more bitcoins than just taking their fair share of mining rewards.
They could spend bitcoins to get something non-bitcoin in exchange and then later reverse those transactions leaving the people they exchanged with out of pocket.

If the attackers aim is to make money these things are probably a bad idea. They would likely destroy the value of bitcoin and destroy the attackers profits

OTOH if the attackers goal is to destroy or subvert bitcoin these things may be more worth doing.


Multibit uses SPV, which is a peer-to-peer protocol consisting of two parts.

It downloads the block headers from peers (not the whole block). This allows it to verify that the blocks have a lot of hashing power behind them, and get the merkle root for each of them.
It asks peers for transactions matching the addresses it cares about. It can verify that the transactions belong to one of the blocks it knows about by using the merkle root.

See here for a discussion of the security tradeoffs.


If there is no one company behind bitcoin, who controls it?

Bitcoin operates based on a set of rules known as the Bitcoin protocol, which is defined by a consensus among its users.

The Bitcoin software is open source so anyone can contribute to its development, but in order for one to have any influence his modified software needs to be accepted by the users (so harmful code will be rejected).

The Bitcoin currency day-to-day bookkeeping is operated by a peer-to-peer network of computers running a Bitcoin software which follows the Bitcoin protocol. Virtually anyone can make his own computer part of this network.


This is not an error that has halted progress, the sync is continuing.

Warnings are informational messages that may need attention.


Why do people say that bitcoin scales according to O(n^2)?

n is the number of users. It is assumed that the number of transactions is Ө(n), and that the number of full nodes who must know all transactions is also Ө(n), so the total information (that needs to be propagated, verified and stored) is n*Ө(n) = Ө(n^2).

The assumption about the nodes requires clarification according to context, because there is no actual need for the number of nodes to scale with n.

k is the proportionality constant implicit in the Big Theta notation.


Bitcoin cash not syncing the current block

BCH makes a hard fork every 6 months. Your node supports only the Nov 2019 hard fork. Update your Bitcoin Unlimited or it won't sync.
May 2020 upgrade: https://coinspice.io/ifp/bitcoin-cash-may-2020-upgrade/


imported bitcoin address which I can not transfer to anybody, if I want to transfer it is asking private keys, but I don't have private keys

It sounds like you have imported the address as a watch-only address, meaning your wallet watches for transactions involving it, but as you say, cannot spend any coins because it doesn't have the private key. This would have happened if you had used importaddress instead of importprivkey. Without the private key you do not own those bitcoins, you are simply looking at someone else's transactions.


What does script operation "OP_IFDUP" do?

It duplicates the top stack item if the top stack item is not 0 and not negative 0. I'm not sure where this would be useful.


How can I avoid paying transaction fees?

Is there a way to transfer/import bitcoin from one address to another in order to avoid transaction fees?

No. It is not possible to move btc between addresses without publishing a transaction to the blockchain. However, there are some ways to accomplish a similar result (transferring/altering the ability to spend some coins), but I think every one of those ways will employ a different trust model than actually transacting on the blockchain. As a user, you must balance the level of trust you are comfortable with, against the need to save on transaction fees.

Some examples:

Off chain transactions using a centralized service:

This is how an exchange moves btc between accounts without incurring transaction fees. For example, when you buy/sell on a bitcoin exchange, a transaction is not actually published to the blockchain. Rather, the exchange will simply update their internal database, which keeps a ledger of all user account balances. As a user you are trusting that the exchange has a full reserve of all outstanding user $ and btc balances, and that they will not make an error in keeping track of your account balance.

Off-chain transactions by exchange of private keys

You can give someone bitcoin by simply giving them a copy of private keys for a funded address. In this situation, the recipient will need to trust that you do not own any other copies of the private keys, or that you will not spend the coins yourself if you do have a copy saved.

(as an aside, if you are sharing keys with a friend, and the coins are stolen by a third party, it may be impossible to prove to your friend that you did not simply steal the coins- and vice versa).

Off-chain transactions by exchange of private keys, which are provably not backed up

This is made possible by specialized hardware, such as that produced by OpenDime. In this case, as long as you trust that the OpenDime hardware functions as advertised, you can give someone a funded OpenDime stick and they do not have to worry that you might have a backup of the keys for those coins.

A signed transaction that is communicated off-chain

In this case, you could sign a completely valid bitcoin transaction that sends coins to your recipients address, and then send someone the raw tx data, without publishing it to the blockchain. The recipient would be able to publish the data to the blockchain themselves, but they will have to trust you to not sign and publish a different transaction using those same outputs in the meantime. This method would also only 'delay' the spending of the tx fees.

(I'm honestly not aware of any actual use-case for a scheme like this. It's probably a dumb idea that requires a lot of trust, but it is possible nonetheless)

Payment channels

In this case, two transacting parties can lock some amount of btc into a special multi-sig address, and then trade a limitless number of partially signed transactions back and forth off chain, with no tx fees, and no need to trust the other party will not steal your bitcoin. The parties involved can only exchange value up to a maximum amount (the amount they locked into the channel), but the channel can be bi-directional, so payments can be sent back and forth basically endlessly otherwise. This method still requires a transaction fee to open and close the payment channel, but that fee now account for a vast number of 'off-chain' transactions, instead of just one or two on-chain.

An implementation of this idea is the lightning network, it is currently live on the bitcoin testnet.


What's the safest way to buy bitcoins in the UK?

The safest way (though perhaps not convenient) is to create a two-party legal contract with signed witnesses. This way if either party reneges you have legal recourse in the civil courts. The contractual arrangement would be somewhat similar to when a freelancer charges bitcoins for their goods or services.

Escrow doesn't provide the same level of protection, as your legal contract with the escrow company (if any) usually includes a clause that final binding arbitration is made by the escrow company - not you. However, a reputable escrow service or currency exchange will typically suffice for people with moderate risk appetites.


I am not aware of a clear definition for the term zombie channels. At least I don't recall the term being used in the lightning rfc. Also I didn't hear lightning devs in conversations to talk about them. Thus I think the semantics are more along your suggestion that they refer to channels which are for some reason obsolete / inactive / unusable. Disclaimet: just because I never saw the term doesn't mean it has no definition


Is it possible to add a miner's fee after you send your bitcoins?

Rebroadcasting a similar transaction with a fee attached will invalidate the one that's waiting. Basically you initiate a double-spend and the new one (with a fee) will get confirmed.  Once it's confirmed, the old transaction will be invalid and forgotten.

Your client probably does not allow double-spend attempts, but it's possible via blockchain.info. Warning: Don't create a raw transaction unless you really know what you are doing!

People are working on making fee changes easier for us mere mortals; one example is/was (seems to be defunct) ConfirmNext.


The first problem is that Bitcoin does not use the addresses for working, so Bitcoin does not have the need to give the information for addresses.

So with your test have some problem, that is:

Bitcoin Core (bitcoind): not have the method for calculating the balance of the address because a wallet has more addresses and more private keys, for extract all addresses with the balance you can scanning the blockchain and store the information of the address.
btcd: Have the method for calculating the balance of the address but you don't have all addresses used inside the bitcoin blockchain, so for extract all address you can scan the blockchain.

So If you want to calculate the "balance" of the address, you can scan the blockchain from the genesis block to the last block and save the address (contains inside the scriptPubKey) for calculating the balance with the simple sum.

if you use the bitcoin core you can get the information with the RPC commands, but you must manage "how to calculate the balance of the address" or you can use and parser for a scan the blk file (with the parser you can be faster in your analysis).

I want to add more information to the address of bitcoin.

The bitcoin wallet works with more addresses and more private keys, so in the more cases, the balance of the wallet is different from the balance of the address.


Importing a bunch of btc private keys into bitcoin core, then monitoring and sweeping them all to another address?

When using sendtoaddress api call, do I have to specify a change address?

No, it generates a new key pair and sends the balance to it. This key pair is stored in your wallet.dat file.


How can I limit bandwidth usage in Bitcoin-qt client?

If your goal is just to get a stable Bitcoin node running, and not to contribute to the network, you can add listen=0 to your bitcoin.conf file. This generally (though not always) keeps your upload bandwidth in check.

If you want to contribute to the Bitcoin network without using up too much of your own bandwidth, however, there are ways of limiting your upload speed for Bitcoin Core (Bitcoin-qt) only. Instructions depend on your OS, so what follows is a breakdown on what to do with each OS.

IMPORTANT NOTE: If you limit the bandwidth of Bitcoin Core far below your actual upload speed, it can actually harm the Bitcoin network instead of helping it. To be a responsible maintainer of the Bitcoin network, you should test your upload speed and then set your outgoing bandwidth limit to be as close to your actual speed as possible (e.g. 90%). This guide is intended solely for people whose internet connections go unresponsive due to Bitcoin Core completely saturating their upload bandwidth.

The following instructions are abridged from this article I wrote recently:
https://www.maxlaumeister.com/blog/how-to-limit-bandwidth-of-bitcoin-core-on-windows-mac-os-and-linux/

Limiting Bitcoin Bandwidth on Windows

Download and Install NetBalancer.
Start Bitcoin Core if it isn’t already running.
Run NetBalancer.
Find “bitcoin-qt.exe” in the list of running applications in the NetBalancer dialog and double-click it to change its bandwidth rules.
Under “Upload Priority” choose “Limited”, set the maximum amount of bandwidth for Bitcoin Core to use, and confirm.

You’re done! NetBalancer will now sit in the background and make sure Bitcoin Core doesn’t use more bandwidth than you want it to.

Limiting Bandwidth on Mac OS X

OS X 10.10 Yosemite and later

For OS X 10.10 Yosemite and later, there is no easy way to limit the bandwidth of a particular application, but the overall system bandwidth can be limited as follows:

Visit Apple Developer Downloads and log in with your Apple ID.
Search for “Hardware IO Tools for Xcode” and download the latest stable (non-beta) version.
Open the .dmg and double-click “Network Link Conditioner.prefpane” to install the prefpane. From now on, you can enable/disable Network Link Conditioner from System Preferences.
From the Network Link Conditioner pane in System Preferences, click “Manage Profiles”, then click the “+” button to add a new profile.
Edit the profile and add your desired maximum upload speed.
Save your edit, exit the profile manager, choose your new profile, and flip the big switch to enable the limiter.

Mac OS will place an icon in your notification tray so you remember that it’s on. Unlike the Windows/Linux solutions, this will limit the bandwidth for your entire system, so be sure to turn it off you’re not running Bitcoin Core.

OS X 10.9 Mavericks and earlier

For OS X 10.9 Mavericks you can use IceFloor to configure bandwidth rules. For 10.8 Mountain Lion and earlier, use Waterroof. Alternatively, if you want a simple way to control the overall system bandwidth limit instead of just Bitcoin Core, follow the instructions above for OS X 10.10 Yosemite and later.

Limiting Bandwidth on Linux

Make sure you have tc installed by typing tc at the command line. If you get “command not found”, install tc using your favorite package manager. If you're on a Debian-based distribution, the easiest way to install tc is by using apt-get:

sudo apt-get update

sudo apt-get install iproute2
Download the tc.sh script from the official Bitcoin Core repository using wget:

wget https://raw.githubusercontent.com/bitcoin/bitcoin/master/contrib/qos/tc.sh
Open the script in a text editor. Find the line that says IF="eth0" and change eth0 to reflect the network interface that your internet connection runs through. To get a list of your computer's network interfaces, use ifconfig on the command line. My computer is connected wirelessly through wlan1, so the IF line of my tc.sh looks like this:

IF="wlan1"
LINKCEIL should reflect the limit of the network interface, and most likely does not need to be changed.

LINKCEIL="1gbit"
Change LIMIT to be the maximum bandwidth you want Bitcoin Core to use (I chose 1mbit). If you don’t have any other Bitcoin Core nodes in your local network, you can delete the line that says LOCALNET. This line is there to make a bandwidth exception for port 8333 communications within your local network (i.e. not out to the internet).

LIMIT="1mbit"

Leave the rest of the commands in tc.sh alone unless you know what you're doing. The final top section of my tc.sh ended up looking like this:

#network interface on which to limit traffic
IF="wlan1"

#limit of the network interface in question
LINKCEIL="1gbit"

#limit outbound Bitcoin protocol traffic to this rate
LIMIT="1mbit"

Exit your editor and make the script executable with the following command:

chmod +x ./tc.sh
Run the script as superuser:

sudo ./tc.sh

Your Bitcoin Core bandwidth will be throttled until you reboot your computer!

Optionally, you can set the script to run every time you start your computer. Instructions for running scripts on boot will vary depending on your Linux distribution. On Ubuntu, one of the ways to run a script on boot is by adding the script to your /etc/rc.local file.

Conclusion

Hopefully this post was helpful in showing you how to limit the bandwidth of Bitcoin Core! For the full version, including images and extra information, check out the original article here.


How can I make my node a Lightning routing node?

It can be done, but it's not trivial. Technically, in order to be able to route payments, you need liquidity in both directions, incoming as well as outgoing. If you just funded two channels, you only have outgoing liquidy now (all the money is on your side).
There are many ways to gain incoming liquity. You could spend or swap the funds in your channels (or a part of them). You could ask someone to open a channel to you (https://lnbig.com seem to give these away for free). You could buy liquidy from https://lightning.engineering/posts/2020-11-02-lightning-pool/.
But that's just the beginning. If you really want to contribute, you need to always manage your node so that it provides routes where people need them. This is an art and you can surely find more hints by googling.
There are some developments underway to automate this process. If you used c-lightning instead of LND, you could try the clboss plugin, which has the goal of making all these choices without user input. Your mileage may vary.


bitcoind is what is most widely used. And here is the source: https://github.com/bitcoin/bitcoin/
But there's various other implementations for clients such as BitcoinJ for Java https://code.google.com/p/bitcoinj/ or http://libbitcoin.dyne.org/ for C++.
However, for miners the story is a bit different. If you're a miner you kind of need to use bitcoind. Otherwise bad things might happen such as the blockchain fork from last March: http://bitcoinmagazine.com/3668/bitcoin-network-shaken-by-blockchain-fork/


Why are there so many fake cryptocurrency airdrops?

There are so many airdrops, scams and fake projects, because it is an easy way to make money quickly.
Over the past years I've identified the following heuristics:

If it sounds too good to be true, it definitely is
If it's not clear how a service/project is making money, you're not a customer, but a victim
Whenever someone requests actions from you out of the blue, it's a phishing attack or scam
Nobody gives money away for free, there's either a catch, it's a scam, or you're the product
Extraordinary claims require extraordinary proof, anything unproven is just marketing
Altcoin software is malware trying to steal your bitcoins until proven otherwise
Everyone is a scammer until proven otherwise
The "next Bitcoin" is Bitcoin


Is it possible to get information about forks in the blockchain?


How much out of order are the blocks stored in the blk*.dat files?

1024.

/** Size of the "block download window": how far ahead of our current height do we fetch?
 *  Larger windows tolerate larger download speed differences between peer, but increase the potential
 *  degree of disordering of blocks on disk (which make reindexing and in the future perhaps pruning
 *  harder). We'll probably want to make this a per-peer adaptive value at some point. */
static const unsigned int BLOCK_DOWNLOAD_WINDOW = 1024;

(Source.)


I don't have my 12 word question but I do have my PIN and my computers MAC address

I'm pretty sure Hive is like the other web wallets in that they literally can't access your funds, they are encrypted. You would have been told in no uncertain terms to keep those 12 words safe and secure, it is not their fault if you haven't done that. Passwords are not recoverable on other web wallets either (e.g. blockchain.info).

Good luck, there's a chance some polite emails to their support may yield something if you have enough info for them to investigate but don't be surprised if they can't help.

Next time, store your funds somewhere safer and just keep day-to-day funds on the web wallet.


What would it take to track dollars like bitcoins?

Well, in a sense cash-notes ARE tracked!! You've seen that scene in the movies when the "bad guys" ask for "non-serialized" bank notes as ransom? That's the exact reason: knowing dollar bills from e.g. serial numbers "AAA0001" up to "AAA1000" were given out as such payment allows a number of gov. organizations (from a number of countries) to track the movements of such bills, whenever and wherever they pop up at a legit commerce or bank that accepts them. And, of course, that allows these organizations to more or less track the movements of said people.

By asking for notes that don't conform to an (easily recognizable) set, the ability to track the where-abouts of the money (and hence, of the original people who receive it) is much reduced.

There are trillions of dollars in the world nowadays, about 8% of which exists as physical bank notes, millions getting lost/burned/teared on any day, and millions more printed. So no gov. agency would attempt to try follow the movement of any coin or bill - just the very much reduced set of bills known for being given as payment to "bad guys".


There aren't any, unfortunately.

Rolling your own shouldn't be that difficult - I'd suggest using CoinSpark's OP_RETURN library as a starting point. All the best!


Do i have to run full node to receive unconfirmed transactions?

As far as I know, this should work just the same even with pruning enabled.

A Bitcoin Core node with pruning really still is a "full node" on the network; it relays transactions and fully checks the validity of incoming transactions and blocks.  The only difference is that without pruning, received blocks are stored forever and can be shared with other nodes who are initially downloading the chain.  With pruning, all blocks are downloaded and checked but only newer blocks are stored and shared.  Everything else should be the same.


Does GHashIO already have above 51% hashrate?

When blockchain.info says that a block came from an IP address (for example, 88.150.205.243) it means that blockchain.info received this block from this IP address, but it can not determine which pool mined this block.

It also means that blockchain.info is connected with this peer node. There is a high probability that this node has many peers where blocks can come from.

It does not mean that this block was mined by this IP address.


Decoding a Block beyond the Coinbase transaction

The format for blocks is described here: https://bitcoin.org/en/developer-reference#serialized-blocks

The format for transactions is mostly described here: https://bitcoin.org/en/developer-reference#raw-transaction-format

However some transactions are segwit transactions, so they have a few additional fields that are not described in the above documentation. Those fields are described here: https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki

Your decoding is a bit wrong:

  00000020 - Transaction Version

That's the block version, not transaction version.

  01000000 - Transaction Version

  01 - Coinbase has 1 transaction

You've actually missed two fields here. The first 7 bytes of the transaction are 01000000000101. These are as follows:

01000000 - Transaction version
00 - Segwit marker byte
01 - Segwit flag byte
01 - Number of inputs

Note that the segwit marker and flag bytes are only found in segwit transactions and indicate that a given transaction is a segwit transaction.

  ===== Coinbase Begin =====

The transaction version and the count after it all belong as part of the coinbase transaction. The count is not of the number of transactions but rather the number of inputs. A transaction is composed of inputs and outputs, not other transactions.

  -> BE6D6DCAEEFE495F6BCA08E10FF6D24555166C2456D8129213354E32FD73EB1B141AB00100000000000000036507000F312D7B080100275C012F736C7573682F
  - txin

No, that's still part of the scriptSig. It itself is not a transaction input. This is just arbitrary data in the scriptSig of the coinbase transaction that miners put there.

  00000000 - Lock Time

  ===== Coinbase End =====

  000000002C6A4C2952534B424C4F434B3AA5BA6C5D1EFFA2034E994BEEE65C619DE2D2A1
  - outpoint ?

  B91892F193C170CAB74F152EAE0000000000000000266A24AA21A9ED85F7D06CCF8014D990E0242ACC0433EAF134732094E9A083A45AC3799259C9170000000001000000014FFBE86D2805AF78459BBF5FA3432A5E9C84D408F7921BF2095488B9DDC39D33
  - ?

No, there are three outputs but you have only decoded one of them.

The proper decoding is as follows:

0000000000000000 - Amount in satoshis
2c - scriptPubKey is 44 bytes
6a - OP_RETURN
4c - OP_PUSHDATA1
29 - Push 41 bytes to stack
52534b424c4f434b3aa5ba6c5d1effa2034e994beee65c619de2d2a1b91892f193c170cab74f152eae - 41 bytes of data
0000000000000000 - Amount in satoshis
26 - scriptPubKey is 38 bytes
6a - OP_RETURN
24 - Push 36 bytes to stack
aa21a9ed85f7d06ccf8014d990e0242acc0433eaf134732094e9a083a45ac3799259c917 - 36 bytes of data. This data is the witness commitment as described in [BIP 141](https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#Commitment_structure)

There is actually a next part of the transaction that you don't have in your breakdowt. It is the witness data and the locktime.

01 - One witness stack item
20 - Stack item is 32 bytes in length
0000000000000000000000000000000000000000000000000000000000000000 - Stack item
00000000 - locktime

Then the next transaction starts with 01000000014FFBE86D2805AF78459BBF5FA3432A5E9C84D408F7921BF2095488B9DDC39D33... and is decoded like the coinbase transaction above.


From the Whitepaper: Timestamps prove that the data must have existed at the time"

It seems to me that you could put any time you want in the timestamp.

No, there are specific rules:

  A timestamp is accepted as valid if it is greater than the median timestamp of previous 11 blocks, and less than the network-adjusted time + 2 hours. "Network-adjusted time" is the median of the timestamps returned by all nodes connected to you. As a result, block timestamps are not exactly accurate, and they do not even need to be in order. Block times are accurate only to within an hour or two.

Example:
It's December 29th, 2017 at 11:00:00. The median for the previous 11 blocks is the current time - ~1 hour in average. Let's assume that it's exactly 1 hour in this case.

December 29th, 2017 at 13:00:00 is not accepted
December 29th, 2017 at 12:59:59 is accepted
December 29th, 2017 at 9:59:59 is not accepted
December 29th, 2017 at 10:00:01 is accepted


How does my transaction reach a miner?

First, when you start up your wallet, it will connect to several other nodes on the network using the mechanism described here. These connections are TCP connections, so they are data streams from one computer directly to another; the IP addresses are known and data transmission is handled by the TCP layer.

Over this TCP connection, the two nodes will begin exchanging data. This first consists of some initial handshake stuff like version messages, various filters for the other node to apply before sending data to the other node, etc. Then it consists of block and transaction data. These are typically first announced via an inv message (basically just says "I have this piece of data"), requested with a getdata message (says "please give me this piece of data"), and sent with the appropriate message type (block, tx, etc.).

So when you send a transaction, your node announces via an inv message to the nodes that it is connected to that it has a transaction. The other nodes request it and the transaction is sent. Then those nodes repeat the same process; they announce to their peers that they have a transaction, it is requested and then sent. That is how a transaction propagates through the network. Eventually it will reach a nodes which belong to miners so the miners will be able to include your transaction in their next block.

  Similarly, how does machine A learn of the transaction?

Since the TCP connections are bi-directional, your node is also receiving blocks and transactions from its peers. For full nodes, it will receive every block and transaction that its peers knows of, which, in general, will be every block and transaction on the network. It can then interpret each transaction and find the ones which pertain to your wallet.

For a lightweight wallet, it will use a special set of messages which allow it to set a filter on the transactions it receives. This filter is sent to the nodes it is connected to and those nodes will only send to your wallet the transactions that match this filter. Then your wallet will do additional filtering locally to find exactly which transactions pertain to it (the filters set can have false positives).


Nothing prevents you from doing such.  You now own coins on both chains, and can spend them independently. Assuming that adequate replay protection has been implemented, you shouldn't have to worry about your transaction on one network being broadcast without your consent on the other.


How do I read the contents of wallet.dat in C#

Wallet.dat is a Berkeley DB file.  You could check out Berkeley DB for .NET to see if it is able to read the file.


Why do I have more unconfirmed tx than getmempool info reports?

You are misunderstanding how listunspent and getmempoolinfo works. listunspent is for your wallet only and is a wallet only RPC command. It will only show things that pertain to your wallet. However getmempoolinfo is a node RPC. It will show what your node sees, which is almost always going to be more than just the things in your wallet. These two commands are completely unrelated and work independent of each other. There is no relation between these two commands.


Leaving aside the question of the entry cost of mining (i.e cost of buying hardware), once you have this hardware there is actually an incentive to mine for a pool rather than to mine solo.

Indeed in both cases your expected value is the same but the variance is smaller when you mine for a pool than when you mine solo. That means that in the (infinite) long run you would theoretically earn the same amount of bitcoins in both cases but not in the same manner : in a (big) pool you would often get small fractions of bitcoins whereas solo you would mine a block very rarely but get a lot of bitcoins when you do.

So by mining solo you are relaying a lot on luck, and by mining for a pool you reduce the role of luck. Usually when people make an investment (here it would be buying hardware) they prefer to reduce the importance of luck for the returns, that's why I would say there is an incentive to mine for a large pool. And for the same reason there is an incentive for the pools the get larger : the larger the pool the smaller the variance.

However there is a counter-incentive for a pool the get more than 50% of the hashrate, because if one pool was discovered to be in such a position it could kill the confidence in Bitcoin thus killing bitcoin's value and all that mining hardware that the pool invested in could turn worthless.

So maybe the equilibrium is that there will be a few large mining pools but none will have more than 50% of the hashrate.


Bitcoin RPC RegTest not validating addresses

You may be trying to validate a mainnet address on a testnet/regtest client.

For the benefit of others:

<?php

require '/tmp/vendor/autoload.php';

$command = new \Nbobtc\Command\Command('getinfo');
$client  = new \Nbobtc\Http\Client('http://username:password@localhost:18332');

# legacy testnet address
#$address = "mvM368BXwRNx4HcYdL8XbU8hAX274gMKcq";
# bech32 address
#$address = "2Mzm5MPhGWTxNcZPGfpW7URR4mASKzsCZ3k";
# mainnet address
$address = "1KJFgSXpPvUthy3a7NxyM66szTkqHabpYB";

$command = new \Nbobtc\Command\Command('validateaddress', [$address]);
$response = $client->sendCommand($command);
$contents = $response->getBody()->getContents();

echo $contents;
?>

I observe that bitcoin 0.18.1 will return as OP describes when attempting to validate a mainnet address on a testnet/regtest client, and return correct details otherwise.

If not, could you edit in to your question the actual address and the bitcoin.conf you're using.

Edit: I notice there IS a difference. I'm getting
{"result":{"isvalid":false},"error":null,"id":null}
vs OP getting
Array ( [result] => Array ( [isvalid] => ) [error] => [id] => )
Perhaps there is some post-processing you're doing to $contents that is losing the value?


I need clarification on moving BTC to another wallet

I would expect the "jibberish key" is the address in this case. The set of words is known as a "seed", and is used to back up all the private keys in your wallet. NEVER share those words with anyone, anyone with those words can spend all your bitcoins.

"Normal" bitcoin addresses start with a 1 and are usually around 34 characters long, made up of lowercase letters, uppercase letters and numbers. An example is 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2. Some bitcoin addresses also start with a 3. More recently a new type of address has begun being used, starting with bc1, but its unlikely you will see these commonly for a while. These addresses are all anyone needs to send transactions to you, they will never need the seed words or the private keys or anything else. Keep those safe and to yourself.

Some wallets such as blockchain.info also use a wallet identifier which is made up of numbers, letters and dashes (-), that is also for private use and does not need to be shared, it is not an address.


You can click Tools-> Reset Blockchain and Transactions.


jsonRPC calling createrawtransaction in PHP

you should pass parameters as an array.

try like that:

$bitcoin->createrawtransaction(
    array(
        array(
            "txid"=>"aed23bb3ec7e93d69450d7e5ea49d52fcfbef9d380108f2be8fe14ef705fcea5",
            "vout"=>2
        ),
        array(
            "txid"=>"b28c740c66726ab2f0397be29f2d25f091b8ab353b98b9ebf9e6ccfd080cdf49",
            "vout"=>3
        ),
    ),
    array(
        "1GTDT3hYk4x4wzaa9k38pRsHy9SPJ7qPzT"=>0.006,
        "1ApD64wpNUM6GBeSmKYhsyaNwFot3FMC5y"=>0.004,
    )
);


how to use multiple time specific address in input scripts with difference balances?

Those are the transaction inputs.

Simple example:

In your pocket, you have 100$ and 50$ and 10$ and if you want to pay for something that cost 160$ you will give the seller 100$, 50$ and 10$ in total 160$.

The same thing in here:

1NDyJtNTjmwk5xPNhjgAMu4HDHigtobu1s (34.3721168 BTC - Output)
1NDyJtNTjmwk5xPNhjgAMu4HDHigtobu1s (10.03140713 BTC - Output)
1NDyJtNTjmwk5xPNhjgAMu4HDHigtobu1s (3.91377693 BTC - Output)
1NDyJtNTjmwk5xPNhjgAMu4HDHigtobu1s (14.88232237 BTC - Output)
1NDyJtNTjmwk5xPNhjgAMu4HDHigtobu1s (8.29127328 BTC - Output)

in total 71 bitcoin


Why are my bitcoin transactions going to 2 addresses

When you have to pay a transction from an address that is only part of the total balance of that address the program you use for managing your wallet (in your case bitcoin core) sends to the destination the amount that you wanted (in your case 0.003), and the rest is sent back to another address of your own (minus the fee).

This is because for how transactions are designed in bitcoin when you make an outgoing transaction from an address you cannot use just a part of it. All of it must be spent in transaction (towards 1 or more addresses) and the rest goes to the miner as a fee.


It is definitely fake, I got the same exact message saying I won the same amount. Please do not drop $200 to buy yourself .006 btc to get your prize, this oozes sketch in every way possible.
The site isn't even indexed by google, seriously. Google "Doxxwallet.com" and the only result that comes up (at the time of writing) is this thread.
Infact, you can view an IDENTICAL site at https://livebtctrader.com/ and at https://trading4crypto.com/
The only thing changed is the name
edit: holy wow, check out this google query. https://www.google.com/search?q="Justin+Hance+and+his+team". Too many for me to be willing to even count, all identical. This person has been doing this for a while


Anyone know how to configure pybitcointools to bitcoin testnet?

There is blockr_fetch(txindex, "testnet") and blockr_push(signedTx, "testnet"). Note the need to use "testnet" as the 2nd parameter.

Reference


Why do miners validate transactions?

Because they want to create blocks, that contain valid transactions. After sending the block to the network, other nodes verify the block for correctness. If the block is rejected, the possibility to "win" is lost...

  invalid transactions

you seem to postulate, that there are many invalid transactions. I am not convinced, this is the case. Yes, everyone can send a tx to the network. This tx would end up in any of the approx. 10.000 nodes. There are far less miners, so the full nodes already filter invalid transactions. A particular wallet is usually not connected directly to a miner. As full nodes validate transactions, the probability that a full node forwards a wrong tx is minimal. If a full node does, there is other nodes, which verify the tx as well, and if this nodes sends faulty tx, he gets ignored by other nodes. I just wanted to state this, to make clear, that malicious crafted transactions have a hard time to make it through to a miner. And yes, the miner himself can generate false transactions, but then again looses all possibilities to win a block.

  Is the reason that there are enough invalid transactions to make this
  an ineffective strategy, because the risk of having mined an invalid
  block is not worth the time savings?

As I tried to explain before, invalid tx are not a common thing. Miners strategy is currently to win a block, maybe with some fees along. So each miner can decide individually, what he puts as "winning strategy". There are often blocks with zero transactions, or very view tx, cause currently the block reward is much higher than fees. This seems to be a valid strategy, not the invalid tx.


Forced fork of older, low difficulty blocks

ChainWork is not compared at each specific height. The Chainwork of Chain A in total (at height 1000) would be greater than the chainwork at height 600 if the two were equal at 600.
If the two chains had equal work at height 1000 (the tip), then you'd have a standard block race, as described in the whitepaper. The fork with the most hash rate (Satoshi calls it CPU power), will continue to produce more work and ultimately outpace other forks.


electrum get transaction amount command line


Is there an altcoin that is only feasible to mine by CPU?

Litecoin is the 2nd most popular currency in the same family as Bitcoin, and:

  It is based on the Bitcoin protocol but differs from Bitcoin in that
  it can be efficiently mined with consumer-grade hardware. Litecoin
  provides faster transaction confirmations (2.5 minutes on average) and
  uses a memory-hard, scrypt-based mining proof-of-work algorithm to
  target the regular computers with GPUs most people already have.

https://litecoin.org/

The intention was to allow CPU mining to be viable, but according to Wikipedia it hasn't quite met this goal:

  Litecoin uses scrypt in its proof-of-work algorithm: a sequential
  memory-hard function first conceived by Colin Percival.[14] The
  original intended benefit of using scrypt was to avoid giving
  advantage to GPU, FPGA and ASIC miners over CPU miners, which occurs
  in the Bitcoin protocol. However, this turned out to be an incorrect
  assumption: GPU mining in Litecoin's implementation of scrypt is
  currently ten times more efficient than CPU mining

http://en.wikipedia.org/wiki/Litecoin


Where is the Coin in the Transaction Hash Chain?

Where is the coin in the diagram above

Nowhere really.

The "Transaction" part contains information about the movement of coins (or rather of fractional values). It doesn't really contain a coin.

To work out where the coins are (notionally), you read all the transactions in all the blocks since the first one and see at which addresses everything ended up.

It's like the paper pages of an accounting-book that keeps track of the movement of conch shells, except there are no actual conch shells. Certainly you won't find any conch shells in the accounting book. Bitcoins are imaginary conch shells - they don't actually exist anywhere¹.

No actual gold coins to be found in between the pages of this ledger

Footnotes:

Also true of USD really. Greenbacks are just pieces of paper that are part of a distributed accounting system.


Ripple: How to calculate transaction ID (TXID)


Hmm this is very strange, make sure that on deleting your bitcoin client (Bitcoin QT etc) is closed.


antminer u3 what can they mine? noob alert

You can only mine altcoins that use the SHA 256 algo.

BTCitcoin(Its funny to write about bitcoin bcoz everyone know this)
21Coin (21)
Peercoin (PPC)
Namecoin (NMC)
Unobtanium (UNO)
Deutsche eMark (DEM)
Betacoin (BET)
Bytecoin (BTE)
Joulecoin (XJO)

10.Devcoin (DVC)

11.Ixcoin (IXC)

12.Terracoin (TRC)

13.Battlecoin (BCX)

14.Takeicoin (TAK)

15.PetroDollar (P$)

16.PremineCoin (PMC) {Premined, Mine only tx Fees}

17.Benjamins (BEN)

18.Globe (GLB)

19.Unicoin (UNIC)

20.Snowcoin (SNC)

see https://bitcointalk.org/index.php?topic=482002.0


If Bitcoin time value is 4 bytes, is that Unix time from 1970?

It is a Unix timestamp, but let me correct a minor detail:

The Y2.038 problem applies to a signed 32 bit number. The Bitcoin timestamp is unsigned, so it can represent the date for twice as long. Therefore, it will become a problem in 136.1 years, or in the year 2106.

Somewhen before then, there will need to be a hard fork.


I just sent my Bitcoins to a Bitcoin Cash wallet. Did I lose my coins?

Bitcoin Cash is just a future right now:
https://coinmarketcap.com/currencies/bitcoin-cash/

It won't exist until Aug 1st.


Is there any open source tool to verify segwit transaction without publishing it?

You can use the testmempoolaccept RPC command if you're spending an existing output.

But setting up a regtest to make fake transaction is preferable.


Is there an Android Bitcoin app that can interact with other Android Apps on the same device?

The answer is the integration-android subproject of bitcoin-wallet.

Start with the source repository for
the Bitcoin Wallet.

The source code for in-app payments is in the BitcoinIntegration.java file, which is under the integration-android directory.

Instructions for compiling this subproject and example source code for using it are given in this slide presentation by Mr. Schildbach

There is also a sample android app that demonstrates this feature.

My thanks to Andreas Schildbach for personally sending me the answer to this question!


OSX Bitcoin Core frozen on login while "Activating Best Chain"

I've just fixed the same problem by deleting a circular symlink:

lrwxr-xr-x    1 2can  staff       17 Mar  7  2015 bootstrap.dat.old -> bootstrap.dat.old

in my data folder. The db.log file contained only one repeating error:

Too many levels of symbolic links


What is the reasoning for Grin's high inflation rate?

See this page of the wiki for a brief set of reasons:
https://github.com/mimblewimble/docs/wiki/Monetary-Policy


Purpose of a BlockChain in local wallet application

The blockchain is the full record of all Bitcoin transactions. Without it, we wouldn't know how much each address is able to spend.

There are some clients (called lightweight clients) that rely on their peers' blockchains while others like Bitcoin Core (sometimes called a full client/node) store the blockchain themselves. If you choose a full client, you should expect to download and store the blockchain (~21 GB currently). You can speed up the initial sync by download bootstrap.dat from a torrent, as instructed here.

What you're describing, though, is not cold storage! Cold storage means that the keys are only accessible via offline means, like a piece of paper, or a computer that is never connected to the Internet.


Can you detect that the addresses generated by an HD wallet came from a single wallet?

No.

All addresses generated by HD derivation are indistinguishable to someone who does not know the parent's master key (the private one for hardened derivation, the public one for normal derivation).


Is it possible generate three public key( address ) by only one private key?

What do you mean by "public key address" ?

From one private key, you can generate:

A pay-to-pubkey hash address that uses the uncompressed form of the public key.
Pay-to-script hash address, where the script is (1)
Pay-to-script hash address, with a  OP_CHECKSIG script
Pay-to-script hash addresses, paying to 1-of-1 OP_CHECKMULTISIG with uncompressed pubkey.

And all of the above could use the compressed form of the pubkey to get another 4 addresses.

So one private key can be represented by eight different addresses.


What is a good resource to help newbies choose their first wallet/s?

Essentially it boils down to the tradeoffs between security and convenience.

Instawallet is incredibly convenient, but not all that secure (as no password is required, and if you lose the URL, you lose the ability to spend the funds.)

Paytunia was a great shared (hosted) EWallet for a beginner, and there is a mobile app (for Android). A new version of Paytunia is in the works for a 2014 release.

Blockchain.info/wallet is a great hybrid (browser-based) wallet and also has a mobile app (for Android, and for Cydia / jailbroken iPhones). Configured properly, with backups sent to your e-mail inbox, this is probably the best combination of security and convenience.

If you only need a mobile wallet, the BitcoinSpinner works well also.

http://en.bitcoin.it/wiki/EWallet
http://en.bitcoin.it/wiki/Mobile_Payment_Apps


Unable to install MultiBit 64bit version

This can be caused by the multibit.exe executable not being able to find the 64 bit version of Java.
There is some discussion about it on the MultiBit issues database here:
https://github.com/jim618/multibit/issues/376

tl;dr If you install the 32 bit bit Oracle Java runtime MultiBit should find and use that.


Miner transaction selection - how are sigops considered?

For the purpose of mining transaction selection Bitcoin Core converts sigops into an effective weight value based on the ratio of the limits. If the weight implied by the sigops count is higher than the true weight, the higher value is used for fee handling calculations. On any kind of remotely sane transaction this has essentially no effect, but eliminates your suggested attack.
See the -bytespersigop setting. The default value of 20 is somewhat less than the ratio of the limits, because the true value distorts costing for non-attack transactions a bit too much, and the smaller value is sufficient to make this kind of attack uninteresting.
It does mean that in the presence of attack transactions paying moderately high fees a miner might earn slightly less income than one that was more savvy about solving this multidimensional optimization problem. However, since the attack doesn't work, the transactions don't get made, making this slightly sub-optimal behavior irrelevant.
The tapscript proposal specifically doesn't use sigops at all to avoid these sorts of issues.


Is there a service that let's me "send" bitcoins via email and doesn't require any account creation/login?

This is technically possible and can be easily implemented, but I see two problems, which may be stopping people from creating such a service:

Trust: how can the service ensure its clients that it will not
steal their money?
Security: email is not secure, a man in the middle can access the
email message on its way before the recipient, and steal the money.

If there is a solution to these two problems, there will be demand and implementations of such service.


Start cgminer only on the second card HOW?

to maps gpus i use this script:

cgminer -n option

Timeout /t 3600

Make it a .bat file and put it in the same folder as you cgminer, then you can tell witch gpu that is 0,1,2...

but you have to turn off power saving in windows to prevent you 280x form sleep, if you don't have a dummy-plug or an screen put to that device.

I used this guide for all start up information's: http://www.cryptobadger.com/build-your-own-litecoin-mining-rig/

Regards

EDIT: and when you use the -d command remember to have a space before the number.


How can I withdraw Litecoin from a paperwallet?

Both blockchain.info and bitcoinpaperwallet.com are for Bitcoin, you need a Litecoin wallet and then import your private key to that.

The most reliable way to have a Litecoin wallet is to download and run the official Litecoin Core client, although you can use web based wallets as well but as I have no experience using them I can only give you a search link.

With Litecoin Core you will have full ownership over your wallet and you will not be depending on the service availability of the website, but this also means you will need to backup your wallet as the wallet.dat will contain your coins.

Importing a private key in Litecoin Core is the same as with Bitcoin (based on this question):

click on 'help' in the menu bar (top right)
click on 'debug window'
select the 'console' tab type: walletpassphrase "passphrase here" 600 (only if you set up a passphrase to protect your wallet earlier (you should!))
type importprivkey [private key here]

You will have to wait the synchronization to finish to see your balance.


Bitcoin Proof of work puzzle inconsistency

The Proof of Work is not really a puzzle that is solved.

For a block to have a valid proof of work, the hash of the block header must be less than a given target. This will result in the hash having some number of leading 0's. People will then simplify that to be "some number of leading 0's" when explaining PoW to people. But it is actually less than a certain target value.

The target value is used to determine the difficulty (it's an inverse relationship: as the target decreases, the difficulty increases). If you were to calculate the difficulty of a block in the same way with its hash, then the difficulty of a block must be greater than or equal to the network difficulty.


Can you search a transaction by quantity?

There are at least 2 options that I am aware of:

https://www.goochain.net/
https://github.com/bitcoin-abe/bitcoin-abe

The first option is a web based tool that will search the block explorer of your choice. The second will take the blockchain and load it into a database which you can search for your desired criteria.

I just ran a test search on goochain with the criteria below and found 26 transactions:

From : 2016-05-03 Tue 03:00 UTC

To     : 2016-05-03 Tue 04:00 UTC

3.1 BTC ≤ Amount ≤ 3.2 BTC


Bitcoin Unconfirmed Transaction Tiny Fee

Ok question was posted in error. The fee was actually around $50 for $7500 which is ok and got 4 confirmations in 30 minutes. But I am  sure the initial fee was tiny (like 50 cents) and then changed to unknown, turning out to be the higher figure.


What happens to a spent Bitcoin that was earned from a chain replaced by a longer chain?

Yes, Moe's transactions (both the coin creation one and the payment transaction) become invalid if Larry mines a conflicting blockchain that has more work (almost the same as longest, but not quite) than Moe's blockchain. So Curly would be without payment and Moe would have gotten himself a free pair of goggles.

Now if Moe and Larry were the same person this would be a Finney attack where Moe/Larry are intentionally defrauding Curly.

Of course there are built in safeguards to protect against this. Firstly, Moe cannot spend newly mined Bitcoins until 100 blocks have been mined on top of his block. But even if he did wait 100 blocks before transacting, Curly could still be defrauded.

The solution to this is for Curly to wait for the payment transaction to get a few confirmations. By waiting for confirmations, the amount of hashrate that Larry would need in order to change the blockchain to not include Moe's transaction greatly increases. After a few blocks, it is basically infeasible and thus it can be said that the transaction is permanent and cannot disappear.


How does the bitcoin exactly prevent Double spending attacks?

A full node is a computer running full node software like bitcoin core that has verified every transaction in the blockchain and continues to verify new ones as and when it hears about them. Every full node validates transactions and rejects double spends. If it has learned of a transaction that spends certain coins it will reject any new transaction that tries to spend those same coins unless the original transaction has been marked as replaceable.

Because of the nature of computer networks it is possible that not every node has heard of every transaction. It is also possible that different nodes will have heard of the same transactions in different order. The blockchain fixes the order and history of the transactions so that everyone agrees on the state of the ledger. Once a transaction has been committed to the blockchain and enough blocks have been added to the chain after the block containing the transaction that transaction cannot be modified.

So every node individually prevents double spends that it hears about and the collective consensus of what transactions happened or did not happen comes through the blockchain.

  What exactly the process that minors follow to detect that a certain transaction is spending the bitcoins twice?

Miners aren't the only ones validating transactions. Like I said every full node validates transactions to make sure that there are no double spends.

Miners follow the same process as full nodes. The full list of validation rules is given here.

  Why don't minors (voters) simply accept a new block without even check if it's truly valid or not? what are the consequences?

There is no voting in bitcoin. It's not just miners who need to check the validity of blocks. Full nodes run by users check it too. If a miner generates an invalid block then full nodes will reject it and the miner will lose money because he will have wasted electricity and time producing that block.


Can i combine 2 devices to get more power for mining

Yes. To do this simply mine with both at the same time. A mining pool will never give out the same work twice. So mining with two 16 GH/s devices will be the same as one 32 GH/s device.

If you mine at the same mining pool with both then the pool will show you mining at 32 GH/s.


If you were to purchase bitcoin and send it to an address in your wallet, then yes, you would have to wait until your wallet synchronized in order to spend the bitcoins.

However, in the meantime, consider spending it directly from your exchange account, especially if you're going to buy bitcoin and spend it right away.

Alternatively, consider using an online wallet. I recommend Blockchain.info or InstaWallet.


Which parts of a bitcoin script are embedded in the blockchain?

I assume the scriptPubKey is contained in a UTXO, and therefore embedded in the blockchain. Since, this is the script used to unlock the input.

Yes, absolutely.

  Is a scriptSig also embedded in the blockchain?

They're part of transactions, and transactions in their entirety are part of the blockchain. All data that is directly or indirectly needed to validate blocks must be part of the blockchain, or the network wouldn't necessarily come to an agreement.

For example, if scriptSigs were not part of the chain, you could create a valid and invalid version of a transaction, broadcast the valid one, but then once you saw it in a block, replace it with the invalid one. Now the node you're passing it onto would think that block was invalid, while others thought it was valid - leading to a permanent fork in the chain.

  Or is it only held in memory by miners to verify signatures before confirming a block, then discarded?

That's an implementation detail, and completely independent from the rest your question.

Yes, some nodes only download (all) blocks, validate them fully, and then throw them away after validation ("pruning"). Those blocks and everything in them are still part of the blockchain - these nodes simply don't store the full blockchain.


My Bitcoin Core wallet does not receive BTC

According to the Blockchain, you transferred 0.01 bitcoins to the address 1NEf87g56TMDJLUs9JfXzyenz2EUUSMqj1

If you can see this Bitcoin address in Bitcoin Core wallet (Menu File > Receiving addresses) and Core is fully synchronized then something is wrong, as this shouldn't happen (see below). If you can't see this address, maybe you created/opened a different wallet and then you need to open the correct wallet, containing this address.

You could try to re-scan the blockchain for missed transactions, that is transactions that don't appear in Core. Exit Core completely (Menu File > Exit), wait for the program to exit and then start it by adding the command line option -rescan This might take a long time, depending on the speed of your computer and hard disk.


Unable to createrawtransaction - “Input not found or already spent”

You're trying to spend a 25.04826416 BTC output that was created by mining in May 2015, which was spent a few days after its creation: https://blockstream.info/tx/45fd1c838a56798fe027f61bdfdab83845399175a3b9cced397c5a38e669bb49?input:14
Even if you have the private key for the address that output used at the time, the coin can't be spent again.
I don't know what you're trying to do - but spending the same coin twice isn't allowed.


Running bitcoin node with already verified blockchain

I've found it. I've removed testnet=1 and now it's fully verified. reindex* options are not necessary.

Huh, I had verified the blockchain from main net. I didn't know the testnet was using a separate blockchain?


Can a Trezor accept/use a private key created independently offline?

You cannot import individual private keys into a Trezor. However you can generate your own mnemonic offline and import that into a Trezor.


Can ASIC or FPGA boards be used to mine Litecoin?

Yes, there are designs for Litecoin mining FPGA bitstreams, but they are not very efficient currently. ASICs are much more efficient and if anyone finds it lucrative to invest in development of Litecoin mining ASICs, they will push out GPU mining. (The efficiency ratio between ASIC and GPU will be lower than with Bitcoin though).


The client will often know about received transactions seconds after they have been sent. Transactions that have not gotten into a block yet are said to have 0 confirmations. You can see them by adjusting the parameters of listreceivedbyaddress, etc. so that they show 0-confirmation transactions.


There is a lot of applications allowing you to easily trade bitcoin on your mobile phone. Almost every bigger Bitcoin Exchange has one. Take a look at cex.io, bitfinex.com and many more, they do have mobile apps already. There are also decentralized exchanges with mobile applications too. If you check https://coinmarketcap.com/rankings/exchanges/ you will see a quite comprehensive list of exchanges that we have already.

Another thing is that there is no such thing as an app for trading Bitcoin without having proper infrastructure, the trading engine that can handle large volumes and real-time trading, agreements with banks, special permissions, and licenses so my simple answer would be - no.


What Bitcoin-esque alternatives are there?

There are a number of other cryptocoins in use alongside Bitcoin, the most notable are:

Testnet Bitcoins (used only for testing Bitcoin applications, but they are an important mention) - they work exactly the same as Bitcoins.
Namecoins - coinage used as a distributed naiming system blockchain. Their most notable feature is that they can be merged mined with Bitcoins.
LiteCoins - "silver to Bitcoin's gold" - their blocks are generated every 2,5 minutes, and their hashing algorithms are more CPU-friendly (mining with graphic cards doesn't work well with those).
SolidCoins - 2 minute blocks, there isn't a limit on how many coins will be generated, CPU friendly, difficulty is adjusted more often, close-source. The SolidCoins have undergone a "reset" recently and have earned themselves a negative reputation for how some issues were handled.
GeistGeld - 15 seconds blocks, making it the fastest alternative crypto-currency.
I0coin - they don't list any difference from Bitcoins on their website
Ixcoin - same parameters as Bitcoins, asides more coins being generated each block (thusly, all 21M coins will be generated sooner)
Tenebrix - CPU friendly, a few million coins pre-minted

A list of them is also maintained on the Bitcoin Wiki.

There is a relative ease in creating new cryptocoins, as you can just tweak the main client, encode a new genesis block and start your alternatives with small effort.


cloning bitcoin how bitcoin find new nodes

The client has to download a list of peers when it connects for the first time to the network. Known peers are broadcasted by nodes who previously knew other nodes. All this chain starts however from at least two IPs which are known to both of nodes.

Your clients will check for known peers, after they downloaded a list of known peers from the VM2 (based on your examples) to establish a connection in the event of hardcoded or conf nodes fails.

To be more precise:

The Bitcoin client has a number of sources that it uses to locate the network on initial startup. In order of importance:

1) The primary mechanism, if the client has ever run on this machine before and its database is intact, is to look at its database. It tracks every node it has seen on the network, how long ago it last saw it, and its IP address.

2) The client can use DNS to locate a list of nodes connected to the network. One such seed is bitseed.xf2.org. The client will resolve this and get a list of Bitcoin nodes.

3) The client has a list of semi-permanent nodes compiled into it.

4) The client can connect to a well-known IRC network, irc.lfnet.org, and find other nodes that way. (This method has been removed as of version 0.8.2)

5) It takes IP addresses from the commandline (-addnode) or bitcoin.conf file (addnode=).

Step 5 in particular:

Just add in your bitcoin.conf (or yourcoin.conf) file an addnode=ip.ip.ip.ip parameter as per your nodes.

With this method you can add every kind of peer, from personal PC to server and exchanges nodes or whatever.

Hope it helps.


The main issue about using a non-segwit inputs in the funding transaction or a p2sh output as the channel anchor is the transaction malleability.

The recovery guarantee before a channel is funded relies on the commitment transaction building on top of the funding transaction. If the funding transactions txid were to be malleated, the commitment transaction becomes invalid and the funder becomes beholden to their channel partner for recovery.

In the case of using a p2sh output as the channel anchor, malleation of a unilateral force-close could be used to prohibit the counterparty from punishing the publication of an outdated channel state.

Therefore the funding transaction must be non-malleable and the channel anchor must be held in a script that is not malleable upon spending.


Does the bitcoin block contain minimal transaction detail? (Is it as private as possible given the proof-of-work design?)

In order to send someone some coins, you need to know their public address.
In order for them to redeem their coins, they have to show everyone that they possess the private address associated with that public address.

You could try encrypting your public key by some means and later decrypt it when you want to spend the coins, but you'd probably have to provide something that could identify you similarly to using a public key.

You could alternatively encode only transaction hashes in the block, rather than actual transactions and only send the actual transaction to the peer you are sending the coins to. This approach though creates a lot of new problems with validation and so forth.

All in all, Bitcoin protocol doesn't have much excess data. In fact, by today's standards one may say it is trying to be too slick at times (say by using something like VarInt).


Always rejected shares (Antminer U3 / Minera /CGminer)

An Antminer U3 is a SHA256 miner, it can not mine anything else. The shares are being rejected because they are effectively nonsense to the receiving pool, as they do not satisfy the difficulty requirements they have asked for.


How to properly backup a address with private key after 'addwitnessaddress' command

Addresses beginning with a 3 generated using addwitnessaddress are called P2SH-P2WPKH addresses. That means it is a Pay-to-Witness-Public-Key-Hash (P2WPKH) script embedded in a Pay-to-Script-Hash (P2SH) address, which starts with a 3. To back up this type of address, you need to back up the private key used in the P2WPKH part. If you know which address you used when you called addwitnessaddress, you can call dumpprivkey on that address.

To restore from that private key, you should be able to just import the key into your wallet and call addwitnessaddress on it again. Note that addwitnessaddress is an experimental RPC call so the method to restoring may change in future, but you can always generate the corresponding public key hash (address) from they key, create a P2WPKH witness script for it, and wrap it in P2SH if you have the key so it should be a sufficient backup


Trying to understand Pay-to-Public-Key-Hash

So how we can verify this transaction is valid without having the public-key?

The signature includes the public key corresponding to the private key that made the signature.

  If we attach the public-key with the message then why spending time finding hash of public-key in the first place?

It's not clear what you mean by "the public key". Whose public key are you talking about? Bob's public key isn't in the message.

  Are we storing the public keys in some centralized database?

When a public key is submitted with a signature, the public key is in the transaction. The transaction is included in a block, and that block is part of the blockchain forever.

  If the recipient provides the public-key and verifies the transaction is valid how others can validate that was a valid transaction?

It's not clear what you mean by "that". To validate a transaction, you just have to make sure it's entitled to claim the funds it tries to claim. You don't particularly care what it does with those funds, just that it has the right to decide what to do with them. So you don't need to know much about the recipients -- only enough to identify them when they come to claim their funds. The hash of their public key does that.


It's code from my video.
In k_priv = k_priv.get_verifying_key() it should be capital K, I was trying to be as close to original biputils lib as possible,
Then you use it in pubkey related data derivation:
if K_priv.pubkey.point.y() & 1:
    data_pub= b'\3'+int_to_string(K_priv.pubkey.point.x())
else:
    data_pub = b'\2'+int_to_string(K_priv.pubkey.point.x())

Sorry for making it confusing, I'll try to represent it better next time :)


Honestly your question show a lack of research but anyway.

Mining Bitcoins is basically letting your GPU run so you can earn a few amount of Bitcoins each x amount of time (keeping it simple).
Mining bitcoins is no longer worth it considering the difficulty of the actual blocks, you won't make money with mining unless you have a few thousands ready to invest in mining rigs.

If you want to make money with Bitcoin, you may want to buy it from specialized websites (Coinbase, Circle, Localbitcoins) for price+1-3% and then resell it on forums for price+10-15%.

If you want to make money with mining in general, try to search which currencies are actually skyrocketing (today it's Ethereum, yesterday it was Litecoin, who knows what it will be tomorrow?) and rent mining rigs - it might be profitable but it'd still be an investment. You might lose it all.


Where can I find a graph of Bitcoin value vs USD for over 60 days?

Bitcoin Charts currently have charts of up to a year in length, as well as "all data" charts.

Example 360 days:

http://bitcoincharts.com/charts/mtgoxUSD#rg360zvztgSzm1g10zm2g25


oops, I should make it an answer, not a comment:

Tera Hashes - a kind of a speed indicator, how fast the mining machine can calculate. "The 13.5 TH/s is $2773.28 US" would mean, a machine with such a power can generate this amount of Dollars...


Is it possible to recover coins after clicking on Reset Options button?

This post helps me detect a problem and fix it.

  It looks like you had set a different data directory and resetting the
  options cleared that setting.


Is it possible to start Bitcoin mining using an iPhone with 4G internet connection?

Yes. It is theoretically possible to start mining with an iPhone.
Your internet connection is almost completely irrelevant and your space is also not important. The important thing is the power of your CPU.

But: Mining with an iPhone means mining with CPU. And that's completely unprofitable. Even mining with GPU is not profitable anymore because of all the ASICs. You would fight against big mining pools and you would probably never be the first one who gets a hash with 20 zeros. So, you would waste a lot of energy and don't get any reward. Not worth it!


No, an email address cannot be obtained from a Bitcoin address. Addresses can be generated on an offline PC by someone living in a desert who doesn't even have an email address.

Most wallets won't ask you to provide any personal information, they won't even ask you which country you live in, let alone contact information like an email address. Such personal information usually only obtained when you register for an account on a website. I, for example, never gave an email address of mine out to obtain a wallet. And even if the owner of that address used a web wallet which requires them to state their email address (web wallets don't even have to do that, it's just something they usually do), this doesn't mean that anyone but the service provider has access to that contact information. Depending on where the service provider is located, it might even be illegal for them to share users' contact information with others.

I don't know where you got that address from but if you sent money to a random address, chances are that no one has access to it and the UTXO generated is forever unspendable.


there are no coins in it.

Bitcoin wallets do not really contain coins. The only important information in a Bitcoin wallet is the private key (or several if you imported several rather than sweeping). Bitcoin wallets are more like your key-ring and not like the leather wallet in your back pocket.

Knowledge of how much money you control is in the public shared/replicated blockchain.

A wallet will typically show you a "balance" which is an amount it has calculated by examining the blockchain. A "full-node" wallet might not show the correct value for the balance if it has not yet "synchronised" its copy of the blockchain. An SPV wallet might show the wrong amount if it cannot contact a Bitcoin full-node.

  Wallet.dat in the mobile hard disk is not backed up after sending Bitcoin

Although frequent backups are a good idea, you should be able to recover control over all your money just by using the private-key(s) (or seed-phrase for some wallets) to recreate your wallet. You should practice this sort of recovery. Neither the private key nor the seed-phrase change when you spend Bitcoin.


Bitcoin is not anonymous, it is pseudonymous.

When you send bitcoin to someone, they will tell you what their bitcoin public address is, and then you will send bitcoins to this public address. A public address is a random-looking string of numbers and letters, here is an example I just pulled randomly off a block explorer website:

15x6Ggmjwu6h5nDkidnkqpAms2L6JeuENJ

Privacy is maintained by not using an address more than once. If you have multiple people pay you at the same address, then those people will be able to know the other transactions you were involved in with that address.

Each address has a corresponding 'private key', and you need to know what the private key is in order to spend the funds. So you can tell people your public address(es) so that they can send money to you, and then you keep your private keys safe so you can later spend those coins! (wallet software automatically keeps track of private keys for you)


Which ecommerce carts support bitcoin with the biggest user base?

For a standalone cart (no payment processor intermediary) maybe the OSCommerce cart?

Here's the full list:

http://en.bitcoin.it/wiki/Category:Shopping_Cart_Interfaces

The most widely used cart though probably is the Wordpress ECommerce cart plugin through BitPay:

https://github.com/bitpay


How are double spends and "dropped" transactions represented in BlockChain.info API

Double spend transaction (transaction that lost the competition) have no block height. So you can check this field.

Also you review other approach using callback or webhooks to get update that new transaction arrived. Most blockchain API provide this service.

You can check also our API https://bitaps.com/api/#Create_payment_address

Your task in this approach is only create callback handler.


Working with Bitcoin node on Windows as a developer?

I'm a web developer looking to integrate a Bitcoin node into a PHP application and I am unsure how I would go about interacting with the Bitcoin core in a developer environment for my machine.

The most straightforward way of doing it would be to just use JSONRPC to hit bitcoind's API.

My goal is to pull transaction history on a particular address without using any 3rd party APIs and as such I need to use some sort of Bitcoin interface to do that.

bitcoind doesn't allow you to directly access an "address mapping". Some applications (notably Electrum servers) build additional indexes which allow them to expose you "by address" APIs and other handy informations.
This usually is a tradeoff between storage vs efficiency.

I believe that I need to use the Bitcoin daemon in some sort of manner however I do not know how to use it on my current PC as It is a Windows 10 machine.

Bitcoin-core allows you to build on Windows and provides Windows binaries as part of the releases.

More subjectively, I usually recommend the Esplora API (which is more precisely the electrs fork of Blockstream's API) which uses quite a lot of storage but is very efficient for address-based requests.
You can start it quite easily by using the Docker instructions, and for example set it up behind an nginx reverse proxy on a server so you can hit it (or just use Docker on your Windows machine).


What are the differences from the 2 main mimblewimble implementations, BEAM vs GRIN?

Given the alleged goal of creating a politically independent means of value exchange, the fundamental differences between the projects are extremely dramatic.

Grin has no investors, and every aspect of its development is voluntary, from the mathematics to the aesthetics. There is one paid developer who volunteered for the project and subsequently the community has raised money through donations to pay for him to continue to work full time on the project [1]. There is no incentive to donate to grin except to see the project continue to be developed. The grin community skews toward idealistic/cynical, paranoid, inspired cypherpunk types. Grin is a bonafide ad-hocracy. No one can get grin coins without mining or trading them; there is no premine, presale, ico, instamine or anything else of the sort [1.5]. The core developers of grin have no advantage over anyone else for getting grin coins. It's nobody's business why they are doing it, but as far as anyone can tell it's not for a quick buck.

On the other hand...

Beam pre-sold an unknown amount of tokens for an unknown amount of millions of dollars to investors in a private ICO. Unfortunately a source for this is difficult to find, because BEAM specifically does not mention any details anywhere on their site about this private ICO; we can only speculate as to why they feel the need to be opaque. If you email them or ask their team members on twiter or telegram however if they pre-sold tokens to investors, they will tell you they did.

BEAM is a for-profit tech company that exists to enrich its shareholders, team members, investors and/or whoever stands to be enriched (they are not required to share this information). Beam for this reason has full-time, paid developers, marketers, advisors. CEOs, CTOs, CFOs and the rest of the heavy bureaucracy needed to get rich as quickly as possible are the key community members of BEAM [1.6125]. BEAM literally solicits people to become "ambassadors" to help simulate a community [1.725].

Beam has less interest than grin, for these reasons, in being "fair." In fact being fair is almost entirely antithetical to the goals of for-profit company, profit being specifically to make money at another's expense. At launch BEAM blocks were being mined every second, heavily enriching early miners. One of the core advisors to beam, a man named guy corem, is also the owner of an ASIC development company [2]: Guy is in a position to enrich himself twice, once from selling BEAM tokens allotted to him by the 20% centralized tax taken from miners securing the network, and again by using insider information to develop secret (and/or public) ASICs to mine BEAM at a severe advantage [3].

People who overlook the delicate premise of a truly sovreign currency, and misunderstand how neutral  and transparent the actual mechanics of such a network must be to even begin to be viable, can see that BEAM has a lot of things working against it to ever be useful.

Bitcoin came around to programatically and transparently remove the need for a "Federal Reserve" and provide the method for indepentent power/organization enough to maintain a high value, public ledger. BEAM appears to just be replacing the Fed with their own 20% tax and oversight. It is absurd if you imagined some central entity taking 20% of every single dollar in the entire economy and using it to pay a group of profit-oriented early investors (and of course, to maintain its own power). There is no oversight whatsoever except what BEAM says. If you ask about their transparency they will remind you that, of course, their code is "open-source (TM)" (except the wallet update they released right after they rushed to launch their mainnet, albeit for understandable reasonings.) [3.333333]

At the end of the day the people you have to trust to use grin have less power over the network than the ones you have to trust to use BEAM. This is the most important distinction for me personally.

[1] https://www.grin-forum.org/t/funding-campaign-yeastplume-march-to-aug-2019/1697

[1.5] https://github.com/mimblewimble/docs/wiki/No-this%2C-no-that

[1.6125] They have hilarious twitter handles too. I haven't looked into where they got these people. https://twitter.com/BeamCTO

[1.725] https://medium.com/beam-mw/join-beams-ambassador-program-24905b61dba4

[2] https://www.crunchbase.com/person/guy-corem#section-overview

[3] There is no evidence except thousands of years of human nature that Guy is already planning to do this (well that and the bare evidence that he runs a cryptocurrency ASIC company and is a lead advisor and insider to a for-profit cryptocurrency). That he is in a position to become corrupted by greed is dangerous enough given overarching premises we're dealing with. There is of course a chance Guy is a one in a trillion saint beyond human temptation, but then, why does he spend so much time on twitter?

[3.3333] https://www.reddit.com/r/Mimblewimble/comments/aej0gt/beam_is_currently_asking_everyone_to_download_and/


First, where do these time samples come from: when your client connects to peers in the network it exchanges a version message with them. Among other things this message contains the current UTC timestamp at the peer. Your client then calculates an offset between the time at its peer and its own clock. The network time is simply the local timestamp + the median of all offsets of its peers. So you can see that we have a relatively simple attempt at synchronizing the clocks in the network, but depending on the sample of peers you connect to they can still vary wildly.

About enforcing the timestamps: there are very few places the timestamp appears in the communication between peers, likely the only place where it is actually enforced is in the block header. Should a peer receive a new block while being synched with the network, and the timestamp differs more than 2 hours from its local timestamp, it'll discard the block as invalid (source). The idea behind this check is that a client could attempt to skew the perceived difficulty seen by a node that is synchronizing with the rest of the network.


How Bitcoin decide which scriptPubKey use?

The protocol is not what decides the scriptPubKey, it's your wallet that creates the transaction. Your wallet chooses what scriptPubKey to use based on the address that it is given. It uses P2PKH for 1... addresses because that's the scriptPubKey that that type of address specifies. It cannot use those addresses for P2PK because they do not contain enough information for P2PK - they only have the hash160 of the pubkey, not the full pubkey itself. Additionally, using a different scriptPubKey for those addresses would mean that the Bitcoin is sent to a scriptPubKey that the receiver is not necessarily watching.
The same applies to all of the other address types - the address type specifies the scriptPubKey to create.

Why I have P2PKH instead of P2PK?

Because that's the address type you imported. You are using regtest, so P2PKH addresses begin with m or n.

And how can have the hash of my Public key if I imported just address (HASH160(PB))?

The address specifies the hash.

And the last question, I understand that if the wallet find the 1 as the first char it apply P2PKH by default. How Can I use P2PK instead (study purpose).

You cannot. P2PK does not have an address type. There are no P2PK addresses.
Some software and blockchain explorers will show P2PKH addresses for P2PK scriptPubKeys, but this is incorrect. P2PK scriptPubKeys do not have a corresponding address.


How is the Bitcoin transaction fee calculated for small transactions

You can use bitcoin-cli estimatefee to estimate the fees required, and settxfee to set it.  It's usually a bit trickier on the command line, a GUI wallet should show this information before you make the transaction though.


No. Verge uses the Scrypt mining algorithm, not the SHA256d algorithm that your block erupter implements.