What is a good way to concisely explain Bitcoin? Often I'm asked to explain Bitcoin to someone and occasionally I come up with something stellar that really nails it, but most times it's a rambling incoherent mess.

What I would like to see is a short and simple explanation of what Bitcoin is that is suitable for someone non-technical to understand.

Bitcoin is a new kind of money. It's the first decentralized electronic currency not controlled by a single organization or government. It's an open source project, and it is used by more than 100,000 people. All over the world people are trading hundreds of thousands of dollars worth of bitcoin every day with no middle man and no credit card companies. It's a startup currency which has never happened before.

Bitcoin is the first digital currency that is completely distributed. The network is made up of users like yourself so no bank or payment processor is required between you and whoever you're trading with. This decentralization is the basis for Bitcoin's security and freedom.

Email let us send letters for free, anywhere in the world. Skype lets us make phone and video calls for free, anywhere in the world. Now there's bitcoin. Bitcoin lets you send money to anyone online, anywhere in the world for less than a cent per transaction!
Bitcoin is a community run system not controlled by any bank or government. There's no wallstreet banker getting rich by standing between you and the people you want to send and receive money from.

Bitcoin is more efficient than all competing currencies. This will drive its adoption in the same way computers were adopted, in that computers made people more efficient in competing in the marketplace. A currency has value by it being widely used. Bitcoin is a startup currency with a deflationary bootstrapping economy. Its use spreads by providing the speculator incentive.

Bitcoin is going to be the biggest opportunity for innovation that the world has seen since the industrial revolution. An idea whose time has come.

Just tell them bitcoin is Digital Gold, everyone understands why gold is valuable... yet they don't understand WHY specifically. Same idea should be used to sell Bitcoin, not EVERYONE needs a thorough understanding...


Can gaming consoles be used as a Bitcoin mining platform? I'm very new to the concept of Bitcoin (having only just read the wikipedia entry and visited bitcoin.org)

My question is this: why is the mining platform limited to PC/ traditional computing devices? It seems that gaming platforms would also work quite well, having better performance specs than the general user would reasonably have on his/her home PC and they have networking capabilities.

When CPU mining was common gaming consoles did provide comparable performance.  There was some development work for xbox360 and PS3.  However roughly a year ago GPU mining hit bitcoin network rendering CPU miners obsolete almost overnight. Using unified shaders in modern GPUs and OpenCL programming language GPU miners could operate in parallel working on many hashes simultaneously.  Even the earliest crudest implementations vastly outperformed any CPU in terms of raw hashing power, hashing power per dollar, and hashing power per watt.  Since then refinement of OpenCL kernels have only widened that performance differential.  Currently there is no economic value in using CPU for mining Bitcoins.

Due to the emergence of GPU mining there are a couple issues that make mining with current gaming consoles futile.

Marketing aside gaming consoles are not that powerful.  Today a $69 AMD graphic card has more computing power than either the Xbox 360 or PS3.  Moore's law is a powerful force and gaming consoles which were start of the art in 2005 are pitifully weak compared to hardware available today.
As already discussed CPU mining is futile and unprofitable
The GPU in both consoles while powerful at one time are rather lackluster by todays standards.  They could provide low end hashing power except they lack unified shaders which makes programming them to do hashing impossible.

Consoles are not upgradable and that is both a benefit and detriment.  Right now we are at the tail end of ther current consoles lifecycle and it works against using consoles for computing power.  Since they can't be upgraded they are essentially $600 computers based on hardware available in 2005.  However at the begining of a console life cycle the hardware is rather powerful for the price point and they are routinely subsidized. At launch a $400 xbox 360 contained about $500 worth of hardware.

