TL;DR: select Show Addresses item from the View menu. Then click the Addresses tab.

  First, I had a bitcoin address ...

A Hierarchical Deterministic (HD) wallet has many addresses.

  ... and I used it once to receive BTCs and then it changed.

That is normal, for privacy reasons, an HD wallet will generate a new receive address for each transaction in which you will receive BTCs.

  I can't find my bitcoin address

Look under the "Addresses" tab

(from a beginners guide)

  It will be hidden by default. To reveal it, select Show Addresses item from the View menu.

  i checked according awebanalysis.com/en/bitcoin-address-validate

I don't know that site but maybe you mis-typed an address or that site doesn't know about the type of address your wallet is using. Some online sites are not up-to-date with the latest Bitcoin features (e.g. Bech32 type addresses that start bc1...). Try another, for example http://lenschulwitz.com/base58


How can this input address have multiple values at the same time?

What's happening in this transaction is that the same address (1AhN6rPdrMuKBGFDKR1k9A8SCLYaNgXhty) is claiming different outputs. You can see which output it's claiming by clicking on the "Output" link available for each input.

This is a common scenario where a person has their coins spread across several addresses.


Confused about input and output spending limitations and consolidation

I spent some time researching the problem and learned that all money in an address must be spent at once.

This is incorrect. The concept of an address does not even exist at the protocol level.
A transaction has inputs and outputs. Every output constructs a "coin" which has an amount and a locking script (encoding the conditions for spending it, which is often - but not necessarily - representable as an address). Inputs consume coins (in their entirety - every coin can be spent exactly once). Transactions can be seen as melting down old coins, and reforging new ones with them.
There are no rules about the locking scripts of coins you're spending. They can all be the same, they can all be different, and there may be other coins with the same locking scripts that aren't spent by the same transaction. Simply put, the Bitcoin protocol has no concept of "all coins associated with the same locking script" - this is only added by wallet software and block explorers for human consumption.

Is this configuration valid? Or will there be an error when I try to commit the transaction? Or will all the other inputs to the address be permanently lost? I am too scared to try it.

It is valid.

And why was Electrum moronically trying to force me to spend all of the address at once, phenomenally increasing the fee when I was perfectly happy leaving the rest of the damn money exactly where it was. And why are there so many articles online explaining why you have to spend inputs all at once?

I can only speculate here, but one reason may be privacy. By definition, multiple coins associated with the same address/locking script can be spent by the same people. Thus if you spend in multiple distinct transactions, you're revealing to the network that those two transactions are related to the same entity (you). Because of that, it is preferable to always spend all these coins simultaneously, the minimize how much you reveal.
Of course, in an ideal world you don't reuse addresses, and you never have multiple coins associated with the same address in the first place (except perhaps dust spam).


Idea on how to keep my altcoin private, make it impossible for others to mine even if they have my altcoin's source code

I've been doing freelance to create an altcoin and my client wants this new coin to be private which means only authorized users can mine and use the coin. What I've been doing so far is to make a new altcoin, keep it in a private repo

Bitcoin sounds like a poor fit for your application for two reasons. First, Bitcoin is designed to keep working even if some people tamper with the inner workings of their client. If you're willing to give that up, you can build something a lot simpler. Second, it's designed to process transactions in a decentralized way, which sounds like the opposite of what you want. If you give that up, and use a central clearinghouse, you can build something much simpler.

  So I was wondering how could someone get my code and whether he was able to mine my altcoin.

I don't know whether this person has the source code of your altcoin; I don't know what security measures you've taken. However, having the source code of your altcoin is not nessesary to connect to it. As long as a peer can fake its way through a version message, that's good enough to make it into getpeerinfo. The two clients don't need to be running the same code.

  And do you have any ideas or suggestions on how I can stop someone from mining my altcoin or only allow certain machines from certain IP addresses can connect to my network and mine even if they have my altcoin source code?

Bitcoin's design is going to make that quite difficult. Bitcoin uses a gossip network to move blocks around. If I mine a block, and I tell you about it, then you will tell all of your friends about it. They will in turn tell all of their friends about it too, until everyone knows.

This means that if a single node is misconfigured, and allows external blocks, it broadcasts those to every other node on the network.

It would make more sense to modify the client so that blocks must be signed by a key that is only held by your client.


Are NXT messages stored on the blockchain and are they encrypted or publicly viewable?

Yes they are stored in the blockchain.

They are limited to 1000 characters.

They do not have encryption built in, but encryption can be built on top. You can view the last 300 messages here. You can also use that site to browse through blocks and see the messages embedded in each one.


Difficulty is a measure of how difficult it is to find a hash below a given target.

Target is a 256-bit number (extremely large) that all Bitcoin clients share. The SHA-256 hash of a block's header must be lower than or equal to the current target for the block to be accepted by the network.

Target = current difficulty = output by Bitcoin's getDifficulty RPC call
(Difficulty is basically a different representation of the target to make it easier for normal humans to understand it.)

Hashrate is computed hashes per second.

difficulty = hashrate / (2^256 / max_target / intended_time_per_block)
             = hashrate / (2^256 / (2^208*65535) / 600)
             = hashrate / (2^48 / 65535 / 600)
             = hashrate / 7158388.055

Sources:Relationship between Hash-Rate and Difficulty && https://en.bitcoin.it/wiki/Difficulty


No output is normal, it's meant to be run as a daemon. If you want to see progress however, try bitcoind -printtoconsole or tail -f ~/.bitcoin/debug.log.


Alternative chain shows blocks with empty TXIDs - what's going on?

maybe client is not indexing the transactions.

I'm having this problem and apparently running yourcoind -txindex (or txindex=1 in the conf)  and afterwards run with -reindex will fix the issue

when I run this command it just hangs but it looks like it's actually doing something which might take a long time. I may have to start from scratch with those changes added first


What is the most secure operating system that I can use to store bitcoins without having to fear a hacker stealing them?

The most secure operating system is no operating system. As Pieter mentioned in the comments, dedicated hardware wallets prevent private keys from leaking out of the secure hardware enclave, and therefore can't be grabbed from the Internet.

All operating systems are enormous, complex software systems with lots of ways to fail catastrophically. It is likely that all common operating systems have undiscovered security flaws. If you have to store bitcoins on a server, I would suggest Linux, since most malware targets Windows. But still, if planning on storing any amount of bitcoins large enough to worry about losing them, don't get your computer near the Internet.


Does bitcoin 0.16.1 work with Windows Subsystem for Linux (WSL) Windows 10?

it should work, but filesystem access from within WSL might be slower then using the windows server. There are some benchmarks available. Perhaps another alternative to consider would be running Bitcoin Core in vagrant. I don't know if and how bitcoind would be slower.


Generating paper wallet offline with liteaddress GitHub download

Yes, you open the HTML file in a web browser.
You can use either bitaddress.org.html or index.html

Just so you know, none of the files are signed, so you can't verify the authenticity. I believe the devs just don't give a fuck anymore :D
To be on the safe side, disconnect from the internet before you run the key-generator.


Yes.  All Bitcoin transactions are recorded in the public blockchain, and this gives you sufficient information to compute the balance of any address.

Sites such as blockchain.info and blockexplorer.com will conveniently show you such info, as well as complete transaction history for an address.

http://blockchain.info/address/13PWYdQ1bAFFkzgcfA4avzSp8iaPzUD7CE

http://blockexplorer.com/address/1NVdrDdS52R4Tb8w9tKnTaVk1WxkVSEh6Z


Custom validation logic for transactions/ custom script extensions

It would require a change in the protocol to allow for the use of external validation routines, or any bitcoins spent using the "special" script will never again be spendable by any standard Bitcoin client.

None of the currently available clients offer this feature.


How does the lightning network affect miners?

Miners do nothing with Lightning Network due off-chain transactions.

Miners are confirming only on-chain transactions.

Source


I have not verified the validity of this, or if it's up to date, but there is a spreadsheet tracking this, which might be helpful, at https://onedrive.live.com/view.aspx?resid=584F122BA17116EE!313&app=Excel.

Summary:

Wallet                            BIP-32?   HD path

Armory (wallet 1.0) No  -
Bitcoin Core (version 0.13+)      Yes       m/0'/0'/i'
Bitcoin Wallet                    Yes       BIP-32
Bither                            Yes       m/44'/0'/0'/c/i
breadwallet                       Yes       BIP-32
Coinomi                           Yes       m/44'/0'/0'/c/i
Electrum (1.x wallet)             No        -
Electrum (2.x standard wallet)    Yes       m/c/i
Electrum (2.6+ BIP-39 wallet)     Yes       BIP-44
Hive (mobile and web)             Yes       BIP-32
MultiBit HD (BIP-44 wallet)       Yes       m/44'/0'/0'/c/i
MultiBit HD (standard wallet)     Yes       BIP-32
Mycelium for Android              Yes       BIP-44
Mycelium for iOS                  Yes       BIP-44
myTREZOR                          Yes       BIP-44
Wallet32 for Android (0.1 wallet) Yes       m/a/c/i
Wallet32 for Android (0.2 wallet) Yes       m/a/c/i
Wallet32 for Android (0.3 wallet) Yes       m/a'/c/i
Wallet32 for Android (0.4 wallet) Yes       m/0/0'/a'/c/i
Wallet32 for Android (0.5 wallet) Yes       BIP-44


The coinbase value in that comparison is the sum of the amounts of the outputs of the first transaction (coinbase) in the block
(community wiki answer, to avoid having unanswered questions with answers in comments floating around and occasionally getting bumped to the homepage)


Generally speaking, BIP37 bloom filtering SPV has atrocious scaling though it is hard to say exactly how poor it is in the real works.

Every peer must sync the entire block chain from the last they had contact with the network, in the worst case this is approximately 50GB. The node must load every single block from disk, filter it to the clients specifications and return the result. The amount will grow until the end of Bitcoin or time, whichever comes first. Without some protocol changes pruning is incompatible with BIP37 SPV as it expects all blocks to be available at all hosts.
For every wallet which is synchronized, each incoming block and transaction must be individually filtered. This involves a non negligible amount of CPU time, and must be done for each peer in turn for every inventory item.

It is unclear exactly how much CPU power an average node has, but at least some portion of nodes are running on bottom of the barrel hardware like a Raspberry Pi which is very unlikely to be able to happily serve more than a couple of peers at a time.

Similarly a large portion of listening nodes are hosted on budget VPS providers which offer a single shared core and extremely poor performance. OVH has 300, Hetzner has 300 Digital Ocean has 124, CloudAtCost is truly at the bottom of the pile with 6.

