Hyena
Legendary
Offline
Activity: 2114
Merit: 1015
|
|
June 02, 2015, 11:43:05 AM |
|
Step #2 - Make this so that it write the data in the OP_RETURN, where it's supposed to go for easy debugging purposes (for other developers), or just so that you can leave a message in the way the blockchain in meant to be used for leaving messages.
Love what you guys are doing though, neat project!
I enabled OP_RETURN decoding for http://cryptograffiti.info/paystamper/ yesterday (refresh the page if you have it in cache, the version in bottom right corner should be 0.93). Just go to the monitor tab and monitor this address: 14E6WJjQbzBgxQ2LhjWehWVF9iNY191SRd. You will see this text "ascribe is hiring! ascribe.io/jobs" which is actually written after OP_RETURN ( you can verify it from blockchain.info). However, currently only paystamper part of cryptograffiti is able to decode OP_RETURN messages. I hope bitikunn will implement it to cryptograffiti's read tab soon. @Hyena: Have you thought about enabling https? This would be useful to hide the specific message someone is going to view (because https encrypts everything after the TLD)
Also a Tor hidden service version would be cool. Even cooler would be if that version would use the hidden service of blockchain.info instead of the clearnet version.
I have thought about enabling https although I'm not a big fan of it. Cryptograffiti actually supports application layer security but we haven't enabled it for the end users yet because it might not be so important. HTTPS could already be used to fetch the web page itself (using a self signed certificate) but for some reason I have made it to automatically switch to http. Perhaps because browsers are quite racist against self signed certificates. I also support the idea of hosting cryptograffiti as an I2P or Tor hidden service. Alternatively, it could even be hosted in the torrent network, IPFS or Tahoe's P2P data storage platform. Cryptograffiti is already able to detect end decode JPG images from UTXOs so the clearnet cryptograffiti could at some point become controversial if someone decides to store CP images in the block chain. Should such a thing happen we would disable the automatic decoding of foul images. The hidden service version should be free of such censoring but for the clearnet one I'm just worried about my own ass To look even farther into the future, I would add more coins to the service. For example, a coin such as dogecoin with really cheap TX fees suits better for storing custom data. I would also like to get rid of the blockchain.info API's dependencies at some point to become autonomous. Speaking of being autonomous, cryptograffiti has the potential to become a DAO (distributed autonomous organization) similarly to NuBits, B&C Exchange and Teehe). It would earn its revenue from the paystamper-like service that encodes your data for you in the block chain for a small fee. With the help of PeerShares it would be easy to distribute dividends and pass motions about how to enhance the services. It's clear that developing it from our free time as a hobby makes things rather slow to progress. If there is enough investor interest, it could be turned into a serious project and I wouldn't be against it. After all, there is a clear need for a service such as cryptograffiti.
|
|
|
|
bitikunn (OP)
Newbie
Offline
Activity: 3
Merit: 0
|
|
June 09, 2015, 05:02:19 PM |
|
As the front-end developer of CryptoGraffiti, I have to apologize for the delayed release of new and improved site.
My current living arrangement has put some breaks on the progress. Not to worry, new version of the site will be completed and released.
Thank you for your patience.
|
|
|
|
Grand_Voyageur
|
|
June 10, 2015, 12:53:50 PM |
|
Seems that BTCChina released their own encoding service to write messages in the blockchain. Are you guys also behind it? BTCChina Press Release: http://www.coindesk.com/press-releases/btcchina-releases-blockchain-inscribing-service/
|
██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
|
|
|
Hyena
Legendary
Offline
Activity: 2114
Merit: 1015
|
|
June 10, 2015, 01:05:59 PM |
|
They are encoding messages into coinbase which is what only miners can do. Currently cryptograffiti doesn't even attempt to decode coinbase messages because miners put their names and some other meaningless spam into it. Perhaps in the future, if we figure out how to avoid spam in coinbase, we would start monitoring the coinsbase messages too. Or perhaps the coinbase messages should have a slightly different monitoring mechanism that is more spam tolerant. I will have to think about it. I think it's a good idea to also start monitoring coinbase messages with cryptograffiti even though regular users wouldn't be able to save such messages.
|
|
|
|
frankenmint
Legendary
Offline
Activity: 1456
Merit: 1018
HoneybadgerOfMoney.com Weed4bitcoin.com
|
|
June 28, 2015, 04:47:58 PM |
|
why not allow unique trx only and use a filtering mechanism that blocks messages with target words such as: please donate help assistance etc best provably gambling hot casino
|
|
|
|
bit3000
Sr. Member
Offline
Activity: 448
Merit: 250
Craig Wright is scammer.
|
|
August 03, 2015, 09:59:30 PM |
|
The main purpose of CryptoGraffiti.info is to display transactions which include addresses that have human readable characters in them. how do your algorithm knows if a transaction has "human readable characters"? Do you use a header or something like that?
|
Old Amazon Accounts.With 100-200$ Gift card loaded. Escrowed.
|
|
|
mookid
|
|
August 04, 2015, 07:18:01 AM |
|
The ability to mark words on a digital chain of data, forever, is truly something to think about. What a time to be alive.
|
|
|
|
bit3000
Sr. Member
Offline
Activity: 448
Merit: 250
Craig Wright is scammer.
|
|
August 04, 2015, 08:15:03 AM |
|
Sometimes I see some andresses marked in red color, what does it mean?
|
Old Amazon Accounts.With 100-200$ Gift card loaded. Escrowed.
|
|
|
Hyena
Legendary
Offline
Activity: 2114
Merit: 1015
|
|
August 06, 2015, 03:07:39 PM |
|
The main purpose of CryptoGraffiti.info is to display transactions which include addresses that have human readable characters in them. how do your algorithm knows if a transaction has "human readable characters"? Do you use a header or something like that? I convert all TX output addresses into raw bytes (1 address contains 20 bytes of data). First, I scan each of those 20-byte chunks for human readable ASCII characters. If more than 90% of the bytes are visible ASCII characters then the output is considered meaningful and the TX hash will be uploaded to cryprtograffiti's database. Then, I scan each of the 20-byte chunks for valid UTF-8 characters to also detect UTF-8 strings encoded in the TX outputs. This UTF-8 detection is far more complicated than ASCII detection. If any of you is interested of the exact algorithm I can paste you the Lua and C++ code I use for that. Finally, I scan the TX outputs for a JPEG header and some other JPEG image specific data to determine whether the TX contains a JPEG image. If the TX is detected to be either ASCII, UTF8 or JPG then its hash will be uploaded to cryptograffiti's database. Although I have not officially published cryptograffiti's API, you can experiment with the public API functions if you wish: http://www.cryptograffiti.info/API (ignore the initialize and security handshake functions, they are not necessary for you). Sometimes I see some andresses marked in red color, what does it mean? The red colour indicates a duplicate output address. The standard bitcoin-core client does not allow you to make a TX that contains duplicate output addresses. However, the bitcoin protocol itself allows duplicate output addresses. If you intend to save your message in the block chain with bitcoin-core wallet, then you must get rid of duplicate addresses by modifying the text. If you intend to use "import to paystamper" functionality then you can ignore the red addresses since paystamper compiles, signs and propagates the TX manually, allowing it to contain duplicate outputs.
|
|
|
|
bit3000
Sr. Member
Offline
Activity: 448
Merit: 250
Craig Wright is scammer.
|
|
August 06, 2015, 08:20:27 PM |
|
thanks for your answer
|
Old Amazon Accounts.With 100-200$ Gift card loaded. Escrowed.
|
|
|
odotan
Newbie
Offline
Activity: 15
Merit: 0
|
|
January 13, 2016, 02:32:36 AM |
|
|
|
|
|
Hyena
Legendary
Offline
Activity: 2114
Merit: 1015
|
|
January 13, 2016, 08:34:14 AM |
|
Thank you for contacting me on the matter. I just noticed that there are problems with your transactions. Turns out that blockchain.info has gone nazi with dust transactions, so it won't even accept transactions that don't meet their criteria. I'm afraid too many nodes have increased their dust threshold above what cryptograffiti is currently using. Your order was indeed filled and the related transaction was sent to the network but hasn't been confirmed for some time now. I have increased the minimum transaction output for the cryptograffiti service to 2730 satoshis so hopefully future orders will be confirmed fast. In case you know some mining pools or miners personally, you can always ask them to confirm the following 2 transactions, so that your message(s) would be saved in the block chain: d7b80c8fefc88cc3f06d74f8496e2dc6f44b5f5f0a59f9ba1ba27266848a8666: 010000000174776a16646cdd247aeb58025b5520f5d4b0617ea20717227ddf98bbc3d06acd010000006b483045022100b7035a9926218a5d4f3ab71bbabbdb3665e8363346644f27e778f9892bee3e1202205efcbe1742d22b2fbce594862643b6bb46748b6d78a35be204d1a2725edc2183012102d4a62d92f6cc537fc7ed0f5853d81d3ad5402e683530938f7b52b9ff10bd7c92fffffffffd970166060000000000001976a914d791d6bcd6b0d7a8d6b5d790d7a9d781d6b4d69688ac66060000000000001976a914d799d7aa20d791d6bcd6b8d7a8d6b8d6a3d7902088ac66060000000000001976a914d790d6b1d79cd6b9d794d6b4d691d799d79d20d788ac66060000000000001976a91490d6b5d6a5d7aa20d794d6b7d7a9d6bcd781d6b888ac66060000000000001976a914d79ed6b7d696d799d6b4d79d20d795d6b0d790d688ac66060000000000001976a914b5d6a5d7aa20d794d6b8d790d6b8d6bdd7a8d6b688ac66060000000000001976a914d7a5d7832020d795d6b0d794d6b8d790d6b8d69788ac66060000000000001976a914d7a8d6b6d7a520d794d6b8d6bdd799d6b0d7aad688ac66060000000000001976a914b8d6a5d79420d7aad6b9d6a8d794d795d6bcd69988ac66060000000000001976a91420d795d6b8d791d6b9d694d794d795d6bc20d79588ac66060000000000001976a914d6b0d797d6b9d696d7a9d781d6b6d79ad6b020d788ac66060000000000001976a914a2d6b7d79cd6bed7a4d6bcd6b0d7a0d6b5d6a3d788ac66060000000000001976a9149920d7aad6b0d794d691d795d6b9d79d20d795d688ac66060000000000001976a914b0d7a8d6a3d795d6bcd797d6b720d790d6b1d79c88ac66060000000000001976a914d6b9d794d6b4d694d799d79d20d79ed6b0d7a8d688ac66060000000000001976a914b7d797d6b6d696d7a4d6b6d7aa20d7a2d6b7d79c88ac66060000000000001976a914d6bed7a4d6bcd6b0d7a0d6b5d6a5d79920d794d688ac66060000000000001976a914b7d79ed6bcd6b8d6bdd799d6b4d79dd7832020d788ac66060000000000001976a91495d6b7d799d6bcd6b9d6a5d790d79ed6b6d7a82088ac66060000000000001976a914d790d6b1d79cd6b9d794d6b4d696d799d79d20d788ac66060000000000001976a91499d6b0d794d6b4d6a3d79920d790d691d795d6b988ac66060000000000001976a914d7a820d795d6b7d6bdd799d6b0d794d6b4d799d688ac66060000000000001976a914bed790d6bdd795d6b9d7a8d7832020d795d6b7d788ac66060000000000001976a91499d6bcd6b7d6a7d7a8d6b0d79020d790d6b1d79c88ac66060000000000001976a914d6b9d794d6b4d69bd799d79d20d790d6b6d7aad688ac66060000000000001976a914bed794d6b8d790d696d795d6b9d7a820d79bd6bc88ac66060000000000001976a914d6b4d799d6bed798d691d795d6b9d79120d795d688ac66060000000000001976a914b7d799d6bcd6b7d791d6b0d793d6bcd6b5d6a3d788ac66060000000000001976a9149c20d790d6b1d79cd6b9d794d6b4d694d799d79d88ac66060000000000001976a91420d791d6bcd6b5d6a5d799d79f20d794d6b8d79088ac66060000000000001976a914d696d795d6b9d7a820d795d6bcd791d6b5d6a5d788ac66060000000000001976a91499d79f20d794d6b7d797d6b9d6bdd7a9d781d6b688ac66060000000000001976a914d79ad6b0d7832020d795d6b7d799d6bcd6b4d7a788ac66060000000000001976a914d6b0d7a8d6b8d6a8d79020d790d6b1d79cd6b9d788ac66060000000000001976a91494d6b4d6a4d799d79dc2a0d78020d79cd6b8d79088ac66060000000000001976a914d795d6b9d7a8d69920d799d694d795d6b9d79d2088ac66060000000000001976a914d795d6b0d79cd6b7d797d6b9d696d7a9d781d6b688ac66060000000000001976a914d79ad6b020d7a7d6b8d6a3d7a8d6b8d79020d79c88ac66060000000000001976a914d6b8d691d799d6b0d79cd6b8d79420d795d6b7d688ac66060000000000001976a914bdd799d6b0d794d6b4d799d6bed7a2d6b6d6a5d788ac66060000000000001976a914a8d6b6d79120d795d6b7d6bdd799d6b0d794d6b488ac66060000000000001976a914d799d6bed791d6b9d696d7a7d6b6d7a820d799d688ac66060000000000001976a914a5d795d6b9d79d20d790d6b6d797d6b8d6bdd79388ac66060000000000001976a914d783200ad795d6b7d799d6bcd6b9d6a3d790d79e88ac66060000000000001976a914d6b6d7a820d790d6b1d79cd6b9d794d6b4d694d788ac66060000000000001976a91499d79d20d799d6b0d794d6b4d6a5d79920d7a8d688ac66060000000000001976a914b8d7a7d6b4d696d799d7a2d6b720d791d6bcd6b088ac66060000000000001976a914d7aad6a3d795d6b9d79ad6b020d794d6b7d79ed688ac66060000000000001976a914bcd6b8d691d799d6b4d79d20d795d6b4d799d79488ac66060000000000001976a914d6b4d6a3d79920d79ed6b7d791d6b0d793d6bcd688ac66060000000000001976a914b4d694d799d79c20d791d6bcd6b5d6a5d799d79f88ac66060000000000001976a91420d79ed6b7d696d799d6b4d79d20d79cd6b8d79e88ac66060000000000001976a914d6b8d6bdd799d6b4d79dd7832020d795d6b7d79988ac66060000000000001976a914d6bcd6b7d6a3d7a2d6b7d7a9d78220d790d6b1d788ac66060000000000001976a9149cd6b9d794d6b4d799d79dd6ae20d790d6b6d7aa88ac66060000000000001976a914d6bed794d6b8d6bdd7a 821b6416e9210aba06cf5a0ee104fba856533986d44643687128d2cc012550f3: 01000000018d24514a7dc709aebade6d94cd5fac850d96c46901994c9cf8c60c680712caff000000006b4830450221009e54b48c257247cd8fb9f2ae0f5b388080e86bebfb034f639ba047af6be3d01e022077caf8d1f20ec6e2a29944fa2df560f23217b1fb8a0a3a9fe1378eeeb74487c5012102d4a62d92f6cc537fc7ed0f5853d81d3ad5402e683530938f7b52b9ff10bd7c92ffffffff1c66060000000000001976a914426162752062616275206261627520696e20746888ac66060000000000001976a914652077686f2077686f2077686f2065746320657488ac66060000000000001976a91463206261646868660a766676666a0a766466766488ac66060000000000001976a914660a27760a76737673767364767376767776626a88ac66060000000000001976a9147662657662687662652068760a767662666a766288ac66060000000000001976a9140a76626a766264667661766a766279686677653b88ac66060000000000001976a91467766577766273646a76650a76766e666a6b766c88ac66060000000000001976a91464666e73760a76626a766e6164666c7664666e7688ac66060000000000001976a9146a64660a7664666e6a7664666e6c7664666e766a88ac66060000000000001976a91464660a76626e6164666a76626e6466616c62766188ac66060000000000001976a91464666a62766164660a62766466736a766261646688ac66060000000000001976a9146c6a76626164666a6c6e76646a6c766e646c760a88ac66060000000000001976a91476627376616264666c6a7664666162766b61640a88ac66060000000000001976a91462666462766662646166626e6a626e206662206a88ac66060000000000001976a914626e657276666e766d61663b626e653b626e656a88ac66060000000000001976a914626e66643b6264662062657275626e723b65726a88ac66060000000000001976a914626e206e62646676626665626e6a65726265723b88ac66060000000000001976a914626e623b6e6466613b626e616d626466616e6d6288ac66060000000000001976a9142e61640a626e64666a626e64666264666e623b6188ac66060000000000001976a914766e6164666e766a61626e6466626a3b6e61646688ac66060000000000001976a9146a626e6466623b64616e62646d6e6261643b0a7688ac66060000000000001976a9146e6466616a626e766164666e62763b646166626a88ac66060000000000001976a9146e64663b6276610a616e6a643b62766e61666a6e88ac66060000000000001976a914613b766261640a626e6a616466626e6164662e6288ac66060000000000001976a9146e7661643b626e6164666b3b626e6164660a626e88ac66060000000000001976a914616a64663b626e613b6e623b61646e623b616e6188ac66060000000000001976a9143b0a00000000000000000000000000000000000088acc3b10000000000001976a914e0d5bb445eb24541a8a921fb5db14de5479b779388ac00000000 I have already rebroadcasted these transactions in all the services listed here: https://en.bitcoin.it/wiki/Transaction_broadcastingBut you can also try these and perhaps you know some other services willing to broadcast these transactions. If the transactions remain unconfirmed until Friday I will send you your money back on Friday. Did you only make transaction cd6ad0c3bb98df7d221707a27e61b0d4f520555b0258eb7a24dd6c64166a7774 (0.00859924 BTC) or the other transaction as well that is still not confirmed?
|
|
|
|
Hyena
Legendary
Offline
Activity: 2114
Merit: 1015
|
|
January 13, 2016, 11:26:19 AM |
|
@odotan Good news, some miner finally decided to confirm the transactions. Your message is now saved in the block chain. By the way, I have been working on the new version of cryptograffiti for quite some time now. I will start working on the write tab in the near future and I plan to make automated message encoding more user friendly. For example, the users should have the possibility to include their chargeback address so that in case of problems it would be easier for me to send them back their bitcoins. Also, I will have to upload the raw transaction hex in addition to the transaction hash so that the user could immediately verify that their order has been filled indeed and even broadcast the transaction manually if needed. This new work in progress cryptograffiti is available here: http://cryptograffiti.info/interface/reloaded/index.htmlWhen I get it done I will replace the original cryptograffiti.info with the new version.
|
|
|
|
odotan
Newbie
Offline
Activity: 15
Merit: 0
|
|
January 14, 2016, 01:36:43 AM |
|
@odotan Good news, some miner finally decided to confirm the transactions. Your message is now saved in the block chain. By the way, I have been working on the new version of cryptograffiti for quite some time now. I will start working on the write tab in the near future and I plan to make automated message encoding more user friendly. For example, the users should have the possibility to include their chargeback address so that in case of problems it would be easier for me to send them back their bitcoins. Also, I will have to upload the raw transaction hex in addition to the transaction hash so that the user could immediately verify that their order has been filled indeed and even broadcast the transaction manually if needed. This new work in progress cryptograffiti is available here: http://cryptograffiti.info/interface/reloaded/index.htmlWhen I get it done I will replace the original cryptograffiti.info with the new version. Thanks very much. To answer your question from the previous response, I did not send the other transaction you mention. The text I posted is the beginning of the book of genesis in Hebrew. It's part of an experiment to put the whole old testament on the blockchain https://www.facebook.com/groups/btcil/permalink/960461627366899/Do you think we could manage to put the entire book with similar fees/dust size? We're talking about this text: https://www.dropbox.com/s/bvka8swl4z3nkat/Torah.txtIt's about 750000 characters, 1406852 bytes... so should be about 70000 addresses I say about because the write page became unresponsive when I tried to paste the entire text, so I pasted about 1/10th of the text and got this: Chars: 75658 Bytes: 143557 Addresses: 7179 Cost: 0.04009188 So the whole book should be about 0.4 btc. Is there something that you can do about the page unresponsive, or maybe an upload button, so I can upload the file? Also, is there some kind of optimization we can do for the costs? Can we still send one satoshi dust such as here https://blockchain.info/tx/e0ce23d299bb1b7decdf86522c023554bbdeab80cebcca6aa09f01a86c65d10eor would this not work anymore? How many addresses could we fit into one transaction, what dust, and what fees should we use? Thanks again very much for the quick and thorough response.
|
|
|
|
Hyena
Legendary
Offline
Activity: 2114
Merit: 1015
|
|
January 14, 2016, 05:12:44 PM |
|
The text is 1.4 MiB large. Bitcoin has maximum block size of 1 MiB currently. It is technically impossible to save such a large file in the block chain as a once chunk. I compressed the text as a zip file and it reduced its size down to 296 KiB which is approximately 15000 output addresses. Whith 2700 satoshis per output address it would cost 0.4 bitcoins just for the outputs, but transaction fee would be added to it. 148 * number_of_inputs + 34 * number_of_outputs + 10 would be 148 * 1 + 34 * 15000 + 10 = 510158 bytes = ~ 500 KiB transaction size The amount charged per 1000 bytes defaults to 0.0001 XBTSo the miners would require 0,0510158 bitcoins as a transaction fee for such a transaction. Apparently transactions larger than 100 KiB are non-standard anyway, so we would have to find a miner that is willing to confirm the transaction. Some mining pools accept non-standard transactions and thus we could potentially reduce the cost of a single output down to zero, but the miner will probably require a higher fee. I say about because the write page became unresponsive when I tried to paste the entire text, so I pasted about 1/10th of the text and got this:
Chars: 75658 Bytes: 143557 Addresses: 7179 Cost: 0.04009188
This calculation is not accurate since the dust threshold has been increased 5 times and paystamper is probably still using the old threshold. So the whole book should be about 0.4 btc. Is there something that you can do about the page unresponsive, or maybe an upload button, so I can upload the file? Also, is there some kind of optimization we can do for the costs? Can we still send one satoshi dust such as here https://blockchain.info/tx/e0ce23d299bb1b7decdf86522c023554bbdeab80cebcca6aa09f01a86c65d10eor would this not work anymore? How many addresses could we fit into one transaction, what dust, and what fees should we use? Thanks again very much for the quick and thorough response. I am planning to develop file uploading possibility for cryptograffiti but it will take some time. So here are the options: compress the book as a zstream or as a zip file and upload it as a one large transaction or split the book into multiple parts and upload each of them as plaintext. Since I am planning to develop zip file and zstream decoding anyway, I would suggest going for the compression and hoping that some miner will accept a 500 KiB transaction
|
|
|
|
sneval
Newbie
Offline
Activity: 55
Merit: 0
|
|
January 14, 2016, 08:44:05 PM |
|
This is a very powerful idea. And it keeps messages secure, encrypted and small in length. I do really appreciate you have put lot of efforts in developing the tool. However, a long time awaiting for you to reach more people. Keep going with this great idea.
|
|
|
|
Hyena
Legendary
Offline
Activity: 2114
Merit: 1015
|
|
January 14, 2016, 09:02:36 PM |
|
This is a very powerful idea. And it keeps messages secure, encrypted and small in length. I do really appreciate you have put lot of efforts in developing the tool. However, a long time awaiting for you to reach more people. Keep going with this great idea.
thanks for the support, I really appreciate such posts unlike others who accuse me of filling the block chain up with garbage .
|
|
|
|
Hyena
Legendary
Offline
Activity: 2114
Merit: 1015
|
|
January 17, 2016, 09:15:04 PM |
|
@odotan I just uploaded v0.6 of cryptograffiti reloaded and your Hebrew message is now displayed correctly: http://cryptograffiti.info/interface/reloaded/index.html#4106(right to left direction is now effective). v0.6 introduces bug fixes regarding selection of long messages. selecting between 2 long messages by their body is no longer buggy (before it deselected the wrong message sometimes). Also, content is now vertically centred in all tabs. UTF8 messages are now properly decoded in cases where a multi-byte utf8 character occupies 2 sequential bitcoin addresses.
|
|
|
|
|
Hyena
Legendary
Offline
Activity: 2114
Merit: 1015
|
|
June 08, 2016, 07:24:23 PM |
|
Version 0.71 has been published. Enhancements to the graphical style of the new user interface... As hinted on the second screenshot, I am already working on the file saving functionality. You can soon upload the picture of your cat on the bitcoin's block chain using cryptograffiti.info.
|
|
|
|
|