Bitcoin Forum
April 27, 2024, 12:44:19 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 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 ... 231 »
  Print  
Author Topic: Armory - Discussion Thread  (Read 521678 times)
runeks
Legendary
*
Offline Offline

Activity: 980
Merit: 1008



View Profile WWW
April 15, 2013, 08:55:02 PM
 #2061

etotheipi, do you have an update on the offline wallet system, where Armory in offline mode is running on an offline device, connected to a PC via a USB-to-serial adapter, and the Armory running in online mode on the PC is able to send transactions to the offline device for signing?

I really want to get this up and running, so I'm interested in hearing how far you are with this, and if there's anything I can do to help.

You can use the offline_server branch of my fork. It's based on etotheipi's latest testing branch.

You'll have to disable the serial TTY on the Pi. I used this guide. Then compile Armory for the Pi. I used this guide. Finally plug the Pi into your computer (it can be powered by the serial cable), transfer the compiled files (from a USB drive, not over the serial cable!) and run extras/offline_serial_server.py (for me it's /dev/ttyAMA0 and baud rate 115200).

For your online computer, you'll have to be in advanced or expert mode, then you can set the device and baud rate in the settings dialog. Once that is complete, you should see the status change to connected in the bottom right. Now, on the dialog from which you can save an offline transaction, you can also transmit it to the offline device. You'll be prompted for the wallet passphrase if your wallet is encrypted. Enter it on the Pi's keyboard. Once the Pi transmits the signed transaction back to your computer, it will automatically advance to the Broadcast dialog.

It should be pretty easy to use, but I created it so maybe that's just me. Cheesy
That's awesome! Thanks for coding and releasing this. I hope this is merged into mainline Armory at some point.

I'm planning on starting with the old school method of transferring transactions with a USB stick, and, when I'm comfortable with this, move on to this method.
1714221859
Hero Member
*
Offline Offline

Posts: 1714221859

View Profile Personal Message (Offline)

Ignore
1714221859
Reply with quote  #2

1714221859
Report to moderator
Be very wary of relying on JavaScript for security on crypto sites. The site can change the JavaScript at any time unless you take unusual precautions, and browsers are not generally known for their airtight security.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714221859
Hero Member
*
Offline Offline

Posts: 1714221859

View Profile Personal Message (Offline)

Ignore
1714221859
Reply with quote  #2

1714221859
Report to moderator
etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
April 18, 2013, 05:52:39 AM
 #2062

Question!

Has anyone ever noticed a difference between the Win64 and Windows_all versions of Armory, on 64-bit Windows?  I just noticed on my googlecode download page that 99.9% of downloads are for the win32 version.  And I know more than 0.1% of users are using 64-bit!  

I ask, because it's kind of a pain to keep producing both 32-bit and 64-bit versions of the software.  If I could reduce it to just one Windows version, that would dramatically reduce the amount of work I have to do for a release!    Perhaps this proves that the 32-bit version is interchangeable with the 64-bit version and I can ditch it...

Thoughts/experiences?


Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
K1773R
Legendary
*
Offline Offline

Activity: 1792
Merit: 1008


/dev/null


View Profile
April 18, 2013, 09:12:31 AM
 #2063

Question!

Has anyone ever noticed a difference between the Win64 and Windows_all versions of Armory, on 64-bit Windows?  I just noticed on my googlecode download page that 99.9% of downloads are for the win32 version.  And I know more than 0.1% of users are using 64-bit!  

I ask, because it's kind of a pain to keep producing both 32-bit and 64-bit versions of the software.  If I could reduce it to just one Windows version, that would dramatically reduce the amount of work I have to do for a release!    Perhaps this proves that the 32-bit version is interchangeable with the 64-bit version and I can ditch it...

Thoughts/experiences?


win32 works on win64 too therefore it would be better to just build for win32?!

