Submitting an old balance sheet in the lightning network If either party can close a lightning network channel by submitting their version of the balance sheet. What stops one party submitting an old version of the balance that favours them?

Would the Blockchain honour this balance sheet and distribute the locked funds accordingly? How would the miners know that the balance sheet is not the most current one?

This "balance sheet" is a Bitcoin transaction which spends a 2-of-2 multisig input and creates 2 outputs, one to each party. The outputs have each party's respective balances. It is known as the commitment transaction.

However, both parties do not have the same transaction. Rather, what they have are different transactions that have different scripts for the outputs, so there are different conditions for spending the outputs.

So for each person in the channel, they have an output that pays the other person, and an output that pays himself. The output that pays the other person can be spent by the other person immediately if this transaction were broadcast. However, the output that pays himself has a special condition: prior to some time delay, anyone who has a specific revocation key can spend the output. After the time delay, either of the person himself or person who has the revocation key can spend the output.

This revocation key is something that the other person in the channel learns when a commitment transaction is revoked and replaced with a new one that has new balances. It is learned in a way that is guaranteed to be atomic, i.e. the revocation key and the new commitment transaction are given by both parties to the other party at exactly the same time, guaranteed (there's some cryptography involved that guarantees this).

So if one person were to broadcast an old commitment transaction, then he would not be able to access the money until the time delay expires. However, during that time, the other person in the channel who now has the revocation key can use that revocation key to spend that output and take the broadcaster's money. So the penalty for broadcasting an old commitment transaction is to lose all of your money.

The blockchain and miners are not involved in this whatsoever. It is entirely based on scripts in the Bitcoin transactions and the ability for the other party to react in time.


Is bitcoin an effective way to receive international payments? I live in the UK with a GBP bank account, and recently I need to receive an amount of $115.92 from a contact in the US. We looked at a few options:

International bank wire: instant no go as his US bank charged stupidly high fees for these.
Paypal: according to Paypal fees calc I'd get charged with 3.9% +$0.30 standard rate and 2.5% currency conversion fee above the whole exchange rate so I'd end up with $7.72 charge or $108.20 received. According to xe at the time of writing that equates to £69.20GBP.
Bitcoin. We went with this option, and my contact used his USD to buy bitcoins and sent me 0.2876BTC, which I traded out on localbitcoins.com minutes later at the best sell rate for a payment directly into my bank account of £71.47GBP (i.e. the sell rate was £248.50/BTC).

It seems that I did better than paypal, but the current wholesale exchange rate would suggest I should have ended up with closer to 74.15GBP, so where did I lose out?

Was it just that the bitcoin rate dropped in the interim, so I got unlucky and lost value, or was it the fact that the buy and sell rates have a "spread", so even if I bought bitcoins in GBP now then instantly sold them for GBP I'd lose out (because the buy rate is higher than the sell rate of course...). On localbitcoins.com such an experiment would cost me around £10GBP, so maybe infact I got lucky by only losing £3 from the wholesale rate??

It is efficient , but I would advise read all laws before you do so. As it can get you in trouble legally.


How can I make my node a Lightning routing node? I've spent some time setting up Umbrel on my rPi4, I've synced my Bitcoin Core wallet and funded two channels... Which I've now come to realize that's for me to make payments.
I was really hoping to use my BTC to help the growth of the Lightning network and facilitate payments by routing payments, can this be done with my current setup? Still so little info out there...

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


Purchasing bitcoins online Is anybody aware of websites that are secure and reliable which will sell BTC promptly? I made the rounds around my city today, but all of the BTC ATMs were tapped, and I'm beginning to feel a little helpless as I continue to watch the price grow and grow and grow...

there are lot of grate websites where you can buy bitcoin..

example: coinbase.com, blockchain.info

https://www.bitcoin.com/buy-bitcoin <-- here are some ways to buy
http://cryptosort.com/wallet <-- here you could find something as well..

but if you are starter i suggest you to use coinbase, because there is simple interface and 3 cryptocurrencies available :)


Bitcoin blockchain in mongodb How bad would it be to use MongoDB as a Bitcoin database instead of LevelDB? I know that LevelDB is faster but I've also read that MongoDB is better for doing queries.

It seems cleaner to store the information in JSON. And also easier to query.

Any reason why LevelDB was chosen?

On the subject of why LevelDB is used, core developer Greg Maxwell stated the following to the ref:

  I think people are falling into a trap of thinking "It's a <database>,
  I know a <black box> for that!"; but the application and needs are
  very specialized here. . . It just so happens that on the back of the
  very bitcoin specific cryptographic consensus algorithim there was a
  slot where a pre-existing high performance key-value store fit; and so
  we're using one and saving ourselves some effort...


How do nodes rebroacast transactions When a bitcoin node receive a new transaction, it rebroadcast it and stores it in its mempool. If the transaction gets into a block, then it is removed from the node's mempool.

But what happen when it is still unconfirmed after some blocks? How does it check which transactions to rebroadcast? Is there a priority list to choose which transaction to broadcast?

Nodes typically do not rebroadcast transactions. They have no reason to do so, it is not their problem if a transaction is not confirmed.

However if a wallet will likely rebroadcast its transactions, and only its transactions. Rebroadcasting works in the exact same way that broadcasting a transaction works. If nodes still have the transaction in their mempools, then they will ignore the transaction. Of course this means it will not propagate well if all of the nodes that a wallet is connected to already has the transaction but other nodes don't.


Pay, or partial pay in Bitcoin If I wanted to be paid or partially paid in Bitcoin, but my employer is not participating, is there a secure online service where I could authorize all or a portion of my pay to be sent and converted to Bitcoin?
Thanks

Yes, what you need is BitWage; it does exactly what you ask: get paid fully or partially in bitcoin without involving your employer. There might be other services like that.


How can trading phisical goods in the blockchain be safe? Suppose we have two people: a merchant (Bob) and a buyer (Alice).
Alice wants to buy an expensive good from Bob in excange of bitcoins, so she contacts him and sends him the amount of bitcoin needed. When Bob receives the bitcoins, and the transaction is in a block which has enough blocks built on top of it, he ships the good and both live happily ever after.

But

Bob could be a malicious merchant and take alice's bitcoins and never ship the good, and he could get away with that. So Alice requests a signed message from Bob prior to sending her coins, so she has the proof that Bob actually requested her coins and can hold him accountable for it. Now they can both live happily ever after.

But

Alice could be a malicious buyer and claim that the good was never shipped, even tough she has received it, or claim that it is broken whatsoever. She could be rigth or she could be malicious and Bob has no way of knowing it and he obviously doesn't want to send a refund if the good is good. So they "hire" an escrow (another bitcoin user) to act as a third party in as 2 out of 3 multisig contract. In this way if the good was broken and Bob had fled Alice could ask the escrow to sign the contract with her and get her money back. Or if the escrow does not believe Alice he/her could refuse to sign the contract leaving the money to Bob. And they all live happily ever after.

Now the question

How can Bob (an honest merchant) trust the escrow not to pair with Alice in a completely arbitrary way at his damage? He could have shipped an €900 smartphone and get nothing from it because Alice paired with the escrow to get a refund, and once he has signed a 2 out of 3 multisign contract there is nothing he can do to prevent that from happening.

So

How can a merchant ever be willing to trade his phisical assets over the blockchain if it has not the top security in doing so? In addition to that Alice is just an address hash so he can't hold her accountable in a legal way, while a merchant is likely to provide his bitcoin address over the net in his certified website so his identity is known, and he can be held accountable by that. What am I missing?

Simple answer is that both parties need to trust the escrow! Their is no smart cryptographic technique you can use to ensure a link between maths and physical goods in the real world!

If you're talking about digital goods, or products with DRM, the issue is different, but when you're shipping a physical product, like a phone, without DRM, then you need good old fashioned trust. Now if you use a 'reputable' escrow agent on a 'reputable' site, then you can reasonably trust them.

Customer reviews also play into this. This is how sites like AlphaBay could exist. You have no idea that your illegal product is going to arrive in the post, after all, you're dealing with a criminal by definition! However, the interests of the buyer, vendors and site align to ensure that everything works most of the time... See:
Jamie Bartlett How the mysterious dark net is going mainstream


What is the safest way to escrow my money before purchasing bitcoins? While investigating the process of purchasing items with bitcoins, one site that I was learning about suggested, if you don't have bitcoins, visit LocalBitCoins.com and buy some.

OK, that made sense.  I don't have any bitcoins yet and have not yet invested in any mining hardware, so going someplace to buy some is necessary.

Then I started investigating the exchanges and how they work.

I'm accustomed to AmeriTrade.  I transfer money to AmeriTrade, they facilitate the buy-and-sale of stocks, etc.  Sellers know the money exists because Ameritrade has it and verifies it.  Buyers know they'll get what they're paying for because AmeriTrade has that, too.

However, that does not seem to be the case on LocalBitCoins.com.  It appears they don't want anything to do with escrowing the USD, only the BTC, and that appears to open them up to fraud.  It's one thing to hand my banking info to AmeriTrade, but to hand it to some one with a pseudonym who could be living anywhere in the world?

Question: What is the most reliable way to escrow cash before making a BTC purchase?

It almost appears there isn't any.  People seem to want either face-to-face cash delivery, mailed cash delivery, Moneygram or Western Union transfers (ugh, expensive), or even gift card solutions.  All of this appears, well, mickey-mouse to the extreme.  It's like the old west where no one is willing to be "the bank."

Sites like localbitcoins.com (and eBay!) rely on reputation scores to assuage the type of concerns you express.

If a user on localbitcoins.com has a high number of succesfully completed transactions, with a 100% overall score, I think you can feel reasonably reassured that this user is reliable and will do the right thing. They have a respectable track record of performing as expected.

