Bitcoin Forum
May 08, 2024, 01:55:28 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 [3] 4 5 »  All
  Print  
Author Topic: Gangsta, double spend con replace-by-fee  (Read 9499 times)
picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
March 06, 2015, 05:37:34 PM
 #41

Non mi quadra:
Quote
Example of double-SHA-256 encoding of string "hello":

hello
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (first round of sha-256)
9595c9df90075148eb06860365df33584b75bff782a510c6cd4883a419833d50 (second round of sha-256)
A me il secondo hash viene:
d7914fe546b684688bb95f4f888a92dfc680603a75f23eb823658031fff766d9 (sembra + corto ma dovrebbe avere 64 caratteri pure lui) comunque e' differente. L0ho calcolato sia con sha256sum da linea di comando che con una estensione per libre (open) office. In entrambi i casi ottengo lo stesso risultato differente da quello della pagina ...

Il secondo passaggio va fatto sui byte del primo risultato, non sulla sua rappresentazione esadecimale, che è quello che fai tu se usi sha256sum.
Come spiegato qui, se usi un tool che produce output binario potrai verificare che il risultato è corretto:

Code:
echo -n hello |openssl dgst -sha256 -binary |openssl dgst -sha256



In effetti ha senso, pirla io ... grazie.

Waves mi piaceva ora non più.
1715176528
Hero Member
*
Offline Offline

Posts: 1715176528

View Profile Personal Message (Offline)

Ignore
1715176528
Reply with quote  #2

1715176528
Report to moderator
1715176528
Hero Member
*
Offline Offline

Posts: 1715176528

View Profile Personal Message (Offline)

Ignore
1715176528
Reply with quote  #2

1715176528
Report to moderator
1715176528
Hero Member
*
Offline Offline

Posts: 1715176528

View Profile Personal Message (Offline)

Ignore
1715176528
Reply with quote  #2

1715176528
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715176528
Hero Member
*
Offline Offline

Posts: 1715176528

View Profile Personal Message (Offline)

Ignore
1715176528
Reply with quote  #2

1715176528
Report to moderator
1715176528
Hero Member
*
Offline Offline

Posts: 1715176528

View Profile Personal Message (Offline)

Ignore
1715176528
Reply with quote  #2

1715176528
Report to moderator
gdassori (OP)
Hero Member
*****
Offline Offline

Activity: 980
Merit: 1002



View Profile
March 16, 2015, 08:09:25 PM
Last edit: March 17, 2015, 10:18:05 AM by gdassori
 #42

Ad un mese dal rilascio, la rete si è *spontaneamente* resa conto di gangsta!
A parte che in questo thread e in firma non l'avevo pubblicizzato da nessuna parte, e non sono un grande frequentatore delle altre sezioni, dubito di avere anche solo un post in intl. sect nell'ultimo mese.

http://reddit.com/r/Bitcoin/comments/2z7y0d/gangsta_replace_by_fee_double_spend_tool/
https://twitter.com/petertoddbtc/status/577534426004897792

Sono un sacco divertito  Grin Grin

<- io, adesso, molto divertito

davvo
Hero Member
*****
Offline Offline

Activity: 588
Merit: 500



View Profile
March 17, 2015, 12:02:12 AM
 #43

Diciamo che pero un retweet di Peter Todd può aiutare molto ad accorgersi "spontaneamente" della cosa  Grin Grin Grin Grin Grin

Alla fine però, quando un piccolo script viene apprezzato e se ne parla in giro, penso sia la cosa migliore che un dev possa volere Smiley
arulbero
Legendary
*
Offline Offline

Activity: 1915
Merit: 2074


View Profile
March 17, 2015, 04:59:29 PM
 #44

In ogni caso quando esegui una transazione l'indirizzo mittente viene interamente "svuotato", ed eventualmente (bad practice: address reusing, gli indirizzi BTC debbono essere pensati come "usa e getta") riempito di nuovo dal resto, ma se tu volessi effettuare una nuova transazione, non potresti usare gli stessi input della precedente.

Un input è composto, oltre che dalle sue componenti crittografiche e dalle istruzioni di esecuzione, dall'id transazione di provenienza dei fondi (è questa la cosa importante: ID transazione, non indirizzo).

