배경기술과 펑크폴 플랫폼 도구
영지식증명 기반 블록체인(zk-Blockchain)
블록체인의 중요한 특성 중 하나는 그것이 완전히 공개적이라는 것입니다. 이는 블록체인의 투명성을 보장하지만, 동시에 개인 정보와 프라이버시에 대한 문제를 일으킬 수 있습니다. 이 문제를 해결하기 위해, 영지식증명 기반의 블록체인이 제안되었습니다. 이러한 블록체인은 거래 내용을 공개하지 않으면서 거래의 유효성을 증명할 수 있는 영지식 증명 기술을 사용합니다. 이로써, 이러한 블록체인은 트랜잭션의 투명성을 유지하면서도 사용자의 프라이버시와 투표 내용 등를 보호하게 됩니다.
펑크폴이 사용하는 Mina Protocol의 '영지식증명 기반 블록체인'은 펑크폴의 'zk-PUNK(nft)'와 '투표 시스템'을 구현하기에 적합한 특징을 가지고 있습니다.
- 보안성 및 개인정보 보호:Mina의 블록체인은 영지식증명 (zk-SNARKs) 기술을 사용합니다. 이 기술을 이용하면 사용자의 정보를 안전하게 보호하면서도 그 정보의 유효성을 검증할 수 있습니다. 이러한 특성은 zk-PUNK(nft)를 생성하고, 그 NFT를 이용하여 투표를 할 때 사용자의 신원을 보호하면서도 투표의 유효성을 검증하는 데 매우 중요합니다.
- 확장성: Mina Protocol의 블록체인은 모든 블록의 크기를 일정한 상수 크기인 22kb로 유지합니다. 이는 블록체인의 크기가 무한히 커지더라도 그 처리 요구량이 일정하게 유지되는 것을 의미합니다. 이 특성은 큰 규모의 zk-PUNK(nft)를 생성하고 관리하며 전세계적인 투표 시스템을 구현하는 데 필요한 확장성을 제공합니다..
- 투명성: 블록체인의 상태가 완전히 공개되어 있으며, 누구나 블록체인의 상태를 검증할 수 있습니다. 투표 시스템에서 투표 결과의 투명성과 신뢰성을 보장하는 데 중요합니다.
- 디센트럴라이제이션: 완전히 디센트럴라이즈된 블록체인이기 때문에, 중앙 집중화된 권력 없이 모든 참여자가 플랫폼에 공평하게 참여할 수 있습니다. 이는 전세계적인 투표 시스템을 구현하는 데 핵심적입니다.
영지식증명(zk-SNARKs)
영지식증명은 특정 정보를 제공하지 않고도 어떤 주장이 참임을 증명할 수 있는 암호학적 방법입니다. zk-SNARKs(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)은 이러한 증명을 간결하고 비대화적으로 수행할 수 있도록 하는 특별한 형태의 영지식증명입니다. zk-SNARKs는 트랜잭션을 검증하는 데 필요한 정보를 제공하면서도 해당 정보의 세부 내용은 공개하지 않는 방식으로 동작합니다. 이러한 특성 덕분에, zk-SNARKs는 블록체인과 같은 분산 시스템에서 데이터의 무결성을 보장하면서도 사용자의 프라이버시를 보호하는 데 매우 유용합니다. 펑크폴에서는 투표 및 여론조사와 같은 상황에서 개인정보를 보호하면서 동시에 트랜잭션의 유효성을 검증하는 데 사용됩니다.
NFT(Non-Fungible Token)
NFT는 분할 가능하지 않은 토큰을 의미하며, 각 NFT는 고유하고 변형 불가능한 특성을 가지고 있습니다. 펑크폴에서는 모든 USER의 정보와 투표 및 여론조사 시스템을 NFT로 발행합니다.
🍒 NFT 기반(ERC-721)의 투표나 여론조사 시스템은 블록체인 기술을 이용하여 개인의 투표나 여론을 고유한 디지털 자산으로 표현하는 방식입니다. 각각의 NFT는 고유하고 변형 불가능한 특성을 가지며, 이를 통해 투표의 고유성과 무결성을 보장하며, 이중투표를 방지할 수 있고, 동시에 투표 과정을 투명하게 만듭니다.
zk-NFT
zk-NFT는 블록체인 기반의 투표 시스템에서 개인정보 보호와 투표.여론조사 시스템에서 유권자 확인과 투표 내용 검증 및 완전성을 위하여 사용되는 특수한 영지식증명(zkp) 기반 NFT입니다. 개인의 '표'를 대신하는 zk-PUNK(nft)는 고유한 ID와 연결되어 있으며, 이 ID는 유권자의 신원을 증명하는 동시에 그들의 개인정보를 보호합니다. 이는 zk-SNARKs 기술을 활용하여 가능하며, 이를 통해 유권자는 자신의 정보를 노출하지 않으면서도 정당한 유권자임을 증명할 수 있고 투표에 참여 할 수 있습니다.
펑크폴의 투표 시스템은 zk-PUNK(nft)를 기본으로 하는 투표 시스템입니다. 이 시스템은 각 투표자가 zk-PUNK를 사용하여 투표할 수 있는 구조로 되어 있으며, 이는 투표의 투명성과 유효성을 보장합니다. 또한, 머클맵을 사용하여 투표 결과를 안전하게 저장하고 검증합니다.
이러한 기술들이 합쳐져서 zk-PUNK(nft) 및 펑크폴(PunkPoll) 투표 시스템은 전통적인 투표 시스템에서 발생할 수 있는 여러 문제점들을 해결하면서, 투표 과정의 투명성, 신뢰성, 그리고 개인정보 보호를 동시에 실현합니다. 이 시스템은 블록체인의 분산화, zk-SNARKs의 개인정보 보호, NFT의 유일성, 그리고 머클맵의 안전한 데이터 관리 등 다양한 기술들이 통합되어 구현된 차세대 투표 시스템 모델이 될 것입니다.
머클맵(Merkle Map) & 인덱서(Indexer)
머클맵은 머클 트리라는 데이터 구조를 활용한 것으로, 대량의 데이터를 안전하게 관리하고 검증할 수 있습니다. 머클맵은 데이터 조각들을 해시 함수를 통해 '잎' 노드로 변환하고, 이들을 다시 조합해 '부모' 노드를 만들고, 최종적으로 '뿌리' 노드를 만드는 방식으로 구성됩니다. 이 뿌리 노드는 전체 데이터의 요약을 나타내며, 각각의 데이터 변화는 뿌리 노드의 해시 값 변화를 통해 검증될 수 있습니다.
이러한 기술들이 결합되어 zk-PUNK(nft) 및 펑크폴(PunkPoll) 투표 시스템은 안전하고 투명하며 개인정보를 보호하는 독특한 투표 방식을 구현했습니다.
인덱서는 머클맵(Merkle map)을 사용하는 구조입니다. 머클맵은 머클 트리(Merkle tree)의 일종으로, 암호학적 해시 함수를 사용하여 구성되는 데이터 구조입니다. 머클 트리는 이진 트리 구조를 가지며, 모든 노드는 하위 노드의 해시 값으로 구성됩니다. 트리의 루트 노드는 결국 전체 데이터의 요약 정보를 가지게 됩니다.
이런 특성 덕분에 머클맵을 사용하는 인덱서는 데이터의 무결성을 검증하고, 블록체인 네트워크에서 일관된 상태를 유지하는 데 도움이 됩니다. 또한, 이 인덱서는 데이터를 효율적으로 저장하고 검색할 수 있도록 돕습니다.
펑크폴 투표 시스템에서, 인덱서는 투표자, 투표, 결과 등 투표에 관련된 모든 정보를 한 곳에서 관리합니다. 이를 통해 투표 과정이 투명하게 관리되며, 각 투표에 대한 정보의 무결성이 보장됩니다. 또한, 영지식 증명 기반의 Mina Protocol은 인덱서(Indexer)를 통해 블록체인 데이터를 효과적으로 관리하면서도 블록체인의 크기(22kb)를 작게 유지할 수 있습니다. 이는 효율성과 확장성 측면에서 매우 중요한 이점을 제공합니다.
🍒 zk-PUNK(NFT)-Based zk-Blockchain Punkpoll Voting System 구조
"Indexer"는 펑크폴 투표 시스템(on Mina Protocol)에서 사용되는 개념으로, 여러 정보를 한 곳에서 관리하도록 설계된 특별한 머클맵(Merkle map)을 가리킵니다. 이를 통해 유권자 정보, 참여 정보, 집계 정보 등의 다양한 정보를 한 곳에서 효율적으로 관리하고 처리할 수 있습니다. 재귀 증명(recursion proof)을 사용하면 이러한 과정을 훨씬 빠르고 효율적으로 수행할 수 있습니다.
IPFS
IPFS(InterPlanetary File System)는 분산형 파일 시스템으로,펑크폴 플랫폼에서는 전문가가 아닌 참여자들이 쉽게 블록체인에 저장된 데이터(익명화된 투표 내용, 익명화된 투표 참여 정보, 투표 결과 등)를 확인하는데 주요한 역할을 합니다.
- 데이터 보관과 공유: IPFS는 펑크폴 플랫폼의 중요 데이터를 분산된 방식으로 보관할 수 있게 해줍니다. 이러한 방식은 데이터의 내구성을 높이고, 단일 실패 지점(single point of failure)을 없애줍니다. 또한 데이터를 IPFS에 업로드하고, 해당 데이터의 고유한 해시값을 통해 데이터에 액세스하거나 공유할 수 있도록 합니다.
- NFT 메타테이터 저장: 펑크폴 플랫폼에서 생성되는 zk-PUNK(NFT)와 같은 NFT의 메타데이터를 IPFS에 저장할 수 있습니다. 이를 IPFS에 저장함으로써 NFT의 불변성과 영속성을 보장합니다.
- 투표 및 여론조사 결과 보관: 펑크폴에서 실시되는 투표나 여론조사의 결과를 안전하게 보관하고, 필요한 사람들이 언제든지 접근할 수 있게 해줍니다. 이는 투명성을 높이고, 결과의 불변성을 보장합니다.
특히, IPFS의 사용은 펑크폴 플랫폼의 투명성, 안정성, 효율성을 높이는 중요한 역할을 합니다.
🍒 IPFS(InterPlanetary File System)는 분산형 파일 시스템으로, 정보를 전세계 컴퓨터 네트워크에 분산해서 저장하고 공유하는 데 사용됩니다. 이는 효율적이고 안정적인 데이터 저장 및 전송을 가능하게 하며, 중앙집중식 서버에 의존하지 않고 데이터를 공유할 수 있습니다.
사용자 인증
사용자의 실명 인증은 투표 시스템에서 중추적인 요소
펑크폴은 사용자의 실명 인증을 통해 'zk-PUNK'을 발행하며, 이것은 투표 시 유권자 확인과 PUNK 토큰 채굴의 기반이 됩니다. 이러한 인증 과정은 각국가의 실명 인증 방법에 따라 다양하게 진행될 수 있습니다.
이에 따라, 정부 발급 신분증 확인, 전화번호 인증, 은행계좌, 신용카드 인증, 공인인증서 또는 전자 서명, Know Your Customer(KYC) 고객 신분증, 주소 증명서, 금융 거래 내역 등 다양한 방법으로 실명을 인증할 수 있습니다. 특히, 각 나라의 실명 인증 방법에 맞춰 실명 인증 절차를 밟을 수 있도록 파트너사들에게 '실명 인증 API'를 제공할 계획입니다.
한국의 경우, COVID-19 팬데믹 이후로 카카오톡 등 메신저를 통한 실명 인증 방법이 활성화되어 있습니다. 따라서 펑크폴은 한국에서 이와 같은 방식으로 사용자의 실명 인증을 진행합니다. 이러한 방식을 통해 투표의 무결성과 보안성을 확보하면서 사용자의 신원을 보호하는 데 중점을 두고 있습니다.
🍒 다양한 국가의 '실명인증' 방법으로 API 형태로 연결하는 방법을 택하려고 합니다. 한국의 경우 '공인인증서'라는 중앙화된 인증시스템과 연결해야 하며, 인도의 경우는 Aadhaar라는 실명 인증 시스템과 연결해서 실명 인증을, 미국의 경우는 중앙화된 인증시스템은 없지만 신용카드, 사회보장시스템등과 연결해야 하는 등 각 국가마다 환경이 다르기 때문에 API 방법을 택해서 필요에 따라 전문가 혹은 전문 회사에 의하여 연결하게 하는 것이 최선의 방법일 것입니다. 따라서 API (Application Programming Interface)는 다양한 시스템 간의 통신을 용이하게 해주는 도구로, 각 국가의 '데이터 보호 및 개인 정보 보호 법률을' 준수를 전제로 각 나라의 실명 인증 시스템과 펑크폴 플랫폼 간의 인터페이스 역할을 하게 됩니다.
투표 및 여론조사 빌더
펑크폴 빌더는 사용자 친화적인 인터페이스를 통해 세계 어디서나 누구나 쉽게 '투표 및 여론조사'를 만들 수 있습니다. 이는 단순한 투표부터 전문적인 여론조사까지 만들 수 있도록 다양한 도구를 제공합니다
- 투표와 여론조사 템플릿: 사용자가 투표 및 여론조사를 쉽게 만들 수 있도록 단순하면서도 선명한 템플릿을 제공합니다.
- 질문 생성: 여론조사 질문은 전문적인 지식을 바탕으로 설문지를 만들어야 목적에 맞는 합리적인 결과를 얻을 수 있습니다. 펑크폴 설문 생성 시스템은 GPT-4로 질문의 명확성과 간결성을 유지하면서도 다양하고 전문적인 질문을 생성할 수 있도록 시스템화 되어 주최자의 필요에 맞게 여론조사를 만들 수 있게 해줍니다.
- 표본 설정 방법: 무작위 추출과 편향성을 최소화하는 표본 설정 방법을 제공하여 공정한 여론조사를 가능하게 합니다.
관리자 페이지 및 블록 Explorer
- 관리자 페이지와 블록 Explorer는 투표 및 여론조사의 진행 과정을 관리하고, 블록체인 검증 도구를 제공하여 사용자가 투표 및 여론조사 주최자가 될 수 있게 해줍니다. 이를 통해 사용자는 자신이 생성한 투표 및 여론조사의 진행 상황을 실시간으로 다양한 방법으로 투명하게 모니터링 하고, 합리적인 결과를 만들 수 있도록 도와줍니다.
Open Source 정책
펑크폴의 오픈 소스 정책은 다음의 주요 원칙에 기반을 두고 있습니다.
- 투명성: 오픈 소스로서 플랫폼의 소스 코드가 공개되므로, 누구나 플랫폼의 동작 방식을 이해하고 확인할 수 있습니다. 이는 사용자들에게 펑크폴의 실명인증 및 투표(여론조사) 시스템의 신뢰성과 투명성을 제공하며, 잠재적인 버그나 취약점을 빠르게 발견하고 수정할 수 있을 것입니다.
- 협업과 혁신: 오픈 소스는 전세계 개발자들이 함께 참여하여 코드를 개선하고 새로운 기능을 개발할 수 있는 환경을 제공합니다. 펑크폴은 참여자가 증감함에 따라 오픈 소스 프로젝트로서 커뮤니티의 협력과 기여를 적극적으로 장려하여 다양한 아이디어와 참여자들의 역량을 결합하여 혁신적인 서비스를 만들어 갈 것입니다.
- 분산된 거버넌스: 펑크폴의 중요한 가치인 분산된 거버넌스를 실현하는 데 기여합니다. 코드와 의사결정 프로세스를 공개하면, 커뮤니티의 모든 구성원이 거버넌스에 참여할 수 있게 될 것입니다.
이 정책의 시행은 참여자가 100만명에 도달 했을 때 할 예정이면 이는 펑크폴 거버넌스를 통해서 라이선스 정책 등이 결정될 것입니다