paint-brush
합의 메커니즘 익히기: 암호화폐 분산 계약의 15가지 강력한 형태~에 의해@andreydidovskiy
669 판독값
669 판독값

합의 메커니즘 익히기: 암호화폐 분산 계약의 15가지 강력한 형태

~에 의해 Andrey Didovskiy13m2023/03/29
Read on Terminal Reader
Read this story w/o Javascript

너무 오래; 읽다

- 합의는 동의를 뜻하는 멋진 단어입니다. - 모든 합의 메커니즘이 동일한 기능을 수행하는 것은 아닙니다. - 합의는 시스템에 대한 신뢰를 형성하는 핵심 요소입니다.
featured image - 합의 메커니즘 익히기: 암호화폐 분산 계약의 15가지 강력한 형태
Andrey Didovskiy HackerNoon profile picture
0-item
1-item



암호화폐 산업은 기술 지식이 없는 사람들을 혼란스럽게 하기 위해 이국적인 용어를 사용하는 능력으로 악명 높습니다. 젠장, 때로는 가장 기술적인 사람들도 소스에 빠져들 수 있습니다.


암호화폐에서 발생하는 터무니없는 혁신 속도는 새로운 아이디어의 온상입니다. 이러한 새로운 아이디어에는 새롭지만 친숙한 형태의 전달이 필요합니다. 가장 많이 사용되는 의사소통 형태 중 하나는 "PROOF-OF- xyz "라는 용어를 공식화하는 것입니다.


모든 사람은 항상 무언가를 증명하려고 노력하고 있으며 이는 그럴 만한 이유가 있습니다. 결국 블록체인의 본질은 "신뢰하지 말고 확인하십시오"입니다.


그러나 어느 시점에서는 모든 것이 압도적이게 됩니다.


오늘 우리는 이것을 끝냈습니다!


좋아, 그렇지는 않지만 전체 산업이 구축되는 가장 중요한 기술적 측면 중 하나인 합의 메커니즘을 분석해 보겠습니다.


이는 다양한 기술 요소에 대한 이해가 필요한 매우 밀도 높은 주제입니다. 우리가 그것을 진행하면서 그것들을 모두 분석하고 더 깊이 들어가고 싶은 사람들을 위해 링크/리소스를 제공하려고 노력할 것입니다.


암호화폐는 블록체인이나 DAG(방향성 비순환 그래프)와 같은 DLT(분산 원장 기술)라는 클라우드 컴퓨팅 시스템을 통해 작동합니다.


이 기술은 분산된 환경에서 보안 통신을 구축하는 것이 어렵다는 것을 설명하는 비잔틴 장군 문제 로 알려진 계산 "패러다임"에 대한 솔루션으로 개발되었습니다.


기본적으로 3명의 장군이 도시를 둘러싸고 그것을 점령하려면 동시에 공격해야 합니다. 3개 미만이면 계획이 실패합니다. 메시지를 보내는 데 너무 많은 위험이 수반된다면 어떻게 이 장군들이 서로 협력할 수 있습니까? 메신저는 길을 잃거나, 지연되거나, 메시지를 잃어버리거나, 가짜 메시지를 위조하거나, 적에게 잡히거나, 그것에 대해 거짓말을 합니다. 실제로 관심 있는 사람이라면 누구에게나 꽤 자극적인 내용을 읽을 수 있습니다. 그러나 간결성을 위해 계속 진행해야 합니다.


블록체인/DLT는 일관되게 진실만을 표시하는 운영 보장을 제공하는 변경 불가능하고 투명하며 추가 전용 디지털 원장입니다. 이러한 속성은 블록체인 기술에 " 신뢰 기계 "라는 구어체 별명을 부여했습니다.


우리는 신뢰가 무엇인지 직관적으로 알고 있지만 이를 정의하는 것은 간단한 작업이 아닙니다.


신뢰는 미래의 결과가 신뢰할 수 있다는 확신입니다. 그것은 두려움, 불확실성, 의심 없이 무언가/누군가에 대한 믿음을 두는 능력입니다. 신뢰는 높은 수준의 자신감을 가지고 결정을 내릴 수 있는 능력이며, 상대방의 위험에 대해 걱정할 필요가 없습니다.


합의 메커니즘은 진실을 확립하고, 거짓을 방지하며, 결과적으로 암호화폐에 대한 사용자 신뢰를 얻기 위한 수단입니다.

