Poradnik jak zapisać zdjęcie do blockchainu w postaci tekstu permanentnie [!]

in #polish7 years ago (edited)

Wstęp


Cześć, w tym tekście chciałbym przedstawić sposób na wprowadzenie do blockchainu zdjęcia, które tutaj zostanie na zawsze. Jest to rozwiązanie, kiedy zależy nam na trwałości danych.

Aby osiągnąć taki cel najpierw poznajmy technologię, z której będziemy korzystać.
Aby zakodować nasz obrazek do postaci tekstowej potrzebujemy funkcję kodującą w Base64.
Base64 przetwarza kod z postaci bajtów do postaci tekstowej. Jak wiem, każda informacja przechowywana w komputerze jest w postaci binarnej czyli ciągów zer i jedynek. Przekształcając zdjęcie właśnie do postaci liczbowej a potem do postaci tekstowej jesteśmy wstanie wrzucić różne dane do blockchainu. W naszym wypadku jest to zdjęcie.

Działanie w praktyce

Jak już poznaliśmy teorię stojącą za naszą poznaną metodą, to zajmijmy się realizacją planu.
Do tego wykorzystam gotowe serwisy udostępniające możliwość konwersji zdjęcia do postaci tekstowej.

Do tego użyję serwisu https://www.askapache.com/online-tools/base64-image-converter/

Po wybraniu zdjęcia i kliknięciu "Encode" dostajemy kod w następującej postaci:

Jest on reprezentacją zdjęcia:

Kopiujemy teraz kod z pola RAW i wrzucamy to do postu, który ma zawierać grafikę. Ja taki przykład zamieściłem tutaj.
Jeżeli chcecie dowiedzieć się co to jest za zdjęcie zapisane w poście, to skopiujcie cały tekst i wklejcie go do serwisu np. https://codebeautify.org/base64-to-image-converter
Powinniście zobaczyć:

Tak jak widzicie, jest to dosyć sprytny sposób na umieszczanie niestandardowych danych w blockchainach.

Wiadomo, jest to tylko taka ciekawostka. Ale kto wie co będzie w przyszłości. Mogłyby nawet takie interfejsy oparte właśnie o takie kodowanie obrazów, co byłoby hostingiem obrazków opartym na blockchainie steem. Takie dane jak już raz zostałyby wrzucone, to zostałyby tam na amen. Jest to bardzo mocna funkcjonalność a zarazem bardzo niebezpieczna. Ostatnio głośno zrobiła się sytuacja, gdzie osoby w transakcji przekazywali różne dane oraz obrazki w postaci tekstowej.
Napiszcie co wy o tym wszystkim myślicie i jak to może wpłynąć na przyszłość blockchainów.

Sort:  

Przekazujesz taką wiedzę, że tylko głupi by nie korzystał :)

Dziękuję, za każdym razem staram się przekazywać coś wartościowego przy każdym umieszczeniu czegoś na tej platformie. A powiem ci, że to nie jest takie proste, szczególnie jak starasz się dodawać coś każdego dnia :)

Doskonale o tym wiem, podzielić się zdjęciami to nic trudnego, ale napisać coś z informacjami to inna bajka.

Świetny artykuł! Coś czuję, że będę na bieżąco. Strzałeczka w górę dla Ciebie! I zapraszam do zapoznania się z moim artykułem :) Pozdrawiam serdecznie!

Dzięki i spoko artykuł.

dobry pomysł, ale duże fotki nie wejdą w ograniczenie posta :P

Szczerze to nie znam jakie jest oficjalne ograniczenie w blockchainie :D Ale jednak po odpowiedniej kompresji możemy sensowne zdjęcie tutaj dodać.
Specjalnie poszukałem w implementacji steema informacje o limicie wielkości postu i z tego co znalazłem to jest ograniczenie, że musi być coś dodane do postu:
https://github.com/steemit/steem/blob/master/libraries/protocol/steem_operations.cpp#L68
No chyba, że gdzieś jeszcze to weryfikuje. Możliwe, że wielkość bloku nie może być większa niż coś, ale to pewnie gdzieś indziej jest to ograniczenie.

Szczerze też nie pamiętam ale udało mi się je przekroczyć i rozwaliłem busy :D ale to przez metadane, do których pakowane są linki z posta, a tych mialem sporo.

Wg. interfejsu steemit:
"How long can my post be?
Post sizes are limited to about 64,000 characters including formatting. This is ample for most posts. If writing blogs, consider how much people are willing to read at one time. If you make your posts too long, readers may lose interest which may affect the amount of upvotes and rewards you receive."
Ale jaki jest limit samego blockchainu, to nie wiem :D

Jako witness powinienes wiedziec, ze blockchain nie ma limitu ;-) obecnie maksymalny rozmiar bloku ktory jest wartoscia ustalana przez witnessow wynosi ~64kB i kazde przekroczenie 25% tej wartosci (~16kB average_block_size) impaktuje current_reserve_ratio co przeklada sie na zmniejszanie globalnej przepustowosci ;-)

Wrzucanie plikow do blockchain nie tylko spowoduje, ze wymagania dla shared file wzrosna, ale rowniez poglebi sie problem samej przepustowosci ;-)

IMHO to nie jest dobry pomysl ;-)

Dzięki, właśnie szukałem tej informacji, bo nie mogłem znaleźć limitu w kodzie blockchainu :D Skoro ja tu w ramach eksperymentu dodałem plik do blockchainu, to równie dobrze każdy użytkownik może to zrobić.
Czy taki brak limitu jest dobry? Pewnie okaże się później.

Żeby nikt cię za spam nie pojechał :D Im mniej danych w blockchain tym lepiej

No wiesz, każdy może interpretować blockchain na swój sposób. Nie przypadkowo korzystamy z "interfejsów".

Oczywiście, a potem "hurr durr, ten Steem bierze 32GB ramu, a w ciągu miesiąca - dwóch będzie 64 brał ..." :)

No to jest lipne z z tym blockchainem. To tylko znaczy, że steem wymaga dalszego develomentu i dopracowania niektórych rzeczy.

Ciężko dopracować niektóre rzeczy. Steem musi rosnąć, w teorii ludzie mogą powodować by mniej rzeczy się pojawiło, ale wiadomo ;)

Boję się, że ktoś to wykorzysta do delegalizacji danego blockchain np. wrzucając w takiej formie pornografie dziecięcą o której było głośno w przypadku bitcoin ostatnio. Oczywiście są to przypadki jednostkowe ale władza może zachować się jak upośledzony sąsiad z siekierą reagujący agresją na wszystko czego nie potrafi pojąć i wyleje dziecko z kąpielą.

Dlatego trzeba się zastanowić co z tym fantem zrobić. Samo ograniczenie długości posta na pewno byłoby pewnym rozwiązaniem, ale tak naprawdę, to tak jak przypadku bitcoina, można te informacje dzielić na dowolną długość i wrzucać w dowolne miejsce. Tutaj jedynie pokazałem, że na blockchainie steem też jest taka możliwość i to jeszcze prostsza niż by się wydawało. Bo cokolwiek co można przedstawić w postaci tekstowej może trafić do blockchainu.

Coin Marketplace

STEEM 0.19
TRX 0.18
JST 0.033
BTC 87757.32
ETH 3103.63
USDT 1.00
SBD 2.75