So to answer your question there is no benefit to mining on current gen consoles, however it may be possible that "next-gen" console would be viable hasing platforms at least for the first couple years (before their static hardware fall behind due to the continually effect of Moore's law).

However there are some requirements for a future console to be a viable hashing platform:

The Console has a GPU with unified shaders and good integer
performance.
The ability to access those shader either through API (Microsoft
XNA) or hacking/rooting console.
Powerful GPU relative to retail cost of the machine.

It remains to be seen if future consoles could be used for hashing but using current generation consoles for hashing is simply not economical.

Rob

When or even if a cryptocurrency mining app appears on game system like Play Station, Xbox and others, the company who made the game console has allowed such activity and some companies will even encourage it. Besides that Xbox one CAN mine crypto coins, the apps though  have to be installed and running for XB1 to mine.

HOWEVER if the crypto mining app was forced onto the game system / game console by JTAG or other methods of homebrew / hardware or software hacking, you can get your game console somewhat unusable to fire bricked and your mined crypto coins lost forever due to being "confiscated", stolen or destroyed. Also when or if illegal activities happen such as, buying anything from the underground black market with your crypto coins, then you will surely lose your cryptoc coins and devices from the investigation of that activity.


Is there a tutorial on how to set up a secure enviroment and use Electrum? Which OS to use? How to verify that the OS is secure?

How to download and install Electrum securely? There are many methods - binaries, git, homebrew, Ubuntu package, building from source.

Is there a tutorial that has step by step instructions on how to set up a secure environment for Electrum and use it securely?

Here is check http://secure-bitcoin.blogspot.ru/, please leave a comment if you find any mistakes


I used edge wallet to send my bitcoin from my wallet to my cash app but i used a low fee soo its been unconfirmed for 10 days what can i do? My transaction 5c8552a6744b3428d3ec4b5c0dd8b378ffeb4efd703b76a2b9d106250234d766
Has been unconfirmed for 10 days is there anything I can do to get it confirmed or do I just have to wait?

ViaBTC's Transaction Accelerator service can be used and you can pay with BTC but it will cost $100 or more.
You can wait for your transaction to be confirmed by Monday or you could have tried to spend unconfirmed UTXO if it was not cash app and some non custodial bitcoin wallet by following the below steps :

Generate a new Bitcoin address in wallet.

Make sure RBF (Replace By Fee) is ON. Send some or all of the unconfirmed balance (from the parent) to that address.

Copy the new transaction ID (TX ID) and paste it in the 'Child TX ID' field here: https://cpfp.djbooth007.com/

Enter the desired sats/vB amount. This can be determined by looking at the range of sat/vB in recently confirmed blocks or mempool stats on https://mempool.space

Click 'Calculate Fee'

Perform RBF (Replace By Fee) with the calculated result highlighted as 'Child to Pay'.

Other things you can use in future is RBF for every transaction and a change address if possible.
Some open source bitcoin wallets that support RBF:
Bitcoin Core
Electrum
Bluewallet
Sparrow
Wasabi
Green

So it looks like your transaction does not have RBF (Replace-by-Fee) enabled, so you won't be able to bump your fee in a replacement transaction.
And there's no change output, so it seems you sent all your money in one go, so you wouldn't be able to do a CPFP (Child-Pays-for-Parent) transaction.
One suggestion is to use ViaBTC's Transaction Accelerator service. You'll need to pay them Bitcoin Cash, and they will include your transaction in the next block they mine. So, you'll lose money still by paying for the service, but your transaction would be confirmed sooner.


Is it possible to create batches of transactions in bitcoin blockchain? Scenario:
Suppose that I have to make three transactions simultaneously to Alice, Bob and Claudia. Now the condition is if any one transaction fails the other two must also not go through.

Query:
How can I achieve this in BTC blockchain? Is there any feature that BTC provide to batch transactions as one so that it's atomicity is maintained?

If you have no trouble with Alice, Bob and Claudia know about each other, you could create a single transaction with 3 outputs, one for each of them. In such case they will all three get bitcoins, or all three would not get bitcoins (because actually it would be 1 transaction, which will get into blockchain, or would not).
sendmany
I can show you the way to make it with bitcoin-cli. For this you'll need full node running on your machine (bitcoind). This node must own your funds (privkeys for accounts with your funds must be in its wallet.dat). If this is the case, then you need sendmany method.
Run:
# Unlock the wallet (If your wallet is unencrypted, skip this step)
bitcoin-cli walletpassphrase "passphrase" 10
# Send all funds to everybody you need
bitcoin-cli sendmany "" '{"2N8hwP1WmJrFF5QWABn38y63uYLhnJYJYTF": 0.05, "2N5zxMH53RX3JLWbV5csmZrAhWY1R7Fr1SA": 0.05}'
# Lock the wallet
bitcoin-cli walletlock

You'll get transaction id as the result of sendmany call:
3a2addb48252889711a74f7e131816c8becfb112910342faefd17a8913ac2de7

(it is real transaction in bitcoin testnet)
To get more info about sendmany method, you can run bitcoin-cli help sendmany, you'll see the list of available params and examples of using it with curl. Or you can go to the official documentation
createrawtransaction
If you have access to bitcoin node, but this node does not have your funds, you can create new unsigned transaction using createrawtransaction  method on the node, then sign this transaction in your wallet and send it, using sendrawtransaction.

AFAIK no... the proof, that transaction has gone through is it‘s appearance in a block. So it has a confirmation. This cannot be verified by other transactions. You would have to write a surrounding script, which verifies the confirmation status on the blockchain, and then triggers the other transactions.

It get‘s even more difficult in your scenario - what do you mean by simultaneously? If the first goes through, and the second not, then the first shall be revoked? Also impossible with the standard toolset.
In general: why would a tx not go through? Based on a time limit? Or do you think more of double spent or similar?

Update after comments section below:

to have three outputs, the command from the bitcoin developer pages would become three pairs of address/bitcoin value:

{
  "'$NEW_ADDRESS1'": 79.9999,
  "'$NEW_ADDRESS2'": 10,
  "'$NEW_ADDRESS3'": 1
}

(lines are terminated by a comma or the final curly brace)


What would happen if you send Bitcoin (BTC) to a Bitcoin Cash (BCH, aka BCC) address? Could someone please explain what happens if someone sends bitcoin to a Bitcoin Cash address after the August 1st fork? Would there be a way to recover them?

As of what happens if someone send BTC from a BTC wallet to BCC wallet address, the transactions go through.
But you can only see that transaction in the Bitcoin Blockchain rather than Bitcoin cash blockchain.
I will explain with an example.

Say there is an address named "abc" in BTC and another address named "def" in BCC.

abc has 1 BTC (Bitcoin Network)
def has 0 BCC (Bitcoin Cash Network)

If a person by mistake (or for fun) sends 1 BTC from abc to def. Then the balance changes as follows:

abc has 0 BTC (Bitcoin Network)
def has 1 BTC (Bitcoin Network) [Assuming there was no transaction fees]
def has 0 BCC (Bitcoin Cash Network)

So, if the owner of def in BCC has the private key of that address, he can access the BTC in def as well.

But if he unfortunately does not hold the private key of that BCC address (like it can be of an exchange where you don't have access to the private key), then the BTC cannot be accessed by the owner of the BCC address.

Hope this answers your query well.

Use this site to get you coins back: trezor.io/recover-coins


Do AntMiners comply with FCC Part 15? Do AntMiners comply with Part 15 of the U.S. Federal Communication Commission's rules and regulations?

I tagged this question with "safety" because implicit in my question is what percentage of watts going into an AntMiner get converted to RF interference. If it's a lot, it could be a safety issue, especially since the cases of many AntMiners (e.g., S5s) are open and thus do not act as Faraday cages.

Yes. On their sales listing they note specifically that they have passed FCC and CE approval, and their products bear the markings for this accordingly.

I don't believe they are shooting straight - I have noticed strong emissions in the UHF and VHF ranges.


Security wise what stops me from canceling an unconfirmed transaction? I'm in a restaurant where they serve me my meal without waiting for the blockchain confirmation. Technically speaking I can cancel my transaction before the confirmation according to this

So what stops me from doing the same thing with bigger, riskier transactions?

So what stops me from doing the same thing with bigger, riskier transactions?

Because anyone accepting a bigger, riskier transaction should know enough to wait for at least a single confirmation.

Restaurants and stores all know that they will be subjected to a certain amount of theft and fraud, but since the amounts are so small, it's mitigated by their business volume.  Preventing easily-fraudable transactions from getting too high is the reason credit cards and debit cards have limits.

If you were to buy a house, however, you'll notice that the means of payment is a much slower and complex process than it is to buy a sandwich.  You don't just swipe a card at the realtor's office and walk out with the keys to a house.

Bitcoin isn't much different.  A zero-confirmation transaction is enough for a barista to hand you a cup of coffee, but not enough for someone to let you drive off with a new car.  For that, they would make you wait for at least one confirmation (about 10 minutes with a proper fee) or for 6 confirmations (60 minutes with a proper fee).  I should point out that this is still much faster than traditional financing in these situations.

Once even a single confirmation has occurred, it will now cost you a non-negligible amount of money in hashing power to reverse the transaction.  Every new confirmation compounds that amount.  In other words, unless the transaction is extremely large (think government budget sized), you would be losing money by attempting the fraud...and it wouldn't even be guaranteed to work.

In short, your own incentives prevent you from attempting fraud.

There's nothing stopping you, you would just be paying higher fees and the restaurant would receive the same amount. Therefore, there's no point of doing it unless the transaction is stuck in the mempool.

The restaurant needs to wait for atleast 6 confirmations to make the transaction almost statistically permanent. If it does not wait that long, it is possible, but not easy, that the transaction can be reverted. This is why you should always wait 6 confirmations.


My miner doesnt show up on network but running? I have an S3+ and yesterday it stopped showing up on my IP scan and connecting to my pool. It still runs the fan (very low speed though) and shows the lights for a network connection, so does my modem. But I can't access its setup or see it mining in my pool. I have tried all the usual troubleshoots, 3 different PSU's, reset, new internet connection but none of them helped, any idea why this could be happening, help is appreciated

I have posted how i got my miner to run on bitcointalk at the following link: https://bitcointalk.org/index.php?topic=1161887.new#new  try to see if these tips work for you...

I have the same problem and attempted several different "fixes" to no avail. I have a wireless modem with cat5 Ethernet ports in back. There is a VOIP adapter plugged into one of them and it works fine. All the lights are lit on the miner as well as the router/modem but if I log into my LAN network I get a "Network Cable unplugged" message.  I can log into the miner by connecting it directly to my laptop with the default IP (192.168.1.99) and that can be reset to default through the small opening to the right of the red/green lights of the antminerS3. I have done that but still my network can't see my miner. I would be very interested in hearing any suggestions.

mutt6249


Lost bitcoin on paper wallet so i got a 0.8 btc on my paper wallet..and usually i checked the balance on daily basis on blockchain.info.

And weird thing happened yesterday,my paper wallet sent my btc with total amount of 0.2btc to unknown address..
And i swear i keep my paper wallet safely and never get exposed..after learning that ,i decide to transfer all remaining btc on my wallet on blockchain apps.

Please anybody can answer here is my paper wallet address.
this.https://blockchain.info/address/14w344ohpe2M35BkScgcFdANuei5MPK49Z

And here the transaction.
https://blockchain.info/tx/8d1d918dcd045732c79541662309b9fe83e7faea99e3e0e757e3620167b2bb7a

Only the ones with knowledge of the private key on that paper are able to send money from your address. If it's somebody else who also has your private key, it's weird that he/she didn't sent the entire balance.

Since it's impossible - let me repeat that, impossible - to send the funds without the private key, that leaves yourself as the only likely candidate who sent the 0,2 bitcoin.

Possibly you were performing another action like exchanging bitcoin for an altcoin using Shapeshift and you didn't (yet) correlate that event with the 0,2 transfer.

I think his computer is compromised. I had a guy I know tell me today he had the same happen to him. He created a paper wallet from bitcoinpaperwallet, generated a key in offline mode. He printed out the key and deleted all traces off it. Went back online, sent the money and within 1 minute it was all gone. Someone could easily create malware to monitor for such a key generations and then send it home once the internet is back up.

For me personally, I feel its safer on an exchange because you have 2-factor auth...
Exchanges have gone down in the past, but its rare


What is a 'Satoshi'? I am aware that Satoshi Nakamoto is the author of the paper that originated Bitcoin and the creator of the original bitcoin client. However, I often hear the term Satoshi as if it was a monetary unit.

What is a Satoshi?

A Satoshi is the smallest fraction of a Bitcoin that can currently be sent: 0.00000001 BTC, that is, a hundredth of a millionth BTC. In the future, however, the protocol may be updated to allow further subdivisions, should they be needed.

Further examples of units

1 BTC = 1,000 mBTC (millibitcoin)
1 BTC = 1,000,000 μBTC (microbitcoin)
1 BTC = 100,000,000 Satoshis
1 mBTC = 100,000 Satoshis
1 μBTC (microbitcoin) = 100 Satoshis

If you need formula
108 Satoshis == 1 BTC
or in Python
def btc2satoshi(btc: float) -> int:
  return int(btc * 10**8)

BTC = 1.0
print(btc2satoshi(BTC))


What are the weakest cryptographic guarantees in Bitcoin? I read in this Github pull that Bitcoin relies on weaker cryptographic guarantees than SHA256.

What are the weaker cryptographic guarantees being referred to?

Could it be that RipeMD is 160 bits? ... or is it something else? Perhaps in the ECC curve itself?

This doesn't directly answer your question, but in ECDSA, if the private key is close to one of the 768 rendezvous points on the secp256k1 curve, it is considered a weak private key and can be compromised. See this BitcoinTalk thread. In practice, this isn't a huge threat as long as you use a good source of randomness since the space around those rendezvous points is a miniscule fraction of the total keyspace.


Smart Contract Execution If I have a Blockchain which consists of few smart contracts. Let's say that the Blockchain consists of 2000 blocks. When a new block is added to the Blockchain then does the smart contract runs on all 2000 + 1 blocks or only the last one?

It would be running on the blockchain.. which is a chain of blocks. So really its running on the whole blockchain network regardless of how many blocks there are.

Although the smart contract never existed until the block which you deployed the smart contract on.
For example you deployed a smart contract at block 1500 and right now its block 2000. If someone forked that blockchain at block 1499 your smart contract would never exist. But if they forked at block 1500 then your smart contract would exist on the new forked blockchain (look up the Ethereum classic fork.
I hope this clears it up for you.


in the white paper you have 2 sides : attacker and honest node What does it mean that there is either the attacker or honest node.
This means that within 10 minutes either attacker or honest node mines a block but what about neither OR another side ? How could this be interpreted ?

Does it make sense or what is interpretation of neither attacker nor honest node succeed in finding a block ? What would that mean for the consensus rule that there is a third side ?

This is open to interpretation, but this is how I see it.

Honest Nodes

Accept the blockchain history and do not try to retroactively modify it.

Attacker Nodes

Nodes that try to change data in past blocks and recalculate the proof of work. Note:

  To modify a past block, an attacker would have to redo the
  proof-of-work of the block and all blocks after it and then catch up
  with and surpass the work of the honest nodes. See Bitcoin Whitepaper pg. 3

51% Attack

The reason this is important is because, theoretically if more than half of the nodes on the network are trying to attack the blockchain, they might succeed and effectively gain control because collectively, they can compute the proof of work faster.

  Does it make sense or what is interpretation of neither attacker nor
  honest node succeed in finding a block ? What would that mean for the
  consensus rule that there is a third side ?

I'm not sure what exactly you would define as a "third side", but if, for example, there was a third group that was not "honest" it would be considered another attacker. Now, if the third group is not attacking the blockchain in the same way as the other attacker group, that could split the chain into 3 different forks: 1 "honest" chain, and 2 different "compromised" chains.


How can you buy XRP with BTC if you don't have any XRP? As far as I know the best way to buy XRP for BTC is from the Ripple client ... which requires some XRP to begin with.

If you own 0 XRP and some BTC, how can you get started acquiring XRP?

You can buy some Ripple (XRP) from Bitstamp. At the time of writing, they were selling 50 XRP / 1 USD.

you can also purchase XRP on website : www.ripplewise.com


How to obtain the private key of an Armory wallet? I have a paper backup, a digital wallet backup and all the passwords: how do I retrieve the private key for a watch-only wallet so I can send some coins out of it (created in armory and imported into, for example, blockchain.info)?

If that's not possible, is using passphrase from within armory the only way to send coins out of an armory watch-only wallet?

This is how you obtain the private key for an Armory wallet:

In Armory-Qt, click on Wallet Properties (or in the newer versions, double click on your wallet to open your Wallet Properties), then click Backup this wallet>See other backup options>Export Key Lists then click the button Export Key Lists. Enter your passphrase and Armory will show your wallet's list of public addresses and private keys. If you are --offline or didn't download the blockchain, the list may be empty (Armory thinks no addresses were used), but checking "include unused" will allow you to see the entire list. Note that a watch-only copy of a wallet uses the same private key as the original wallet it was created from.

This is useful if you want to send coins from an Armory wallet without using Armory, for example from an armory wallet address you imported into blockchain.info. In order to do so, you need to enter into the chosen service the private keys to the wallet you want to send from. In the case of BlockChain.info, the key it accepts is the one in PrivHexBE format, after you remove the spaces.

Word of caution: after you enter a wallet's private key into any online service that wallet is no longer secure. You should considering transferring all the coins it holds out - do not use that wallet again.

worked for me in Armory 0.93.3 on a Mac:

Backup this wallet >

See other backup options >

Export Key Lists


Decimal points in bitcoins I would like to know if there are more than one decimal in bitcoin numbers. While playing online slots with Bitcoin, I hit a big win for 100900 x 5 credits totaling 5207.17.The total was displayed as 5,207.17 Please explain to me how this is supposed to exactly read.

Thank you

A Bitcoin is divisible down to 8 decimal places (that is x.xxxxxxxx).

There are 8 decimal places behind the decimal point to a bit coin.
There are only 2 decimal places behind the decimal point, legally allowed to equate the Australian dollar.
There fore if your rates notice not invoice depicts the R.I.D rate in dollar as
00.00466450
X        Deliberatly Under valued home to 1/3 C.I.V:-
$333k
= $0
And 1 million bit coins 1,000,000. equals $1.
0.00 is netural  and any  further decimal place is a negative , a  negative  x a positive is always a negative figure .
Bit coins another sad furphy


Segfault when attempting to run cgminer on ubuntu 10.04 I recently wanted to try mining some crypto-currency, and litecoin seemed to be a good way to start since it doesn't require too specific hardware.
However, running cgminer after install (which was completed without errors) ends in Segfault.

Machine configuration :
Ubuntu 10.04
ATI Mobility Radeon HD 4500 series

I might be missing some packages, since no tutorial has the same list, but since the install didn't complain, I assumed everything was OK.

The steps used so far :

got the cgminer-3.7.2 x86_64.tar.bz2 (seems to be the last that supports GPU mining)
installed AMD APP SDK 2.9
mkdir amdapp_2-9

cd amdapp_2-8
tar -zxvf ~/Downloads/AMD-APP-SDK-v2.9-lnx64.tgz
sudo ./Install-AMD-APP.sh
sudo reboot

installed ADL SDK 6.0

mkdir ADL_SDK
cd ADL_SDK
mv ~/Downloads/ADL_SDK_6.0.zip .
unzip ADL_SDK_6.0.zip
cp include/* ../cgminer/ADL_SDK

installed cgminer

CFLAGS="-O2 -Wall -march=native -I /opt/AMDAPP/include/" LDFLAGS="-L/opt/AMDAPP/lib/x86_64" ./configure --enable-opencl --enable-scrypt
make
make install

did some exports

export DISPLAY=:0
export GPU_USE_SYNC_OBJECTS=1
export GPU_MAX_ALLOC_PERCENT=100

And finally, I wanted to test via

./cgminer -n

That failed miserably, as all I got was a Segfault.

Here is the result of the configuration step :

cgminer 3.7.2
------------------------------------------------------------------------

Configuration Options Summary:

libcurl(GBT+getwork).: Enabled: -lcurl
curses.TUI...........: FOUND: -lncurses
OpenCL...............: FOUND. GPU mining support enabled
scrypt...............: Enabled
ADL..................: SDK found, GPU monitoring support enabled

Avalon.ASICs.........: Disabled
BFL.ASICs............: Disabled
KnC.ASICs............: Disabled
BitForce.FPGAs.......: Disabled
BitFury.ASICs........: Disabled
Hashfast.ASICs.......: Disabled
Icarus.ASICs/FPGAs...: Disabled
Klondike.ASICs.......: Disabled
ModMiner.FPGAs.......: Disabled

Compilation............: make (or gmake)
CPPFLAGS.............:
CFLAGS...............: -O2 -Wall -march=native -I /opt/AMDAPP/include/
LDFLAGS..............: -L/opt/AMDAPP/lib/x86_64 -lpthread
LDADD................:  -lcurl   compat/jansson-2.5/src/.libs/libjansson.a -lpthread -L/opt/AMDAPP/lib/x86_64 -lOpenCL    -lm  -lrt

Installation...........: make install (as root if needed, with 'su' or 'sudo')
prefix...............: /usr/local

I realize this question is 8 months old but this information may be of value to others seeking a resolution to a segfault as there seems to be no information available at all on the problem. The APP SDK seems to be incompatible with ATI legacy drivers.

The APP SDK is probably causing the segfault. I have a HD4770 and it was working with a pre-compiled copy of cgminer.

When I installed the APP SDK to compile sgminer everything seemed ok, sgminer compiled ok

However is gave me a segfault and when I tried to run cgminer that was working it too gave me a segfault.

After 3 days, I have been unable to restore things the way they were and undo the changes the APP SDK install made.

I fear that a complete OS reinstall will be my only solution.

Also. the flags '-march=native' enables special cryptographic instructions that are incompatible with AMD CPU's before Bulldozer.

before the cflags command u forgot "./autogen.sh --enable-scrypt --enable-opencl"

those two links were very helpful to me :

https://litecointalk.org/index.php?topic=2924.msg44380#msg44380

https://litecointalk.org/index.php/topic,2542.0.html


Anonymous Domain Registrations Can anyone recommend a domain registrar which will both accept BTC and allow anonymous registrations?

I'm aware of this list:

https://en.bitcoin.it/wiki/Trade#Domain_Name_and_DNS_Hosting

But was looking for recommendations as much as information.

I use IT Itch. They allow both anonymous domain registration and bitcoin payments. I also use them for my VPS web hosting and I find them pretty fantastic.

But be aware that some domain names can't be purchased anonymously. For instance, some domain registries require things like tax numbers or proof of citizenship, so make sure you choose a domain that supports anonymity (like .com, .net).

I work at a domain registration company who are about to offer anonymity with bitcoin funded domain registration.

We have been accepting Bitcoin for almost a year. We are about to set up this new service that will allow our customers to register domains using Bitcoin and remain anonymous to ICANN, Whois databases and the general public.

We are currently in the pre-alpha stage of developing the service, but will soon be shipping it out. In terms of answering your question, our service will allow you to remain anonymous online because we will complete the compulsory ICANN-mandated registration form with our own information. To all intents and purposes, we will be your domain trustee.

Of course you will be in complete control of the domain, and we will sign a contract assuring you of your ownership. But any information which you give to us will not be stored publicly and will be treated with absolute confidentiality.

I do not know of any other registrar currently who offers this service, but I'm sure someone will be able to point you in the direction of some others. We will announce the release of the service on our website, keep an eye out for when we go live.


Can I do a replay attack to spend my testnet bitcoin on the mainnet? I think it would be possible to create a legitimate seeming transaction on the Bitcoin testnet that the Bitcoin mainnet would accept.

I've read a bit about the ETC replay attacks, and it seems like it would be impossible, since there was never any hard fork to create testnet.

https://medium.com/@timonrapp/how-to-deal-with-the-ethereum-replay-attack-3fd44074a6d8

But I'm not sure about this. Has anyone successfully done it?

Do you know a good reason why it 100% would not work?

The answer is no, you can't, because the two chains don't share a common history.

Internally, transactions don't spend "from" an address. Instead, they refer to a specific output created by an earlier transaction which they consume.

In order for a replay attack to work, that same transaction whose outputs are being spent must exist on both chains. This is only possible when the two chains share a common history, and the earlier transaction either occurred before the fork (so it exists on both sides), or it itself was already a replay.

As soon as a transaction's history is not identical - meaning it consists of the same transactions leading up all the same to the same coinbase outputs that created the coins - they cannot be replayed, as the txids of the inputs will not exist in both chains.

I think it would be possible to create a legitimate seeming
  transaction on the Bitcoin testnet that the Bitcoin mainnet would
  accept.

no


did Satoshi anticipate large pools? Is there any statement about the design of Bitcoin alluding to dealing with large pools controlling a good part of the network? while it is true that pools can compete and people can "vote" by switching pools, the statements handed down regarding major decisions affecting the Bitcoin system seem eerily central and authoritative. was this kind of power considered initially and is thus balanced now, or was Bitcoin intended to be strictly p2p initially?

There's a conversation on cryptography@metzdowd.org shortly after the release of the Bitcoin paper that touches on this tangentially:
James A. Donald - Sun, 02 Nov 2008

For transferable proof of work tokens to have value, they must have
monetary value.  To have monetary value, they must be transferred within
a very large network - for example a file trading network akin to
bittorrent.
To detect and reject a double spending event in a timely manner, one
must have most past transactions of the coins in the transaction, which,
naively implemented, requires each peer to have most past
transactions, or most past transactions that occurred recently. [...]

Satoshi Nakamoto - Sun, 02 Nov 2008

Long before the network gets anywhere near as large as that, it would be safe
for users to use Simplified Payment Verification (section 8) to check for
double spending, which only requires having the chain of block headers, or
about 12KB per day.  Only people trying to create new coins would need to run
network nodes.  At first, most users would run network nodes, but as the
network grows beyond a certain point, it would be left more and more to
specialists with server farms of specialized hardware.  A server farm would
only need to have one node on the network and the rest of the LAN connects with
that one node.

From the word choice used here, a datacenter of machines using a single server to construct blocks is intended. However, many different parties using the same pool server is not contemplated.
Of course, that doesn't mean that pooled mining is wrong - just that it wasn't anticipated.

Yes he did !
Bitcoin is build in such a way that anyone can be a miner, effectively making the world population it's pool.
Also the people with knowledge (technical) will always be on top of it all as with everything in life.
If you somehow manage to use Bitcoin's source code as if it was selfmade then you probably be the boss of Bitcoin very soon until someone else comes up with something better...


Mining new private alt coin derived from litecoin I have created an new private altcoin from litecoin(build on linux ubuntu) and it is working correctly. Now i want install any miner application (like cgminer) with CPU mining(for test). I have installed cgminer (Older version which support CPU mining) but miner not running and it always showing "No server could found exiting". Also i am confused with following doubts,

Can we mine coins with single node(Its my own private coin and it is installed only my pc)?
cgminer showing scrypt disabled(because its need OpenCL). Is scrypt only work with GPU?

Thanks In Advance,

Mufeed

I'm not the most familiar with altcoins, but...

Yes, I'm pretty sure you can. Because basically you're mining blocks using the info from your node, so I don't see any harm. I've never tested this, because i'm too lazy and I don't see a point in making my own altcoin. So don't quote me on this.
Scrypt doesn't require OpenCL. If i'm not mistaken, OpenCL is mainly used to allow GPUs to mine.


Am I being ripped off? I am business man but I am not tech savvy.  Recently, I have needed to use bitcoin for a few business transactions and so I asked my IT guy to buy the bitcoins for me and take care of the transactions.  He told me that due to various fees the $2000 dollars that I gave him only amounted to $1,400 after said fees.  My question is: am I being ripped off?

Fees usually are around 1% for each side (the person trading fiat for Bitcoin and the person trading Bitcoin for fiat).

Exchanges which directly trade with the user usually have different prices for selling and buying, usually 2% to 3% of by each other (1% to 1.5% from the middle so you're slightly worse off than trading with another person through an exchange).

However, there are exchanges which take much higher fees. Many charge extra depending on the payment option chosen on the fiat side. The most expensive serious one I was able to one has a 10% fee when paying via PayPal and a few weeks ago, someone on this site asked a question about how an exchange with a ludicrously high fee (it was around a third of the value exchanged, like in your case) could exist. Well, its existence of course doesn't mean that it's used a lot ... or at all.

You can easily find exchanges for your country by selecting it here and looking for the fees of a few exchanges listed for it.

Check your transaction id on https://blockchain.info/.  Take those number of bitcoins and multiply by the price you see on https://tradeblock.com/markets/index/ (depending on the date of the transaction).  That would be the fair value of what you sent and what they received.


Why doesn't Butterfly Labs use their ASIC machines for their own mining process? Butterfly Labs produces ASIC hardware for bitcoin mining. I guess it is cheap for them to produce a 1500 Ghash/sec machine. They could have many of them for a very reduced price. Why, instead of selling them, do not they use them for their own mining so they get more money?

They are choosing a less risky option.  By selling now, they get the price of the machine no matter what happens to the BitCoin economy.   They are defining their core competency as being in the hardware business not the cryptocurrency business.

The same could be said for people selling pickaxes during the Gold Rush.  Why not use the pickaxes to mine gold?  They got the money for the pickaxes up front, then they were out of the picture.  They didn't have to choose a place to prospect and worry about how long the gold would last. They chose to be in the pickaxe business not the mining business.  Incidentally, during the Gold Rush it was these peripheral entrepreneurs that made much more than your typical gold miner.

Consider also that BFL may be using the initial pre-order capital to invest in and use infrastructure prior to actually shipping.  Unless you are purchasing one of the really, really big rigs, by the time you get your ASIC miner, it will be relatively worthless.  Similar to what a cpumining is.

This is really a type of ponzi scheme.   Before you get angry at me for saying it, really think about it...

Soon, bitcoin mining will only be really profitable for those who really have infrastructure... or for the mildly curious who don't care about making profit.


Best way to obtain/earn bitcoins I would like to know what bitcoin enthusiasts and experts would suggest me for earning or mining my first BTC. I own some BTC but the idea of mining is a lot more exciting.

I read some articles but it seems to me that I have already missed the big "boom" of mining year or two ago, when you could mine with GPU or even CPU. Some people say, that investing into ASIC miner is a non-sense because it takes a long time to deliver and during this time the difficulty of network increases and when the ASIC miner finally arrives, you are satisfied when you don't loose money at the end.

So my question is how do you mine? What is the best way to earn few bitcoins and don't loose money?

This is quiet exciting article that I read months ago, which turned out in great ROI.

EDIT: I would like to know, if it is good time to start mining for someone who haven't done that yet.

Mining was never supposed to be profitable. And it's a derivative of bitcoin which is already risky speculation.

Don't add the extra, annoying risk-without-an-upside of wondering whether BFL will ship your machine in time to turn a profit. Even they state that there's no guarantee that their machines are profitable.

If you are sure that the price of bitcoin will go up, or even if you're not sure and you just want to take a bigger risk with more money, just buy more bitcoin.

If you do want to mine, one way to do so without a capital investment is to use a contract mining site such as cex.io or cloudhashing.com. With cex.io at least you trade ghash/sec capacity allowing you to sell you ghash depending on price vs deifficulty or whatever metric you choose to use.


How to get the historical data from bitfinex.com with out a limit? I am drawing a chart using the data pulled from bitfinex.com via a simple API query. As the result, i will need to render a chart which is going to show the historical data of BTCUSD for the past two years. Docs are available right here: https://bitfinex.readme.io/v2/reference#rest-public-candles Everything works fine except the limit of the retrieved data.

This is my request: https://api.bitfinex.com/v2/candles/trade:1h:tBTCUSD/hist?start=1514764800000&sort=1

The result can be seen over here or you can copy the request to the browser: https://docs.google.com/document/d/1sG11Ro0X21_UFgUtdqrlitcCchoSh30NzGCgAe6M0u0/edit?usp=sharing

The problem is that I receive candles for only 5 days no matter what dates or parameters I use. I can get more candles if i add the limit parameter to the string. But still, I can not get more than 1100-1000 candles. I even get the 500 error from the server:

Server error: GET https://api.bitfinex.com/v2/candles/trade:1h:tBTCUSD/hist?limit=1100&start=1512086400000&end=1516233600000&sort=1 resulted in a 500 Internal Server Error response:\n ["error",10020,"limit: invalid"]. What should be the valid limit? There is no such information in the docs.

How can I get the desired amount of data for the two years period of time? I do not want to break my query down into smaller pieces and go step by step. It will look ugly.

My suggestion is to get data by fragments for example:

Jan 1 2017 - July 31 2017
Aug 1 2017 - Dec 31 2017

Then merge on your code


What is the best way to restore an old Multibit wallet to the new version (and also different OS)? My files from Feb 2014 (on a dusty old usb) are as follows, all in a directory called MultiBit.
directories:

multibit.log (containing a log file)
multibit-data, containing four backup directories including key-backup, which itself contains two files like multibit-201402xxxxxxxx.key
and five files: checkpoint, info, properties, spvchain, wallet  (all preceded by multibit.)

It seems the “multibit” prefix changed to “saving” after 0.5.13. Also I have no “wallet words”, only a password, so I guess that changed too.

My thought is to use the import private keys procedure given in Multibit support. This would get around a new Multibit install asking for the wallet keys with the restore wallet procedure. And possibly issues with using a new OS too (Linux).

But:

1) Which multibit-201402xxxxxxxx.key file should I use,  the most recent, or both?  Will this work with my old files; should I change the prefix to “saving”?

2) Should I instead install some early Multibit version and use restore wallet from within the program? In which case can I tell what version I had in 2014 from my log file (or otherwise)?

3) Possibly not relevant, but I’m not sure if my files are from running a Multibit backup, or just manual copying. There is no .exe files in there, but they were created under Win (98 I think).

Note this question Help retrieving my old wallet, is similar, but doesn’t ask about importing private keys, among other things.
Also this question Transferring bitcoins out of an old multibit wallet, has a brief comment by the OP they managed to import their private keys, but not how this was done.

Not massive value in there but I’d be very grateful for advice.

Open a wallet on the block chain.com site and use your private keys there to restore your wallet


What is the best method for creating a paper wallet? I am looking to move some of my bitcoins from cold storage to a paper wallet.  I have heard that metal stamping is one of the better long term strategies since paper can burn or fade.  Any other suggestions?  Thanks in advance - Kristine

Here are a list of my best practices for creating a paper wallet.

Generate all keys on an offline computer system, this ensures that you are not using an online system that could be sending your keys across the internet.
Verify the integrity of the code as well as the integrity of the author, things to check include MD5, SHA1 sums and that author is a reputable contributor to the community.
Ensure the integrity of the host system being used to generate the keys if your system is compromised your keys could be as well.  To mitigate against this I often use a LiveCD based operating system.
The wallet should not be stored on a live computer system until the fund are intended to be spent.
The wallet should never be displayed, exposed, or photographed and when possible BIP38 encryption should be enabled providing an additional layer of security.
Ensure fully random sources of entropy are being used during private key generation, information/randomness should never be provided by humans (I.E. brainwallets).
Paper wallets should never reuse addresses, and will only store one keypair per wallet.  When spending remember all funds need to be removed from the wallet at that time, many have lots coins due to improper transaction generation which can spend the remaining balance in the form of a fee.
Optional: I prefer to store the paperwallet inside of a tamper evident device, this will ensure that no one else has had access to your private keys (thus protecting them from being stolen)
Optional: Multiple backup locations of the paperwallet all protected and stored using the same techniques, from a backup perspective I am never comfortable unless I have 3 copies stored in at least 2 different physical locations.

metal stamping on metal that is not susceptible to rust

like gold aluminum etc.

other main risks are loss of funds and theft of funds

loss can happen because the damaged program can have error and generate bad address. the spendability should be tested before with small money.

theft can happen because the program can create not random but known to attacker addresses. this way the attacker can steal funds once user top up the insecure paper wallet.


how can I insert an arbitrary sha256 hash into the blockchain? If I want to prove that I wrote a particular document before a certain point in time, it would be sufficient to generate the sha256 hash of the document and somehow arrange for that hash to appear in the blockchain.

Is there an easy way to do that simply by sending a transaction and leaving it to the miners to arrange for it to get into the blockchain for me?

One way that occurs to me is that I can treat the hash as a private key (bitaddress.org will tell me the address and private key that corresponds to any given input), and send a Bitcoin to the corresponding address.  Then when I publish the document anyone can go through the same process and see the date of the transaction in the blockchain.

That seems a little convoluted.  Is there a simpler way?  Ideally free, not computationally intensive, and not requiring any special software to make the timestamp or to verify it.

You can encode any arbitrary data using the Bitcoin script's OP_PUSH and OP_DROP commands. For this, however, you would need some custom Bitcoin client, as the standard one does not allow you to send messages like this.

Alternatively, you could just use the hash as a part of the generation of a Bitcoin address and store it in the Block chain by destroying one satoshi on it.

There should be a topic covering encoding of any data into the Blockchain somewhere on this StackExchange, so you can also have a look at that.

There is no way to attach meta data to the block-chain without forming an alternate chain, which as ThePiachu pointed out requires a modified client. However, you could

Generate a wallet
Send 1 BTC to that wallet
Add both the public bitcoin wallet address and the block of your 1 BTC deposit
Use the private key of the Bitcoin wallet to sign the article contents

You can now prove to third parties you authored the document by sending 0.01 BTC to interested parties.


BTC that i received 2 days ago are missing, how come? I received 0.8 BTC 2 days ago, transaction was confirmed and i saw the money in my wallet, now i just log in to my wallet and the money dispersed include the confirmation from my transactions history. What that means? PLEASE HELP.

Transaction ID is:1CbZ3neNZxgfXzgswQpWJuHLGxMDQBaSVq

Maybe someone was monitoring your bitcoin wallet. You should enable 2 factor authentication to increase the security of your wallet. Furthermore, some transaction needs at least 3 confirmations before the proposed money enter your bitcoin wallet finally. Some scammers may use this method to collect money from their victims and cancel the transaction before all confirmations were made.  So please be careful.


How are bitcoin transactions and the blockchain transferred over the internet? So I have several specific question connected to this topic and I'm aware of the conceptual answers and I'm only interested in the technical details (with programming terms and concepts as I'm a developer).

My questions are:

If I'm sending a transaction from my wallet application (e.g. electrum), what does it do under the hood? Does it use the HTTP protocol or something else? Or not even use TCP but UDP instead?
How does the miners "listen" to transactions? Do they listening on some port? Is there any generic protocols for "listening" like this?
When a miner mines a block how does he/she broadcast it to the network? Is it the same as sending a transaction from my electrum wallet?

The Bitcoin P2P network

The Bitcoin P2P network is a randomly-wired gossip network. This means that all nodes make arbitrary connections to other peers (using various ways to discover new addresses) using a custom TCP protocol, usually using port 8333. Typical nodes create 8 outgoing connections, and if publicly reachable, accept up to a few 100 incoming connections.

It being a gossip network means that nodes send messages to each other of the form "do you have block with hash X" or "do you have transaction with hash X", after which the peer can respond by asking for the full transaction or block. Simplified, this means that eventually every node learns about every block. The protocol is bidirectional - it doesn't matter who connected to whom; both peers will announce if they have something they don't know the other side already has as well.

Not all network nodes are reachable. Some only make outgoing connections. Sometimes setups are used where someone runs a publicly reachable node, and then runs a second private node that only connects out to their own public node, thereby giving some extra privacy and reduced attack surface.

Not all network nodes validate the blocks and transactions they see and pass on. Nodes that do are called full nodes.

Miners (or at least mining pools) run nodes like this, picking up transactions their nodes learn about, assembling them into candidate blocks, hashing to find a nonce, and if they succeed, broadcast the resulting block out to their peers using the same P2P network. Miners in this way are not special - people don't directly submit things to miners.

Since recently, an extension to the protocol is used to relay blocks much more efficiently, called Compact Blocks. It makes use of the fact that most nodes will already have most of the transactions that are added to a new block.

Specialized relay networks

Additional networks exist of groups of nodes that use specialized protocols to very quickly interconnect nodes. One such protocol is FIBRE, which is in fact UDP based and makes heavy use of error correcting codes to avoid roundtrips.

Electrum

Ironically, Electrum in your question is a bad example. Electrum is not a P2P client (not even a light one). Instead, it uses a client-server architecture, and connects to specialized servers (which are themselves Bitcoin P2P nodes however).

Bitcoin works inline with the standard internet protocols we have. When you make a transaction from your wallet application, your wallet provider which hosts a bitcoin core application will submit the transaction on your behalf and add it to its version of the blockchain. Other miners will then begin to verify(mine) that transaction to make sure that the transaction is legitimate. After the Proof of Work is completed by a particular miner, the mined block is added to the longest most authoritative blockchain. This is then propagated across the network so that all the bitcoin core applications can keep themselves updated with the blockchain. The bitcoin core comes with a JSON RPC which can be used to interact with the blockchain to explore the blocks of transactions. You can look at the API documentation
here


If bitcoin is decentralized then who keeps track of computers in network I keep hearing that bitcoin is decentralized i.e. no single entity owns it. And each computer which is part of bitcoin network keeps the copy of ledger.

My question is who keeps track of all computers in bitcoin network? For e.g. if a transaction happens, who sends (or broadcasts it) to network so all can keep a copy of it?

Doesn't it make it centralized?

Nobody keeps track of all the computers in the network, or at least not as part of core network functionality.  There are sites that attempt to track nodes (such as https://bitnodes.21.co/), but they are not needed in order for Bitcoin to function, and are not utilized by nodes.  Each node only knows about the nodes it is connected to.

Therefore, to broadcast a transaction, a node simply sends it to the nodes to which it is currently connected.  Those nodes, in turn, relay the transaction to all their connections who all do likewise.  This means a transaction can reasonably be seen by all nodes in a very short amount of time (a few seconds or less).

For information on how nodes find other nodes to connect to in the first place, there's already some great answers here:

How do Bitcoin clients find each other?

The transaction should not be considered to have happened until it has been calculated (verified) by the network. There is no need to keep track of the computers. Anyone can claim to make a transaction. That is why any claim to make a transaction needs to be verified by other nodes!


Could Bitcoins (or any other blockchain based cryptocurrency) feasibly ever be used for purchases that need to go through fast? Today, one of the problems with cryptocurrencies like Bitcoin is that it takes quite some time for a transfer to go through and enough confirmations to take place. This really isn't a problem when it comes to inherently slow buying procedures, such as for example ordering something online and receiving it a couple of days later by mail. However, other types of purchases requires a much faster process (for example if you're buying a digital good and want it immediately or if you're buying a physical good and want to leave the store with it right away), and as it is now, cryptocurrencies don't seem suitable for these as it simply takes to long time to confirm the payment and defend against double-spending.

Is this a problem that is inherent with the Blockchain technology, or could purchases go through much, much faster (at least so that they can compete with credit card transfers) given enough resources or faster computers in the future?

Blockchain technology, at least without accepting central party that controls access to the chain, inherently has slow blocks, or strong centralization incentives.

The reason is that blocks need to propagate much faster than the block interval time. If they don't, miners who are further away from the majority of the hash power are put at a disadvantage.

To explain this intuitively, notice that when miner A creates a block, he can start working immediately on a successor, while another miner B first needs to wait until A's block reaches him. During that time, B works on an outdated chain, and is unlikely to produce a block that ends up being accepted. The closer A and B are located together, and the more trust they have in eachother about not lying about new blocks they produce, the more they start to behave like a single party.

Thus, the ratio of block interval and propagation speed across the network is a means for keeping the advantages of larger miner groups over smaller ones in check.

This does not mean that the bitcoin currency is inappropriate for fast payments. They just require another mechanism than on-blockchain transactions. For example, look at the proposed Lightning network, which allows many small transaction between parties to occur, while only settling the resulting balance on the blockchain. It requires more trust, but has higher performance and convenience, and lower costs.

There's no inherent reason why it couldn't be done that way, but then there's no inherent reason why you couldn't charge an electric car wirelessly.

The present time between blocks represents a compromise: set the block time too high, and you'll inconvenience users. Set it too low, and blocks take too long to propagate around the network, which means that nodes won't mine efficiently. The existing block time is probably too long.

It's not so much that it couldn't be done, it's just that there are a lot of stakeholders with a lot of different ideas about what the block interval should be, and this requires agreement from a lot of people.

@Jakub Jagiełło discusses the mechanism that adjusts difficulty so that the actual block interval matches the target block interval, but the target block interval could be adjusted deliberately.


How to convert Stellar Lumens into USD I have created Stellar account. I have to transfer lumens to other account in USD.
How can I convert lumens to USD?

On stellar site, it is mentioned that we have create trust line with provided Anchors. But while creating thrust line it is always saying "changeTrustLowReserve".

Please suggest any inputs if you have.

What I'd suggest is to convert it to USDT on Bittrex or Bitfinex and then proceed to withdraw USDT to your bank account.

Another alternative is to convert it to BTC and withdraw it in cash using Localbitcoins.


How to get all time high and low price of bitcoin and other altcoins I am fetching current price of 500 coins from coinmarketcap.com using their api for some crypto research. I also the all time high and low of these coins to see how much has the value appreciated/ depreciated since all time high / low.

Does any one know where I can find the all time high and low of the coins.
Could't find any api/website offering the same. Its okey even if its a website because, I just want fetch the data once. I can update my record if the coin hits a new high / low after that using live data from coinmarketcap.

There is a special preset for ATH on coinpaprika.com


What can make an unconfirmed transaction (0-conf) an invalid one other than Double-spend? It's obvious that inputs that already been spent will make the transaction invalid (pure double-spend scenario), but is there's anything else that could make a tx invalid?

Invalid inputs?
Invalid signature or other data?

For example, if I have a program that manages a wallet (keypairs are exclusively managed by it, and not by any human, and it's source is public) and it sends payments, can the recipient be insured that even 0-conf tx will be eventually valid and processes?

There are a lot of things that can make a transaction invalid. Note that an invalid transaction cannot be confirmed as the block that contains it would also be invalid, thus there is no such thing as a confirmed or unconfirmed invalid transaction.

Things that make a transaction invalid:

Spending an input spent by another transaction that is confirmed
Spending an input that does not exist
If signatures are required and must be valid, providing an invalid signature
If some data must hash to something provided (e.g. pubkey hash, scripthash), providing a piece of data that does not hash to the correct hash.
In general, any input script not validating to true
Negative output values
Sum of the output values is greater than the sum of the input values
A coinbase transaction outside of a block
A coinbase transaction that is not the first transaction of a block
A coinbase transaction where the sum of the output values exceeds the block reward

There's probably a few more that I missed, those are just a few that I can think of off of the top of my head.

  can the recipient be insured that even 0-conf tx will be eventually valid and processes?

No. There is no guarantee that an unconfirmed transaction will eventually confirm, even if it is valid. Note that transactions do not become valid; they are either valid or invalid upon creation.

Invalid inputs? Invalid signature or other data?

First of all if any of the above parameter is invalid then the transaction wont be created on first place. The transaction will be discarded.

To create transaction :

  1) Valid Vin and Vout that will be determined by algorithm itself

  2) Creating raw transction using txid

  3)Signning the transcation (which will be needing your pvt key)

  4)Sending the transaction to mempool for verification.

If you manage to reach step 4 then your transaction will possibly get confirmed but for sure  it will be sent to mempool. Now its over the miner to confirm or not confirm your transaction.

If you want to make your unconformed transaction as conformed:
one can redo the same transcation with little more transaction fee. If miner is to mine your particular transaction and make it confirm than he needs to confirm all of your earlier tranasctions as well.

Now to answer your question about making your unconformed transaction as invlaid you dont need to do anything for that, after some period of time for your transaction in being in mempool, still  unconformed, get revert back to your wallet address


What Happened 12/30/17 Last Recieved Transaction into Bitcoin Core Wallet I have found a different receiving address within my wallet that is not mine... at least I did not create it. It seems to me that all of my transactions are now going to this new address instead of into my wallet. is there anything that I can do to recover these missing or stolen transactions?

In the debug log file on 1/1/18 I found that Bitcoin 12.0 was restarted and this shortly after, among other things:

InitParameterInteraction: parameter interaction: -whitelistforcerelay=1 -> setting -whitelistrelay=1

Seems like someone got in and redirected my transactions. Am I paranoid or did I just get robbed?

I have found a different receiving address within my wallet that is not mine.

If it is in your wallet then by definition it is yours (unless you added it as a watch-only address which I doubt in this case).

It could be a change address, automatically generated by your wallet to receive change from another transaction you sent. Without more info it is hard to say though.

The -whitelistforcerelay=1 parameter is nothing to worry about, that only relates to the relay of blocks between peers and is nothing to do with your transactions or wallet.

usually if your bitcoin was send to the wrong address, you can try undo it while it in the mempool but if it already added to the blockchain then u cant undo it.

this may causes by a virus i used to have where i copy an address and it just made an completely random address.


Does a full Bitcoin API reference exist with examples? I know that all Bitcoin API methods are listed on the wiki: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list. However, some of the methods are very poorly documented.

F.e. the lockunspent method is only documented as taking the parameters <unlock?> [array-of-objects]. No clue about what type of objects. And there are more examples like this.

Is there a good API reference that specifies what parameters are expected and what result they give back?

This would so much lower the bar for new developers!

Here is a complete API reference that has a pending pull request for bitcoin.org

  http://bitcoindev.us.to/en/developer-reference#bitcoin-core-apis

More information:
https://bitcointalk.org/index.php?topic=511876.0

One of the recent additions to the API is:

bitcoind getnetworkhashps

This is not documented in the wiki to which your question links.

While the source code is indeed the ultimate reference, in practice, bitcoind help is the shortest path to most answers.

Here is the entry for lockunspent:

root@blockchainer-test:~# bitcoind help lockunspent
lockunspent unlock [{"txid":"txid","vout":n},...]

Updates list of temporarily unspendable outputs.
Temporarily lock (lock=true) or unlock (lock=false) specified transaction outputs.
A locked transaction output will not be chosen by automatic coin selection, when spending bitcoins.
Locks are stored in memory only. Nodes start with zero locked outputs, and the locked output list
is always cleared (by virtue of process exit) when a node stops or fails.
Also see the listunspent call

Arguments:
1. unlock            (boolean, required) Whether to unlock (true) or lock (false) the specified transactions
2. "transactions"  (string, required) A json array of objects. Each object the txid (string) vout (numeric)
     [           (json array of json objects)
       {
         "txid":"id",    (string) The transaction id
         "vout": n         (numeric) The output number
       }
       ,...
     ]

Result:
true|false    (boolean) Whether the command was successful or not

Examples:

List the unspent transactions
> bitcoin-cli listunspent

Lock an unspent transaction
> bitcoin-cli lockunspent false "[{\"txid\":\"a08e6907dbbd3d809776dbfc5d82e371b764ed838b5655e72f463568df1aadf0\",\"vout\":1}]"

List the locked transactions
> bitcoin-cli listlockunspent

Unlock the transaction again
> bitcoin-cli lockunspent true "[{\"txid\":\"a08e6907dbbd3d809776dbfc5d82e371b764ed838b5655e72f463568df1aadf0\",\"vout\":1}]"

As a json rpc call
> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "lockunspent", "params": [false, "[{\"txid\":\"a08e6907dbbd3d809776dbfc5d82e371b764ed838b5655e72f463568df1aadf0\",\"vout\":1}]"] }' -H 'content-type: text/plain;' http://127.0.0.1:8332/

Below is a list of all methods you can call on bitcoind, for reference:

root@blockchainer-test:~# bitcoind help
addmultisigaddress nrequired ["key",...] ( "account" )
addnode "node" "add|remove|onetry"
backupwallet "destination"
createmultisig nrequired ["key",...]
createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,...}
decoderawtransaction "hexstring"
decodescript "hex"
dumpprivkey "bitcoinaddress"
dumpwallet "filename"
encryptwallet "passphrase"
getaccount "bitcoinaddress"
getaccountaddress "account"
getaddednodeinfo dns ( "node" )
getaddressesbyaccount "account"
getbalance ( "account" minconf )
getbestblockhash
getblock "hash" ( verbose )
getblockchaininfo
getblockcount
getblockhash index
getblocktemplate ( "jsonrequestobject" )
getconnectioncount
getdifficulty
getgenerate
gethashespersec
getinfo
getmininginfo
getnettotals
getnetworkhashps ( blocks height )
getnetworkinfo
getnewaddress ( "account" )
getpeerinfo
getrawchangeaddress
getrawmempool ( verbose )
getrawtransaction "txid" ( verbose )
getreceivedbyaccount "account" ( minconf )
getreceivedbyaddress "bitcoinaddress" ( minconf )
gettransaction "txid"
gettxout "txid" n ( includemempool )
gettxoutsetinfo
getunconfirmedbalance
getwalletinfo
getwork ( "data" )
help ( "command" )
importprivkey "bitcoinprivkey" ( "label" rescan )
importwallet "filename"
keypoolrefill ( newsize )
listaccounts ( minconf )
listaddressgroupings
listlockunspent
listreceivedbyaccount ( minconf includeempty )
listreceivedbyaddress ( minconf includeempty )
listsinceblock ( "blockhash" target-confirmations )
listtransactions ( "account" count from )
listunspent ( minconf maxconf  ["address",...] )
lockunspent unlock [{"txid":"txid","vout":n},...]
move "fromaccount" "toaccount" amount ( minconf "comment" )
ping
sendfrom "fromaccount" "tobitcoinaddress" amount ( minconf "comment" "comment-to" )
sendmany "fromaccount" {"address":amount,...} ( minconf "comment" )
sendrawtransaction "hexstring" ( allowhighfees )
sendtoaddress "bitcoinaddress" amount ( "comment" "comment-to" )
setaccount "bitcoinaddress" "account"
setgenerate generate ( genproclimit )
settxfee amount
signmessage "bitcoinaddress" "message"
signrawtransaction "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] ["privatekey1",...] sighashtype )
stop
submitblock "hexdata" ( "jsonparametersobject" )
validateaddress "bitcoinaddress"
verifychain ( checklevel numblocks )
verifymessage "bitcoinaddress" "signature" "message"


Windows 7 and paper wallets I was wondering if BTC cold storage or paper wallets can work with Windows 7 and / or Linux Mint? Please advise. Many thanks indeed.

There are a few ways that you can create cold storage.

One possibility is to make a new installation of Bitcoin Core on an offline PC, one that is never connected to the internet. This PC will generate addresses and you can add those as a 'watch-only' address on an online PC to monitor incoming payments.

It is possible to update your offline PC, for example, using a bootstrap.dat file so that it will have the blockchain without ever needing to connect.

This will work with Windows 7 and any platform where Bitcoin Core can be installed including on several versions of Linux.

Paper wallets do not require a computer until you want to import the keys. You can import the public address as a 'watch-only' address or when you are ready to spend your BTC somewhere, you can import the private key.


What are the issues of running lightning daemon with pruning node? Most lightning implementations I came across don't officially support pruned full node.

Why is pruned mode implementation a challenge?
What risk am I taking when I run lnd with pruned bitcoind?

Pruned nodes don't have the ability to make a full index of all transactions in the chain, which makes implementation of tools like Lightning difficult or impossible. There's no risk particularly, a pruned node has the same security properties as a normal one, it just doesn't have historical transaction data necessarily.


Recovering from an old Wallet I have recovered my wallet from an old data file using Bitcoin Core. The wallet has synchronized without issues. I have tried to send BTC to at least two exchanges and neither transaction has completed. After the first transaction (going to the Coinbase Wallet) I waited 10 days and then tried increasing the transaction fee - no change. The returned stats code says "Status: 0/unconfirmed, not in memory pool, abandoned."
I then cancelled that send and tried sending to Kraken and it's still processing after six days. The status code for this one says "Status: 0/unconfirmed, not in memory pool?
Any ideas? Am I just SOL?

As a workaround for the problem that you are facing - instead of using Bitcoin Core to send BTC to your account with the exchange, you might want to try exporting your wallet's private key from Bitcoin Core, then importing the private key to your account at the exchange.  See https://wallet.coinbase.com/faq/ (under 'Can I switch from my existing wallet app like Metamask, MyEtherWallet, etc.?') for information on how this is done with Coinbase.  Then, your BTC will be available in your account at the exchange.


Is there an altcoin that is only feasible to mine by CPU? I'm interested in mining altcoins, mainly to turn some servers into (literal) space heaters, since it's winter. One thing that really interests me is if an altcoin has been designed to only be mineable by traditional CPUs. The big thing I can think of to cause this is large memory requirements. A large memory requirement for hash processing would cause current GPUs to be slower than CPUs (due to the individual "cores" of the GPU not having enough direct memory). It would also cause ASICs and FPGAs to be very difficult to develop to be faster than CPUs, and expensive. This is because you effectively reduce the mining complexity so that it bottlenecks at the memory bus (which is much harder to significantly speed up)

I'm sure I'm not the only one to have thought of such a scheme. Is there an altcoin out there that is designed with this kind of ideal behind mining?

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

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

https://litecoin.org/

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

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

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

There is a Russian coin called Sifcoin that was the basis for Quarkcoin. Because it is inflationary not many coins have been mined thus far (the reward is not decreasing expoentially) and so can be mined with a CPU / standard laptop.


What factors decides the number of tokens to generate? Tron has decided to generate 100B tokens with some initial price? What parameters do these centralised crypto owners consider before deciding the number and price of tokens?

There are no answer to that.
Depends on many things the token creators want to accomplish.


how to calculate hash rate of your rig? First going the easy way, I would use any online calculator but most of these mining calculators require the hash rate of my device. I am unable to find a suitable answer or a guide to easily compute this value for any device given its configurations. Will that be possible?

Scenario:

When I go to these online calculator sites, they again cross question me about the hash rate/ hashing power. I need to determine this value and feed in to these sites so that I can get the desired result. (e.g. cryptocompare.com). I want to know whether it is easy to calculate these values with some information about your machine like the processor, GPUs and all, how much time I am gonna run it. I know the calculator sites need the power input of the device.

This website allows you to select your GPU / ASIC / etc, and it will tell you the expected hashrate of that hardware for different algorithms.

I can offer no guarantees about the validity of the data they provide though, in general the best way to figure out your hashrate would be to actually run the hardware and see what happens.

Knowing the hash rate is essential for you.

Why?

Your question is like, if I hire a worker, how many hours per day can my worker work?
OK, so you should know the primitive knowledge about your worker.
Such as how strong he is or how many hours he can work or how much cost to work for one day (lunch or rest cost).
Well, you must first measure the worker's default data, or the second step in the work that you work for.
Therefore, knowing the amount of hash of your operation is very necessary.
But you can now enjoy the famous swimming pool charts for each TH/s.
Please calculate here.

And there is a very nice calculator here, base on every known thing from your rig.

At last, try to find out, which device or rig are you going to buy (to know power cost/maintenance cost and price of the rig).


Receiving funds for the first time Disclaimer new to bitcoin: Do I need to make a transaction with an existing account before receiving first time payments to legitimate verify my account ?

All you need to receive funds is a valid bitcoin address. To create a bitcoin address, users will generally use some software that is capable of creating the cryptographic keys that the bitcoin address is derived from.

So, in the most simple terms, all you need to do is download some Bitcoin wallet software, which will then provide you with a bitcoin address you can receive funds to. All you need to do, is copy that address and send it to the person who wants to pay you.

Note that for every payment, you should send a new receiving address (any good wallet will give you a new address automatically each time a payment is received. This is very important for your privacy (and the privacy of those you transact with).

  Do I need to make a transaction with an existing account before receiving first time payments to legitimate verify my account?

Absolutely not.

Correct me if I'm wrong, but it seems like you are asking if you need to spend from your wallet in order to verify that you are the owner of a payment address. The answer to that question is no, you don't need to spend first. If you want to prove to another person that you own an address, you can sign a random message string using that payment address. Then another user can verify the signature of that message, which lets them know that you are the owner of that address.

I believe most wallets include this feature, but for example, here's how you would accomplish this using Electrum with the console:

>> message = "this is a random message"
>> address = getunusedaddress()
>> address
'bc1q2zyqwnur9fslzwvhntyqpg9zp5nlaffczed95n'
>> signature=signmessage(address,message)
>> signature
'H1gN7O4SGoeNrRbf4RuznMDrTqHM3sRfzNM2h7qfPjBTPKE/6/UJ+ktOM80PgJ3dvId/xAK7n94F4imSEnqnafA='
>> verifymessage(address, signature, message)
true


If Bitcoin mining is becoming more and more impractical, what then? If Bitcoin mining is becoming more and more impractical, where you'll need to buy like a ButterflyLabs unit, and where even eventually a room full of these units might not be enough some day, what then?

Or, am I failing to understand some controls on Bitcoin that make it where eventually the processing power requirements go down again by some market factor? Forgive me, I'm new at this.

I think you misunderstand the problem. The reason mining is becoming impractical is because there's too much of it. It's like a restaurant that's too crowded. It means you can't get a table, but the restaurant is not going to go out of business.

Bitcoin will change nature from inflationary to deflationary currency. This is as designed from the very beginning - there is an upper limit of how many bitcoins can there be. This is actually profitable for the stability of the currency - now it's prone to rapid exchange rate changes if someone starts a big mining farm and introduces a lot of it to the market. In the future this will not be the case - with fixed number of coins the value will only depend on supply and demand based on exchange of assets, not on "side stream" of "mining".

With coins falling out of circulation by being frozen as savings the number in circulation will be constantly falling.

Of course falling number will cause increased value of single coins and as result encourage people to spend their savings and reintroduce frozen assets into circulation, so the time before there's not enough bitcoin in circulation to support continued existence of the currency is very distant and we're likely to develop some alternatives before this happens.

Of course while at certain point continued purchases of mining hardware may cease to be profitable, running existing hardware is cheap, and so mining is unlikely to cease for quite a few years yet despite its dwindling profitability.

Edit:

When cost of electricity to mine one bitcoin will exceed the value of one bitcoin you may be sure production will stop (and it will be long before you need a whole warehouse of dedicated hardware to produce one.) Of course there will be people still producing them at a loss or using public/stolen/free electricity but they won't produce all that many of them.

Now let's assume the unlikely "too long chain" scenario eventually happens requiring a whole warehouse to process - which shouldn't happen considering the upper cap on the number of coins, unless someone miscalculated something - last bitcoin should be eventually generated on much less beefy hardware. Once you reach that limit, you will be unable to mine another coin, and so you won't obtain it, period.

If a bitcoin is already mined, it really doesn't put much stress on the infrastructure, it requires much, much less processing power to transfer as a payment or validate than to create. It's the mining process that would eventually grind to a halt first ages before the processing of mined bitcoins would become too hard on hardware.

If you had a warehouse of custom FPGA, you'll be left with a ton of useless mining hardware and only as many bitcoins as you obtained. The era of mining will come to an end as designed, and the bitcoins produced from even the longest chains will function just like any other ones in circulation.


I have sent a person some bitcoin. He never sent me the goods. How can I get my funds back? I have been scammed by a person and I want to dispute a bitcoin transaction.

Bitcoin transactions cannot be reversed unless some kind of escrow is implemented. Take this as a hard learned lesson. Sorry for your loss.

File a police report and let the law do it's magic.


Who makes the decision about blocksize? I have been running a full node for little less than a year and I am following the discussion around blocksize increase. I am for it.

Who actually can make a decision whether  the blocksize increase gets committed to the bt core? Is a majority vote from core devs required? Obviously Gavin Andersen, an outspoken core developer is trying to convince someone with his blog posts. Whom?

Also how can the public coordinate their desire for blocksize increase? Everyone posting in their blogs is not going to cut it, or?

This situation is unprecedented in the software world. In other peer-to-peer systems (think Skype or Bittorrent or whatever), software updates fix bugs or add new features, and if the user doesn't update their software the worst that can happen is that their program will run with some problems.

In Bitcoin the situation is drastically different because the system is entirely based on reaching consensus on something. Bittorrent or Skype don't really need to reach consensus on anything. Sure there's still a protocol that clients should follow for the system to work as expected, but even if these rules are slightly different from client to client, overall the system still functions.

With Bitcoin, consensus is what makes the whole system possible. The rules behind how to reach consensus are embedded (actually hardcoded) inside the client/node that all the people are running. Now, if there's some clients that have different rules than others regarding the consensus, then the whole system branches into different versions creating effectively different versions of Bitcoin.

In fact, one can go ahead and say that Bitcoin is exactly the set of rules (the actual algorithm) to reach consensus. If you're not using those rules, you're not using Bitcoin, you're using something else (Bitcoin 2.0, Litecoin 2.0, whatever...).

Now you understand why this is really an unprecedented situation in the software world (perhaps apart from the fork of 2013). If you change the rules then you're effectively creating a new version of Bitcoin and you must make everyone move onto your new version - and I'm not talking about only miners here; all people that are running clients on their phones, or on their computers; all the web wallets; all the exchanges. They all must update their code otherwise you've essentially created another system which is not Bitcoin.

So to answer your question about "who makes the decision about the rules", it's the actual people running the bitcoin software that decide at the end of the day.

EDIT as was noted in the comments, regarding the specific block size issue, SPV clients don't actually need to be updated because they don't check the size of the blocks - they trust the miners will do the checking for them.

Who actually can make a decision whether the blocksize increase gets
  committed to the bt core?

Any person who has rights to commit changes to github.com/bitcoin.org

  Also how can the public coordinate their desire for blocksize
  increase?

The only way is voting by hashpower. Have a look to BIP-16


What are some good resources for understanding Bitcoin? I've tried to read about what a Bitcoin is, how to mine, etc.  I find them to be confusing in that I don't understand the underlying factors driving Bitcoin.  Everything I've read seems to assume the reader has some knowledge of Bitcoin (even the wiki).  Where should I start?

I wrote the "New to Bitcoin? Start here!" post at bitcointalk.org.

OrigamiRobot, I highly recommend that you read that introduction before proceeding on to anything else, especially the original whitepaper, which is incredibly unapproachable for the average person.  After you finish it, come here and ask about the things that still confuse you--Bitcoin is very complicated, and it can take a while to wrap your head around it!

I created this Canonical Newbie Guide on Reddit.
It's still empty, but I'm hoping it will become a good resource for newbies.


Will Bitcoin suffer from a mining Tragedy of the Commons when mining fees drop to zero? One issue that I haven't seen clearly addressed is the possible Tragedy of the Commons in Bitcoin's future (see this answer). 40 years into the future, the only significant direct benefit for honest miners is transaction fees, as the block reward is almost zero.

The potential problem here is Tragedy of the Commons - it is possible that while the entire network will benefit from miners, the financial incentive for any individual honest miner to mine will be too small, so fewer miners "than necessary" will mine, leaving the network open to 51% attacks. In this scenario, the Bitcoin network will fall pray to frequent attacks and will effectively disintegrate. Also consider extensions like Open Transactions, that might make conducting transactions on the real Bitcoin network unnecessary for most users, who will flock to 2nd level networks and reduce the miner's rewards from TX fees even more.

As Bitcoin is being designed and promoted as a Future Proof system, people have tried to analyse the system's economic behavior in this future.

What analysis has been done on this problem? Is the problem likely to happen (speculative question, I know ... but back up your arguments)? If there is a likely problem in the current implementation, what are some possible way to adjust the protocol in the future to combat this problem?

Update - please see here, I described a possible scenario that leads to network insecurity because of this issue.

Update 2 - linking to a recent thread I created on the forum about this.

Update 3 - Added a wiki entry.

There will definitely be a tragedy of the commons problem if things stand as they are now. This was discussed at some length here and elsewhere.

There are some proposed ways to address this and make transaction fees nonzero (block size limit, hardcoded fees, insurance entities, mining cartel, gentleman's agreements which are maintained for fear defection would beget more defection, etc.), but I don't think either results in the combination of competitive transaction fees and a level of hashrate which is enough to offer reasonable security.

This means that there must be some way to improve the network's security at a given hashrate. The only way I know to do that is by augmenting proof-of-work with proof-of-stake, discussed for example here. This is based on the observation that obtaining a majority of the bitcoins in existence is orders of magnitude more difficult than obtaining a majority of the hashrate.

Since you presume that a 51% attack would become beneficial, this will incentivize everyone to attempt a 51% attack. This is similar to an arms race, only the results of anyone doing this in 40 years would be financially cataclysmic. I suspect there will be supercomputers waiting in storage ready for anyone attempting a first strike with a strong retributive response. There will probably also be other forms of retributive attacks on the network leaving nothing off the table.


bitcoin core 0.10.1 upgrade stuck syncing I just upgraded from Bitcoin Core 0.9 to 0.10.1 on Ubuntu 14.4 after being gone for a few months (blockchain data is from February).  When I loaded up bitcoin-qt, it seemed to be working fine and began correctly syncing the missing blocks.  I then quit bitcoin-qt and later restarted the system and it now refuses to get blocks after February 28th, 2015.

I get the following error repeatedly:

ERROR: AcceptToMemoryPool : nonstandard transaction: non-final

I am now attempting a -reindex -rescan, but it looks like this will take a day week or so on my old system due to its older CPU.

Any other suggestions?

Additional notes:

I confirmed that port 8333 was open and node was visible on bitnodes.io with multiple incoming connections.

The message ERROR: AcceptToMemoryPool is to do with your node accepting new transactions from the network and doesn't have anything to do with your local sync state. It just means that someone made a transaction and broadcast it to you which does not respect the rules of your current software version.

It should really be "INFO" rather than error, or simply just not logged at all.

Try Do invalidateblock then reconsiderblock .


Transact Bitcoin with no internet An issue I find when I travel is that I would like to visit a cafe that accepts Bitcoin but because I am abroad I usually don't have an internet connection on my phone.
I could use WiFi but what is the best way to transact Bitcoin without internet at a point of sale? i.e low value transactions.

To transact in Bitcoin you will need to broadcast the transaction to the Bitcoin network.  At this time an internet connection on your phone is going to be a requirement, a wifi hotspot at the cafe is all you need.

In theory there are other ways to get the transaction to the network for example sending the transaction directly from your phone to the point of sale system using NFC or Bluetooth. Search bitcoin over NFC or Bluetooth and you can read about these.

Sending the transaction over SMS is also a possibility in the future

Edit: As pointed out Bluetooth and NFC support is already built into some wallets. See Bitcoin Wallet or Airbitz for example.

If you have a wallet with some BTC in it, you can simply give somebody else the private key associated with that address (offline) and you will have effectively transferred control of them over to that person.


Bitcoin taxes question for USA If one were to receive Bitcoins then immediately use a conversion service (for example to PayPal) would gains/losses need to be recorded?
If so, is there any software that can do this automatically?
Thanks in advance.

Bitcoin is taxed as capital property (see IRS Notice 2014-21), and a tax event occurs any time it is converted into fiat (e.g. USD) or other assets. You would have to record each transaction and include it in 1040 Schedule D.

This is the difference between how much USD you received less the value of those BTC when bought/acquired them. If you had owned those coins for more than a year, you can report it as "long-term" gains, which has a reduced tax rate. Otherwise, it "short-term", which is just taxed as normal income.

You can use https://bitcoin.tax to help work it out.

If it is a transaction under $599 it shouldn't be taxed according to tax law.  I'm not a lawyer.


Generate private key from a bip-39 seed phrase? I'm able to generate a new private key and associated public addresses using bitcoin-core, but what I really want to do is generate a new private key from a 24 word seed phrase. I'm not sure how to go about this and I have not been able to find any examples.

BIP-39 Word list:

https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt

Current code:

var bitcore=require("bitcore-lib");
var buffer=bitcore.crypto.Random.getRandomBuffer(256);
var hash=bitcore.crypto.Hash.sha256(buffer);
var bn=bitcore.crypto.BN.fromBuffer(hash);
var pk=new bitcore.PrivateKey(bn).toWIF();
var address=new bitcore.PrivateKey(bn).toAddress()+'';

If I understand correctly I will generate a hash from 24 randomly selected words (from the BIP-39 word list) then use that to generate a private key. What are the steps and format for hashing the seed phrase?

https://github.com/iancoleman/bip39

"A tool for converting BIP39 mnemonic phrases to addresses and private keys."

Look at Example 7.  There are also adjacent examples for other altcoins as well.


What are the ways to create an offline Ripple wallet? Do I have to download/compile my own version of the client? Is there a difference between the Ripple and Bitcoin wallet address creation methods, or can I use, say brainwallet, also for Ripple?

Note: even if it is not correct, I use terms wallet and address interchangeably. I assume that wallet is just a (possibly encrypted) container of addresses and corresponding public/private keys.

There are two components of making a Ripple wallet offline:

The blob vault
This is what stores the private key that controls your wallet. Other people can try to guess your username/password over the network, and if the blob vault isn't trustworthy, then it can do a much faster attack against it.
Install instructions: There is an install script included (serversetup.sh), but it will only work on Debian-based systems. You can get it to work on others by installing node, npm, and mysql server. Be aware that you also need to edit the script and replace PASSWORD with your actual mysql root password.
The ripple client itself
Copy it to a local webserver, and point your brower at it.

Be aware that you need to be online to see the balance of your Ripple wallet.

Okay, since there is no answer for days already, I think this link contains probably the closest to one:

Description of credentials Blob Vault

One can set up his own Blob Vault or use a public one. Where is the source code for it, I don't know yet. Also not sure of exact relationship with Ripple address.


What programming language should be used to develop Bitcoin exchange software? Why? I've only heard PHP is terrible (e.g. in the context of Mt. Gox) and a more efficient/more security-oriented language would be preferable for matching orders and account security. Which programming language, and due to what reasons, would be better?

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

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

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

Checking the partial UI rendered pages for

Cryptsy it seems they are using jquery, bootstrap

coinsquare is using fast-cgi, Angularjs, Angularjs

coinsetter seems to be using Java, jquery, bootstrap.js

Mtgox famously used PHP

Javascript farmework 1.Angularjs 2. Nodejs 3.Phython 4.ruby on rails.

It really depends upon the skill your team have or is willing to learn.

Building a thin client over HTML5, Angularjs, bootstrap,  nodejs, Java are common denominator among many exchanges.


How to create a Blockchain for new alt coin after genesis block has been created? I am creating a new alt coin and I want to know how to generate a Blockchain for that coin. I have already created the genesis block for my new alt coin.

you can try the following steps:

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

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

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

If you're using some form of Proof-of-Work, i believe you have to generate enough transactions that can fill a block. Of course that 1st block will refer to the genesys block. Then other transactions will fill a 2nd block, that will refer to the 1st. And so on.

And voilá, you have the blockchain.

Good luck with your altcoin.