합의 메커니즘이란 무엇입니까?

암호화폐와 관련하여 합의 메커니즘은 보안 보장 및 보상 규제라는 이중 기능을 제공합니다. 이는 모든 체인 활동에 대한 단일 버전의 기록에 동의하는 데 사용되는 시스템/프로토콜입니다. 공유된 단일 진정한 상태에 대한 공동 합의를 수립하기 위한 행동 강령입니다. 그들은 다음을 지시합니다: - 블록체인 블록에 제출된 거래를 누가 확인하고 확인하는지 - 확인 및 확인이 어떻게 이루어지는지 - 누군가 자신의 노력/공헌에 대해 누구와 어떻게 보상을 받는지


여기서 상황이 조금 까다로워집니다.

합의 메커니즘은 블록체인 보안의 냉철한 계산 논리만 처리할 필요는 없습니다. 이는 사실상 임의의 사회적, 기술적 또는 기계적 요소에 대한 신뢰 합의를 표현하는 데 사용될 수 있습니다.


합의 메커니즘 뒤에 있는 섬세한 아키텍처의 미묘한 차이는 매우 복잡합니다. 그러나 가장 높은 수준에서는 다음과 같은 네 가지 핵심 구성 디자인 요소로 요약할 수 있습니다.


  • 계산 복잡성

    원하는 결과에 도달하기 위해 필요한 리소스 및 단계의 양(빠르거나 짧을수록 좋음)


  • 결함 허용

    계산 네트워크 합의의 핵심은 네트워크 참가자가 탈락하거나 작업을 중지하는 경우(산발적으로 발생할 수 있음) 운영을 유지하는 능력입니다. 내결함성이 높을수록 시스템을 조작하기가 더 쉬워집니다. 허용 오차가 낮을수록 시스템의 탄력성은 높아집니다. 따라서 시스템의 내결함성이 51%라면 시스템은 49%가 손상되는 한 계속 작동할 수 있다는 의미입니다. 허용 오차가 67%이면 시스템이 손상된 노드의 33%만 처리할 수 있다는 의미입니다.


  • 회복력

    악의적인 활동(장기간 발생할 수 있음)이 발생하는 경우에도 계속해서 적절한 결과를 제공할 수 있는 능력


  • 명랑

    예상치 못한 사건이 발생한 후에도 네트워크가 계속해서 진실되게 작동하도록 보장합니다.


메커니즘의 장단점:

모든 것을 지배하는 단일한 보편적인 메커니즘은 없습니다. 합의 메커니즘은 적용에 따라 근본적으로 다릅니다.


블록체인 트릴레마는 단일 시스템에서 보안, 확장성, 분산화라는 세 가지 속성을 모두 갖는 것이 불가능하다는 것을 나타냅니다.



출처 : 연구 게이트



2/3 요소 사이에는 어느 정도의 혼합만 있을 수 있습니다. 블록체인에 어떤 조합이 존재하는지에 따라 각 메커니즘은 다음에 따라 달라집니다.


- 성능

- 일관성,

- 확장성,

- 효율성


오늘날 시장에는 수천 가지가 아니더라도 수백 가지의 다양한 메커니즘이 나와 있습니다. 운영 논리, 작업 증명 및 지분 증명을 기반으로 하는 두 가지 일반적인 유형의 합의 메커니즘이 있습니다. 다른 모든 변형은 이 두 가지를 모듈식으로 조정하거나 조합한 것일 뿐입니다.


이제 우리는 합의 메커니즘에 대해 전반적으로 이해했습니다. 그 중 일부를 검토해 보겠습니다.


부인 성명

- 모든 "무언가 증명"이 다른 것과 동일한 기능을 수행하는 것은 아닙니다.

- 모든 합의 메커니즘이 이름에 "Proof-Of"를 가질 필요는 없습니다.

- 비잔틴 장애 허용(Byzantine Fault Tolerance)은 모든 메커니즘의 요소입니다.


POW — 작업 증명

탈중앙화: 매우 높음

내결함성: 51%

사용 사례: 블록체인 기록 보호