BIP37 is vulnerable to trivial denial of service attacks, demonstration code is available that is able to cripple nodes by fast inventory requests through filters causing continuous disk seek and high CPU usage.  It is tempting to say that clients could use proof of work (but this is impossible on a battery powered device like a phone) or micropayments (impossible if a node doesn't know it has received money yet) but neither really offers a clear solution.
There's also likely a lot less than 6000 listening nodes, some are pruned which is fairly useless for a SPV client to sync with, many are listening on both IPv4 and IPV6 and are duplicated in that number as a result. The real number of actual nodes is probably more along the lines of 5000, and the number of them not on dialup speed uplinks is substantially lower.

  Is it reasonable to expect millions of SPV node users connecting to ~6,000 full nodes?

Absolutely not, even just for the reason that the code defaults to a maximum of 117 incoming connections which would be around half a million total available sockets in the network (the majority of which are already consumed today).


Generate and push raw Bitcoin transaction

something is wrong in your scriptSig

the publicKey in your script is

04a75429241bc8c83e0a1c615155e9b984880f16d39b09b28eef464139fb84d8ff507a5d482e8f41cdb5a762436515d310f16b208bdce4ddfb8a30a7236d36a2daf

but it does not match the address https://blockchain.info/address/1CBzN3YW4h7XRwb5sjpmBSEPmVPa9wHPgD which is the output of https://blockchain.info/tx/165c80ab40100fe404426e5d7f01ce947047b133e9957486d2f9d048fe2f8088

Are you sure that you are signing with the private key of 1CBzN3YW4h7XRwb5sjpmBSEPmVPa9wHPgD?


importmulti is a completely blocking RPC call, no amount of CPU power or RPC threads will prevent it from being blocking. You need to create applications which do not use this command if it is an option.


If you can see the transaction on blockchain.info, it means it is part of the blockchain. If you can see your address, then you know it's the right one, i.e. that it was sent to you. Your bitcoin wallet will have the ability to see and spend it if you have that address in your wallet.


Is there a way to publicly raise Bitcoin funds?

There is plans to implement conditional transactions which would do some of the things you indicated.   That hasn't been implemented yet.

To do what you want would require creating website from end.

For example you could display current balance & goal as well as the number of donators.  When someone donates you could have them provide a "return address" (in case it is different) that can't be changed and a return password (which you encrypt).

While you said you want to use Mt. Gox I don't see how that would increase trust and it would make automating deposits and returns much more difficult.

In short it can be done but there is no easy automated way to do it within the Bitcoin protocol so you will have to custom build a lot of the functionality.


Things you are trying to accomplish is you are try to transfer your bitcoin currency from one wallet to another wallet through internal bitcoind core system. whilst, you do not want to deduct balance. there is no api there which can prevent balance deduction.

bitcoind core has build their api if you tweak their code to prevent deduction of money. you can say you hacked bitcoin and your name will be breaking news! in theory you talk awesome, but practical way impossible.

Bitcoin virtual money is invented by satoshi nakamoto. also he can not do this things. if any person do transfer like you said. bitcoin will have zero value.
reason: people will start installing core/generate new bitcoin daily/earn money/no mining forever. just earn money. practically your idea is worthless, impossible.


How many nodes need to validate a newly created block?

Every node in the Bitcoin network acts independently. When a node hears about a new block, it will perform a series of checks to see if it is valid according to the network's rules.

If the block is valid, the node adds it onto it's local copy of the blockchain, and broadcasts the block to the other nodes its connected to.

If the block isn't valid, the node will reject it, and not broadcast it.

So by following the network's rules, even though each node acts independently, together the network is able to remain in consensus regarding the blockchain history.


What version of C++ is used in Bitcoin Core?

Bitcoin Core:

v0.1.0...v0.12.x: C++03
v0.13.0...v0.21.x: C++11
v22.0...: C++17 (current master branch, no releases yet)


Johoe's bitcoin mempool statistics should work for you. It currently shows pending tx count, pending tx fees (btc), and pending mempool size (MB).


Why does the txn_count field exists in a block?

Serialization is certainly not my area of expertise, but I'd guess: one challenge with serialized data is to know how much data to read. Explicitly providing the count of objects (and their length) you're about to parse is likely simpler and safer than having multiple levels of terminators in a hierarchical data structure and may actually require less data overall.


Useful alternative Bitcoin transaction scripts

If a full implementation of the scripting language were in place, then pretty much all of the following could be implemented. However, there are serious security concerns with some of these and they warrant further analysis before finding their way into the clients.

The referenced Scripts link in the original question contains several script examples covering the following use cases which are worth listing before getting to the more exotic cases:

Standard generation/transaction to Bitcoin address - this is the typical situation everyone uses when sending/receiving bitcoins
Standard generation/transaction to IP address - a method of automatically getting the recipient to generate a Bitcoin address so long as their IP is known (very dangerous due to man-in-the-middle attacks)
Transaction with a message - Add arbitrary text to a transactions (typically limited to around 10,000 bytes) which allows for ASCII art and other graffiti, perhaps even a steganographic exploit
Hidden recipient address - allows the address of the recipient to be encrypted so that only a shared secret between them allows the bitcoins to be spent

The further linked Contracts page on the wiki provides these additional use cases which are somewhat more complex:

Providing a refundable deposit - handy for proving that you're willing to spend money to ensure that you're reputable, with the option to get it back after a given time
Escrow and dispute mediation - permits several parties that don't trust each other to trade using their common trust of a given set of trusted third parties (this is the classic M of N signatures to release the funds contract)
Assurance contracts - essentially to allow pledges to be given for the greater good by competing parties (example is to pay for a lighthouse)
Using external state - Scripts can consult addresses that may be attached to "oracle scripts" which can perform transaction signing based on complex internal logic (example is to guarantee payment of an inheritance upon death or coming of age whichever is the sooner)
Trading across chains - Allows other Bitcoin based currencies to trade against each other (thus potentially solving this problem for countries wishing to use Bitcoin)

Clearly there are many opportunities for exotic transaction types:

Proof of knowledge - to prove that knowledge was acquired at a certain time a transaction could be created that references an oracle script that could provide verification. The oracle may not exist at the time of presentation, but it would be trivial to run the script and verify the outcome.
Payment on successful prediction - another external state use case to allow an external oracle to sign a transaction based on pre-arranged transaction outcomes (examples include gambling, spread betting etc)

All in all, it shows that Bitcoin is a very effective financial trading instrument.


"At first, anyone could spend anyone's coins"?

He might be talking about the "1 Return" bug

1 RETURN Bug (July 2010)
In July 2010, Satoshi and fellow developer Gavin Andresen received a tip-off about this bug that would have made it possible to spend anyone else’s Bitcoins. In the early releases of the Bitcoin Core, OP_RETURN was defined as:
case OP_RETURN:

{

    pc = pend;

}

break;

An unlocking script of OP_1 OP_RETURN would then always result in a 1 on the top of the stack, as OP_RETURN would end the script evaluation without modifying whatever was already on the stack. This was fixed by changing the opcode to return false and end the script.

(my emphasis).

Related

What is the "1 RETURN" bug?


How do you set the price of a new Coin at the beginning?

If the coin relies on a decentralized proof of work based blockchain like Bitcoin the price is set by the free market (supply and demand).

If coin issuance is centrally controlled because of a premine by the issuer, then the controlling entity will have more control. There are many different ways to structure ICOs each with different economic, security and legal considerations. If you are the coin issuer referenced in this question you will need to answer these questions on your own or be more specific in describing your question(s).


How to use Signed Hash to Send Coins in bitcoinj

sendrawtransaction signedHex

is the rpc you need to call which will submit your raw transaction to local node and network.


Who is liable my case or is it a classic hack?

If the blockchain shows the money was in your account, then they have fulfilled their requirements. At that point, any transfer of money OUT of your account needs to be signed by your private key. This signed transaction is what is in the blockchain.

The most likely situation is that the application you used to generate the key generated a weak key. If, for example, there is a flaw in your key generation that is likely to generate one of only, say, a billion private keys, then someone could work through each of those billion keys, work out the hash, and store it in a table. They could then monitor the incoming blockchain for payment transactions, and look up the hash in their table. If they find a matching hash, they look up the related private key, and put through a transaction. A billion keys and their hashes would take about about 100GB - and if they get 28 Bitcoins, that makes it all worthwhile.


What percentage of Bitcoins stored in a multi sign address?


Namecoin: This transaction requires a transaction fee...But I have NMC

You have enough to reserve the name (the .01 network fee) but then not enough to pay the transaction fee. If you wait a day or so for the coins to age, it might work.


Can you ever view your private keys on the TREZOR?

I don't think you can as the Trezor (and every other hardware wallet) does not expose your private keys to the computer it is connected to. This is how you can still securely spend your Bitcoin even with a computer that has malware on it.

However, the Trezor 24 word seed uses BIP 39 and BIP 32 so you can use that to derive your private keys on another machine.


What will happen on November 15th 2017, when the Segwit proposal expires?

Case I: If the BIP-148 block chain is longer than the Legacy block chain?
  (My understanding is, this won't even happen. Because if the BIP-148 network hash rate gets higher than that of the Legacy network, the Legacy block chain will always be "in sync" with the BIP-148 block chain, and the two block chains will be exactly the same. Am I correct?)

That is correct. In this case, there is only one blockchain and that is the BIP 148 chain. Since the BIP 148 chain is valid under the non BIP 148 rules, if it is longer, it will be the accepted blockchain.

  Case II: If the Legacy block chain is longer than the BIP-148 block chain?
  (Now, after Nov 15th, the BIP-148 nodes start accepting all the blocks. The next solved block will most probably be a Legacy block. So, will the BIP-148 nodes switch to the "longer chain" [which is the Legacy chain], and discard all the blocks since the fork happened?)

No. BIP 148 nodes will continue to follow their own chain and not switch to the legacy chain. This is because blocks between August 1st and November 15th in the legacy chain do not follow the BIP 148 consensus rules. Those rules specify that all blocks between August 1st and November 15th must signal for segwit.


Is there any good reason to buy Bitcoins?

For speculation, you would buy when the price is low in anticipation that the price will rise in the future.

There are some signs that the currency is seeing wider use and has greater potential in the future.  For instance:
 - http://blockchain.info/charts/n-transactions

Concluding that that growth means that a bitcoin will be worth $4 or $2 or $32 by any certain date is more or less speculation though.

As far as why you might want to buy bitcoins today?

How about to participate in an online lottery where the jackpot payout return is 99% of the total wagers.  Beats the heck out of doing a scratch-off at the gas station.  Tickets are about $1 each.
 - http://www.bitlotto.com

How about for the novelty.  Have you ever bought a quart of pure maple syrup direct from the farm?
 - https://bitcointalk.org/index.php?topic=55594.0
or Alpaca socks?
 - http://www.grasshillalpacas.com/alpacaproductsforbitcoinoffer.html
or a Blue Canary Night Light:
 - http://bluecanarynightlight.com

How about to prove your brilliance?  Bets of Bitcoin is a predictions market.
 - http://betsofbitco.in

Maybe you want to purchase something and would rather that purchase not show on your credit card bill.  Or not.

Or maybe you want to make a purchase from someone on Craigslist and don't know if you can trust that they'll ship your order.  There are escrow services (with dispute resolution) available using bitcoins (compare BTCrow's 1% to escrow.com's $25 minimum fee):
 - http://www.btcrow.com

Maybe you want to send a few bucks to someone in another country as an expression of appreciation.  Bitcoin transfers are nearly instant and know no borders.


No, it does not matter. Cheap 1x-16x extensions may either burn out or not work properly though, a powered one is essential.


Why do some transactions take months to get into a block?

From what I have read about Bitcoin transaction confirmation (aka mining), a transaction may not be included in a block for any reason, but the most common is that the fee is too low for the size of the transaction. A higher fee increases the chance that the transaction will be included in a block by a miner. A transaction with no fee may eventually be confirmed, but it could take a long time to do so.

Certain transactions cannot be included in a block because they violate the Bitcoin protocol and will be discarded. Among others, these are transactions that attempt to spend more Bitcoin than is in an account and tranactions that try to double spend an accound balance. Transactions that depend on other transactions that have not been confirmed yet and are retained until either it is dropped because it would violate the Bitcoin protocol, or it is added to a confirmed transaction block.

(source: https://www.rugatu.com/questions/42/why-do-some-transactions-take-months-to-get-into-a-block)


What's the relationship between SLIP39 and BIP39?

BIP39 (Bitcoin Improvement Proposal) describes the implementation of a mnemonic sentence (set of easy to remember words from a predefined wordlist of 2048 words) that can be mapped to a binary seed from which you get a master key which in turn is used as per BIP32 for the generation of deterministic wallets.

SLIP39 (Satoshi Labs Improvement Proposal) has to do with the Shamir Secret Sharing Scheme (SSSS). This is a way to break up any secret into N parts so that any M of the N parts can reproduce the original secret. It is not limited to, but in the context of bitcoin it is mostly used for breaking up a mnemonic sentence from BIP39 or the seed of an HD wallet and giving each piece to a different party so that reconstruction of the secret would require collaboration/collusion of at least M parties. You still get with SLIP39 a mnemonic word sentence like you do with BIP39, only the words originate from a different wordlist. So if you see a mnemonic sentence, you can lookup its words against the online published wordlists of BIP39 and SLIP39 and recognize where it comes from.

SLIP39 is actually pretty neat, in that it allows for a two-level scheme where you have group-shares and within each group you define member-shares where you define an overall group threshold and within each group a separate member threshold.

For example I can split a master secret across four groups like:

Group-share 1: 1-of-1 for myself = single member-share and the threshold to fulfill this group-share is one i.e. I can do it by myself since I have the single member-share
Group-share 2: 1-of-1 same as Group-share 1
Group-share 3: 2-of-5 for my family = five member-shares (mom, dad, brother, sister, wife) and the threshold to fulfill this group-share is two i.e. any two family members together can reproduce it
Group-share 4: 3-of-6 for friends = six member-shares (alice, bob, charlie, david, eva, frank) and the threshold to fulfill this group-share is three i.e any three of my friends together can reproduce it

And finally you set a group-threshold of two i.e. to recover the master secret the goal is to reconstruct any two of the four group-shares.

Now, to recover the master secret here are a couple of possible recovery scenarios.

Scenario 1: I can do it all by myself since I have two member-shares from two of the four group-shares (Group-1 and Group-2) that both require a single member-share.

Scenario 2: alternatively my family members and friends can come together. In particular any two family members (to fulfill Group-3) and additionally any three friends (to fulfill Group-4). This way again two (the group threshold) of the four group-shares can be fulfilled.


The command computes some statistics about the database of unspent transaction output that is maintained by a bitcoin node.

height: the height of the block up to which the UTXO set is accurate. This may be lower than the result of getinfo's height, as the node does not flush the UTXO set from caches after every block.
bestblock: the hash of the block up to which the UTXO is accurate.
transactions: the number of distinct transactions to which the unspent outputs belong (or: the number of transactions that have at least one non-spent output).
txouts: the number of unspent outputs
bytes_serialized: how large the database is in bytes, should we serialize it.
hash_serialized: the hash of the entire serialized database. You can use this value to compare with other nodes (if they are at the same block), to verify the UTXO set's integrity.
total_amount: value (in BTC) of all unspent outputs together. This is the best possible guess for the amount of currency in circulation.


Does the pool miners in mining pool receive the same block in case of a fork?

Most of the mining pools that are run are managed pools, which means it is operated by an individual or a company. The pool server runs specialized software and a pool-mining protocol that coordinate the activities of the pool miners. The pool miners need not run a full Bitcoin node as the pool server runs one and validates blocks and transactions on behalf of the pool miners.

The pool server constructs a candidate block by aggregating transactions, adding a coinbase transaction (with extra nonce space), calculating the merkle root, and linking to the previous block hash. The header of the candidate block is then sent to each of the pool miners as a template. Each pool miner then mines using the block template, at an easier difficulty than the bitcoin network target, and sends any successful results back to the pool server to earn shares.

Since, the pool miners receives the block template directly from the pool operator, all the pool miners are building the candidate block on the same version of the blockchain.


How secure are the DNS servers for Bitcoin?

There are some differences between DNS seeding and the IRC method. IRC used to function as a meeting point; essentially a centralized broadcast system to let (all) other nodes know about your existance, but it failed to answer the query "who is online now?". This means that when using IRC as a publically reachable node, you would often see a peak of incoming connections quickly, but little activity afterwards. Obviously, it was also vulnerable to DOS attacks as a centralized point of failure.

DNS seeds are much more intended to work as seeds: they provide nodes with a few reliable entry points into the network, but let the actual discovery of new nodes be done by the network itself (peers exchange other peer's IP addresses). Futhermore, the DNS system is capable of server much larger numbers of nodes.

To answer your actual question: the DNS servers themselves may be be vulnerable to attacks, but it is important to realize that they are far less essential to the network than IRC was. Also, the 4 active DNS seeds are operated by different people, and managed quite differently:

Jeff's node (bitseed.xf2.org), is currently a static list, updated mostly manually and infrequently, but hosted very reliably.
Matt's node (dnsseed.bluematt.me), is served by a BIND server (typical DNS server software), which is fed a fresh list of reliable nodes by a crawler every few minutes or seconds.
Luke's (dnsseed.bitcoin.dashjr.org) and my node (seed.bitcoin.sipa.be) run a custom DNS server+crawler system, which reports a random set of reliable nodes for each query.

One further remark on your question: the DNS seeding system was introduced in v0.3.21 (april 2011), and turned on by default in v0.3.24 (juli 2011). Since 0.6.0 (march 2012), IRC seeding is off by default. As of 0.8.2 (not yet released), IRC support will be removed entirely.


Are blocks sent only after finding nonce?

This effectively already happens on several levels, though without direct miner interaction. Both Bitcoin Core and the Bitcoin Relay Network have their own implementation of forward preparation for the validation of blocks with the intent of speeding up block propagation as much as possible. One focused on validation latency, one on bandwidth and latency.

Bitcoin Core has a validation cache of transactions it sees unconfirmed on the network, this allows the most expensive operations (executing the script, and validating signatures) to happen long before they are included in any block. Very often a node which has been active on the network for even a few minutes has already validated a large portion of any new blocks that arrive. When a new block is seen the uncached transactions are validated, inputs are checked, and the block is connected without having to do extensive, expensive validation of the contents.
The Bitcoin Relay Network takes this concept even further, it keeps track of transactions a node has already validated and transmits blocks excluding those transactions in order to save time on the wire. For many blocks this means the network only needs to push around the header (80 bytes), and a 2 byte integer referencing all the included transactions. An entire block might only be a few hundred bytes total and can be shuffled around the network quickly, then reassembled by the client using the transactions they already have in their mempool. A large portion of miners and services use this to drastically reduce network latency and subsequently their stale block rate over just using the P2P network to relay blocks around.

Miners do not transmit unsolved blocks purely because it would be a massive denial of service problem, and there might be hundreds of thousands of candidate blocks that don't get solved every hour. Ultimately the Relay Network achieves the same result as what you proposed (just transmit a nonce) and actually uses substantially less bandwidth than the normal P2P network.


What challenges will bitcoin face in space?

Biggest problem facing spaceborne bitcoin is communications latency.  Consider possible Mars colony.

Light speed imposes delay, 4 to 24 minutes.  Bad enough this is.  If miners on both Earth and Mars, each comes up with new block, possibly extends blockchain twice more, before signal from other crosses distance.  Means very long transaction confirmation time, for colonists (assuming on Earth most mining power).  Transactions fine going into local blockchains, but those blockchains not continuing.  Only when individual transaction records reach Earth (meaning lightspeed delay at minimum) does it get into chain that will more likely  continue.  Then must wait while more blocks close at ten minutes approx. each.

Now further problem appears.  High latency causing deeper depth of chains which abort.  Colonists wanting to be sure of transaction commitment. To be as sure  as six blocks deep in earth-only chain, must being nine or more blocks deep in interplanetary chain.  So now delay is lightspeed delay, plus maybe 90 minutes.  Then lightspeed delay again before news reaches Mars.

When Mars 24 light minutes from Earth, expect delay confirming Martian transactions minimum around 140 minutes.  Plus whatever network propagation delay on planet, not usually very significant.  Effect much less pronounced when 4 Minutes mars is from Earth;  Need only 7 blocks to be as sure, lightspeed delay much less.  Expect delay around 80 minutes confirming Martian transactions.

Earth mostly unaffected as long as Mars have not significant mining power.  But when real possibility is scenario of Martian blockchain accepted and extended, Earth-only transactions also take ten to thirty minutes extra for confirm.  Problem here is not knowing when Martian miner extends chain, so needs more chain depth before sure of confirmation.  Still, extra delay only about ten minutes.

Propagation delay problem goes deeper when additional colonies on Ceres, Juno, Pallas, Vesta, Jupiter Moons, &c.  Extra time taken for confirm transactions proportional to approximate diameter of sphere containing vast majority of mining power.  Adding twice lightspeed delay at least from center of mining power to location for confirmation times at location.

Extra bandwidth too.  Extra bandwidth required because of aborted blockchains.  Not significant too much in reasonable scenarios, but in extreme case scales badly, with square of distance.

Next, bitcoin client need accurate network time. Establish accurate network time require many iterations of light speed delay.  Bitcoin client not worry about.   Will be provided by operating system.  Must be provided, because MOST network clients want accurate network time.

However, if too picky about accurate, is not really possible (or at least very interesting) due to Relativity.  Time passing at slightly different rates closer and further from sun, different orbital speeds, different relative vectors, etc.  Einstein is a Meanie.

Now we have meta-problem.  Mining not really possible unless mining power on site comparable to mining power at largest other single site.  No point mining bitcoin on Martian colony, for example;  Due to lightspeed delay your work will arrive 4 to 24 minutes after you do it, and you'll be working with blockchain 4 to 24 minutes older than miners on earth.  You must work so hard that you get 8 to 50 minutes ahead of Earth's miners.  Very very hard to do.

Interesting though, that if this ever happens, then when Martian extend blockchain, suddenly it is Earth miners who are 8 to 50 minutes behind.  All considerations of delay previously working against Mars colony now work against Earth; roles reversed as long as nobody Earth get 8 to 50 minutes ahead of Martian miner.  Suddenly Earth transactions face 80 to 140 minute delays, Martian transactions clear in only 70.

Finally, effects of different mining speed various locations on hash rate.  Consider where Martian miners have 1/4 power of Earth Miners.  Due to high variability of block closures, chance of mining "center" switching to Mars and unfairly favoring Martians as above very real is.  So is chance of switching back to Earth and unfairly favoring Earthlings later. When a 2016 block mined, possible that hash difficulty could change suddenly.  Possible for hash difficulty swing back and forth unpredictably, one week to next.  Miners have maybe very prosperous week, then very dry month when no coins at all, and all go broke.  Meanwhile Miners in other location reap huge reward in bitcoin.  Depending on value of bitcoin, sudden swings in direction of money movement affect local economies, destabilize things.

But in general, value movement caused by mining would be unfair directed away from smaller locations toward major centers of mining, probably bad for development of frontiers.

Edward.


How to get Bitcoin input transaction hash string from bitcoinjslib Transaction object?

Apparently you need to reverse the array before toString. Transaction.ins[i].hash.reverse().toString('hex') produces the correct result. Make sure to call hash.reverse() afterward.

source: ScriptHash from bitcoin address with BitcoinJS


Is it possible to use Electrum to create a multisig wallet with a trezor and an airgapped coldcard?

I am having the same issue and would prefer to comment but don't have enough reputation.

It seems like this pull request is being reviewed and will add CC multisig integration into electrum.

However, there is currently a coldcard hardware multisig fork of electrum that is available here though several commit behind the main electrum branch.

I haven't been able to build this fork successfully so hope there is additional work on Cold Card integreation in the near future.


Unconfirmed Transactions - 4days - Help Needed To Accelerate

Have you tried the free ViaBTC Transaction Accelerator service (requires a minimum fee rate of 0.0001 BTC/kB): "https://pool.viabtc.com" under "Tool" ?


Is there any software that allows me to make a single multi-recipient transaction?

Bitcoin-QT can do this.  When you click the "Send" tab you will see a button "Add Recipient" at the bottom of the screen.

You can also do it using the RPC interface, with the sendmany command.


Transaction to Coinbase not showing up in account

CoinBase has a support portal where you can open a case: https://coinbase.desk.com/customer/portal/private/cases.

You have to log in with your CoinBase account to see this page.


How can I find a Bitcoin address from the transaction time and amount?

I think what you're looking for is something like this: https://goochain.net/

It has options for date range and amount range.


Has anyone attempted to make a working voting system using a bitcoin based system?

The bitcoin concept has no method to limit anything to a single entity.  I am one person yet on bitcon network I have multiple addresses,  I have multiple wallets which contain multiple addresses, I make up multiple nodes, I have multiple rigs with multiple GPU each, I use multiple IP addresses.

Everything about the bitcon network was designed to allow such a scenario to take place.  evoting requires multiple concepts which are incompatible with current bitcoin network

1) authenticate the person voting (is this person a valid registered voter).
2) keep the authenticated person anonymous.
3) ensure votes can't be duplicated
4) ensure vote count is public, verifiable, and immune to abuse by central authority

