# NPICKBLOCK Main net

> 엔픽블록 메인넷을 기반으로 다양한 소셜미디어 응용프로그램을 관리 및 실행할 수 있는 엔픽블록 플랫폼이 존재합니다. 다양한 소셜미디어 응용프로그램은 엔픽블록 플랫폼을 이용하여 엔픽블록 메인넷을 활용할 수 있습니다.
>
> &#x20;이는 엔픽블록 메인넷에서 제공하는 다양한 블록체인 기반의 기능들을 특정 소셜 미디어 응용프로그램에서 사용할 수 있다는 의미입니다.
>
> &#x20;엔픽블록 블록체인 생태계에서는 엔픽블록 플랫폼을 활용하여 서비스되는 다양한 소셜 미디어 응용 프로그램의 기본적인 기능들의 동작이 스마트 컨트랙트기반으로 구성되어 있습니다. 예를 들어, 사용자 가입, 댓글이나 콘텐츠 공유와 같은 사용자 액션 등의 기능 프로세스가 스마트컨트랙트에 작성되어 있습니다. 따라서 스마트컨트랙트의 내용이 변경되지 않는 한 사용자 가입 등 기능에 대한 프로세스 전체 내용이, 즉 스마트컨트랙트에 작성된 내용들이 트랜잭션으로 간주되어 블록 내에 저장되고 엔픽블록 블록체인의 Node 들에게 공유됩니다.

<figure><img src="https://2413182852-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fsudy7bWHzLqfW5RMvABn%2Fuploads%2FDA3GXZwFYNdsrPWEeDde%2Fimage.png?alt=media&#x26;token=2f818ba1-0321-4403-a587-5a45fbd7e8fa" alt=""><figcaption><p><strong>[Figure 9. NPICKBLOCK Platform]</strong></p></figcaption></figure>

회원가입 혹은 댓글입력과 같은 사용자 액션으로부터 발생된 트랜잭션을 블록체인 관리 서버가 받아 블록체인 네트워크로 처리요청을 진행합니다. 그리고 블록체인 네트워크 내에 구성된Node와 블록을 통해 트랜잭션이 처리됩니다. 회원가입 혹은 댓글입력과 같은 사용자 액션, 즉 소셜미디어 응용프로그램에서 지원하는 기능들은 스마트컨트랙트에 미리 작성되어 있습니다. 그리고 스마트컨트랙트내 코드는 라인별로 실행되며 트랜잭션을 발생시킵니다.

&#x20;이는 스마트 컨트랙트가 실행될 때마다 그 실행내용 및 결과가 블록에 저장됨을 의미하며 블록체인의 비가역성 특징에 따라 저장된 결과들은 조작되지 않습니다. 엔픽블록 메인넷은 자체적으로 설계한 Node 와 블록을 구성하고 있으며 다양한 학술적 논거를 지닌 기법들을 근간으로 설계한 합의알고리즘을 제공합니다.

&#x20;엔픽블록 메인넷은 참여 Node 들과 트랜잭션 내용을 저장할 수 있는 블록들로 구성됩니다. 그리고 참여 Node 들은 Gossip protocol을 응용한 구조로 블록정보를 공유하며 이렇게 참여 Node 2/3 이상에게 공유된 블록을 최종 합의 블록으로 선정합니다. 그리고 합의 블록에 트랜잭션 내용을 저장합니다. 참여 Node 들은 소셜 미디어 서비스의 특성을 고려한 형태로 선정되며 Gossip protocol을 응용한 방식으로 블록을 공유하기 때문에 참여 Node 들 사이에 수많은 간선이 발생합니다.

&#x20;따라서 참여 Node 들이 블록을 공유하는 구조를 그래프 G(V, E)로 정의할 수 있습니다. 여기서 G는 엔픽블록 블록체인 메인넷의 참여 Node가 블록을 공유하며 발생한 그래프를 의미하며 V는 특정 시점에 블록을 공유하고 있는 참여 Node 들을, 그리고 E는 블록 공유 정보 전달 간선을 의미합니다.

<figure><img src="https://2413182852-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fsudy7bWHzLqfW5RMvABn%2Fuploads%2F4bpHzSxfUmPGG9HxZgVE%2Fimage.png?alt=media&#x26;token=b79af2d6-ac41-46d0-9f30-a216bff5aea5" alt=""><figcaption><p><br><strong>[Figure 10. NPICKBLOCK Node Structure]</strong></p></figcaption></figure>

엔픽블록 메인넷의 Node는 총 6개의 속성을 포함하고 있습니다. 첫번째는 Node Signature 입니다. 각 Node 가 갖는 유일한 값으로 엔픽블록 메인넷에 참여하는 모든 Node는 각각 고유한 Node Signature를 갖습니다.

