Ukryte adresy na Ergo

Jan 17 2023
W tym artykule omówimy adresy stealth w łańcuchu bloków Ergo, dlaczego ich używać, czym są i ich potencjalną implementację. Nadal trwają dyskusje na temat niezgody i żądania ściągnięcia EIP-41 na GitHub, więc możliwe, że wyjaśniona tutaj implementacja stanie się przestarzała, ale w obecnym stanie wydaje się, że jesteśmy blisko osiągnięcia spisu.

W tym artykule omówimy adresy stealth w łańcuchu bloków Ergo , dlaczego ich używać, czym one są i ich potencjalną implementacją. Nadal trwają dyskusje na temat niezgody i żądania ściągnięcia EIP-41 na GitHub , więc możliwe, że wyjaśniona tutaj implementacja stanie się przestarzała, ale w obecnym stanie wydaje się, że jesteśmy blisko osiągnięcia spisu.

Implementacja ukrytych adresów na Ergo wywodzi się z dyskusji między kushtii scalahubna forach, sprawdź to tutaj .

Co to jest ukryty adres?

Ukryte adresy umożliwiają dokonywanie transakcji z zachowaniem prywatności. Domyślnie wszystkie płatności dokonane na Ergo (i większości innych łańcuchów bloków, takich jak Bitcoin) są widoczne dla każdego, kto przegląda księgę, więc jeśli ktoś zna Twój adres publiczny, może śledzić wszystkie otrzymywane płatności. Istnieją łańcuchy bloków, takie jak Monero, w których wszystkie transakcje są przeprowadzane w taki sposób, że domyślnie zachowana jest prywatność, bez możliwości rezygnacji, etosem Ergos jest oddanie wyboru w ręce użytkowników sieci.

Ergo Manifest :

Prywatność to zdolność do tworzenia barier i wznoszenia granic, aby stworzyć przestrzeń dla jednostki. Od każdego zależy, jakie granice i granice wybierze.

Jakie są potencjalne przypadki użycia ukrytych adresów w Ergo?

Ukryte adresy EIP-41 umożliwiają użytkownikom prywatne otrzymywanie płatności bez możliwości powiązania płatności z publicznym adresem użytkownika przez osoby monitorujące księgę. Ich nieinteraktywny charakter oznacza, że ​​użytkownicy mogą swobodnie udostępniać swoje ukryte adresy i otrzymywać płatności bez konieczności podejmowania dalszych działań.

Aby zademonstrować to na przykładzie:

  1. Bob publikuje swój ukryty adres w swoim biografii na Twitterze
  2. Alice chce przekazać darowiznę Bobowi, więc wysyła trochę ERG, korzystając z ukrytego adresu, który Bob opublikował publicznie
  3. Nikt nie może powiązać żadnej płatności dokonanej z Bobem

Czym różnią się adresy stealth od istniejących rozwiązań, takich jak ErgoMixer?

Jak wspomniano, ukryte adresy mają na celu ukrycie otrzymania płatności, co różni się od usług mieszania, które zaciemniają płatności.

Weźmy nasz przykład z poprzedniej sekcji, używając miksera, wszyscy nadal będą mogli zobaczyć, że Bob otrzymał płatność, ale nie będą w stanie określić pochodzenia płatności.

Obie te opcje prywatności mają swoje własne unikalne przypadki użycia!

Jak oni pracują?

Rozwiązanie opiera się na nieinteraktywnej wymianie kluczy Diffie Hellman i wygląda następująco:

  1. Bob generuje adres publiczny do udostępnienia, nic specjalnego tutaj jest jak normalny adres (obecnie prowadzimy rozmowy w celu dodania nowego typu adresu P2PA do płatności za aplikacje publiczne jako części EIP, aby można było obsługiwać ukryte adresy bezproblemowo w portfelach).
  2. Alice używa publicznie udostępnionego adresu do tworzenia losowych wartości, które są używane w inteligentnej umowie w celu ochrony funduszy dla Boba.

const g = this.ec.g;
const u = bobsPublicAddress;
const r = new BN(rand(32));
const y = new BN(rand(32));
const r4 = g.mul(r);
const r5 = g.mul(y);
const r6 = u.mul(r);
const r7 = u.mul(y);

{
    // ===== Contract Information ===== //
    // Name: EIP-0041 Stealth address contract
    // Version: 1.0.0
    val gr = SELF.R4[GroupElement].get
    val gy = SELF.R5[GroupElement].get
    val ur = SELF.R6[GroupElement].get
    val uy = SELF.R7[GroupElement].get

    proveDHTuple(gr,gy,ur,uy)
}

const gr = BOX.r4
const gy = BOX.r5
const ur = BOX.r6
const uy = BOX.r7
const bobsSecret = publicAddress.secretKey

const boxIsSpendable = ur.eq(gr.mul(bobsSecret)) && uy.eq(gy.mul(bobsSecret))

Pełny przykład kodu

Mam tutaj również pełny przykład kodu , który uruchamia prawdziwe scenariusze z perspektywy nadawcy lub odbiorcy, jeśli chcesz bawić się kodem.

Dziękuje za przeczytanie.