eVoting not be solved "easily" by bitcoin network.  I would say eVoating can't be solved "easily" period.  There are some very non-trivial issues with the combination of the above requirements.

The bitcoin network doesn't help to ensure that any of the 4 principles above are met.


Deleting Electrum wallet and setting up new one

If you're using Electrum on Windows, in my opinion just checking that it is signed with the correct code-signing certificate is sufficient; if any security beyond that is desired, you should use a hardware wallet with Electrum. When you open it, if the Windows UAC prompt says the file is "from the verified publisher Electrum Technologies GmbH", then that should be assurance that the file is the correct Electrum installer.
However, if you just want to delete the wallet files from the old Electrum installation, they are typically located in %appdata%/Electrum.


As far as I understand the diagram was produced for IEEE Spectrum. They have a Reprints & Permissions page that might help to get in touch with them on this matter.


See What does the sequence in a transaction input mean?

1) You need to set bit 22 in the nSequence to indicate the value is a timestamp, not a number of bocks.

2) You are trying to put an absolute timestamp into nSequence, but nSequence is used for relative time.

So if you want the relative timelock to be 512 seconds, your nSequence should be:

1 |= (1 << 22)

or 4194305


In Bitcoin Qt, what does "Message" mean in the request payment form?

The Bitcoin protocol does not support any kind of message associated with transactions. The message when generating QR codes is simply a short string that is passed along with the Address and Amount to the person scanning the QR code as a hint to recognize what the Address has been used for. A merchant may for example put a short description of the item you bought in the message field. You then scan it and your Bitcoin client may use that field to mark the transaction, so that you later recognize which transaction was used for what.