설명: 전용 하드웨어가 필요한 극도의 수학적 복잡성을 지닌 리소스 집약적인 프로세스입니다. POW 합의는 엄청나게 복잡한 수학적 문제를 해결하기 위한 계산 자원의 기여를 통해 달성됩니다. 여기서 노드는 채굴자라고 불리며 새로운 네트워크 토큰의 방출을 통해 보상을 얻습니다. 블록 제안의 리더는 수학 문제를 해결할 수 있는 사람에 따라 선착순으로 선택됩니다.


POW 자체에는 "체인 무게" 또는 "체인 높이" 및 잘림이라는 하위 규칙이 내장되어 있습니다. POW가 실행될 때마다 채굴자는 다음 블록의 자체 버전을 구축합니다. 그러나 하나의 블록만 허용됩니다. 이는 네트워크가 승인되지 않은 모든 블록을 잘라내거나 폐기하고 항상 (수행된 작업량 측면에서) 가장 길고 무거운 체인 버전으로 재보정한다는 의미입니다. 이는 글로벌 정부의 조사에 저항할 수 있는 능력 때문에 가장 안전하고 분산된 합의 모델로 간주됩니다.


POW 예 - 비트코인(BTC) , 도지코인(DOGE) , 라이트코인(LTC) , Kaspa(KAS)



POS — 지분 증명

탈중앙화: 보통-높음

내결함성: 67%

사용 사례: 블록체인 기록 보호


설명: 합의를 위한 가장 인기 있는 모델입니다. 이 개념의 기본 개념은 간단합니다. 사용자는 참여하기 위해 토큰을 락업/담보화합니다. POS 모델에는 고정된 순환 공급이 있습니다. 즉, 블록 보상으로 새로운 토큰이 발행되지 않으며 보상은 거래 수수료 발생을 통해 획득됩니다. 또한 POW와 달리 POS 모델은 잘못된 행동에 대해 지분 삭감을 사용합니다. 악의적/파괴적인 행동이 발견되는 경우 위반 노드는 공정한 노드 간에 재분배하기 위해 네트워크에서 지분의 ~50%를 몰수하게 됩니다. 일반적으로 네트워크 노드의 인센티브가 기존 금융 시스템과 유사하다는 점에서 POW보다 덜 안전하고 중앙 집중화된 것으로 간주됩니다. 돈이 많은 플레이어는 네트워크 노드를 소유할 가능성이 더 높습니다.


POS에서 간과하지 말아야 할 또 다른 중요한 요소는 노드가 되기 위해서는 최소한의 지분 요구 사항이 있다는 것입니다. Ethereum의 예에서는 32 ETH입니다. 이 설계의 단점은 지분을 잃지 않기 위해 높은 수준의 진실한 활동이 예상된다는 것입니다. 잠재적인 접근성을 최소화하고 결과적으로 분산화 횟수를 최소화합니다. 또한 POS는 "부자가 점점 더 부자가 되는" 문제를 겪고 있는 것으로 알려져 있으며, 합의는 주로 위험에 처한 금액/가치에만 뿌리를 두고 있습니다. 그러므로 더 많이 가진 사람은 더 많이 벌고 다른 사람들에게 공정한 기회를 주지 않을 것입니다. 이전과는 별개로 이것이 POW보다 분산화에서 더 낮은 점수를 받는 이유는 정부에 대한 회복력 때문입니다. 이론적으로 정부는 이러한 네트워크를 추적하여 강제로 운영을 중단할 수 있습니다. POS는 대규모로 파괴하기가 더 쉽습니다. 그러나 POW에 비해 POS의 주요 이점 중 하나는 에너지 효율성입니다.


POS 예 — Ethereum(ETH) , Cardano(ADA) , Tezos(TEZ) , CELO(CELO) , Polkadot(DOT) , Avalanche(AVAX) , ThorChain(RUNE)



dPOS — 위임된 지분 증명

탈중앙화: 낮음

내결함성 : ** 67%

사용 사례: 블록체인 기록 보호


설명: 일반 POS를 가장 널리 적용한 버전입니다. 위임 지분 증명은 네트워크 운영 및 보상 참여에 대한 접근을 민주화하려는 시도입니다. 가장 큰 토큰 보유자만이 보안 프로세스에 참여할 수 있는 반면, 더 작은 규모의 토큰 보유자는 자신의 토큰을 운영 노드에 "위임"합니다. 기본적으로 그들은 토큰으로 투표하며 실제 노드에 토큰을 제공하지 않습니다. dPOS 합의 모델은 일반적으로 네트워크 작업을 처리하는 21~101개의 노드 범위를 갖습니다. 이러한 네트워크 운영자는 보유하고 있는 토큰의 양에 따라 선택됩니다. dPOS 변형의 가장 큰 이점은 노드 수를 제한한다는 것입니다. 이는 중앙 집중화로 이어지지만 처리 시간이 더 빨라진다는 추가적인 이점도 제공합니다.


