Cointime

Download App
iOS & Android

Xinhuo Technology, 업계에서 가장 빠르고 안전한 2-n ECDSA 임계값 서명 출시

Validated Project

*편집자 주: 이 기술은 애플리케이션, 빅 데이터 및 클라우드 컴퓨팅, 지속 가능한 컴퓨팅 및 통신, 소셜 컴퓨팅 및 네트워킹(ISPA/BDCloud/SocialCom/SustainCom)을 통한 병렬 및 분산 처리에 관한 2023 IEEE Intl Conf에서 발표되었습니다. DOI: 10.1109/ISPA-BDCloud-SocialCom-SustainCom59178.2023.00092*

# 소개

Li17은 업계에서 가장 빠르고 안전한 2-2 ECDSA 서명입니다. CGGMP20은 업계에서 가장 안전하고 비교적 빠른 tn ECDSA 임계값 서명입니다. 디지털 자산 보관 분야에서는 2~3개의 ECDSA 임계값 서명이 널리 사용됩니다. 이 경우 Li17 2-2 시그니처를 직접 사용할 수 없으며 적절하게 수정해야 합니다. 구체적으로 다음과 같이 수정됩니다. Alice와 Bob은 분산형 키 생성 프로토콜을 실행하여 각각 개인 키 조각 $a$ ​​및 $b$를 생성한 다음 분산형 키 새로 고침 프로토콜을 두 번 실행하여 $(a ', b')$를 생성합니다. $(a'', b'')$; Alice는 $a'$를 Carol에게 비밀로 보내고 Bob은 $b''$를 Carol에게 비밀로 보냅니다. 따라서 Alice와 Bob은 개인 키 샤딩 $(a,b)$을 사용하고, Alice와 Carol은 개인 키 샤딩 $(a'', b'')$를 사용하고, Bob과 Carol은 개인 키 샤딩 $(a',b)를 사용합니다. ')$, 서명을 얻을 수 있습니다. 하지만 위의 과정은 개인키 조각을 직접 전송하게 되는데, 개인키 조각이 유출되면 책임을 추적할 수 없게 되어 보관 부담이 가중됩니다! 반면 CGGMP20 tn 임계값 서명을 사용하려면 $t=2,n=3$이 필요합니다. 하지만 CGGMP20의 프로토콜 복잡도가 상대적으로 높기 때문에 큰 칼로 닭을 죽일 방법은 없습니다!

Li17 거대 기업의 어깨 위에 서서 이 기사는 빠르고 안전한 2-n ECDSA 임계값 서명을 제안합니다. 이 프로토콜은 Li17 2-2 서명의 보안과 속도를 상속합니다.

특히, 분산형 키 생성 프로토콜과 키 새로 고침 프로토콜에서 임계값은 2-n 임계값 서명을 달성하기 위해 라그랑주 보간 다항식을 기반으로 구성됩니다. 또한 사전 서명 단계에서는 무작위 메시지를 미리 계산하고, 온라인 서명 단계에서는 메시지와 무작위 메시지의 차이만 서명하면 되므로 온라인 서명 단계의 속도가 향상됩니다. 따라서 이 문서의 2-n ECDSA 임계값 서명은 Li17 2-2 서명 프로토콜만큼 안전하며 서명 속도도 더 빠릅니다.

# 2-n ECDSA 임계값 서명

초기화: 타원 곡선 그룹 $\mathbb{G}$의 생성자는 $G$이고 순서는 $\tilde{q}$입니다.

## 프로토콜 1: 분산형 키 생성

**1단계:** 각 사용자 $i$는 Paillier 키 쌍 $({{N}_{i}},{{p}_{i}},{{q}_{i}} )$를 생성합니다. .

임의의 숫자 ${{u}_{i}}\in [0, \tilde{q}-1]$를 선택하고 다음과 같이 타원 곡선 점을 계산합니다.

$${{U}_{i}}:={{u}_{i}}\cdot G.$$

그런 다음 Promise를 계산하고 Promise를 엽니다.

$$(KG{{C}_{i}},KG{{D}_{i}}):=\mathsf{Com}({{U}_{i}}).$$

브로드캐스트 약정 $KG{{C}_{i}}$ 및 Paillier 공개 키 ${{N}_{i}}$, 난수 저장 ${{u}_{i}}$, Paillier 개인 키 ${ {p}_{i}},{{q}_{i}}$ 및 공개 약정 $KGD_i$.