두 번째는 Gaussian Score입니다. 엔픽블록 메인넷의 참여 Node는 소셜미디어 서비스를 이용하는 사용자 혹은 참여를 원하는 참여자로 구성됩니다. 소셜미디어 서비스 사용 중 특정 서비스에서 큰 영향력을 갖는 사용자들이 이에 속합니다. 영향력을 갖더라도 참여를 원하지 않는 사용자는 제외될 수 있으며 영향력 있는 사용자가 존재하지 않는 경우에는 서비스에서 분산된 형태의 Node 임의로 구성할 수 있습니다. 그리고 서비스 사용량이 증가함에 따라 영향력 있는 사용자가 발생하면 임의의 Node를 대체합니다. Gaussian Score는 이 때 사용자 영향력을 판단하는 수치입니다. 소셜미디어 서비스에서 사용자의 영향력을 나타낼 수 있는 수치, 예를 들어 팔로워의 수, 픽의 수 등을 특징 값으로 사용하여 전체 사용자들에 대한 Gaussian distribution을 도출하고 x 축의 값을 Gaussian Score 로 결정합니다. 즉 분포의 상위 표준편차에 위치한 사용자들을 상위 사용자들로 판단하고 Node 후보군으로 분류합니다. 이 후보군 중 선택된 Node 들의 Gaussian Score를 Node 구조에 포함합니다. 또한 타 Node 들의 Gaussian Score 도 함께 공유됩니다.

&#x20;

세 번째는 Current Level입니다. Current Level 은 현재 합의를 위한 단계를 의미합니다. 블록체인에서 합의는 Byzantine Fault Tolerance를 보장해야 합니다. 이는 Node가 n 개 존재할 때 2n/3 이상이 정보를 공유함을 의미합니다. 즉 어떤 블록이 생성되었을 때 해당 블록의 존재를 Node의 2n/3 이상이 공유했음을 의미합니다. Level의 의미는 특정 블록이 생성되어 참여 Node들에게 공유되고 있는 순간입니다. 예를 들어, Current Level 이 1 인 경우 최초에 블록이 생성되고 이 블록정보를 참여 Node 들이 공유하고 있음을 의미합니다. 그리고 Current Level 1에서 2n/3 이상 공유한 경우 Current Level 은 2 로 변경됩니다. 모든 참여 Node는 현재 레벨을 공유하고 있습니다.

&#x20;

네 번째는 Current Chain Score입니다. Current Chain Score는 Current Level에서 공유하고 있는 Node의 비율을 의미합니다. 엔픽블록 메인넷은 이 때 단순히 Node n 개에 대해 2n/3의 수치를 계산하여 Node의 비율을 결정하지 않습니다. 그 이유는 Node 마다 Gaussian Score 가 존재하기 때문입니다. Gaussian Score는 Node 마다 다른 수치를 갖게 되며 소셜미디어 서비스에서 갖는 영향력을 의미합니다.

&#x20;따라서 영향력이 좀 더 큰, 즉 Gaussian Score 가 높은 사용자가 블록 정보를 공유할 경우, 하나의 일반 Node 가 갖는 영향력보다 크다고 판단할 수 있습니다. 영향력 계산을 위해 Gaussian distribution을 normalized 합니다. 이를 위해 식 (1)을 사용합니다.

<figure><img src="https://2413182852-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fsudy7bWHzLqfW5RMvABn%2Fuploads%2Fe1ZRu9FAwkI8eqxS18EB%2Fimage.png?alt=media&#x26;token=673e50ec-756d-48e3-8bed-ce64a857630a" alt=""><figcaption></figcaption></figure>

식(1)에서 𝑁𝑎는 a 번째 참여 Node의 영향력 수치를 의미합니다. 그리고 k는 참여 Node의 수를, 𝑥𝑎는 a 번째 참여 Node 가 갖는 Gaussian Score를 의미합니다. 𝑥𝑖는 i 번째 Node의 Gaussian Score이며 𝜇와 𝜎는 각각 서비스 내 평균 영향력과 표준편차를 의미합니다. 식(1)을 통해 Node 마다 Gaussian Score 기반의 영향력 수치를 도출할 수 있습니다. 그리고 Current Chain Score는 Current Level에서 현재 발생한 블록을 공유하고 있는 Node 들의 영향력 수치의 합입니다. 따라서 Current Chain Score 가 2k/3 이상인 경우 Current Level에서 Byzantine Fault Tolerance 가 보장된다고 확인하고 Current Level 이 종료됩니다.

&#x20;

다섯 번째는 엔픽블록의 블록체인으로서 Current Level 1 부터 현재의 Current Level까지 참여 Node 들이 공유하고 있는 G(V, E)의 구조를 의미합니다.

&#x20;

마지막으로 여섯 번째는 Main Chain으로 합의를 이룬 블록들의 연결정보를 의미하는 데이터입니다. 엔픽블록 메인넷은 매 level 마다 블록을 생성하고 합의 과정을 통해 Byzantine Fault Tolerance를 보장합니다. 합의가 완료된 블록들은 Main Chain에 보관되며 블록의 hash 정보를 통해 연결됩니다. 그리고 이러한 블록연결을 Main Chain으로서 특정 자료구조 형태를 유지하며 모든 참여 Node 들이 공유합니다.
