Bitcoin Forum
June 22, 2024, 05:39:09 PM *
News: Voting for pizza day contest
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 ... 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 [143] 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 »
2841  Bitcoin / Bitcoin Discussion / Request: Let's support "bitcoin:" URLs! on: May 02, 2012, 01:47:20 AM
So I just went to a lot of effort to get Armory to handle "bitcoin:" URLs, and getting it to register itself as the default handler for "bitcoin:" links in both Windows and Linux (or requesting permission from the user to change it if another app is set).  It was a lot of work but totally worth the effort in my opinion.  Because these clickable URL's an awesome improvement to Bitcoin on the internet!

But twice now I've purchased something online, and been met with payment sites that could trivially support them but don't!   CoinDL and Bit-pay.  This is not meant to be a complaint as much as a request:  this is super-easy to support and is awesomely useful!  

Consider CoinDL, which is a service for downloading music for Bitcoins.  The user clicks on the track they want and a payment box pops up.  If they put a bitcoin URL on there, the user simply clicks on it and Bitcoin-Qt/Multibit/Armory pops up with data pre-filled in.   "Address", "Amount" both filled in, and "<Artist> - <Album>: <Track>" already included in the transaction label/comments.  Now all they do is confirm and click send!  (and probably type in an encryption passphrase).  No copy&paste necessary, at all.  Period.

Not only is it a super-smooth experience for the user, but the user ends up with a well-documented transaction history of their music purchases along with dates and prices.  The merchant is better equipped to give a meaningful tx-comment anyway:  they can trivially put the Order# and purchase information into the message field of the URL so the user ends up with all of it documented for zero effort.  Worst case the user doesn't like it and change it before they hit send...

Here is the Bitcoin URI Spec and below is a simple example of how you would include it (using my donation address, of course!)

Code:
<a href="bitcoin:1ArmoryXcfq7TnCSuZa9fQjRYwJ4bkRKfv?amount=1.0&label=Armory%20Donation%20Address&message=Donation%20to%20Armory">Donate 1.0 BTC to the Armory Project!</a>

...which looks like:  Donate 1.0 BTC to the Armory Project!

Messages and labels in the URL can be universally encoded using the percent encoding scheme.  It consists of taking the message you want to put into the URL, and replacing all spaces with "%20", all exclamation points with %21, etc.  It's all on that link.

Just do it!


EDIT: I posted a walk-thru of the technical details for supporting URLs, which addresses both merchants and registering your application with the OS.  I posted what I've learned over the past two weeks, and wouldn't mind some feedback if folks have experience with the OS-registration stuff (specifically, Unity or KDE-based Linux systems, and Mac/OSX in general)
2842  Bitcoin / Armory / Re: Armory - Discussion Thread on: May 01, 2012, 09:28:48 PM
You're welcoming.

I'm on linux. Do you have an command-line option to debug armory? I think it could help you if there's a crash or something.

There's no crash.  But one of the things that gives Armory its robustness (in some aspects) is that Armory is so fast at scanning the blockchain, that I can keep track of all transactions and addresses simply by rescanning and recollecting the data on every load.  This removes the necessity to create special files for storing the data which could become corrupted, or somehow become un-sync'd, etc.  But that means that I can't add arbitrary data to it, either.  At the moment, you have to get your address linked to the other address by sending it some money...

However, it will be fairly easy to just add address data to the wallet format.  I'll be sure to make it part of the upcoming wallet updates...

If you suspect something is crashing, you can run Armory from the CLI:  "python /usr/share/armory/ArmoryQt.py".  This will show you all the command-line output and any errors.  It almost always has an error and useful information if you click a button and it doesn't do anything. 

I wish I had started Armory with a proper logging system in place.  It's on my to-do list to go through and implement it, but so far there have been a very few bug-reports, so it hasn't been high priority Smiley 
2843  Bitcoin / Armory / Re: Building Armory on OSX on: May 01, 2012, 09:08:58 PM
You could install Mac osx on a virtual machine.

