Ten post pierwotnie pojawił się na Medium, a my opublikowaliśmy go ponownie za zgodą Rogera Taylora. Przeczytaj cały artykuł tutaj.
Jesteśmy na bardzo wczesnym etapie adopcji Bitcoina i na tym etapie nie jest jasne, jak będzie wyglądała długoterminowa adopcja. Jeden aspekt tego można zauważyć w usługach blockchain, których twórcy aplikacji wymagają, aby budować swoje aplikacje.
Podejście oparte na spuściźnie
Kiedy Craig pozostawił Bitcoin samym sobie, rozwój poszedł w niepraktycznym kierunku ze względu na atrakcyjność technologiczną tego kierunku dla programistów. Ponieważ rozmiar bloku był mały, możliwe było zindeksowanie całej zawartości łańcucha bloków, co oznaczało, że aplikacje mogły poprosić usługę indeksowania o poinformowanie ich o istnieniu jakichkolwiek transakcji obejmujących płatności, które według nich mogły dokonać.
W tym podejściu było wiele fajnych technologicznych rzeczy. Możesz mieć słowa zalążkowe i użyć ich, aby znaleźć wszystkie płatności, które kiedykolwiek otrzymałeś, a od nich znaleźć wszystkie płatności, które kiedykolwiek dokonałeś. Nie tylko służyło to jako niezawodna forma kopii zapasowej, ale używając łańcucha bloków jako źródła prawdy, można było używać tych samych kluczy na różnych komputerach, a aplikacje na tych różnych komputerach synchronizowałyby się, aby mieć tę samą zawartość. Był i jest bardzo przyjazny dla użytkownika i wygodny, ale niestety jest to możliwe tylko na blockchainach, które uniemożliwiają rzeczywiste użycie i które można wykorzystać tylko do prostych płatności.
Stare podejście zapewnia doświadczenie użytkownika, które jest iluzją stworzoną przez blokowanie protokołu blockchain i zapobieganie zarówno dużym blokom, jak i tworzeniu swobodnych transakcji. Jeśli bloki stają się większe, indeksatory nie mogą być już uruchamiane za darmo przez nikogo, kto jest gotów pokryć koszt nominalny. Jeśli płatności można swobodnie dokonywać bez przestrzegania ograniczonego zestawu podstawowych szablonów (reprezentowanych przez adresy), nie będzie już możliwe przeszukiwanie łańcucha bloków pod kątem wszystkich wysłanych i otrzymanych płatności. Jeśli nie ma bezpłatnych indeksatorów, a dostępnych indeksatorów nie można nawet użyć do znalezienia wszystkich płatności, nie ma magicznej kopii zapasowej ani synchronizacji.
Twórcy Bitcoin Core musieli złamać protokół Bitcoin, aby podejście starszego typu zadziałało. Aby mieć fajne złudzenia, musisz zapobiegać adopcji.
Przyszłe podejście
Bez pełnego indeksowania łańcucha potrzebujemy teraz usług łańcucha bloków, które służą potrzebom przywróconego protokołu. Obecnie powszechnie przyjmuje się, że płatności powinny odbywać się w trybie peer-to-peer, a osoba płacąca powinna bezpośrednio przekazywać stronie, która otrzymuje płatność, transakcję płatniczą. Strona, która otrzymuje płatność, nie powinna monitorować łańcucha bloków w celu odebrania transakcji płatniczej i powinna ją emitować, a nie płatnik.
Jak wygląda przyszłe API dla usług blockchain? Wraca to do tego, że nie jest jasne, jak wygląda adopcja długoterminowa. Z pewnością nie mogę powiedzieć na pewno, ale mam pewne przemyślenia na ten temat, które można wykorzystać jako punkt wyjścia.
Transakcje
Można to postrzegać jako najbardziej bezpośrednią formę indeksowania pełnego łańcucha. Jeśli oferujesz usługę, która umożliwia późniejsze odzyskanie na żądanie dowolnej transakcji rozgłoszeniowej i wydobywanej, musisz zachować wszystkie te transakcje w łatwo dostępny sposób. Skąd wiesz, jakie są ważne transakcje? Myślę, że rozsądne jest stwierdzenie, że 99,9% z nich jest nieistotnych i nigdy nie będzie dostępnych.
Zastanówmy się nad jedną z ostatnich koncepcji, ideą, że blockchain może być używany do przechowywania danych. To zawsze było nierozważne, ale było forsowane przez niektóre strony i na jego podstawie opracowywano oprogramowanie i usługi. Niektórzy nadal uważają to za opłacalne! Konsekwencje są więc takie, że jeśli usługa blockchain oferuje interfejs API umożliwiający żądanie dowolnej potrzebnej transakcji, programiści i użytkownicy będą opierać się na tym, oczekując, że będzie działać w przyszłości. I to nie jest ograniczona przyszłość, to nieznany czas w przyszłości, kiedy potrzebują jakiejkolwiek losowej transakcji. Jeśli usługa zablokuje ten interfejs API w późniejszym czasie, wszyscy ci programiści i użytkownicy zobaczą, że całe ich użycie jest teraz zepsute lub w jakiś sposób naruszone i mogą nawet nie zdawać sobie sprawy, dopóki nie zaczną korzystać z tego, co korzysta z tego interfejsu API.
Moja prognoza: API, które umożliwia nieokrzesany dostęp do transakcji, to strata czasu i zasobów. Realnym przyszłym modelem dostępu do transakcji będzie opłacenie usługi za zachowanie transakcji, o których wiesz, że możesz chcieć uzyskać dostęp w przyszłości. Możesz to zrobić nawet samodzielnie, zlecając młodszemu programiście umieszczenie ich w pamięci w chmurze i zarządzanie replikacją w chmurze. Najprostszą ścieżką do uzyskania potrzebnych transakcji jest przekazanie ich Tobie przez inne strony, które mają żywotny interes w tych transakcjach i muszą je już posiadać.
Dowody Merkle
Bardzo podobało mi się to, co zrozumiałem jako model MAPI i myślę, że ma to sens. Teoretycznie możesz uzyskać transakcję coinbase dla każdego wydobytego bloku i od nich zlokalizować usługi MAPI. Następnie możesz uzyskać oferty opłat z tych punktów końcowych i konstruować płatności, które spełniają wymagania dotyczące opłat. Następnie możesz nadawać do usługi MAPI górnika, wiedząc, że transakcja została zaakceptowana i otrzymać wywołanie zwrotne z dowodem merkle.
Problem polega na tym, że możesz uzyskać dowody Merkle tylko dla transakcji, które emitujesz za pomocą usługi MAPI. Nie jest wiadome, że transakcje, które otrzymujesz, nie są już transmitowane, ani że strona, którą zapłaciłeś, niezawodnie zdołała dać ci dowód, który otrzymała od usługi MAPI, której użyła do transmisji. Oznacza to, że pewne jest, że w pewnym momencie będziesz musiał skorzystać z usługi blockchain, która może dostarczyć Ci dowody merkle dla konkretnych transakcji, którymi jesteś zainteresowany.
Moja prognoza: API do dostarczania dowolnych dowodów merkle jest cenne i zostanie użyte. Istnieje również duża możliwość, że jako programista powinieneś rozważyć, czy powinieneś używać MAPI, a nie podążać za wskazówkami innych programistów lub materiałów edukacyjnych i po prostu z niego korzystać. Jeśli już musisz korzystać z usługi blockchain i uzyskać dowody Merkle, możesz po prostu chcieć połączyć się z siecią P2P i transmitować tam transakcje oraz skorzystać z usług blockchain, aby uzyskać dowody Merkle.
Skróty skryptu
Skrót skryptu to miejsce, w którym wiesz, jaką formę przybierze transakcja, i pobierasz skrót SHA256 skryptu wyjściowego. Jest używany do dwóch starszych celów. Albo chcesz zarejestrować go w usłudze indeksowania, aby móc wykryć, czy ktoś inny wysyła płatność do tego skryptu wyjściowego. Lub chcesz, aby ten indeksator przeszukał całe archiwum łańcucha i znalazł wszystkie przeszłe transakcje, które zawierają płatność do tego skryptu wyjściowego. To był powód, dla którego usługi blockchain wykorzystywały skróty skryptów.
Jeśli powodem, dla którego usługi blockchain używają hashów skryptów, było sprawienie, by zepsuty model protokołu wymuszony przez Bitcoin Core działał, to musimy zadać sobie pytanie, dlaczego mielibyśmy ich nadal używać. ElectrumSV to portfel, który korzysta z usługi indeksowania ElectrumX do wykrywania nowych płatności i przywracania starych płatności za pomocą skrótów skryptów — ale całkowicie to porzuca.
Moja przepowiednia: to ślepy zaułek. Znajdowanie transakcji na podstawie pełnego skryptu wyjściowego jest techniką ograniczoną i można ją łatwo zastąpić innymi, bardziej elastycznymi podejściami. Usługa blockchain, która oferuje interfejsy API oparte na hashach skryptów, będzie tracić czas i zasoby dla programistów, którzy muszą poprawić swoją grę i odejść od starszych podejść.
Jednym z przykładów, który może to zilustrować, jest rozważenie, w jaki sposób uniemożliwia komuś dodanie OP_PUSH/OP_DROP do skryptu wyjściowego, aby oznaczyć go przydatnymi danymi, może to być znak identyfikacyjny, aby można go było zlokalizować nawet w najgorszym przypadku, a potem znowu mogą to być dane związane z fakturą lub cokolwiek innego, co możesz wymyślić.
Adresy
Wszystkie starsze płatności były dokonywane na adresy. Standardowa płatność została dokonana za pomocą tak zwanego skryptu wyjściowego P2PKH, a skrótem klucza publicznego w tym skrypcie we właściwej lokalizacji był adres. Dokonano płatności z wieloma podpisami za pomocą tak zwanego skryptu wyjściowego P2SH, a skrótem skryptu w tym skrypcie we właściwej lokalizacji był adres. To wymusiło ograniczony akceptowany zestaw form płatności, gdzie musiały być te dwie rzeczy. Wyglądają losowo i trudno je porównać, a istnieje złośliwe oprogramowanie, które zastępuje je, gdy użytkownicy wycinają je i wklejają z jednej aplikacji do drugiej.
Moja prognoza: te tajemniczo wyglądające adresy jako powszechna i standardowa koncepcja są czymś, co zniknie i stanie się nieistotne. Usługa blockchain, która oferuje interfejsy API oparte na adresach, będzie tracić czas i zasoby dla programistów, którzy muszą poprawić swoją grę i odejść od starszych podejść.
zakończyć
Jest w tym o wiele więcej niuansów, niż można poruszyć w tym artykule.
Zarówno deweloperzy usług blockchain, jak i twórcy aplikacji blockchain mają do wykonania ogromną ilość pracy i dobrze nam służy, jeśli przyjrzymy się, z czego korzystamy, i zadajemy sobie pytanie, czy zaangażowane zasoby zostały dobrze wydane.
usługi-blockchain
Jakie typy aplikacji ma obsługiwać usługa blockchain? Czy jest to usługa, która wykonuje operacje w imieniu swoich użytkowników, jak HandCash, MoneyButton czy SimplyCash? Czy jest to aplikacja P2P, która nie ma usługi hostowanej, a użytkownik jest jedynym właścicielem i kontroluje swoje monety? Czy to jedno i drugie? Czy to coś innego? Czy wierzą, że istnieje podejście uniwersalne?
Ostatnią rzeczą, jaką prawdopodobnie chce zrobić firma świadcząca usługi blockchain, to dowiedzieć się, że zainwestowała ogromną ilość czasu, zasobów i wysiłku w tworzenie interfejsów API, które po prostu nie są tak przydatne w porównaniu z konkurencją. Może to być różnica między nimi, które nie zapewniają tego, czego twórcy aplikacji naprawdę potrzebują, a czego nie.
Twórcy aplikacji
Skąd programista aplikacji blockchain wie, że robi wszystko dobrze? Istnieje ogromna ilość zasobów programistycznych zorientowanych na Bitcoin Core, a nawet kodu startowego. Niektóre zasoby Bitcoin SV prawdopodobnie ekstrapolują z tych zasobów, zamiast patrzeć na to, co powinny robić na Bitcoin SV.
Ostatnią rzeczą, jakiej programista aplikacji prawdopodobnie chce, jest dowiedzenie się, że usługa łańcucha bloków jest porzucana lub coraz więcej pobiera opłat za interfejs API, na którym zbudowali, i zaleca przejście na inny interfejs API. Coś, czego można było uniknąć. Odejście od złego wyboru technologii bazowej może być dzwonem śmierci dla wysiłków twórców aplikacji i może nawet nie być ich winą w przyjęciu takiego podejścia. Mogli postępować zgodnie z powszechnie zalecanymi podejściami lub przykładowym kodem i nie mieli wystarczającej wiedzy, aby przemyśleć, czy są to najlepsze rzeczy do użycia.
końcowe przemyślenia
Chciałbym, aby ludzie wynieśli z tego to, że uważam, że warto analizować te interfejsy API i mówić, komu służą i czy nadal będą odpowiednie i będą oferować wartość w przyszłości? Czy można zastosować inne podejście, które jest oczywiście bardziej elastyczne i prawdopodobnie będzie odpowiednie i zaoferuje tę przyszłą wartość? Chociaż istnieje element, że nikt tak naprawdę nie wie, jaką przyjmie forma, jestem dość pewny swoich przewidywań.
Twórcy aplikacji powinni przynajmniej przemyśleć konsekwencje korzystania z interfejsów API, które nie mają gwarancji istnienia w przyszłości, a ja z pewnością nie widzę, by usługi blockchain kiedykolwiek gwarantowały, że je dostarczą. Jeśli chcesz posiadać własne dane, chcesz wiedzieć, że masz do nich dostęp, a najlepszym sposobem na to jest nie poleganie na żadnym modelu, który psuje się w przypadku zmiany lub usunięcia interfejsów API.
Obejrzyj: Panel BSV Global Blockchain Convention, The Future World with Blockchain
Autor : BitcoinSV.pl
Źródło : The future of blockchain services – CoinGeek