The message however will never be posted to the network and is only stored in your Bitcoin client, i.e., if you restore your wallet the messages may not be restored.


transaction stays in status "0/unconfirmed, in memory pool"

One cannot say for sure what is happening without seeing the transaction ID, but it's likely that this is being caused by the current transaction backlog of about 62,000 or so unconfirmed transactions.

If the transaction being discussed has a low fee (relative to the other 62,000 unconfirmed transactions) the transaction being discussed may not be confirmed until a large number of those other unconfirmed transactions have been confirmed.

Two possible outcomes are that the transaction is eventually confirmed or that the transaction will eventually get dropped from the network and you will still have control of those bitcoins.

EDIT: BIP 125 Opt-in Full Replace-by-Fee Signaling provides a flagging option for dealing with this, though I'm not sure if any Bitcoin clients currently provide userfriendly support for this.


Can I have the same wallet opened in multiple computers?

Provided that your wallet is an HD wallet (Bitcoin Core will show you a small HD  in the bottom toolbar if it is), then you can safely use it on both machines, as addresses are deterministically generated.

If your wallet is individual key based, then after you copy the wallet to the second machine, they will diverge and generate different keys for future addresses.


What happens to the mining reward if the blocks gets replaced?

If the block doesn't end up in the main chain, the miner effectively doesn't get the reward.  Attempts to spend it will not be accepted as valid payment by others.

There is a "maturity" rule that rewards cannot be spent at all until 100 more blocks have been added to the chain following it.  This helps ensure that a miner doesn't spend coins from a reward which is later invalidated, thus leaving the recipients of those payments in the lurch.


Unable to establish connection to bitcoin using json and php

You are trying to connect to http over the https port.

For HTTP use:

  $bitcoin = new
  jsonRPCClient('http://identifier:identiferpass@rpc.blockchain.info');

For HTTPS use:

  $bitcoin = new
  jsonRPCClient('https://identifier:identiferpass@rpc.blockchain.info');

According to the blockchain.info documentation both should work.


Bitcoin erupters not stable on Ubuntu and cgminer 3.3?

I am now using cgminer 3.4.2 (Ubuntu 12.04LTS) as it is much more stable than bfgminer and all the bugs in cgminer have been worked out (it also supports hot plugging)

The best way is to compile cgminer from git direct. There is some dependency on usbdev1 that needs to be compiled into cgminer.

Install the dependencies using apt-get (including all the build stuff)
Make a direcotry somewhere and go into it
git clone git://github.com/ckolivas/cgminer.git
cd into the cgminer directory
./autogen.sh --enable-bflsc --enable-icarus --disable-opencl
CFLAGS="-O2 -Wall -march=native" ./configure --enable-bflsc --enable-icarus --disable- opencl
make -j8
Run cgminer from that directory, without any options. (except the mining pools you need) It will pick up on the erupters and is ready for BFL rigs too! Hot plugging works well also!

Its not running full speed because I have a slight power issue after adding 7 more. Need a new PSU


The reason for this is that if a fork were to occur, some blocks will be orphaned and not have any coins which can be rebroadcast. If a block containing a transaction you send me gets orphaned, I can still get my coins, but if the block you are sending me coins from gets orphaned, I can not rebroadcast since the coinbase no longer exists on the valid chain.


USB hub busy when mining Peercoin with Red Fury ASIC running Minepeon

This issue helped me solve my issue:

https://github.com/MineForeman/minepeon-base/issues/13#issuecomment-33760864

running the command

sudo lsusb -v

I get this out put, is this correct?

idVendor 0x03eb Atmel Corp.
idProduct 0x204b LUFA USB to Serial Adapter Project
bcdDevice 0.00
iManufacturer 1 BFMG
iProduct 2 Bitfury BF1

add the lines below to this file

/etc/udev/rules.d/01-miner.rules

add these lines

# BF1
ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="204b", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="minepeon"

rebooted the server and now I see my miner!


What effects would a scalable Quantum Computer have on Bitcoin?

You have a good discussion in:

https://bitcointalk.org/index.php?topic=133425.0