I managed to install Snow leopard on virtualbox, using iaktos. It can't work on any hardware though, PM for the details if you want Smiley

I have tried this no less than 3 times, and I've failed every time.  It never works for me.  If you think you can help, please email me:  etotheipi@gmail.com.  But so far, I'm convinced that real hardware is the way to go...

And on that note:  do I only need one Mac VM?  Are there multiple versions of Mac/OSX to support?
2844  Bitcoin / Armory / Re: Building Armory on OSX on: May 01, 2012, 08:35:25 PM
So now that I got a couple emails about disgruntled mac users, I want to revive this thread to investigate how to proceed.

(1) I still have no mac system
(2) Macs are still expensive
(3) I don't know what kind of mac to get
(4) Is it possible to bundle everything, including python, into a directory and make the executable "/path/to/armory/python /path/to/armory/ArmoryQt.py"?  Or will I really need to produce real executables?

My most important question, going forward, is that I need to understand what is the most-widely-compatible system I can get that will compile code that can be used on other systems?

(5) If I get an older system, will the binaries produced be executable on newer Mac systems?  Older systems?
(6) How much variety is there in the setups?   In linux/debian, it always gets installed to /usr/share/armory.  Would mac have similar consistency?
(7) How much can I expect to pay for an acceptable, used Mac.

And please don't recommend I get a new Mac.  I'm sure the value is phenomenal.  But I really just need the cheapest thing that I can hook a monitor up to that I can use to compile and test Mac binaries.  Old mac donations would be ideal (or at least a cheap sale, I'll pay for shipping), but I don't want to commit until I know what's a good system to acquire.
2845  Bitcoin / Bitcoin Technical Support / Re: Armory wont release my funds... on: May 01, 2012, 07:57:50 PM
Hi ccliu,

I'll see if I can help you.  What exactly is the problem?  The wallet reports that you have some money in a wallet, but when you try to spend it, it gives you that error? 

(1) Have you verified that the funds are "available" according to blockchain.info or blockexplorer?   You can open wallet properties and see what addresses are reported to have money, and put them into one of those websites to confirm their balance.
(2) Have you tried sending it with a higher transaction fee?  There's a distinct possibility (though I've never actually seen it happen), that my transaction fee rules don't match the network for your specific transaction.  Perhaps the Tx is exactly 3.5kB big which is a gap in the logic and the recommended fee is actually too low.
(3) You mention multiple wallets.  Are they all on the same computer, all maintained by Armory?
(4) Have you tried sending multiple times, the same transaction?  Are you trying to empty every last satoshi out of one wallet?
(5) [Standard Windows Procedure] Have you tried restarting Armory?


Rather than sending me the failedtx.bin, it would actually be easier if you filled out the transaction again, and then clicked on "Create Unsigned Transaction" and copied the text box into an email for me (etotheipi@gmail.com).  Or if it's easier, just attach the failedtx.bin file.  I can work with either one...

Hopefully we'll be able to get it resolved!
2846  Bitcoin / Armory / Re: Armory - Discussion Thread on: May 01, 2012, 01:43:57 PM
Sorry, I was talking about sending adresses (adresses of other wallets). So "create adresse" was not the right word, rather registering existing public adresses to send bitcoins to.

If I send btc to a new adress this new address will be kept in the adress book ?


Ahh,  yes I misunderstood.   There is currently no way to do this,  but I hope to add it in the next major release.   At the moment, no address book is ever stored on your system directly.   It's all rederived from blockchain information every load.   It's slightly inconvenient,  but it's dramatically simpler in code.

I'll add it to my list for the next release (and it won't be too hard). Thanks for the feedback!
2847  Bitcoin / Armory / Re: Armory - Discussion Thread on: May 01, 2012, 12:56:24 PM
Hi Raphy,