All'interno della composizione di una transazione l'indirizzo sorgente non appare affatto!

Quindi, anche in presenza di "fondi sufficienti" (perché hai usato come change address della prima tx l'indirizzo stesso) la seconda tx non sarà valida, perché l'id transazione specificato nella precedente sarà già stato "impegnato" per il blocco successivo.


Vediamo se ho capito bene il meccanismo transazione/indirizzi :

caso 1) se ho 2 BTC su un mio indirizzo A provenienti da una transazione x, allora devo spenderli tutti (non posso spenderne solo una parte, quindi si crea un resto)

caso 2) se ho 2 BTC sul mio indirizzo A e 3 BTC sul mio indirizzo B provenienti dalla stessa transazione x, allora se voglio spendere 2 BTC posso spendere i 2 BTC dell'indirizzo A senza toccare i 3 BTC dell'indirizzo B (non importa che tutti e 5 provengano dalla stessa transazione, sono in qualche modo "separati" dagli indirizzi su cui sono stati "indirizzati")

caso 3) se ho 2 BTC sul mio indirizzo A provenienti dalla transazione x e se ho altri 4 BTC sempre sul mio indirizzo A provenienti da un'altra transazione y, allora sono obbligato a spendere tutti i 6 BTC in blocco (non posso ad esempio spendere solo i 2 BTC provenienti dalla transazione x, dal momento che i 2 BTC della transazione x e i 4 BTC della transazione y sono "legati" perchè sono finiti nell'indirizzo A, quindi anche qui si crea un resto)


E' tutto giusto?
picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
March 17, 2015, 07:00:09 PM
 #45

(...)
caso 3) se ho 2 BTC sul mio indirizzo A provenienti dalla transazione x e se ho altri 4 BTC sempre sul mio indirizzo A provenienti da un'altra transazione y, allora sono obbligato a spendere tutti i 6 BTC in blocco (non posso ad esempio spendere solo i 2 BTC provenienti dalla transazione x, dal momento che i 2 BTC della transazione x e i 4 BTC della transazione y sono "legati" perchè sono finiti nell'indirizzo A, quindi anche qui si crea un resto)


E' tutto giusto?


Secondo me il 3) è sbagliato. Puoi spendere sia i 2 che i 4 proprio perche' di due transazioni differenti anche se dirette allo stesso indirizzo.

Waves mi piaceva ora non più.
FaSan
Hero Member
*****
Offline Offline

Activity: 658
Merit: 500



View Profile
March 17, 2015, 07:02:30 PM
 #46

(...)
caso 3) se ho 2 BTC sul mio indirizzo A provenienti dalla transazione x e se ho altri 4 BTC sempre sul mio indirizzo A provenienti da un'altra transazione y, allora sono obbligato a spendere tutti i 6 BTC in blocco (non posso ad esempio spendere solo i 2 BTC provenienti dalla transazione x, dal momento che i 2 BTC della transazione x e i 4 BTC della transazione y sono "legati" perchè sono finiti nell'indirizzo A, quindi anche qui si crea un resto)


E' tutto giusto?


Secondo me il 3) è sbagliato. Puoi spendere sia i 2 che i 4 proprio perche' di due transazioni differenti anche se dirette allo stesso indirizzo.


Esatto. Vedi le singole TX come singole banconote a cui chiaramente non puoi strappare pezzi, ma devi darla intera e ricevere un resto.



FaSan
arulbero
Legendary
*
Offline Offline

Activity: 1915
Merit: 2074


View Profile
March 17, 2015, 08:35:29 PM
 #47

(...)

caso 2) se ho 2 BTC sul mio indirizzo A e 3 BTC sul mio indirizzo B provenienti dalla stessa transazione x, allora se voglio spendere 2 BTC posso spendere i 2 BTC dell'indirizzo A senza toccare i 3 BTC dell'indirizzo B (non importa che tutti e 5 provengano dalla stessa transazione, sono in qualche modo "separati" dagli indirizzi su cui sono stati "indirizzati")

