text:
How can I locate who took my money?
Need help to try locate where my bitcoin went to. Was given a company wallet address to send my money to. I realise now I was scammed. Would you be able to help me locate exchange that my €5700 went to?

It is unlikely that anyone can help.
Anyone wanting to avoid being traced is likely to follow best-practise: Bitcoin addresses are only used once. transfers of money can be forwarded to other addresses owned by the scammer and can be forwarded through bitcoin mixers which make it pretty much impossible to follow where the money went.
You can type the address into a blockchain explorer but this doesn't help identify the person who controls that address.
As you know, Bitcoin is intended to be fairly anonymous. Just as it can be very hard to find out the names of all the people who have handled a $5 bill before or after you, even if you know the serial number printed on it. This is by design, for privacy.
If you are the victim of fraud, you should report it to your local police. Even if they cannot help you recover your money it helps them and politicians to be aware of the level of such crime and helps them decide whether more resources are needed.

Other web-pages that may be of interest (this is not an endorsement)

Where to report Bitcoin Scams

Update:
Oops, I see you asked the same question last year and got a good answer, voting to close as duplicate.


text:
What happens when I restart my asic miner?
I'm new to mining bitcoin with asic miner.
My question is, what happens when I replug my miner?
I have connected it to a pool. And when I replug it, the pool is showing that I stoped mining.

What model of miner?  What pool?

It is new miner "AladdinMiner" (I think they work the same), and the pool is slushpool (If you know better pool pliz let me know).

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
Is BItcoin the only truly decentralized cryptocurrency?
Is Bitcoin (and likewise Bitcoin Cash)the only truly decentralized cryptocurrency? It appears that all the other altcoins are connected to companies or individuals who control them.

Litecoin for instance was a pretty early altcoin, and it is exactly the same basic design as Bitcoin, with minor changes.  I don't know how you'd describe it as "centralized".  There are lots more.

There are many decentralized currencies, you can take a look here:
http://coinmarketcap.com/
Not all coins are connected to a company, the main big ones that are connected to a company are Ripple and Factom. Other coins might just have foundations that is responsible for marketing and other related matters, but they do not control the coin itself as the miners and coin holders do.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Do Bitcoin futures contracts affect Bitcoin price?
Since Bitcoin futures are cash settled, no Bitcoin are actually exchanged at the time of the expiration of the contract.  Can one assume that since no Bitcoin are exchanged, then Bitcoin supply and demand would not be directly affected and therefore the Bitcoin price would not be affected? If not, then how do futures contracts affect the price?

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Looking For Bitcoin Communities in New York
I'm Interested In Knowing Is there Any Bitcoin Communities that meet Up to Purchase Products Exclusively with Bitcoin In The New York Area?

You might want to look on meetup.com for these kinds of groups.


text:
Why there is a huge amount of difference in price for the same coin at same time?
Well, I am new to this world and trying to understand things. The main thing where I got stuck is, I realise that the same currency has different values in different places.
And in here for Ripple in India[![][2]][2]
And for bitcoins Premier Bitcoin Exchange in India
I just want to understand why such discrepancy. Any type of guide will be welcomed.
Thanks in advance
FYI : I live in India

Discrepancies in exchange rates can arise from many things, such as:

how often the exchange rates are recalculated or cached by the website
where the website gets the data from (e.g. there are a lot of different exchange platforms, the live price varies a bit between them all)
how the rate is calculated (most exchanges only support BTC/USD as fiat currency price, so any other fiat currency like Rupee or Ripple coin must be calculated using multiple conversion steps (e.g. ripple -> bitcoin -> USD -> Rupee)

Also, if you are using a website like zebpay, they set the rate themselves to include a fee, because they want to make a profit, so you can expect that rate to always be higher than the price listed on something like coinmarketcap.com. That is just the rate they sell at.


text:
How do i trade bitcoin with an altcoin if my wallet doesn't support that altcoin?
Let's say i buy 1 bitcoin and i have it on my wallet. So let's say  bought that bitcoin to trade it for komodo. how do i trade it, i mean how will i get in the posession of the komodo if my current wallet doesn't support the komodo coin?

Your coins will be held on the exchange site itself until you choose to withdraw them to your own wallet. If you want to withdraw them, you will have to create a wallet for the currency you have purchased, and use it to generate an address to withdraw to.

finally an awesomly good response. THANK YOU. now, what do you think is the best exchange platform that supports this type of exchange?

Which exchange is best is purely up to your own opinion :) remember to accept my answer if it satisfies your question btw


text:
How does Bitcoin verify each transaction?
So I realize that the Bitcoin transaction I make has information such as my wallet number, the amount of BTC being sent, and the recipient wallet number, and this whole message is encrypted using my own private key. And that this message can be decrypted with a public key.
Now, how do all the other nodes who need to verify my message
1) Know that this message is actually from me? When did I ever send them my public key?
2)J Know that I actually have enough funds to cover the transaction?

1) Nodes need not to know its your message, nodes are ok as long as your message is in correct format and satisfying the conditions.
2) When you broadcast transaction, your wallet will provide previous unspent transaction reference in the input section. Nodes will verify if those are really unspent and if the amount in output section is less than the total amount in the referenced input transactions.

1] Your public key is your identity on blockchain. No one can know whether the message was actually sent by whom? What they can know is that the message was sent by the owner of a particular public Key. You can sign the message using your private key, which can later be decrypted by the public key. Only a true owner of the public key can sign the message hence it proves that the message was indeed send by you. You can read about Digital Signature to understand better.
2] In the transaction, you are spending money by referring to a previous Tx.
Every full Bitcoin node maintains a database of which unspent outputs are left.
When verifying a transaction, all its inputs are fetched from the database. If one is missing, validation fails. Among the data retrieved is the value of those unspent outputs, and their script (od address), which define the conditions under which the output can be spent. This information is necessary to validate whether the spending transaction has the correct signatures and does not create more bitcoin than it consumes.

Here are (overly) simplified answers:

You signed your transaction with your (secret) private key, so that others can verify that signature using your public key which is in the transaction.
Nodes verify that the coins you want to spend were previously sent to you.

And here are more details...
Most transactions (all those that transfer bitcoin -- that is, not those that create bitcoins) consist of a list of inputs and a list of outputs.  The inputs refer to (unspent) outputs from previous transactions, and together constitute the whole value that is transferred. In addition to the amount for this particular output, each output specifies the conditions under which the output can be spent. The simplest condition is 'you own the address specified in the output'.  Given that an address is the hash of a public key, what this condition actually means is that you know the private key for a public key that hashes to the given address.
In order to allow the nodes to check this condition, each input in a transaction is accompanied with the public key that hashes to the address to which this input was sent, and a signature of a simplified view of the transaction. This signature is created using the private key corresponding to this public key. The verifying node can build this same simplified view, and use the public key to verify that the signature is valid. This validates that you 'own' the address to which the coins were previously sent.
In order to be valid, a transaction must have enough inputs to cover all the outputs, and these inputs must refer to unspent outputs. That is, outputs from previous transactions that never appeared as input in any other transaction.
Note that nothing is encrypted, here.  Everybody can see the source and destination addresses, as well as the amounts.
You will find more details in https://en.bitcoin.it/wiki/Transaction.


text:
Why is the previous output index 4 bytes?
Using this post to define the format of a transaction: Create Output with a bunch of input
Why is the previous utxo index (also called the previous output index) 4 bytes?
The maximum output index should be equivalent to the maximum number of outputs that could fit into a transaction which would be constrained by block size. So is 2 bytes not enough? (2 bytes --> max index of 65,535)
Which mined transaction on mainnet has created the highest number of outputs so far?
What is the largest previous output index that has been mined into a block so far?
Related code: https://github.com/bitcoin/bitcoin/blob/master/src/primitives/transaction.h#L30
Related question: Maximum number of inputs per transaction

In theory, a block can contain about 111000 outputs, as outputs can be as small as 9 bytes.
Still, the current 4000000 block weight limit, as well as the 1000000 block size limit that predated it, were both introduced after the transaction serialization format.
Presumably 4 bytes was just some sort of standard choice for serializing integers. Something similar in the other direction happened would timestamps I think; they are also 4 bytes, but probably should have been larger (or less accurate).

Realistically you're probably never going to need more than 2 bytes to represent an output index, but many of the constraints in Bitcoin aren't necessarily that closely defined to their theoretical limits. It could have been represented as a variable length integer as with other values to save a few bytes per output, but it just isn't.

Which mined transaction on mainnet has created the highest number of outputs so far?

The record for most outputs in a transaction is 13107 in 445KiB mined in 2016.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Copay wallet transaction history unavailable?
Ever since updating my Copay wallet to the newest version to resolve the vulnerability issue, it won’t show my transaction history. Recent transactions will show on the main screen for about 30 minutes, but if I try to open them up to view the details I get an error message. This is especially frustrating since I should have a little more BTC sitting in my wallet than I actually do, but I can’t see where the funds may have gone since the transaction history won’t load. All it shows is an error message saying “Could not update transaction history”. Help?
Using iPhone 6, iOS 11.4.1, copay for iOS v5.4.0
Thank you!

Top search result on Google says

Refresh the transaction cache
Select your wallet > Tap on the icon in the upper right corner of the screen > Choose "Transaction History" > Choose "Clear Cache" to reset your transaction list.
  Note: Your wallet will say 'Updating Wallet' until the list has been retrieved.
Refresh the server's cache.
Select your wallet > Tap on the icon in the upper right corner of the screen > Go to "Wallet Addresses" > Choose Scan addresses for funds
  Note: Your wallet will say 'Scanning Funds' until the addresses have been scanned.
Please do not uninstall the app or delete the wallet if you did not back it up properly, in such case, please do so. The wallet backup is the only way to recover your wallet.

Maybe that helps?

I guess I should have googled it - clearing the transaction history cache worked instantly! Thank you!!


text:
Does bitcoind ERROR "Disk space is too low!" refer to RAM or actual harddrive?
After having finished the "Initial Block Download" I needed to reindex:
[BTC_Core_Expmnt]# bitcoind -reindex -datadir=/mnt/BTC_Core_Expmnt

The debug.log showed everything starting up ok; and the process beginning:
[2020-01-20T07:43:41Z Loaded 119369 blocks from external file in 6005ms\
2020-01-20T07:43:41Z Reindexing block file blk00001.dat...]