If you are buying bitcoins, in fact you do not have to give your fiat (dollar) banking information out at all. Many bitcoin sellers will accept cash, either in person, or deposited at their bank - so they would have to give you their banking information.  Unfortunately, many traditional fiat banks are restricting cash deposits into user accounts from anyone but the named account holder.  (Perhaps because they sense their obsolescence versus the security, speed and de-centralized nature of cryptocurrency.) So, verify that the bank you are depositing into will accept cash deposits from third parties.
There are other ways to pay for the bitcoins you are buying, as you point out, such as "Zelle" (https://www.zellepay.com/how-it-works) and others. Check the localbitcoin.com adds for the different ways sellers of bitcoin may accept payment.

Interesting that nobody wants to be "the bank". I think that is one of the beauties and reasons-for-being of crypto. There really is no need for banks, once you can receive, and send crypto on your own, from your own machine, with its own wallet. It obviates the need for third party intervention, really. Paying someone with crypto is like handing them cash, but it can be done electronically world-wide.

Maybe what you have here is a business opportunity for such an escrow company. One that will hold fiat deposits to secure transactions between seller & buyers. It would receive fiat from buyers of crypto, and release the funds to the sellers of crypto when it verifies (by monitoring transactions in the blockchain) that the agreed-upon crypto has been deposited into the buyer's crypto address...

Crypto funds are "kept" by the coin's entire peer-to-peer network in public addresses, and exist everywhere worldwide where any peer in the coin's network keeps a copy of the blockchain: aka, the shared-ledger which accounts for the creation and transfer of coins. But only the owner of the each address should have the private key that can spend the funds in that address.
(Make sure to keep the private keys to your addresses truly private !)

It's even possible to print out your private key on paper, and erase any trace of it from a digital device, making it impossible for any hacker to abscond with your funds. Cryptocurrency is very similar to cash in this regard. Your private keys are literally the keys to your funds. If someone takes or copies your private keys, they can spend your crypto funds. This would be analogous to leaving fiat cash lying around somewhere where it can be stolen.
Just keep those keys (in most wallet apps it's the 'wallet.dat' file in the .bitcoin directory) safe and secure and you will be fine.

Best of Luck


Is there any full node supporting multiple crypto currencies like BTC, BCH, Litecoin? I want to use JSON-RPC protocol in my application such that it should support multiple crypto currencies.Is there any single full node supporting multiple cryptocurrencies.

Different networks are completely independent, and while it is technically possible to put together a single node software that is able to connect and process all of them, it makes little sense for someone to invest that amount of time and money in it when you can simply run each network independently (even on the same machine).


Altcoins with plaintext transaction messaging I'm looking to compile a list of altcoins with plaintext transaction messaging embedded into the blockchain. If anyone knows of a coin that fits the bill then please share.

check out: https://nxtwiki.org/wiki/Arbitrary_Messages

  The NXT Messaging system allows you to send and receive data on the
  NXT Blockchain, thus allowing any Nxt account holder to communicate
  directly with all other account holders.

  Messages can be attached to any Nxt transaction, making bookkeeping
  easy, as you can tag all your transactions with a description. Project
  developers can use the Messaging system to embed machine-readable data
  within an Nxt transaction. This allows automated functions by reading
  the data sent to you on the blockchain.

  Messaging is securely encrypted by default, but text or data can also
  be sent unencrypted.


Unable to construct a correct raw transaction for bitcoin cash testnet I am trying to construct a raw transaction for bitcoin cash testnet. I have made a lot of use out of this very nice answer to how to construct a raw transaction, but am still unable to construct a correct one myself. I would like to spend the the first output 7098b2735336c85077e9704cb8ba521f5c2d92f768081345c5ded26c52fcc1a9.

Here is what I do:

Create a transaction using the previous transaction hash and index with the scriptSig filled in with the scriptPubKey of the output I want to redeem. The raw transaction looks like this:

01000000
01
a9c1fc526cd2dec545130868f7922d5c1f52bab84c70e97750c8365373b29870
00000000
19
76a914edc822bff914a255b819156c70e19dd09e8c0f6a88ac
ffffffff
01
80d6e34c00000000
19
76a9147971da00aa2aae27e2ff5d801a602014453c4c2c88ac
00000000

To this I append a four-byte hash code type 41000000.

01000000
01
a9c1fc526cd2dec545130868f7922d5c1f52bab84c70e97750c8365373b29870
00000000
19
76a914edc822bff914a255b819156c70e19dd09e8c0f6a88ac
ffffffff
01
80d6e34c00000000
19
76a9147971da00aa2aae27e2ff5d801a602014453c4c2c88ac
00000000
41000000

Now I compute the sha256 hash of this two times which yields:

f6b38f93c859db4920f22a1cd07d6c615a503ce89a7b2a3d90babad521b26062

Now I sign the result in 3. This could be where I am doing something wrong. The signature results in:

r = 767fb3ae5c9cab9a5afae16289e672a9723bcea919c429fc9cc6449d0baa6131
s = 6dcaab24e992565473c0e080d934df239c3bbb5f7869ac92d93f598a9e646136

and then I encode it into DER format as

30440220767fb3ae5c9cab9a5afae16289e672a9723bcea919c429fc9cc6449d0baa613102206dcaab24e992565473c0e080d934df239c3bbb5f7869ac92d93f598a9e646136

Does this look right?
To this signature I append the one-byte hash code type 41:

30440220767fb3ae5c9cab9a5afae16289e672a9723bcea919c429fc9cc6449d0baa613102206dcaab24e992565473c0e080d934df239c3bbb5f7869ac92d93f598a9e64613641

Then I prepend the length of the result of 5:

4730440220767fb3ae5c9cab9a5afae16289e672a9723bcea919c429fc9cc6449d0baa613102206dcaab24e992565473c0e080d934df239c3bbb5f7869ac92d93f598a9e64613641

Then I append 2103ce9f14cccee963def0f3a50978daa2dd91905eb11958da2c83e44c0ebb585c72 (the length of the public key + the actual public key) to the result of 6 yielding:

4730440220767fb3ae5c9cab9a5afae16289e672a9723bcea919c429fc9cc6449d0baa613102206dcaab24e992565473c0e080d934df239c3bbb5f7869ac92d93f598a9e646136412103ce9f14cccee963def0f3a50978daa2dd91905eb11958da2c83e44c0ebb585c72

The result of 7 is my signature, its length is 0x6a, so now I replace the scriptSig_length and scriptSig in 1 with this data yielding:

01000000
01
a9c1fc526cd2dec545130868f7922d5c1f52bab84c70e97750c8365373b29870
00000000
6a
4730440220767fb3ae5c9cab9a5afae16289e672a9723bcea919c429fc9cc6449d0baa613102206dcaab24e992565473c0e080d934df239c3bbb5f7869ac92d93f598a9e646136412103ce9f14cccee963def0f3a50978daa2dd91905eb11958da2c83e44c0ebb585c72
ffffffff
01
80d6e34c00000000
19
76a9147971da00aa2aae27e2ff5d801a602014453c4c2c88ac
00000000

This is my raw transaction, but when I try to send it I get the following error:

16: mandatory-script-verify-flag-failed (Signature must be zero for failed CHECK(MULTI)SIG operation)

Can anyone tell me what I did wrong? Thank you very much!

Bitcoin Cash does not use the original Bitcoin sighash scheme (which looks like what you're trying to do here).

Instead, it uses a variant of the sighash scheme that was proposed in BIP143 (which is used for Segregated Witness transactions in Bitcoin).


Installing PHP bitwasp bitcoin library I am attempting to set up the PHP bitwasp library from the github repository:

https://github.com/Bit-Wasp/bitcoin-php

The installing instructions suggest I simply execute:

$ composer require bitwasp/bitcoin

I do have composer installed but I am getting the following error message:

Problem 1
    - Installation request for bitwasp/bitcoin dev-master -> satisfiable by bitwasp/bitcoin[dev-master].
    - Can only install one of: bitwasp/bitcoin[v0.0.29.1, dev-master].
    - Installation request for bitwasp/bitcoin v0.0.29.1 -> satisfiable by bitwasp/bitcoin[v0.0.29.1].

I do not practice PHP full time so I lack the experience of installing packages in that language and using composer. I would be grateful if someone could point me in the right direction.

EDIT
The suggestion has been made that the package is already installed. However, the following code sample which I got from another thread:

<?php
// failing to install bitwasp
use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Address;
use BitWasp\Bitcoin\Key\PrivateKeyFactory;

$network = Bitcoin::getNetwork();

$privateKey = PrivateKeyFactory::create(true);
$publicKey = $privateKey->getPublicKey();
$address = $publicKey->getAddress();

?>

is giving me PHP Fatal error:  Class 'BitWasp\Bitcoin\Bitcoin' not found.

You have it installed already. That's why it's saying you have the requirements met and don't need to download it again.


Need authoritative source for historic Bitcoin conversion prices from all exchanges What are the authoritative sources for historic Bitcoin prices?

Ideally this will be an API for all major exchanges.

All historical data from any exchange available at Bitcoin Charts: Markets API

  Historic Trade Data

  Trade data is available as CSV, delayed by approx. 15 minutes. It will return the 2000 most recent trades.
  Format:

  https://api.bitcoincharts.com/v1/trades.csv?symbol=SYMBOL[&start=UNIXTIME]

  Returns CSV with columns: unixtime,price,amount

  Example

  Latest Kraken EUR trades:
  https://api.bitcoincharts.com/v1/trades.csv?symbol=krakenEUR


Is it possible to create smart contracts on Graphene? I can't found any article on this, is it possible to create smart contracts inside the BitShares' blockchain Graphene?

This is my necessity:

I have to allow my users to purchase my products via SmartCoins.
Users must wait for a confirmation (bank signature needed)
Issuance of certificate of ownership

Graphene smart contracts are blockchain wide, meaning they require a hardfork to be deployed. The reasoning behind this is that every node operator can review the contract code, ok it and then democratically vote by joining the hardfork.

It's kind of a hassle compared to ETH/ETC but that provides a few choices of very well tested contracts.

OpenLedger has proposed an enhancement to BTS that would provide a VM like EthereumVM and allow users to easily deploy smartcontracts. It's still under discussion: https://bitsharestalk.org/index.php?topic=25187.0


parameters for bitcoin QRCode im reading up on this page ==> https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki

I am currently trying to incorporate a message in the qr code but when i proceessed the qrcode it pulled the amount address and amount correctly. but the label didnt seem to appear or the message at all anywhere. i am using blockchain.info and block.io.

I decoded the image and the string is what it should be.

Where is the message stored so customers can view it at a later time?

Issue resolved. I chose to exclude it as it was no real purpose.


Who are the core developers behind Ripple? Who are the core developers behind the Ripple system?

Chris Larsen has been publicly identified as CEO of OpenCoin, the company behind the new Ripple. The core developers have been publicly identified as Jed McCaleb, Arthur Britto, Stefan Thomas, and me (David Schwartz).


Where do I obtain private keys? Just received my profits from a "watch only" address, where do I obtain private keys?

If your profits were sent to a watch only address then you are in trouble.

Ordinarily, a private key is created first and then the address is created from that private key.

Your wallet makes new private keys for new addresses.

Please contact the person who gave you the watch only address.

If you do get the private keys then you should immediately move any bitcoin to a new address where only you own the private keys and nobody else knows them, so that the bitcoin cannot be taken.

  https://bitcoin.org/en/glossary/watch-only-address

  Watch-Only Address

  An address or pubkey script stored in the wallet without the corresponding private key, allowing the wallet to watch for outputs but not spend them.


Are Bitcoin wallet apps on iOS truly decentralised The only offering for p2p support on iOS that I’m aware of is the MultipeerConnectivity framework. Based on its documentation, it only seems to support nearby devices (ref: https://developer.apple.com/documentation/multipeerconnectivity).

Now, by “truly decentralised”, I mean no use of a backend whatsoever.

Perhaps there’s something I might be missing. If wallet apps are indeed, truly decentralised, how do they achieve this?

An iOS app does not need to use any multiple connection framework provided by the iOS SDK at all. Apple does not need to have any API to support this since it can be done with threading and the normal network connection API.

An iOS app developer can use the standard Network connection framework in order to open a TCP connection to whatever nodes they want to. They can connect to multiple nodes by creating a thread for each node and each thread uses the Network connection framework to establish the connection. In this way, there is no need for anything like MultiPeerConnectivity or any special framework for connecting to multiple network targets.


Mac OS 10.7.5 compatible with Bitcoin-Qt.app? Program runs but doesn't seem to be able to synchronize with network.  Is there more to installing program than just dragging into applications folder?

I'm also confused about why I don't have a Bitcoin folder in Application Support folder of Library folder...  (If invisible, how do I make it visible?)

I'm a returning user after being away for about a year....  trying to access an old wallet.dat file saved on USB stick

Apple 10.7 hides the Users Library folder (where bitcoins saves its stuff), it's there, just not visible. Open terminal and enter
chflags nohidden ~/Library
to make it visible.


How can I perform key derivation from a 130 characters hex public key? I'm working with a hardware wallet (Keycard) and I'm able to export a 130 characters hex public key of the path m/44'/0'/0'. Now, I need to perform account discovery, and in order to do it I first need to get addresses from public keys obtained as explained here:

generate HD addresses using publicKey Bip44

The problem is that I have not an xpub. After derived the key for m/44'/0'/0', how can I use it to derive public keys for m/0/0-19? I've started working with this stuff just some days ago and I'm a bit confused.

With only a public key, you cannot do BIP 32 derivation. BIP 32 derivation requires an additional piece of information called the chain code. This chain code is derived with each key, so each private-public keypair has its own unique chain code. Without the chain code, you cannot do any further BIP 32 derivation.


How to interpret mtgox chart? What is the difference between red and green rectangle?

And why there is 0% written in the chart?

And also, why is mtgox only focusing for 1 month and no more?

EDIT: The 0% in the chart appears only after loging in.

Green means the price increased during the relevant period, so the lower value is the opening price and the higher value is the closing price. Red is the other way around.

I think the 0% you see is a visual glitch. If you close the charts you'll see that right behind where you see this is the "Volume Discount Display" meter, which shows you how far along you are on the way to move up to the next discount tier. For some reason it is still displayed when the charts are open. (For me the value is different from 0%.)

For charts older than a month you can use for example http://bitcoincharts.com/charts/.


Is there a solid "Bitcoin Bank" yet? Once MyBitcoin was thought to be a "solid bitcoin bank". Then it was hacked and a lot of people lost a lot of money there.

Is there another, secure alternative for storing Bitcoins except storing them on your own computer?

(Obviously correctly storing Bitcoin on your computer, with proper encryption and backup, will always be more secure because you don't have to trust anyone. Still, for a lot of people, an online Bitcoin bank is a must.)

Currently, the most secure place to store bitcoins online appears to be the exchanges. There is some evidence that Mt. Gox is also hoping to become the default bitcoin bank as they are developing mobile payment applications for instant payment.

http://mtgoxlive.com/mobile/

They have also reimbursed the losses of another bitcoin exchange.

https://www.mtgox.com/press_release_20110811.html

It is worth pointing out that while Mt Gox was hacked, no one lost any bitcoins that were not reimbursed.


How many addresses can be handled reliable in one wallet? I am working on a project which may end up generating a few hundred (or even more) bitcoin addresses a day. From my understanding in theory there is no limit on the number of bitcoin addresses in a wallet, but i fear to run into scalability issues with bitcoind on the long run.

Will RAM or CPU usage increase significantly? Is there any known limit of the number of addresses?

Note: Probably 60-80% of these addresses will never receive any transaction. Don't know if this makes a difference.

There isn't a problem with storage but there is a problem with the computation time necessary when constructing spend transactions which involve a large number of inputs from your wallet.

This is a problem that is evidenced by those who run Martingale betting bots against SatoshiDICE for instance.  After they get several thousand bitcoin addresses with transactions, their subsequent bet transactions that draw from those coins start to crawl.

A future release of the Bitcoin.org client will address this by switching from BDB to LevelDB.  Additionally targeted for future release is "ultraprune" which will lessen the storage requirements as well.

In the meantime, InstaWallet is one service that was able to come up with a solution that mitigated the problem.  They might be able to offer some suggestions.


Private keys not stored on Full Node Is it possible not to load private keys for the wallet on a Full Node and sign the TXs elsewhere, then broadcast signed TXs from the Node?

You can always create raw transactions and sign them offline. However I think you mean a more user friendly way of doing this. The only full node software that I know of which supports offline signing in the GUI is Armory.

Another option is electrum but it's not a full node client.


Trezor not showing correct balance Sent .10 from my Electrum to my trezor. Now more than 30 comfirmations, but not showing on my Trezor Balance. Put in a ticket with support have not heard back. Here is my trezor receiving address and the block explorer validates confirmations. 1PZz1GAhtVx4nWg4Me85jFe3Xg3anoGPLR
Sept-7/17
Any ideas. Would like to have the funds recorded so I can spend them.

Sent .10 from my Electrum to my trezor

Yes you did:

blockexplorer.com/tx/f5e5e6f4de4298a1d74ac3f3ba3116e0b80e97b2373da987766a2d5c27541da6

But then you sent it somewhere else afterwards:

blockexplorer.com/tx/2e4d4cf6f0a6bca1ec9489cc39bf6c6a6036a19ef10db66e42fd2052f37f466f

If you follow it forward, you'll see that the majority currently unspent (0.09373173 BTC) was last sent to address:
1CMoma2Qq5SdaynYaU4yJrLdhQ7mFFsREN

Edit: It was later moved, so I suppose you have control of funds again: blockexplorer.com/tx/1133a9f13708649c0f7aa431013c75a87a0e87efc92ee0b293f10107f7d3c3b8


Mining pool hashrate effect on a miner's income Newbie miners have many misconceptions about how the hashrate of the pool they mine in will affect their mining income.

If a big miner joins the pool there are some unhappy miners who think that now they will get paid less because big miners take a big share of the mined coins, while others are cheering because they think a big miner will help them pull in more coins.

Some miners believe you should pick a big/medium/small pool depending on whether your own hashrate is high or low.

How does pool hashrate actually affect miner income? Assuming the pool is not PPS (fixed pay).

The size of a pool, its total hashrate and the distribution of hashrate between bigger and smaller miners, have no effect on the rewards you, mining with a specific hashrate, will obtain on average.

The total block rewards collected by the pool are proportional to the number of blocks it finds per time unit, which is proportional on average to its total hashrate. In every fair pool reward method, the rewards you get on average are exactly proportional to your part in the total work done by the pool. If you mine in a pool twice as large, the pool will collect twice as much rewards but your share in them will be cut by half, meaning you get the same on average.

More specifically, all fair reward methods give miners on average (1-f)pB per share they submit, with f being the fee, p the probability that a share will be a block, and B the block reward. This amount does not depend on anything else, in particular not on the pool size.

What does differ according to the size of the pool is the variance in the rewards (how much they vary from the average due to randomness) and the maturity time (how long it takes to obtain the rewards). It is always the case that a bigger pool will have less variance and maturity time, and thus for a miner of any size it is better to mine for a pool as large as possible (however, it is better yet to mine for multiple pools simultaneously).

One point where a miner needs to optimize based on his own size is the share difficulty; smaller miners will want easier shares, so they should make sure their pool offers it. While bigger miners should work on more difficult shares to make sure the pool server isn't overloaded.


Why was this transaction accepted? In testnet, txid:fb7a8658ec015133e36e2cf7ddf7e8c887c3a5becec2f30f24ebfe43e72f4b59
transaction has two inputs.
This two inputs indicate the same txid and vout,
6a08723bc717e1ddf91fa60fde25784ef66952e8687f3bffe391fc2c819dbfd9:1.

Is this a double spending?

This transaction attempts to exploit the recently disclosed (and fixed) vulnerability regarding the validation of duplicate inputs in a single transaction.

There is an excellent answer on this question on how that vulnerability works.


Can different clients have different transaction fees? BitCoin Wiki states:

  Different bitcoin clients and different versions have different rules for determining which transactions to accept and how large a fee to send..

Is it true that different clients can attach different transaction fees which differ from the other clients?

For example, is there anyway to send 1 mBTC without having to pay the fee of 0.5 mBTC?

Are the rules of the transaction fees enforced by the protocol?

The Bitcoin protocol does not require any fee to be paid.

However, the standard client will require varying fees to be paid before the transaction is included in a block or relayed, all depending on the current load (up to 27kB transactions are free unless they are considered spammy, then fees get higher and higher).

Some pools (like Eligius) don't include transactions without fees into their blocks, so that's another incentive to pay something.


More receive addresses with electrum I cannot find any documentation or an option anywhere in the electrum client to put it into expert mode. I'm not even sure it can be done any longer, and it is important I raise the gap limit. It like chasing after a myth.

How do I put it in expert mode? Why has that been made so difficult? It seems against every principle of free software.

There's no Expert Mode anymore. The Gap Limit has been hidden from the UI as it was unnecessarily complicated for normal users, and it is not a good method for merchants.

If you need to change the gap limit, enter this in the Console tab and restart the client (Tested with Electrum 3.0):

wallet.change_gap_limit(10)
wallet.storage.write()

To view/verify the current gap limit, type the follwing in the console:
wallet.gap_limit


Bitcoin adresses seem not to be collision resistant. Please tell me I am wrong I am trying to understand Bitcoin addresses, but it does not seem to be easy at all.

As far as I know, a Transaction uses one or more addresses as input and one or more addresses as output. Is this correct?

As I understand it a bitcoin address is a hash of your public key. So it is not completely collision resistant. So how do you prove, that you are the owner of a bitcoin address?

Also, since everybody can make an address from your public key and the recipient of a transaction does not have to sign the transaction, how do you make sure no one can send you Bitcoins without your consent? (I don't really know if this is a problem to be honest)

The public key is derived from the private key. Generating a private key is pretty collision resistant as the space is huge. The fact that an address is in turn a hash of the public key doesn't change that.

  So how do you prove, that you are the owner of a bitcoin adress?

By having the private key: only then can you sign transactions.

Consent of the receiver is not required to send a transaction. If the receiver really doesn't want free money, he can chose to not spend it.


What is Joel Katz' role in Ripple? I see quite a few answers from Joel Katz, and a friend of mine referred to him as "a Ripple founder". Is this true? His name is not mentioned on this question.

"JoelKatz" is the bitcointalk.org handle of David Schwartz. He answered the linked question and referred to himself as "myself", and you should see him listed under this name as a Ripple developer in other places.


Easiest way to convert bitcoins to usd For someone in the USA what is the easiest way to convert bitcoins to usd while incurring minimal fees. I've heard of using mtgox with dwolla, or mtgox with internation wire transfer. But it strikes me as tedious to use dwolla. Why isn't there something like direct deposit, simple and fast?

I recommend using the services of a user on LocalBitcoins with a high rating and high number of transactions completed.


How to use the lightning network with Electrum multisig wallet? I want to experience the lightning network transactions with my Electrum wallet. But the lightning network is not available, and it shows the following information:
"Lightning is currently restricted to HD wallets with p2wpkh addresses."
What are p2wpkh addresses? I generated my multisig wallet with all the addresses starting with "bc1". Why cannot I use the lightning network with these addresses?

On a principle / technical level I see no reason why it should not work as you propose. However I see engineering Challenges:

The workflow of funding channels and (more importantly swiping on chain data if everything is sent to multisig addresses and requires your multisig partner to sign) would require way more communication overhead and dataflow.
Note also that there is a statement in the lightning-rfc (i believe in BOLT 03) stating that all tx needs to be p2whitness transactions (meaning segwit) so having / maintaining different Address types in your wallet might increase the complexity to handle them.

Thus I assume it was easier for the electrum developers to restrict themselves to this particular wallet type to be compatible with lightning network.


What gives bitcoins value? A simple explanation please I hear that miners solve math problems to secure Bitcoins...  what kinds of problems? And why are the solutions worth "money"?

Also, what does an exchange get in return for real money when they get Bitcoins? I am talking tangible assets?

I understand that fiat money is not backed by anything tangible, so obviously the exchange is a promise of stated value for a Bitcoin's vaule.  I just don't understand what gives the Bitcoin it's value?

I suppose that with a national currency I understand that there is an agreement to value all things tangible by the labor rate it takes to produce it.  Thereby tying value from one item to another making the currency valid. Obviously Bitcoin works the same way.  So what is the labor that is making the currency value standardized to Bitcoin it's self.

I hope those questions make sense. Please let me know.  Thanks.

Bitcoins have a value simply because of supply and demand. Mathematical laws created a fixed supply of Bitcoins, and people's expectation that they can use them as a means of exchange or store of value created demand.

Exchanges simply bring buyers and sellers together. Buyers wish to purchase Bitcoins, either as a means of exchange or as a store of value. Sellers are willing to sell Bitcoins because they'd rather have fiat currency, either because that's what they need to pay bills or because they expect Bitcoins to drop in value. At some price, buyers and sellers will meet.

Miners secure the Bitcoin block chain by providing the proof of work that Bitcoin uses to verify Bitcoin transactions. They receive a Bitcoin reward for doing this because that's how Bitcoin was designed.

Bitcoins have value because they are scarce and can easily by transferred over long distances. They also have value because there's a reasonable expectation that they'll be usable as a means of exchange and as a store of value. There really is no other requirement for a currency. Anything scarce, durable, divisible and fungible can be used as a currency if people agree to use it that way, and many people have agreed to use Bitcoins that way.


Cryptocurrency exchange needs more info than any bank or brokerage firm? I wanted to quickly sign up for a cryptocurrency exchange today to act on some info I found out about a low-cost coin (hahahah, quickly. how naïve).  In signing up for the account, I got to a step asking me for my SSN, which is pretty normal. But then it asked for high resolution photos of a picture ID AND a proof of residency document??

I have MULTIPLE online bank accounts and brokerage accounts, with tens of thousand of dollars being held and traded in various forms, and I've never had to provide such information. Why the heck is the supposedly "anonymous decentralized currency of the future" requiring me to send in my firstborn and the results of my latest colonoscopy??

The requirements vary by exchange and are mostly as dictated by the regulating government. Bitcoin itself is decentralised, however, exchanges and businesses operate within government jurisdiction and must comply with any regulatory requirements. The requirements are usually country specific but mostly revolve around anti-money laundering requirements and whatever their standard requirements for investors are.


If Cryptocurrency offers anonymity, why is it considered by forensic professionals to be the best currency for fighting illicit transactions? A paper by titled An Analysis of Bitcoin’s Use in Illicit Finance discusses how Cryptocurrency is considered by forensic professionals to be the best currency for fighting illicit transactions. In terms of it being digital this makes sense, and of course the public ledger would showcase all transactions, but aren’t the identities of those transacting hidden cryptographically?

I read about this in https://www.forbes.com/sites/stevenehrlich/2021/04/13/janet-yellen-bitcoin-and-crypto-fearmongers-get-pushback-from-former-cia-director/
I have categorized privacy and anonymity involved in Bitcoin transactions as (based on few cases that I have studied):

Network layer
Blockchain
External

Network: Use of full node, Tor, i2p, etc.
Blockchain: Information available publicly for every transaction like amount, type of transaction etc.
External: Lot of users share information about their bitcoin addresses or transactions on social media. Example: You can search for "blockchain.com/btc/tx" on Telegago to check lot of transactions shared in different telegram groups or channels.

In terms of it being digital this makes sense, and of course the public ledger would showcase all transactions, but aren’t the identities of those transacting hidden cryptographically?

It is mentioned in the paper: “[It] is easier for law enforcement to
trace illicit activity using Bitcoin than it is
to trace cross-border illegal activity using
traditional banking transactions, and far
easier than cash transactions.”
Yes, its easier to trace digital payments compared to cash transactions. One of the reasons governments are moving towards to cashless economy. Demonetization that happened in India few years back and usage of digital payments since then is a great example. Although I am not sure about banking transactions because it varies from one bank to another and different places in the world. There are lot of other things used by criminals which exist since years but I consider them to be off-topic here so will not go in to details.
Bitcoin protocol involves no KYC. In every country, the only way to prove your identity or who you really are is done using documents issued by governments like Passport. None of these things or biometrics are stored on Bitcoin blockchain. So every transaction is publicly visible but users can avoid links of any transaction with real identity by following few best practices mentioned in a link below.

If Cryptocurrency offers anonymity, why is it considered by forensic professionals to be the best currency for fighting illicit transactions?

I am assuming its because of their confidence in the tools they find helpful in tracing Bitcoin transactions. Also we cannot blame the privacy or anonymity of Bitcoin transactions in every case because most of the cases involve things like address reuse, using KYC exchanges, information shared on social media etc.
Michael Morell (Former CIA Director) has mentioned few things that support my arguments about their confidence in the use of tools used for tracking:
Blockchain analysis is a highly effective crime fighting and intelligence gathering tool.
But that is not all. Perhaps even more interesting to Morell was how analytic firms such as Chainalysis, CipherTrace, and Elliptic can employ forensic and artificial intelligence tools to find illicit actors and activity on blockchains. In fact, he said that he was “literally blown away by how they find illicit activity...this is great intelligence work.”
I don't trust everything shared by firms like Chainalysis and artificial intelligence is helpful but has its own issues when used for analyzing Bitcoin transactions. I have mentioned the details of an independent investigation related to Mt. Gox case: https://bitcoin.stackexchange.com/a/101959/. You will find the investigator had to assume lot of things for tracing Bitcoin transactions.
Will share few charts that look interesting although as I mentioned above firms like Chainalysis have incentives in promoting their business and mislead people about privacy and anonymity in Bitcoin:

You can check other details here: https://go.chainalysis.com/rs/503-FAP-074/images/Chainalysis-Crypto-Crime-2021.pdf
Lastly, how do we improve privacy and anonymity involved in Bitcoin transactions? Quoting sipa from one of the Reddit post:
Nothing is "sufficient" for privacy. It's a goal to work towards, but it is so multi-faceted that no single piece of technology can "solve" privacy.
 https://www.reddit.com/r/Bitcoin/comments/e65vdf/could_bitcoins_privacy_benefit_from_litecoins_eb/f9oxfyk/
I have mentioned the difference between privacy and anonymity, best practices for Bitcoin transactions and few other things in this answer: https://bitcoin.stackexchange.com/a/103255/


Bitcoin public key to private key I did go thru a lot of articles which say's It's highly impossible to break the bitcoin public-key and get a private key from it.
I understand that the public key does hold some info of it's corresponding private key.
Can anyone suggest me some steps for manual calculation and reversing the scalar multiplication from the public key so I obtain the private key?
I'm not looking for any scripts for doing this but I'm looking for mathematical steps in-order to reverse the public key to private key.

This is simply practically not possible; it's one of the basic premises of public-key cryptography:

  The strength of a public key cryptography system relies on the computational effort (work factor in cryptography) required to find the private key from its paired public key. If so, effective security only requires keeping the private key private; the public key can be openly distributed without compromising security.

Unless somebody breaks the cryptographic algorithm used to generate the keys, your best bet is to simply generate random keys and check whether the corresponding public key matches the one you already have. (Well, that's a slight exaggeration but you get the point.)


Quick way to find transaction I am running bitcoinqt on my server. Each second, I use a .NET API to query the daemon to find new transactions which contain needed addresses. (The addresses are not from the local wallet.)

So, first I do GetRawMemPool() to get list of all new transaction Ids, and then for each id I do GetRawTransaction(transactionID) and DecodeRawTransaction() to get transaction details to find out if it contains needed addresses.

The problem is that this process, querying the daemon for each transaction in the mempool, sometimes takes a lot of time, up to 1 min, since the mempool sometimes has 10-12k transactions in the pool. I think the most CPU intensive is the DecodeRawTransaction() call.

So, this method of confirming a payment is taking far too long, and is currently not acceptable for my application. I need at most 10-20 seconds.

So, is there another way to get this information faster?

(I can't use third party api like blockchain)

If you can self-compile bitcoind/Bitcoin-Qt (or find someone who can compile it for you) you could use REST:

https://github.com/bitcoin/bitcoin/pull/6013 (adds mempool information to the REST API)

Or maybe have a look at the RPC call getrawmempool true (mind the true for verbose information).


Unconfirmed translation I sent 1500 from my wallet address last 2weeks transaction faild to confirm transaction id
1624600252fd611c8d07ae4f6a7922850ea52014d93265fa7340979e8fd55647

For the next time:
Start using a wallet that uses native SegWit addresses bc1.... If you had been spending from a bc1 address and had paid the same feerate your transaction would have confirmed instantly.


Can bitcoins be moved from the origin address to the origin address? I ask this because it seems more efficient to send change to the original address instead of a new one. Does the cryptography not allow this?

Can bitcoins be moved from the origin address to the origin address?

Yes. There are no restrictions. (In fact there is no "addresses" in bitcoin protocol)

  it seems more efficient to send change to the original address

Why do you think that it can be more efficient? In fact it is not.

  Does the cryptography not allow this?

This is not related to cryptography at all.


Have any cryptography experts vetted the bitcoin source code? Theoretically, bitcoin's open source nature makes it more resistant to bugs and exploits. However, due to the specialized nature of the code, even many programmers don't fully understand the cryptography pieces. Have any well-regarded cryptography experts done an analysis of the code and published their thoughts anywhere?

"It looks good to me" tends to make for a pretty boring paper.

Security expert Dan Kaminsky has given talks and written articles about the Bitcoin system. His two main points are that it cannot scale to the number of transactions a payment processing system needs and that it is not as anonymous as many people think.

He also wrote, "As a note, I have a tremendous amount of respect for BitCoin; I count it in the top five most interesting security projects of the decade.  Entire classes of bugs are missing.  But it's just not an anonymous solution, and the devs will say as much."


want to study the Satoshi (bitcoind) code Is there any blog or document that gives a basic "tour" or "overview" of the Satoshi code?  I could just dive in but it would help to read an introduction first.

Take a look at the Bitcoin protocol specification and in more general the Bitcoin wiki. Also, the original paper of Satoshi is a good read.

EDIT: I recently found an article on Bitcoin Talk about the Satoshi client code structure. It's an interesting read too!


Is there really a limited supply of bitcoin? I don't get how there's a limited supply of 21 million bitcoin if we can go into the infinite amount of decimal places.

So for example, you can't go less then 1 cent if we take USD. in BTC, you can have 0.00000001 or however many zeros after the point, not sure but I would assume it's alot. So isn't there alot more than 21 million bitcoins, if we take in decimals into account?

You can't go into an "infinite" amount of decimal places. The smallest unit of Bitcoin is the satoshi, which is 0.00000001 bitcoin.

There will be a total of 2100000000000000 satoshi.


How are segwit block transactions verified? From my understanding, segwit blocks send transaction information without the witness, which includes the signature. I thought nodes needed the signature to verify the transactions?

This is not correct.
All segwit blocks do differently is having the witnesses (which include the signature) in a separately-hashed area. They're still an integral part of the block, and full validation cannot proceed without the witness data. Removing or altering the witness data will invalidate a block.
What this does permit is stripping the witness data without affecting validity according to pre-segwit validation rules. This is the basis for using segwit as a blocksize increase (the old 1 MB block size limit thus only applies to the non-witness part, as old nodes don't see the witness data). However, nodes that implement the segwit rules need the full witness.


how to validate testnet and mainnet bitcoin address via online api or offline for Android App? I would like to know web api provider to validate Mainnet & Testet3 Bitcoin Address.

How to validate a Bitcoin address is a real one?

Validate bitcoin address from android application

Gone through above references but Want a web service provider or local bitcoinJ type java library class.

Here are list of references to validate mainnet and testnet Bitcoin addresses:

Offline

IN JAVA

https://rosettacode.org/wiki/Bitcoin/address_validation#Java (mainnet + testnet)

https://github.com/timqi/btc_address_validator/blob/master/BTCAddrValidator.java (mainnet only)

IN GO

https://github.com/niksmac/btc-validate/blob/master/src/btc-validate.go

IN PHP

https://github.com/niksmac/btc-validate/blob/master/src/btc-validate.php

IN RUBY

https://github.com/niksmac/btc-validate/blob/master/src/btc-validate.rb

Online Api

https://blockexplorer.com/api/addr-validate/mjdkX5oxbc9ioTmbnRtc5g4Cojyr5esUuZ (mainnet + testnet)

Note: For around 30 languages we can take benefit of same by following reference:

https://rosettacode.org/wiki/Bitcoin/address_validation


Buy bitcoins with my vef (bolivares) in Venezuela without wire transfer I want to buy bitcoins with my vef (bolivares) from my account in Venezuela.
How can I go about it?, we don't have a way of sending a wire transfer overseas in our currency.

There are no Bitcoin exchanges in Venezuela, and no exchanges that support BTC/VEF.

You might find a trade by putting an offer in on LocalBitcoins, or there might be an offer to sell by someone located near you.

You said you can't do an international wire transfer. A bank wire (in USD, EUR, etc.) to an exhange such as Mt. Gox, BITSTAMP, etc., is not an option for you then apparently.

If you can trade with someone in another country in your region (e.g., Colombia, Peru, Brazil, etc.) there are exchanges in those countries.

Without the use of exchanges, another method of obtaining bitcoins is to offer goods and services with payment in bitcons.  Turismo Surpremo is a business that does this.  You might even be able to buy their excess coins perhaps.

It's possible that working with BitPagos, a payment processor that specifically targets Latin America, might yield a method to acquire coins.


lost bitcoin on electrum - wallet closed after transaction went through? i'm noob to bitcoin and lack advanced knowledge of how these wallets work. i followed guides on how to buy bitcoin and seemingly the transaction went fine, until my electrum wallet suddenly closed and when i opened it back up i could not find my transaction in history, my recieving address changed and the address i used to buy  bitcoin can not be found anywhere.
here is a link to the transaction https://blockchain.info/da/address/157gZExbGA27R33AFHmQS41EzFxXoUpBjP

and an image of the receipt after purchase
did i screw this up completely or can i still get my bitcoin into my electrum wallet?

Hmm.. weird. Here is what you can do: Open Electrum, click on on
  wallet, then master public keys. Copy the master public key and paste
  it in blockchain.info/xpub/"your master public key here" without the
  quotes. It will show you all the transactions related to your current
  Electrum seed. Is the 'lost' transaction listed there?

Well, if you are absolutely sure that you saw the transaction in Electrum, and the address has now disappeared even using the same seed. There is only one thing left to do: Submit an issue directly to the Electrum developers. github.com/spesmilo/electrum/issues and mention that you tried with your master public key and didn't find the corresponding transaction.


How to calculate value of pair but in opposite direction I am new to trading so my question might seem obvious or stupid to some but here goes.

Exchanges often quote crypto pairs in a specific order, i.e. ETH/BTC but not very often (if at all) BTC/ETH. Also XRP/BTC but not BTC/XRP.

What if someone wants to buy BTC by selling XRP or ETC. Is it possible? If yes, how is that value calculated?

e.g. looking at ETH/BTC on Binance today the value is $8,101.82. What if I want to buy BTC from ETH (i.e. BTC/ETH), how do we calculate that value given the prices an exchange gives on ETH/BTC?

Thank you.

whether an exchange offers the Pair ABC/DEF or DEF/ABC depends on the readability of the values. so most exchanges have the same pair-orders. you can see that effect at https://coinmarketcap.com/currencies/ethereum/#markets if you search for "ETH/BTC" and if you search for "BTC/ETH". but you can always trade in both directions. back to your example "What if someone wants to buy BTC by selling XRP or ETC. Is it possible?" yes. let's say you are trading on the ETH/BTC market: the statement "i buy btc" is equal to "i sell eth". (and the opposite statements would be "i buy eth" and "i sell btc" which is also possible on every ETH/BTC-market).

"how do we calculate that value given the prices an exchange gives on ETH/BTC?" like Eliyahu pointed out the value is simply the reciprocal of the price but this value will rarely be displayed. look at BTC/USDT for example: current price is $8101. no one wants the pair USDT/BTC because the price would be 0.0001234415BTC (1/8101 BTC) which is probably very unfamiliar for the most users.


I can see a recent blockchain.info "confirmed" transaction in a shared wallet, but I do not have a balance? I sent 1 BTC to a shared wallet address (15wGmQqaYHhBqB6bEFvrXz4CJGNeBhQkmv) at blockchain.info. It gave me a transaction id e76ccebaaf5bf63762829a92f31a065bc4c5d623df18a79626f4276d536a625e and I can see the transaction, however the "balance" is not reflected in my wallet anywhere. What gives? I have done this successfully before and it was fast and easy. TIA

I don't know if you asked this question before or after transaction ae751e14246b4287e44196ec6db01e656872dd7dc3cfb68b44e931a27c431f95 happened. In that transaction, the 1 BTC associated with 15wGmQqaYHhBqB6bEFvrXz4CJGNeBhQkmv is spent, thus there are now no coins associated with it. The balance shouldn't be reflected anywhere because it is zero.


Do dollars reach MtGox through other channels than Dwolla? There've been some questions here about MtGox getting dollars through Dwolla, but what about other channels besides Dwolla?  Are dollars still reaching MtGox somehow?  The price of BTC on MtGox a few minutes ago was over $131, up a bit from a few days ago.  There must be dollars there for people to bid with, and buy bitcoins with; otherwise this couldn't happen.

Another thing I've wondered about is transferring dollars straight to a bank account in the USA.  International bank account numbers are not used in the United States.  Is there a way to do it without one of those?

Yes, you can transfer cash to Mt.Gox using a service like BitInstant.


buying bitcoin with Amazon gift card why all the sellers whom selling bitcoin with Amazon gift card are asking for physical cards with a receipt for it.
Thanks

There's no current way to check the Amazon gift card balance without actually depositing the gift card into your account.

See this post from purse.io for more details.


Forgotten wallet password (bitcoin-qt) I've forgotten my wallets password.  Luckly I haven't got any bitcoins yet, still reading about bitcoins.  My question is, now do I reset or create a new password for my wallet?

There is no way to reset your wallet's password, as Bitcoin-qt is a local application, not an online service.

In your case, as you have not sent any coins to your wallet, you can delete your wallet and create a new one with a new password.

Your wallet.dat file is located in:

C:\Users\YourUserName\Appdata\Roaming\Bitcoin (Vista/Win7)
C:\Documents and Settings\YourUserName\Application data\Bitcoin (Win XP)
~/.bitcoin/ (Linux)
~/Library/Application Support/Bitcoin/ (OSX)

Be careful, and make sure to use a password you can remember or store offline in a secure location next time.


New Bitcoin-Qt install but can't set passphrase I have installed bitcoin-qt version 4.6.2 through the ppa:bitcoin/bitcoin ubuntu repository.  I can't set a pass-phrase because it requires a value as the old pass-phrase.  I have never created an old pass-phrase though.

Don't use that version. The client has hard forked since then, meaning that client is no longer viable for user on the network. On Linux I recommend you download source and compile the current version 0.8.6 at this time.


What if I find my password, and not the wallet what if I find my password, that I wrote down many years ago, but the PC, and so the wallet is gone. can I use this password on a new wallet.dat and get accseess to my coins ?

It sounds like you are confusing two distinct objects: a password, and a seed phrase.

A password is used to encrypt a file, so that if you have the encrypted file but not the password, you cannot read the file's contents.

A seed phrase is used to derive a master private key that the rest of a wallet's keys will be based upon. So if you have the seed phrase, you can recreate the wallet.

From the sounds of it, you likely have a password that can be used to decrypt a specific wallet.dat file, not a seed phrase. A seed phrase will most commonly be a set of 12-24 words, while a password will be a (hopefully highly entropic) string of characters. If you created the wallet file many years ago, chances are the BIP 39 standard for creating HD wallets from a seed phrase was not widely used yet, furthering my suspicion that you indeed have a password, and not a seed phrase.


Who is hosting my bitcoin address? Well I set up a few different bitcoin wallets one night and somehow I have one of my faucets set up to send money to a wallet that I dont remember setting up. I have the bitcoin address but I don't know if its a coinbase, coinmama, torwallet or what? Any ideas how to find out how to log into it?

No way to know.  Bitcoin addresses are created by a random generation process, and the address itself shouldn't contain any information associating it with the site where it was created.  If it did, that would weaken your privacy.

The wallet site should have offered you the option to back up your private key, so you might look for those keys somewhere on your computer.  Otherwise, if you don't know the site and have the required password / passphrase / whatever, you cannot get those coins.

Fortunately, faucets provide such a minuscule amount of bitcoin that you surely haven't lost much (see Do faucets actually work?).  So it's probably not worth your time to do anything other than just start again.  This time, make a backup of your private keys.


How exactly do new bitcoins come into existence? I understand that currently new bitcoins are awarded during the validation/mining process.

However, how exactly does the system determine that bitcoins that were previously nonexistent should be awarded to whoever solved a block?

My understanding is, once all bitcoins have been mined, the only way to gain any profit from mining is through fees that were voluntarily added to a transaction. How does the system right now know that this is not the case for a given transaction (or a group thereof) and that it should instead create new coins "out of thin air" to reward the workers?

However, how exactly does the system determine that bitcoins that were previously nonexistent should be awarded to whoever solved a block?

That was decided when the system was designed. Everyone knows it now because it's part of the public specification. The block reward schedule is well known and well understood.

It's no different from how we all know that a nickel is worth half as much as a dime -- if you want to use US coins, you have to know and understand that rule because everyone else follows it. Everyone who wants to use US currency has to learn the rules, otherwise others won't accept their payments.

  My understanding is, once all bitcoins have been mined, the only way to gain any profit from mining is through fees that were voluntarily added to a transaction. How does the system right now know that this is not the case for a given transaction (or a group thereof) and that it should instead create new coins "out of thin air" to reward the workers?

How do people know a nickel is worth less than a dollar? If you want to use a currency, you have to learn its rules. You must know the value of a nickel or you can't properly credit and debit payments that use nickels. You must know the relative value of dollars and pennies. And so on.

These are the rules of Bitcoins. If you want to use Bitcoins, you (or the software you use) must understand the block reward schedule, otherwise it won't be able to properly credit or debit payments.

There's nothing complicated or mysterious about it -- it's just the rules everyone else has agreed to, and thus the rules you must agree to if you want to exchange Bitcoins with other people.


What's stopping someone from taking over all the bitcoin addresses? Anyone can generate unlimited bitcoin addresses.

Presumably, there's a limited number of these (even if it's a very very large number).

What's stopping someone from taking over all the bitcoin addresses? (If the answer is current computer speeds, is it something that's possible in a future 'quantum computer' type era?)

Presumably, there's a limited number of these (even if it's a very very large number).

Yes, this is true.

  What's stopping someone from taking over all the bitcoin addresses?

Nothing. You can even guess someones private key and steal all their savings.

What you underestimate is how big a number can be. Every digit you add to your number multiplies number of tries you have to perform by 10. Computers might seem fast but they live in same realm, same rules apply to them. Very quickly you run into such big numbers that even biggest computing efforts on this planet can't keep up. Then you go further and when you have number you feel secure with, you stop.

This might seem stupid, because someone might get lucky and gain access to your "number". Yet we don't think twice about very simple passwords we use every day, for all our savings. Even if you have VERY complex password, it is likely nowhere near how big that number is. So we should perhaps start from improving our password practices a bit...

Simply put, this number is so unlikely to be guessed that it's too small for us to understand, much like understanding how many transistors processors have.

  is it something that's possible in a future 'quantum computer' type era?

Quantum computer isn't actually faster than normal computer. It's just that it can solve some problems faster. And when we get quantum computers, bitcoin will be broken because it doesn't use cryptography that can stand quantum computing. Those numbers (or rather structure they compose) will be easily reversible from publicly known information. So quantum computer will break bitcoin, but we don't even know if true quantum computer is possible (and no, we don't have quantum computer, it's just a easily-catched topic by media when somebody says so).


How to generate bitcoin target from difficulty? Reading the slushpool's manual for the Stratum protocol I found that :

"Default share difficulty is 1 (big-endian target for difficulty 1 is 0x00000000ffff0000000000000000000000000000000000000000000000000000)"

Anyone knows how to generate this 64characters long big-endian representation of the number 1 ? I would appreciate any code in Java.

Thank you


LTC to BCC transaction shows confirm but still not recieved I had the transfer of litecoint from coinbase to btc wallet 19days ago  but still I didn’t receive the BCC  in my wallet.

Actually I have transferred around 42 LTC to BCC and the transcation shows confirmation and went successful.

Details of the traction is below, It’s showing successful :

https://live.blockcypher.com/ltc/tx/5345f0a35f818f551131fceb51635ca3cd411aa4a74bdc12a08424ff97cf4dc6/

https://live.blockcypher.com/ltc/tx/befbdc41020df39b2be83dda52814d7242a5d0a3952d92d9bfcd4e9947f9680e/

Is there a way I can recover that back to the address from its sent.
Could you please let help me to track this.

LTC, BTC, and BCC (whatever that may be) are three different networks. When you send LTC to an address from a different network's wallet, they are received to that address on the Litecoin network.They don't magically turn into a different currency.

If you control the private keys corresponding to the recipient address, you may be able to recover the coins. Otherwise, you may want to get in touch with whomever controls the private keys of the recipient address and ask them if they can do you a solid.


What is A matching transaction in the pool validation? I'm reading "mastering bitcoin" and got into transaction validation.
Can you explain to me what is the meaning of "A matching transaction in the pool, or in a block in the main branch, must exist." ?

In order for a transaction to be valid all of the outputs it spends must also be valid as well. Before accepting a transaction into the memory pool or accepting it into it's local block chain, one of the checks is to ensure all of it's parents are available to be spent.

If an unconfirmed transaction sent via the network is received and it's parent outputs do not exist, it is ignored or placed in a holding pool to wait and see if it's parent outputs might become available in the future.
If a block contains a transaction for which the outputs it is spending do not exist or are invalid, then the entire block is invalid and it is discarded. Any node sending you an invalid block like this is wasting your node's time and is banned as a result.


How do I test my wallet backup? I follow the instructions for wallet backup and save them digitally. What's a convenient way to occasionally test my wallet backup. I want to make sure that I'm not doing something stupid & my backup method isn't creating unrecoverable garbage.

I can think of 2 ways for testing

Install the bitcoin client on another computer and import the backup & check balances
Rename my installed folder on the existing computer & do a fresh install on the existing computer.

But these methods are not very convenient. Is there a smarter way around it? e.g. a command line tool that'll check the file integrity and spit out some data with which you are reasonably confident that it's your wallet and has the right amount of coins.

You can configure Bitcoin QT to use a specific data directory, but it only looks in that place for wallet.dat.

I would (1) close Bitcoin QT, (2) move the existing [data directory]\wallet.dat to another folder (3) copy your backup into the [data directory], and (4) reopen Bitcoin QT.

Don't overwrite your existing wallet.dat with the backup!  Step (2) is pretty important in case there's a problem with the backup file.


Will there be a problem if bdiff and pdiff are slightly different? Considering bitcoin target is 0x00000000FFFF0000000000000000000000000000000000000000000000000000 and pool target is 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF. Won't pool miner miss the valid block if it hashes to 0x00000000FFFF100000000000000000000000000000000000000000000000000? Basically this block is valid according to bitcoin target but not pool target. I'm reading https://en.bitcoin.it/wiki/Difficulty

pdiff, the pool difficulty, is not just a different encoding of the same difficulty. Pools set a different (lower) difficulty so that miners can send them more blocks as shares, and calculate how much work they're doing. Valid blocks are still checked against the normal bdiff before submission to the network


Importing a bunch of btc private keys into bitcoin core, then monitoring and sweeping them all to another address? I'm trying to build a service where I import a bunch of pirvate keys into bitcoin core or some other software if you recommend a better solution. Once the private keys are imported, I want to monitor these addresses and if anything is positive have it send it to another wallet address I own.

The solution I came up with was import the private keys with importprivkey api call, but does this take multiple private keys or do I have to loop through them?

Once I import these private keys into my wallet. I want to be able to detect if one of the following occurs:

if the entire wallet balance is greater than .001
or if 1 hour passes

Then, send all coins in the wallet to another address. My questions are:

Is there a service to monitor the bitcoin balance, or do I just have to make a cron job to query it every second?
When using sendtoaddress api call, do I have to specify a change address?
How do other people usually solve this problem?

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

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


Recovering Hive Wallet private key with passphrase Because Hive Wallet shut down and I didn't export the private keys, I have no way to access my Bitcoins. Is there someway, given a passphrase, to find the private key?Thanks in advance.P.S I already tried bip32.org. It gave me incorrect addresses.

Might want to experiment with libbitcoin's command line interface called bitcoin explorer (bx). Instructions for using v3.0 bx commands used below are found here in the right pane.

Assuming there is no mnemonic password, and the associated public key is compressed, the associated BIP 32/39/44 m/44'/0'/0'/0/0 private key and address can be computed as follows:

1) % echo "artwork crowd need rent install fire draw escape moment myth strong belt chair quiz cinnamon lab park leopard bicycle empty harvest cream matter teach" | bx mnemonic-to-seed | bx hd-new -v 76066276 | bx hd-private -d -i 44 | bx hd-private -d -i 0 | bx hd-private -d -i 0 | bx hd-private -i 0 | bx hd-private -i 0 | bx hd-to-ec | sed 's/$/01/' | bx base58check-encode -v 128

L58MiHSepQEyenRzb8EENW3mXv1DYExG5XMGCgdoZC94yqi5eBRd

2) % echo "artwork crowd need rent install fire draw escape moment myth strong belt chair quiz cinnamon lab park leopard bicycle empty harvest cream matter teach" | bx mnemonic-to-seed | bx hd-new -v 76066276 | bx hd-private -d -i 44 | bx hd-private -d -i 0 | bx hd-public -d -i 0 | bx hd-public -i 0 | bx hd-public -i 0 | bx hd-to-ec | bx ec-to-address -v 0

19JdNez3RdtfYXCnH1NohFxY5sRWRu6xbW

Assuming there is no mnemonic password, and the associated public key is uncompressed, the associated m/44'/0'/0'/0/0 BIP 32/39/44 private key and address can be computed as follows:

3) % echo "artwork crowd need rent install fire draw escape moment myth strong belt chair quiz cinnamon lab park leopard bicycle empty harvest cream matter teach" | bx mnemonic-to-seed | bx hd-new -v 76066276 | bx hd-private -d -i 44 | bx hd-private -d -i 0 | bx hd-private -d -i 0 | bx hd-private -i 0 | bx hd-private -i 0 | bx hd-to-ec | bx base58check-encode -v 128

5KcCVPJbPyUBa2geWwCcCfkg6C6wVq2C7v6VpWNUmT5zzkdph14

4) % echo "artwork crowd need rent install fire draw escape moment myth strong belt chair quiz cinnamon lab park leopard bicycle empty harvest cream matter teach" | bx mnemonic-to-seed | bx hd-new -v 76066276 | bx hd-private -d -i 44 | bx hd-private -d -i 0 | bx hd-private -d -i 0 | bx hd-private -i 0 | bx hd-private -i 0 | bx hd-to-ec | bx ec-to-public -u | bx ec-to-address -v 0

1MGahZGaVNM5Y26A58sa5LajiyeopnBez6


How to add an address to a CheckLockTimeValue (CLTV) transaction output using bitcore-lib (or any other js lib) I am using bitcore-lib to create transactions. I can add an output with CLTV to the transaction but am unable to add an output address to it. This is my code (typescript/node):

const lockScript = Script.empty()
                         .add(blockAsBuffer)
                         .add(177) // OP_CLTV
                         .add(117) // OP_DROP
                         .add(Script.buildPublicKeyHashOut(this.privateKeyAddress));

const transaction = new Transaction();
transaction.from(unspentOutputs);

// Following is where I'm adding the CLTV but can't add an output address
transaction.addOutput(new Transaction.Output({
  script: lockScript,
  satoshis: satoshisToLock
}));

transaction.change(this.privateKeyAddress);
transaction.fee(feeInSatoshis);
transaction.sign(this.privateKey);

With the above code, the transaction-output is something like the following. Note that there's no address attached to the CLTV output. Is there a way to add an address to that output using the bitcore-lib (or any other javascript lib)?

...
{
  "value": 0.00001,
  "n": 2,
  "scriptPubKey": {
    "asm": "1658883 OP_CHECKLOCKTIMEVERIFY OP_DROP OP_DUP OP_HASH160 89605b86b7ad185ebc10fe457b98776838972cf0 OP_EQUALVERIFY OP_CHECKSIG",
    "hex": "0403501900b17576a91489605b86b7ad185ebc10fe457b98776838972cf088ac",
    "type": "nonstandard"
   }
},
...

In case you are curious as to why do I want to do this, see the previous question that I had asked: Using CLTV can I freeze some funds from a wallet, and make them available, in a single transaction?

You're putting a script directly in the scriptPubKey. That's both discouraged, non-standard, and hard to use, as you've noticed there is no corresponding address.

There are only three types of addresses defined (with common acceptance) in Bitcoin: base58-encoded P2PKH addresses (1...), base58-encoded P2SH addresses (3...), and bech32-encoded native segwit addresses (bc1...). Unless the output you want to construct has the structure corresponding to one of these, there simply does not exist any address for it.

This is with good reason: when you give an address to someone else to pay you, they have no business knowing how you want to protect your coins. As the policy you want to use gets more complex, sending to more and more complicated scripts would require them also to pay increasing fee. This is weird: it's you who cares about that policy, so you should pay for it instead.

With P2SH (and later P2WSH), the script is no longer put in the output itself. Instead, a hash of the script is put in the output, and the recipient, when spending the output reveals what the actual script was and satisfies it.

So you probably want to either do this manually by reading how to construct a P2SH/P2WSH output (see BIP16 and BIP141 respectively), or figure out how the library you're using lets you construct such outputs automatically.


I have Blockchain.info wallet which i can't find I opened up an account with a site called Blockchain.info got a username and password, got a Bitcoin wallet address. I then bought some bitcoins sent them to that address, the bitcoins left but now i cannot access any blockchain.info site that gives me access to my account. Does anyone know what is going on with Blockchain.info?

1) Blockchain.info was down for a few moments in recent days - please re-check it's availability.

2) Blockchain.info sends an email confirmation with your wallet's "Identifier". This is your login/username. Try searching your email for "blockchain" and see if you have that email.
Subject: Welcome To My Wallet
Body:

  This email contains important information about your new bitcoin
  wallet. Be sure to keep this safe and stored separately from your
  password.

  Login Link:
  https://blockchain.info/wallet/9c......

  Notifications: Notifications Are Disabled Confirmation Code: D9028

  Verification Link:
  https://blockchain.info/wallet/verify-email?data=xxxxxxxxxx