브로드캐스트 약정 $KG{{C}_{i}}$ 및 Paillier 공개 키 ${{N}_{i}}$, 난수 저장 ${{u}_{i}}$, Paillier 개인 키 ${ {p}_{i}},{{q}_{i}}$ 및 공개 약정 $KGD_i$.

**2단계:** 다른 사용자로부터 $KG{{C}_{j}},j\ne i$ 및 Paillier 공개 키 ${{N}_{j}},j\ne i 약정을 받은 경우 $ 후에 사용자 $i$는 공개 약정 $KG{{D}_{i}}$을 다른 사용자에게 공개합니다.

**3단계:** 각 사용자 $i$는 다른 사용자로부터 받은 모든 공개 약정의 정확성을 확인합니다.

유효한 경우 공동 공개 키는 다음과 같이 계산됩니다.

$$PK:=\sum\limits_{i=1}^{n}{U_i}.$$

**라그랑주 중복성** 구성: 난수 $a_i\in [0,\tilde{q}-1]$를 선택하고 1차 다항식을 구성합니다.

$${{p}_{i}}(x)={{u}_{i}}+x\cdot a_i.$$

${{p}_{i}}(i)$를 저장하고 ${{p}_{i}}(j)$를 다른 사용자 $j$에게 비밀리에 보냅니다.

**펠드먼 튜플** 계산:

$${{A}_{i}}:={{a}_{i}}\cdot G$$

$A_i$을 방송하세요.

**4단계:** 각 사용자 $i$는 다른 사용자가 보낸 ${{p}_{j}}(i)$ 및 $\{{{A}_{j}}\},j를 받습니다 =1 ,...,n $, **Feldman 튜플**의 일관성을 확인합니다.

$${{p}_{j}}(i)\cdot G={{U}_{j}}+i\cdot {{A}_{j}}.$$

개인 키 샤드와 공개 키 샤드를 다음과 같이 계산합니다.

$$\begin{정렬됨}

& {{x}_{i}}:=\sum\limits_{j=1}^{n}{{{p}_{j}}(i)}\,\bmod \,\tilde{q} =sk+\sum\limits_{j=1}^{n}{(j\cdot {{a}_{j}})}\,\bmod \,\tilde{q}, \\

& {{X}_{i}}:={{x}_{i}}\cdot G. \\

\end{정렬}$$

그런 다음 zk-Schnorr를 사용하여 개인 키 조각 ${{x}_{i}}$을 알고 있음을 증명하고, zk-Paillier-Blum을 사용하여 ${{N}_{i}}$가 Paillier임을 증명합니다. - 블룸 계수.

Paillier 공개 키 ${{N}_{i}}$를 사용하여 ${{x}_{i}}$ 암호화

$${{c}_{key,i}}:=\mathsf{Enc}_{{{N}_{i}}}({{x}_{i}})$$

zk 범위 증명

$$zk\left\{ {{x_i},{r_i}\left| \begin{배열}{l}

{{c}_{키,i}} ={{(1+{{N}_{i}})}^{{{x}_{i}}}}r_{i}^{{{N }_{i}}}\bmod N_{i}^{2}, \\

{{X}_{i}} ={{x}_{i}}\cdot G, \\

{{x}_{i}} \in {{\mathbb{Z}}_{\tilde{q}}}

{{X}_{i}} ={{x}_{i}}\cdot G, \\

{{x}_{i}} \in {{\mathbb{Z}}_{\tilde{q}}}

\end{배열} \right.} \right\}$$

공개 키 조각 $X_i$, 암호문 $c_{key,i}$ 및 3개의 zk 증명을 브로드캐스트합니다.

**5단계:** 각 사용자 $i$가 다른 사용자의 공개 키 조각 ${{X}_{j}},j\ne i$ 및 zk 증명을 받으면 세 가지 zk 증명을 확인합니다. 또한 각 사용자는 다음과 같이 라그랑주 보간의 일관성을 확인합니다.

$$PK=\lambda _{i,j}\cdot X_i +\lambda _{j,i}\cdot X_j,$$

그 중 $\lambda_{i,j}$와 $\lambda_{j,i}$는 해당 라그랑주 보간계수이다.

분산형 키 생성 프로토콜의 실행이 완료된 후, 각 사용자 $i$는 개인 키 조각 $x_i$, 공개 키 조각 $X_i$, 공동 공개 키 $PK$ 및 $n-1$ 암호문 $을 얻습니다. c_{key_j}, j \neq i$.