dPOS 예 — Polygon(MATIC) , Tron(TRX) , EOS(EOS) , Lisk(LSK) , Ark(ARK) , Radix(XRD)



LPOS — 임대 지분 증명

분산화: 낮음 - 보통

내결함성: 67%

사용 사례: 블록체인 기록 보호


설명: 이것은 POS의 고급 변형입니다. 위임 지분 증명 모델과 매우 유사한 임대 지분 증명은 다음과 같은 기술적 차이를 제공합니다. dPOS에서 네트워크 노드는 보상을 획득한 다음 이를 위임자에게 분배합니다. 그러나 LPOS에서는 사용자가 실제로 자신의 토큰을 노드에 빌려주므로 위임자를 통하지 않고 해당 노드 가중치의 일부를 소유하고 직접 보상을 받게 됩니다. 여기서의 절충점은 물리적 노드를 실행하려면 매우 높은 수준의 기술 지식과 장비가 필요하다는 것입니다. 지금까지 이 구현은 하나의 프로젝트에서만 활용되었습니다.


LPOS 예 - 웨이브(WAVES)



HPOS — 하이브리드 지분 증명(활동 증명이라고도 함)

탈중앙화: 보통

내결함성: 51%

사용 사례: 블록체인 기록 보호


설명: 이름에서 알 수 있듯이 HPOS는 기본 합의 모델(POW + POS)을 모두 활용하는 창의적인 아키텍처입니다. 이 모델에서는 두 가지 계층의 프로세스가 발생합니다. 기본 수준에서 광부(POW와 마찬가지로)는 트랜잭션을 확인하고 블록으로 패키징합니다. 그런 다음 이러한 사전 조사된 블록은 두 번째 계층의 mempool에 제출되며, 여기서 POS 노드는 블록에 대해 추가 검사를 실행하고 유효성을 검사합니다.


HPOS 예 — DASH(DASH) , Decred(DCR)



PPOS — 순수 지분 증명

탈중앙화: 매우 높음* (그렇지 않음)

내결함성: 67%

사용 사례: 블록체인 기록 보호


설명: POS의 또 다른 변형입니다. 틀림없이 더 분산되어 있기 때문에 다른 변형과 비교할 때 디자인이 참신합니다. 이 변종에는 처벌 메커니즘이 없습니다. 따라서 기술적으로 나쁜 행위자는 나쁜 행동을 하고 고통을 겪지 않을 수 있습니다. 그러나 이 디자인은 진입 장벽이 매우 낮으며 노드로 참여하려면 단일 토큰 1개만 필요합니다. 이론적으로는 단일 행위자가 1,000개의 서로 다른 지갑에 1,000개의 토큰을 배포하여 조용한 시빌 공격을 할 수 있기 때문에 게임하기 쉽습니다.


PPOS 예시 — 알고랜드(ALGO)



POI — 중요성 증명

탈중앙화: 낮음-보통

내결함성: 67%

사용 사례: 블록체인 기록 보호


설명: POS의 또 다른 구현인 평판 기반 모델입니다. 유효한 노드로 승인되기 어렵고 쫓겨나기도 쉽습니다. 나는 이것이 접근 방식에 있어서 좀 더 창의적이라는 것을 인정해야 한다. 중요성 증명은 스테이크 이외의 두 가지 요소를 활용합니다. 여기에는 다음이 포함됩니다:


1. 스테이킹 노드의 네트워크 활동 *(단순히 스테이킹하는 것이 아니라 네트워크의 토큰 속도에 기여해야 함)

2. 노드 활동의 품질(스팸 거래는 도움이 되지 않음)


POI 예 — NEM(XEM)



POA - 권위 증명

분산화: 없음 – 매우 낮음'

내결함성: 51%

사용 사례: 블록체인 기록 보호