I'm not sure I completely understand.  When you press the "Receive Bitcoins" button, it should pop up a new address.  Technically, you don't have to use that address, and certainly not right away.  Even if you cancel out, you're going to get another new address when you hit the "Receive Bitcoins" button again.  Rinse and repeat.


2848  Bitcoin / Bitcoin Discussion / Re: Paper Wallet Woes.. on: May 01, 2012, 04:11:16 AM
Cypherdoc presented this problem to me, and I went ahead and examined this mysterious 'y' private key.  I converted it to hex and did some digging with my tools.

It turns out there's a bug in Strongcoin paper wallet generation:  A private key is supposed to look like:

     [0x80 | 32-byte private key | 4-byte checksum]

This private key looked like:

     [0x80 | 31-byte private key | 4-byte checksum]

For the same reason that we don't write "053" when talking about the number 53, it turns out that this private key had a zero on the left end that was truncated.  When I added a zero-byte, the key imported fine.  (you have to first convert to hex, there's no way to add an arbitrary byte to the Base58 key).

This error should occur only in 1/256 keys:  the ones that have a '0x00' left byte.  It's not surprising that it was overlooked, given how infrequently it can happen!  I just emailed their support with the information.  It should be an easy bug to fix.
2849  Bitcoin / Armory / Re: Armory - Discussion Thread on: April 27, 2012, 01:16:51 AM
Just found a bug that that makes clicking on URLs not work when you have only one wallet.  D'OH!  I have half a dozen wallets, so I never test Armory with only one wallet...

I will be fixing that soon.  But for now, if you want "bitcoin:" links to work and you have only one wallet, just create a second dummy wallet.   You can delete the second wallet once I have it fixed, but I suspect it may be a little bit before I get the time to recompile and re-release everything...

2850  Bitcoin / Development & Technical Discussion / Re: Reading the block chain with a library? on: April 25, 2012, 04:40:06 PM
I started the whole project because I wanted blockchain access from python.  I quickly found out that it just wasn't possible to scan the blockchain with python, at least if I wanted it to finish within an hour.  So the C++ layer does that and SWIG makes it possible to use it from python.  Unfortunately, SWIG has some quirks, such as difficulties with function overloading (hence the addAddress_1_() method instead of addAddress(), etc).  But, in general, it's been extraordinarily reliable.  Most of the C++ classes and structures are available from python as if they were native. 

That's why I recommended looking at BlockUtils.h and BlockObjRef.h, since that lists the all the functions available for most of the object types you will need.

Please let me know if there's more things you want to do with it, and I'll add more example code.    I had always wanted to setup some kind of tutorial for describing how to use armoryengine like this, but I never had a good excuse until now Smiley


P.S. - Pieter is right... a lot of the much simpler stuff could be done by just running bitcoind and scripting RPC calls to it.  But if you ever want to expand the functionality, I think a full library will be worth the time investment.
2851  Bitcoin / Development & Technical Discussion / Re: Reading the block chain with a library? on: April 25, 2012, 01:20:07 AM
Oh yeah I noticed that part of your code, I just assumed that there was a quick way of going about this since it takes a few seconds to scan the block chain for one address and I'm looking for a way to scan and update the database for multiple addresses. Does that sound possible or am I stuck with this route you presented me? Thanks for your help btw I appreciate it.

You can use as many addAddress_1_() calls as you want before a rescan, and the rescan will still take the same amount of time.  Load 20 addresses into your wallet before loading the blockchain, and it will take the same time as if you loaded in 10,000.

After the blockchain is loaded, if you add any new addresses to the wallet, the chain will be re-scanned on the "scanBlockchainForTx()" call, and again, it won't matter how many addresses that is, it'll take the same amount of time.
2852  Bitcoin / Development & Technical Discussion / Re: Reading the block chain with a library? on: April 24, 2012, 03:53:52 PM
How does one just query the balance of a Bitcoin address with armory? is there any calculations involved(like looping over tx history and sum up a balance) or can I just call it and print out a simple balance?

