This is amazing! Well done. I just sent you 5 BTC (2 of them from your own app!).
By the way, I was only able to send the 2 BTC using your app in a non-intended (I presume) way. When I open the Send dialog, and press the "Donate to Armory Developers!" button, a new set of recipient address/amount/comment fields are added below the already-present set of blank ones. If I just press the "Send!"-button, it tells me that the top set of blank fields contain an invalid address, but I can't delete this top, blank field, only the second field (with your developer donate address in it). So I had to manually copy the developer donate address from the field that is added when I press the "Donate to Armory Developers!"-button into the top field, then remove the bottom field, and then it worked. Thought you might want to know.
I must admit though, that I won't be using any of the very useful features for a long time due to security reasons. The only thing I really trust at the moment is a Truecrypt container with a wallet in it (doesn't matter what format). The private key leach from encrypted wallets in the Satoshi client only confirmed to me that this approach is sensible, if only for larger savings.
I've heard good things about the Ironkey. For the offline wallet interface, the biggest threat is hidden USB-key viruses, so something with built-in-AV probably helps.
Interesting. I thought this was a Windows-only issue, but again I find myself taken to school by YouTube:
http://www.youtube.com/watch?v=ovfYBa1EHm4Also, I just found out your app doesn't subtract the balance of a transaction from the wallet until the transaction is in a block, so I've tried to double spend some coins in my wallet with your app, just for testing purposes
. We'll see what happens.
EDIT: Hmm, it seems none of the transaction I have sent using your application has made it in a block yet. It's been at least an hour. Is the send dialog supposed to disappear when I press the "Send!" button? It doesn't do that for me, I have to close it manually (and it appears it doesn't send the coins).
EDIT2: I fired it up in a terminal. I get this error after pressing the "Send!" button, entering my password and waiting a second or two:
Issue sending!
Traceback (most recent call last):
File "/home/rune/Programming/BitcoinArmory/qtdialogs.py", line 3558, in createTxAndBroadcast
self.main.broadcastTransaction(finalTx)
File "./ArmoryQt.py", line 1359, in broadcastTransaction
self.NetworkingFactory.sendTx(pytx)
File "/home/rune/Programming/BitcoinArmory/armoryengine.py", line 8531, in sendTx
raise ConnectionError, 'Connection to localhost DNE.'
armoryengine.ConnectionError: Connection to localhost DNE.
f9beb4d9
(here's the entire output)
rune@runescomp:~/Programming/BitcoinArmory$ ./ArmoryQt.py
********************************************************************************
Loading Armory Engine:
Armory Version: 0.50
PyBtcAddress Version: 1.00
PyBtcWallet Version: 1.35
Detected Operating system: Linux
User home-directory : /home/rune
Satoshi BTC directory : /home/rune/.bitcoin/
Satoshi blk0001.dat : /home/rune/.bitcoin/blk0001.dat
Armory home dir : /home/rune/.armory/
Using settings file: /home/rune/.armory/ArmorySettings.txt
Loading wallets...
Reading wallet file: /home/rune/.armory/armory_v9VUBhAP_.wallet
/home/rune/.armory/armory_v9VUBhAP_.wallet
Number of wallets read in: 1
Wallet (v9VUBhAP): "test" (Encrypted)
Loading blockchain
Attempting to read blockchain from file: /home/rune/.bitcoin/blk0001.dat
/home/rune/.bitcoin/blk0001.dat is 1651.95 MB
Syncing wallets with blockchain...
Syncing v9VUBhAP
Ledger entries: 2 Max Block: 163501
Developer
Coin Selection: (Total = 2.20000000 BTC)
Owner Address TxOutValue NumConf PriorityFactor
1BR7hwpWjCeVfudoTwqQWYVSXzr91dcLY5 1.20000000 BTC 20 0.17
1BR7hwpWjCeVfudoTwqQWYVSXzr91dcLY5 1.00000000 BTC 16 0.11
220000000
219950000.0
[('l"\xeb\x00\xe3\xf9:\xca\xc5\xae]\x81\xa9\xdbx\xa6E\xdf\xc9\xc7', 200000000)]
['Donation to Armory developers']
Donation to Armory developers
Total number of inputs in transaction: 2
Number of inputs that you can sign for: 2
Signatures for input 0 are valid!
Signatures for input 1 are valid!
{'d\x9a\x8b\x8b\x83B\x95\x8cE\x1e\x96\xdb\xd50\x83\x8d\xe6W\x8f\xcc\xa3\xc4x\xa2\x86\xbd\xc0i\x00\x86I3': 'Donation to Armory developers', ';\xb5\xc6\xf5Z>\xabb\x9a\x88\x84\x87\xb6\xaa\xe9C"Q\x86]\x18\xf0=\xe1\xc5\x00\xb5w;\xe1\xe4K': 'Donation to Armory developers. Thank you for your generosity!', '\xb8\x0bB\xec\xb5|x$M\xd4\xa6\xd2o\xf2\x9f0U\xb0s\x1dL\x10\xce\xb9\xb57\x86M\x83\x04\\A': 'Donation to Armory developers. Thank you for your generosity!', "\xa0\xc7\x06\xc3\x94\xa0]\xe6\xba=\xafg9\xd3\xcd\xaf\x0c\xc0\xb9,+e\x10$\xe7\xed'\xef\xd5 a\x82": 'double spend test', 't\xbb6MC\xd0Mly\xd6\xf8\xf3\x16\xc4\x82\x97\xd04\x9b;\x82a\x8dzm^\xec?\xc0\xf0\xf1/': 'Donation to Armory developers. Thank you for your generosity!'}
01000000022774519f5aa3c14e806899c3a23b96025e578f9df08c4359b96c08a87ac3e760010000008c4930460221001103aa8a810d57bf470b1e710cdb8bd97a73e7426ee7ac355366be30ca778e0d0221007ac10b8594fd6837c0682dfbce3984241a928234a5d5a78310b149733834871e01410493a916a08a1b6ef0d8f226078df6dc5185f87ce5316816ee132dd81631e77c7019b0846a40e4ccc88957e900024ede8ab4c73bf92fe8e9921179fbb6b3c51347ffffffff5ca16f3187b99b76dc82d1dabcc18b11af143b81c4502d6b3442616125ccb4c9010000008c493046022100e783f861249c2ce5fa18cd91d4a58280c2227ec480719464048a475d4796aa930221009903d5415c39c2e8602d316e79bf7c881462805c802a866677af488bb71b393301410493a916a08a1b6ef0d8f226078df6dc5185f87ce5316816ee132dd81631e77c7019b0846a40e4ccc88957e900024ede8ab4c73bf92fe8e9921179fbb6b3c51347ffffffff02b0693001000000001976a914a6af1826f2addcf1132244ae5a9eee91decdb54088ac00c2eb0b000000001976a9146c22eb00e3f93acac5ae5d81a9db78a645dfc9c788ac00000000
-----BEGIN-TRANSACTION-4UWrJegd-------------------------------------------------
_TXDIST_f9beb4d9_4UWrJegd_00d2
01000000022774519f5aa3c14e806899c3a23b96025e578f9df08c4359b96c08a87ac3e760010000
001976a9147240d6b96a4e689f03695feefc2ebb76304beba088acffffffff5ca16f3187b99b76dc
82d1dabcc18b11af143b81c4502d6b3442616125ccb4c9010000001976a9147240d6b96a4e689f03
695feefc2ebb76304beba088acffffffff02b0693001000000001976a914a6af1826f2addcf11322
44ae5a9eee91decdb54088ac00c2eb0b000000001976a9146c22eb00e3f93acac5ae5d81a9db78a6
45dfc9c788ac00000000
_TXINPUT_00_1.20000000
_SIG_1BR7hwpWjCeVfudoTwqQWYVSXzr91dcLY5_00_008c
4930460221001103aa8a810d57bf470b1e710cdb8bd97a73e7426ee7ac355366be30ca778e0d0221
007ac10b8594fd6837c0682dfbce3984241a928234a5d5a78310b149733834871e01410493a916a0
8a1b6ef0d8f226078df6dc5185f87ce5316816ee132dd81631e77c7019b0846a40e4ccc88957e900
024ede8ab4c73bf92fe8e9921179fbb6b3c51347
_TXINPUT_01_1.00000000
_SIG_1BR7hwpWjCeVfudoTwqQWYVSXzr91dcLY5_01_008c
493046022100e783f861249c2ce5fa18cd91d4a58280c2227ec480719464048a475d4796aa930221
009903d5415c39c2e8602d316e79bf7c881462805c802a866677af488bb71b393301410493a916a0
8a1b6ef0d8f226078df6dc5185f87ce5316816ee132dd81631e77c7019b0846a40e4ccc88957e900
024ede8ab4c73bf92fe8e9921179fbb6b3c51347
-------END-TRANSACTION-4UWrJegd-------------------------------------------------
Pretty tx: Transaction:
TxHash: 3349860069c0bd86a278c4a3cc8f57e68d8330d5db961e458c9542838b8b9a64 (BE)
Version: 1
nInputs: 2
nOutputs: 2
LockTime: 0
Inputs:
PyTxIn:
PrevTxHash: 60e7c37aa8086cb959438cf09d8f575e02963ba2c39968804ec1a35a9f517427 (BE)
TxOutIndex: 1
Script: (4930460221001103aa8a810d57bf470b1e710cdb8bd97a73e7426ee7ac355366)
Sender: 1BR7hwpWjCeVfudoTwqQWYVSXzr91dcLY5
Seq: 4294967295
PyTxIn:
PrevTxHash: c9b4cc25616142346b2d50c4813b14af118bc1bcdad182dc769bb987316fa15c (BE)
TxOutIndex: 1
Script: (493046022100e783f861249c2ce5fa18cd91d4a58280c2227ec480719464048a)
Sender: 1BR7hwpWjCeVfudoTwqQWYVSXzr91dcLY5
Seq: 4294967295
Outputs:
TxOut:
Value: 19950000 ( 0.1995 )
Script: OP_DUP OP_HASH (1GCLvcWM4ZDnDkfAm8vtJsb5E6TV5EMUmU) OP_EQUAL OP_CHECKSIG
TxOut:
Value: 200000000 ( 2.0 )
Script: OP_DUP OP_HASH (1ArmoryXcfq7TnCSuZa9fQjRYwJ4bkRKfv) OP_EQUAL OP_CHECKSIG
None
Raw serialize tx: 01000000022774519f5aa3c14e806899c3a23b96025e578f9df08c4359b96c08a87ac3e760010000008c4930460221001103aa8a810d57bf470b1e710cdb8bd97a73e7426ee7ac355366be30ca778e0d0221007ac10b8594fd6837c0682dfbce3984241a928234a5d5a78310b149733834871e01410493a916a08a1b6ef0d8f226078df6dc5185f87ce5316816ee132dd81631e77c7019b0846a40e4ccc88957e900024ede8ab4c73bf92fe8e9921179fbb6b3c51347ffffffff5ca16f3187b99b76dc82d1dabcc18b11af143b81c4502d6b3442616125ccb4c9010000008c493046022100e783f861249c2ce5fa18cd91d4a58280c2227ec480719464048a475d4796aa930221009903d5415c39c2e8602d316e79bf7c881462805c802a866677af488bb71b393301410493a916a08a1b6ef0d8f226078df6dc5185f87ce5316816ee132dd81631e77c7019b0846a40e4ccc88957e900024ede8ab4c73bf92fe8e9921179fbb6b3c51347ffffffff02b0693001000000001976a914a6af1826f2addcf1132244ae5a9eee91decdb54088ac00c2eb0b000000001976a9146c22eb00e3f93acac5ae5d81a9db78a645dfc9c788ac00000000
Sending Tx, 649a8b8b8342958c451e96dbd530838de6578fcca3c478a286bdc06900864933
Issue sending!
Traceback (most recent call last):
File "/home/rune/Programming/BitcoinArmory/qtdialogs.py", line 3558, in createTxAndBroadcast
self.main.broadcastTransaction(finalTx)
File "./ArmoryQt.py", line 1359, in broadcastTransaction
self.NetworkingFactory.sendTx(pytx)
File "/home/rune/Programming/BitcoinArmory/armoryengine.py", line 8531, in sendTx
raise ConnectionError, 'Connection to localhost DNE.'
armoryengine.ConnectionError: Connection to localhost DNE.
f9beb4d9
Added new blocks to memory pool: 1
New Block! : 163502
f9beb4d9
Added new blocks to memory pool: 1
New Block! : 163503