설명: 중앙화는 여기서 게임의 이름입니다. POA는 운영을 위해 귀중한 비재무적 기본요소인 아이덴티티를 활용합니다. 신원을 사용함으로써 모든 운영 네트워크 참가자는 합의 서클의 일부가 되기 위해 자신의 평판을 위험에 빠뜨립니다. 정체성이 있는 곳에는 중앙 집중화가 존재합니다. 그러나 제한된 수의 알려진 운영자가 있기 때문에 POA를 사용하는 네트워크는 처리량이 매우 높습니다. 이는 공공재 블록체인을 뒷받침하려는 메커니즘은 아니지만 프로젝트에서 이를 활용하는 것을 막지는 못했습니다.


POA 예 — VeChain (VET)



pBFT — 실용적인 비잔틴 내결함성

탈중앙화: 낮음

내결함성: 67%

사용 사례: 메커니즘의 견고성 개발


설명: 다른 합의 메커니즘을 구축하기 위한 핵심 구성 요소입니다. 일반적으로 허가된 네트워크에서 발견되는 pBFT는 노드 전체의 데이터 복제를 활용하여 작동합니다. 고유한 통신 제한으로 인해 가장 효율적인 모델은 아니지만 매우 탄력적입니다(분명히 중앙 집중식 시스템에서는 관용이 높으며 플레이어는 자신과 친구만 비난할 수 있습니다).


pBFT 예 — Zilliqa(ZIL) {POW + pBFT의 혼합 사용}



dBFT — 위임된 비잔틴 내결함성

탈중앙화: 낮음

내결함성: 51%

사용 사례: 메커니즘의 견고성 개발


설명: 위의 사촌(pBFT)의 경우와 마찬가지로 위임된 비잔틴 내결함성은 보다 강력한 블록체인 시스템을 생성하기 위한 구성 요소입니다. 이 메커니즘은 자체적으로 분산 통신을 지원하는 데 사용될 수 있지만 기본적으로 dBFT 시스템을 중앙 집중화하는 통신 제약으로 인해 제한됩니다.


dBFT 예 — NEO(NEO)



POC — 용량/약속 증명

탈중앙화: 낮음

내결함성: 51%

사용 사례: 블록체인 기록 보호


설명: POW 합의 메커니즘을 독특하게 변형한 것입니다. 지속적으로 문제를 해결하기 위해 처리 장치를 활용하는 대신; 용량 증명은 디스크 공간/메모리를 활용합니다. POC는 미래의 문제에 대한 잠재적인 솔루션을 계획하고 이를 채굴자의 빈 디스크 공간에 저장합니다. 채굴이 여전히 이루어지기 때문에 채굴이 전혀 이루어지지 않는 것과 혼동하지 마십시오. 이는 선제적으로 발생합니다(이로 인해 잠재적인 보안 위험이 발생할 수 있음). 노드가 탈락하는 경우 민감도가 높기 때문에 대규모에서는 그다지 효과적이지 않습니다. 이를 위해서는 전체 네트워크를 다시 플로팅해야 하며 더 많은 채굴 노드가 합류할수록 효율성이 떨어집니다. (추가 플로팅이 필요하여 엄청난 백로그가 생성됩니다. 디스크 공간을 할당하는 컴퓨터).


POC 예 — Storj(STORJ) , Chia(XCH) , Signum(SIGNA)



POH — 역사 증명

탈중앙화: 해당 없음

내결함성: 해당 없음

사용 사례: 타임스탬프 및 구성


설명: 이는 블록체인을 구축하기 위한 독립형 프로토콜이 아닙니다. POH는 블록체인의 블록을 처리하고 멤풀에 제출할 수 있는 VRF(검증 가능한 무작위 함수) 해싱 방법을 사용하여 트랜잭션에 타임스탬프를 찍는 데 사용되는 기술로 POS와 함께 사용됩니다. 이를 통해 주어진 시간에 개별 노드에서 무슨 일이 일어나고 있는지에 관계없이 네트워크가 최대 용량으로 계속 작동할 수 있습니다. 노드가 제 시간에 블록을 제출하지 않은 경우 지연된 블록은 가능한 한 빨리 올바른 위치로 구성되므로 다음 블록 생산을 방해하지 않습니다.


POS 예시 — 솔라나(SOL)



시인 — 경과 시간의 증명

탈중앙화: 아니요

내결함성: 51%

사용 사례: 블록체인 기록 보호