Basically, ECDSA is compromised, hashing isn't. With a quantum computer, you could easily deduce the private key corresponding to a public key. If you only have an address, which is a hashed public key, the private key is safe. Anyway, to spend a transaction, you need to send the public key. At that point you are vulnerable, but the attack is not straightforward.

In general, quantum computers are not exponentially better than classical computers. You cannot access all the states in the superposition, only global properties. You can read http://www.cs.virginia.edu/~robins/The_Limits_of_Quantum_Computers.pdf to get a good idea of what they can and cannot do.


How to monitor the blockchain for new blocks

Full disclosure, I'm BlockCypher's Developer Advocate. We have both a WebSockets/WebHooks API for unconfirmed transactions, which you can read about here, along with a Ruby example: http://dev.blockcypher.com/?ruby#using-webhooks .

But if you wanted to run a local implementation that's primarily Ruby-based, you could try Coinbase's Toshi, or bitcoin-ruby:

https://github.com/coinbase/toshi
https://github.com/lian/bitcoin-ruby


Why don't P2PK scripts have their own address?

One of the issues with encoding P2PK outputs as an address is that they can be very long. P2PK can have both compressed and uncompressed keys. Uncompressed keys are 65 bytes, which means that the resulting address would be very long. In fact, this length is probably why P2PKH exists in the first place: as a way to have short strings as addresses. So P2PK addresses could be very long and unwieldy, so not that useful.

But nowadays, everyone uses compressed pubkeys so length isn't much of an issue anymore.

Since Satoshi didn't give P2PK an address type, the reason that one has not been created since then is that no one cares to. P2PKH already does everything P2PK does, just a little bit longer. And with other improvements coming such as Taproot (which is A pay to pubkey scheme and has its own address type), there isn't a compelling reason to go through the effort of defining a standard and trying to get wallets to implement it.


With a deterministic wallet you create from an initial seed a sequence of bitcoin addresses. Imagine counting 1, 2, 3, 4, etc.

You can create as many addresses as you like, but not all of them will appear on the blockchain. For instance I might create one especially for you to give me 1,000,000 BTC. That is (alas!) probably not going to be used.

When you are recreating a wallet from scratch you do not know which is the last address used. So you start at the beginning and see what is on the blockchain. Then you look for the next one in the sequence. The gap limit is how many 'misses' you accept before you give up and stop looking.


Error in creating bitcoin raw transaction

You provided the amount incorrectly. The amount is 0.54551 not 545500. This is important as Segwit inputs include the previous output's amount in the signature. Providing the wrong amount will result in the wrong signature which will then fail validation.


Ardor API: Not able to use POST requests with Axios due to CORS issues

Ardor versions prior to 2.1.0e rejected the OPTIONS Http method. This method is now enabled so the problem should be fixed.

It appears that Axios uses an OPTIONS Http request to check if CORS is enabled and since it was forbidden the response was a 403 response.


If you create the coin, you get to make the rules.  Nothing stops you from patching the software to make your premining as easy or as hard as you want.  For instance, you could set the difficulty schedule so that the first billion coins require very little or zero proof of work to mine; then you could mine them all at once and award them to yourself.

Of course, the hard part becomes convincing anyone else to use a currency that's so obviously slanted in your favor.


Bitcoin Core - Go back to a specific block?

You can't delete the block data themselves, but you can reset the blockchain state to a specific block by using the invalidateblock command. This command will mark a specific block and its descendants as invalid thus setting the chainstate to the block immediately before it. Note that this may not necessarily work to switch to a blockchain fork and may still not be able to use the forked blockchain.

If you want to go back to the 500,000th block, you would invalidate the 500,001st block with the call invalidateblock 0000000000000000005c9959b3216f8640f94ec96edea69fe12ad7dee8b74e92. By invalidating the 500,001st block the chainstate resets to height 500,000.


Step by Step - how does sending 1 bitcoin work?

You probably would find it helpful to peruse the technical articles on the Bitcoin Wiki.  Here are some starting points based on your questions.

https://en.bitcoin.it/wiki/Address

https://en.bitcoin.it/wiki/Transaction

https://en.bitcoin.it/wiki/Script

https://en.bitcoin.it/wiki/Network

https://en.bitcoin.it/wiki/Block

One concept you did not mention but which is crucial to understanding how it works at a low level is the fact that transactions are verified by running Scripts (see link above).


can one account have more than one address?

First of all, do not use the accounts feature. It is both broken and going to be removed. It is important to note that accounts are not part of Bitcoin at all and are just a part of Bitcoin Core.

You can associate multiple accounts with the same address. It just means that the account's balance will update with each amount sent to an address associated with the account. However, sending Bitcoin from an account in your wallet WILL NOT necessarily "send from" the addresses associated with the account. It will just decrease the balance of that account.


Creating an OP_CSV transaction with bitcoinjs

In bitcoin-js you could do something like this

aliceToBobRedeemScript =  bitcoin.script.compile([,
bitcoin.opcodes.OP_IF,
  bitcoin.opcodes.OP_HASH160,
  aliceSecretHash,
  bitcoin.opcodes.OP_EQUALVERIFY,
  bobPrivKey.getPublicKeyBuffer(),
bitcoin.opcodes.OP_ELSE,
  bitcoin.script.number.encode(10),
  bitcoin.opcodes.OP_NOP3,
  bitcoin.opcodes.OP_DROP,
  alicePrivKey.getPublicKeyBuffer(),
bitcoin.opcodes.OP_ENDIF,
bitcoin.opcodes.OP_CHECKSIG
]);

there is some sample code on an old atomicswap demo, it doesnt have csv but shows other things such as how to sign custom transactions etc

https://github.com/rubensayshi/counterparty-p2sh-demo/blob/master/atomic-swap.js#L163-L185


My Bitcoin Cash is stuck unconfirmed when sending to Bittrex from Electron Cash. Please help!

I have same question: one and a half day earlier i send BCC to Bittrex, but till now the TX still unconfirmed.
Also can't find TX by ID in http://blockdozer.com/ и blockchair.com, there are no any records.

UPD: Hey! I solved my case.
1. Use Windows runs on virtual machine crate new wallet, input seed, switch server to electroncash.bitcoinplug.com. A lot of servers doesn't work correctly and transaction cant send (error: The transaction was rejected by network rules.
16: mandatory-script-verity-flag-failed (Signature must use SIGHASH_FORKID)) or still unconfirmed for uncountable time.
Before i find an answer i have a lot wallets, and delete ElectronCash folder on c: roaming folder. And one more thing, looks like it need to disable 2FA.

Good Luck!


Get the number of confirmations for an external address

Looks like the functionality i am looking for is getting added to bitcoind.  Hopefully most of the devs responsible for their clones of bitcoin will update accordingly and eventually this functionality will be available for all cryptos.
https://github.com/bitcoin/bitcoin/pull/2121

EDIT: Also see this pull: https://github.com/bitcoin/bitcoin/pull/2861

Hopefully it gets merged into master soon.


Copy these files to a exact Bitcoin Data folder on your Ubuntu (~/.bitcoin/) and then run client to download the latest blocks available. To synchronize with the blockchain run bitcoind with command -reindex bitcoind -reindex.


I mistakely pasted my own blockchain recieving address in the send slot

You wont get the transaction fee back.

As you did make a new transaction which requires a miner fee.


The signatures must be ordered the same way as public keys. Otherwize transaction is invalid. This is how OP_CHECKMULTISIG(VERIFY) works.

Of course, you may use the private keys for signing in any order, because signatures are independent.


What forces transactions to be visible to all miners?

A transaction can go in a block if it's valid (references inputs that are already in the same or previous blocks, scripts are legal and return success, and signatures validate ok), regardless of whether any other nodes have ever seen it before or not.  So if a "selfish" node associated with a particular miner receives a transaction, it's perfectly free to sit on it until it can include it in one of its own blocks.

That's why you don't send your transaction to just one node.  You send it to as many different nodes as you can.  (Bitcoin Core by default will try to remain connected to up to 125 nodes at any given time, and as far as I know it would attempt to send a newly created transaction to all 125 of them.)  Perhaps a few of those nodes are "selfish", but you hope that at least some of them are not affiliated with any particular miner, and will make an effort to relay your transaction as widely as they can, as is the default behavior of standard node software.

With reasonable luck, your transaction will quickly propagate to every miner on the network, and each of them has an incentive (namely the fee) to include it in the very next block they mine.  (If Miner X declines to include it in his next block, hoping to sit on it until he mines another block at some later time, he risks that some other miner Y who has received the transaction will include it in one of her block before Miner X gets to mine a second block.  In that case, Miner X never gets the fee at all.)

So, a node that fails to relay a transaction, saving it for its next block, doesn't do much harm and also doesn't gain much.  A node that tries to save a transaction for a later block does some harm, but also risks a monetary loss, and so has an incentive not to do that.


Blocks can still be found by miners even if there are no (other) transactions. The reason for this is each block must contain a coinbase transaction, which rewards the miner with 10 coins.

(The above is assuming that your coin is sufficiently similar to something like Bitcoin or Litecoin. An altcoin you create could have completely different rules.)

As for how your mining could affect the economy, well obviously you would be the one ending up holding all the coins. If you're giving them to your friends to then trade, no problem. A few friends is of course not a very large economy.


Find specific transaction in merkel's tree

In order to verify if a transaction is part of a merkle tree, you have to calculate the hash of the transaction id and it's sibling, and verify that the value is correct. For example,

Merkle Verification

We’ll start with a simple 2 leaf example (see the First Bitcoin Transaction):

Lets assume that hashes Ha and Hb have already been calculated from the data Ta and Tb and that:

Ha = b1fea52486ce0c62bb442b530a3f0132b826c74e473d1f2c220bfa78111c5082
Hb = f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16

First, we must reverse the bytes (they need to be little endian) because that is how Bitcoin calculates the hashes. You can use this python script, if you like:

#!/usr/bin/env python
line = raw_input("Input original hex string\n")
n = 2
orig_list = [line[i:i+n] for i in range(0, len(line), n)]
reversed_list = orig_list[::-1]
reversed = ''.join(reversed_list)
print reversed

We get:

Ha = 82501c1178fa0b222c1f3d474ec726b832013f0a532b44bb620cce8624a5feb1
Hb = 169e1e83e930853391bc6f35f605c6754cfead57cf8387639d3b4096c54f18f4

Then, the node (and root in this case) Hab is calculated by concatenating the two and hashing with sha256 twice (i.e. hash256):

