Why is it important for checkpoints to contain well-formed blocks?

There are two things :

Why are checkpoints needed in the first place,
Why do the checkpointed blocks need to adhere to the standards you are quoting (which is your question)

I don't think checkpoints are required at all or useful in any way, there has been some debate around this, the fact remains that checkpoints are still present in the Satoshi implementation.

I believe there is no specific reason why the checkpointed blocks must have "reasonable timestamps" or not contain "strange transactions". The only reason I can think of is to not confuse someone reviewing the checkpointed blocks. As you said, such a block would still be downloaded and properly validated. So I think it has more to do with cosmetics and clarity than with an actual technical constraint.

(Also note that "strange transactions" doesn't really mean much, it does not seem to be defined as a transaction that passes the IsStandard check)


Processing multiple transactions very fast

I want to send one transaction with 5 BTC to one address and a transaction with 2 BTC to another.

The fastest (and cheapest) way to do this is with a single transaction.

Many transactions have 2 outputs, one being for change, but it doesn't need to be for change, and doesn't need to be limited to 1 or 2 outputs either.

Take this transaction for example, it has about 2 dozen outputs: https://blockchain.info/tx/df9ba42c44d25df13d3bdba0994b98b97d8c22293daf0c27e8e5d9b4e21c5906

Total fee, just 0.00483272 BTC


How are block interval, block size and effective throughput related?

First off, it is worth noting: this paper is not only talking about throughput in the 'transactions/second' sense, it is also addressing the effects of block size and interval on the network's latency (which is an important factor in scaling blockchain networks). The authors define 'effective throughput' as:

Our  results  hinge  on  the  key  metric  of effective  throughput in  the  overlay network,  which  we  define  here  as  which  blocks  propagate  within  an  average block interval period the percentage of nodes to.

I find this confusingly written, but understand it to mean "within the period of time defined by the average block interval, what percentage of the network's nodes will have received and validated the most recent block".
As a simple example of why this metric is important: if only 50% of nodes can download and validate blockheight X before blockheight X+1 is mined, then the other 50% of nodes will be continuously playing catch-up, and will not be able to meaningfully contribute to the network. This hurts network decentralization, as less users will be able to directly participate in the network.

Why does the effective throughput (as defined below) decreases when the block interval is decreased?

To understand this, consider an extreme example: a blockchain with 1GB blocks every 10 minutes. In order for nodes on the network to stay in sync with the chain, they will need to download and verify the validity of 1GB worth of blockdata every 10 mins. Any nodes which cannot do this, will decrease the 'effective throughput' of the network.
So now, consider what happens if you decrease the block interval to 1 min. Suddenly, a lot of nodes that could download and process that data within 10 mins will no longer be able to keep up with the rest of the network, since they now only have 1 min to do the same. Thus, our 'effective throughput' has decreased, since a much smaller percent of nodes will be able to engage and contribute to the network.

How does a reduction in the block size results in maintaining a high effective throughput?

I think your confusion here comes from thinking about throughput in terms of 'transactions/second'. Decreasing the blocksize would result in less transactions/second, but it would also mean a node would have to download and validate less data per block interval. In relation to the author's definition of 'effective throughput', we see that lowering the resource requirements for a node will allow more nodes to join the network.

Second, they define effective throughput as follows:
X% effective throughput := (block size)/(X% block propagation delay)
This formula indicates a decrease in effective throughput when the block size is decreased, while their goal is the opposite, i.e. maintaining a high effective throughput (by decreasing the block size).

Decreasing the block size variable would also affect the X% block propagation delay variable. So if a lower block size results in a higher throughput, we would expect that the X% block propagation delay would see a larger relative decrease than the decrease in block size.


What is off-by one error in updating target? How is it fixed?

In the bitcoin blockchain, the difficulty of mining is adjusted after every 2016 blocks. If the average mining time for the last 2016 blocks was higher than 10 minutes than the difficulty is reduced so that the time readjusts to 10 minutes. While if the time to mine the last 2016 blocks was lower than 10 minutes, then the difficulty is increased.

Although the target calibration happens every 2016 blocks, because of an "off-by-one" error within the Bitcoin Core client, it is based on the total time of the previous 2015 blocks (not 2016 as it should be). Because you are now including the time for the last 2015 blocks but comparing it to 20,160 minutes (2016 x 10 minutes), this results in the target bias upward by ~0.05%.


Can a publicly visible but privately mined block chain be trusted?

I'm hoping that data transparency and data integrity can be preserved by having a publicly visible blockchain but since there's no reward to users for mining there's not much reason they will actually mine.

There's really no point. There's much simpler ways to provide the same data transparency and integrity guarantees. The only reason to use a blockchain would be so you could say "it's cool because we use a blockchain".

You can use transactions without a blockchain. You can map ownership to cryptographic identities without a blockchain. The sole miner just sign that it's accepted a transaction rather than doing anything like mining.

A blockchain doesn't do anything for data transparency. Just because you have a blockchain doesn't compel you to make it publicly accessible. And you can make data publicly accessible regardless of its format, blockchain or not.

And there's lots of costs associated with blockchains, none of which give any benefit. The whole point of mining is to allow you to determine what is truth without a central authority to say what is true. If you have that anyway, what's the point?

This is such an easy to solve problem and blockchains have such complex tradeoffs, it would really only make sense if you were too lazy to build something more appropriate and just happened to have a blockchain solution you could easily drop in.


What programming language should be used to develop Bitcoin exchange software? Why?

There is no possible way of knowing what are the technologies used by the exchanges.

C++, C# and C have been typically used by the financial and trading software industry as they can be optimized for low latency / high frequency behavior needed for real-time trading. Java, F#, Python, VBA, Haskell as well as other programming languages have also been used but it all comes to a matter of a personal taste, what technologies you or your team are familiar with, what open source (or not) modules are out there that will prevent you from reinventing the wheel and much more that are out of the context of this forum.

Another way to get an idea for the technologies used by an exchange is to spy on its job adverts. Still, what you'll get might not be accurate or it might refer to another or new product or service of that exchange, or even a migration of the existing technologies towards some other but still you'll get an idea.


How does fee split between senders in a transaction?

There is no real concept of sender identities, as far as the blockchain is concerned. The fee split is entirely determined by the change output values, which are entirely determined by the signers of the transaction.

A transaction involving inputs from two separate parties will require some coordination between them to decide on the recipient and change. It is presumed that during this coordination, a fee is decided upon, and set.

Bitcoin itself offers no insight into this splitting process, it should be handled out of band by the wallet or tool used to construct the transaction, based on configuration from the senders


What restrictions are there to the application of opt-in RBF?

What restrictions are placed on RBF in the deployed "opt-in RBF" variant?
BIP-125: Opt-in Full Replace-by-Fee (RBF) Signaling specifies how to declare transactions replaceable until they are confirmed in a block. Replaceability is indicated via the sequence number field which appears in each transaction input. A transaction is replaceable if at least one sequence number in the transaction is smaller than MAX-1.
The meaning of sequence number values:

MAX: transaction is final
MAX-1: transaction uses locktime
MAX-1: transaction is replaceable

A spender may overwrite a replaceable transaction with a transaction of higher feerate before it is confirmed. The feerate must increase at least by minRelayTxFeeRate (currently 1 sat/vB). If the replaced transaction has descendant transaction, the replacement must pay more fees than all replaced transactions. When a transaction is replaced, the transaction update may opt out of future replacements by setting all sequence numbers to a final value, i.e. MAX-1 or MAX.
Bitcoin Core v0.12.0 and later versions will allow replacement under the above description, but will not create opt-in RBF transactions by default.
How does opt-in RBF interact with unconfirmed transactions?

Final (regular) transactions with a sequence number of MAX-1 or MAX are not affected. Nodes that implement opt-in RBF treat them exactly as before. Conflicting transactions of final transactions are still treated under the first-seen paradigm and not added to the mempool or relayed even when they pay a higher fee.
Non-final (RBF) transactions explicitly signal that they should not be accepted before confirmation. Bitcoin Core will create final transaction by default.

What influence does this have on zero confirmation payment processing?
Users get an additional new type of transaction that explicitly signals that it should not be accepted without confirmation.
Wallet developers should either:

Hide RBF transactions before confirmation
Indicate the replaceable status of RBF transactions and warn the user that they are only reliable after confirmation

Accepting final transactions (which don't signal replaceability) without confirmations has exactly the same risk considerations as prior to the introduction of opt-in RBF.
If you want to read more, you may be interested in this study on RBF adoption of various wallets by the Bitcoin Optech Group.


How can I copy an address (with the private key) using JSON-RPC?

Check this section out: https://en.bitcoin.it/wiki/How_to_import_private_keys#Using_bitcoind

Essentially you can use importprivkey

$ bitcoind help
[...]
  importprivkey <bitcoinprivkey> [label]


What are the published Bitcoin addresses of the Binance 7000 BTC hack from 2019 May?

This article on Coin Telegraph  claims that this is the transaction spending the 7074 BTC.  You can follow the amounts from there.  Here is a tree chart: https://www.blockchain.com/btc/tree/444776063


This is because miners are spaming the network, stay calmed, maybe cancel it and try it later.


Could mining centralization be countered by checking if the node connects to many ASICs instead of one?

No, this is not possible. Miners must be allowed to join the network without permission, because otherwise the position of a ‘decision-maker’ becomes necessary. This doesn’t necessarily mean the decision maker is just a single individual (or group of individuals, etc), but in any case it presents an additional barrier of entry to the network.

Consider: if I were a miner, why would I allow my node to ‘give permission’ to any other miner to join the network? By not allowing anyone else to join, I would have less competition when mining. So I would be smart to do anything I could to prevent others from joining.

Further, how does the network come to consensus on which nodes are allowed to mine? This is a non-trivial problem, in fact it is mining itself which allows the network to maintain consensus. You would need to create a whole new system and layer of consensus which would precede the act of mining.

Also worth mentioning: even if it were possible, running a node is inexpensive, so there is no stopping a single entity from just running many nodes in order to run many mining hardware devices.

As you mentioned, there is also no way to force a user to use a specific software implementation. A trusted execution environment is not a solution in this case: forcing something like that would centralize the decision of what runs inside the TEE, which is in stark contrast to the permissionless and open source nature cryptocurrencies. Without these properties, the value proposition of a cryptocurrency like bitcoin is destroyed. What if the decision maker or hardware manufacturer is compromised? Situations like that present huge existential risks to the network.


How to get hex string from transaction in bitcoinj

A shorter version could be:

String hex = DatatypeConverter.printHexBinary(tx.unsafeBitcoinSerialize());

Where the hex converter used is standard at least since Java 7:

http://docs.oracle.com/javase/7/docs/api/javax/xml/bind/DatatypeConverter.html


Your question seems a little bit underspecified. So not sure if I can really help you. The host is your public IP address so if you are logged on the machine on which the lightning node runs you can try typing curl -4 https://icanhazip.com/ to the command line.

if you are running c-lightning you can do: lightning-cli getinfo and it will also depict your public IP address. Not sure if the other implementations have an API call to depict this information.


I transferred bitcoins from my Coinbase account to 3FkenCiXpSLqD8L79intRNXUgjRoH9sjXa

Well that is how you'd typically transfer some bitcoins to someone else's wallet to buy something. Its also how you'd move your bitcoins to a second wallet that you own (or to another address in the same wallet that you sent from)

You must know what the address is for - you must have had a reason for making the transfer.

  I’m new to transferring of coins can you help me figure out how to receive it back

Bitcoin transactions cannot be reversed, undone or cancelled.

  can you help me figure out ... how to send it somewhere?

You already sent it somewhere.

  I don’t understand! Confused newbie!

That's OK, we all find it confusing to start with. It's perhaps a bit foolish to put much money into something you find confusing - but many other people do that. Perhaps the following will help make things a little clearer.

Wallets don't contain bitcoins
Wallets contain private keys that allows you to control the movement of some bitcoins in the blockchain.
Private keys are not passwords or pass-phrases. Passwords are typically used to lock your wallet so that other people can't peek inside and see your private key. If your forget your password (it happens!) your wallet is useless. That doesn't matter if you follow the advice in the last point in this list.
The blockchain is a ledger of all bitcoin movements. All full-nodes (typically desktop wallets, mining pools, "exchanges", etc) keep a copy. The blockchain is not owned by anyone (For example it is not the same as blockchain.info and is not owned or controlled by them).
Your wallet has a private key. Some wallets can have several.
From a private key, an address can be derived.
You can send "bitcoins" from one address to another address.
When I wrote "bitcoin" there I meant the unspent outputs of one or more previous transactions (UTXOs)
When "bitcoins" are sent from one address to another, that is a transaction. The transaction details are added to (every copy of) the blockchain by miners (essentially).
If the other address is not derived from a private key you own, you no longer have any control over those bitcoin.
Your wallet should be able to show you all the private keys it knows of and all the addresses derived from those private keys and the total amount of "bitcoins" currently associated with those addresses.
Sometimes it takes time for your wallet to "catch up" with the latest transactions. If your wallet is offline or has a problem, it might not show the latest values.
If you don't write down the private keys (or a recovery phrase from which the private key can be created) and keep them somewhere safe, you, or your car-crash heirs, will eventually lose all your bitcoin forever (probably, OK possibly, it happens a lot). With only the private key (or recovery phrase) you (or a snoop) can re-create a wallet and gain control over the bitcoin associated with the addresses derived from the private key.

If you need more information to understand all this try

A gentle introduction to bitcoin
Ever wonder how Bitcoin (and other cryptocurrencies) actually work?

If after reading that, you still have questions,

Use the search box above to find existing answers
Ask one question at a time here, be specific, try to make your question easy to read, take time to create a good question.


My guess, without knowing what exactly you did or which wallet you are using, is that you clicked again on the "receive bitcoin" button. Every time you do that a new address is created. This is for security/privacy reasons (you should not reuse addresses).

Anyways normally all addresses (actually their corresponding keys) created this way are automatically saved in your wallet so you should be good.


Sharing ownership of coins via Multi-Signature transactions

Generally wallets don't recognize payments to random outputs, even if they're able to spend from them. In situations where multi-signature outputs are used, they're generally part of a scheme that the wallet knows about and participates in (for example 2-of-3 multisignatures where one of the keys is in your phone, one in a vault, and one is held by the wallet provider; usually the provider signs transactions you ask them to, but you can also spend with just the vault key).

This avoids the situation you're describing.


If You are a beginner just starting you should probably go for GUIMINER or CGminer if you are planning on mining on your GPU if you are planning on mining on CPU you should probably go with pooler-cpuminer. BFGminer is meant for ASIC like USB Block erupters.

I HIGHLY ADVISE YOU AGAINST MINING ON YOUR LAPTOP AS THEY HAVE VERY BAD COOLING AND YOU CAN BURN YOUR MOTHERBOARD AND DESTROY IT IN MINUTES.


get mempool transactions of some bitcoin node?

No, you cannot use telnet. You will need to use a software that can speak the Bitcoin Peer-to-Peer protocol. There is no easy command line way to do this with the typical utilities, you need to have your own software. Note that you cannot just send the message to the node, you will need to perform the connection handshake as well.

You can use the Python Bitcoin library to write a python script that does what you need.

For sending a raw transaction over the P2P network, you can use the submittx tool.


Why are hashes in the bitcoin protocol typically computed twice (double computed)?

We don't know for sure, but the most popular theory is that a double hash was chosen to protect against length extension attacks.


(Script) Is it possible to create a transaction that is spendable to only one address?

You cannot specify the subsequent script used when the current script is unlocked. The script that bitcoin is sent to has only two states, locked and unlocked. Locked means it doesn't move, unlocked means it moves whereever the one who unlocked it wants.


String-along, is this possible and is it an attack?

A miner can always lose out if someone else mines a block at approximately the same time as he does. A miner will always continue building on his own block if he finds one before he processes a block found by someone else. It is never to a miner's advantage to ignore a block found by someone else unless he himself has found a block at almost exactly the same time.

So this is all behavior as expected.

When you mine a block, everyone else who has not found a block has a strong incentive to mine after your block. If they don't, they have to find two blocks to get any credit at all. If they find one block first, the rest of the network will ignore it.

If you control 51%, you effectively control 100%. That is also expected behavior.


How to know where number of inputs field ends in a transaction if it is not a fixedsize field?

A Varint is a Variable Length Integer, and can be up to 9 bytes in total

It is usually only one byte, which can represent numbers 0-252. 253-255 (0xFD-0xFF) are used as markers for the next three lengths.

Marker    Payload
None      1 byte of integer data
0xFD      0xFD followed by two bytes of integer data
0xFE      0xFE followed by four bytes of integer data
0xFF      0xFF followed by eight byes of integer data

Each marker indicates how to interpret the upcoming bytes.


I was trying to do the same thing, however, there's no explicit source of blockchain data on the internet. You'll have to download the entire blockchain transaction history by downloading Bitcoin Core to have the data at the first place. Then you'll need some parser to convert the data in raw format to more readable formats like csv or JSON.


This is my understanding based on reading BIP 70 and the Bitcoin Core source, and a few tests.

A BIP 70 payment request contains, among other things, a destination address, an amount, and an HTTPS payment URL.  When you open the payment request with the Bitcoin Core client (as a file or via a bitcoin URI with an embedded link to the payment request), you are shown the Send dialog with fields pre-filled as per the request.  When you click "Send", the transaction is signed, but rather than being broadcast on the p2p network immediately, a message is POSTed to the payment URL, containing the signed transactions and also a refund address.  It is then the requester's responsibility to broadcast the transaction after checking that it matches the request.

So in particular, the refund address is sent directly to the recipient over HTTPS, who is responsible for storing it in case it should later be needed.  It is not part of the transaction, is not sent on the Bitcoin p2p network, and never appears in the block chain (unless it is later actually used to send a refund).

Bitcoin Core will automatically generate a refund address; the GUI doesn't provide an option to let you specify it.  Actually, the details are as follows: it checks for an account named "Refund from [requester]".  If that account exists and contains an address, it uses that address as the refund address; otherwise it creates the account and a new address within it (from the key pool).  So you can find the refund address via the getaddressesbyaccount console command, but it doesn't appear to be otherwise exposed by the GUI.

You can try this: there is an online payment request generator for Testnet (and its source).  If you generate a request, open it with Bitcoin Core, and send the payment, you will find that listaccounts shows a new account named "Refund from www.bitcoincore.org", and getaddressesbyaccount "Refund from www.bitcoincore.org" will show you the refund address that was generated and sent.


This is essentially correct: the protocol leaves it up to the miner to decide which transactions  to include in a block.  There is no requirement for them to include any transactions at all, other than the "coinbase" transaction which specifies where to send the block reward.

However, most transactions have fees attached, which the miner can collect only by including those transactions in the block.  So this gives the miner an incentive to include transactions if there are any outstanding.

Note that a block with no transactions does still contribute to the security of the currency: it increases the amount of hashing that an attacker would need to do to reverse a transaction recorded in a previous block.  (They would have to produce a chain showing more work than the current one, including the work proved by the zero-transaction block.)

See also Does mining activity only exist if there are bitcoin transactions?.


Can an output be spent in the block in which it is contained?

allowed by the protocol?

Yes. It is possible to spend an output immediately. And two (three-four-etc) chaining transactions will be included in the same block. There are a lot of examples in blockchain. Note, that the their order in block is fixed.

  do any of the common clients allow spending unconfirmed Bitcoins

Bitcoin-core client allows to send "raw transaction" to spend unconfirmed bitcoins. Also the "change" output can be spent without confirmations. Holding incoming bitcoins for several confirmations is an interface option only, not a protocol rule.


Cannot get Bitcoin-QT to run in testnet mode

Create a shortcut on your desktop (or somewhere) to:
"C:\User\MYUSERNAME\Downloads\bitcoin-0.8.-win32\bitcoin-0.8.6-win32\bitcoin-qt.exe" -testnet
and name it "Bitcoin-QT testnet"


How do I access coins purchased at ZipZap using a moneygram?

If you purchased coins you probably gave them an "address" to send it to.  Although "address" is the preferred terminology it can be called a ScriptPubKey.  Sounds like someone is being too technical and requiring too much college (as you put it).

The question is, how did you generate or create the address?  There are two halves to an address.

The address itself, and analogous to a PO Box. It's fairly anonymous, and secure.  You can deliver to it...  but can only take things out of it if you have a private key.
The private key (not to be confused with ScriptPubKey).  This is a secret to be protected.

I have never used ZipZap, so they will either ask you for an address to send coins to, or they will give you a voucher at Mt Gox.

You'll need to give us more information about how you purchased the coins, or contact ZipZap themselves.


By delete your wallet do you mean delete your account and .dat file? Thanks to BIP32 the seed/recovery phrase allows a user to back up and restore a wallet without needing any other information and can in some cases allow the creation of public addresses without the knowledge of the private key.

In other words your recovery phrase is equivalent to the private key so if you had a lost/deleted/stolen wallet then you would be able to recover it with the recovery phrase/seed.


Creating a multisig wallet with bcoin and receiving transactions

There may be a few misunderstandings around BIP32/BIP44 key derivation and bcoin wallet usage in particular. I re-wrote your script below to demonstrate how to use bcoin multisig wallets and manually derive multisig P2SH addresses from keys. If you run it, you should see all three output addresses are identical.

Here are a few things you need to know for this script to work:

To create a bcoin wallet from an xpub you must initialize the wallet as watch-only. Otherwise the account-key option is ignored, and a fresh master private key is generated for the wallet.
The public keys used in multisig scripts must be derived from the xpub (see BIP32 and BIP44). In this case, you need to derive the branch key (0=receive, 1=change)  and then from there derive the index key (0 in this case, incremented every time you need a new receive address)

Let me know if you have any other questions about bcoin!

'use strict';

const {WalletDB, HDPublicKey, Script} = require('bcoin');

const wdb = new WalletDB({
  network: 'testnet'
});

const key1 = 'tpubDCe8iQEHFMvcm9WZsYZEd8h9dNvoDidS3y9EVkDzZZr59NcNF2n8ec' +
             'fZWQkttDp6PWujaCUcXrptSoTKUuYjXp8fMKsz3wJvYpnpxsMQUbD';

const key2 = 'tpubDDQHqrK6Xj7A9tfW2zkiZiBPs475QJ8EQ5obViboBxgA1BG5Ai1BnP' +
             'qBWKTVf6ecEi8XoKK9WQP7GK5jYgdjaoegqBH1EvhVCx2PLc3Zgru';

(async() => {
  await wdb.open();

  // Create two watch-only multisig wallets
  const wallet1 = await wdb.create({
    m: 2,
    n: 2,
    watchOnly: true,
    accountKey: key1
  });

  const wallet2 = await wdb.create({
    m: 2,
    n: 2,
    watchOnly: true,
    accountKey: key2
  });

  // Add xpubs to each other's wallet's default account
  await wallet1.addSharedKey('default', key2);
  await wallet2.addSharedKey('default', key1);

  // Get receive address index=0 from each wallet
  const addr1 = await wallet1.receiveAddress();
  const addr2 = await wallet2.receiveAddress();

  // They will be the same
  console.log(addr1.toBase58('testnet'));
  console.log(addr2.toBase58('testnet'));

  // Now do it all manually...

  // Create HDPublicKey objects from xpubs
  const xpub1 = HDPublicKey.fromBase58(key1);
  const xpub2 = HDPublicKey.fromBase58(key2);

  // Derive public keys for each xpub (branch=0, index=0)
  const pubKey1 = xpub1.derive(0).derive(0);
  const pubKey2 = xpub2.derive(0).derive(0);

  // Construct multisig script with 2 pubkeys
  const script = Script.fromMultisig(
    2,
    2,
    [pubKey1.publicKey, pubKey2.publicKey]);

  // Create P2SH address from script
  const addr3 = script.getAddress().toString('testnet');

  // Will match the first two results
  console.log(addr3);
})();


Imported bitcoin address to block-chain un-spendable

Assuming this is a standard P2PKH/P2WPKH address, your wallet will need knowledge of the private key that was used to derive this address, in order to spend the funds locked to it.

Addresses are public info, so when you 'import an address' to a wallet, that just means you have instructed the wallet to watch that address, and report back the apparent balance of it. Anyone can do this with any address, since they are public knowledge.

In order to spend those funds, you would need to 'import a private key' to your wallet (and then ensure that your wallet derives the correct address from that key, eg, segwit vs legacy addresses). Your wallet will then be able to use this private key to create a signature on a transaction that spends those funds.


The transaction was already confirmed on Match 7th. Your friend is either lying or has a synchronization problem with their wallet software.


Can't use bitcoin-cli commands, error message says "could not connect" from localhost

Bitcoin.conf does not use quotes in its definition of options. Your lines need to resemble server=1 rather than server='1'. Your port number being zero is an artifact of this, which will not work as you need root permissions to bind to ports below 1024, which bitcoind does not and should not have.
127.0.0.1 is the loopback address used when you're connecting to yourself, rather than a normal routable IP address. For safety's sake the RPC port is not by default enabled to bind to routable IP addresses, such as your 10.0.0.0/24 range. By default, it will only bind to 127.0.0.1 and subsequently only be accessible on the host it is running on.


Stick with Google and use STunnel to avoid TLS
There is a useful article describing how to get this to work here: https://groups.google.com/a/googleproductforums.com/forum/#!category-topic/apps/mail-settings/oCwPE2o_oCM
The relevant excerpts are:

You can use STunnel to allow non-SSL devices to connect.  STunnel
should be run on a computer on your network that is up 24/7.  The
network printers will connect to STunnel using non-SSL SMTP then
STunnel will bridge the connection to Google Apps using an SSL
connection.  STunnel can be downloaded at:
http://www.stunnel.org/
Your stunnel.conf file should look like:
-- begin stunnel.conf --
cert = stunnel.pem
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
client = yes
[pop3s]
accept  = 110
connect = pop.gmail.com:995
[imaps]
accept  = 143
connect = imap.gmail.com:993
[ssmtp]
accept  = 25
connect = smtp.gmail.com:465
-- end stunnel.conf --

It's worth reading around the rest of the information on the site
I tried STunnel and failed! What now?
Try using the sneaky printer backdoor to Google's SMTP servers that avoids SSL. Instructions are here: http://support.google.com/a/bin/answer.py?hl=en&hlrm=en&answer=176600
Relevant info is:

If your device does not support SSL, connect to aspmx.l.google.com on port 25.
You must configure an SPF record for your domain with the IP address
of the device to ensure that recipients do not reject mail sent from
it. You must also add this IP address to the Email Whitelist box in
your Google Apps control panel.
For example. if your sending device
sends from 123.45.67.89, add that address to your SPF record without
removing the Google Apps mail servers from the record: v=spf1
ip4:123.45.67.89 include:_spf.google.com ~all


Are P2SH transactions with disabled opcodes relayed/mined?

On that wiki link you posted it states:

If any opcode marked as disabled is present in a script, it must abort and fail.

An attempted UTXO spend with a failed script will not be relayed between nodes running Bitcoin Core (and other major implementations) and certainly won't be included in a mined block.
The mainnet coinbase transaction you link to includes an OP_AND in an input scriptSig. But input(s) in a coinbase transaction are ignored as it is mining new Bitcoins and is not spending from any output from another transaction.
The testnet transaction you link to includes an OP_AND in an output scriptPubKey. It hasn't been spent and can't be spent because there is no scriptSig that can spend from it.
BIP-Tapscript (BIP 342) proposes to make disabled opcodes like OP_AND OP_SUCCESSx which would mean that the Tapscript would automatically succeed if the opcode is encountered. This is so that new opcode functionality could potentially be introduced in a future soft fork without breaking backwards compatibility. But Taproot/Tapscript is not yet activated on the network at the time of writing (October 2020).


How does total cost of mining affect the price of coins?

I was just thinking about this today and created this spreadsheet to model my question.


Error Code 22 returned from bitcoind sendrawtransaction

The problem, is there is no problem. It looks like there was two issues I had, which contributed to the error. So this is a bit of speculation really.

The first was that I had built bitcoind on the Mac (8.9+) and somehow the blockchain got somehow corrupted or something caused an issue. So I fixed this by running bitcoind -reindex

The second possible issue was that mempool had either already had the transaction and couldn't/hadn't resent it.

Either way, there is a (throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "TX rejected"); // TODO: report validation state in rpcrawtransaction.cpp), when validating the transaction and my c++ is not good enough to help report the validation state.

But if anyone else suggests how I can approach it then I would gladly!


The testnet networks are very similar to each other. I listed all of the testnet resets here, and it seems like they make the minimum changes necessary to create a new blockchain.

It seems like the testnet3 reset came about because of compatibility issues:

  "Mark III" because this is the third genesis block for the testnet. The
  main reason for the reset is to get a more 'sane' test network; with the
  BIP16 and BIP30 and testnet difficulty blockchain rule changes the old
  testnet is a mess, with old clients serving up different, incompatible
  chains.

(Source.)

The creation of testnet2 predates the Bitcoin mailing list, but given this discussion in #bitcoin-dev, I think it happened because difficulty on testnet was too high:

17:04   slush   btw any chance to reset testnet?
17:05   tcatm   you could use your pool and a modified bitcoind to reset it in about 6 hours
17:05   slush   no, I don't want to connect pool to testnet ;)
17:06   slush   But new genesis block in next release should solve this, right?
17:07   gavinandresen   You talking about possible testnet reset?
17:08   slush   it would be nice. It's practically impossible to 'test' anything on testnet :)
17:08   gavinandresen   If you have two machines you can create your own private testnet
17:09   gavinandresen   ... but you can't test until they've generated at least 100 blocks.
17:10   slush   gavinandresen: agree, but is there any reason for keeping difficulty so high?
17:10   gavinandresen   Nope
[Edited for length.]

(Source.)


What is the protection against a malicious node with a bad block chain?

Any chain that's not valid according to the agreed rules of Bitcoin is outright rejected. So any chain that created Bitcoins out of nowhere, spent the same Bitcoins twice, or anything like that is rejected just by testing the chain against those rules.

So the next question is among the many possible valid chains, how do you pick the one to consider authoritative. And the answer is two-fold:

You consider valid the chain that would require the most computational work to create.
You don't rely on the results of blocks that are too close to the end of the chain.

So that means that an attacker who wants to convince you that the wrong chain is valid has to do more computational work than all the Bitcoin miners put together, and must continue to do so until the blocks he's trying to convince you to accept are deep in the chain.

So say you require six confirmations to accept a transaction. An attacker has to produce a chain with six blocks after the block including that transaction that's longer than the chain that doesn't include that transaction. To do so, he'd have to give up the opportunity to mine six blocks (around $35,000) and he'd have to outpace all the Bitcoin miners in the world put together for about an hour.


Setting up my BFGMiner with two AMD GPU's

Have you read the Readme - GPU?

I have pasted the contents at pastebin, if you wanna check it out?


How do I extract the private keys from my namecoind wallet?

https://github.com/gavinandresen/bitcointools

or pywallet (link on the site above).

These are the only ways I know. Not really comfortable. Also it is probably not possible while namecoind is running.


Will MtGox accept a poor quality ID photo?

No, it will not. The information on the scanned image must be very clear and show a clear photograph.

It is best to scan the ID using a quality scanner. Even a picture taken on a smartphone and filtered with a "scanning" program was insufficient for their requirements.

Source: I lazily tried everything, getting rejected each time, then finally going and scanning the ID.


Could a malicious attacker subvert the Bitcoin network by failing to create a block?

The other miners will not be aware that this malicious miner has find the correct hash(win) since he has not propagate it, so they will still try to find the correct hash and some second later one of them will find it correct and propagate it, then cycle will repeat again without anyone knowing that this malicious miner has win second before the one that has officially win it.


Why a transaction couldn't be found with bitcoin-cli after 11 confirmations?

Your node is not fully synced, when you posted this it was only synced up to block 481192 (look at blocks under getinfo).

Once the node catches up to the chain tip the tx should display properly.


How can one download the initial Blockchain data files securely?

So far as I know, there's no conceivable attack model if you're going to use the block chain to seed the regular Bitcoin client. It won't accept an invalid block. And it understands that the "longest" block chain wins. So a compromised file that was longer than the official block chain cannot exist, and a compromised file that was shorter would just be rejected as soon as the client connected to the network.

On startup, the client checks to make sure the chain is basically valid and contains the most recent checkpoint.

If there is any attack that works in this way, it's a defect in the client. Because someone could send you the same "broken" blockchain over the network too.


How are gridcoin transactions validated?

Gridcoin is a proof-of-stake coin. Transactions are bundled and signed like any other blockchain, but with proof-of-stake the chance to sign is determined by coin balance and the time since your last block staked rather than by a simple hash race like Bitcoin. The freed-up electricity is encouraged to be directed toward BOINC; if you stake a block and you are also running whitelisted BOINC projects, you will receive bonus amounts of GRC on top of the basic stake reward (which is itself a simple 1.5% annual percentage of your current balance).

So no, BOINC is a software development kit used by distributed computing projects to distribute work and track results. Gridcoin doesn't use BOINC for anything other than bonus reward calculations; the two are symbiotic, not interdependent. If every BOINC project was shut down tomorrow, Gridcoin would work just fine forever as a basic proof-of-stake coin like Blackcoin (which it was forked from) or Peercoin.


Issues decoding the words to transaction hex

Grubles shared the reason why this didn't work and I had issues while decoding in this tweet thread: https://twitter.com/notgrubles/status/1336709747756724227

Required the hex to be divisible by 8 basically. If it wasn't the encoder would chop off the remainder. So when you would go to decode the words, you would end up with more or less the same result as you began with but with some bytes missing at the end.

New and improved hex to mnemonic encoder/decoder based on Joe Reuther's script. Mainly useful for camouflaging bitcoin stuff (addresses, PSBTs, etc) or for moving transaction data between online and offline computers w/o using QR.
https://gist.githubusercontent.com/grubles/69762512cd4e954722c03a0df1bc44ac/raw/b1a4d85dd70bfc972a6ab05a93d3432bf300d1b6/pgp-words-improved.py


Where is bitcoin.conf and why doesn't bitcoind find existing datadir v0.17.1

The syntax should be

bitcoind -datadir=/mnt/d/blockchain -txindex

Note the = sign.

This will look for the bitcoin.conf file at /mnt/d/blockchain/bitcoin.conf and will store the blockchain, databases, wallet files, etc, all in /mnt/d/blockchain.  With this option, Bitcoin Core shouldn't read or write anything in ~/.bitcoin at all.


Why is there going to be only 21 million bitcoins in circulation?

By limiting the amount of bit coin in the market one can hedge against inflation and avoid the firey demise coming to the rest of the world's fiat currencies. Though bit coin is not backed by any "hard money" it has a natural scarcity that will help keep its value consistent.


If you used the receive tab and created a payment request but did not give that request to anybody, you won't magically receive funds. You cannot just "request funds" and expect Bitcoin to be magically sent to your wallet; that is not how Bitcoin works, it is not something that is magically given out for free.

If you gave someone an address to send to or sent them the payment request but that person still has not sent you money, then you should contact them and ask them why they did not send you funds yet.

If the sender has sent you the funds but you do not see the transaction in your wallet nor do you see it on a blockchain explorer, then the transaction has not confirmed and has likely been dropped from the network due to low transaction fees. If you do see it on a block explorer and it is unconfirmed, then wait for it to confirm or to drop from the network (i.e. you don't see it on block explorers). If the transaction cannot be found on block explorers, ask the person who sent you the Bitcoin to send the Bitcoin again but include a higher transaction fee. Or have them rebroadcast their transaction.


The data being hashed is constantly updated. The block header contains a time field and is updated every few seconds. If it doesn't timeout and reset (get new work), the algorithm will be working on a stale header.
"When generating, you constantly hash the block header. The block is also occasionally updated as you are working on it."
https://en.bitcoin.it/wiki/Block_hashing_algorithm


I run a full node. Is there a desktop client to connect to this full node?

There are a few android wallets that can. For desktop i guess you could run a bitcoin-qt in pruning and blockonly mode to make it as lightweight as possible. Make a whitelisted connection to your full node (possibly over Tor if you're not at home).

Maybe the Neutrino medium weight client (no experience though).


If you are using the bitcoin-qt client https://en.bitcoin.it/wiki/Bitcoin-Qt, you already have the blockchain in your hard drive (in the /bitcoin folder). The files blk000x.dat (blk0001.dat is the first part, blk0002.dat the second ...) contain all the data. blkindex.dat has the index to the blocks.

With the command line version, bitcoind, you can check blocks, transactions. The files can also be studied with bitcointools:
https://github.com/gavinandresen/bitcointools

If you are using some other client, the files will be somewhere else, but most likely they will still be there.


While I agree with you in that this is an issue, it is in no way different from current systems. In current systems, stealing credentials of a bank give you pretty much enough power to move the money around. In the case of the LN, stealing credentials of a payment channel/tx gives you the possibility of compromising that payment channel, or to publish that tx.

However, the damage is not that bad if only one of the two participants is compromised:

In the event of key theft, the thief can simply try to cooperate with the counterparty in creating a new state that benefits the counterparty, creating some kind of LN-like protocol to ensure a part of the funds go to the thief.  The thief must however do this for each of the channels and counterparties, while in the meantime the hub can update the state and invalidate the stolen keys.
In the event of tx theft, the thief can simply either publish a previous state (which the hub should have deleted completely anyway when updating), by which the hub loses all funds after counterparty proves fraud. Or instead, the thief can only publish the current state, in which nothing changes.

I do not really think this is much of a problem, but perhaps I am missing some case scenario here. Please complete my answer if that's the case.


Can one GPU mine on Mac OS X using cgminer?

That generation of Intel integrated graphics does not have OpenCL support, which is needed for mining.


There are services such as ShapeShift that have built whole businesses around exchanging cryptocurrencies for each other.

There are numerous exchanges in many different countries that allow customers to trade national currencies for cryptocurrencies.

There are several payment processors that accept cryptocurrency payments for their customers and reimburse them in national currency.

There are some services that automatically convert your salary into cryptocurrency, allowing you to be indirectly paid in cryptocurrency by regular companies.

There are services that allow you to pay virtually any bill or order from any webshop through them as intermediaries, paying the with cryptocurrency.

By using a combination of the above, you can virtually trade any currency, your labor, any service, produce or physical object for pretty much any cryptocurrency.


How to get last transactions made to a non-wallet bitcoin address?

There is a blockchain tool call Obelisk which works like bitcoind in effect, they do have public servers open to save you having to download the whole blockchain. You need to install obelisk and sx tools (same authors)..

Info:  http://libbitcoin.dyne.org/  also  http://sx.dyne.org/history.html
sx tools Git:  https://github.com/spesmilo/sx
Obelisk Git:  https://github.com/libbitcoin/obelisk/


There isn't a single condition that triggers a SIGBUS. Without more details it's impossible to debug this problem remotely.

A Bus Error can be indicative of a hardware problem. Check your motherboard and look for bulged capacitors near where the memory slots are located. If you find any, take your PC to a technician. You may try taking out the memory modules and clean their gold contacts with paper or eraser rubber. It's also recommended you clean out the memory slots themselves from any dust.

To completely rule out a memory problem you can boot your Linux box into memtest86 (included in most Ubuntu boot options or live images) and leave it running for a few hours. If hardware-related, memtest86 will find most memory-related problems during its very first test stages.

Software conditions can also trigger a SIGBUS. Since there isn't currently a specific known issue on Bitcoin Core that triggers a Bus Error, I'd assume it's a problem in your installation. Try rebuilding Bitcoin Core from source or reinstalling/upgrading its prerequisite packages.

Lastly, you may try tweaking Bitcoin Core's memory parameters to see if the Bus Error goes away. If you notice your Linux box is disk thrashing and using too much swap when running Bitcoin, that could be an indication of low memory. Use iotop and htop in different screens to monitor the IO and CPU-bound systems respectively while running Bitcoin Core and see if either disk or CPU are being hogged by a specific process.


From Introduction on the Bitcoin wiki:

Capitalization / Nomenclature
Since Bitcoin is both a currency and a protocol, capitalization can be confusing. Accepted practice is to use Bitcoin (singular with an upper case letter B) to label the protocol, software, and community, and bitcoins (with a lower case b) to label units of the currency.

So, the accepted usage in your example would be "3 bitcoin" and the "Bitcoin protocol".


How is the bitcoin 21 million cap implemented?

Every node in the Bitcoin network checks every block it receives and validates any transactions in it. As coin generation is a transaction that is included in the block, it is also checked. Same as a node would not accept a transaction that does not balance its inputs and outputs (for example, by spending more coins than it has), neither would it accept a block reward different, than the one that is scheduled to occur (50 coins currently, half of that for some number of blocks, and then other fractions of that amount). The nodes know what rewards to expect based on the block number, as it is set to half based on that number.

To change it you would have to (convince people to) change all the clients, exactly like any other protocol change.


What is the dummy_address when creating an OP_RETURN in this example?

1111111111111111111114oLvT2 is the P2PKH address derived from a HASH160 consisting of all 0s.

mfWxJ45yp2SFn7UciZyNpvDKrzbhyfKrY8 is the same P2PKH address, but in its testnet encoding.

These are well known burn addresses, and any coins sent to either of them will be permanently lost. The example you linked uses them as they are easy to search for (which I don't really follow - any known address is easy to search for). You should replace them with an address for which you have the private key in your own code.


What options are there to combine mining over multiple computers?

You can run as few or as many Bitcoin clients as you want. You can have them all pull from the same client, or you can have each miner pull from its own client. Just remember, the mined coins will go to the wallet of the client the miner pulled the work unit from.


Automatically close the bitcoin-qt when enable SSL for RPC

Support for SSL protected RPC was removed in Bitcoin Core version 0.12.0 (released in february 2016).

See https://bitcoin.org/en/release/v0.12.0#rpc-low-level-api-changes for the release notes on this, and also a workaround.


How often does a typical miner refresh their candidate block?

There's several factors at play, one of them is that the underlying implementation of the Stratum protocol on many miners. Due to the way they are implemented many miners will drop a connection with their pool if they have not seen any updates in 30 seconds, as a result most pools will push work updates at this frequency.

Optimally, mining pools would update their work based on the block reward rather than a fixed timer. If the fee amount in their template has not moved it is not optimal for them to push new work, but if it has increased by a substantial monetary value it is optimal for them to push new work regardless of how recent the last update was.

Historically restarting work took a long time, but modern ASICs tend to take hundreds of milliseconds to alter the work they are performing, whereas older miners like HashFast could take tens of seconds.


Q1: Yes, orders will be partially filled. Some exchanges offer advanced orders that can only be completed wholly, but that's not the default.

Q2: The deciding price is the one that entered the book first. So if first a $90 ask is placed and then a $100 bid is placed, the trade will be executed at $90.


Armory uses Bitcoin Core to download blocks and other basic functionality. Bitcoin Core is what is normally used for mining so that's what you'd be using. Armory does not add anything useful for mining. When you mine you can send the mining income to an Armory wallet without Armory taking part in the mining process.


What the difference between SendToAddress and (CreateRawTransaction + SignRawTrasaction + SendRawTransacrion) RPC methods?

SendToAddressis a convenience method that handles input selection and building the transaction for you. You don't get any control over which inputs are selected.

Using the CreateRawTransaction + SignRawTrasaction + SendRawTransaction methods, you can control the exact composition of your transaction, and set the inputs, outputs, and fee with a very high precision.


Filesystem is corrupt. How to find wallet.dat?

It has magic bytes plus a version number at byte 12 in the file:

00000000 [00 00 00 00 01 00 00 00] [00 00 00 00] [62 31 05 00]
                     ^ lsn               ^ page num    ^ magic
00000010 [09 00 00 00] [00 20 00 00] 00 [09] 00 00 00 00 00 00
               ^ version     ^ page size  ^ db type

Searching for 62 31 05 00 09 00 00 00 should get you what you're looking for.

Source: berkleydb source code: layout, magic number

If that doesn't work, there are a couple of patterns you might find handy:

00 01 07 6b 65 79 6d 65 74 61 (keymeta)
00 01 0a 64 65 66 61 75 6c 74 6b 65 79 (defaultkey)
00 01 0a 6d 69 6e 76 65 72 73 69 6f 6e (minversion)
00 01 09 62 65 73 74 62 6c 6f 63 6b (bestblock)
00 01 03 61 63 63 (acc) Account
00 01 03 6b 65 79 (key)
00 01 04 63 6b 65 79 (ckey) Encrypted key
00 01 04 6d 6b 65 79 (mkey) (Only in encrypted wallets)
00 01 04 6e 61 6d 65 (name)
00 01 07 70 75 72 70 6f 73 65 (purpose)

There's a list of the tokens it uses in this source file, and you can see an explanation of what they correspond to here.


sent bitcoin and its not in the blockchain and not showing "unconfirmed" to my other wallet

Here is the receiving address on blockchain: https://blockchain.info/address/3EHttCtQtNU4BZvf5YvjbnDruhd1ubDvBT. It seems 0.028028 BTC where received.


Which exchanges allow me to transfer funds from my CurrencyFair account?

Not all bank wire transfers contain the same information so this may vary based on which bank wire network is used.

For instance, CurrencyFair may function as a method to add funds from a UK account (GBP) using a bank wire and then after conversion to EUR make a withdraw as a SEPA wire transfer to BITSTAMP.net, or Mt. Gox, and any other exchange that accepts SEPA transfers.


What do you mean by "decode"?

A hash algorithm is a one-way function.

The hash-function takes some block header information (timestamp, nonce, a hash of all transactions) and returns such a hexadecimal value. There is no way to "decode" such a hash.

Its reason is just to identify a unique block (and deciding wheather someone gets the block reward or not). There are no other information stored in 00000000000000000045c639280aee532c5b12b03c80bfdec7aae674fd8246e0

But if you have the blockchain on your PC or if you enter the block hash at a block explorer, you can get information about that specific block: https://blockchain.info/block-index/1696955/00000000000000000045c639280aee532c5b12b03c80bfdec7aae674fd8246e0


Difference between createmultisig and addmultisigaddress on v 0.20.0?

If solution suggested in the comment resolved your problem it's related to address_type in both RPC commands. It is legacy by default for createmultisig and set by -addresstype in bitcoin.conf for addmultisigaddress
You have used public keys in first command and addresses in second so I am not sure if the addresses are for same keys and in the same order.
Please refer to this question for order of keys: Is the `addmultisignature` API call dependent on order of public keys in the array? Or is it lexicographically sorted?


What are some pitfalls of having 1 minute blocktimes? What vulnerabilities would this introduce?

Shorter block times hurt decentralization

because they hurt smaller mining pools
because smaller mining pools depend on orphaning rate more
because orphaning rate depends on the number of competing blocks in unit time

since network connection quality becomes more important with higher orphaning rate

and of competing blocks, the larger miner with better connection is more likely to win

because the number of competing blocks in unit time depends on the number of blocks in unit time

Bitcoin has 6 blocks per hour. Doge has 60. Doge would have more competing blocks. In the end, larger miners are more likely to unfairly (i.e. not proportional to hashrate) win with the competing block. Hence longer block times means fairer block reward distribution to pools.
Unfair: Larger pools get larger more easily, smaller pools can't achieve their fair potential and would lose some % of their blocks hence their rewards and might not be able to compete.


What happens in an extreme case if Ripple fails to make a consensus? Will that part of the network be segmented off?

If everyone chooses a completely disparate sets of validators the network will be unlikely to reach consensus that a particular version of the ledger is the one true and accurate ledger. But, in practice, people's UNL lists will overlap. This overlap causes the honest validators to come to the same consensus.

Every honest user of the system wants the system to reach a consensus. Validators will choose which other validators they trust specifically because they also wish to reach a consensus. Essentially, all honest users of the system cooperate to ensure a consensus is reached and maintained. And, of course, a lack of consensus is easily detectable.

To achieve unique node list:

The validators run Ripple nodes which process validations on their behalf. The list of validators that we trust not to collude to defraud us is called our Unique Node List (UNL).

For stronger assurance that something is true, we add more validators to our UNL. For example, we could add Itchy and Scratchy. Who are also not very trustworthy, but are also unlikely to collude to defraud us.


How does a wallet learn of a transaction it has received?

A bitcoin wallet application that runs as a full node client contains a copy of every unspent transaction in the blockchain. This allows a wallet to construct transaction inputs as well as quickly verify incoming transactions as having correct inputs. However, most user wallets run lightweight clients that only track a users own unspent outputs. If the wallet does not maintain a copy of unspent transaction outputs it can query the bitcoin network using a variety of APIs. The API's will return all the unspent transaction outputs for an address. Most wallets will not run continuously and so when a user starts up the application it will query the network to synchronize with it.


What are the advantages and disadvantages of 24/7 Bitcoin trading?

The 24/7/365 bitcoin trading market is pretty unique in financial markets. Here are the advantages and disadvantages as I see them.

Advantages:
- more convenient: bitcoin can be bought and sold at any time and on any day.
- truly international: bitcoin can be traded during business hours in every country and every timezone.
- increased profitability: more trades means a good trader can make more money.

Disadvantages:
- increased risk: important market movements can occur while you're sleeping, causing trading losses.


reversing wallet to wallet transactions(both wallets mine)

The "owner" of a wallet is defined by whomever controls the private keys in that wallet.  If you have lost control of a wallet (the one on the ISO disk), then you are not the owner of that wallet anymore.  Nobody is.

If the transaction to the new wallet has not yet been confirmed and put into a block, you might have the option of replacing that transaction with one that goes back to your coinb.in wallet.  That depends on two things:

The transaction you want to replace has opted-in to Replace-by-fee
Your original wallet (coinb.in) allows you to use Replace-by-fee to broadcast a new transaction, replacing the original one

You can read more about it here:  https://en.bitcoin.it/wiki/Transaction_replacement


Does bitcoin core node relay those child-pay-for-parent transactions?

(updated based on Pieter's comments below)

There are (essentially) two sets of UTXOs at play. One is constructed from the blockchain itself, by reading the blocks on disk and updating with any new blocks that are broadcasted. This set is saved to disk, and can be reconstructed from the blockchain data if erased.

Another UTXO set is the mempool itself. Each output in the mempool is considered a valid UTXO, unless it is already spent by another mempool tx. Moreover, any outputs consumed by mempool transactions from confirmed transactions are considered spent in the other UTXO set. This mempool UTXO set is not saved to disk, and only exists when there are transactions in the mempool, while the node is running.

You can see existing CPFP transactions by calling getrawmempool with the verbose option. This produces a json array in which you can see if an unconfirmed tx depends on an existing unconfirmed tx:

...
"fdb9bed320457e8ff606bdf1e4a6fa980bc65d9ad8525e75abba30af1363ef8e": {
    "size": 256,
    "fee": 0.00001923,
    "modifiedfee": 0.00001923,
    "time": 1527988568,
    "height": 525693,
    "descendantcount": 1,
    "descendantsize": 256,
    "descendantfees": 1923,
    "ancestorcount": 4,
    "ancestorsize": 964,
    "ancestorfees": 7212,
    "depends": [
      "4b2541774140a6afe58606f8a97cca9d1aef0dff5f769ee1dcdcb834b50aeb97"
    ]
},
...


Correlation between business cycle and BTC price

There was an article a while ago, probably CoinDesk but I can't find it at the moment. Basically the study concluded that Bitcoin never sleeps. Overall trading volume doesn't correlate with open/close times in any particular timezones. If volume doesn't change with the time of day I don't think the price will either.


How to retrieve transactions in realtime from bitcoind .dat files

Trying to read and parse the .dat files while bitcoind is running is likely a good way to have tons of errors due to partially written data. Instead of trying to read the .dat files, you can use bitcoind itself to notify you of new blocks and to use the RPC interface to decode and fetch the block information for you. You can start bitcoind with -blocknotify=<cmd> where <cmd> is a command that bitcoind will run every time a new block is accepted. You can read bitcoind -help for more information about what -blocknotify does. The command that is run can then be a script which calls the RPC interface and fetches the block data that you need by using the getblock RPC command.


It all boils down to the amount of people who adopt it as a stanard as measurement of wealth. if around 10% of the country were to use it as a form of payment (requesting it for wages, using it in shops and so forth) the likelyhood of it taking of would be signifcantly higher, below this it would never happen.

[EDIT - Found it] http://pre.aps.org/abstract/PRE/v84/i1/e011130

The other issue is government buying into the idea of a currency they could not control, although this would be relevantly null if they were to hold a substantial amount of any given currency, there is little reason they couldnt "mint" their own chain and distribute the funds.

Both ideas are entirely possible with widespread adoption but until the magic 10% figure is hit it will never happen.


Abandoned transaction - now can't send anything

Once the tx is broadcast, you cannot simply cancel it. This is because nodes already know about it, and it is a valid transaction waiting to be mined. Since the fee is low, it might sit in the mempool for a couple weeks (see -mempoolexpiry), or until the mempool gets large enough it gets bumped out as the lowest fee rate tx (see -maxmempool default is 300MB). You can do something like replace by fee, which replaces the previous transaction with one that has a higher fee. I think the real question that needs to be asked is Why is my transaction not getting confirmed and what can I do about it? Also, How do transactions leave the memory pool might also be helpful.


Retrieve money back from wrong prefix address

What if by accidently, prefix is set 0x05, then the address prefix becomes 3, which becomes a p2sh address.

Then coins sent to that address would be lost forever.

  would I am able to spent the balance provided that I own the private key?

No because the semantics for verifying a spend of a P2SH output are different from those for P2PKH outputs. The private key that you have is unrelated to the P2SH output.

  Is there a way to sign this kind of script?

No. The public key would be interpreted as a script itself, not as a public key. So the private key you have for that would be useless. You would have to satisfy whatever script the bytes of the public key represents. This is likely to just be garbage and be a script that cannot actually execute.


Can I create a deterministic wallet and export/disclose indiviual keys without compromising the wallet?

The proposed standard for hierarchical deterministic wallets (see BIP 32) is designed to allow this (and more).

It is not yet implemented, but several authors of clients have agreed to adopt it, once it becomes final.


You simply import the private key of the single adress wallet into a bitcoin cash wallet such as https://electroncash.org/


As far as I can tell the queue itself is not actually functioning. The limit they have only exists for some hours during the day, and at some point they allow you to buy bitcoin and charge it to your bank account. You are then locked in at the rate which you purchased them at, however it takes about 5 days generally to receive your bitcoins.

I think this happens because they are fronting the money themselves to buy the bitcoins, and have a limited amount of funds per day which they can spare. Each day a new volley of bank transfers comes through and they can then afford to front more for people.


Supply Restriction on Bitcoin & Bitcoin Cash?

Bitcoin Cash is a seperate fork, a seperate entity.

There will be (a bit less than) 21 million BTC, and (a bit less than) 21 million BCH.

Price differentiation is because of supply / demand for Bitcoin Cash.

You should see Bitcoin Cash as an altcoin, and not something that is in any way connected to Bitcoin.


Some online wallet services might require your id, however, if you create a wallet on your local computer there is no personal information required at all.

The balance of each address is public knowledge at all times, but neither is the owner of an address,  nor the fact that different addresses belong to the same wallet.

Some of this information can be gained by analysis of payment patterns or after information about ownership was revealed publicly. For example, addresses can be deduced to probably belonging to the same wallet, if both of them are used in the same transaction as inputs.

If you use big exchanges with KYC policies to trade your bitcoins for Fiat,  they will be able to tell on you. You might be able to make local exchanges for privacy.

In conclusion,  with sufficient know-how and micromanagement you can probably keep your total balance secret.


What are the last bytes? (0a794dec)

The checksum.

  In the next operation (HMAC-SHA512) I used the chain code obtained, the key and the next depth (80000002), but I'm not sure.

Yep, that's it : I can see you also prepanded the 0x00 (because serialized privkeys are 32 bytes while serialized compressed public keys are 33 bytes).

  I got a 64 bytes result: the 32 bytes on the right become the child's chain code. I "added" the 32 bytes on the left to the parent's key.

You need a proper tool to perform this addition : you need to compute this addition modulo the curve order.

Since you use bx, you might want to give ec-add-secrets a look.

  Would anyone know how to recommend a Bx command or a tool to carry out this step?

You could use ec-multiply-secrets by passing G (the generator point) as the point parameter.

G = 0279BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798

EDIT: As another tool if you know a bit of Python you might want to hack with https://github.com/darosior/python-bip32 . I tried to keep it minimal.


Risk of a certain machines being compromized

No. However a machine with that person's bitcoins on it can be compromized and their bitcoins can be stolen.


How to find out the ECDSA private key perfix version for Altcoins?

Take the private key. It's probably expressed in base-58 encoding, so you just have to translate the number into base-16. The prefix is there in hexadecimal form.

To convert a base58 number to hex, check etotheipi's code. Based on it:

b58_digits = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'

def base58_to_hex(b58str):
  n = 0
  for s in b58str:
    n *= 58
    digit = b58_digits.index(s)
    n += digit
  return hex(n)


Mining Bitcoins on PC - Experiment, looking for advice or simple instructions

As has already been commented, this is really not possible. You cannot solo mine Bitcoin with a PC. Even with an ASIC, you cannot solo mine. You simply won't have enough hash power to even get (as you said) 0.0000001 BTC.

If you are really set on mining, I would suggest you look at other currencies, and GPU based mining. You will however, be required to use mining pools. That is a necessity. If you are looking for a very simple GPU miner, you may checkout MinerGate (note: I am in no way affiliated with MinerGate, and I have never used their product).


I found it at the bottom of some documentation

https://github.com/bcoin-org/bcoin/blob/master/etc/sample.conf

prune: True


How long would it take for me to mine a bitcoin with a TItan XP nvidia

In short: don't.

The hardware comparison page on the (mostly outdated) Bitcoin wiki does not have information on the Titan XP card, but lists around 200 Mhash/s for the GTX 590. A GTX 590 has 1024 CUDA cores, while the Titan XP has 3840. Extrapolating using this, we can estimate the performance at around 750 Mhash/s.

At the current difficulty, that amount of hashrate will let you mine a block on average once per 135000 years. If you use pooled mining, you can get incremental payouts for shares (partial proof of work). You may earn 1 BTC around once per 10000 years, while paying around $2000000 in electricity costs during that time (at 10c/kWh).

So don't. GPU mining has been superseded by FPGA and ASIC mining since around 2013.


How will Ripple handle the 50,000+ advertised TPS?

There's a self-regulating mechanism that keeps the network running so that it's not as fast as the fastest validator (as that would make attacks too easy) nor as slow as the slowest validator (as that would provide poor performance). But Ripple has never claimed on ledger transactions rates that high. To get to 50,000 TPS, you need to use off-chain scaling schemes like payment channels.

This is a fundamental scaling limit with all public ledgers that try to create fungible tokens. Every full node must process every transaction and thus if you try to get the number of on chain transactions very high, you impose high bandwidth, CPU, and storage costs on everyone. (You can trade off some fungibility, as IOTA does and as some sharding schemes do.)


how much is the initial capital needed to start a bitcoin exchange?

I thought about this a while ago.

What you need is:

A website with

Good security
A Order matching engine backend
A BitCoin send and receive engine
A way of processing normal money funds

A merchent or escroe account @ a bank
Batch file processing code

A scalable infrastructure (hosting)

Customers (people have to know your exist)
Some form of support (moderated forum, someone to answer where is my money emails)
Legal advice
Legal liability limited company

You don't actually need any money in reserve to operate the exchange.
In fact you trading account (the one holding your customers money) should only every hold your customers money. You should have a separate account which you move fees into (and pay you bills from) Same goes for your BTC (LTC etc) wallets*.

To do other wise it would look like you are gaming the system (not a good look).
If you wanted you could create a separate entity to act as a Market Maker to increase the liquidity of your exchange. But that should be run by a different person/board.

So basically the money you need is the amount to setup and run the site  (including legal fees insurance, office space etc etc.) But you should not need any money/coins to run the site (over that which you are not holding on behalf of your customers)

*Once you have a reasonable amount of funds under management, you should have several operating accounts/ wallets. One for putting fees into/paying bills, one for day to day churn (the amount coming in will balance the money/coins going out most of the time) and one for cold storage, i.e, an off line wallet that can be accesses if need be, but a hacker can't drain from the live site.

**This is just my thoughts not legal advice, etc, etc, blar, blar.


you should check in history/activity when your btc was sold.
Btc forked to bch and bchscv so your btc became all 3.
if you had 0.2btc then you also have 0.2 bch (at current price that is about the amount you mention)
If you dont recall selling the BTC it is also possible to see what IP address was accessing your account.


I cross posted this question on another forum and revived the below answer

  The security of these systems tend to depend on the precise set of behaviors that should be allowed. You may be able to find a simpler system, depending on the behaviors. For example, it may make more sense to have the 5 provide cryptographic commitments for their vote during the 24 hour period. Then, when 5 commitments are seen or 24 hours has passed, each one reveals their vote. This handles the specific issue you mention of skewing the results, but does demand that the parties broadcast 2 messages at different times, rather than just one message.

From this i consulted with a few other people can came up with the below which should work

  Each of the 5 parties could publish Hash(vote || random bytes), because of the random bytes it would not be possible to find the vote by hashing guesses. Then after all commitments are published or 24 hours has passed each party would publish the plaintext = (vote || random bytes), and all other parties could hash that to verify that it is equal to the original commitment.

This solution is elegant in that it relies only on the parties participating to reveal the information


Try getbalance "*" 0 true.

help of getbalance says: getbalance ( "account" minconf includeWatchonly )


Sending from Coinbase to Blockchain wallet. Numbers explained?

Unspent transaction output (UTXO) can only be spent in full, so if they don't match the amount you are trying to send exactly the rest will be sent back to yourself.

Therefore I assume that you had a single UTXO in your wallet. When it was spent, the remainder was sent to a change address in your own wallet.


Where can I find the explanation of each field of the result returned by the api of blockchain.info?

You can find the documentation for that call, such as it is, here. It's not very helpful.

I can give you a few tips, though.

n is the vout of the input. A vout plus a txid unambiguously specify a transaction output, and are collectively known as an outpoint. More.
tx_index is a field used by blockchain.info, and has no meaning outside of blockchain.info's api.
No idea what type means. Looking at a few transactions at random, it always seems to be zero.


bitcoind -zmqpubhashtx causes empty raw file

First ensure, that is 28332 port used: -zmqpubhashtx=tcp://127.0.0.1:28332 bitcoind parameter, next call python zmq_sub.py. This should work


What transaction was processed in the beginning?

Creating blocks without transactions is trivial, valid, expected under certain circumstances, and in fact happens all the time.

There is no chicken-and-egg problem. The first blocks were just empty.


getting bitcoin address of blk*.dat files

First, note that the scriptSig on the genesis block was before addresses were used. The scriptSig there is called p2pk, or pay-to-pub-key. Addresses (the kind starting with a 1) are actually p2pkh, or pay-to-pub-key-hash. You can convert one to the other fairly easily and that's what's going on here.

The actual scriptSig can be parsed like so:

41 = number of bytes in hex of the element (65 bytes)
04...5f = public key
ac = OP_CHECKSIG

Plug in 04...5f into the Public ECDSA key at http://gobittest.appspot.com/Address and you'll see that the address does indeed match.


Public key cryptography question - Is Private or Public key used to sign? Confusion between which key is used to sign and which is used to encrypt

What am I understanding wrongly?

You are mixing up several distinct uses of cryptography, several different purposes:

authentication
non-repudiation
privacy
proof of integrity

Cryptography in General
Purposes
Privacy
If you want to send a private message to someone, in a way that no-one intercepting the message can read it, you typically encrypt the message using a symmetric (secret-key) algorithm and a newly created secret-key. You then encrypt the secret-key using the intended recipient's public key. This ensures that only the intended recipient can decrypt the secret-key for the message by using their private key (which no one else knows). After decrypting the secret key, the intended recipient is able to decrypt the message using the symmetric algorithm.
Note that you only use a symmetric algorithm to encrypt the message because such algorithms are far far faster than asymmetric (public-key) algorithms. It is primarily for efficiency, not for any other reason.
Authentication
If you want to send a message to someone and provide proof that you sent the message, you use a different procedure. You create a cryptographic hash of the message using a hashing algorithm. You then encrypt that hash with your private key (that only you know). The encrypted hash is sent with the message. This encrypted hash is known as a digital-signature. The recipient of the message can use your public key to extract the hash and compare that with a freshly computed hash of the message, if the hashes match it is proof that you sent the message.
Types of Encryption
Assymetric
Asymmertic means you use different keys for encrypting and decrypting. There is both a private key and a public key. hence the name "public-key cryptography".
Symmetric
By contrast, an example of a symmetric (not asymmetric) algorithm is DES which is a symmetric encryption algorithm because there is only one key, the same key is used for both encrypting and decrypting. The key is a shared "secret-key" - hence the names "secret-key cryptography" or "shared-key cryptography".

Cryptography in Bitcoin
From what I've read, Bitcoin uses

Hash algorithms

SHA-256 for proof of work

Digital signatures

ECDSA for signatures on transactions

Note that ECDSA is asymmetric
Note also that Bitcoin cares about anonymity and not about privacy (the blockchain is public not private). Therefore Bitcoin does not use encryption for privacy purposes. Your Wallet software might use encryption to hide your secret keys behind a password - but that is not part of the BitCoin spec.

References

Satoshi Nakamoto, Bitcoin Whitepaper. Sections 2 and 4.
Bitcoin Wiki, ECDSA


How do I extract the address from a scriptPubKey?

Yes, to get addresses from scriptPubKeys, you will need to do a pattern match. There are only a small number of address types each with their own fixed scriptPubKey pattern. Keep in mind that not all scriptPubKeys map to an address so you will find scriptPubKeys that have no address and you will need to handle those.

Bitcoin Core has a pattern matcher for going from scriptPubKeys to address types in the solver function. The MatchPayToPubkey, MatchPayToPubkeyHash, and MatchMultisig can be found higher up in that file. The IsPayToScriptHash and IsWitnessProgram functions can be found here.

One thing to note about the solver is that it does not return just address types. Some of the types it returns do not map to addresses. These are TX_NULLDATA, TX_MULTISIG, TX_PUBKEY, and TX_NONSTANDARD.

It may also be useful for you to see how you get the scriptPubKey from an address. Bitcoin Core does it here.


Send payment and message at the same time

That's correct, you'd need to create two separate outputs.
OP_RETURN and payment outputs are two different output types that cannot be combined.
I don't know what you're trying to do, but generally, it should be unnecessary to provide a comment with a payment. All the payment related communication would already have been done out of band with the recipient finally providing an invoice address. Given the payer sending the payment to that invoice address, the payment is clearly associated with the invoice.

Note that any bitcoins included in the OP_RETURN output are burned and become unspendable. (H/T Jose Fonseca)


For tax purposes, how much is Bitcoin is worth if you send it to an exchange and sell it immediately for fiat?

Tax questions should largely be off-topic here, as they are so jurisdiction-specific. But nonetheless, a general answer is sort of possible here:
In many jurisdictions, you will be liable to pay capital gains taxes when you make profit buying and then later selling some asset. This tax is calculated when you report your taxes to your local tax authority, so you simply need to keep track of the prices you buy and sell your bitcoin for.
The exchange you buy/sell from will probably be keeping track of this as well, but in some cases they may only have partial info (eg, the sell only). So you will need to keep track of the rest of the info yourself, in order to correctly report your investment activities.


Not that I'm aware of, in terms of dealing with traditional publicly-facing companies on the exchanges you mention. There were a number of attempts to create new, bitcoin-only exchanges for privately held companies, but few have gotten much traction. This reddit comment goes into great detail about the history of private stock exchanges in bitcoin, which might provide useful context:

https://www.reddit.com/r/Bitcoin/comments/3jh9t5/are_there_any_private_stock_exchanges_that_deal/cuphn6y

Edit: Also this previous SX Bitcoin thread might answer your question:
Can I buy stocks with Bitcoin?


Cgminer opencl-detection overrided autogen error

use
./autogen.sh --enable-opencl
instead of
./autogen.sh


How to create a Blockchain for new alt coin after genesis block has been created?

you can try the following steps:

 bitcoind -daemon # Start bitcoin core
 bitcoin-cli setgenerate true 1 # You've started a new miner!!
 tail -f ~/.bitcoin/debug.log # Track your log

After a while (it depends on the difficulty of your altcoin), a new block will be generated by your miner.

Check it by typing "bitcoin-cli getblockcount". Every time a new block is genereated, the value increases by one.


can attacker and honest node in double spend ever tie?

Bitcoin consensus is never final, but instead just becomes increasingly stable as more blocks are added.

In the example in the whitepaper a successful attacker will spend some amount of time "tied" but this tie will eventually be resolved by additional blocks. If the additional blocks are on the attacker's fork then it will resolve in the attacker's favor.


Just go ahead with Bitcoin-core. Which is much more secure than the others.
Encrypt your wallet with some long strong password and you're good to go.

Electrum recently had a critical security vulnerability. Read More About it.


How does Bitcoin Core manage its peer nodes? Is it possible to let it automatically switch to faster nodes?

One thing to note is when you're syncing the blockchain, you're both downloading the blockchain and also validating all of the transactions. So that is also a possible bottleneck on your end that could be causing a slow sync.

  I wonder how does Bitcoin Core manage its peers? Will it disconnect with slower nodes, and then turn to faster ones?

This question addresses how peers are initially discovered. If you're interested in connecting to a different node you know of, you can use the rpc to disconnectnode and addnode.

Edit: removed incorrect information


Blockchain API whitelist all IP addresses

Use this: %.%.%.%

It mentions this in the IP Whitelist section, found in Account settings then IP Restrictions.


Unspent account and additional wallet in a transaction

Most probably this is your wallet software doing for you. It might be, that your wallet only had one output to spend from, with .95 bitcoin. And you wanted to send only .25. So the wallet had to divide it somehow... it created a transaction with two outputs, one of which is the return address. Probably this address is also in your wallet. Check the addresses in the wallet, to see if it belongs to you. Or check the remaining balance. If there, then all ok. If not, there is a need for further investigation, but this would require more info...


Wallet encryption protects funds at rest, it does effectively nothing about protecting funds on a live machine that has loaded the wallet to make a transaction.
There's no expectation that the passphrase will do anything in particular to protect online wallets on machines that contain malicious software, as you've surmised.


Is multi-PPS the correct solution to the mining centralization problem?

First it should be understood that Multi-PPS aspires to solve only one aspect of mining centralization - the centralization of many small miners in a few large pools. It doesn't solve the problem of huge mining entities that enjoy economies of scale - though, I don't think that problem is too great to begin with, as I claimed in here.

Under the assumption that the cause of mining pool centralization is the built-in performance advantage (in terms of variance and fees) of large pools (as opposed to psychological factors and features), any solution must be based on having each miner target multiple pools simultaneously. This way, there can be many small pools while the miners enjoy the performance of large pools.

Multi-PPS specifically is best suited for a future scenario when Bitcoin mining is dominated by transaction fees. However, that scenario has some inherent challenges that will need to be solved in the context of any reward framework, Multi-PPS included.

Multi-PPS is an extension of classical PPS, in the same way that mining in multiple pools is an extension of classical PPLNS. Multi-PPS allows PPS with low fees, and mining in multiple pools allows PPLNS with low variance.

For either of these to work, mining pools need to become more of a commodity, so that the mining client can automatically connect to many pools to optimize the performance.


Where can I look to see a revealed public key?

Just go to any typical, normal transaction on blockexplorer. Here's a link to one I picked at random. The input(s) are scripts where the public key and signature are provided to claim the outputs of previous transactions in the ScriptSig field. The output(s) are scripts where the public key has not yet been provided and contain only a hash of the public key in the ScriptPubKey field.


Your transaction is non-standard because one output is only 379 satoshi, and therefore below the dust threshold of 546 satoshi. Most nodes don't relay non-standard transactions, and most mining pools do not include them in blocks.

You might want to consider recreating the transaction and folding this sixth of a dollar cent into the transaction fee instead. In the essence, you'd create a doublespend spending the same inputs but redeclaring the outputs. Unfortunately, I'm not sure how you would be doing that with kryptokit.

The easiest would probably be to import the originating address to another wallet and send a new transaction with that.


It is a public key. I think you're parsing this transaction incorrectly - what you should get is that there are two elements. The first is a signature, and 73 bytes long, starting with 3046022100ee238c... The second element is a public key, and 33 bytes long, and starts with 03b2abe09a1c4e67...

Here's the transaction you linked, broken up into sig and pubkey.

version

01000000

vin count

01

outpoint

3abe215f943956b8020b55669facbdbf74929b7877475994de5195827a36e45900000000

script len

6c

push immediate 73 bytes

49

bytes

3046022100ee238cad1e8ac7f14661760b1b1fb2cf171f41afb31e3b59d3ced2284a1c2a71022100bef7fb989ccfb00a65c009a77b46bc818d2e80458668f73da0072966aaa28b6201

push immediate 33 bytes

21

bytes

03b2abe09a1c4e67c3eb9acd5596452a5d785c6e5a772fbea9a29ca95c15598ea6

sequence

ffffffff

(Everything below is part of the outputs.)

0206cfbb9f0f0000001976a914a66ba35c1d9bdcc8dfeb0fb8bedb16e1a570487d88ac09165612000000001976a914b420350a7b274e059d7ba5c97e8887d447b7287588ac00000000


if in the coming years the difficulty increases so much that mining is no longer profitable

That's not really possible. The mining power is set so that the miners need 10 minutes in average to mine a block. If 50% of the miners would disappear because it's not profitable any more, the difficulty would decrease so that it's profitable again.

  Can the bitcoin network exist without miners?

Yes and no. There is still the decentralized blockchain, so you can still check who has how many bitcoins, and you can view the whole history of transactions (they do still exist), but you could not spend them if nobody would mine the transactions.

  Can bitcoin supporters, or governments have data centers that handle transactions only and do not spend computational resources on mining new bitcoins?

Transactions can't be confirmed if nobody spends the necessary processing power to mine blocks. Confirming transactions requires mining.


What are stale shares and what can I do to avoid them?

Stale shares are the shares that were sent after a block was already solved, that is to say, they were sent late and were no longer valid. To avoid stale shares, best to have a reasonably fast mining rig (so you won't take too long to calculate a share, probably not a problem for most machines), reliable internet connection (stable, not necessarily fast), but also an up-to-date mining software (if you are mining with some really old miner it might not communicate in the most efficient manner with the pool).

In short - update your miner every now and then, make sure your internet is running okay, and don't mine on really weak rigs.


Someone scammed me, and I want my money back. What can I do?

If the receiving party is not co-operating you cannot enforce them to return the payment.

In this case it is recommended to take the case to your local police and make a  crime report of fraud. Most civilized countries have courts which can enforce the fraudster to repay the stolen property.

However getting anything back is unlikely if you were scammed in Internet. as most likely the culprint is in another country.

Welcome to non-regulated cryptoanarchy.


Coinbase has shopping cart plugins that can integrate with many existing e-commerce web apps without you having to write any code. See here: https://coinbase.com/docs/merchant_tools/shopping_cart_plugins.

In case you were wondering, an "e-commerce web app" is a pre-build shopping website that is analogous to Word Press for publishing. There are a few open source (free) options for this. Just google "open source e-commerce web app".


Can I clear the mempool from this transaction?

It doesn’t work that way. Your transaction resides in mempools of other nodes of bitcoin network. Mining nodes take the transactions to the block from their own local copies of mempool. Deleting this file on your node will not help you.

You can however send the same transaction but with higher fee: Is it possible to add a miner's fee after you send your bitcoins?


Can we avoid third party trust for mobile / desktop wallets with respect to lightning network channels?

(disclaimer: I'm not an expert on Lightning)

I believe the design for Watchtowers (the services which watch for other parties trying to push an old state to the chain) is such that they're not actually given the channel close transaction.

Instead, they're giving half of the txid to watch for, and an encrypted version of the channel close, using the full txid of the watched transaction as key.

This means they are not actually able to dishonestly close your channel. They can only do so when an invalid state update is published.


How do we prevent the Test network from being misrepresented as production?

The main precaution against such practices should be the main client clearly stating that it is operating on testnet and perhaps with addition "for testing purposes only. Get free testing bitcoins at testnet faucet". This would protect some buyers, but not all (those that would be perhaps scammed into using a testnet eWallet or something).

As for why one shouldn't assign any value to testnet bitcoins, I would argue that the main reason is that the testnet has a tendency of being reset from the very beginning. Currently we are at testnet 3 as far as I remember, and there is nothing stopping the development team from starting a new testnet without much warning.

All in all, if people can be convinced to buy testnet bitcoins, there is little one can do.


It looks like Bitcoin Builder was the website. While the main focus of their site has shifted, the front page still refers to goxbtc.


I found the solution. After doing changes in bitcoin config file, I just reduce the range of records to be inserted. RPC server cannot handle loads of data at one time. Otherwise, server down problem occurs and connection failed. Max 100 records get inserted at a time or less than that.
And one more thing, keep restarting bitcoind RPC server by stop and start commands given below:

sudo killall bitcoind
bitcoind -daemon -rpcuser=xxx -rpcpassword=xxx -txindex -rpcallowip=youripaddress


Are for-profit companies possible in Ethereum?

You can definitely write a smart contract with a designated address as the "owner" (usually implemented as owner = msg.sender in the constructor). The contract can then implement certain privileges for the owner, e.g., the right to take a 10% fee off of every transaction in the contract. The benefit compared to the centralized company is twofold:

Users interacting with the contract can see the rules in advance and are sure that they won't change (i.e., decentralized Uber, if correctly implemented, can not opportunistically refuse to pay a driver);
A third party, such as law enforcement, can not shut the whole enterprise down.

The question whether DAOs are fully compatible with standard firms requires the definition of compatible. I suppose it depends on the jurisdiction.


Example accepted getwork function input and output?


Understanding assurance contract in bitcoin scripts

SIGHASH_ALL | SIGHASH_ANYONECANPAY signs the outputs. So the entrepreneur cannot change the output, as it would invalidate the signatures on all the inputs he received.

There is another way he can bypass this though - if he has 500 BTC himself (or can borrow that amount very briefly) - he can contribute that himself, getting away with raising only 500 BTC but still taking the coins. The only way around that is having some form of escrow that verifies the payments.


You didn't lose them, they were successfully sent. You can see the confirmed transaction here, included in block 219,976.

In fact, the recipient spent them (sending them to 1ESTZpJUkqSQDkjyQHYAFecasEykhFWmMj) about 9 hours later.