[GPG Public Key]
BTC/DVC/TRC/FRC: 1K1773RbXRZVRQSSXe9N6N2MUFERvrdu6y ANC/XPM AK1773RTmRKtvbKBCrUu95UQg5iegrqyeA NMC: NK1773Rzv8b4ugmCgX789PbjewA9fL9Dy1 LTC: LKi773RBuPepQH8E6Zb1ponoCvgbU7hHmd EMC: EK1773RxUes1HX1YAGMZ1xVYBBRUCqfDoF BQC: bK1773R1APJz4yTgRkmdKQhjhiMyQpJgfN
Raoul Duke
aka psy
Legendary
*
Offline Offline

Activity: 1358
Merit: 1002



View Profile
April 18, 2013, 09:41:32 AM
 #2064

Is there anything in Armory that takes advantage of the 64bit arch, for performance reasons for example?
If the answer is no, 32bits only releases are enough I would say.
etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
April 18, 2013, 04:10:51 PM
 #2065

Well, I'll be damned.  I actually linked both the Win64 and Windows_all versions to the Windows_all download link.  That explains a lot!

I think, for now, I will only post the Windows_all version, and link users to the 64-bit version if they have difficulties.  

OH!  I bet this is the reinstall problem so many people had!  Armory can't start after a fresh install:  because they thought they had the 64-bit version installed previously, and installed the new 64-bit version.  But they actually had the 32-bit version installed.  It doesn't change the fact that the installer should do a full overwrite anyway, but it does make more sense, now.

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
April 18, 2013, 05:23:34 PM
 #2066

Thanks to my googlecode-upload script, I uploaded all the new installers and made these pretty links at the same time!

Windows (32- and 64-bit)
Version 0.88-beta for Windows 32- and 64-bit

Linux (Ubuntu/Debian)
Version 0.88-beta for Ubuntu/Debian 64-bit
Version 0.88-beta for Ubuntu/Debian 32-bit

Mac/OSX (doesn't work for everyone!)
Version 0.88-beta for Mac/OSX

Signed SHA256 hashes (mainly for the OSX installer, which I can't sign, yet)
Version 0.88-beta SHA256 hashes of installers

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
Mooshire
Sr. Member
****
Offline Offline

Activity: 322
Merit: 250



View Profile
April 18, 2013, 07:56:48 PM
 #2067

I run Windows 8. Every time I try to run Armory, I get this:
Code:
Traceback (most recent call last):
  File "ArmoryQt.py", line 4804, in <module>
  File "ArmoryQt.py", line 466, in __init__
  File "ArmoryQt.py", line 3867, in setDashboardDetails
  File "armoryengine.pyc", line 10777, in getSDMState
  File "armoryengine.pyc", line 10809, in getSDMStateLogic
  File "armoryengine.pyc", line 10942, in getTopBlockInfo
  File "armoryengine.pyc", line 10934, in updateTopBlockInfo
  File "armoryengine.pyc", line 10867, in createProxy
TypeError: %d format: a number is required, not str

etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
April 18, 2013, 08:00:17 PM
 #2068

I run Windows 8. Every time I try to run Armory, I get this:
Code:
Traceback (most recent call last):
  File "ArmoryQt.py", line 4804, in <module>
  File "ArmoryQt.py", line 466, in __init__
  File "ArmoryQt.py", line 3867, in setDashboardDetails
  File "armoryengine.pyc", line 10777, in getSDMState
  File "armoryengine.pyc", line 10809, in getSDMStateLogic
  File "armoryengine.pyc", line 10942, in getTopBlockInfo
  File "armoryengine.pyc", line 10934, in updateTopBlockInfo
  File "armoryengine.pyc", line 10867, in createProxy
TypeError: %d format: a number is required, not str

Apparently you have a non-numeric port number in your bitcoin.conf file?  Did you create that file yourself?  What's the port number?

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
Mooshire
Sr. Member
****
Offline Offline

Activity: 322
Merit: 250



View Profile
April 18, 2013, 08:06:07 PM
 #2069

Yes, I remember creating the file myself. fixed it, works now! thanks!

Deth
Hero Member
*****
Offline Offline

Activity: 518
Merit: 500



View Profile
April 18, 2013, 08:56:23 PM
 #2070

etotheipi, just for you to know, latest v0.88-beta from github still has issue with unicode when trying to enter settings
Code:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 228-229: ordinal not in range(128)

Traceback (most recent call last):
  File "/opt/BitcoinArmory/ArmoryQt.py", line 716, in openSettings
    dlgSettings = DlgSettings(self, self)
  File "/opt/BitcoinArmory/qtdialogs.py", line 10215, in __init__
    'specified format.' % exampleStr )
  File "/opt/BitcoinArmory/qtdefines.py", line 212, in __init__
    self.setText(txt, **kwargs)
  File "/opt/BitcoinArmory/qtdefines.py", line 215, in setText
    text = str(text)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 228-229: ordinal not in range(128)

etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
April 18, 2013, 09:03:33 PM
 #2071

etotheipi, just for you to know, latest v0.88-beta from github still has issue with unicode when trying to enter settings
Code:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 228-229: ordinal not in range(128)

Traceback (most recent call last):
  File "/opt/BitcoinArmory/ArmoryQt.py", line 716, in openSettings
    dlgSettings = DlgSettings(self, self)
  File "/opt/BitcoinArmory/qtdialogs.py", line 10215, in __init__
    'specified format.' % exampleStr )
  File "/opt/BitcoinArmory/qtdefines.py", line 212, in __init__
    self.setText(txt, **kwargs)
  File "/opt/BitcoinArmory/qtdefines.py", line 215, in setText
    text = str(text)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 228-229: ordinal not in range(128)

