Niedawno uruchomiliśmy Industry Marketplace: niezależną platformę rozwijaną przez IOTA oraz wiodących światowych innowatorów. Ten post został utworzony z myślą o każdym, kto chce uczestniczyć w Industry Marketplace jako Usługodawca lub Usługobiorca. Poniżej, krótko podsumowano główny cel Industry Marketplace oraz jego kluczowe elementy. Następnie szczegółowo omówiono jak zainstalować, uruchomić i skonfigurować niezbędny składnik MarketManager.
Nie zapomnijcie śledzić kolejnych postów, które będą publikowane w najbliższych tygodniach. Wkrótce zostanie opublikowany post odnośnie możliwości zaangażowania we współpracę w Industry Marketplace.
Industry Marketplace
Industry Marketplace tworzy neutralny dla dostawców rynek komponentów Industry 4.0 (I4.0), służący do kupowania i sprzedawania towarów, danych i usług. W przeciwieństwie do tradycyjnych wirtualnych rynków, Industry Marketplace uruchomiony przez IOTA jest bezpłatną, dostępną dla wszystkich autonomiczną i zdecentralizowaną platformą wyszukującą oraz oferującą dane i usługi.
Użytkownik Industry Marketplace może przyjąć jedną z dwóch ról: Usługodawcy lub Usługobiorcy. Rola Usługobiorcy sprowadza się do korzystania z danych lub usług np. ładowanie, transport, wiercenie itp.., które są oferowane przez Usługodawcę. Usługobiorca wybiera Usługodawcę a następnie dokonuje płatności gdy usługa zostanie pomyślnie zrealizowana.
Język Industry 4.0 oraz [email protected]
Aby wykorzystać potencjał stojący za Industry Marketplace, ważne jest, aby każdy uczestnik komunikował się ze sobą w precyzyjnym i zrozumiałym języku. Ludzie mogą zrozumieć podstawowe przesłanie wiadomości bez mówienia tym samym językiem za pomocą wyobraźni oraz inteligencji. Jednak maszyny muszą się komunikować w tym samym języku, aby mogły się wzajemnie zrozumieć.
W związku z powyższym, żądanie wysłane przez Usługobiorcę musi być zinterpretowane w ten sam sposób przez wszystkich uczestników Industry Marketplace. Aby to osiągnąć, wszystkie wiadomości wymienione na platformie muszą być zgodne z językiem Industry Marketplace.
Bazując na tym, Usługobiorca wysyła swoje żądanie jako zaproszenie do składania ofert, w którym precyzuje żądaną usługę. Usługodawcy mogą następnie w odpowiedzi generować propozycję. Zarówno zaproszenie do składania ofert jak i sama propozycja zawierają opis techniczny i handlowy usługi. Mogą one obejmować np. cenę, czas, jakość oraz miejsce świadczenia usługi. Aby mieć pewność, że wszyscy uczestnicy w prawidłowy sposób zrozumieli usługę, właściwości [email protected] są częścią danych transakcji.
Sekwencję zawarcia umowy przedstawiono poniżej.