Im' sure a lot of programmers could benefit the solution to this question to write their own software to use armory for like making their own Blockchain.info website or w/e.

The code was in my example, but I guess my example was too long.  So here's an extraction of it.

Code:
from armoryengine import *

cppWallet = Cpp.BtcWallet()
cppWallet.addAddress_1_( addrStr_to_hash160('1EbAUHsitefy3rSECh8eK2fdAWTUbpVUDN') )   # addrStr
TheBDM.registerWallet(cppWallet)
BDM_LoadBlockchainFile()
TheBDM.scanBlockchainForTx(cppWallet)

fullBalance = cppWallet.getFullBalance()

print '\n\nBalance of this wallet:', coin2str(fullBalance)

2853  Bitcoin / Development & Technical Discussion / Re: Reading the block chain with a library? on: April 24, 2012, 01:13:40 AM
If you tell me what you're trying to do with it, I can write more directed code samples for you.
I personally want to get the timestamp of blocks with a certain block height once per day, but didn't get around to looking at either libbitcoin or Armory.
Ideally it would be something like "TheBDM.getHeaderByHeight(12345).getTimestamp()"...

Also for armory I still have to run bitcoind to get the blockchain updated, right?

To use Armory, you need bitcoind running to receive blockchain updates and send&receive transactions.  For the example code above, you only need to have the blk0001.dat file produced by the bitcoind, but it doesn't need to be running when you run the script.