caso 3) se ho 2 BTC sul mio indirizzo A provenienti dalla transazione x e se ho altri 4 BTC sempre sul mio indirizzo A provenienti da un'altra transazione y, allora sono obbligato a spendere tutti i 6 BTC in blocco (non posso ad esempio spendere solo i 2 BTC provenienti dalla transazione x, dal momento che i 2 BTC della transazione x e i 4 BTC della transazione y sono "legati" perchè sono finiti nell'indirizzo A, quindi anche qui si crea un resto)

E' tutto giusto?

Secondo me il 3) è sbagliato. Puoi spendere sia i 2 che i 4 proprio perche' di due transazioni differenti anche se dirette allo stesso indirizzo.

Esatto. Vedi le singole TX come singole banconote a cui chiaramente non puoi strappare pezzi, ma devi darla intera e ricevere un resto.

FaSan


Certo che la distinzione è sottile. A prima vista mi sembrava che i casi 2) e 3) dovessero essere per forza o entrambi giusti o entrambi sbagliati.
Se sono le transazioni che contano, come dice FaSan, non dovrei poter spendere separatamente i 2 BTC dell'indirizzo A e i 3 BTC dell'indirizzo B, in quanto provenienti  da una stessa transazione (ma questo sarebbe illogico, in quanto se l'indirizzo A e l'indirizzo B appartenessero a due persone diverse, una delle due potrebbe spendere i btc dell'altra). Da questa ovvia considerazione avevo erroneamente dedotto che "contassero" di più gli address che le transazioni.

Quindi riassumendo le singole TX sono le singole banconote e gli address sono le tasche, quindi:

nel caso 3) ho una banconota da 2 BTC e una da 3 BTC entrambe nella tasca A, e quindi posso spenderle separatamente

nel caso 2) ho una banconota da 2 BTC nella tasca A e 3 BTC nella tasca B (che sono il frutto però del cambio di un'unica banconota da 5 BTC, visto che provengono da un'unica transazione), e quindi posso ancora spenderli separatamente

Quindi più precisamente si potrebbe dire che una transazione non è una banconota, ma lo è l'accoppiata transazione-indirizzo di destinazione (mentre mi pare di aver capito che gli indirizzi d'origine non contino in questo tipo di ragionamento).

Così è tutto corretto?
 

 
FaSan
Hero Member
*****
Offline Offline

Activity: 658
Merit: 500



View Profile
March 17, 2015, 08:46:35 PM
 #48

Quindi più precisamente si potrebbe dire che una transazione non è una banconota, ma lo è l'accoppiata transazione-indirizzo di destinazione (mentre mi pare di aver capito che gli indirizzi d'origine non contino in questo tipo di ragionamento).

Così è tutto corretto?
  


E' sempre una banconota, indipendentemente da dove la metti. Quando è il momento di pagare puoi mettere la mano in una sola tasca, ma anche metterle in più tasche se con la prima non copri l' importo che intendi muovere. Se usi un wallet le tasche (address) devono essere nello stesso wallet, ma ci sono sistemi un pelino più complessi che ti cito appena per non incasinarti ulteriormente, che ti permettono di usare anche address che hai altrove.



FaSan
arulbero
Legendary
*
Offline Offline

Activity: 1915
Merit: 2074


View Profile
March 17, 2015, 09:01:45 PM
 #49

Quindi più precisamente si potrebbe dire che una transazione non è una banconota, ma lo è l'accoppiata transazione-indirizzo di destinazione (mentre mi pare di aver capito che gli indirizzi d'origine non contino in questo tipo di ragionamento).

Così è tutto corretto?
  

E' sempre una banconota, indipendentemente da dove la metti. Quando è il momento di pagare puoi mettere la mano in una sola tasca, ma anche metterle in più tasche se con la prima non copri l' importo che intendi muovere. Se usi un wallet le tasche (address) devono essere nello stesso wallet, ma ci sono sistemi un pelino più complessi che ti cito appena per non incasinarti ulteriormente, che ti permettono di usare anche address che hai altrove.

FaSan