Gah!  I missed something!  I fixed the unicode path names, but not if your default datetime format has unicode characters.  That's unfortunate.  You can manually modify qtdefines.py:215 to say "unicode(text)" instead of "str(text)".  I know that doesn't solve it for everyone else...

That's also what happens when I don't have a lot of people testing.  I have conceded that certain bugs will only be found after major releases, and that there will be a v0.XX.1 that will have to happen 1-2 weeks later.  Oh well, there's no real way around it (I don't blame people for being hesitant about testing new versions with their primary wallet).

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
Deth
Hero Member
*****
Offline Offline

Activity: 518
Merit: 500



View Profile
April 18, 2013, 09:18:15 PM
 #2072

Thanks! It works now Smiley I`ll be back if found any new bugs Wink

opentoe
Legendary
*
Offline Offline

Activity: 1274
Merit: 1000

Personal text my ass....


View Profile WWW
April 19, 2013, 03:27:46 AM
 #2073

My Armory just stopped working. It crashes when trying to sync up. Before I start messing around with things, I would like which direction to go in? I do have bitcoin in my wallet. Please advise.



Faulting application name: Armory.exe, version: 0.0.0.0, time stamp: 0x49180193
Faulting module name: MSVCR90.dll, version: 9.0.30729.6871, time stamp: 0x4fee6073
Exception code: 0x40000015
Fault offset: 0x0005beae
Faulting process id: 0x1f84
Faulting application start time: 0x01ce3cad710e53a1
Faulting application path: C:\Program Files (x86)\Armory\Armory Bitcoin Client\Armory.exe
Faulting module path: C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6871_none_50944e7cbcb706e5\MSVCR90.dll
Report Id: 0edbb14d-a8a1-11e2-be93-180373e36d96
Faulting package full name:
Faulting package-relative application ID:

Need help with your Newznab usenet indexer? http://www.newznabforums.com
etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
April 19, 2013, 03:29:13 AM
 #2074

My Armory just stopped working. It crashes when trying to sync up. Before I start messing around with things, I would like which direction to go in? I do have bitcoin in my wallet. Please advise.



Faulting application name: Armory.exe, version: 0.0.0.0, time stamp: 0x49180193
Faulting module name: MSVCR90.dll, version: 9.0.30729.6871, time stamp: 0x4fee6073
Exception code: 0x40000015
Fault offset: 0x0005beae
Faulting process id: 0x1f84
Faulting application start time: 0x01ce3cad710e53a1
Faulting application path: C:\Program Files (x86)\Armory\Armory Bitcoin Client\Armory.exe
Faulting module path: C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6871_none_50944e7cbcb706e5\MSVCR90.dll
Report Id: 0edbb14d-a8a1-11e2-be93-180373e36d96
Faulting package full name:
Faulting package-relative application ID:

Did you uninstall the previous version before installing the new one?  At least, you can rerun the installer and choose "Repair Installation".

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
April 19, 2013, 04:11:16 AM
 #2075

I run Windows 8. Every time I try to run Armory, I get this:
Code:
Traceback (most recent call last):
  File "ArmoryQt.py", line 4804, in <module>
  File "ArmoryQt.py", line 466, in __init__
  File "ArmoryQt.py", line 3867, in setDashboardDetails
  File "armoryengine.pyc", line 10777, in getSDMState
  File "armoryengine.pyc", line 10809, in getSDMStateLogic
  File "armoryengine.pyc", line 10942, in getTopBlockInfo
  File "armoryengine.pyc", line 10934, in updateTopBlockInfo
  File "armoryengine.pyc", line 10867, in createProxy
TypeError: %d format: a number is required, not str

Argh!  Just found that there is a real bug here, not user error.  The issue is that i'm not casting the "rpcport" in the bitcoin.conf file to an integer, so it's failing to produce the correct URL when you have any rpcport argument in the bitcoin.conf file.  And for Windows users, there's not a convenient way around this bug.

I can't believe no testers ran into this!  Man, I need more testers...

The only solution I know for working around this with 0.88-beta is to remove rpcport from your bitcoin.conf file, and run bitcoin-qt/bitcoind with the -rpcport command-line argument.  Then run Armory with the -satoshi-port argument that matches.

I hate releasing a bugfix version right after a regular release and triggering notifications again (effectively spamming users).  I guess, I could accumulate these bugs into a v0.88.1-beta version, and silently update it, without triggering notifications.  But still change all the links to point to the new version.  I guess that works...


Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
oakpacific
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1000


View Profile
April 20, 2013, 03:48:48 AM
Last edit: April 20, 2013, 04:03:34 AM by oakpacific
 #2076

I have got a maybe silly idea, and this is not strictly related to Armory, but since I consider it silly and you are possibly the only one I knew here who is both knowledgeable and friendly enough to help a noob, I think maybe I can post it here to get some advices from you before I decide to make a thread or not....I am sorry.

The idea is to spend bitcoins in a way similar to physical coins to prevent the "race attack". So we know traditionally the currency datas are represented in a special kind of currency data type, as they are not infinitely divisible, when we spend the fiats the smallest denomination is usually one cent/one penny, and any amount can be splitted into a relatively small number of fixed denominations(1 cent, 5 cents, 1 dollar, 5 dollars, 10 dollars....). What if we apply the same way of thinking to Bitcoin, and implement the following feature in the client: create multiple addresses(like hundreds) in a batch, and charge each with a fixed amount of bitcoins(5 BTCs, 2 BTCs, 1BTC, 500mBTCs, 200mBTCs, etc), the amount charged must be a number from a set of "denominations", and the number of addresses should be enough for multiple purchases in a relatively long period of time as each will be only used once during this period. Now whenever the user wants to make a purchase, his bitcoin client will pick a number of addresses with the right combined balance and completely spend them to send transactions to the merchant(no more than 12 are needed to be used for anything cheaper than 10BTCs ATM I guess), then the merchant can simply perform a check of all addresses used by the customer, and refuse to deliver the goods if any of these addresses containing unconfirmed/less than X confirmations transactions, so that the merchant can effectively prevent a race attack, without giving the customer too much inconvenience, what do you think?

https://tlsnotary.org/ Fraud proofing decentralized fiat-Bitcoin trading.
opentoe
Legendary
*
Offline Offline

Activity: 1274
Merit: 1000

Personal text my ass....


View Profile WWW
April 20, 2013, 10:08:07 AM
 #2077

I run Windows 8. Every time I try to run Armory, I get this:
Code:
Traceback (most recent call last):
  File "ArmoryQt.py", line 4804, in <module>
  File "ArmoryQt.py", line 466, in __init__
  File "ArmoryQt.py", line 3867, in setDashboardDetails
  File "armoryengine.pyc", line 10777, in getSDMState
  File "armoryengine.pyc", line 10809, in getSDMStateLogic
  File "armoryengine.pyc", line 10942, in getTopBlockInfo
  File "armoryengine.pyc", line 10934, in updateTopBlockInfo
  File "armoryengine.pyc", line 10867, in createProxy
TypeError: %d format: a number is required, not str

Argh!  Just found that there is a real bug here, not user error.  The issue is that i'm not casting the "rpcport" in the bitcoin.conf file to an integer, so it's failing to produce the correct URL when you have any rpcport argument in the bitcoin.conf file.  And for Windows users, there's not a convenient way around this bug.

I can't believe no testers ran into this!  Man, I need more testers...

The only solution I know for working around this with 0.88-beta is to remove rpcport from your bitcoin.conf file, and run bitcoin-qt/bitcoind with the -rpcport command-line argument.  Then run Armory with the -satoshi-port argument that matches.

I hate releasing a bugfix version right after a regular release and triggering notifications again (effectively spamming users).  I guess, I could accumulate these bugs into a v0.88.1-beta version, and silently update it, without triggering notifications.  But still change all the links to point to the new version.  I guess that works...



So my Armory install is broke? I was the OP of the error that was coming up. I'm not really sure what I'm suppose to do. I didn't do any upgrades or make any changes. And I still have bitcoin in my Armory wallet. I don't know what you mean when you say run it with this argument or whatever. Can you be a bit more detailed?

Thanks

Need help with your Newznab usenet indexer? http://www.newznabforums.com
etotheipi (OP)
Legendary
*
Offline Offline

Activity: 1428
Merit: 1093


Core Armory Developer


View Profile WWW
April 20, 2013, 04:26:18 PM
 #2078

So my Armory install is broke? I was the OP of the error that was coming up. I'm not really sure what I'm suppose to do. I didn't do any upgrades or make any changes. And I still have bitcoin in my Armory wallet. I don't know what you mean when you say run it with this argument or whatever. Can you be a bit more detailed?

Just uninstall your current Armory and install the new version, 0.88.1.  That error you originally reported has been fixed.

https://bitcoinarmory.com/get-armory/

Founder and CEO of Armory Technologies, Inc.
Armory Bitcoin Wallet: Bringing cold storage to the average user!
Only use Armory software signed by the Armory Offline Signing Key (0x98832223)

Please donate to the Armory project by clicking here!    (or donate directly via 1QBDLYTDFHHZAABYSKGKPWKLSXZWCCJQBX -- yes, it's a real address!)
runeks
Legendary
*
Offline Offline

Activity: 980
Merit: 1008



View Profile WWW
April 21, 2013, 09:57:36 AM
 #2079

etotheipi, what version of Armory do you recommend getting from the git repository for installation on an offline Raspberry Pi wallet?

I see only tags with either a -beta or -alpha suffix. Should I just get the version tagged v0.88-beta, or is there a stable version somewhere that would be more suitable?

Thinking about it, I guess it's possible to upgrade in the future, although I'd like to avoid that, so no new program code is introduced to the system after the offline wallet has been created on the device. But as long as it's signed by your offline signing key (which I presume you keep on an offline device so it's really hard to steal), I guess it's pretty safe to just git clone on an online computer, bring the source code over to the offline wallet and verify its signature there (assuming this can be done without an Internet connection), and then just build it on the offline device.
demzie
Sr. Member
****
Offline Offline

Activity: 266
Merit: 250



View Profile
April 21, 2013, 10:27:15 AM
 #2080

Hi,

Just followed the exact instructions on the website to make an offline wallet wit ubuntu.
Used the offline module (.sh) installer. But it gives me 2 broken packages/dependencies.
Armory wont start.

Fresh install and second thing i did was running the installer, nothing more/nothing less..

Ubuntu 10.04-32bit was used.

Hope you can help me out.
Pages: « 1 ... 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 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 ... 231 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!