Clicking the first link to your wallet will pre-fill your identifier (login), and just need the password you set when you started. That will get you into your account.


What can I do with "unspent" transactions? Can I transmit them to a chain? I withdrew some bitcoin from a service's account I maintain. The transaction shows up in my wallet, but it has been marked as "unspent" ever since. What does this mean?

When someone sends you bitcoins, they do so by submitting a Bitcoin transaction to the network. Transactions specify which coins they spend in the inputs, and allocate the funds to new owners on the output side. You received one such transaction output. While the other output got used already, your output is still marked as "unspent". "Unspent" in this context means "not spent yet" in the sense that it is still available to be spent. When you want to spend your bitcoins, you can use your wallet to create a transaction to send some or all of them to another Bitcoin address.


Where can I access the original, Satoshi written Bitcoin code? The articles of https://bitcointalk.org/index.php?topic=41718.0 seem to be annotated walkthroughs, and I'd like to see the raw code, as it was originally written in the first release.

The Bitcoin client has been hosted on GitHub for a while now. It's very close to what Satoshi initially wrote. Here's the first commit dated back to 2009: https://github.com/bitcoin/bitcoin/tree/4405b78d6059e536c36974088a8ed4d9f0f29898

You could also browse all the commits from way back: https://github.com/bitcoin/bitcoin/commits/master?page=151