$ printf "82501c1178fa0b222c1f3d474ec726b832013f0a532b44bb620cce8624a5feb1169e1e83e930853391bc6f35f605c6754cfead57cf8387639d3b4096c54f18f4" | xxd -r -p | openssl sha256
(stdin)= a24ee7fb7333f85c16560ed8850a1773d6977ce7a4936367eaf72f8fff33797e
$ printf "a24ee7fb7333f85c16560ed8850a1773d6977ce7a4936367eaf72f8fff33797e" | xxd -r -p | openssl sha256
(stdin)= ff104ccb05421ab93e63f8c3ce5c2c2e9dbb37de2764b3a3175c8166562cac7d

Now, reverse the bytes! (back to big endian):

7dac2c5666815c17a3b36427de37bb9d2e2c5ccec3f8633eb91a4205cb4c10ff

https://medium.com/coinmonks/how-to-manually-verify-the-merkle-root-of-a-bitcoin-block-command-line-7881397d4db1


I saw that newer drivers are broken, but some report good behaviour with 11.11.

https://github.com/samr7/vanitygen/issues/19


The fee goes to the miners and is deducted from your wallet.  Including a fee in your transaction improves the chance that your transaction will quickly be included in a block.


How secure would it be to use my toy bingo machine to generate a bitcoin private key?

The address space has 2160 possible addresses, so to fully benefit from that space, you'd need to surpass a space of

  2160 = 1.46E48 combinations.

This is achieved by picking 26 numbers from your toy bingo machine as

  90!/64! = 1.17E49

while you keep track of the order in which they are picked.

To achieve at least 64 bit of entropy, you'd need 10 numbers (order recorded) from your toy bingo machine:

  90!/80! = 2.07E19 > 1.84E19 = 264

Which was suggested as a minimum on the related question: How many throws of a dice are necessary to defeat a brute force attack?

All numbers are assuming that the toy bingo machine acts reasonably random.


Best way to distribute bitcoin to heirs in a will

To meet your requirement of freely using your bitcoins and moving them around, a deterministic wallet such as Electrum may suit well. In that case, you'd just need to share the wallet seed (and some details on how to use it), perhaps with half of the seed stored in each of 2 secure facilities to protect against theft.

That doesn't meet some of the other requirements, such as handling an equal split, but writing a will could handle that part reasonably effectively (though still with some chance of human error or fraud).


Protect against falling bitcoin and bitcoin cash prices

As of 2017, the CME and CBOE offer  Bitcoin futures (but not bitcoin cash futures). AFAIK, these are the only regulated future contracts that you'll get. More ways of hedging your exposure to future bitcoin price collapses might be available in the future.


My favourite today is mapofcoins.com

You can browse alt-coins list here: coinwik.org

You can compare coins here: coinplorer.com/Hardware/CurrenciesComparison

There is forum, cryptocointalk

See, here coingen.bluematt.me and +10 hidden market places with constructors.

You can't find full list of all alt-coins. It doesn't exist.

Number of alt-coins grows so fast. Probably, every day there are appear 10-20 alt-coins. This is unstoppable trend. In the Jan of 2015 there will be more than 1000 alt-coins in one hundred percent.

Edit:

See, another one constructor COIN NUKE | COIN CREATION SERVICE | +EVERYTHING FOR YOU COIN +ESCROW +TOOLS


Synchronisation status

First check Multibit's synchronisation status.

It probably shows a message on the bottom left status bar "wallet synchronised with network" (perhaps depending on exact version of Multibit software)

If it isnt synchronised yet, that might explain why it doesn't show the balance you expected.

Recovery from wallet words

There are two main versions of Multibit: Classic and HD. Both are no longer supported.

To recover a wallet from your wallet words (also known as recovery phrase or seed phrase) follow the instructions at

https://multibit.org/help/hd0.1/restore-wallet.html

  From the unlock screen click the "Restore" button and follow the instructions on the MultiBit HD screen.

There may be different instructions for different versions of Multibit (Classic, HD2, HD3 etc) - check the appropriate instructions for your exact version if possible.

It may take a while (days) to synchronise before it shows you a balance.

Multibit is unsupported

If your money becomes visible again, because Multibit wallet software is no longer supported, you should move your money into a different type of wallet. Multibit seem to suggest Electrum (electrum.org) - maybe that is closest to Multibit in terms of user interface? However there are many alternatives which you should probably consider.

Consider a hardware wallet or an offline-wallet/cold-wallet for longer term storage.


Can we get a fixed rate of kWH to USD through bitcoin?

Assuming the energy to bitcoin rate of your choosing

Market questions generally go out of date extremely quickly, and Bitcoin mining in general varies hugely in efficiency and availability of hardware. It is not as clear cut as working out the hardware level of efficiency at the chip level as this is only a small portion of the total power cost.

At a chip level, the hash engines have a specific cost per hash, minus any amount of failure rate, which is generally in the order of several percent of the work wasted.
At a miner level, where it converts incoming high voltage AC mains power to a lower voltage for use with the mining chips. This varies greatly with the design of the hardware being used, from tens of percent to just a few depending on the complexity and cost of the conversion.
At a farm level, where incoming transmission voltage is converted to mains voltage. This varies massively depending if the incoming supply is already designed for residential use (120v/240v), industrial use (277v/480v), or commercial distribution (tens or hundreds of kilovolts), and the efficiency of the hardware used.

It's therefor pretty hard to define even a cost per hashrate in the wider network, but once you know it it's relatively straightforward to convert it to a USD cost.

  what is the cost of one kiloWatt Hour, in USD

This is the simple bit. They're usually specified literally as this price, for example in parts of north america 4c/kWh is fairly typical, but it varies extremely widely betwene location and provider anywhere from 1c to 35c.


Which crypto exchanges charge zero maker fees other than GDAX?

According to this list, these exchanges have zero maker's fee:

GDAX
Coinfloor
itBit
Luno
Cex.io

There are probably more exchanges, but those aren't listed there.


Does a 2009 node sync the whole bitcoin blockchain

In theory it can as the explicit consensus rules have not changed. However in practice, it will not be able to sync without some special modifications.

First of all, the network version is so old that no modern node software will accept connections from it. Furthermore, the format of the network messages has changed since the first release so that it now contains a checksum of the message. The first version of the Bitcoin client did not have a checksum for messages. This difference in the network protocol will result in messages that do not make sense to either node in a connection.

In addition to the network message change, the original Bitcoin client will be unable to find nodes to connect to. It was only able to connect solely through using IRC node discovery which has since been disabled and removed. So you will need to specially construct the peers.dat file so that it will be able to find a peer to connect to.

Lastly, the original Bitcoin client will be unable to sync past the 2013 fork unless the number of BDB locks is increased. Using the default settings, it will run out of locks when it reaches around that time and thus fail to sync.

If you can to avoid all of these issues (e.g. by using a special node software specifically to sync off of) and increase the number of BDB locks, then the original Bitcoin client should be able to sync the current blockchain, albeit very slowly and possibly never be able to sync to the tip. Towards the current tip of the blockchain, it will probably take longer to validate a block than it takes for a new block to be found.

Several months ago I modified a version of Bitcoin Core to be compatible with Bitcoin 0.1.0 and to then try to sync it. The code for that is here. I stopped that experiment after a few days when it was able to only sync ~25,000 blocks.


How is subscript computed for OP_CHECKMULTISIG?

The main confusion here comes from this :

  First, generate the script by concatenating [sigScript][OP_CODESEPARATOR][pubkeyScript]

Then you add :

  I understand that script execution has evolved from this

I'm not sure whether you mean "Builds upon this method" or "Has since changed this method", but if it is the former then this might explain the unexpected results that you're getting.  Hopefully my answer can clear this up.

It's true that for a (relatively) short period Bitcoin's script evaluation was done by the way you mentioned, where a CODESEPARATOR was placed between scriptSig and scriptPubkey then the whole thing was concatenated to form a single script which would be executed, but that was changed rather early on in commit 6ff5f718b6a67797b2b3bab8905d607ad216ee21 which dates to July 31st 2010.

After said change, which introduced a function named VerifyScript in script.cpp (today the logic is in interpreter.cpp), scriptSig and scriptPubkey are no longer concatenated with a CODESEPARATOR between them.  Rather they are executed as two separate scripts one after the other, where the stack's contents carries from the first to the second.

The difference is subtle and doesn't really change the flow of standard redemptions, but becomes noticable when a CHECKSIG operation is done within the scriptSig.

Starting from the funding transaction

b8fd633e7713a43d5ac87266adc78444669b987a56b3a65fb92d58c2c4b0e84d

we see that the second output in it is a payment to the following scriptPubKey at index 1 :

14 2a9bc5447d664c1d0141392a842d23dba45c4f13
NOP2
DROP

OP_CLTV is not active yet, so the opcode 0xb1 is still NOP2.

Which is then redeemed by

eb3b82c0884e3efa6d8b0be55b4915eb20be124c9766245bcc7f34fdac32bccb

by the input at index 1 :

0
47
  30
  44
    02
    20 276d6dad3defa37b5f81add3992d510d2f44a317fd85e04f93a1e2daea646602
    02
    20 0f862a0da684249322ceb8ed842fb8c859c0cb94c81e1c5308b4868157a428ee
  01
CODESEPARATOR
1
21 0232abdc893e7f0631364d7fd01cb33d24da45329a00357b3a7886211ab414d55a
1
CHECKMULTISIG

In the short period before commit 6ff5f718, the two scripts would be concated with a CODESEPARATOR placed between them to form the complete script, then execution will start.  We start with an empty stack, and a pointer to the beginning of the script marking the start of what would be the signed scriptCode :

Push 0 onto the stack
Push the signature onto the stack
Execute CODESEPARATOR - mark this point in the script as the start of scriptCode (overwriting the previous value set at the beginning)
Push 1 onto the stack
Push the pubkey onto the stack
Push 1 onto the stack
Execute 1-of-1 CHECKMULTISIG

At this point, we need to construct the scriptCode to be signed.  The rules are :

Take the subscript from the last executed CODESEPARATOR up until the end of the script
Remove all CODESEPARATORS
Remove all occurences of the signature that is currently being verified

Since the signature is actually before the last CODESEPARATOR, rule #3 doesn't come into effect here, but rules #1 and #2 do.  This leaves us with the following scriptCode :

1
21 0232abdc893e7f0631364d7fd01cb33d24da45329a00357b3a7886211ab414d55a
1
CHECKMULTISIG
14 2a9bc5447d664c1d0141392a842d23dba45c4f13
NOP2
DROP