Se metti una banconota in due tasche non é piú una banconota, ma sono almeno due!
Da come ho capito io una transazione unisce piú input ( piú banconote ) in un'unica banconota solo per poi risuddividerle di nuovo in altre banconote ( una per ogni indirizzo di output ), o no?
picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
March 17, 2015, 09:07:13 PM
 #50

(...)
nel caso 2) ho una banconota da 2 BTC nella tasca A e 3 BTC nella tasca B (che sono il frutto però del cambio di un'unica banconota da 5 BTC, visto che provengono da un'unica transazione), e quindi posso ancora spenderli separatamente

(..)
Non necessariamente, quello che devi immaginare che ogni transazione ha n input e k output, quelle due transazioni potrebbero arrivare da 100 input che danno luogo 300 output due dei quali sono le due alle quali tu ti riferisci.
Ad esempio: https://blockchain.info/it/tx/eaf0404075adb9c9f10d4640affa368bcb44ebb9af3e7b2966c104e77ed46b6c ha parecchi input e parecchi output.

Waves mi piaceva ora non più.
arulbero
Legendary
*
Offline Offline

Activity: 1915
Merit: 2074


View Profile
March 17, 2015, 10:04:18 PM
Last edit: March 17, 2015, 10:26:42 PM by arulbero
 #51

(...)
nel caso 2) ho una banconota da 2 BTC nella tasca A e 3 BTC nella tasca B (che sono il frutto però del cambio di un'unica banconota da 5 BTC, visto che provengono da un'unica transazione), e quindi posso ancora spenderli separatamente

(..)
Non necessariamente, quello che devi immaginare che ogni transazione ha n input e k output, quelle due transazioni potrebbero arrivare da 100 input che danno luogo 300 output due dei quali sono le due alle quali tu ti riferisci.
Ad esempio: https://blockchain.info/it/tx/eaf0404075adb9c9f10d4640affa368bcb44ebb9af3e7b2966c104e77ed46b6c ha parecchi input e parecchi output.

Lì infatti stavo usando la similitudine di FaSan "transazione=banconota" che però secondo me risulta ambigua.

Allora ripropongo la mia pseudodefinizione:
"banconota": "coppia formata da una transazione e un indirizzo ( d'origine o d'arrivo )".

In una transazione con n input e k output, vengono prelevate n banconote ( da n address o meno, posso prelevare 2 banconote diverse dalla stessa tasca/address) e convertirle in k banconote ( che finiscono in k address o meno, 2 banconote diverse possono finire nella stessa tasca/address ).
Ognuna delle n banconote di partenza sono costituite da una transazione precedente a quella attuale e da un indirizzo di partenza, ognuna delle k banconote di output sono costituite ( cioé univocamente determinate ) dalla transazione attuale e dall'indirizzo d'arrivo.

In linea di massima tutte le banconote di partenza provengono da address di un unico wallet ( tasche di un unico portafoglio ) in modo che sia possibile firmare la transazione per ogni banconota di partenza. Il caso a cui allude FaSan di transazioni che possono mettere insiemi indirizzi di partenza di più wallet non lo conosco, ma immagino che il concetto sia che ci deve essere un modo di importare le chiavi giuste relative ai vari address per poter firmare la transazione.

Riscrivo allora il caso 2)
Ho una banconota da 2 BTC nella tasca A e una da 3 BTC nella tasca B, le ho ottenute mettendo insieme delle banconote provenienti da un'unica transazione ( quindi la banconota da 2 BTC e quella da 3 BTC condividono  solo uno dei due elementi che le caratterizza, la transazione che le ha prodotte, ma non l'indirizzo d'arrivo). Quindi essendo due banconote distinte posso spenderle separatamente.

Ma a questo punto un'altra osservazione: nel caso 3), in cui ho due banconote, una da 2 BTC e una da 3 BTC entrambe nella tasca A, se le spedissi entrambe a un indirizzo C, avrei generato da due banconote distinte una sola banconota da 5 BTC ( univocamente determinata dalla nuova transazione e dall'indirizzo d'arrivo C ).