설명: 이는 특허로 보호되는 지적 재산(IP)이고 누구도 인텔과 전쟁을 벌이고 싶어하지 않기 때문에 네트워크 구축을 위한 극도로 중앙 집중화된 모델입니다. 그래도 디자인 자체는 훌륭하네요. POET는 내부 타이머 및 "휴식"이라는 자체 추가 개념과 함께 가장 길고 무거운 체인의 Nakamoto 합의 원칙을 혼합하여 POS 논리를 활용하는 또 다른 모델입니다. 채굴 노드는 무작위로 선택되며 동일한 노드를 연속적으로 선택할 수 없습니다. 노드가 블록을 커밋하면 무작위 타이머가 노드에 배치되고 노드는 "잠자기" 상태가 됩니다. 잠자기 상태에서는 계산 리소스를 사용하지 않습니다. 이는 이 모델을 다른 POS 변형보다 전기 소비 측면에서 더 친환경적으로 만듭니다.


POET 예 — HyperLedger 톱니



POA — 접근 증명

탈중앙화: 낮음

내결함성: 51%

사용 사례: 스토리지 및 데이터 보안


설명: POW의 강화된 버전인 액세스 증명(Proof-of-Access)은 들어오는 블록을 확인하기 위해 영리한 기술을 사용하는 Arweave 프로젝트에서 만든 알고리즘입니다. 채굴자들은 이전 블록에만 의존하는 대신 무작위로 선택된 이전 블록과 함께 "리콜 블록"이라는 것을 사용합니다. 리콜 블록은 모든 체인 데이터를 저장할 필요가 없는 체인 기록의 신뢰할 수 있는 지점으로 생각할 수 있습니다. 이를 통해 데이터 증명을 위한 경량 모델이 생성되어 저장 기능의 효율성이 향상되고 계산 리소스 낭비가 줄어들며 처리량이 증가합니다. 이 모델의 한 가지 잠재적인 단점은 기록 아카이브로 인해 오래된 노드를 선호한다는 것입니다. 최신 노드는 동일한 보관된 데이터에 액세스할 수 없으며 리콜 블록만 다운로드합니다. 이론적으로는 연령별로 계층 구조가 생성됩니다.


POA 예제 — Arweave (AR)



POREP — 복제 증명

탈중앙화: 해당 없음

내결함성: 51%

사용 사례: 스토리지 및 데이터 보안 + 클라우드 컴퓨팅


설명: 이 모델의 아름다움은 실제로 네트워크/운영 노드의 디스크 공간에서 저장 공간의 능력을 우선시하는 POW의 구축 통합을 통해 데이터 저장(공간 증명)의 이전 모델을 확장한 것입니다. . 네트워크에 추가된 데이터가 네트워크 마이너 전체에 복제된다는 점에서 pBFT 합의 메커니즘의 요소가 있습니다. POREP의 독창성은 "세대 공격"으로 알려진 분산형 클라우드 컴퓨팅 업계에서 가장 사악한 공격 벡터에 맞서 싸우는 능력으로 정의됩니다. 이를 통해 채굴 노드는 문서를 업로드하기 위해 비용을 지불한 다음 해당 문서를 무한히 요청하고 스토리지 제공에 대한 수수료를 징수합니다. 그것의.


POREP 예제 — 파일코인(FIL)




이는 실제로 얼마나 놀라운 작업이 있는지 보여주는 작은 샘플일 뿐입니다.


합의 메커니즘은 분산 시스템 신뢰의 핵심입니다. 메커니즘은 시스템이 작동하는 규칙/법률을 지정합니다. 시스템 설계의 모든 선택은 철저한 조사를 거쳐 이루어져야 합니다. 시스템에 부적절한 메커니즘을 적용하면 사용자와 네트워크 운영자 사이에 인지 부조화가 발생할 수 있습니다. 결과적으로 신뢰를 잃게 됩니다.


어떤 메커니즘이 다른 메커니즘보다 더 나은지를 정량화하는 것은 불가능합니다. 모든 것은 상황에 따라 다르며 모든 것이 주관적입니다.


우리 앞에는 무한한 기회가 있습니다.

읽어 주셔서 감사합니다


당신의 여행은 믿을 수 없을 것입니다

&

포트폴리오가 풍부하세요 🥂



여기에도 게시되었습니다 .