Which is what you initially came up with, but now let's see how the change at 6ff5f718 makes a difference.

Recall that we are now dealing with two separate scripts, but none of the other rules change.  The only difference is that these two scripts are executed separately, one after the other, and that the stack that remains from the execution of scriptSig passes on to the execution of scriptPubkey.

We start by executing scriptSig and go through steps #1 - #7 as before, arriving at the same point of CHECKMULTISIG where we construct the scriptCode.
Since the actual executed script now consists of only what was in scriptSig, scriptCode becomes :

1
21 0232abdc893e7f0631364d7fd01cb33d24da45329a00357b3a7886211ab414d55a
1
CHECKMULTISIG

If this signature check passes (and it does), a value of 1 is pushed onto the stack, and scriptSig execution ends successfuly.  This stack now passes on to the exectution of scriptPubkey (which is very simple) and eventually left as the final value on the stack, which makes scriptPubkey resolve to True.

This transaction is very interesting really shows how non-trivial commit 6ff5f718 actually was.  It's a great example.

Another minor thing to note is that this scriptPubKey by itself is an anyone-can-spend script.  This script's conditions are satisfiable simply by passing a single push of an element which evaluates to True (e.g. 1 - 0x51) and that the signature check in scriptSig actually has no significance and does not secure the funds at all.

Edit :

Actually, looking into this some more, it seems that this transaction is specifically mentioned in BIP-17 (which has since been abandoned).  The 20 bytes in scriptPubkey is actually the hash160 of the 1-of-1 multisig script itself :

51210232abdc893e7f0631364d7fd01cb33d24da45329a00357b3a7886211ab414d55a51ae

This is in fact one of the example bip-17 transactions placed on chain by the bip's author.  Should this bip had been accepted, such a transaction would not be anyone-can-spend.  (you can see more details in the bip itself)


Is my idea of getwork protocol for bitminer right?

X-BCID is a custom extension used only by BitMinter's getwork implementation. It's a block change ID. In case long poll isn't working optimally or block changes happen too fast for long poll to catch all of them, seeing a new block change ID makes the client aware that it missed a block change.

The server doesn't validate the hashrate submitted by the client. At the BitMinter pool it is currently used by the variable difficulty (vardiff) implementation to determine the initial worker difficulty, until the pool has enough data to estimate a hashrate.

The params for getwork are empty when the client requests new work and has data when the client is sending in a proof of work. This is a silly thing with the getwork protocol, the rpc function is "getwork" both if you are getting work and if you are sending in work results.

The error field in the response is always present as this is required by the JSON-RPC standard. You can read more about JSON-RPC at http://json-rpc.org/


What previously existing technologies made Bitcoin possible?

Arvind Narayanan and Jeremy Clark wrote an excellent paper about that: Bitcoin's Academic Pedigree. I recommend reading the paper in full, but the following briefly summarizes the paper's content.
Linked timestamping/verifiable logs
Bitcoin borrows the blockchain data structure from Bayer, Haber, and Stornetta which described a very similar data structure in context of a timestamping service in the 1990s. The original also makes use of Merkle trees already. The authors suggested regularly publishing the "blockheaders" in a newspaper.
Byzantine fault tolerance
Byzantine Fault Tolerance (BFT) describes a distributed network to converge on a shared state even when their are malicious or unstable actors. While the whitepaper doesn't cite a specific source, Nakamoto described Bitcoin as a practical solution to the Byzantine Generals' Problem (a challenge that requires BFT), thus indirectly referencing an enormous body of scientific work done in the 1980s through 2000s. While not mentioned, peer-to-peer networks like BitTorrent (2001) must have served as an inspiration.
Proof of work
Originally proposed as a means to deter spam, sybil attacks, and denial of service attacks, PoW failed adoption in those applications due to the stark difference of computing power in various devices.
Digital cash
Digital Cash refers to a form of money that can be electronically transferred but exhibits characteristics of cash: final settlement, peer-to-peer transferability, resistance to forging, and transactional privacy. HashCash, b-money, and bit gold discussed ideas of using puzzle solutions as cash. None of these earlier projects had a solution for the doublespending problem, though. DigiCash solved the doublespending problem but required a central operator to issue new tokens.
Public keys as identies
While public-key cryptography was discovered in the 70s, the use of public keys as pseudonymous identities was first described by David Chaum in 1981. Since anyone can generate their own key pair, public-key cryptography lends itself to self-certified authentication.
Secret sauce: Putting it all together
Prior solutions for Byzantine Fault Tolerance required some level of honest behavior from which Nakamoto sidestepped partially by introducing economic incentives and assuming self-interest. Instead of publishing their chain in the newspaper as Bayer, Haber, and Stornetta floated, Nakamoto uses a peer-to-peer network and proof of work to decentrally author the timestamping data structure. The resulting shared groundtruth solves the doublespending problem that remained unsolved for HashCash, b-money, and bit gold.
The rewards for block authors incentivize collaborative convergent participation, ensuring both BFT but also distributing initial funds to the network. As the network identities derive from self-generated private keys, the peer-to-peer network can be open and permissionless—sidestepping the single points of failure of trusted third parties that caused issues for many previous digital cash projects.


How can I get back my bitcoin from a backup folder

Do you want to loose part of your bitcoins?

In every transaction you do new "wallets" are created and stored within your wallet and part of the bitcoins is moved from the original to those addresses to avoid tracking of addresses from outside observers. Those transactions will be lost forever.

If you haven't done any transaction since you made your backup just restore the wallet (make a backup of the new one just in case) and resync transactions, that should do it.

Import wallet.dat into a new Bitcoin-Qt client


Scan ports for my onion bitcoin node and RPC calls

This seems to be more a question about Tor than a Bitcoin specific question, but:

If your bitcoind is set up to use a Tor socks proxy, by default, it will not listen for incoming connections (because by doing so, you'd be listening on your real IP address, which defeats the security you'd gain from Tor). However, if you really want to help the Bitcoin network by making your Tor-protected bitcoind available on port 8333, you will need to configure it as a hidden service. Refer here for information about this: https://en.bitcoin.it/wiki/Setting_up_a_Tor_hidden_service

You should set up a hidden service for your RPC port if you wish to make RPC calls through Tor, then from the computer sending RPC commands, send those commands through a local Tor SOCKS proxy. Set up your bitcoind to allow RPC calls only from 127.0.0.1 port 8332 (this will ensure your bitcoind will only accept RPC calls made through Tor), then set up a hidden service for port 8332.


What is the most cost effective GPU mining rig?

Here are some guidelines to choosing hardware for an effective GPU rig.

CPU: The cheapest you can find. Low-end AMD CPUs are good for this.

RAM: The cheapest you can find.

ODD: Unnecessary, install the OS from a USB flash drive.

HDD: Unnecessary, use a USB flash drive, the cheapest you can find which can hold the OS.

GPU: Basically any ATI series 5XXX+ is suitable. https://en.bitcoin.it/wiki/Mining_hardware_comparison has a list of the hashrate to expect from each. You need to choose one based on the price in which you can get it, the hashrate, and the power (which has implications for electricity costs, and the need for proper PSU and cooling). You need to consider the whole system - using multiple cheap cards can increase the cost of the peripherals.

PSU: Needs to be a good brand and have sufficient power for all the hardware, with some to spare. A 80+ gold PSU is more expensive but could be a good idea, especially if you pay for power. If you're using many graphics cards you can even use multiple PSUs.

Case: If you're using a standard case, it can be cheap but it should have sufficient room and cooling for the cards. Bottom and side fans can help. But the most effective is to use a custom case or no case at all and just custom mounting for the cards.

Motherboard: Needs to be compatible with the CPU and RAM, and depends on the number of cards and the case. If you use a standard case you need PCIe x16 slots with enough spacing between them, and a motherboard with more than 2 suitable slots can be expensive. With a custom case you can use every PCIe slot, including x1, with extender cables - even cheap motherboards have about 5. The available bandwidth for the slots doesn't matter. Other than that there are no special requirements.


What determines SHA256 performance on different types of hardware?

Mining performance can be viewed as consisting of two factors. One is the total resources available. The other is what fraction of those resources you can usefully apply to mining.

ASICs and FPGAs excel at mining because you can effectively use a very high fraction of their available resources for mining. CPUs are terrible at mining because a huge fraction of their resources are useless for mining -- they're optimized for memory access, decision making, floating point math, and many other things that don't help with mining at all.

The "complexity of the cores" refers to how sophisticated the operations that the cores can do are. This doesn't help with mining, which only requires very simple operations, and thus just increases the fraction of the resources available that you can't use for mining.

SHA256 can be heavily optimized for every architecture. In the early days of mining, there was a huge "arms race" to micro-optimize mining for various architectures.


What does the "relayed_by" field in the BlockCypher API represent? Is there a way to gather geographical data of transactions?

It's the IP address of the node that first sent us the transaction. As transaction broadcast works a bit like gossip, it's not guaranteed to be the original node (it could be a node "in the middle"). However, as BlockCypher is connected to quite a few nodes on the network, so over multiple transactions you're highly likely to be able to identify the right originating IP.

This is not a bulletproof method, as a more sophisticated attacker could just use Tor for transactions broadcast. Practically this is the exception and quite frankly, simply using a web wallet with a good VPN is a much simpler way to achieve a similar level of anonimity.

So for most applications you can get a fairly accurate originating IP address using relayed_by over multiple transactions.

Full disclosure: I'm CTO and co-founder at BlockCypher.


Is it impossible to GPU mine without OpenCL?

OpenCL allows all graphic cards to be handled in a higher level in a uniform fashion. As all GPU mining software relies on OpenCL, you would need to create your own software to mine on non-OpenCL card. Whereas it is possible, the process would be very complicated and the reward probably wouldn't be worth it (NVIDIA cards aren't good for mining).

So all in all, no, if the graphic card does not support OpenCL, you can't use it to mine.


How can we be sure that a new block will be found?

The important thing here is, that every mining pool/solo miner is working on a different input: They have different coinbase transactions and are working on different sets of transactions. Further entropy can be added by changing the nonce and extra-nonce, by adding another transaction, or by changing the order of the transactions.

While there can be block inputs that won't succeed with any nonce, the complete network traverses over so many different inputs, that at some point a valid block will be discovered.

Finding a block is a Poisson process