Więcej informacji na temat języka Industry 4.0 (English) oraz [email protected] można znaleźć na ich stronie internetowej oraz w dedykowanych dokumentach.
MarketManager
Aby utworzyć wiadomości w języku Industry 4.0 oraz wykonać logiczne powiązanie między Usługodawcami oraz Usługobiorcami, konieczny jest kluczowy komponent Industry Marketplace MarketManager. Market Manager pełni rolę pośrednika pomiędzy użytkownikiem a IOTA Tangle (podstawową strukturą danych w IOTA) i wykonuje następujące zadania:
- Tłumaczenie komunikatów języka I4.0 od SR oraz SP na transakcje IOTA wysłane do noda.
- Tłumaczenie otrzymanych transakcji IOTA na komunikaty języka I4.0 oraz filtrowanie tych istotnych dla podłączonego SR oraz SP.
- Uwierzytelnianie stron współpracujących przez tworzenie oraz weryfikację dowodu zdecentralizowanego uwierzytelnienia oraz identyfikacji prawa własności (DID).
Składnik MarketManager udostępniony w kodzie źródłowym jest wyposażony w interfejs użytkownika, który przekazuje dane użytkownika do zaplecza MarketManager.
Możliwe jest również korzystanie z MarketManager bez interfejsu użytkownika, wysyłając zapytania API jak opisano w naszej dokumentacji technicznej.
W tym artykule skupiono się na implementacji MarketManager z interfejsem użytkownika.
Jak zacząć
Zaczniemy od implementacji twojej własnej instancji MarketManager. Wcześniej, upewnij się, że masz zainstalowane poniższe składniki:
Wspieramy Node.js wersję 10 lub wyższe, proszę zaktualizuj swoją wersję jeśli jest starsza. Aby sprawdzić swoją wersję Node.js uruchom komendę „node –v” w konsoli lub terminalu.
Jeśli wszystkie powyższe składniki już zainstalowałeś, możesz przejść do poniższej instrukcji krok po kroku.
- 1. Pobierz lub sklonuj repozytorium Industry Marketplace z GitHub:
$ git clone https://github.com/iotaledger/industry-marketplace.git
- 2. Przejdź do folderu ServiceApp:
$ cd /industry-marketplace/ServiceApp
- 3. Zainstaluj wszystkie wymagane pakiety, skompiluj i uruchom aplikację za pomocą komendy yarn dev (może to wymagać otwarcia nowego okna terminala podczas pracy z systemem operacyjnym Windows).
$ yarn dev
Powyższa instrukcja spowoduje uruchomienie Back-end MarketManager na http://localhost:4000, a także interfejs użytkownika na http://localhost:3000.
Jeśli interfejs użytkownika nie uruchomi się automatycznie, możesz go otworzyć przez wpisanie adresu http://localhost:3000 w swojej przeglądarce.
Konfiguracja
Aby skonfigurować zainstalowany MarketManager, kliknij koło zębate w lewym dolnym rogu interfejsu użytkownika. Otworzy się okno konfiguracji.
Tutaj możesz skonfigurować użytkownika za pomocą nazwy, lokalizacji (adres lub lokalizacja GPS), wybrać jeden z dwóch dostępnych typów ( Usługodawca lub Usługobiorca). Możesz także zasilić istniejący wewnętrzny portfel używając do tego celu bezpłatnych żetonów Devnet IOTA, aktywując to pole. Proces zasilania twojego portfela może potrwać parę minut, nie przerywaj go.

Tożsamość cyfrowa
Kiedy konfiguracja zostanie ukończona oraz zatwierdzona po raz pierwszy, MarketManager automatycznie wygeneruje cyfrowy identyfikator Digital ID dla tej instancji, odbywa się to poprzez zainicjowanie kanału MAM (Mam-Channel) oraz przyjęcia jego rdzenia jako DID.
W tym samym kroku tworzona jest para kluczy RSA Keypair zawierająca klucz prywatny oraz publiczny do celów szyfrowania. Klucz publiczny użytkownika może być wykorzystany przez innych do zaszyfrowania poufnych danych, które powinny być dostępne tylko dla tego użytkownika. Jest to możliwe dzięki szyfrowaniu asynchronicznemu, w którym wiadomości zaszyfrowane kluczem publicznym mogą być odszyfrowane jedynie za pomocą pasującego klucza prywatnego.
Ponadto, generowany jest losowy adres do komunikacji. Ten adres zostanie później wykorzystany do otrzymania kwalifikacji wiarygodności od Fundacji IOTA w celu udowodnienia, że twój MarketManager jest zaufaną jednostka.
DID, keypair oraz losowy adres są łączone w Dokument DID i publikowane na kanale MAM (MAM-Channel). Dodatkowo DID, prywatny klucz oraz seed MAM są przechowywane w lokalnej bazie danych MarketManager.
Być Usługobiorcą
Jeśli uruchomiłeś swoją instancję MarketManager jako Usługobiorca oraz zasiliłeś swój portfel jak opisano powyżej, możesz śmiało utworzyć swoje pierwsze zaproszenie do składania ofert klikając przycisk Create Request. Ukaże się okno, w którym możesz sprecyzować operację oraz jej atrybuty, które chcesz zażądać.

Jeśli nie chcesz podawać realnych wartości w wymaganych polach, możesz użyć wbudowanego randomizera do ich wygenerowania. Wygenerowane dane mogą być dostosowane do własnych preferencji. Aby je wygenerować naciśnij skrzyżowane strzałki na górze okna.
Jak tylko prześlesz zapytanie, Back-end MarketManager przetłumaczy twoje dane wejściowe na komunikat języka I4.0 i wyśle je do noda. Twoje zaproszenie do składania ofert pojawi się w sekcji Propozycje Oczekujące (Awaiting Proposal) i pozostanie tam, dopóki Usługodawca Industry Marketplace nie odpowie komunikatem z propozycją.

