You could use your Bitcoin keys for authentication, but ECDSA doesn't support encryption.
|
|
|
I still have the address and key, so shouldn't the transaction be replayed when I parse all blocks again? Due to a bug or an attack on the network, blocks might be rewritten. Honest generators will rebroadcast your transaction for you if this happens, but this system might break down as well. It's very unlikely, of course, but you might want to account for this in situations requiring very high security. I wouldn't bother with it if I were you; I just wanted to mention the possibility. The means by which transactions get transported are the blocks, right? There's no out of band communicating of transactions between clients? That's right.
|
|
|
You could attach an already encrypted text to it, right?
You could, but any MITM could modify it / steal your coins...
|
|
|
You need to back up after sending bitcoins and making new addresses.
The wallet contains local copies of all sent and received transactions. If the network loses one of your transactions, you'll rebroadcast it. Transactions shouldn't ever be lost if you're waiting for a few confirmations, but if you're paranoid you might also want to back up after received transactions.
|
|
|
BTW, are the messages attached when sending bitcoins to ip addresses currently clear text or encrypted?
They're not encrypted, and there's no authentication, so you shouldn't send to an IP over the Internet.
|
|
|
You just need the private key.
1. I send coins to an address. 2. I transmit the private key for that address to you. 3. You can now spend anything owned by that address. You could send the entire balance to a new address and then discard the key.
|
|
|
FreeArc and NanoZip also have incredible compression ratios. They're not quite as good as PAQ, but they're much faster.
|
|
|
Hummm, well, I didn't have any luck finding how to determine what constitutes as an address examining the c++ code, but here's a PHP function that should work as expected: <? function is_bitcoin_address($address) { return preg_match("/1[a-zA-Z0-9]{33}/", $address); } if (is_bitcoin_address("17NdbrSGoUotzeGCcMMCqnFkEvLymoou9j")) echo "yes"; else echo "no"; ?> Bitcoin excludes a few normal characters for the sake of readability, and a Bitcoin address can be either 33 or 34 characters long. It's: 1[1-9A-HJ-NP-Za-km-z]{32,33}
|
|
|
If you don't use the block chain, then you eliminate double-spending protection. A could make two pooled transactions to himself using the same coins. Also: - Why couldn't an attacker just insert 10,000 nodes into the network and record all messages? It's pretty easy to do. - What stops whoever signs the outgoing pool transactions from just sending them to an address he controls? The network can't verify that he's sending to the correct addresses unless they've seen the transaction that A made, which removes the anonymity aspect. If you don't think I understand your system, explain exactly what every member of the network would be doing in this system. For example: 1. A creates a transaction like this: "txIn: previousTransaction; txOut: SEND_POOLED B_PubKey amount". 2. A transmits the transaction to his peers. 3. His peers do ![Huh](https://bitcointalk.org/Smileys/default/huh.gif)
|
|
|
gumtree:
How do people who collect from the pool prove to the network that they have the right to do so? The sender will need to say to the network, "This person can remove x coins," but this is equivalent to a normal transaction.
|
|
|
Zarutian wrote a proposed Bitcoin URI scheme for this kind of thing, and I made some modifications. Here it is: http://pastebin.com/VsBbmXQxAccording to that, you would use something like: x-btc:addr=1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD?theymos;store This says "Store 1NX... in your address book under the label 'theymos'".
|
|
|
The fix, for those interested: if any change would be less than 0.01, it is "thrown away" by adding it as a transaction fee. Someone else will get it when they generate a block. Maybe someone will manage to collect enough of them to form a usable cent.
|
|
|
So I lost a penny in it. My question then, that transaction fee, then goes to the next block? Or the one before the one I generated?
You didn't pay a transaction fee. You have .01000010 in your balance; you just can't spend it. The network would accept it if you sent the entire 0.01000010 to another address (you can't break it apart), but the Bitcoin interface doesn't support such high precision. Since fees apply to transactions less than 0.01, adding a transaction fee should be at least 0.01 right? That's not network-enforced. Transaction fees are not "outs", so they're not subject to the "dust spam" restriction. it seems I paid the fee too. Why would that be? A block that had too many tx, the value coming from multiple small value purses (but the client should see one purse that satisfies the whole transaction, right?) or what else?
You received a fee of 0.01. You didn't pay one.
|
|
|
0.3.12 contains some changes to transaction fees. Are you using that?
|
|
|
If you send your entire balance, then you won't have enough left to pay any fee. You could send 49.99.
I don't know why that's happening. There shouldn't be a fee for any non-combined transaction.
|
|
|
sudo ssh -ND 443 <my server's hostname>@<my ip address> sudo ssh -ND 9999 <my server's hostname>@<my ip address> You would run these commands with the SSH on the non-server computer. Then you'd connect to localhost:443 or localhost:9999 with SOCKS. Also, it's remoteUsername@remoteIP; you're connecting to the user at the IP. You could use antinat to set up a SOCKS server on your server. Then you wouldn't have to run SSH on the non-server computer.
|
|
|
Won't older clients will reject non-standard transactions, even if newer [future] clients are updated to generate them?
They just won't include them in blocks they generate. So the transactions might be slowed down a bit, but not stopped entirely.
|
|
|
What does the prohibition of "nonstandard" transactions do? main.cpp:506 // Rather not work on nonstandard transactions if (GetSigOpCount() > 2 || ::GetSerializeSize(*this, SER_NETWORK) < 100) return error("AcceptToMemoryPool() : nonstandard transaction"); What is included in "GetSigOpCount", and what does "GetSerializeSize" measure? This is "lightly" enforced by the network: main.cpp:1425 // Check that it's not full of nonstandard transactions if (nHeight > 79400 && GetSigOpCount() > MAX_BLOCK_SIGOPS) return error("AcceptBlock() : too many nonstandard transactions");
|
|
|
The GPL doesn't force you to release your source if you don't publish the software publicly. Even the AGPL wouldn't force you to release the source in this case, since you're not really allowing people to interface with your software.
MIT-style licensing is the only way to ensure widespread adoption. Companies won't touch GPLed software.
|
|
|
|