Due to the hashing process being implemented as a Poisson process, if the network's hashing power matches the difficulty, the expected time to find the next block is exactly 10 minutes at every point of time.

The probability of a number of X blocks to be found in a time frame in which you would expect to find λ blocks can be calculated with the following formula:

So, in order to calculate the likelihood of an interval between blocks to be longer than the mean (10 minutes in an ideal world) by a factor λ we get p(0|λ) = exp(-λ)*(λ^0)/(0!) = exp(-λ)*1/1 = exp(-λ), e.g. the likelihood for a block interval to be

more than 10 minutes is 36.8%
more than 20 minutes is 13.5%
more than 30 minutes is 5.0%
more than 1 hour is 0.25%
more than 2 hours is 0.0006%
more than a day is 2.89*exp(-63)

While it is not impossible that longer times occur, it is extremely unlikely to happen.

Additional random bits I stumbled upon while researching for this question

In the last two years, the seven day average block confirmation time has never been over 15 minutes. See Bitcoin Average Transaction Confirmation Time

In the very early days of Bitcoin, bigger fluctuations were more common due to fluctuating mining power, see for example What is the longest time gap between blocks in 2010 - 2011?.

You can find a list of all block intervals up to Jan 2014 sorted by length here: Block intervals sorted.
The first column denominates the blocks forming the interval, the second column gives the block interval in seconds. Source: runeks on reddit: What is the longest time between blocks in the history of bitcoin?


Dynamic PHP Array used in sendmany bitcoin command issue

Have you tried:
$bitcoin -> sendmany($BuyerAccount, $to);?
Bitcoin API states <fromaccount> {address:amount,...} [minconf=1] [comment] as parameters, so you don't have to iterate - pass the whole array.
If it doesn't work somehow, you can also prepare request by yourself for RPCClient. This is example for sendfrom:
                $request = '{"method":"sendfrom","params":["'.$params[0].'","'.$params[1].'",'.$params[2].','.$params[3].'],"id":'.$currentId.'}';


Transaction not showing up as confirmed on MultiBit

A transaction cannot be both confirmed and unconfirmed. Your transaction is confirmed, just that your wallet is not showing you the right information. This is not normal behavior. This happens when your wallet is no longer synchronized with the rest of the network. You should be able to fix this by going to Manage Wallet and clicking the Repair Wallet button. Then follow the instructions in the dialog that appears.


How to initiate a transaction with address and privateKey using nodejs

Given a list of bitcoin private keys, first you need to check the balance of the corresponding address, probably best done using a block explorer, e.g. blockchain.info:

Single Address

https://blockchain.info/rawaddr/$bitcoin_address
Address can be base58 or hash160

Optional limit parameter to show n transactions e.g. &limit=50 (Default: 50, Max: 50)
Optional offset parameter to skip the first n transactions e.g. &offset=100 (Page 2 for limit 50)

{
    "hash160":"660d4ef3a743e3e696ad990364e555c271ad504b",
    "address":"1AJbsFZ64EpEfS5UAjAfcUG8pH8Jn3rn1F",
    "n_tx":17,
    "n_unredeemed":2,
    "total_received":1031350000,
    "total_sent":931250000,
    "final_balance":100100000,
    "txs":[--Array of Transactions--]
}

Then, you can use bitcoinjs-lib, for example, to create a raw transaction for each private key:

const alice = bitcoin.ECPair.fromWIF('L1uyy5qTuGrVXrmrsvHWHgVzW9kKdrp27wBC7Vs6nZDTF2BRUVwy')
const txb = new bitcoin.TransactionBuilder()

txb.setVersion(1)
txb.addInput('61d520ccb74288c96bc1a2b20ea1c0d5a704776dd0164a396efec3ea7040349d', 0) // Alice's previous transaction output, has 15000 satoshis
txb.addOutput('1cMh228HTCiwS8ZsaakH8A8wze1JR5ZsP', 12000)
// (in)15000 - (out)12000 = (fee)3000, this is the miner fee

txb.sign(0, alice)

For which, you will need unspent outputs to each private key's address.

You will also need to broadcast the raw transaction:

// build and broadcast our RegTest network
regtestUtils.broadcast(txb.build().toHex(), done)


Do all UTXO get moved to the newest change address?

If you send 2.5 BTC to one address and 0.5 BTC to another wallet, that is a transaction with two recipients. Change addresses are new addresses in the same wallet.

If the 3BTC UTXO were selected, there would be no reason for the 2BTC UTXO to move. If you want to move all your money to the new wallet, send 2.5BTC to the recipient and the remaining money to your new wallet.

If you want to find out more about the Coinselection Algorithm check out What is the coin selection algorithm?.


Proof-of-Stake: What if a bad enactor is chosen by random?

What if a person wants to submit a block w/ fraudulent transactions (ex. instead of Bob sending Alice 1 cryptotoken, the fraudster changes up the transaction to make Bob send Alice 100 cryptotokens - assuming Bob owns 100+ cryptotokens)?

In PoS, block validators lock certain amount of the network tokens into a deposit using a smart contract that designates them as validators. You cannot simply change the output as the signature used to verify 2 cryptokens being sent will not be valid if that number is changed to 100. Thus this transaction would be invalid according to the protocol. If the network determines that the validator has misbehaved then the entire deposit (or in some cases portion of the deposit depending on protocols on different chains) gets slashed. To go into exact technical details as to how it happens you can see Ethereum PoS FAQs here.


Implementing events with the bitcoind notifications using PHP

I would recommend that you use blocknotify to execute a CLI PHP script. The script would then use PHP JSON-RPC to call listsinceblock to get the transactions that occurred in the latest block and put them in a MySQL database.


A Blockchain that merges mining forks and could be more power-efficient?

Something that is very similar to what you describe is the concept of "Uncle Blocks" used in Ethereum. Even there, though, there are no partial blocks and nobody would continue to mine on a "half-finished" block. Ethereum has significantly shorter block intervals which causes multiple blocks at the same height to be found often and allowing to reference them as uncle blocks mitigates the waste of that to a degree. Introducing progress into mining is problematic, because it biases mining success towards miners with more hashrate.


Master Seed from Mycellium does not concord with address Mycellium app generated for me

Used this site https://iancoleman.io/bip39/ to generate the derived addresses from my master seed

Please do not enter seed on any website. It's only safe if you run it locally on your machine from https://github.com/iancoleman/bip39

Any chance to recover my lost coins ?

I would suggest restoring wallet in Electrum. You can follow the steps mentioned in this answer: https://bitcoin.stackexchange.com/a/99441/
Basic things to keep in mind: Either system used for wallet is offline or not affected with malwares, download from original source, verify it and never share your seed with anyone else.
Also for gap limit refer to: https://electrum.readthedocs.io/en/latest/faq.html#gap-limit and https://bitcoin.stackexchange.com/a/98919/


Why would Bitcoin-QT attempt to charge a processing fee, when I have my transaction fees set to zero?

Bitcoin-Qt enforces the reference implementation:

A transaction will be sent without fees if these conditions are met

It is smaller than 10 thousand bytes.
All outputs are 0.01 BTC or larger.
Its priority is large enough

Otherwise, the reference implementation will round up the transaction size to the nearest thousand bytes and then add a fee of 0.0005 BTC per thousand bytes. Users may override the default 0.0005 BTC/kb fee setting, but cannot control transaction fees for each transaction. Bitcoin-Qt does prompt the user to accept the fee before the transaction is sent (they may cancel the transaction if they are not willing to pay the fee).

Source


Do I need to pay fees for the transactions from my full node?

Yes. All transactions should pay a transaction fee. Running a full node does not give you any special ability for you to not pay a transaction fee and still have your transaction confirmed in a timely manner. Your wallet should take care of setting the transaction fees for you.


blockchain.info says my tx is double spend. Which tx use the same utxo?

You can find doublespends by looking at the addresses that the inputs were previously associated with. At least one of the "send-addresses" will show another transaction that spends one of in the inputs that your transaction is also claiming.

In this case, this is particularly easy, as there is only one input, and therefore only one previous transaction output to consider.

When you look at blockchain.info's page for the address 12sWrxRY7E7Nhmuyjbz4TtGE9jRewGqEZD, you'll notice that there are two competing transactions trying to spend the input.

In regard to which of the transactions may be confirmed:
Obviously, only one of them can ever confirm. In this case, their fee rates are 7.5 and 8.95 satoshi/byte, so likely neither will confirm. In other cases, it depends on the transaction selection strategy of the miner. AFAIK, first-seen remains the standard policy, i.e. nodes and/or miners accept, relay, and confirm the transaction that was first seen and shun the other as a doublespend. However, especially in a time with fee events and crazy mempool sizes, I'd expect more and more pools to adopt a replace-by-fee policy where they would prioritize the transaction with the higher fee. Not only do miners earn more that way, and the transaction will be up for confirmation quicker, but this also gives people a better chance to update urgent transactions that didn't have a sufficient fee the first time around.

Since this is the obvious direction transaction selection will progress, let me use this opportunity to reiterate that unconfirmed transactions are a payment promise and not a reliable payment. Accepting zero-confirmation transactions is a bet which becomes less reasonable by the block.


How can all possible numbers in 256-bit space be squeezed into 160-bit space?

It's really 160 bit hash (RIPEMD160) of an already hashed (SHA256) public secp256k1 elliptic curve key. And yes, on the average, every address has about 2256-160=296 pairs of private/public keys.


Adding Comment on Bitcoin Transaction (After Sent)

Certainly. It is entirely dependent on the wallet software you are using. Bitcoin transactions do not actually have comments associated with them at all. Any comments or descriptions are local to your wallet software. That means that you can always add a comment to a transaction as it is simply updating an entry in your wallet software.


Bitconnect balance not showing on my wallet

You need to fully sync the wallet for it to show your balance.

If you'r using Windows there is a tutorial on how to sync your wallet.


How do I get imported Bitcoin in my blockchain wallet without having to pay more for the private key?

You cannot get the private key. Your money is gone and you will not get it back. Report the crime to your local police.

Google's translation:

  Sie können den privaten Schlüssel nicht abrufen. Dein Geld ist weg und du wirst es nicht zurückbekommen. Melden Sie das Verbrechen Ihrer örtlichen Polizei.

For more information see the answers to Reg: Watch only Address and the answers to the linked questions there. There are numerous other people who have been cheated in the same way.

Do not use the blockchain wallet you created. Any money you put there will be taken by the criminals who tricked you into giving them access to it. Their access cannot be revoked by blockchain or anyone else.