Per concludere il ruolo di una transazione allora é duplice:
- da una parte cambiare il "proprietario" di bitcoin ( spostare i bitcoin da delle tasche ad altre tasche )
- dall'altra parte é quella di prendere una quantitá totale x di bitcoin e trasformarla in una quantitá x (- fees) cambiando peró il numero di banconote, cioè la distribuzione dei tagli mantenendo costante la quantità totale x; in questo senso una transazione "distrugge" delle banconote e ne "ricrea" altre al loro posto in tagli più adeguati all'utilizzo che si deve fare di quella quantità di bitcoin in quel dato momento

Questo modo di vedere le cose é corretto?


FaSan
Hero Member
*****
Offline Offline

Activity: 658
Merit: 500



View Profile
March 17, 2015, 10:11:07 PM
 #52

Questo modo di vedere le cose é corretto?


E' corretto. Il mio "Transazione=Banconota" era da intendersi TX in entrata. Una TX in entrata è una banconota, se poi in origine fosse sempre una o mille è del tutto irrilevante dal tuo punto di vista.




FaSan
arulbero
Legendary
*
Offline Offline

Activity: 1915
Merit: 2074


View Profile
March 17, 2015, 10:30:53 PM
 #53

Questo modo di vedere le cose é corretto?


E' corretto. Il mio "Transazione=Banconota" era da intendersi TX in entrata. Una TX in entrata è una banconota, se poi in origine fosse sempre una o mille è del tutto irrilevante dal tuo punto di vista.


FaSan


Bene, grazie mille! Finalmente ( dopo solo 1 anno e mezzo che uso i bitcoin ) penso di aver capito!

Allora perfeziono la mia definizione di banconota:
Banconota: transazione + indirizzo d'arrivo ( o più semplicemente TX in entrata Smiley )

picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
March 17, 2015, 11:30:52 PM
 #54

(...)
Allora perfeziono la mia definizione di banconota:
Banconota: transazione + indirizzo d'arrivo ( o più semplicemente TX in entrata Smiley )
Premesso che non mi piace parlare di banconote ma se aiuta a capire meglio ....
Banconota: un input oppure un output di una transazione TX.
NB: ci sono transazioni senza input e sono le revenue per la generazione del blocco https://blockchain.info/it/tx/5f2a72ad2dc4d189742db3d686742d2b4caa8c7b53d3463c217d10bd11309a11
Tasca: indirizzo BTC direi che puo' andare ...

Waves mi piaceva ora non più.
arulbero
Legendary
*
Offline Offline

Activity: 1915
Merit: 2074


View Profile
March 18, 2015, 12:35:56 PM
 #55

(...)
Allora perfeziono la mia definizione di banconota:
Banconota: transazione + indirizzo d'arrivo ( o più semplicemente TX in entrata Smiley )
Premesso che non mi piace parlare di banconote ma se aiuta a capire meglio ....
Banconota: un input oppure un output di una transazione TX.
NB: ci sono transazioni senza input e sono le revenue per la generazione del blocco https://blockchain.info/it/tx/5f2a72ad2dc4d189742db3d686742d2b4caa8c7b53d3463c217d10bd11309a11
Tasca: indirizzo BTC direi che puo' andare ...


Per questo preferisco la definizione di banconota come output di una transazione TX, proprio perchè ci sono banconote che non hanno un indirizzo di provenienza.

Avrei altre due domande:

1) quando si effettua una transazione si pagano delle fee che dipendono da alcuni parametri (ad esempio da quanto tempo quei bitcoin non vengono spostati, ...) e in particolare dipendono anche dalla dimensione della transazione. La mia domanda è: la dimensione della transazione è determinata solo dal numero di input e numero di output (cioè dal numero di banconote che prende in input e dal numero di banconote che restituisce in output)? Cioè in pratica ogni banconota occupa lo stesso spazio in byte?

