marcus_of_augustus
Legendary
Offline
Activity: 3920
Merit: 2349
Eadem mutata resurgo
|
|
December 01, 2012, 11:17:26 PM |
|
Amazing! Now that I have all this experience with PyQt and a super-versatile library under-the-hood, making the interface was not hard at all! How's it look? That's purely the interface, showing you all non-zero-balance addresses, and updating the send-BTC dialog to show you the result of your selection. It doesn't actually work yet (it still selects from all addr). Getting that part working is my project for after dinner... Coin control would be huge usability feature over and above standard bitcoin client ... i.e. it would make me switch.
|
|
|
|
chrisrico
|
|
December 02, 2012, 12:00:27 AM |
|
Amazing! Now that I have all this experience with PyQt and a super-versatile library under-the-hood, making the interface was not hard at all! How's it look? ... That's purely the interface, showing you all non-zero-balance addresses, and updating the send-BTC dialog to show you the result of your selection. It doesn't actually work yet (it still selects from all addr). Getting that part working is my project for after dinner... That looks excellent! Perfect timing too, since I just used armoryengine and blockchain.info's anonymous forwarding API to split the one huge output I've had in my offline wallet since I switched to armory into a bunch of unconnected outputs. With this, I'll be able to ensure that there is as little tainting as possible.
|
|
|
|
K1773R
Legendary
Offline
Activity: 1792
Merit: 1008
/dev/null
|
|
December 02, 2012, 12:32:53 AM |
|
Amazing! Now that I have all this experience with PyQt and a super-versatile library under-the-hood, making the interface was not hard at all! How's it look? That's purely the interface, showing you all non-zero-balance addresses, and updating the send-BTC dialog to show you the result of your selection. It doesn't actually work yet (it still selects from all addr). Getting that part working is my project for after dinner... perfect, but still the ugly ubuntu 10.04 look why no upgrade to the real (maverick and later) ones, i already send ya a PM. thanks for this, gonna love it
|
[GPG Public Key]BTC/DVC/TRC/FRC: 1 K1773RbXRZVRQSSXe9N6N2MUFERvrdu6y ANC/XPM A K1773RTmRKtvbKBCrUu95UQg5iegrqyeA NMC: N K1773Rzv8b4ugmCgX789PbjewA9fL9Dy1 LTC: L Ki773RBuPepQH8E6Zb1ponoCvgbU7hHmd EMC: E K1773RxUes1HX1YAGMZ1xVYBBRUCqfDoF BQC: b K1773R1APJz4yTgRkmdKQhjhiMyQpJgfN
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
|
December 02, 2012, 12:51:48 AM |
|
perfect, but still the ugly ubuntu 10.04 look why no upgrade to the real (maverick and later) ones, i already send ya a PM. thanks for this, gonna love it Yeah, thanks for the PM, but I'm actually quite fond of the 10.04 theme, so I don't really have any incentive to switch. But thanks for the offer. Got a few more things to work out before it actually works. But so far, it's going much faster than I expected...
|
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
|
December 02, 2012, 01:45:46 AM |
|
Holy moly that was easy! All I had to do was modify one call to compute the balance and utxoList differently if Coin Control was selected, and it seems to work flawlessly! It treats your coin-selection as if it was your wallet, yet the dialog pretty clearly identifies that you are in CC mode.
If anyone in Linux or OSX wants to try it right now, you can do so by checking out the "coincontrol" branch. You don't even need to recompile (well, you do if you haven't upgraded to 0.85 yet). It is only available under "Expert" usermode. I recommend running it in the terminal, so that you can see the output when you hit the "Send" button. It will dump the coin-selection to the terminal so you can verify that the selection was made correctly. Alternatively, you can click "Create Unsigned Transaction", copy the tx to the clipboard, then re-enter it on the next window and then "Click here for more information about this transaction."
Test this thing! Tell me if something doesn't work or if it's missing something. If it's stable enough, I'll make it official ASAP. There's been so much demand for it over the past year, that I think it deserves its own release!
|
|
|
|
cypherdoc
Legendary
Offline
Activity: 1764
Merit: 1002
|
|
December 02, 2012, 01:59:37 AM Last edit: December 02, 2012, 02:21:04 AM by cypherdoc |
|
ya know, i was thinking that the new Keccak SHA 3 really isn't up to my standards. perhaps i should develop an alternative over the weekend. would this be helpful?
|
|
|
|
chrisrico
|
|
December 02, 2012, 02:11:56 AM |
|
Holy moly that was easy! All I had to do was modify one call to compute the balance and utxoList differently if Coin Control was selected, and it seems to work flawlessly! It treats your coin-selection as if it was your wallet, yet the dialog pretty clearly identifies that you are in CC mode.
If anyone in Linux or OSX wants to try it right now, you can do so by checking out the "coincontrol" branch. You don't even need to recompile (well, you do if you haven't upgraded to 0.85 yet). It is only available under "Expert" usermode. I recommend running it in the terminal, so that you can see the output when you hit the "Send" button. It will dump the coin-selection to the terminal so you can verify that the selection was made correctly. Alternatively, you can click "Create Unsigned Transaction", copy the tx to the clipboard, then re-enter it on the next window and then "Click here for more information about this transaction."
Test this thing! Tell me if something doesn't work or if it's missing something. If it's stable enough, I'll make it official ASAP. There's been so much demand for it over the past year, that I think it deserves its own release!
That's awesome news. Question: has the threading branch been merged to master, or do I have to manually merge the two branches to test this?
|
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
|
December 02, 2012, 02:18:26 AM Last edit: December 02, 2012, 02:29:55 AM by etotheipi |
|
That's awesome news. Question: has the threading branch been merged to master, or do I have to manually merge the two branches to test this?
Oh yeah, it has been merged. And then "coincontrol" was branched off of that. P.S. -- Whenever you get in-program notification that a new version is available, it only because it was merged into master. The URL Armory uses for checking for updates is: https://raw.github.com/etotheipi/BitcoinArmory/master/versions.txt
|
|
|
|
chrisrico
|
|
December 02, 2012, 07:44:11 PM Last edit: December 02, 2012, 07:54:12 PM by chrisrico |
|
Great, I switched branches and used the coin control dialog once without issue. It is slick, nice job. In case anyone else created their savings to Armory in one massive transaction like I did, and now are bothered that the entire amount is linked (if you spend 1 BTC to someone, they can trivially see how many coins you own), here's the script I used. It asks how much you want to anonymize, and the min and max amount you would want in each address. It creates addresses in your selected wallet, uses blockchain.info's API to create an anonymous forwarding address, and selects a random amount between the min and max. It builds a transaction with as many outputs as needed to hit the total, and then saves it to a file. This can then be imported into Armory, inspected, signed, and broadcast. I used blockchain.info for this because I trust them, they have an API, and they charge a (IMO) reasonable 1.5 % fee. http://pastebin.com/XLT5FgdB
|
|
|
|
K1773R
Legendary
Offline
Activity: 1792
Merit: 1008
/dev/null
|
|
December 02, 2012, 07:59:57 PM |
|
Great, I switched branches and used the coin control dialog once without issue. It is slick, nice job. In case anyone else created their savings to Armory in one massive transaction like I did, and now are bothered that the entire amount is linked (if you spend 1 BTC to someone, they can trivially see how many coins you own), here's the script I used. It asks how much you want to anonymize, and the min and max amount you would want in each address. It creates addresses in your selected wallet, uses blockchain.info's API to create an anonymous forwarding address, and selects a random amount between the min and max. It builds a transaction with as many outputs as needed to hit the total, and then saves it to a file. This can then be imported into Armory, inspected, signed, and broadcast. I used blockchain.info for this because I trust them, they have an API, and they charge a (IMO) reasonable 1.5 % fee. http://pastebin.com/XLT5FgdBwho created this?
|
[GPG Public Key]BTC/DVC/TRC/FRC: 1 K1773RbXRZVRQSSXe9N6N2MUFERvrdu6y ANC/XPM A K1773RTmRKtvbKBCrUu95UQg5iegrqyeA NMC: N K1773Rzv8b4ugmCgX789PbjewA9fL9Dy1 LTC: L Ki773RBuPepQH8E6Zb1ponoCvgbU7hHmd EMC: E K1773RxUes1HX1YAGMZ1xVYBBRUCqfDoF BQC: b K1773R1APJz4yTgRkmdKQhjhiMyQpJgfN
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
|
December 02, 2012, 08:06:07 PM |
|
Great, I switched branches and used the coin control dialog once without issue. It is slick, nice job. In case anyone else created transferred their savings to Armory in one massive transaction like I did, and now are bothered that their savings is all tainted (if you spend 1 BTC to someone, they can pretty easily see how much you have in your savings), here's the script I used. It asks how much you want to anonymize, and the min and max amount you would want in each address. It creates addresses in your selected wallet, uses blockchain.info's API to create an anonymous forwarding address, and selects a random amount between the min and max. It builds a transaction with as many outputs as needed to hit the total, and then saves it to a file. This can then be imported into Armory, inspected, signed, and broadcast. http://pastebin.com/XLT5FgdBCool script. I wasn't aware of blockchain.info's service. How does it work exactly? You give them an address you want the money to end up at, and they give you an address to which you can send coins and they will eventually be forwarded there? How long does it take? For anyone wondering, I just went through the script and it looks like a variant/mod of the extras/cli_sign_script.py that I added to the project recently. It uses the Armory libraries exactly as they are installed/compiled, to access your wallets, find your coins, get forwarding/anonymizer addresses from blockchain.info, and then constructs an unsigned transaction for it. I can't vouch for whether it works, but it very much looks like how I would've written it (but I didn't write it) So in talking with some users about the new wallet format, an idea came up: what about encrypting the watching-only wallets? And giving the option to encrypt even the public data in an encrypted wallet? Perhaps the wallet is on a laptop and the laptop gets stolen. The person can't get your $100k in BTC savings, but they now have your identity and know you have $100k in BTC savings... I'm thinking that it could be implemented by encrypting, basically all the fields of the wallet, the same way as the private keys are encrypted. When Armory opens, it will request the passphrase for the outer encryption, and give that key a lock-timeout of inf. So the wallet will be accessible as long as Armory is open, but if it is closed (rebooted), the wallet will be inaccessible. I'd prefer the outer encryption be a different key/passphrase than the one protecting the private keys, but I don't know if that would just be a P.I.T.A for the users (they can decide for themselves, I guess). Really what this does it makes sure your unencrypted wallet information is only ever stored in RAM... it's only ever written to disk encrypted. I think I like the idea, I just don't know how I want it implemented... perhaps a single password for all your wallets, rather than per-wallet? That way, if you have 10 different wallets, you won't have to type in 10 passwords everytime you start Armory... Glad you like the coin-control I'm quite happy with the way it turned out! K1773R: have you tried it yet? Does it satisfy your use case? Or are the other features you were looking for in "coin control"?
|
|
|
|
K1773R
Legendary
Offline
Activity: 1792
Merit: 1008
/dev/null
|
|
December 02, 2012, 08:29:20 PM |
|
Great, I switched branches and used the coin control dialog once without issue. It is slick, nice job. In case anyone else created transferred their savings to Armory in one massive transaction like I did, and now are bothered that their savings is all tainted (if you spend 1 BTC to someone, they can pretty easily see how much you have in your savings), here's the script I used. It asks how much you want to anonymize, and the min and max amount you would want in each address. It creates addresses in your selected wallet, uses blockchain.info's API to create an anonymous forwarding address, and selects a random amount between the min and max. It builds a transaction with as many outputs as needed to hit the total, and then saves it to a file. This can then be imported into Armory, inspected, signed, and broadcast. http://pastebin.com/XLT5FgdBCool script. I wasn't aware of blockchain.info's service. How does it work exactly? You give them an address you want the money to end up at, and they give you an address to which you can send coins and they will eventually be forwarded there? How long does it take? For anyone wondering, I just went through the script and it looks like a variant/mod of the extras/cli_sign_script.py that I added to the project recently. It uses the Armory libraries exactly as they are installed/compiled, to access your wallets, find your coins, get forwarding/anonymizer addresses from blockchain.info, and then constructs an unsigned transaction for it. I can't vouch for whether it works, but it very much looks like how I would've written it (but I didn't write it) So in talking with some users about the new wallet format, an idea came up: what about encrypting the watching-only wallets? And giving the option to encrypt even the public data in an encrypted wallet? Perhaps the wallet is on a laptop and the laptop gets stolen. The person can't get your $100k in BTC savings, but they now have your identity and know you have $100k in BTC savings... I'm thinking that it could be implemented by encrypting, basically all the fields of the wallet, the same way as the private keys are encrypted. When Armory opens, it will request the passphrase for the outer encryption, and give that key a lock-timeout of inf. So the wallet will be accessible as long as Armory is open, but if it is closed (rebooted), the wallet will be inaccessible. I'd prefer the outer encryption be a different key/passphrase than the one protecting the private keys, but I don't know if that would just be a P.I.T.A for the users (they can decide for themselves, I guess). Really what this does it makes sure your unencrypted wallet information is only ever stored in RAM... it's only ever written to disk encrypted. I think I like the idea, I just don't know how I want it implemented... perhaps a single password for all your wallets, rather than per-wallet? That way, if you have 10 different wallets, you won't have to type in 10 passwords everytime you start Armory... Glad you like the coin-control I'm quite happy with the way it turned out! K1773R: have you tried it yet? Does it satisfy your use case? Or are the other features you were looking for in "coin control"? No i didnt try it yet as i have no Testnet Coins (nor the blockchain atm). Altough from what i see this is exactly what i need Maybe you could implement something like "bitcoind listaddressgroupings" into the GUI? the original link ive send u (the thread) has something like this implemented, if this would be implemented it would be all someone/anyone can ask for! great work!
|
[GPG Public Key]BTC/DVC/TRC/FRC: 1 K1773RbXRZVRQSSXe9N6N2MUFERvrdu6y ANC/XPM A K1773RTmRKtvbKBCrUu95UQg5iegrqyeA NMC: N K1773Rzv8b4ugmCgX789PbjewA9fL9Dy1 LTC: L Ki773RBuPepQH8E6Zb1ponoCvgbU7hHmd EMC: E K1773RxUes1HX1YAGMZ1xVYBBRUCqfDoF BQC: b K1773R1APJz4yTgRkmdKQhjhiMyQpJgfN
|
|
|
chrisrico
|
|
December 02, 2012, 08:52:23 PM |
|
who created this?
As etotheipi obersved, I based it off of his cli_sign_txdp.py script. Cool script. I wasn't aware of blockchain.info's service. How does it work exactly? You give them an address you want the money to end up at, and they give you an address to which you can send coins and they will eventually be forwarded there? How long does it take? Thanks! The page that describes their mixer, along with an HTML interface to it is here. Yeah, you give them a destination address, and they give you an anonymous forwarding address. They only keep the association in their database for 8 hours, unless the forwarding address receives funds, then the association is kept until 6 confirmations. When an anonymous transaction is queued, blockchain.info wallet users that create transactions will have their funds routed to your destination address, and your funds will be routed to their destination. They use their taint analysis tools to guarantee that the input and output are not linked through the block chain in any way. The time varies, depending on how much you need mixed. I've had it take as little as half an hour, as long as two days (but that was for quite a large amount).
|
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
|
December 02, 2012, 10:47:23 PM |
|
No i didnt try it yet as i have no Testnet Coins (nor the blockchain atm).
Send me a testnet address, I'll send you some testnet BTC And thanks to whoever just donated e BTC. Thanks for not sending e^ipi
|
|
|
|
N.Z.
|
|
December 02, 2012, 11:59:56 PM |
|
etotheipi, thank for what you`ve done It works, at least I made two real transactions and checked whether they were "coin controlled". Suggestions: - Display comments in Coin Control dialog, not only adresses. - In transaction tab display "from" address(-es) and its description. Maybe that would be better if dialog will be provided for such details by right-clicking on it. Not related to CC: - Make an expert (hidden) option to not include fee even if it is supposed to; reference: https://bitcointalk.org/index.php?topic=22434.0Also maybe you should note elsewhere to add -listen command line option to bitcoin-qt if one is using proxy (Tor), as it turned off if so. P.S. what about translations?
|
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
|
December 03, 2012, 12:09:14 AM |
|
etotheipi, thank for what you`ve done It works, at least I made two real transactions and checked whether they were "coin controlled". Suggestions: - Display comments in Coin Control dialog, not only adresses. - In transaction tab display "from" address(-es) and its description. Maybe that would be better if dialog will be provided for such details by right-clicking on it. Not related to CC: - Make an expert (hidden) option to not include fee even if it is supposed to; reference: https://bitcointalk.org/index.php?topic=22434.0Also maybe you should note elsewhere to add -listen command line option to bitcoin-qt if one is using proxy (Tor), as it turned off if so. P.S. what about translations? N.Z. -- I actually did put the comments into the mouse-over text for each address, though I realize it's not ideal. I didn't want to bloat the interface with all comments visible, but maybe I should try it and see... I'm not sure what you mean about the "from address(-es)" You can already double-click on the transaction in the ledger and see all the inputs and outputs -- which includes the funding addresses. It won't tell you the list of addresses you had in the coin-control pool, but I don't see why one would need that. I was not aware about the -listen command for bitcoin-qt for Tor. I should put a comment about that somewhere... I have tried to add a force-zero-fee option to the interface, but it doesn't actually work. The problem is that Armory relies on Bitcoin-Qt/bitcoind to forward the transaction to the rest of the network, and if you're using stock bitcoind/-qt, the tx will be DOA. There's no way to push it through, unless you copy the raw transaction and submit it to a node/miner that will take it. One day I'll get on the translation train, but it will probably be a mess, because I have so many dynamic messages in the program. Also, I'll need to support unicode first... (but that's coming with the new wallet file)
|
|
|
|
N.Z.
|
|
December 03, 2012, 12:25:43 AM |
|
You can already double-click on the transaction in the ledger and see all the inputs and outputs -- which includes the funding addresses. Um...where is that? Maybe I should go get some sleep... The problem is that Armory relies on Bitcoin-Qt/bitcoind to forward the transaction to the rest of the network Yeah, didn`t think of that. Bummer Oh! One more suggestion: possibility to add arbitrary "watch-only" address to wallet or separately. Or is it possible already?
|
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
|
December 03, 2012, 12:28:03 AM |
|
You can already double-click on the transaction in the ledger and see all the inputs and outputs -- which includes the funding addresses. Um...where is that? Maybe I should go get some sleep... The problem is that Armory relies on Bitcoin-Qt/bitcoind to forward the transaction to the rest of the network Yeah, didn`t think of that. Bummer Oh! One more suggestion: possibility to add arbitrary "watch-only" address to wallet or separately. Or is it possible already? N.Z. -- I'm uncomfortable with adding watch-only addresses to watch-only wallets. It makes it way too easy for someone to plant an address in your and then pay you to that address making you believe you've received coins. However, I do want to give users some way to do it, I'm just not quite sure how to implement it, yet.
|
|
|
|
N.Z.
|
|
December 03, 2012, 12:38:01 AM |
|
Oh, just watched to the console, maybe that`s why I don`t see anything: Traceback (most recent call last): File "/opt/BitcoinArmory/ArmoryQt.py", line 2653, in dblClickLedger txtime = str(self.ledgerView.model().index(row, LEDGERCOLS.DateStr).data().toString()) UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-7: ordinal not in range(128)
It makes it way too easy for someone to plant an address in your and then pay you to that address making you believe you've received coins.
You can prevent it with big red warnings or similar
|
|
|
|
etotheipi (OP)
Legendary
Offline
Activity: 1428
Merit: 1093
Core Armory Developer
|
|
December 03, 2012, 12:42:05 AM |
|
Oh, just watched to the console, maybe that`s why I don`t see anything: Traceback (most recent call last): File "/opt/BitcoinArmory/ArmoryQt.py", line 2653, in dblClickLedger txtime = str(self.ledgerView.model().index(row, LEDGERCOLS.DateStr).data().toString()) UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-7: ordinal not in range(128)
It makes it way too easy for someone to plant an address in your and then pay you to that address making you believe you've received coins.
You can prevent it with big red warnings or similar Ahh, unicode! I haven't gotten around to making Armory unicode-friendly... but that is part of the new wallet design, and I'll be upgrading the entire application, with it
|
|
|
|
|