Some other research points me to the actual first email sent to the cryptography mailing-list by Satoshi where he actually delivered the 0.1 version: http://www.metzdowd.com/pipermail/cryptography/2009-January/014994.html

Here's the direct link provided by Satoshi but it doesn't seem to work anymore: http://downloads.sourceforge.net/bitcoin/bitcoin-0.1.0.rar

Googling a bit I found this, which is what you're looking for: https://bitcointalk.org/index.php?topic=68121.0


What will happen when all 21M bitcoins are mined? What will happen when all 21M BTC are mined ? How will miner get new coin as reward? In absence of it, the only option available will be to increase transaction fees? If I have to pay anyway fee, I can pay that to centralized entity now also. Help me understand.

the only option available will be to increase transaction fees?

You are right, when no more bitcoins can be mined, the only reward for miners are transaction fees.

According to Section 6 of Satoshi Nakamoto's Bitcoin whitepaper, 2008 - the only mining incentives are these two possibilities.

  If I have to pay anyway fee, I can pay that to centralized entity now also.

Of course, Nakamoto intended to create "an electronic payment system" but Bitcoin appears to be mostly used as a speculative investment platform.

It may be that this predominant use has hastened the increase in mining difficulty and made use of bitcoin for small retail transactions unattractive to many in a shorter timescale than Nakamoto may have envisaged.