2) questa domanda è più attinente  all'argomento di questo thread: la questione del "double spending".
Finora ho sempre sentito parlare di questo argomento come di un problema da cui difendersi, ma non ho mai capito come sia  possibile poi nella pratica effettuare una doppia spesa.
Mi spiego: se uso un client come Armory o GreenAddress, non appena comunico alla rete una transazione da un mio indirizzo bitcoin il client segnala come non più disponibili per la spesa i btc inviati (anche se la transazione deve essere ancora confermata ovviamente). A questo punto come sarebbe possibile (senza utilizzare la web app "gangsta") effettuare una doppia spesa degli stessi input?
Dovrei forse importare le chiavi private del mio indirizzo in due client diversi, e quasi contemporaneamente effettuare la spesa della stessa banconota dai due diversi client (in modo che nessuno dei due "sappia" cosa sta facendo l'altro)? Oppure bisogna utilizzare bitcoin-core via riga di comando?  Huh

Cercate di non essere eccessivamente tecnici nelle risposte  Smiley






picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
March 18, 2015, 01:25:21 PM
 #56

(...)
Allora perfeziono la mia definizione di banconota:
Banconota: transazione + indirizzo d'arrivo ( o più semplicemente TX in entrata Smiley )
Premesso che non mi piace parlare di banconote ma se aiuta a capire meglio ....
Banconota: un input oppure un output di una transazione TX.
NB: ci sono transazioni senza input e sono le revenue per la generazione del blocco https://blockchain.info/it/tx/5f2a72ad2dc4d189742db3d686742d2b4caa8c7b53d3463c217d10bd11309a11
Tasca: indirizzo BTC direi che puo' andare ...


Per questo preferisco la definizione di banconota come output di una transazione TX, proprio perchè ci sono banconote che non hanno un indirizzo di provenienza.
NB: hai usato il termine entrata quindi input.

Avrei altre due domande:

1) quando si effettua una transazione si pagano delle fee che dipendono da alcuni parametri (ad esempio da quanto tempo quei bitcoin non vengono spostati, ...) e in particolare dipendono anche dalla dimensione della transazione. La mia domanda è: la dimensione della transazione è determinata solo dal numero di input e numero di output (cioè dal numero di banconote che prende in input e dal numero di banconote che restituisce in output)? Cioè in pratica ogni banconota occupa lo stesso spazio in byte?

(...)
Credo che alla transazione si possano aggiungere dati che sono degli script nei quali puoi codificare informazioni, nella blockchain ci sono vari documenti inseriti nelle tx quindi la dimensione dipende da cosa ci metti come info accessorie. Ad esempio puoi mettere l'hash di un documento per dimostrare che lo possedevi alla data nella quale la tx viene inserita.

Waves mi piaceva ora non più.
FaSan
Hero Member
*****
Offline Offline

Activity: 658
Merit: 500



View Profile
March 18, 2015, 01:48:40 PM
 #57

L' input di un address è l' output di un altro no ? L' input è certo (se hai bitcoin nel wallet), l' output non è detto, finchè non le spendi.

Ok se parliamo di TX si parla di input e di output, se si parla di address allora in entrata ci stà.



FaSan
picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
March 18, 2015, 01:52:20 PM
 #58

L' input di un address è l' output di un altro no ? L' input è certo (se hai bitcoin nel wallet), l' output non è detto, finchè non le spendi.



FaSan
Sono output della tx precedente. Diciamo che tutte le banconote sono prima output e se spese input della tx successiva.

Waves mi piaceva ora non più.
FaSan
Hero Member
*****
Offline Offline

Activity: 658
Merit: 500



View Profile
March 18, 2015, 01:53:57 PM
 #59

L' input di un address è l' output di un altro no ? L' input è certo (se hai bitcoin nel wallet), l' output non è detto, finchè non le spendi.



FaSan
Sono output della tx precedente. Diciamo che tutte le banconote sono prima output e se spese input della tx successiva.


Si, stiamo confondendo TX e address, vedi la mia correzione sopra. Arulbero diceva in entrata riferendosi all' address. Chiaramente l' entrata di un address è l' output di una TX



FaSan
FaSan
Hero Member
*****
Offline Offline

Activity: 658
Merit: 500



View Profile
March 18, 2015, 01:57:44 PM
 #60

Oppure bisogna utilizzare bitcoin-core via riga di comando?  Huh


Si fà con le RAWTX via riga di comando. Nella blockchain la TX è valida solo dopo aver ricevuto la prima conferma dai nodi, prima di allora tutto può succedere Tongue



FaSan
Pages: « 1 2 [3] 4 5 »  All
  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!