Twoje zaproszenie do składania ofert zniknie, gdy tylko dotrze oferta.
Jak widać poniżej, otrzymaliśmy propozycję od użytkownika ServiceProvider, spełni on nasze żądanie za 2 tokeny IOTA. Tutaj możesz zaakceptować lub odrzucić propozycję.
Wnioski przedawnione nie mogą być już akceptowane.

Jeśli zaakceptujesz propozycję, karta przejdzie do kategorii „Awaiting fulfillment” i pozostanie tam, dopóki Usługodawca nie prześle wiadomości z potwierdzeniem, że operacja została pomyślnie wykonana. Następnie, karta przejdzie do sekcji „Awaiting payment” gdzie możesz przetworzyć płatność.

Płatność zostanie dodana do kolejki płatności, która zbiera wszystkie płatności w pięciominutowym przedziale czasowym i wykonuje je jako jedną. Więcej informacji na temat kolejki płatności można znaleźć w naszej dokumentacji technicznej.
Po pomyślnym dodaniu płatności do kolejki, karta przejdzie do sekcji „Completed”.
Być usługodawcą
Jeśli skonfigurowałeś użytkownika jako usługodawcę, w pierwszym kroku czekasz na zaproszenie do składania ofert.

Po otrzymaniu zaproszenia do składania ofert, można je zatwierdzić poprzez wprowadzenie ceny usługi. Cena musi być wprowadzona w tokenie IOTA. Do momentu wprowadzenia ceny przycisk wysłania oferty pozostaje nieaktywny. Przedawnione wnioski nie mogą zostać zaakceptowane.

W przypadku przyjęcia oferty, karta pojawi się w kategorii „Awaiting Fulfilment”.
W tym momencie hipotetycznie wykonujesz usługę oraz wysyłasz komunikat potwierdzający jak tylko zadanie zostanie wykonane. Jeśli zadania nie można wykonać, żądanie można nadal odrzucić naciskając przycisk „Reject Request”.

Zaufane tożsamości
Usługodawcy oraz Usługobiorcy mają możliwość włączenia filtru zaufanych żądań „Trusted Requests” w prawym górnym rogu.

Jeśli filtr jest włączony, do interfejsu użytkownika trafiają tylko wiadomości użytkowników oznaczonych jako zaufani. Jednak, aby móc otrzymywać propozycje od zaufanych Usługodawców lub Usługobiorców, twój MarkteManager musi sam stać się zaufaną tożsamością.
Zostań zaufaną tożsamością
Aby zostać oznaczonym jako Zaufana Tożsamość, MarketManager musi otrzymać kwalifikacje wiarygodności (Verifiable Credential) od Fundacji IOTA. Można to zrobić, wysyłając wiadomość e-mail z identyfikatorem DID instancji MarketManager (Usługodawca lub Usługobiorca) na adres [email protected].
Identyfikator DID można odebrać wysyłając GET API-Request do punktu końcowego. Otwórz swoją przeglądarkę z adresem http://localhost:4000/user i skopiuj “did:IOTA:” z następującym identyfikatorem ID do e-maila z nazwą swojej firmy, następnie utrzymuj MarketManager online przynajmniej do momentu otrzymania wiadomości e-mail z potwierdzeniem. Zajmie to do 24 godzin i zwykle odbywa się od poniedziałku do piątku.

Następnie zweryfikujemy twoją tożsamość i prześlemy potwierdzenie wiarygodności kwalifikacji (Verifiable Credentials) dla twojej instancji MarketManager za pomocą losowo generowanego adresu utworzonego podczas konfiguracji. Proces ten zostanie ulepszony w następnych aktualizacjach. Później będzie możliwe bezpośrednie dodanie do białej listy identyfikatora DID. Każda strona, która ufa organizacji, zaufa wtedy każdemu oznaczonemu przez organizację zaufaną tożsamością identyfikatorowi DID.
Kwalifikacje wiarygodności (Verifiable Credentials)
Kwalifikacje wiarygodności stanowią medium służące do udowodnienia, którzy inni użytkownicy zidentyfikowali danego użytkownika jako zaufanego. Wszystkie DID uczestników Industry Marketplace, którzy otrzymali poświadczenie Verifiable Credential potwierdzają, że są zaufanym uczestnikiem identyfikatora DID Fundacji IOTA.
Dziennik logowania/historia transakcji
Zarówno Usługodawca jak i Usługobiorca mają możliwość zapoznania się z historią transakcji, klikając w nagłówek karty „żądań”. Dane widoczne na nowej stronie są pozyskane bezpośrednio z zaszyfrowanego w Tangle kanału MAM i mogą do nich uzyskać dostęp jedynie Usługodawca i Usługobiorca uczestniczący w danej transakcji. Dane mogą być wykorzystane jako dziennik logowania.