According to Bloomberg July 2017:

  Bitcoin Acceptance Among Retailers Is Low and Getting Lower

There have been a variety of efforts to make Bitcoin more scalable and more usable as an electronic payment system - especially for smaller transactions. One of the more prominent is the Lightning Network - but this seems to be an additional layer with some overtones of corporate financial institutional structures.

According to the Lightning Network whitepaper, January 2016:

  The Bitcoin blockchain holds great promise for distributed ledgers,  but
  the  blockchain  as  a  payment  platform,  by  itself,  cannot  cover  the  world’s commerce anytime in the near future.

When you create a Bitcoin transaction today, you are essentially placing trust in two or three large Chinese corporations who process the majority of transactions and who are somewhat beyond the reach of your government (unless you are a PRC citizen) and it's financial regulators.

It is yet to be seen whether LN will be as decentralised as its proponents hope or will, as some detractors say, also come under the control of large corporations.


How do I read peers.dat file to get a list of all peers seen or that bitcoind has connected to? In version 0.8.6 of Bitcoin, I see that peers.dat file is a custom database format declared in db.h:317 (class CAddrDB) and defined in dh.cpp:485. Any ideas on how I could go about reading the data from peers.dat with PHP or Python? I'd like to keep track of all peers that the bitcoin daemon sees and connects to.  Or is there a better way?