## 프로토콜 2: 분산형 키 새로 고침

**1단계:** 각 사용자 $i,i=1,...,n$는 난수 $a_i'\in [0,\tilde{q}-1]$를 선택하고 **라그랑주 다항식 *을 구성합니다. *:

$$p_i'(x)=x\cdot a_i'.$$

상수 항은 0이라는 점에 유의하십시오. ${{p}_{i}}'(i)$를 저장하고 ${{p}_{i}}'(j)$를 각 사용자 $j$에게 비밀리에 보냅니다. 그런 다음 **Feldman 튜플**을 계산합니다.

$$A_i':=a_i'\cdot G$$

$A_i'$를 방송하세요.

**2단계:** 각 사용자 $i$는 다른 사용자로부터 $p_j'(i)$ 및 $\{A_j'\},j=1,...,n$을 수신하고 **Feldman 요소를 확인합니다. 그룹** 일관성:

$$p_j'(i)\cdot G=i\cdot A_j'.$$

새 개인 키 샤드와 새 공개 키 샤드를 다음과 같이 계산합니다.

$$\begin{정렬됨}

& x_i':=x_i+a_j', \\

& X_i':=x_i'\cdot G. \\

\end{정렬}$$

그런 다음 zk-Schnorr는 $x_i'$를 알고 있음을 증명합니다.

Paillier 공개 키 ${{N}_{i}}$를 사용하여 $x_i'$ 암호화

$$c_{key,i}':=\mathsf{Enc}_{{{N}_{i}}}(x_i')$$

zk 범위 증명:

$$zk\left\{ {x_i',r_i'\left| \begin{배열}{l}

c_{키,i}' = {(1 + {N_i})^{x_i'}}{(r_i')^{{N_i}}}\bmod N_i^2\\

X_i' = x_i' \cdot G\\

c_{키,i}' = {(1 + {N_i})^{x_i'}}{(r_i')^{{N_i}}}\bmod N_i^2\\

X_i' = x_i' \cdot G\\

x_i' \in {\mathbb{Z}_{\tilde q}}

\end{배열} \right.} \right\}$$

새로운 공개 키 조각 $X_i'$, 암호문 $c_{key,i}'$ 및 두 개의 zk 증명을 브로드캐스트합니다.

**3단계:** 각 사용자 $i$는 다른 사용자의 공개 키 조각 $X_j',j\ne i$와 두 개의 zk 증명을 수신하고 두 개의 zk 증명의 유효성을 확인합니다. 또한 각 사용자는 라그랑주 보간법의 일관성을 확인할 수 있습니다.

$$PK=\lambda _{i,j}\cdot X_i' +\lambda _{j,i}\cdot X_j',$$

그 중 ${{\lambda }_{i,j}}$와 ${{\lambda }_{j,i}}$는 해당 라그랑주 보간계수이다.

분산 키 새로 고침 프로토콜이 완료된 후 각 사용자 $i$는 새로운 개인 키 조각 $x_i'$, 새로운 공개 키 조각 $X_i'$ 및 $n -1$ 새로운 암호문 $c_{key_j}',j를 얻습니다. \neq i$.

## 계약 3: 사전 서명된 계약

**1단계:** 사용자 $i$는 다음과 같이 계산된 임의의 숫자 ${{k}_{i}}\in [0,\tilde{q}-1]$를 선택합니다.

$${{R}_{i}}:={{k}_{i}}\cdot G.$$

zk-Schnorr는 난수 ${{k}_{i}}$를 알고 있음을 증명합니다.

$$proo{{f}_{i}}:=zk\left\{ {{k}_{i}}\left| {{R}_{i}}={{k}_{i}} \cdot G \오른쪽\}.$$

${{R}_{i}}$ 및 $proo{{f}_{i}}$에 대해 약정을 계산하고 약정을 개설합니다.

$$\left[ KG{{C}_{i}},KG{{D}_{i}} \right]:=\mathsf{Com}({{R}_{i}},proo{{ f}_{i}}).$$

$j$ 사용자에게 $KG{{C}_{i}}$ 약정을 보냅니다.

**2단계:** $KG{{C}_{i}}$ 약정을 받은 후 $j$ 사용자는 임의의 숫자 ${{k}_{j}}\in [0,\tilde {를 선택합니다. q}-1]$, 계산