Dane z czujników
Jeśli dane dla żądanej usługi są pozyskiwane z czujnika lub urządzenia, dane te można uzyskać na tej samej stronie gdzie jest dostępny dziennik transakcji.
Kliknij w nagłówek karty „żądania”, zaczekaj aż dane zostaną pobrane z zaszyfrowanego kanału MAM przy użyciu kwalifikacji dostarczonych przez Usługodawcę. Dane są wyświetlane jako karty w kolejności chronologicznej.
Informacje te można również pozyskać używając skryptu, a zatem można je wyeksportować do innej aplikacji. Należy pamiętać, że dane są dostępne dopiero po oznaczeniu żądania jako spełnione.
Usługodawca może określić, jak długo dane będą dostępne.

Linki zewnętrzne
Wszystkie niebieskie frazy w górnej części karty „żądania” są linkami, które można kliknąć.

Link przekierowuje do odpowiedniego opisu parametru w katalogu [email protected]

Inny typ linku zewnętrznego przekierowuje do usługi Google Maps z lokalizacja określoną przez współrzędne GPS.

Dalsze konfiguracje
Wiadomości otrzymane przez interfejs użytkownika są filtrowane w tle MarketManager. Filtry można skonfigurować przy użyciu pliku config.json w folderze ServiceApp/server/src.
Filtrowanie według rodzaju operacji. Ten filtr dotyczy zarówno Usługobiorcę (SR) jak i Usługodawcę (SP). Dany użytkownik może sprecyzować listę obsługiwanych operacji pod atrybutem operacje: […] w skrypcie konfiguracyjnym (config.json) MarketManagera. Identyfikator operacji zostaje dodany do tagu transakcji w celu szybszego filtrowania. Następnie tylko dozwolone transakcje mogą zostać wyświetlone. Konfiguracja parametru operacje z pliku config.json.
Filtrowanie według roli użytkownika i typu wiadomości. Rozróżniamy role Usługobiorcy (SR) oraz Usługodawcy (SP). Każda rola ma określony zestaw komunikatów, które może zaakceptować. W przypadku Usługobiorcy poprawne komunikaty to propozycja i informacja Potwierdź. W przypadku Usługodawcy poprawne komunikaty to zaproszenie do składania ofert, akceptuj ofertę, odrzuć ofertę oraz informacje o płatności. W przypadku aplikacji YellowPages akceptowane wiadomości to zaproszenie do składania ofert, oferta oraz akceptuj ofertę.
Filtrowanie według lokalizacji. Ten filtr dotyczy jedynie Usługodawcy. Jeśli użytkownik zdefiniował swoją lokalizację oraz określił maksymalny akceptowalny zasięg żądań, filtr oblicza dystans pomiędzy SR a SP. Odległość ta jest następnie porównywana z maksymalnym zasięgiem zdefiniowanym w skrypcie. Następnie tylko żądania zlokalizowane w tym zakresie mogą zostać wyświetlone. Parametr konfigurowany maxDistance z pliku config.json, wraz z własną lokalizacją, konfigurowany jest on przez API lub okno dialogowe MarketManager UI.
Filtrowanie według odbiorcy (DID użytkownika). Ten ostatni typ filtru dotyczy wiadomości innych niż zaproszenie do składania ofert, które są wysyłane do każdego usługodawcy. Wszystkie inne wiadomości określają pole ID odbiorcy, które jest pobierane i porównywane z wewnętrznym DID jednostki. Tylko w przypadku dopasowania wiadomość może zostać wyświetlona.
Jeśli nadal masz pytania dotyczące tego, jak zacząć, dołącz do nas na Discord do dedykowanego kanału Industry Marketplace.
Odwiedź nas i dołącz do Industry Marketplace już teraz: industry.iota.org
Powyższy tekst jest tłumaczeniem postu z języka angielskiego który oryginalnie ukazał pod tym adresem.