The easiest way to get peer information is via the JSON RPC interface has a command getpeerinfo.  Each peer returns a JSON object containing peer IP address info, connection time, version and subversion of the client.

You would probably be interested in this: Bitcoind API

Edit: Although this is not a way to read the database I presume that the data feeding the peers.dat file is pulled from both the IRC channels and the DNS seeds.  If you reported data on those nodes, you could use this data in combination with logs from the debug file to perhaps learn how your node discovered its peers.


the bitcoin wallet spendable amount is not updating the spendable amount is not updating to the watch only amount. this is now going on 3 weeks or longer. I am using bitcoin ver 0.12.1

any ideas??

Definition of Watch-only Adress:

An address or pubkey script stored in the wallet without the corresponding private key, allowing the wallet to watch for outputs but not spend them.

So you should find your private keys in order to spend these adresses


E-commerce invoice in USD & receive payment in Bitcoin Is there an e-commerce plug-in or payment processing platform that facilitates the sequence detailed below?

Merchant accepts customer's online order
Customer's credit card is charged accordingly
The dollar amount of credit card charge is:

Converted into bitcoin; *or*
Used to purchase the equivalent amount of bitcoins;

Value of customer's order (in bitcoin) posts to Merchant account
The customer receives the invoice in USD

Coinvoice lets you invoice in USD and get paid in bitcoin. Sorry if you need the exact workflow described above. I'm not aware of many services that sell bitcoin and take credit card for payment.