$${{R}_{j}}:={{k}_{j}}\cdot G$$

zk-Schnorr는 난수를 알고 있음을 증명합니다.

$$proo{{f}_{j}}:=zk\left\{ {{k}_{j}}\left| {{R}_{j}}={{k}_{j}} \cdot G \오른쪽\}.$$

그런 다음 $({{R}_{j}},proo{{f}_{j}})$를 사용자 $i$에게 보냅니다.

**3단계:** $({{R}_{j}},proo{{f}_{j}})$를 받은 후 $i$ 사용자는 약정의 일관성을 확인합니다. 일치하지 않으면 거부하고 그렇지 않으면 커밋 $KG{{D}_{i}}$가 열리고 사용자 $j$에게 전송됩니다.

**4단계:** $({{R}_{i}},proo{{f}_{i}})$를 받은 후 $j$ 사용자는 Promise의 일관성을 확인합니다. 일관성이 없으면 거부하고, 그렇지 않으면 다음과 같이 계산합니다.

$$\begin{정렬됨}

R&:={{k}_{j}}\cdot {{R}_{i}}, \\

$$\begin{정렬됨}

R&:={{k}_{j}}\cdot {{R}_{i}}, \\

r&:={{R}_{[x]}}\bmod \tilde{q},

\end{정렬}$$

여기서 ${{R}_{[x]}}$는 $R$의 $x$ 좌표를 나타냅니다.

임의의 메시지 ${{m}_{0}}\in [0,\tilde{q}-1]$ 및 임의의 숫자 $\rho \in [0, {{\tilde{q}}^{를 선택하세요. 2}}-1]$, 계산

$${{c}_{0}}:=\mathsf{Enc}_{{{N}_{i}}}(k_{j}^{-1}\cdot {{m}_{0} }\bmod \tilde{q}+\rho \cdot \tilde{q}).$$

그런 다음 다음과 같이 계산하십시오.

$$\begin{정렬됨}

& {{c}_{1}}:=\left( ({{\lambda }_{i,j}}\odot {{c}_{key,i}})\oplus \mathsf{Enc}_ {{{N}_{i}}}({{\lambda }_{j,i}}{{x}_{j}}) \right)\odot (k_{j}^{-1}r ), \\

& {{c}_{2}}:={{c}_{0}}\oplus {{c}_{1}} \\

\end{정렬}$$

마지막으로 ${{c}_{2}}$가 $i$ 사용자에게 전송되고 $({{m}_{0}},r)$가 저장됩니다.

**5단계:** ${{c}_{2}}$을(를) 받은 후 $i$ 사용자는 Paillier 개인 키를 사용하여 다음과 같이 암호를 해독합니다.

$${{s}_{0}}:=\mathsf{12월}_{{{p}_{i}},{{q}_{i}}}({{c}_{2}} ).$$

그런 다음 다음과 같이 계산하십시오.

$$\begin{정렬됨}

& {{s}_{1}}:=k_{i}^{-1}\cdot {{s}_{0}}\bmod \tilde{q}, \\

& R':={{k}_{i}}\cdot {{R}_{j}},\\

& r':=R_{[x]}'\bmod \tilde{q}.

\end{정렬}$$

${{s}_{1}}$ 및 $r'$를 저장합니다.

*분석 1:*

왜냐하면

$${{k}_{j}}\cdot {{R}_{i}}={{k}_{i}}{{k}_{j}}\cdot G={{k}_ {i}}\cdot {{R}_{j}}$$

따라서 $R=R'$이므로 $r=r'$입니다.

반면 ${{c}_{1}}$에 대한 표현식은 다음과 같습니다.

$$\begin{정렬됨}

{{c}_{1}} & =\left( ({{\lambda }_{i,j}}\odot {{c}_{key,i}})\oplus \mathsf{Enc}_{ {{N}_{i}}}({{\lambda }_{j,i}}{{x}_{j}}) \right)\odot (k_{j}^{-1}r) \\

{{c}_{1}} & =\left( ({{\lambda }_{i,j}}\odot {{c}_{key,i}})\oplus \mathsf{Enc}_{ {{N}_{i}}}({{\lambda }_{j,i}}{{x}_{j}}) \right)\odot (k_{j}^{-1}r) \\