Then a while later this:
[2020-01-20T09:05:59Z Reindexing finished]

But bitcoind continued grinding on... Well then what is all this? ::
[2020-01-20T09:05:59Z Pre-allocating up to position 0x100000 in\
[rev00000.dat 2020-01-20T09:05:59Z UpdateTip: new best=\
[00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048\
[height=1 version=0x00000001 log2_work=33.000022 tx=2\
[date='2009-01-09T02:54:25Z' progress=0.000000 cache=0.0MiB(1txo)]

In any case it got to this point ::
[2020-01-20T09:59:00Z UpdateTip: new best=\
[00000000000000001088ed0c0989828504a41d4b5b974c8c081b708cfdd3b7b0\
[height=359645 version=0x00000003 log2_work=82.893764 tx=71128141\
[date='2015-06-06T07:25:10Z' progress=0.143166\
[cache=669.7MiB(4972713txo)]

Then it fell over ::
[2020-01-20T09:59:00Z *** Disk space is too low!
[2020-01-20T09:59:00Z Error: Disk space is too low!\
[Error: Disk space is too low!
[2020-01-20T09:59:00Z Failed to connect best block\
[ (Disk space is too low! (code 0)) ]

Which is odd, because there should still be 20GB free since the size of
BTC_Core_Expmnt is supposed to be 300GB.
[BTC_Core_Expmnt]# du -h
102M    ./blocks/index
275G    ./blocks
56K     ./bitcoin-0.19.0.1/share/man/man1
60K     ./bitcoin-0.19.0.1/share/man
64K     ./bitcoin-0.19.0.1/share
73M     ./bitcoin-0.19.0.1/bin
8.0K    ./bitcoin-0.19.0.1/include
440K    ./bitcoin-0.19.0.1/lib
74M     ./bitcoin-0.19.0.1
16K     ./lost+found
3.4G    ./indexes/txindex
3.4G    ./indexes
914M    ./chainstate
280G    .
[BTC_Core_Expmnt]#

Is 300GB not enough in 2020 to run a full node?  I thought it'd do.  But, asking for any helpful tips because I cannot see anything else amiss from debug.log.

My full node with a txindex is currently sitting at about 280GB - how much of your disk is usable space? Try df -h - a portion of the physical disk size will be lost to filesystem overhead

@RaghavSood Thank you.  Yeah I piled on another 100GB and am running that reindexing again.  In a few hours I will know.  If it completes I'll note that with another confirming comment so anyone stumbling in will have at least that to go on.

What OS are you using? There is currently an issue with macOS where some files are larger than they should be and sometimes those files have incorrectly reported sizes.

It refers to actual disk space. RAM is memory, not storage. The term "disk space" is very specific.

Then a while later this:
[2020-01-20T09:05:59Z Reindexing finished]

But bitcoind continued grinding on... Well then what is all this? ::

Your node was not fully synced, so after it finished reindexing the blocks on disk, it continued to download blocks from its peers and finish syncing.

It is a CentOS.  It must've been disk space issue, the process is taking a few hours, but it is over 40% this time whereas it always fell over between 11 and 19% before.  Cheers.


text:
How can I view in my shell, live, ALL activity my bitcoind is generating?
Having examined the output of
bitcoind -h

and searched through all the bitcoin-cli rpc items listed here
https://bitcoincore.org/en/doc/0.19.0/rpc/

I did not find anything which produces a live stream to stdout of all the tasks my full node is running/performing.  What is required to make all that visible?
One is led to understand that the main benefit of running one's own full node is to be able to independently confirm transactions and that is all fine, but another important effect is supposedly the continual assistance the node provides to the network, serving historical blocks and so forth.  That traffic is what I would like to see.

bitcoind -printtoconsole -debug
This will output an unreasonable amount of information and break your terminal, and not particularly help you with your sovereignty.

Initially got  "Error: Cannot obtain a lock on data directory /node/BTC. Bitcoin Core is probably already running."  After issuing bitcoin-cli stop, it worked as expected.  Very informative.

The debug.log files is updated regularly details activity of bitcoind and bitcoin-qt. The file can be found in $HOME/.bitcoin on Linux, and in %USERPROFILE%\AppData\Roaming\Bitcoin on Windows.
A "tail -f debug.log" will give you live info. It's not the most user-friendly.
I modified bitcoin core tn to give more useful information in debug.log, and more human readable, with more granular options to enable or disable certain debugging. It can be found at https://github.com/rebroad/bitcoin/
It's not been updated since 0.13 though. I'm curious to know what specific information you'd like to see.

Hi, yes, used tail -f -n 200 debug.log a lot while the IBD was in progress.  Fascinating.  But once the node was up to date and properly indexed, that file activity drops to just the occasional activity of peers dropping off the network or new peers being added and of course every 10 minutes or so some info about a new block.  I specifically wanted to see as much as possible of the ongoing work the node performs for the network. -printtoconsole -debug got me a long ways towards that.  I see that all the settings to bitcoind can be used to tailor what gets included.  Looked at your repo.  Nice.


text:
Modifying the last block in a blockchain
I am trying to get my head around how blockchains work.
I have two blocks in my blockchain:
Block #0 has been added to the blockchain!
Hash: b3bc62c2b75e70fcc3fe709a5e724c7230d89bb70db17c1d2f5c3687b44b4c31
Block #1 has been added to the blockchain!
Hash: 76915298f65b261dbe8b5e2300c77b13966a8dd68175e49ffe5cbc59b055042d

The hash is derived from passing the block's timestamp, data and the previous block's hash through sha256. I understand that if I am in the middle of a blockchain and then try to modify the data the other blocks will be corrupt because the hash won't be correct. E.g. I modify block 2, change the data and even generate a new hash using the correct function, this will invalidate block 3's hash because the previous hash won't generate the correct hash for block 3.
However if I modify the last block in the chain how does it work? I can just change the data and generate a new hash, there is no next hash to verify it.
Any clarification on how this works would be great! Thanks!

It's true, you can have two different valid blocks (with different hashes) that both refer to the same previous block.  Call them A and B.  Then there are effectively two different branches of the block chain (so it's really a tree rather than a chain).  In such a case, each node must make their own decision as to which one to accept.  If both are at the end of the block chain, usually each node will choose the one they saw first.
In particular, a miner must decide which of A or B to use as the previous block hash in a new block.  Let's say the next winning miner chose A and mined a new block C.  Then future miners will prefer to mine on top of C instead of B, since the branch ending in C (which contains A) is longer (has more total proof-of-work) than the one that ends in B.  In the long run, the branch containing A will probably be considered as the "true" blockchain.  B becomes an orphan block and is disregarded.
If B contained transactions which A did not, and they are otherwise valid, those transactions can be included in C or some later block in the dominant branch, so they are not lost.


text:
Increase a transaction fee in bitcoin core
I marked my transaction with "Request replace-By-Fee"* in my bitcoin core wallet, and now while I can increase the transaction fee, I can only increase it by a tiny bit, and I can't set it to what I really need. (forcing me to increase the fees 15 times in a row)
Is there any simple way for me to increase the fee more significantly without creating all of these intermediate transactions?
* By the way, a very bad name for "allow future fees increase"

Depending on what version of Bitcoin Core you are running. In v0.15.1 the minimum fee bump is significant.

fee bumping is a very weird way to change the fees. I should be able to set it to whatever I believe is the correct value now. There is no reason it would always go up in a certain quantum.

There is a minimum increase specified (by consensus I believe) to prevent a fee mini-bump attack, too expensive now that the minimum bump is set higher.

The bumpfee RPC command takes a "totalFee" argument. When passed, this is the total fee that will be used for the replacing transaction.

Thank you. That sounds like the optimal way to do it.
I didn't find such an option back when I searched for it, and used a different solution, but that's what I'll do in the future.

Increasing in steps is very weird, and should not be done. You may have a look at this canonical answer, under the section "How to make a Full RBF transaction / Bitcoin Core".
For me, to get rid of the unconfirmed transaction, I needed to remove the mempool.dat file, the other approaches did not work. Then followed the advice given:

Once the transaction is either Abandoned or cleared from the wallet, you can simply go to the Send tab and send the Bitcoin again but make sure that you include a sufficient transaction fee.

I finally succeeded in having a confirmed transaction after one single replacement with an appropriate fee.

Yes, thanks.
That's what I did and it worked well. Not sure why the wallet is implemented the way it is, though. (And I would expect this action to be doable without restarting the program, deleting files etc.)

Instead, what I did was to run the wallet again and make it forget unconfirmed transactions using:
C:\Program Files (x86)\Bitcoin\bitcoin-qt.exe --zapwallettxes=1

And removed my local copy of the mempool. (A file called mempool.dat in bitcoin's data folder)
(Took about an hour to rescan)
And then making another transaction to the same destination with higher fees (Made from the same source node, so only one of these transactions could occur, nullifying the other)


text:
Bitcoin gone missing
I've sent bitcoins from one wallet to another, the transaction has over 30 confirmations but its not even appearing in my wallet as pending. Ive checked the address and it matches. What could be the issue? It was from coinbase to electrum.

May be:

You sent to incorrect address
Electrum have not synchronized yet


text:
Bcoin crashes with node version error
I installed bcoin and I get this error about the version:
$ node -v
v8.2.1
$ npm -v
5.3.0
$ bcoin
/usr/lib/node_modules/bcoin/lib/db/backends.js:26
    throw e;
     ^
Error: The module '/usr/lib/node_modules/bcoin/node_modules/leveldown/build/Release/leveldown.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 48. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at Object.Module._extensions..node (module.js:598:18)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at bindings (/usr/lib/node_modules/bcoin/node_modules/leveldown/node_modules/bindings/bindings.js:76:44)
    at Object.<anonymous> (/usr/lib/node_modules/bcoin/node_modules/leveldown/leveldown.js:4:46)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)

any ideas why?

This probably happened because you updated your node version after your installation of bcoin. You need to recompile the C++ bindings for the leveldown module to fix this. Checkout npm rebuild: https://docs.npmjs.com/cli/rebuild


text:
Can't access BCH from non-default wallets in blockchain.info
I have 3 additional wallets in my single blockchain.info account. When creating the passphrase and importing the 12 words in Electron Cash application, I was only able to see the amount from my default wallet.
Can anyone explain me how to access the BCH on the other wallets?
They have all funds pre-fork.
Many thanks for any assistance.
Kevin


text:
Any way to track a Bitcoin scammer?
I have been scammed by a Bitcoin scammer imposing by the name Andrew Hamish. I have reported every possible way but wanted to ask if anyone knows how we can track the IP address by their walled ID or other means.
He is using this tel: +447441393273
and this walled ID: 3Ncudh6CejAT9C56oX2NkcbQ4uJxXuZtmf

Unfortunately seems the scammer is using a Bitcoin mixer service (they all do), as you can see everytime he receives some BTC the amount is split and sent (most of the times in batch transactions) to multiple addresses (and that probably happens many times).
https://en.wikipedia.org/wiki/Cryptocurrency_tumbler
As you can see here
https://www.blockchain.com/btc/address/3Ncudh6CejAT9C56oX2NkcbQ4uJxXuZtmf
https://www.blockchain.com/btc/tx/d9620ffb35827b9e7fab59efbd8edb89ba4bdab2917b915eb3a834093a911e1e
So, in resume, it should be very hard to track the coins and impossible to get the IP address.
I'm sorry.

Welcome to BSE. Sorry to hear this happened. I know of no way to reliably get an IP address associated with a wallet. Your best bet is the phone number.
That's a UK phone number. I'm not aware of your laws and cannot suggest a course of action.
If you're in the US, then you could start with consulting a lawyer.
As a default response, inform the authorities or consult a lawyer before informing the authorities. If the amount is large enough and you're in the US, they might be willing/able to do something. The authorities won't step in to try and track this guy for 100 USD of BTC. 100 million USD and you may be able to find someone willing to take an interest.
If there is enough value there, outside of official channels, there are private investigation firms / lawyers who may be willing to work on contingency. The fact that you have a name and phone number is a good thing. Not sure if they're real or not.
My point is, from a technical perspective you've hit a dead end. That wallet has only transacted 1.8 BTC:
https://longhorn.bullpay.com/?gateway=2&data=3Ncudh6CejAT9C56oX2NkcbQ4uJxXuZtmf
If the name/number are real then it would be much easier tracking and taking legal action against the person.


text:
Fund single output in PSBT with bitcoind
I would like to create a PSBT with a single output (P2WSH with a given/predefined amount) in an app and give that to the user. The user should then be able to fund this PSBT with the help of bitcoind and/or a hardware wallet.
With "fund" I mean add an input with sufficient balance, perform fee estimation and add a change output if necessary.
The fully funded and finalized (all inputs signed/witnesses added) PSBT would then be given back to the app to continue the workflow.
My question: Is there a workflow with bitcoind that allows that? I have tried walletprocesspsbt but that only adds an input, no change output. And there are no parameters for fee estimation.
An alternative workflow that would fit my use case would be to use walletcreatefundedpsbt where the user would specify the amount of the output to fund but leave the address/PK script to be defined. But as I understand the walletcreatefundedpsbt command, the address has to be given for an output. Or could the data part be used to mark an output as "incomplete"/"to be defined"?

You should have the user call walletcreatefundedpsbt with the address/amount you want, which will then add inputs and change. If that's what you mean by the "alternative workflow", what is the problem with it?

That's what I currently do as a workaround. But I was wondering if there was a way to transport the parameters in a PSBT directly instead of the user copy/pasting individual values and potentially mistyping the amount. So it's probably just a question about user experience at this point. I just wanted to make sure there isn't something obvious I missed in any of the PSBT commands/options.

Ah, PSBT only functions in the pipeline as of the stage where you have an actual transaction (ignoring witness/scriptSigs), so you need to know the inputs/outputs before you can talk about a PSBT.


text:
how the miner start to count the timestamp to insert in the block
I have a doubt, how the miner starts to count the timestamp to insert in the block.
An example the timestamp insert inside the genesis block is 1/3/2009, 7:15:05 PM GMT+1. If the genesis block would have been mined the time is the moment to the miner have started to resolve the proof-of-work or is the moment to the miner win the proof-of-work?

The timestamp is set by the miner and is part of the data hashed for the Proof of Work. So it is set at the time the miner begins hashing a particular header and searching for a nonce for it.


text:
How is my real identity linked to my bitcoins?
I am new to bitcoin and would like some clarification on its anonymity.
Example: i buy bitcoins from an exchange and send them to my bitcoin wallet.
The addresss that i sent the bitcoins to would be linked to my real identity, i get that part, but what if i create a new address? Or create an entirely new wallet? Would that address in any way be linked to me? Currently it seems to me that the only way to be anonymous, is to buy bitcoins themselves anonymously. Thank you

your identity can be linked to bitcoins in more ways: exchange site can gather info about you (your IP address, ID, bank account, etc), your transactions are public through blockchain, your IP can get registered when you send BTC, your IP address can be registered when you visit BTC forums or any website/honeypot related to darknet markets (illegal activities connected to BTC)... so, there are many techiques to get your identity, thetefore, you should pritect yourself by buying BTC face to face or pay someone to do it for you, and use tor to receive/send bitcoins.

It can be linked to you if you send coins to the new address that were once on the exchange under your account. This is because the entire history of transactions is publicly available and the coins that were once in your account can be traced*. An understanding of transaction inputs and outputs might also clarify, see Transaction - Bitcoin Wiki
*Now, there are ways of anonymizing, Coinjoin is one example, so that it is difficult to follow the trail of coins who's owner was once identified.


text:
Lightning Network: Is it creating 3 transactions instead of 2?
I'm watching this Lightning Network presentation by the original authors.  At 9 minutes in, he notes that all the network sees will be a transaction to the multisig address and then a transaction to Alice for 0.8 BTC and a transaction to Bob for 0.2 BTC.
Is all of this effectively 3 transactions?  Would it not be cheaper and clog the blockchain less by simpling having Alice send 0.1 BTC to Bob and then another 0.1 BTC to Bob and have 2 transactions instead of 3?

Is all of this effectively 3 transactions?

No, assuming you mean '3 on-chain transactions'. It is useful to make a distinction between an 'on-chain transaction' and a payment being sent. To open a LN channel requires one (on-chain) transaction, and to close it requires another.
But while the LN channel is open, the participants can send each-other an unlimited number of payments using the channel (up to their channel capacity, of course). These payments are not recorded on-chain, instead their LN nods keep track of the channel's current state. This allows for more efficient use of blockchain space, while simultaneously giving the channel participants a mechanism for sending payments efficiently and without needing to trust their counter-party, or a third party.
Further, the channel participants can also route payments to other LN users, assuming that there is a valid route with the proper capacity available. A highly connected LN graph could allow all users to make payments to each other, without needing to constantly publish on-chain transactions.


text:
What exchanges offer demo accounts?
I'm having a hard time trying to find exchanges with demo accounts.
Any suggestions?

I had tried here before: https://hitbtc.com/

@pebwindkraft I tried it also but I had no luck, the prices were way off (like $2000 for BTC/USD) and when I made a trade it would only show it was filled, but i couldn't see any actual trade P/L


text:
how much data represents 1 satoshi? and on entire bitcoin
I mean, how many bits or bytes represents 1 satoshi, the minimun bitcoin portion
and how many bytes represents one entire bitcoin, not a block, a 1.00000000BTC

Bitcoin value is not proportional to number of bytes.

Bitcoin amount is simply a number in the outputs of transactions, bitcoins themselves don't really exist. For example, in this transaction, there is this output:

"addr":"1P3VQasrhmCnViL4sVouxSZiSu1BRWuCvN",
           "value":6103964

Value is the number of satoshis in the output, these output values are the only representation of bitcoins on the blockchain.

so, what is stored in the blockchain itself (those thing that has about 128gb of data on my harddrive) whats kind of data, and, what is what miners are mining, those address for store that value? if so, thats mean that miners are mining just "valid" address following an algoritm? (sorry fo so many questions, I need to clarify all of this)

The blockchain includes scripts and signatures to prove that spending is legitimate, timestamps, references to previous blocks so there is an order, etc. Miners validate transactions and add them to blockchain. Further questions should be made in a separate post :)

There is actually no such an object as a Bitcoin (or a satoshi, or any unit used in Bitcoin). Thus there are no data structures which represent "a Bitcoin".
How Bitcoin actually works is by creating and spending from previous transaction outputs. The amount of Bitcoin is simply just a value assigned to a transaction output.
The blockchain contains the transactions, and each of those transactions contains transaction outputs which it creates, and references to other transaction output which it spends from. That is the data that is stored on your hard drive.

I think I'm finally understand, so, mining consist on carry on those transactions and producing more valid blocks of transactions or starting-point empty-like transactions, that will becomes new outputs transactions when spend, and distributing the representative values of those transactions to whatever address need, if so, I finish me question and thanks


text:
Why isn't the right chain chosen according to the number of nodes who are broadcasting it?
So if a new node join the game, it gets blockchain from other peers.
It may actually receive 2 different chains and it chooses the longer cos of more work done.
I wonder why isn't it simply choose the one that is being broadcast by higher number of peers instead of this mining madness??

Well even with consensus how would you keep out mistakes? You still need an algorithm or rules. How would you know what majorities are real and what arent? I could say hey most people agree with me, how would you know? By votes, so just spam votes? How would you know 12000 ips didn't come from same single ip? All's you have to do is change ip header.

I'm not saying popular consensus isn't ever gonna work, but can you prove its security? Kinda like googles authyoath, they just tack on things like email, phone m, another email. Just ad hoc maner of cobbing the loop wholes with out mathematical tools, it has lead to hacking of millions of accounts. Elliptical curve, and others have quantifiable evidence and proofs, of their security based upon several assumptions or axioms. Till today they remain secure, and if anyone did find a loop whole, using it on hacking is a complete waist of the discovery, unlike stolen emails or phones.

Yes, thank you all (@marshalcraft, @PieterWuille, @DavidSwartz). I guess that software, bits and bytes can never be enough to prove such something, without including real world like hashpower and time consumption...

I think you entirely miss the point. Physical things like phones and hash power don't make it secure. Its abstract principles of this universe which do. Prime numbers aren't a consequence of physical matter. They are an abstract principle. They subsume physical matter. Another example, abstract infinity. Often people argue if it physically exists, is the universe endless? But it doesn't matter because regardless of what physical nature does, we can consider if it does exist, and this it exists abstractly. So much so and so intertwined is abstract world that the study of the mere pissibility

Of boundless quantities, has allowed the abstract discovery of calculus which by coincidence governs the large scale physical world.

Because the cost of pretending to be many nodes is trivial. IP addresses are cheap, and anyone who controls your internet connection can pretend to be everyone.
However, mining is inherently expensive. You cannot fake hashpower.

And how about broadcast contains a proof of identity? Some trivial signature?

Bitcoin has no trusted identities. If we did, there are much simpler constructions.

@DjuraMarinkov All the known ways to do that at the time bitcoin was invented would have required a central authority to control which proofs of identity are acceptable. It's only later that schemes to do that kind of thing without such an authority were developed. And they have their own costs and tradeoffs. (Even if every single entity whose proof of identity anyone accepted were 100% trustworthy, they'd still need some complex scheme to ensure that they agree! "Valid chain with most work" is a simple scheme to ensure just that.)


text:
how large a block can grow?
I was looking for a blockchain exchange but I didn't see so I am posting this in Bitcoin group. Apologize if it's too naïve.
I've started to learn about bitcoin and blockchains. I don't understand how the whole network transactions can be assembled into blocks and then all these blocks validated and broadcast. Is that efficient? It's basically a block that grows in size every second. How this large data is going to be processed, stored and broadcasted efficiently? I am sure I'm missing something as this is obvious.

Nobody tall us that Bitcoin or blockchain was designed or better Bitcoin or blockchain are be designed to be efficient, but it is here to be secure. The size grows very fast, and you can look at it here. In conclusion, to answer the question of how the data are compact inside the block, you can look to this documentation page that describe the Bitcoin data structure.

A blockchain is composed of many blocks. The bitcoin blockchain has 660,000+ blocks currently. Bitcoin blocks are limited by the Bitcoin rules to be at most 4KWU (kilo weight units). This is equivalent to 1MB of data per block, however, thanks to the Segwit upgrade, additional information can be stored in each block, making the maximum possible data per block be 4MB. The average block contains ~1.3MB of data.
The blockchain itself keeps growing as more and more blocks are added to it, so yes, storage requirements are rising 1.3MB / 10 minutes. Currently, a computer which stores the entire blockchain (all blocks) plus extra metadata and other indexes, takes up around 330GB - 400 GB.


text:
bitcoin core problem payment
I downloading bitcoin core on my computer. But my computer is full, and downloading is not complete. I made transfer my bitcoin to URI on bitcoin core, which downloading. But nothing came and I didn't seen. Becouse you wrote information "bitcoin can be see only when downloading when will be done" And my question is, where is my bitcoin money, when downloading is failed . regards

where is my bitcoin money, when downloading is failed.

Your money is in the Blockchain (loosely speaking). It is not affected by the state of your wallet. When your wallet finishes collecting its own copy of the public Blockchain (synchronisation), it will be able to show you the amount of money you control.

Some explanation:
A wallet does two things. Firstly it creates a local copy of the Blockchain and keeps it up to date. Secondly it stores a secret number that gives control over some money in the Blockchain.
Everyone with a traditional  "full-node" wallet has their own copy of the Blockchain. This is just a list of all the transactions. A transaction records changes in control over amounts of money.
Bitcoins are not really sent to wallets and are not stored in wallets. As long as you have a safe copy of the secret number (private key) or a wallet recovery phrase, it doesn't matter what happens to the wallet. If needed you can create a new wallet and regain control over your money.


text:
What makes a transaction a SegWit transaction or a non-SegWit transaction?
Can we say that if there is at least 1 input with a legacy script then the tx is a non-segwit transaction?

It depends for what purpose.
When do segwit validation rules apply?
P2WPKH/P2WSH script validity rules apply on a per-input basis.
Only inputs that spend a segwit output can have a non-empty witness.
When is extended serialization used?
BIP144 defines a new way for serializing transactions. It is used whenever at least one input has a non-empty witness. It cannot be used when all witnesses are empty (as is the case for legacy spends).
When do the malleability protections afforded by segwit apply?
Only when all (relevant) inputs are segwit inputs do these protections work. However, say a transaction has a multisig segwit input and a legacy single-sig input from yourself, you may be fine, as the single-sig input may be considered non-malleable.

@Prayank I'm confused by your question. There is a rule that only segwit inputs can have (segregated) witnesses, that's all I'm saying.

@PieterWuille Thanks for the answer. Is it correct to say that a segwit transaction is a transaction that spends at least one input with a non-empty witness? It would be nice if you can explain this in layman's terms.

Well what do you care about when you say "segwit transaction"? You must have a particular definition of that term in mind. I would indeed say that a transaction with at least one segwit input is a segwit transaction, but that's a rather arbitrary convention. If for example by "segwit transaction" you mean "a transaction that is protected from malleability through segwit", then the answer may differ.

I don't have anything particular in mind, I just wanted to know the difference because many articles/resources mention a segwit transaction or a non-segwit transaction, but I guess there is no clear answer to that. Thank you


text:
Robustness of bitcoin
I am wondering about the consequences of a potential 51% CPU attack on the bitcoin blockchain. Imagine that a state invests enough computational power to rewrite from scratch an entire blockchain, longer than the current bitcoin blockchain (maybe because the state wants to control money). In this forged blockain all blocks would be empty (no transactions), which means the state  owns all bitcoins as the result of mining.
In that case would it really be the end of bitcoin ? I have the impression that it would be easy to patch the nodes on the network to dismiss the forged blockchain, for example by banning the state's public key.
That would violate the intent of bitcoin that mathematics and cryptography replace trust in a third-party, but eventually bitcoin is used by people who need to trust it. They wouldn't want all their money destroyed by an attack.
Or are there 51% attacks harder to detect and to patch ? I am not asking about  short-chains attacks that would only rob a few merchants, rather about the global stability of bitcoin.

It is highly unlikely mostly because, such an attack have to be maintained we are talking in the range of dozen of billions of dollar of equipment, electricity cost... and this cost will keep growing, and there will be no value for the attacker because nobody will want to use such a "cheating chain"
Here what will mostly happen:

The Bitcoin price might crash
Exchanges might blacklist the stolen funds
The community might change POW and make all mining rigs worthless
It’s hard to keep warehouses full of mining rigs of that scale a secret, there’s a big risk to get caught

Here is a video that explain it better than me: https://www.youtube.com/watch?v=yWTQgmCuiCw&feature=youtu.be

Part of your answer is incorrect: "And yes the miner can also simply move to another chain as this cheated chain will be obvious." This is false, there is no mechanism for moving to a new chain, that the attacker would be unable to also attack.

You right, I corrected it

The start of @Saxtheowl's answer is correct, such an attack requires a huge amount of capital and investment to pull off, as the attacker will need to invest in a huge number of ASIC miners, and gain access to a huge amount of energy. Once the attacker is set up, they face the dilemma of just mining honestly and gaining a reward for doing so (block reward + fees), so there is a large opportunity cost in attacking that must be considered as well.
You can take a look at the [majority-attack] tag to learn more.

I have the impression that it would be easy to patch the nodes on the network to dismiss the forged blockchain, for example by banning the state's public key.

It is not possible to ban a miner from the network, because miners are not required to register with any authority/the network in order to submit blocks. A block does not contain a miner's public key, and in any case there is nothing stopping the miner from just creating a new key for every block.
There is no way to just 'switch to another chain', there is no mechanism in the software to do so, without human intervention. Human intervention requires trust (that you're going to choose the correct new chain), and it provides no clear means of determining which new chain is the correct one. This is the function of the PoW, after all, if people could just agree on which chain is legit without PoW, then we wouldn't need PoW in the first place! To make matters worse, the attacker can just as easily switch to mining on the new chain.
The only 'solution' is for the rest of the network to contribute enough hashpower to bring the attacker below 51%. Perhaps a change to the PoW algorithm could happen, but that is a very messy fix which will cause a lot of collateral damage (loss of confidence, drop in price, etc). A PoW change could also be attacked, so it is unclear if this is a reasonable approach.

How about banning a block instead of banning a miner?

@V.Semeria a block can be banned, but a) that will not accomplish anything, the attacking miner can still generate additional blocks faster than the rest of the network, and b) if the entire network doesn’t ban that block, then the network will split, so there is a very serious coordination problem involved with trying to selectively ban blocks. It is not a viable solution.


text:
How many transactions can a bank/person make per block
I’m trying to determine if bitcoin is too expensive for a bank to use.
Assume that a bank would use bitcoin for something like confirming transactions between itself and another bank I’m asking how many transactions on a single block can a bank make?
I’d like to answer the question 1 Bitcoin Cost / Number of transactions = cost to bank / transaction
Any thoughtsb   Is this the correct way to think of the worth of bitcoin?

The cost of a Bitcoin transaction doesn't scale respective to the amount that is being sent, but according to the amount of data that the transaction occupies on the blockchain. Bitcoin transactions can perform multiple payments, so the transaction count is also not necessarily a good proxy for the count of payments in a block. If the hypothetical banks wanted to use Bitcoin for settlement, they could probably settle up once per day where each bank pays all of the recipient banks in one or a few transactions and it would take very little blockspace. If they make very frequent payments that need immediate settlement, the hypothetical banks should probably onboard to the Lightning Network and establish direct channels between each other, supported by infrequent on-chain transactions to rebalance their payment channels.
Back to your main question: the Bitcoin blockchain produces about one block every 10 minutes. Since the activation of the segwit softfork, blocks are limited to 4,000,000 weight units (before segwit: 1,000,000 bytes) which usually amounts to 2,000–4,000 transactions. Over the entire history of Bitcoin, blocks have had between 1 and 12,239 transactions.
There is a big range to the count of transactions that fit into a block, because transaction weight is variable depending on the number of inputs spent and number of outputs created by a transaction. A minimal common transaction specimen would perhaps be a P2WPKH input and two P2WPKH outputs which weighs around 562 weight units (140.5 vB). However, the largest standard transactions are permitted to weigh up to 400,000 weight units (100,000 vB).
The transactions before segwit had a higher weight. A transaction with one input and two outputs of the then most common default type P2PKH has a size of 904 WU (226 B), about 1.61× the size of a P2WPKH transaction. So, if everyone would have used single input two output single-sig transactions, we would have assumed the input count of transactions also to increase by about a 1.6×. However, since then, the average outputs per transaction and inputs per transaction have each increased from about 2.5 in August 2017 to around 3.3 today, generally increasing the size of transactions we see. The number of payments per transaction has increased even more from 1.5 to about 2.6.
So, it's a bit meaningless to compare the transaction count before segwit and after segwit, because the nature of transactions has changed more than the count of them, while the payments per day have gone up dramatically.

Take for example the recent new biggest block 748,918:

via mempool.space
It was a full block with 3,993,415 WU, but had only 202 transactions  spending a total of 9,468 inputs and creating a total of 391 outputs.
On the other hand, block 367,853, the block with the highest transaction count even predated segwit activation:

via mempool.space
It had a transaction count of 12,239 consuming 13,176 inputs and creating 12,917 outputs.
Since transactions can pay multiple recipients, the count of transactions is also not necessarily a good proxy for the number of payments performed in a block. when there are many transactions performing batched payments.
Block 409,069 only had 368 transactions spending 1,387 inputs, but created 23,642 new transaction outputs.

via mempool.space
For comparison, the current block 753,191

via mempool.space
had 3,543 transactions spending a total of 6,366 inputs and creating 12,529 new outputs.


text:
How to calculate the Public key P2SH from hexadecimal script?
My study on the scripts goes next.
I'm creating a ScriptPubKey decompiler, now I have a problem with the P2SH,
So how is calculate the key p2sh?
I using this code but I not think is correct
 string scriptHash = hex.substr(4, hex.length() - 6);

 Bytes bytes = hexBytes(scriptHash.c_str());

 char address[36];
 Base58Check::pubkeyHashToBase58Check(bytes.data(), 0x00, address);

 string stringAddr(address);

 cout << "P2SH addresss is " << address;

I have looked this code inside the class DestinationEncoder of the bitcoin core
 std::string operator()(const CKeyID& id) const
    {
        std::vector<unsigned char> data = m_params.Base58Prefix(CChainParams::PUBKEY_ADDRESS);
        data.insert(data.end(), id.begin(), id.end());
        return EncodeBase58Check(data);
    }

and with this code it seems that the information is queued to something, can you clarify my ideas?

This is specified in BIP 13: https://github.com/bitcoin/bips/blob/master/bip-0013.mediawiki
You compute the Base58Check encoding of the P2SH version byte (5 for mainnet, 196 for testnet) followed by the 20-byte Hash160 of the script.
The code you're quoting is for P2PKH addresses, not P2SH.

Thanks, Pieter, is my error copy and past, for the P2SH code the parameter of the  m_params.Base58Prefix is CChainParams::SCRIPT_ADDRESS, right?


text:
How used the getrawtransaction for fin the tx blockchain
How used the getrawtransaction to find the tx blockchain?
inside the documentation says to use the -txindex, can you give me an example for the complete command please?

When you start bitcoind just pass the -txindex flag in order to have it create the transaction index to be able to get any transaction by id:
bitcoind -txindex

In the console, you can get any raw transaction by its transaction id (hash):
bitcoin-cli getrawtransaction
15f7c2c57cce37d9b8927f957840ec9367bb504780347e497c758ee022b2a143

...


text:
Can I restore a Litecoin wallet with Public / Secret?
I apogolize if this has been asked, I have spent several hours trying to figure this out.
I found an old document of my with a Litecoin Public and Secret key.

I don't have a *.dat file, is this a problem?
I do have The Public key is 34 characters
I do have The Private key is 51 characters
I am using Litecoin Core Qt - Wallet (Which I used in 2015).
The blockchain is downloaded (About 10GB), yet it just sits here
Q1: Do all I supply is my private key?
Q2: Is there a way to check balance with any of my keys, or conversions below?
Q3: Are coins lost if you don't have the .dat file anymore?

In the Application, I can run the Debug > Console and run:
# (This is a fake address, but it's in this format)
importprivkey "6vpo4RFWLcGhk4VsdFk34K3243K3kdsk4k23k32kAkasdkewkwe" "Jesse"`

The above gives me a "Receivable" key under Receiving Address which is identical to my Public key (34 characters).
I used some Online Bitcoin tools to convert the Public key, I thought I might need to run importpubkey, key it's must be there since it's visible in my Receiving Address?

I'm not sure what for but I was able to get:
(a) (Address to Hash): 40 character hash
(b) (Hash to 160 Address Bitcoin, using a): 34 characters
(c) (Pubkey to Hash, using a): 40 characters

I'm not sure what all this means, this is terribly confusing I don't remember how I did this in the past. If anyone could give me a plain answer I'd really appreciate it and I'll be sure to tick it off as correct and settle the issue :)

All you need to do is importprivkey. The software will handle everything else. Everything else it needs can be derived from the private key, and it will do so when you give it a private key.


text:
I've seen a transaction with 24 ancestors in the mempool, Is there a sensible use of this?
I've seen a transaction with 24 ancestors in thee mempool, Is there a sensible use of this? Or is a kind of spam or something else?
It got mined on block 613101
$ getmempoolentry 132c52367b5e8c6abe87eee8bc60032c58f3d1296b8ca216373d924d94013d45

{
  "fees": {
    "base": 0.00000202,
    "modified": 0.00000202,
    "ancestor": 0.00019743,
    "descendant": 0.00000202
  },
  "size": 202,
  "fee": 0.00000202,
  "modifiedfee": 0.00000202,
  "time": 1579178958,
  "height": 613089,
  "descendantcount": 1,
  "descendantsize": 202,
  "descendantfees": 202,
>  "ancestorcount": 24,
  "ancestorsize": 4848,
  "ancestorfees": 19743,
  "wtxid": "34799217c58ef6da2417db2cc7ddf0715f9d0ab86926b3fd99e23e1ce92968c4",
  "depends": [
    "676a48b91e030f2d757b9ae877d452b0d88a3304d19f0960d988d69fc9c180f2"
  ],
  "spentby": [
  ],
  "bip125-replaceable": false
}

Looking at the ancestor transactions this looks like someone is writing chunks of data to the chain.
The couple of transactions I looked at all have an OP_RETURN output and then send to bc1qraz56wyj28km560u2pyyml9dr3uaxv9sts67ct, chaining them together.
Looking at the OP_RETURN data, this could also be some kind of timestamping or another sort of anchoring as the data doesn't look random:
000c486100023...
000c487000029...
000c48740002e...
000c487500024...
000c48780002f...
000c487b0002a...
000c487e0002a...
000c48810002c...

It's hard to say. Maybe someone else has more insight into this.


text:
How to calculate a candidate block for mining using bitcoind RPC (without getBlockTemplate) and having into acount MAX_BLOCK_SIGOPS
I'm trying to calculate candidate blocks without using getBlockTemplate.
Im using the data returned by bitcoind RPC, but I can't find a reliable way to get the required signatures per transaction in the mempool.
The only way I see to get reqSigs (required signature) of a transaction output is via getRawTransaction.
So:
-If I get all the mempool transactions via getrawmempool.
-then query using getRawTransaction all the transactions outputs that are signed and sum all of it's reqSigs.
Do I have the number of required signatures per transaction?
It seems that this number could not be available until the redeem script is known. But this information is only available for the tx output using getRawTransaction, not in the tx input...
am I missing something?

Do not use reqSigs, it is not the same as the sigops count. There won't be a reqSigs for scripts that don't match any known templates, even though they may be valid in the mempool. The correct information is in getblocktemplate, and only there.

It's a pity. There is no (easy) way of knowing how good is performing getBlockTemplate against other algoritms. Anyway, I know the difference will be (normally) very small.

You can take the output of getblocktemplate, and build a new blocm template with it. All the information you need should be there. If you come up with an improved algorithm that way, feel free to suggest including it in Bitcoin Core.

Ok, I've seen that getblocktemplate returns sigops. But only for the transactions in the candidate block returned. For the other transactions in the mempool that has not been selected I don't know how to get sigops. I've tryied using "sizelimit" and "sigoplimit" template twiking parameters that appears in bip 22. But It seems it works only for reducing the block size. Is there other way using bitcoind RPC?.


text:
Lightning Network: Isn't there a risk in spending more BTC than needed?
Say, I want to establish a payment channel with an individual, Jim.  I want to make 10 monthly payments of 0.01BTC to him for a total of 0.1BTC.  I don't want to spend 0.1BTC at once, but in order to create a payment channel with 0.1BTC capacity, I have to send a 0.1BTC transaction to Jim to create the Payment and hope he doesn't close the channel.  If he does, then the 0.1BTC is sent to the main blockchain?
If all I have is 0.01BTC to start with, all I an send to Jim is 0.01BTC once.  The only way I can send more is if there are already other funded payment channels between myself, Jim, and another node that have remaining capacity?

I have to send a 0.1BTC transaction to Jim to create the Payment and hope he doesn't close the channel. If he does, then the 0.1BTC is sent to the main blockchain?

Opening a channel doesn't involve "sending coins to Jim", it involves "opening a channel with Jim". You do not need to trust Jim to not steal your funds, because of the threat of revocation if he misbehaves and attempts to publish an old channel state. If Jim closes the channel honestly, he will be paid out according to the current channel balance. The 0.1 BTC locked into that channel will be split according to the current state of the channel, with Jim's share going to Jim, and your share being returned to you.

If all I have is 0.01BTC to start with, all I an send to Jim is 0.01BTC once. The only way I can send more is if there are already other funded payment channels between myself, Jim, and another node that have remaining capacity?

Yes, there is no such thing as debt on the Bitcoin or Lightning Network. In order to pay someone, you need the available funds or channel capacity. This capacity can come by routing a payment to Jim, using some other node(s) you are both connected to.


text:
How specific are ASIC's design? Can they single hash SHA256?
I understand that Bitcoin's ASICs are a highly optimized piece of equipment and, therefore, are also very specific.
My question: are they able to do a single (or triple?) SHA-256 hash at all? And, if so, how competitively would they be with versus a GPU?

A Bitcoin mining ASIC:

does not attempt to complete a single hash, rather fragments of two SHA256 compression rounds which is then compared to a target, the result is never returned
can not accept arbitrary information that is not in the form of a partial SHA256 compression round

So in terms of competitiveness, a CPU can actually complete a SHA256 hash, a mining ASIC can not, which I suppose puts it ahead in this arbitrary race.

Thank, you. However, let's assume I create a (educational) Blockchain that uses single/triple SHA256. Your answers left some doubt in me as to whether the ASICs would have an advantage or not.

No, you couldn’t do that with modern ASICS.


text:
Can I send BTC from other node or wallet with my address?
I'm trying to send bitcoins from node2 with my address using private key noted that my address is created in node1.I followed this link:
"https://en.bitcoin.it/wiki/How_to_import_private_keys"
I dump private key in node1 using this command:
bitcoin-cli -testnet -rpcuser=test -rpcpassword=test123 dumpprivkey "2N7YvA6ZBjFvXE3wuNQH4csev1QUWtrzYgA"

Then I imported private key in node2 through this command:
bitcoin-cli -testnet -rpcuser=test -rpcpassword=test123 importprivkey cNKbGVQvQgJsJuRy25ggZ71BRA9UZyEPCMekdntnZDWjYTg9TpRu

now I want to send bitcoin from node2 with my address to different address
can anyone please give me solution to make transaction using my address private key
thanking you in advance

Does this help: https://bitcoin.stackexchange.com/a/58755 ?

I performed the scenario described, using these commands:
// create a new wallet. Extra options are needed to not create a descriptor-based wallet, to be able to dump privkey
bitcoin-cli -testnet -rpcuser=XXX -rpcpassword=XXX createwallet "test1" false false "" false false
bitcoin-cli  ...  getwalletinfo
// generate an address
bitcoin-cli  ...  getnewaddress
--> tb1qha...zxejw7
// dump its private key
bitcoin-cli  ...  dumpprivkey "tb1qha...zxejw7"
--> cRJzVP...cZTcV5
// send some funds to this address
bitcoin-cli  ...  getwalletinfo

// in another instance, create another wallet
bitcoin-cli  ...  createwallet "test2" false false "" false false
bitcoin-cli  ...  getwalletinfo
// import privkey of previous address. This can take a long time (many minutes), due to rescanning
bitcoin-cli  ...  importprivkey "cRJzVP...cZTcV5"
bitcoin-cli  ...  getwalletinfo
--> balance of the address shows up here
// Perform a send to another address
bitcoin-cli  ...  sendtoaddress "tb1qp2...n9qw92" 0.0001 "" "" true
bitcoin-cli  ...  getwalletinfo

You can use createrawtransaction to create a raw transaction, in which you can specify your custom inputs and outputs.
In this case you would specify the input to be the address from node2, and output/outputs to be addresses you are sending bitcoins to. Use signrawtransaction to sign raw transaction it using your imported private key and sendrawtransaction to send it to the network.


text:
Unable to Install API for Data Availability
I'm getting an error when attempting to install my API.


text:
Network connectivity to the Fullnodes
What would the router configuration (port forwarding) be if I have two nodes 192.168.2.21 and 192.168.2.22 running bitcoin and wants to enable port forwarding for them both on 8333?

Just open TCP incoming/outcoming connection for 192.168.2.21 & 192.168.2.22 for port 8333 in you router configuration page.


text:
Is a multi script possible that requires relative time locks relative to each signature?
I've been wondering about cold storage multi sig security.
Specifically, I was wondering how secure it is with respect to a kidnapper. If a kidnapper took X hostage, and threatened to kill him, X would simply share the other members (ie Y, Z), required to submit a transaction. In that case, X could be forced to call Y & Z, and tell them some arbitrary reason he needed them to sign on such short notice, (or even tell them the truth if he really feared for his life), and Y and Z would certainly sign to keep their friend X alive.
Please let me know if I'm missing something in the above scenario...
Because of the above scenario, I was wondering if it is possible to require a wait time between signatures in a multi sig.
That would result in a kidnapper needing to hold X hostage for, say 1 week, before Y's signature would be valid, and possibly another 1 week before Z's signature would be valid. This seems a lot safer since the attack cannot be completed as quickly and an attacker would need to 'not get caught by police' over a much longer time frame.
I've looked at OP_CHECKSEQUENCEVERIFY but I have never played with script yet so I'm not sure I totally understand.
Would something like the below work?
"+1week" CHECKSEQUENCEVERIFY DROP <X pubkey>
"+2week" CHECKSEQUENCEVERIFY DROP <Y pubkey>
"+3week" CHECKSEQUENCEVERIFY DROP <Z pubkey>

Your question is a nice thought experiment.
Your example would not itself work: as CHECKSEQUENCEVERIFY is relative to the mining date or height, so in week 3, all three parties could sign at the same time.  On day 1 things work as you intend. On day 8 'X' can now sign at any point without delay but must wait a week for Y and two for Z. On day 15, 'X' and 'Y' can both sign at any point without delay but must wait a further week for Z. On day 22 all three of them can sign without delay, and it's no different to a regular multisig.
The direction of your thoughts seems to be that CHECKSEQUENCEVERIFY could be made relative to a previous signature. I'm not aware of any method of doing this within a single script: how can a computer tell that a signature has been made more than a week prior, other than by seeing it on the blockchain? The mempool would be wholly inappropriate a venue not least because people would be storing something for potentially long periods of time.
An improvement of sorts would be to have the multisig lock 10% of the funds for ten months, and each month, lock another 10%. At the start of the eleventh month, the three of them redeem to a new multisig, and so relock that original 10% for a new set of ten months. In this manner, all three of them are needed and 90% of the funds are locked for at least one month even if they're all present.


text:
Do I have to pay tax if I buy bitcoins with my USD?
Theoretical question:
If I make $1000, which gets deposited into my bank account, and then I deposit that $1000 into a bitcoin wallet the next day, and just sit on it for one tax year, do I have to pay income tax on that $1000? Can the gov't track me down and get me to pay tax?
Thanks.

Under the tax laws of which country?

According to the guidelines currently provided by the IRS, you are only required to pay taxes if you sell those bitcoin and have made a profit on them. If you are holding, or made nothing, or lost money, you are not required to pay taxes on them. If you lost money, you may claim those losses when you file your taxes, if you wish. It is not practical for the IRS to track the bitcoin of every US citizen who owns some, and becoming increasingly difficult to do so, given the continuing advancement in bitcoin privacy enhancements. It is one of those categories where the IRS relies mostly on self-reporting. However, if you have been moving a ton of bitcoin and not paying taxes on it, then you get audited, this is something that could come up in a detailed investigation into your finances.


text:
Where can I look up the best ASICS under certain conditions
I have found a lot of helpful websites showing the best hardware for mining in general. However, is there a list of any kind where I can choose the criteria?
For example: I want an ASIC that has a high hash rate, does not cost over 200 dollars, but I do not really care about power consumption. Or the other way round, I want an ASIC that has a good hash rate, a moderate power consumption but I do not care about the costs.
I could not find any website that provides such services

http://www.bitcoinx.com/bitcoin-mining-hardware/
But you probably don't want to mine...

What do you mean about this comment ? :) Sry ai am fairly new to this topic

If you can steal electricity, than mining is profitable. Otherwise, it probably isn't. Be aware that if you're stealing electricity, e.g. from your landlord, they will notice the value you're extracting from them. i.e. if you make $100 of BTC a month mining, they will notice their electricity bill go up by $200 a month and come knocking.

ah I see - yes ofc - no I do not do that. It is more like a project to let it work with green energy (solar powered etc.)


text:
Managing the bitcoin address gap
We're in the process of setting up bitcoin payments to fund accounts in our system. Using the C# BitcoinLib (https://github.com/GeorgeKimionis/BitcoinLib) to interact with the Bitcoin Daemon.
Our concern is how to manage the Address gap. My understanding is we can only generate 20 unpaid addresses in a row. Each account would have atleast one bitcoin address associated with it. Preferably with the option to generate a new address. So we have to consider the scenario, 20 users generate an address but never pay anything into the address.
How can this problem be dealt with?


text:
Why don't cryptocurrencies create inflation if there are so many of them?
One of the advertised advantage of bitcoin is that it can't create inflation. Governments can't print more money because bitcoin is fixed at 21 million.
But how about creating other crypto currencies when 21 million bitcoins is reached? There are at least a thousand crypto currencies in existence now. Isn't that a form of inflation? You are creating more money although not of the same type.

The term "inflation" usually refers to prices for goods and services in the offical fiat currency of a country.
In that sense "inflation" does not really apply to the price of one unit of crypto in fiat.
You probably refer to the price of 1 Crypto in Fiat and assume that that price must go down if more of such crypto units are thrown onto the market. And as a result you would need to exchange more crypto to pay for the fiat price of a good or service.
So these are two different kinds of inflation with a cumulative effect.
When more coins are issued (mined and sold) than taken from the market the price goes down (and vice versa).
But in our exiting times we need to be aware, that we are now at the beginning of a huge and complete transition from BAD money to much BETTER money, which can do without banks, regulations. government control and value skimming through digital money printing. A transition which will continue for a few decades until there are no more shiny bank skyscrapers.
So there is currently a huge amount of fiat money brought into the crypto world and that money is looking for promising coins, which can fulfil specific purposes, like easy payment, safe storage of value, identity verification (like Civic (cvc)) and many new purposes, which are waiting to be discovered. Blockchain supplies Trust. Money is just one aspect of that.
During this transition phase the value of coins gets determined through price discovery by supply and demand on the market.
The fiat price of coins deemed valuable will rise - to the moon - if you want, because of the general devaluation of fiat, which is a logical consequence of this transition.
All the other coins, those without any specific purpose apart from speculation will not be taken up. One reason that a coin gets abandoned, among many others, might be the inflationary effect, when too many tokens are released after ICO.

We got used to be caught in a financial system, designed and fine tuned to rob us of the fruits of our work and ideas, but quite unexpectedly a door opened through which the bright light of an exciting future is shining in.
And some, the first pioneers, mostly young folk, have the courage to actually walk out.
Those who just buy crypto to get lucky (most of us) have just gotten up, but not walked out yet.
A second step is needed, a step that is even more important than protecting your hard earned money from inflation.
If you prefer to escape the Fiat hell into the Crypto paradise, you need to START earning Crypto and STOP earning Fiat !
And that needs real effort. Much more than just opening an account at an exchange to jump on the train, when its on the way up.

Other crypto currencies are their own entities, like each country contains their own currency each crypto currency is self contained. While others (fiat currency) depend on the rise and fall of the US backed dollar. Other coins aren't hinged inherently on the rise and fall of bitcoin, these coins depend on their own usage, efficiency, or adoption.
More reading here.
https://www.coindesk.com/bitcoin-explained-global-currency-wall-street-veteran/

The supply of crypto currency is actually limited and they are designed to be inherently deflationary.
But before the deflation comes inflation.
Crypto is largely a speculative investment, only a throw away from gambling.
That said, Crypto isn't inherently susceptible to inflation but it could create hyper inflation of fiat currency.
Crypto is creating a lot of new millionaires who got lucky with sorta gambling their money, who would in turn increase the demand for goods and services driving up their prices over night with their new found money further increasing the gap between the rich and the poor.
Just picture large number of people stumbling upon hoards of gold and diamond mine by chance, who never tasted luxury before, are suddenly out in the market throwing money left and right.
This wouldn't happen if the income is hard earned from business and jobs, as they dont usually create many millionaires over night, and you woudn't be a spendthrift like the above group. Sure, exceptions exist but generally speaking that's how the human psyche is.
Another scenario, they'd sit on millions silently, without spending a dime because the price of crypto is constantly increasing. But that wouldn't be good for the economy either as it would lead to deflation and depression as as a bunch of new millionaires are taking all that wealth from the economy pool, which would otherwise be distributed among many. This would lead to decreased demand for products which leads to unemployment.
Best case scenario, they'll invest that money in something real, say real estate, or a software business start up, which could create jobs. But not many will do it and won't succeed even if they do it, as majority of them are not good investors, they're just there to ride the hype train to cash in.
Bottom line: If everybody's rich, nobody's rich.

The split of Bitcoin Cash off Bitcoin is similar to money printing but with a large sudden jump in the sense that more coins (double) were created. At the moment of the split every Bitcoin had a sibling in Bitcoin Cash - with a lower value in USD. So they were suddenly doubled.
Inflation basically is related to higher prices of goods because of creation of more money (aka printing). As the number of Bitcoins is indeed limited and so less easy to create more we might see more splits in the future to overcome this limitation and the market will find alternative ways to make more money mining and attracting buyers of new coins.

Most cryptos aren't used as money, but as speculative instruments. That is why the crypto market as a whole doesn't affect BTC prices much.

authors: นายอนุวัฒน์ ศรีวงษา


text:
Switching back and forth between Bitcoin ABC and Core nodes (Ubuntu)
I need to get my pre-fork BCH and the only way to do this turned out to be through Bitcoin ABC client. How do I switch from a Bitcoin Core node installed on Ubuntu to a Bitcoin ABC node and again to Bitcoin Core. Do I need to remove the node completely every time I am switching to another node? I guess both types of nodes can use the same blockchain data (up to the date of the fork) so it would be great to avoid downloading 150GB of data every time. I am new to Ubuntu so I would appreciate clear instructions. Thanks!

While you can feed the Bitcoin Core blockchain to Bitcoin ABC, the blockchain will be changed by Bitcoin ABC.  So you will need two copies of the blockchain if you wish to also run Bitcoin Core.
Also, unfortunately, you can not easily run these two clients side-by-side.  If you try to install Bitcoin ABC it will install itself over Bitcoin Core and use the same config file.  The only solution is some kind of containerization.  You can do this by using a second computer.  I'm doing it by installing a second Ubuntu into a virtual machine.  I use KVM/QEMU with Virt-Manager.  Then I install Bitcoin ABC into that virtual machine.  I keep a second copy of the blockchain on my host machine and mount that via NFS.  Simply add to your /etc/fstab something like:
192.168.122.1:/home/User/BitcoinCash        /home/User/BitcoinCash   nfs     hard,timeo=14           0       0

Note that 192.168.122.1 is the default address at which your host machine can be reached.  See here.
So far this has worked and I have been able to sync up to the fork, but beyond that I am having some trouble which I am asking about here.  [I am now able to complete the sync.  See that link.  Be sure that when copying the .bitcoin directory for use with Bitcoin ABC, you delete the chainstate/ directory and the blocks/{blk,rev}*.dat that contain blocks beyond the fork, or the client will freeze.]
Note also that you should be careful about the wallet that you feed to Bitcoin ABC.  Do not feed it your Bitcoin wallet if you have anything left in it.  First, transfer everything out to a second wallet.  Then give Bitcoin ABC your first wallet.  Since that first wallet had BTC in it at the fork, those BTC will become BCC even though somewhere post-fork the wallet becomes empty.  The reason to transfer your BTC out of the wallet to a second one, is that you never want to trust a second piece of software, in this case Bitcoin ABC, with the keys that could give it access to your (classic) bitcoins.


text:
Mining Pool code changes for supporting Bitcoin Cash
Since its a bit difficult to to find developer related information for Bitcoin Cash I'm asking here. What changes would be required from a mining-pool developer's point of view to also support Bitcoin-Cash?

This could potentially work out of the box I believe.
You don't need to worry about replay prevention, or any of that when dealing with outputs generated by mining a block. These are new outputs and they aren't (under normal circumstances) available in the Bitcoin blockchain.
The BCC client might even provide this protection by default, I don't know. But once you do a payout to a miner, they will certainly add replay prevention if they spend their BCC by default.
https://github.com/coinfoundry/mining-core/blob/master/src/MiningCore/config.json#L218
I suggest you modify the existing BTC tag (instead of adding a new coin BCC),
https://github.com/coinfoundry/mining-core/blob/master/src/MiningCore/config.json#L218
Change those lines to work with the Bitcoin Cash daemon, instead of connecting to the Bitcoin Core client. Also make sure to modify the pool address to yours.
But I want to run both bitcoin and bitcoin cash - how do I do that?
I'm not going to do the work for you, there are multiple changes required and nobody here will be able to answer you to the full extent. I suggest you edit the BTC tag just because it great simplifies the amount of explanation I have to do and allows you to test if that works before even thinking about an engineered approach. People here generally don't answer software engineering questions, let alone those that involve BCC.

I wasn't aware that engineering question were OT here and I didn't expect anyone doing my homework either. It's just not that easy to come up with answers without resorting to reading much of the daemon's code. By the way can you clarify why you've linked to the Pool Engine's example config? I sure know how to configure the pool since I developed it.

I believe the Bitcoin Cash daemon operates over a different port to prevent overlap with Bitcoin Core? I'm not really aware of the exact internals of BCC, except for the replay protection (because that inflicts with Bitcoin Core). I assumed the worst as the question seemed like a "halp me make thiz other person software wurk for bcc plz", my apologies. Hooking it up to the Bitcoin Cash daemon should be all that's needed to get this baby to purr I believe.

@OliverWeichhold
https://github.com/Bitcoin-ABC/bitcoin-abc/blob/master/src/chainparams.cpp#L155
The ports are the same by default, you'll want a custom configuration if you're running both bitcoind and bitcoind-abc on the same machine. Also they have all the same base58 prefixes (for addresses, xpub keys, etc). It's basically all the same values that make up bitcoin (no changes to the chain params like with an altcoin).

Yeah I'm fully aware of the differences in port allocation. But this is a devops issue that is already solved. I need to make sure that share processing and payouts work as expected for the miners.

I updated my comment with a bit more information, let us know if it works. You've got me curious.

Will do. Too bad that none of the BCC developers are active here.


text:
Bitcoin.conf doesn't exist in my Windows 10
I am in dire need to prune the blockchain because of the storage space on my computer being completely clogged up now. But I cannot locate the files. I have found the directory, but the bitcoin.conf file simply doesn't exist. Please help me!

create it.................

In Bitcoin Core, go to Settings > Options and click the button labeled "Open Configuration File". This will make a bitcoin.conf file and open it in a text editor. Add the lines that you want (probably prune=550) and save the file. Then restart Bitcoin Core.

you need to create it under %APPDATA%/bitcoin
and define the needed parameters as presented in https://en.bitcoin.it/wiki/Running_Bitcoin
there is a prun parameters to set in order to allow the prune mode.


text:
How to restore wallet from 15-word seed mnemonic?
The wallet was created around Feb 2013, using unknown wallet software. All that is known is a passprase, and 15 words. I suspect the passphrase was used to encrypt the wallet, and is probably irrelevant here, since the wallet file itself is lost.
All words are found in the "old" Electrum list. But the number 15 is puzzling, since no version of Electrum ever produced 15 words by default, as far as I know. I considered the possibility that this mnemonic was extended with custom words, but it looks like custom words in Electrum work only with the "new" word list.
I cloned Electrum repository from github and tried converting mnemonic to hex seed using the old list, then converting it back to mnemonic using the "new" word list. This method produces 15 words that Electrum GUI does recognize as 12 + 3 (extended), but leads to empty wallet.
My working hypothesis: there ought to be another wallet software that existed around 2013 that used Electrum's "old" word list and generated 15 words by default. Any other ideas or suggestions?

Finally a good wallet-recovery question. A +1 from me. I hope it helps attracting people who can help you.

By any chance, could it be that 4 years ago you invented your own way of making a private key from 15 words and that you forget you did that?

Does blockchain.info ring a bell? Give it a try https://blockchain.info/wallet/forgot-password?guid=

I am aware of this tool. It is unfortunately broken (aside from violating the first rule of mnemonic - to never enter it on a web site). Try to enter 'drama' (one of the words in my mnemonic) and watch it error out.

If your 15 words really are from blockchain.info, then this is the only way to recover it, as the old legacy mnemonic phrase is not the same as HD wallet "recovery phrase.
The error you get is because you need to enter at least 3 words, I haven't looked over the whole source file, but I assume it is some kind of a checksum. Of course it has to be done online, how else is blockchain able to fetch your wallet-id and password for you?
You can disregard this, if your 15 words are from somewhere else.

@Chak this is indeed from blockchain.info. I was discouraged by the errors when I entered the 15 words in the wrong order on purpose, to see if it works. In all likelihood it did not work due to checksum, like you said. When I entered all 15 words in the right order, the output matched the passphrase on record.

Mnemonic phrase from 2015 or earlier, and not an Electrum seed?
Then there is a high probability it is blockchain.info's legacy wallet recovery mnemonic.
Which can be recovered here https://blockchain.info/wallet/forgot-password
Correction:
This is a blockchain.info mnemonic. It contains your WALLET ID and Password (pre 2013 contains only Password and/or password plus alias)
You can decrypt the mnemonic using blockchain.com webpage they have a legacy (HD is only 12 words) page which changes from time to time.
With that you can login to your account and access your coins.

This could also be coinomi (an android app HD wallet that supports many currencies, including ETH). They used a 15 word seed. They have a recovery tool here, https://coinomi.com/recovery-phrase-tool.html -- or use can use their app again to unlock. AFAIK no other vendor seems to quite support restoring their phrases -- but you can use their tool to derive the private keys.

Probably a BIP39 mnemonic.  See, for example, https://iancoleman.io/bip39/


text:
Will bitcoin not work any more?
I am not an expert on bitcoin, so please pardon me for dumb questions.
1, Will bitcoin not work any more in the far future? I think, not sure, every bitcoin transactions are recorded into memory or a block, and since this memory is so limited and hard to get, let's assure that your memory card is full or corrupted, then your expensive digital camera simply won't work anymore. So I think bitcoin owners pay too much on their memory card and forget about that the real value is in the camera.
2, What are the differences between a bitcoin and a memory block? I think they are the same thing, but on the other hand, I can spend a bitcoin, but I don't think I can spent a memory block.
3, I notice a payment that I sent days ago still haven't got confirmed. I sent 0.003 BTC and the fee I pick is 0.0003 BTC which was all I got in my wallet. That is too slow. I understand why, but I just can't accept it. So my third question will be what happen when everyone pick the same "priority" or Sat/b value, how long will it take for a transaction to go through in this unrealistic scenario?
4, It's basic economy, Supply and Demand. Since people are paying priority fee every new day, why would anyone want to process the lower fee transactions at all?
5, Is bitcoin really decentralized? but how can anything be decentralized when it's controlled by a group of people, namely those with a super computer. Well, it sorts of like the internet. Internet is controlled by few huge tech companies, some even controlled by its government.

I will try to respond to what I've understood about your question. Correct me if I miss your point.
1
Transactions are stored inside blocks in the blockchain. The blockchain is a distributed database, stored on thousands of computers around the world. This means that corrupted memory on a node won't affect the net, because the same information is on every other "sane" machine. It is true though that the size of such database is ever increasing and less people want to become full nodes for the size of it. Memory is not limited and is not hard to get (in this case). The current dimension of the blockchain is of about 140 GB and almost anyone can affort a 1 TB Hard Disk. Your camera (your bitcoin's) won't be useless if you fill up every tiny byte of memory in your machine because the same data will be in every node in the network
2
When you want to send bitcoins you create a transaction.
A group of transaction is put together to form a block.
Therefore you can't spend blocks, because they are just a data structure.
So bitcoins are just numbers sent and received by people. Blocks are the structures that contain the information about the excange if bitcoins between people.
3/4
A transaction's priority is based on its fee and the time elapsed from the moment it was sent to the network. The older a transaction is, the more priority it has.
So if you send a transaction with a low fee then you should be prepared to wait a long time (days) until it will get confirmed. If the fee is extremely low, it may occurr that the transaction won't get through for years!.
A fee of 0.0003 is a bit low. I understand that you had 0.0033 BTC and sent 0.003 and paid another 0.0003 as a fee.
5
It was born as super decentralized and now it's becoming less decentralized because of the difficulties bounded with running a full node and mine. We will se what the future holds for us.
Note
I suggest you read some basic article about Bitcoin (you can find a lot of them just looking at the first results of a google search) to understand the basics
read this
FROM THE START
I'll try to explain you in a simple way how Bitcoin works.
Bitcoins is a peer to peer network that organizes the excange of data between people using a chain of blocks. This chain is protected by cryptography and every node shares the same chain. That chain of blocks is just a bunch of data files. Whenever two people want to send bitcoin between themselves in the blockchain they create a transaction, which then is included in a block by a miner. The miner gets a reward for creating the block (which costs computing power) and the fees attached to the transactions. The block he creates is just a simple plain old file, it is not some sort of magical and costly paper. Every block can at most be 1MB in size so it isn't storage demanding either.
As for the price of bitcoins it only depends on how much people are willing to pay them. If everyone wants a bitcoin then the price goes up. If no one wants a bitcoin the price goes down (to put it in an exaggeratly simple way).

1 is wrong; 2 is unclear; 1, let's say you buy a Super Expensive Camera with irreplaceable internal memory. Eventually, when the memory is full, and you can't take any photo, then your SEC is nothing but junk. Will this be the same to bitcoin?

1 is not wrong. memory won't fill because there is not a maximum. The maximum size of the bitcoin blockchain would (is you ever had to reach such level) the maximum amount of memory of the machine with the maximum amount of memory in the world

1,what are the differences between memory and blockchain? aren't they the same thing?
2, a block is sort of like a piece of very expensive paper, the bitcoins are the numbers written on it. I got that part. Since this paper is limited, isn't there a value to the paper itself? It is easy to understand that a paper has a value, but it's hard to get why the numbers written on that paper have any value at all. Seems to me, it comes from thin air. Just like how governments print cash out of thin air. Who owns the first buck? (I think both bitcoin and cash are scam, even though people trust it.)

read the last paragraph and read the document in the link i attached

Your argument for 1 is wrong. Everyone else having the same data does not change the incentive problems with growing storage, as the system relies on independent verification. However, modern full node software does not require storing the full block chain on disk. Look up pruning mode.

@Pieter Wuille 140 GB ain't expensive to buy. I understand really well that it is an issue for other reasons but I certainly do not think that it is because the memory to store them is too expensive or difficult to get


text:
Bitcoin 2.0 offline transcation
The biggest weakness of bitcoin is also it's biggest strength, ie, relying heavily on the online block-chain to confirm any transactions. The word Online is a very interesting word. For an individual, being online mean the power to access the world, but for your hard-earned money, constantly being online is more a liability than an asset. For starter, you can't spend your money while not being online, even if you are a millionaire. So it's a simple question. Why doesn't the block-chain have an offline functionality? Instead of getting confirmation by strangers around the world and while paying them a fee, Why not have an offline-password-based confirmation schema?
Being able to use your hard earned cash both Online and Offline is a huge deal. Or isn't it?

I think everyone agrees this would be great if there were a way to do it that was (1) secure (2) efficient (3) maintains the decentralized nature of the currency.  But nobody has found one yet.  It's not just the developers being lazy or ignorant of what users want. Whatever the "offline-password-based confirmation schema" is that you have in mind, I will bet a lot that it has some flaws that don't satisfy these requirements.

Why doesn't the block-chain have an offline functionality?

https://en.wikipedia.org/wiki/CAP_theorem
Point.


text:
Send cash: bitcoins vs western union: which is cheap?
Bitcoin has been advertised as a very low cost and fast method of sending people money around the world, So if I need to send someone $1000 USD, the cost/fee of using WU is less than $20 USD (Using credit card - UNFORTUNATELY, WU doesn't work. They deny me sending $1000 and give me no reason. I will never use WU again.) but if I use bitcoin, what will be the minimal cost? Since I need to buy the bitcoin in the first place, and that other person need to sell it to get the cash, the conversation fees and the transaction fee would be more than $100 in the end? and if send someone $1000 in bitcoin, there is a chance that when she/he gets the cash next day, my $1000 will be less than $1000? If that is true, how can I trust bitcoin?

If you pay enough fee, which is ~ 5 dollars currently (but paying 10 dollars will guarantee fast confirmation), your payment will get confirmed in an hour. Good luck!
Actually it's possible to send with lower fee by using a SegWit address, but don't take the risk if you don't know what you're doing, set its fee 8-10 dollars. Rescuing the low fee transaction is difficult unless you're an expert.

There is also a fee for me to buy 1000USD bitcoin in the first place. And I think it's about 4%, or 40 dollars. I don't know about the receiving end, but I guess it's probably the same, so that is another 40 dollars. 40+40+10=90 dollars.

@Atmega328 That's not transaction fee, that's your exchange fee. Different exchanges have different fees. Bitcoin's transaction fees don't depend on the value of Bitcoins you sent. (Fees of a 100k dollar transaction may be equal to a 100 dollar transaction)

Regardless, if I need to send someone 1000 USD cash using THE "promising" bitcoin system, I still need to pay about $100 out of my pocket to do just that, which is ridiculous and not counting the hassle for me and receiver. I can do that with paypal for less. 2.9% or $29, which is still  expensive. SO is there a place where I can buy bitcoin for free? I highly doubted. Or do I really need to pay a fee to sell bitcoin too? I am pretty sure it's the case, so bitcoin is just ridiculous.

yup, in your understanding and insisting model of paying to get in and out, bitcoin doesn't make sense as a use case. You better let it be, cause there a limiting factors surrounding you. The vast majority of people have better use cases for bitcoin (many are holding), and they find ramps to go in, and even live on bitcoin, and hope with the ongoing develpment (segwit, lighning) to go into a future with even cheaper payment oportunities. Exciting roads ahaead!

have a look here: https://bitcoinfees.21.co/
this tells me currently, that you can pay 120-150Satoshi/Byte, to get confirmation within 6 blocks (on average 1 hour). So if you have a standard tx (less than 500 Bytes), you can go with 500x100 Satoshi= 50.000 Satoshi = 0.0005 Bitcoin = +2 Dollars. If your tx has 2 inputs, and two outputs, then you have like 750 Bytes, so make it +3 Dollars.

There is also a fee for me to buy 1000USD bitcoin in the first place. And I think it's about 4%, or 40 dollars. I don't know about the receiving end, but I guess it's probably the same, so that is another 40 dollars. 40+40+10=90 dollars.

that doesn't make sense... if you choose the most expensive seller for bitcoins, then maybe you are working with the wrong team. That is not bitcoins fault. Take a look at other opportunities, or even bisq. And if US is the problem, cause you can't get "cheaper" access to bitcoin, why not search abroad? I have never had to pay ~40 Dollars to buy bitcoin - wtf!!! I am in Europe though...

3.99% is Coinbase.con fee.