Airdrop in developing nations It strikes me as ironic that the majority of cryptocurrency activity is focused in developed nations, wherein financial structures (as corrupt as they may be according to some) are fairly developed and properly regulated. From the outset, cryptocurrency has been best suited to developing nations, wherein access to cash is limited, and the poor are swamped with bad money (e.g. Zimbabwean dollars) during periods of economic difficulty.

So, for the last few weeks, I've been trying to understand how a decentralised airdrop would work in such an environment. For example:

1) if we wanted to airdrop 1,000,000 alt-coins across Africa or South America, in a decentralised manner, how would we go about doing it?

2) and from then onwards, given the fact that blockchain is dependent on a continuous internet connection, how would we maintain the blockchain in such in an environment with a delay tolerant network

Too much thought goes into building out services for people like you and I who don't really need it, because of the promise of profit, as opposed to helping those who are less fortunate... these are much harder problems to solve I guess, but would make the world a better place.

I have two answers:

quick answer on how to airdrop 1,000,000 alt-coins:
put it onto accounts in exchanges or cold wallets or whatsoever, and wait for the costly infrastructure to establish, so coins can be used. If it shall be decentralized, wait even a bit longer, cause it seems highly unlikely, that these countries themselves are willing to provide the required infrastructure.

longer answer might be:
to airdrop 1mio alt-coins to Africa or South-America, one would have to distribute the coins to people who register themselves to be a citizen of the corresponding country. Or how can one control correct distribution? As Bitcoin and many alt-coins have a problem with registration, this is the first hurdle, and seems to make the question redundant. Secondly the benefits of this 1mio alt coins only come into play, if people can use it. To use it, you need the infrastructure, which is mostly inexistant today. Whereas many people have telephones in these countries, the infrastructure seems to be too expensive to support the massive potential user base. And as many people in these countries don’t want to pay taxes or even transaction fees for the required infrastructure, it might most certainly not happen. Disclaimer: I am in West-Africa, and have derived my conclusion from local observations … So it is also highly questionable, if this is a general statement for all mentioned countries :-)