& =\left( \mathsf{Enc}_{{{N}_{i}}}({{\lambda }_{i,j}}{{x}_{i}})\oplus \mathsf{ Enc}_{{{N}_{i}}}({{\lambda }_{j,i}}{{x}_{j}}) \right)\odot (k_{j}^{- 1}r) \\

& =\mathsf{Enc}_{{{N}_{i}}}({{\lambda }_{i,j}}{{x}_{i}}+{{\lambda }_{j ,i}}{{x}_{j}})\odot (k_{j}^{-1}r) \\

& =\mathsf{Enc}_{{{N}_{i}}}(x)\odot (k_{j}^{-1}r) \\

& =\mathsf{Enc}_{{{N}_{i}}}(k_{j}^{-1}rx).

\end{정렬}$$

${{c}_{2}}$의 표현식은 다음과 같습니다.

$$\begin{정렬됨}

{{c}_{2}} & ={{c}_{0}}\oplus {{c}_{1}} \\

& =\mathsf{Enc}_{{{N}_{i}}}(k_{j}^{-1}{{m}_{0}}\bmod \tilde{q}+\rho \tilde {q})\oplus \mathsf{Enc}_{{{N}_{i}}}(k_{j}^{-1}rx) \\

& =\mathsf{Enc}_{{{N}_{i}}}(k_{j}^{-1}{{m}_{0}}\bmod \tilde{q}+\rho \tilde {q}+k_{j}^{-1}rx) \\

\end{정렬}$$

따라서 ${{s}_{0}}$에 대한 표현식은 다음과 같습니다.

$${{s}_{0}}=k_{j}^{-1}{{m}_{0}}\bmod \tilde{q}+\rho \tilde{q}+k_{j} ^{-1}rx.$$

${{s}_{1}}$의 표현식은 다음과 같습니다.

$$\begin{정렬됨}

{{s}_{1}} & =k_{i}^{-1}{{s}_{0}}\bmod \tilde{q} \\

& =k_{i}^{-1}k_{j}^{-1}{{m}_{0}}\bmod \tilde{q}+k_{i}^{-1}k_{j} ^{-1}rx\bmod \tilde{q} \\

& ={{k}^{-1}}{{m}_{0}}+{{k}^{-1}}rx\bmod \tilde{q} \\

\end{정렬}$$

*분석 2:* 활성 및 보안 임계값 서명을 구현하려면 참가자는 각 서명 후 개인 키 조각을 새로 고쳐야 합니다. 키 새로 고침 프로토콜에는 2라운드의 상호 작용이 필요한 반면, 사전 서명 프로토콜에는 4라운드가 필요합니다. 효율성을 향상시키기 위해 두 프로토콜을 통합할 수 있습니다. 특히 사전 서명 프로토콜과 분산 키 새로 고침 프로토콜의 대화형 데이터를 동시에 전송할 수 있습니다. 이 접근 방식은 분산형 키 새로 고침 프로토콜에 대한 두 번의 개별 상호 작용을 제거하고 사용자 인증과 같은 프로세스를 단순화하여 효율성을 향상시킵니다.

## 프로토콜 4: 온라인 서명

**1단계:** $msg$ 메시지에 대해 $j$ 사용자는 다음을 계산합니다.

## 프로토콜 4: 온라인 서명

**1단계:** $msg$ 메시지에 대해 $j$ 사용자는 다음을 계산합니다.

$$\tilde{m}:=(\mathsf{해시}(msg)-{{m}_{0}})\bmod \tilde{q}.$$

그런 다음 계산

$${{c}_{3}}:=\mathsf{Enc}_{{{N}_{i}}}(k_{j}^{-1}\tilde{m}\bmod \tilde{ q}).$$

${{c}_{3}}$을(를) 사용자 $i$에게 보냅니다.

**2단계:** ${{c}_{3}}$을(를) 받은 후 $i$ 사용자는 개인 키를 사용하여 암호를 해독합니다.

$${{s}_{2}}:=\mathsf{12월}_{{{p}_{i}},{{q}_{i}}}({{c}_{3}} ).$$

그런 다음 다음과 같이 계산합니다.

$$\begin{정렬됨}

& {{s}_{3}}:=(k_{i}^{-1}{{s}_{2}})\bmod \tilde{q}, \\

& {{s}_{4}}:=({{s}_{1}}+{{s}_{3}})\bmod \tilde{q}.

\end{정렬}$$