Edit:  Wow, I must have telepathy.  Glad I could answer your question... before you asked it!
2854  Bitcoin / Development & Technical Discussion / Re: Reading the block chain with a library? on: April 24, 2012, 01:05:10 AM
Here you go!  I just put together a script that not only scans the blockchain, it does something useful!  (it's at the bottom of the post)

  • It took 18 seconds for me to scan the whole blockchain from a cold start
  • It took 0.2 seconds to collect a list of every difficulty change since the genesis block.
  • It took 24 seconds on my system to count 3,532,497 unique addresses in the blockchain! (as of block 176953)

Timings will vary depending on RAM.  If you have a lot of RAM, just about the whole blockchain will be cached from the first scan, and rescans will be nearly instantaneous.  If you want to avoid rescans, make sure everything is added to your wallet and registered with TheBDM.registerWallet before BDM_LoadBlockChain().

The sample python script at the bottom of this post produced the following output (the difficulty changes):
Code:
Collect all difficulty changes...
     Block       Diff   Date
         0        1.0 2009-Jan-03 01:15pm
     32256        1.2 2009-Dec-30 01:11am
     34272        1.3 2010-Jan-11 05:48pm
     36288        1.3 2010-Jan-25 08:07am
     38304        1.8 2010-Feb-04 04:43pm
     40320        2.5 2010-Feb-14 06:52pm
     42336        3.8 2010-Feb-24 03:41am
     44352        4.5 2010-Mar-07 08:14pm
     46368        4.6 2010-Mar-21 06:54pm
     48384        6.1 2010-Apr-01 07:07am
     50400        7.8 2010-Apr-12 04:39am
     52416       11.5 2010-Apr-21 05:52pm
     54432       12.8 2010-May-04 05:46am
     56448       11.8 2010-May-19 10:13am
     58464       16.6 2010-May-29 09:57am
     60480       17.4 2010-Jun-11 07:26pm
     62496       19.4 2010-Jun-24 08:27am
     64512       23.5 2010-Jul-05 09:57pm
     66528       45.4 2010-Jul-13 04:03am
     68544      181.5 2010-Jul-16 12:29pm
     70560      244.2 2010-Jul-26 10:42pm
     72576      352.2 2010-Aug-05 03:46pm
     74592      511.8 2010-Aug-15 07:11am
     76608      623.4 2010-Aug-26 07:13pm
     78624      712.9 2010-Sep-08 01:04am
     80640      917.8 2010-Sep-18 10:04pm
     82656     1318.7 2010-Sep-28 03:58pm
     84672     1378.0 2010-Oct-12 01:35am
     86688     2149.0 2010-Oct-21 01:13am
     88704     3091.7 2010-Oct-30 06:58pm
     90720     4536.4 2010-Nov-09 07:29am
     92736     6866.9 2010-Nov-18 01:44pm
     94752     8078.2 2010-Nov-30 11:37am
     96768    12252.0 2010-Dec-09 05:20pm
     98784    14484.2 2010-Dec-21 01:34pm
    100800    16307.4 2011-Jan-03 12:10am
    102816    18437.6 2011-Jan-15 09:26am
    104832    22012.4 2011-Jan-27 03:16am
    106848    25997.9 2011-Feb-07 11:53pm
    108864    36459.9 2011-Feb-18 12:15am
    110880    55589.5 2011-Feb-27 04:59am
    112896    76192.6 2011-Mar-09 10:25am
    114912    68977.8 2011-Mar-24 10:39pm
    116928    82345.6 2011-Apr-05 04:09pm
    118944    92347.6 2011-Apr-18 03:49am
    120960   109670.1 2011-Apr-29 10:53pm
    122976   157416.4 2011-May-09 05:17pm
    124992   244112.5 2011-May-18 06:04pm
    127008   434877.0 2011-May-26 02:41pm
    129024   567269.5 2011-Jun-06 08:25am
    131040   876954.5 2011-Jun-15 09:49am
    133056  1379192.3 2011-Jun-24 07:45am
    135072  1563028.0 2011-Jul-06 04:35pm
    137088  1690895.8 2011-Jul-19 03:23pm
    139104  1888786.7 2011-Aug-01 04:11am
    141120  1805700.8 2011-Aug-15 07:44pm
    143136  1777774.5 2011-Aug-30 01:15am
    145152  1755425.3 2011-Sep-13 05:31am
    147168  1689334.4 2011-Sep-27 06:47pm
    149184  1468195.4 2011-Oct-13 09:44pm
    151200  1203461.9 2011-Oct-30 11:42pm
    153216  1192497.8 2011-Nov-14 01:56am
    155232  1090715.7 2011-Nov-29 09:20am
    157248  1155038.3 2011-Dec-12 02:42pm
    159264  1159929.5 2011-Dec-26 01:43pm
    161280  1250757.7 2012-Jan-08 01:26pm
    163296  1307728.4 2012-Jan-21 10:55pm
    165312  1379647.4 2012-Feb-04 05:32am
    167328  1376302.3 2012-Feb-18 06:24am
    169344  1496978.6 2012-Mar-02 03:25am
    171360  1498294.4 2012-Mar-16 04:09am
    173376  1626553.5 2012-Mar-29 01:41am
    175392  1577913.5 2012-Apr-12 12:04pm
Took 0.2 seconds to collect difficulty list

And here is the script itself.  It illustrates a variety of ways you can access block data.  Mainly, scanning for addresses in the blockchain with balances and unspent outputs,  and walking through every TxOut of every Tx of every Block -- we grab the address from ever standard TxOut and add it to a set() object which only allows unique addresses.

Code:
from armoryengine import *

# NOTE:
#     ALL ADDRESSES THROUGHOUT EVERYTHING ARE IN 20-BYTE BINARY FORM (hash160/addr20)
#     Use hash160_to_addrStr() and addrStr_to_hash160() to convert...

print '\n\nCreating a new C++ wallet, add a few addresses...'
cppWallet = Cpp.BtcWallet()
cppWallet.addAddress_1_( hex_to_binary('11b366edfc0a8b66feebae5c2e25a7b6a5d1cf31') )  # hash160
cppWallet.addAddress_1_( addrStr_to_hash160('1EbAUHsitefy3rSECh8eK2fdAWTUbpVUDN') )   # addrStr
cppWallet.addAddress_1_('\x1b~\xa7*\x85\t\x12\xb7=\xd4G\xf3\xbd\xc1\x00\xf1\x00\x8b\xde\xb0') # binary


print 'Addresses in this wallet:'
for i in range(cppWallet.getNumAddr()):
   print '\t', hash160_to_addrStr(cppWallet.getAddrByIndex(i).getAddrStr20())


print '\n\nRegistering the wallet with the BlockDataManager & loading...'
start = RightNow()
TheBDM.registerWallet(cppWallet)
BDM_LoadBlockchainFile()  # optional argument to specify blk0001.dat location
print 'Loading blockchain took %0.1f sec' % (RightNow() - start)


topBlock = TheBDM.getTopBlockHeight()
print '\n\nCurrent Top Block is:', topBlock
TheBDM.getTopBlockHeader().pprint()


# Add new addresses -- will rescan (which will be super fast if you ahve a lot of RAM)
cppWallet.addAddress_1_( hex_to_binary('0cdcd0f388a31b11ff11b1d8d7a9f978b37bc7af') )
TheBDM.scanBlockchainForTx(cppWallet)



print '\n\nBalance of this wallet:', coin2str(cppWallet.getSpendableBalance())
print 'Unspent outputs:'
unspentTxOuts = cppWallet.getSpendableTxOutList(topBlock)
for utxo in unspentTxOuts:
   utxo.pprintOneLine()

print '\n\nTransaction history of this wallet:'
ledger = cppWallet.getTxLedger()
for le in ledger:
   le.pprintOneLine()

print '\n\n'
print '-'*80
print 'Now for something completely different...'
start = RightNow()
print '\n\nCollect all difficulty changes...'
prevDiff = 0
for h in xrange(0,topBlock+1):
   header = TheBDM.getHeaderByHeight(h)
   currDiff = header.getDifficulty()
   if not prevDiff==currDiff:
      print str(h).rjust(10),
      print ('%0.1f'%currDiff).rjust(10),
      print '\t',unixTimeToFormatStr(header.getTimestamp())
   prevDiff = currDiff

print 'Took %0.1f seconds to collect difficulty list' % (RightNow()-start)
      
      
print '\n\nCount the number of unique addresses in the blockchain'
start = RightNow()
allAddr = set()
for h in xrange(0,topBlock+1):
   if h%10000 == 0:
      print '\tScanned %d blocks' % h
      
   header = TheBDM.getHeaderByHeight(h)
   txList = header.getTxRefPtrList()
   for tx in txList:
      for nout in range(tx.getNumTxOut()):
         txout = tx.getTxOutRef(nout)
         if txout.isStandard():
            allAddr.add(txout.getRecipientAddr())

print 'Took %0.1f seconds to count all addresses' % (RightNow()-start)
print 'There are %d unique addresses in the blockchain!' % len(allAddr)


This scanning is lower-level than what happens in Armory, so you are mainly using C++ objects.  You can find a full list of all the methods in BlockObjRef.h and BlockUtils.h.  Please ask questions if something isn't clear, or if you want to use some functionality not exemplified here.  

2855  Bitcoin / Armory / Re: Armory - Discussion Thread on: April 23, 2012, 11:34:46 PM

Armory Version 0.75-alpha on Windows!  (Testing Release)

I just posted a .msi file for installing Armory version 0.75.  This has a ton of new stuff in it, mostly stuff that makes it feel like a real program! 

Please try it, test it and give me feedback.

This has been stated before, but here's the official aggregation of features between 0.74 and 0.75:

  • Full installers on both Windows (.msi) and Debian/Ubuntu (.deb).  Creates menu entries for Armory/Testnet/Offline
  • System-tray icon and notifications.  Be notified immediately when coins are received.
  • URI-handling!  In Windows and Ubuntu <11.04, it will automatically check on load whether Armory is registered for handling "bitcoin:" links and either register it if nothing is registered, or it will ask you to switch if something else is there.   On Ubuntu 11.04+, it will do it on installation only, due to a bug in the Unity desktop.  (P.S. - this was a lot of work!  Geezuz)



As usual, I've done what feels like a lot of testing, but users inevitably find all sorts of stupid issues I didn't.  Please help test and I can make 0.75 final.

Just be aware the blockchain is getting bigger, and the loading time is getting longer on Windows.  I hope kr105 comes through, claiming he knows how to fix the windows MMAP code, but I'll be doing some fixes on it, too...eventually.
2856  Bitcoin / Armory / Re: Armory - Discussion Thread on: April 23, 2012, 02:43:00 PM
Question for Etho, will the full version of Armory be coming out on 32 bit soon?

Thanks!

Sorry BitAvenue.  Unfortunately, my efforts have failed at getting Armory to work on Windows 32-bit.  It does work in Linux 32-bit, though.

It might be another month before I can even start thinking about fixing this.  It will be fixed, but it might not be until I get native networking (and thus have to rework my blockchain code, anyway).

P.S. -- my screenname is "Eto"... it's actually:  e-to-the-i-pi


Ok, thanks for your replies, for me it was important to get to the bottom of the physical handling of the keys.

One final line of questions, your tutorial recommends  "Load Armory on the offline computer"
http://bitcoinarmory.com/index.php/using-offline-wallets-in-armory

Do you have a recommended method for this? Is it the same method for Armory s/ware updates and dependency updates, etc? Should the offline computer have OS installed from a DVD/CD and OS s/ware updates done via USB? I mean how rigorous is the "offline" status of this machine? Like "absolutely never been connected" ... or something less so maybe?

I was just discussing this with someone else.  I usually recommend using Linux, setting up the system online and disconnect before you create your first wallet.  But, with my recent release of .deb files, I found it's a lot easier now to setup everything from entirely offline... it's only 30 MB of downloads!

I'm waiting for some more testing/feedback before I completely release it.  But if you are experienced with Linux and have a spare online linux system, this can be super easy:

(1) Load the offline OS (preferably Ubuntu 10.04 / 32-bit, since I'll eventually be distributing offline packages for that).
(2) Go to Synaptic package manager and search-for-and-mark-for-installation:  "python-qt4" and "python-twisted"
(3) File-->Generate Download Script
(4) It will create a bash script of wget commands for all dependencies:  about 30 of them.
(5) Take to online linux system, double-click, Run In Terminal.
(6) Take back to offline system and "Add Downloaded Packages" from Synaptic (below the "Generate Download Script")

That will install all the dependencies, and then you only have to run the .deb file I posted.  I will eventually be releasing a single .tar.gz that includes all these debs, along with Armory itself, so you only need to move one file and everything will work!



2857  Bitcoin / Development & Technical Discussion / Re: Reading the block chain with a library? on: April 23, 2012, 02:30:11 PM
Armory is perfect this.  It is C++ accessed in Python (via SWIG).  You only ever touch python.

I'm not at my development computer now but there is example code on my github page (though many of the examples were created before RAM reduction, they will mostly still work)

Code:
   from armoryengine import *

   print '\n\nLoading Blockchain from:', BLK0001_PATH
   BDM_LoadBlockchainFile()  # optional argument to specify blk0001.dat location
   print 'Done!'

   print '\n\nCurrent Top Block is:', TheBDM.getTopBlockHeader().getBlockHeight()
   TheBDM.getTopBlockHeader().pprint()

   tx = TheBDM.getTxByHash( hex_to_binary('9c633b5689e462ddf3d52a6edc64226cedd1e1749d0b8e2f70cd9550bfa74c72') )
   tx.pprint()

   # Create and register the wallet before the LoadBlockchainFile call, to merge the scans
   # For now, this will rescan the blockchain
   cppWallet = Cpp.BtcWallet()
   cppWallet.addAddress_1_( hex_to_binary('9c633b56899c633b56899c633b56899c633b5689') )  # hash160
   TheBDM.registerWallet(cppWallet)
   TheBDM.scanBlockchainForTx(cppWallet)
   print cppWallet.getSpendableBalance()

   unspentTxOuts = cppWallet.getSpendableTxOutList()
   for utxo in unspentTxOuts:
      utxo.pprintOneLine()
  
(note, this code is notional since I can't test it where I am, but the syntax is nearly correct)

When I get home later, I can post more example code for how to access what you want.  If you tell me what you're trying to do with it, I can write more directed code samples for you.
2858  Bitcoin / Armory / Re: Armory - Discussion Thread on: April 23, 2012, 03:29:39 AM
Not true, I was considering every possibility. One particular offline example, thief comes in and physically takes your "offline" drive (and contents of house safe). If people are going to feel comfortable about storing life-savings on offline (or online) drives at home the stakes go up. You must have considered physical loss surely?

Well, of course!  But that's two orders of magnitude less likely than virtual threats, which can sweep across thousands of computers from the safety of Tor and grab all the low-hanging fruit (users with shitty security).  I believe that 99.9%+ percent of Bitcoin thefts will be due to virtual security, not physical security.  For someone to physically steal your offline system from your house they have to:

(1) Be targeting you because they know you have money, or
(2) Be a low-life burglar that wouldn't have a clue how to do a low-level scan for residue private keys from your hard-drive (if they even know what Bitcoin is).

And I believe that if someone is targeting you and gets physical access to the system, it's because you have lots of money and would've been using encryption from the start.  There's just not many situations I can think of where it would make a tremendous difference whether the secure-delete option was implemented (if it were possible).  On top of that, no matter what security procedures I implement, you'll almost always be compromised if the attacker is targeting you and has physical access.  There's too many things they can do between planting keyloggers, viruses, trojans, etc.

The more-important part is the GPU-resistent key-stretching used for Armory wallets.  That's gives you the best chance of protection from virtual threats and physical threats (mainly physical, though).  As I conceded, it doesn't hurt for me try to overwrite the wallets in-place when deleting.  It may provide no benefit whatsoever, but it's the best I can do.
2859  Bitcoin / Armory / Re: Armory - Discussion Thread on: April 23, 2012, 12:56:01 AM
Python 2.7 package says dependency not satisfied libpython2.6 Wink

Whoops!   Just replaced the download with the correct one.
2860  Bitcoin / Armory / Re: Armory - Discussion Thread on: April 23, 2012, 12:26:31 AM
A Linux testing release:  Armory 0.75-alpha

-- System tray operations and notifications (teaser provided earlier)
-- URI handling

The URI handling works great (besides being a little ugly) on Ubuntu 10.04 and earlier, and it automatically registers itself on load (asking for permission if something else is there already).  Ubuntu 10.10+ has a bug in the OS, so registration happens at installation, and won't re-register until it is reinstalled -- better than nothing!  I need to improve the layout/design of the URI-select window, but it does work!

Debian/Ubuntu 32-bit / Python 2.6 (Ubuntu 9.04-10.10)
Debian/Ubuntu 64-bit / Python 2.6 (Ubuntu 9.04-10.10)
Debian/Ubuntu 64-bit / Python 2.7 (Ubuntu 11.04+)

There's a small issue with the .debs that they don't install the testnet and offline menu entries if the previous Armory was not removed.  So you can use "sudo dpkg -r armory" to remove the previous armory before installing the new one, or use Synaptic:  search for "Armory" then "mark for removal" and then apply.   Just another bug to figure out...

Please test!  (it's the "urihandle" branch, for those on a different distro that still compile manually).

Windows URIs next!
Pages: « 1 ... 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 [143] 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!