Ergo의 스텔스 주소

Jan 17 2023
이 기사에서는 Ergo 블록체인의 스텔스 주소, 사용 이유, 기능 및 잠재적 구현에 대해 살펴보겠습니다. Discord 및 GitHub의 EIP-41 풀 요청에 대한 논의가 아직 진행 중이므로 여기에 설명된 구현이 구식이 될 수 있지만 현재 상태로는 인구 조사에 거의 도달한 것으로 보입니다.

이 기사에서는 Ergo 블록체인 의 스텔스 주소 , 사용 이유, 기능 및 잠재적 구현에 대해 살펴보겠습니다 . Discord 및 GitHub의 EIP-41 풀 요청 에 대한 논의가 아직 진행 중이므로 여기에 설명된 구현이 구식이 될 수 있지만 현재 상태로는 인구 조사에 거의 도달한 것으로 보입니다.

Ergo의 스텔스 주소 구현은 포럼 kushti과 scalahub포럼 간의 토론에서 비롯되었습니다. 여기에서 확인하십시오 .

스텔스 주소란 무엇입니까?

스텔스 주소를 사용하면 개인 정보를 보호하는 거래를 할 수 있습니다. 기본적으로 Ergo(및 비트코인과 같은 대부분의 다른 블록체인)에서 이루어진 모든 지불은 원장을 보는 모든 사람이 볼 수 있으므로 누군가 귀하의 공개 주소를 알고 있으면 귀하가 받는 모든 지불을 추적할 수 있습니다. Monero와 같은 블록체인은 기본적으로 옵트아웃할 수 없는 방식으로 개인 정보가 보호되는 방식으로 모든 트랜잭션이 수행됩니다. Ergos 정신은 선택을 네트워크 사용자의 손에 맡기는 것입니다.

Ergo 선언 :

프라이버시는 개인을 위한 공간을 만들기 위해 장벽을 만들고 경계를 세우는 능력입니다. 그들이 만들기로 선택한 경계와 경계는 각자에게 달려 있습니다.

Ergo에서 스텔스 주소의 잠재적 사용 사례는 무엇입니까?

EIP-41 스텔스 주소를 사용하면 지불을 사용자 공개 주소에 연결할 수 있는 원장을 모니터링하는 사람 없이 사용자가 개인적으로 지불을 받을 수 있습니다. 비대화형 특성은 사용자가 스텔스 주소를 자유롭게 공유하고 추가 조치 없이 지불을 받을 수 있음을 의미합니다.

예를 들어 이를 설명하려면 다음을 수행하십시오.

  1. Bob은 자신의 Twitter 약력에 스텔스 주소를 게시합니다.
  2. Alice는 Bob에게 기부하기를 원하므로 Bob이 공개적으로 게시한 스텔스 주소를 사용하여 일부 ERG를 보냅니다.
  3. 아무도 Bob에게 지불한 금액을 연결할 수 없습니다.

스텔스 주소는 ErgoMixer와 같은 기존 솔루션과 어떻게 다릅니까?

언급한 스텔스 주소는 결제 영수증을 숨기기 위한 것이므로 결제를 난독화하는 혼합 서비스와 다릅니다 .

이전 섹션의 예를 들어 믹서를 사용하면 모든 사람이 여전히 Bob이 지불을 받았음을 볼 수 있지만 지불의 출처를 확인할 수는 없습니다.

이 두 개인정보 보호 옵션에는 고유한 사용 사례가 있습니다!

그들은 어떻게 작동합니까?

이 솔루션은 비대화형 Diffie Hellman 키 교환을 기반으로 하며 다음과 같이 진행됩니다.

  1. Bob은 공유할 공개 주소를 생성합니다. 여기서는 특별한 것이 없습니다. 이것은 일반 주소와 같습니다(우리는 현재 EIP의 일부로 새로운 P2PA Pay-to-public-app 주소 유형을 추가하여 스텔스 주소를 처리할 수 있도록 논의 중입니다. 지갑에서 원활하게).
  2. Alice는 공개적으로 공유된 주소를 사용하여 Bob의 자금을 보호하기 위해 스마트 계약에서 사용되는 임의의 값을 생성합니다.

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))

전체 코드 예제

또한 일부 코드를 사용하려는 경우 발신자 또는 수신자의 관점에서 실제 시나리오를 실행하는 전체 코드 예제 도 있습니다 .

읽어 주셔서 감사합니다.