$s=\min \{{{s}_{4}},\tilde{q}-{{s}_{4}}\}$로 둡니다. $msg$ 메시지의 경우 $(r, s)$가 유효한 서명이면 승인하고 그렇지 않으면 거부합니다.

*분석 1:* ${{s}_{2}}$ 및 ${{s}_{3}}$의 표현식은 각각 다음과 같습니다.

$$\begin{정렬됨}

& {{s}_{2}}=k_{j}^{-1}\tilde{m}\bmod \tilde{q}, \\

& {{s}_{3}}=k_{i}^{-1}k_{j}^{-1}\tilde{m}\bmod \tilde{q}={{k}^{-1 }}\tilde{m}\bmod \tilde{q} \\

\end{정렬}$$

${{s}_{4}}$의 표현식은 다음과 같습니다.

$$\begin{정렬됨}

{{s}_{4}} & =({{s}_{1}}+{{s}_{3}})\bmod \tilde{q} \\

& ={{k}^{-1}}{{m}_{0}}+{{k}^{-1}}rx+{{k}^{-1}}\tilde{m}\bmod \tilde{q} \\

& ={{k}^{-1}}(\tilde{m}+{{m}_{0}})+{{k}^{-1}}rx \\

& ={{k}^{-1}}(\mathsf{해시}(msg)+rx) .\\

\end{정렬}$$

따라서 $(r, s)$는 $msg$ 메시지에 대한 유효한 서명입니다.

*분석 2:*

\end{정렬}$$

따라서 $(r, s)$는 $msg$ 메시지에 대한 유효한 서명입니다.

*분석 2:*

(1) 타원 곡선의 대칭은 ECDSA 서명에 연성을 도입합니다. $(r, s)$가 유효한 서명이면 $(r, \tilde{q}-s)$도 유효합니다. 따라서 2-n 임계값 서명 프로토콜은 가단성 문제를 겪습니다. 즉, $(r, s)$ 및 $(r, \tilde{q}-s)$는 모두 유효한 서명입니다. 이 문제를 방지하려면 $s = \min\{s, \tilde{q}-s\}$를 사용하여 $s$의 값을 표준화하고 유연성을 제거합니다. (2) BitForge 공격을 방지하려면 서명이 실패하면 분산형 키 새로 고침 프로토콜 프로토콜을 구현합니다.

**참고자료**

1. Lindell Y. Fast secure two-party ECDSA 서명[C]//Advances in Cryptology – CRYPTO 2017: 제37회 연례 국제 암호학 컨퍼런스, 미국 캘리포니아주 산타바바라, 2017년 8월 20~24일, 회보, 파트 II 37. 스프링거 국제 출판, 2017: 613-644.

2. Canetti R, Gennaro R, Goldfeder S 등 UC 식별 가능한 중단이 포함된 사전 예방적 ECDSA[C]//컴퓨터 및 통신 보안에 관한 2020 ACM SIGSAC 회의 절차: 1769-1787.

3. Makriyannis N, Yomtov O.: 주요 MPC 지갑의 실제 키 추출 공격[J] 암호화 ePrint 아카이브, 2023.

시노호프 소개

SINOHOPE Technology Holdings Co., Ltd.("SINOHOPE", 주식 코드: 1611.HK)는 디지털 자산 보관에 중점을 두고 모든 기업이 디지털 자산을 안전하고 편리하게 사용할 수 있도록 다양한 보관 솔루션을 제공합니다. 회사의 핵심 제품인 MPC 자체 호스팅 플랫폼 SINOHOPE는 MPC-CMP 기술을 사용하여 개인 키 샤딩 및 공동 서명에 대한 사용자의 분산 관리를 지원하고 개인 키의 단일 지점 위험을 해결하며 투명성과 사용 편의성을 효과적으로 높입니다.

SINOHOPE는 안전, 규정 준수, 전문성 및 다양화의 서비스 원칙을 준수하며 MPC 자체 보관 플랫폼 및 라이선스가 부여된 디지털 자산 보관 서비스를 기반으로 간단하고 사용하기 쉬운 중앙 집중식 및 분산형 혼합 산업 서비스를 제공합니다. 기관 개발자와 고액자산가 고객을 위해 특별히 설계된 맞춤형 OTC 대량매매, 가상자산 관리, 원스톱 Web3 상품 구축 솔루션 서비스를 제공합니다.

회사 웹사이트: www.sinohope.com

투자자상담 : [email protected]

미디어 문의: [email protected]

댓글

모든 댓글

Recommended for you