I come to see, that Bitcoin and crypto is a technology, which in a first step can provide financial freedom (yes, if you are wealthy enough). It was not designed to save countries, which are deeply broken/corrupt in their minds. Crypto technology can not help to reduce limitations or incompetences of men or women - in any country. Only people within the country have the power to save a nation, not technologies (on the other hand, men with technologies like guns and bombs can easily destroy a country). Crypto is not a technology to give money to the poor, or even to save the poor world from its poverty. At least I don't find such a statement in the original docs. However I find links to the 2007/2008  problems of the first world's financial system, why it came to birth.

In general this question has a bigger potential to run into a discussion, which cannot be discussed here in stack exchange. It might be better raised on bitcointalk.org - just my two comments ...

Oh, and the last sentence:

  Too much thought goes into building out services for people like you
  and I who don't really need it...

this sounds like an accusation. The people which are referenced by you change or create "their" world, how they would like it to be. If they need it or not - they have mostly the liberty to decide themselves, and if they develop something, then they usually do it for a profit. And I haven't seen, that someone in poorer countries is willing/able to pay for their labour/work... But from time to time they spend their money to poor countries in a form of investment aid, or even free code, so that people in poor countries can develop something on their own, that would help the poor countries. So as such I would like to turn this around and say: use this invitation of free code, develop something which fits the needs of poorer countries, cause people in the first world don't see, what is required in Africa and South-America. It is up to the people in the mentioned countries, to drive the necessary change! I would like to close with a famous sentence from Immanuel Kant on (im-)maturity:

  Enlightenment is man's emergence from his self-incurred immaturity.


Can a blocksize limit be a sustainable way to introduce scarcity? Some people feel that it will be important in the future to introduce some scarcity into the mining market by having a block size limit.  The idea is that this will force transactors to bid up transaction fees in order to get their transaction into the block.  This may be necessary as the freshly minted BTC subsidy becomes less and less significant over time.

If this idea is going to work, it's safe to assume that the size limit will be hit every 10 minutes.  otherwise, it's not effectively forcing transactors to bid up the fees.  But if that is the case, won't a backlog of transactions start accruing such that the average wait time grows infinitely?  For example, if the limit is (more or less) 2000 transactions per block but the protocol puts a limit at 1500 transactions per block, it seems like there's no way around building up a stock of unconfirmed transactions that grows unbounded at a rate of 500 transactions every 10 minutes.

So it seems to me that a limit on block size can serve the original purpose of preventing some kinds of one-off spam attacks, but it can't be a long term solution to the tragedy of the commons problem.  Please confirm or correct my understanding?

Your analysis seems to assume unconfirmed transactions will sit in the queue forever.  That's not the case.  When someone realizes that their transaction will never confirm, they can create a double spend with a higher fee.  When the double spend is confirmed, the earlier transaction becomes invalid (barring a chain reorganization).

I think it's an open question about how much we should be restricting block sizes.  The current hard limit of 1 MB seems to be a comfortable place for miners with current technology and for full node operators with current disk space and bandwidth limitations.  As fast block propagation technology improves, block chain pruning technology gets deployed, and higher-bandwidth connections become more common, we will likely see a push towards higher block size limits.

We will also hopefully see technology and techniques developed that allow for alternative ways to pay for block chain security, so we aren't so dependent on transaction fees.


Sell order in Bter is incorrect In Bter I created a sell offer with DOGE/BTC, it seems the calculation is wrong. They have not deducted the transaction fee. I have included 2 screen shots and anybody know the same or experience the same kindly clarify this.

Before creating sell order

Sell DOGE

After creating sell order

My question is Is transaction fee deducted in this transaction?

That depends also on your BTC balance AFTER the sale. It seems that there is indeed 1000 DOGE subtracted from your balance, so that is correct. If there has been 0.00061 added to your BTC balance, then no fees have been deducted. If 0.00061*(1-0.0018) = 0.000608902 have been added to your BTC balance, then the fees have been deducted from your received currency.

This is general behavior on exchanges. It is more user friendly to specify the exact amount of sold (and deducted from balance) and deduct the fee from the receiving currency.