KR102628759B1 - 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법 - Google Patents

블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법 Download PDF

Info

Publication number
KR102628759B1
KR102628759B1 KR1020220072023A KR20220072023A KR102628759B1 KR 102628759 B1 KR102628759 B1 KR 102628759B1 KR 1020220072023 A KR1020220072023 A KR 1020220072023A KR 20220072023 A KR20220072023 A KR 20220072023A KR 102628759 B1 KR102628759 B1 KR 102628759B1
Authority
KR
South Korea
Prior art keywords
shard
working
account
moving
information
Prior art date
Application number
KR1020220072023A
Other languages
English (en)
Other versions
KR20230171628A (ko
Inventor
주영현
이길호
Original Assignee
주식회사 블룸테크놀로지
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 블룸테크놀로지 filed Critical 주식회사 블룸테크놀로지
Priority to KR1020220072023A priority Critical patent/KR102628759B1/ko
Priority to PCT/KR2023/006752 priority patent/WO2023243881A1/ko
Publication of KR20230171628A publication Critical patent/KR20230171628A/ko
Application granted granted Critical
Publication of KR102628759B1 publication Critical patent/KR102628759B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 다이나믹 샤딩 기술을 적용한 블록체인 네트워크에서 임의의 어카운트의 소속 샤드(워킹샤드)를 다른 샤드(워킹샤드)로 변경하는 시스템 및 방법에 관한 것이다.
본 발명은, 블록체인 네트워크를 구성하는 노드는 제1무빙 어카운트의 출발지 워킹샤드 소속 노드이며, 제1무빙 어카운트의 제1홈샤드 소속 노드 및 제1무빙 어카운트의 제1도착지 워킹샤드 소속 노드와 통신하여 제1무빙 어카운트의 워킹샤드 변경 절차를 수행한다. 노드는, 제1무빙 어카운트의 워킹샤드가 변경되는 지를 감지하는 워킹샤드 변경 감지부 및 제1도착지 워킹샤드 소속 노드에 제1무빙 어카운트의 워킹샤드 변경 요청을 하는 워킹샤드 변경 요청부를 포함한다.

Description

블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법 {SYSTEM AND METHOD FOR CHANGING A WORKING-SHARD OF AN ACCOUNT IN BLOCKCHAIN NETWORK}
본 발명은 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법에 관한 것으로서, 보다 구체적으로 다이나믹 샤딩 기술을 적용한 블록체인 네트워크에서 임의의 어카운트의 소속 샤드(워킹샤드)를 다른 샤드(워킹샤드)로 변경하는 시스템 및 방법에 관한 것이다.
블록체인은 기존의 중앙화된 기관이 거래 내용을 단일 위치(single point)에 저장하는 중앙화된 방식을 탈피하고자 등장한 탈중앙화 분산 트랜잭션 관리 기술이다. 블록체인은 P2P(Peer-to-Peer) 통신망에서, 모든 참여자가 합의 알고리즘을 통해서 정해진 공유 원장을 소유함으로써, 기록의 위조 및 변조를 불가능하게 만드는 분산 원장 시스템(Distributed Ledger System)이다. 즉, 분산 원장 시스템은 중앙관리자의 제어없이 각 노드가 분산 환경에서 원장이라는 데이터베이스를 동기화하여 유지하는 시스템이다.
블록체인에서 모든 노드가 동기화된 원장을 유지하기 위해서는 네트워크에서 발생하는 모든 트랜잭션과 블록이 저장되어야 한다. 이를 위해 종래에는 블록체인 네트워크의 모든 노드에 플러딩(Flooding) 방식으로 모든 메시지를 전파하였다. 그러나 이는 모든 노드가 모든 메시지를 수신하고 저장해야 한다는 문제, 즉 확장성의 문제를 수반한다.
확장성 문제를 해결하기 위해서, 최근 블록체인 분야에서는 다수의 노드를 다수의 샤드(shard group)에 분배하고, 분배된 각 샤드에 다수의 트랜잭션을 분할하여 병렬로 처리하도록 하는 샤딩(sharding) 방법이 제시되었다. 샤딩은 블록체인 네트워크에서 발생하는 트랜잭션과 블록을 작은 그룹인 샤드 단위로 나누어, 각 샤드에 속한 노드들은 다른 샤드의 트랜잭션과 블록을 처리할 필요없이 자신이 속한 샤드의 트랜잭션과 블록만을 처리하여 전체 네트워크의 트랜잭션 처리량과 분산 원장의 크기를 줄이는 방법이다.
그러나, 샤딩 기법을 도입함에 따라 트랜잭션을 검증하기 위한 노드의 개수는 샤드의 수에 대응하여 줄어들게 되기 때문에, 이로 인해 악의적 노드들의 합의 공격에 의해 데이터가 조작될 위험성이 높아지게 되는 문제가 있다. 합의 공격은 블록체인에 대한 공격 유형 중 가장 위험한 공격이다. 블록체인에서 다수의 노드를 포함하는 검증 커미티(committee)는 기본적으로 커미티 다수의 합의를 통해 블록을 검증하며, 합의에 도달하지 못한 블록은 선택에서 제외되어 체인에서 분리된다.
일반적인 블록체인에서는 수만 내지 수십만의 노드가 검증 커미티에 포함되므로 악의적 노드의 수가 과반수 이상을 차지하는 것은 현실적으로 불가능하다. 그러나 샤딩 기법이 도입되면, 샤드마다 트랜잭션의 빈도, 노드의 수, 밸리데이터의 비율 등에서 차이가 나기 때문에, 시간이 지나면서 샤드간 불균형이 일어나서 일부 샤드의 안정성이 취약해지는 문제가 발생할 수 있다. 즉, 일부 샤드에서 악의적 노드의 수가 과반수 이상을 차지하게 되는 경우가 발생될 수 있으며, 이렇게 악의적 노드의 수가 과반수 이상을 차지하게 되는 경우, 거짓 블록이 체인에 연결될 위험이 있다. 샤딩 기법을 적용하면, 공격자가 포섭해야 하는 노드의 개수가 줄어들어, 보다 용이하게 과반수 이상의 노드를 포섭할 수 있으며, 이로 인해 거짓 블록이 체인에 연결될 위험이 높아진다.
이러한 문제를 해결하기 위해, 한번 샤드가 정해진 다음에도 샤드의 구성원(노드)을 재배치하여 샤드간 균형을 맞출 필요가 있다. 또한, 블록체인 네트워크의 전체 트래픽이 높아질 경우, 샤드의 개수를 늘릴 필요가 있다. 본 발명의 출원인은 이와 같이 샤드의 구성원을 리밸런싱하고 샤드의 개수를 늘리는 기술을 다이나믹 샤딩 기술로 제안한다.
한편, 샤딩 기술을 적용한 블록체인 네트워크에서, 어카운트는 자기 샤드에 속한 어카운트에 대한 정보만을 공유하고, 다른 샤드에 속한 어카운트 정보는 가지고 있지 않기 때문에, 서로 다른 샤드에 속한 어카운트간 인터샤드 트랜잭션 통신시, 상대방 어카운트가 속한 샤드 정보를 알아야 한다.
따라서, 다이나믹 샤딩 기술을 적용하여 어카운트가 속한 샤드가 변경되더라도 어카운트의 샤드 정보는 계속하여 추적되고 공유될 수 있어야 하고, 인터샤드 트랜잭션시에 해당 어카운트의 소속 샤드 정보를 검색할 수 있어야 한다.
본 발명의 목적은 상기와 같은 필요성을 충족시키기 위한 것으로서, 다이나믹 샤딩 기술이 적용된 블록체인 네트워크에서 임의의 어카운트의 소속 샤드(워킹샤드)가 변경될 때 이를 추적할 수 있는 어카운트의 워킹샤드 변경 시스템 및 방법을 제공하기 위한 것이다.
본 발명은 장치(시스템), 방법, 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램 또는 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 매체를 포함한 다양한 방식으로 구현될 수 있다.
본 발명의 일 실시예에 따른, 블록체인 네트워크를 구성하는 노드에서 어카운트의 워킹샤드 변경 시스템이 포함된다. 노드는 제1무빙 어카운트의 출발지 워킹샤드 소속 노드이며, 제1무빙 어카운트의 제1홈샤드 소속 노드 및 제1무빙 어카운트의 제1도착지 워킹샤드 소속 노드와 통신하여 제1무빙 어카운트의 워킹샤드 변경 절차를 수행한다. 노드는, 제1무빙 어카운트의 워킹샤드가 변경되는 지를 감지하는 워킹샤드 변경 감지부 및 제1도착지 워킹샤드 소속 노드에 제1무빙 어카운트의 워킹샤드 변경 요청을 하는 워킹샤드 변경 요청부를 포함한다.
보다 바람직하게는, 노드는, 제1무빙 어카운트의 홈샤드 정보를 획득하는 홈샤드 정보 획득부 및 제1무빙 어카운트의 홈샤드 정보를 기반으로 제1홈샤드 소속 노드로부터 제1무빙 어카운트의 현재 워킹샤드 정보를 획득하는 현재 워킹샤드 정보 획득부를 더 포함하고, 워킹샤드 변경 요청부는 제1무빙 어카운트의 현재 워킹샤드 정보가 제1무빙 어카운트의 도착지 워킹샤드 정보와 일치하지 않으면 제1도착지 워킹샤드 소속 노드에 제1무빙 어카운트의 워킹샤드 변경 요청을 한다.
보다 바람직하게는, 노드는, 제1무빙 어카운트의 현재 워킹샤드 정보가 제1무빙 어카운트의 도착지 워킹샤드 정보와 일치하면 제1무빙 어카운트의 트랜잭션 체인을 비활성화 처리하고 제1무빙 어카운트의 워킹샤드 변경 절차를 종료하는 어카운트 비활성화 처리부를 더 포함한다.
보다 바람직하게는, 홈샤드 정보 획득부는, 제1무빙 어카운트의 주소 정보와 블록체인 네트워크의 총 샤드 개수 정보를 파라미터로 하는 함수를 이용하여 제1무빙 어카운트의 홈샤드 정보를 획득한다.
보다 바람직하게는, 노드는 제1홈샤드 소속 노드 및 제1도착지 워킹샤드 소속 노드와 피투피 통신한다.
보다 바람직하게는, 노드는 제2무빙 어카운트의 홈샤드 소속 노드이며, 제2무빙 어카운트의 제2출발지 워킹샤드 소속 노드 및 제2무빙 어카운트의 제2도착지 워킹샤드 소속 노드와 통신하여 제2무빙 어카운트의 워킹샤드 변경 절차를 수행한다.
노드는, 제2출발지 워킹샤드 소속 노드 및 제2도착지 워킹샤드 소속 노드 중 적어도 하나의 정보 요청 노드로부터 제2무빙 어카운트의 현재 워킹샤드 정보 요청이 수신되는 워킹샤드 정보 요청 수신부, 제2무빙 어카운트의 현재 워킹샤드 정보를 어카운트 디렉토리에서 검색하는 어카운트 디렉토리 검색부, 어카운트 디렉토리 검색부에서 검색된 제2무빙 어카운트의 현재 워킹샤드 정보를 정보 요청 노드에게 발송하는 검색 결과 발송부, 제2도착지 워킹샤드 소속 노드로부터 워킹샤드 정보 변경 요청이 수신되는 워킹샤드 정보 변경 요청 수신부 및 어카운트 디렉토리의 제2무빙 어카운트의 현재 워킹샤드 정보를 제2무빙 어카운트의 도착지 워킹샤드 정보로 변경하는 어카운트 디렉토리 업데이트부를 더 포함한다.
보다 바람직하게는, 노드는 제2출발지 워킹샤드 소속 노드 및 제2도착지 워킹샤드 소속 노드와 피투피 통신한다.
보다 바람직하게는, 노드는 제3무빙 어카운트의 도착지 워킹샤드 소속 노드이며, 제3무빙 어카운트의 제3출발지 워킹샤드 소속 노드 및 제3무빙 어카운트의 제3홈샤드 소속 노드와 통신하여 제3무빙 어카운트의 워킹샤드 변경 절차를 수행한다. 노드는, 제3출발지 워킹샤드 소속 노드로부터 제3무빙 어카운트의 워킹샤드 변경 요청을 수신하는 워킹샤드 변경 요청 수신부, 제3무빙 어카운트의 트랜잭션 체인을 기록하는 어카운트 기록부, 제3무빙 어카운트의 홈샤드 정보를 획득하는 홈샤드 정보 획득부, 제3무빙 어카운트의 홈샤드 정보를 기반으로 제3홈샤드 소속 노드에 워킹샤드 정보 변경 요청을 발송하는 워킹샤드 정보 변경 요청 발송부를 더 포함한다.
보다 바람직하게는, 제3무빙 어카운트의 홈샤드 정보를 기반으로 제3홈샤드 소속 노드로부터 제3무빙 어카운트의 현재 워킹샤드 정보를 획득하는 현재 워킹샤드 정보 획득부를 더 포함하고, 워킹샤드 정보 변경 요청 발송부는 제3무빙 어카운트의 현재 워킹샤드 정보와 제3무빙 어카운트의 도착지 워킹샤드 정보가 일치하지 않으면 제3홈샤드 소속 노드에 워킹샤드 정보 변경 요청을 발송한다.
보다 바람직하게는, 노드는, 제3무빙 어카운트의 현재 워킹샤드 정보와 제3무빙 어카운트의 도착지 워킹샤드 정보가 일치하면 제3무빙 어카운트의 워킹샤드 변경 절차를 종료한다.
보다 바람직하게는, 홈샤드 정보 획득부는, 제3무빙 어카운트의 주소 정보와 블록체인 네트워크의 총 샤드 개수 정보를 파라미터로 하는 함수를 이용하여 제3무빙 어카운트의 홈샤드 정보를 획득한다.
보다 바람직하게는, 노드는 제3출발지 워킹샤드 소속 노드 및 제3홈샤드 소속 노드와 피투피 통신한다.
또한, 블록체인 네트워크를 구성하는 노드에서, 노드는 제1무빙 어카운트의 출발지 워킹샤드 소속 노드이며, 제1무빙 어카운트의 제1홈샤드 소속 노드 및 제1무빙 어카운트의 제1도착지 워킹샤드 소속 노드와 통신하여 제1무빙 어카운트의 워킹샤드 변경 절차를 수행하며, 적어도 하나의 프로세서에 의해 구현되는 본 발명에 따른 어카운트의 워킹샤드 변경 방법은, 제1무빙 어카운트의 워킹샤드가 변경되는 지를 감지하는 단계 및 제1도착지 워킹샤드 소속 노드에 제1무빙 어카운트의 워킹샤드 변경 요청을 하는 단계를 포함한다.
보다 바람직하게는, 제1무빙 어카운트의 홈샤드 정보를 획득하는 단계, 제1무빙 어카운트의 홈샤드 정보를 기반으로 제1홈샤드 소속 노드로부터 제1무빙 어카운트의 현재 워킹샤드 정보를 획득하는 단계 및 제1무빙 어카운트의 현재 워킹샤드 정보가 제1무빙 어카운트의 도착지 워킹샤드 정보와 일치하지 않으면 제1도착지 워킹샤드 소속 노드에 제1무빙 어카운트의 워킹샤드 변경 요청을 하는 단계를 더 포함한다.
보다 바람직하게는, 제1무빙 어카운트의 현재 워킹샤드 정보가 제1무빙 어카운트의 도착지 워킹샤드 정보와 일치하면 제1무빙 어카운트의 트랜잭션 체인을 비활성화 처리하고 제1무빙 어카운트의 워킹샤드 변경 절차를 종료하는 단계를 더 포함한다.
보다 바람직하게는, 제1무빙 어카운트의 홈샤드 정보를 획득하는 단계는, 제1무빙 어카운트의 주소 정보와 블록체인 네트워크의 총 샤드 개수 정보를 파라미터로 하는 함수를 이용하여 제1무빙 어카운트의 홈샤드 정보를 획득하는 단계를 더 포함한다.
보다 바람직하게는, 노드는 제1홈샤드 소속 노드 및 제1도착지 워킹샤드 소속 노드와 피투피 통신한다.
보다 바람직하게는, 노드는 제2무빙 어카운트의 홈샤드 소속 노드이며, 제2무빙 어카운트의 제2출발지 워킹샤드 소속 노드 및 제2무빙 어카운트의 제2도착지 워킹샤드 소속 노드와 통신하여 제2무빙 어카운트의 워킹샤드 변경 절차를 수행한다. 어카운트의 워킹샤드 변경 방법은, 제2출발지 워킹샤드 소속 노드 및 제2도착지 워킹샤드 소속 노드 중 적어도 하나의 정보 요청 노드로부터 제2무빙 어카운트의 현재 워킹샤드 정보 요청이 수신되는 단계, 제2무빙 어카운트의 현재 워킹샤드 정보를 어카운트 디렉토리에서 검색하는 단계, 검색된 제2무빙 어카운트의 현재 워킹샤드 정보를 정보 요청 노드에게 발송하는 단계, 제2도착지 워킹샤드 소속 노드로부터 워킹샤드 정보 변경 요청이 수신되는 단계 및 어카운트 디렉토리의 제2무빙 어카운트의 현재 워킹샤드 정보를 제2무빙 어카운트의 도착지 워킹샤드 정보로 변경하는 단계를 더 포함한다.
보다 바람직하게는, 노드는 제2출발지 워킹샤드 소속 노드 및 제2도착지 워킹샤드 소속 노드와 피투피 통신한다.
보다 바람직하게는, 노드는 제3무빙 어카운트의 도착지 워킹샤드 소속 노드이며, 제3무빙 어카운트의 제3출발지 워킹샤드 소속 노드 및 제3무빙 어카운트의 제3홈샤드 소속 노드와 통신하여 제3무빙 어카운트의 워킹샤드 변경 절차를 수행한다. 어카운트의 워킹샤드 변경 방법은, 제3출발지 워킹샤드 소속 노드로부터 제3무빙 어카운트의 워킹샤드 변경 요청을 수신하는 단계, 제3무빙 어카운트의 트랜잭션 체인을 기록하는 단계, 제3무빙 어카운트의 홈샤드 정보를 획득하는 단계, 제3무빙 어카운트의 홈샤드 정보를 기반으로 제3홈샤드 소속 노드에 워킹샤드 정보 변경 요청을 발송하는 단계를 더 포함한다.
보다 바람직하게는, 제3무빙 어카운트의 홈샤드 정보를 기반으로 제3홈샤드 소속 노드로부터 제3무빙 어카운트의 현재 워킹샤드 정보를 획득하는 단계 및 제3무빙 어카운트의 현재 워킹샤드 정보와 제3무빙 어카운트의 도착지 워킹샤드 정보가 일치하지 않으면 제3홈샤드 소속 노드에 워킹샤드 정보 변경 요청을 발송하는 단계를 더 포함한다.
보다 바람직하게는, 제3무빙 어카운트의 현재 워킹샤드 정보와 제3무빙 어카운트의 도착지 워킹샤드 정보가 일치하면 제3무빙 어카운트의 워킹샤드 변경 절차를 종료한다.
보다 바람직하게는, 제3무빙 어카운트의 홈샤드 정보를 획득하는 단계는, 제3무빙 어카운트의 주소 정보와 블록체인 네트워크의 총 샤드 개수 정보를 파라미터로 하는 함수를 이용하여 제3무빙 어카운트의 홈샤드 정보를 획득한다.
보다 바람직하게는, 노드는 제3출발지 워킹샤드 소속 노드 및 제3홈샤드 소속 노드와 피투피 통신한다.
본 발명에 의하면, 다음과 같은 효과가 있다.
본 발명은 블록체인 네트워크를 샤드 단위로 나누어 트랜잭션과 블록을 처리함으로써, 트랜잭션 처리량과 분산 원장의 크기를 줄일 수 있어 블록체인 네트워크의 확장성을 증대시킬 수 있다.
본 발명은 샤드에 속한 노드 및/또는 어카운트를 주기적으로 랜덤하게 변경하여 리밸런싱함으로써, 임의의 샤드에 악의적 노드들이 집중되어 배치되는 위험을 차단할 수 있다.
본 발명은 홈샤드와 워킹샤드의 개념을 도입하고, 임의의 어카운트의 홈샤드 정보는 연산으로 도출 가능하도록 하고, 어카운트의 홈샤드에 해당 어카운트가 현재 소속된 샤드인 워킹샤드 정보를 저장하도록 하며, 임의의 어카운트가 워킹샤드를 변경하면 어카운트의 홈샤드에 변경된 워킹샤드 정보를 업데이트함으로써, 어카운트가 워킹샤드를 이동하더라도 어카운트의 워킹샤드를 추적할 수 있다.
본 발명의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 다른 효과들은 청구범위의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자("통상의 기술자"라 함)에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시예들은, 이하 설명하는 첨부 도면들을 참조하여 설명될 것이며, 여기서 유사한 참조 번호는 유사한 요소들을 나타내지만, 이에 한정되지는 않는다.
도 1은 본 발명의 3개의 샤드로 분할된 블록체인 네트워크의 개념도를 도시한 도면이다.
도 2는 본 발명의 어카운트의 트랜잭션 시스템을 포함하는 노드의 예시적인 구성을 도시한 블록도이다.
도 3은 본 발명의 어카운트의 트랜잭션 시스템을 구현하기 위해, 데이터 저장소에 저장된 정보를 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 어카운트의 워킹샤드 변경 시스템을 도시한 구성도이다.
도 5는 본 발명의 일 실시예에 따른 어카운트의 워킹샤드 변경 방법을 도시한 동작 흐름도이다.
본 발명의 실시예들은, 이하 설명하는 첨부 도면들을 참조하여 설명될 것이며, 여기서 유사한 참조 번호는 유사한 요소들을 나타내지만, 이에 한정되지는 않는다.
이하, 본 발명의 실시를 위한 구체적인 내용을 첨부된 도면을 참조하여 상세히 설명한다. 다만, 이하의 설명에서는 본 발명의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
첨부된 도면에서, 동일하거나 대응하는 구성요소에는 동일한 참조부호가 부여되어 있다. 또한, 이하의 실시예들의 설명에 있어서, 동일하거나 대응되는 구성요소를 중복하여 기술하는 것이 생략될 수 있다. 그러나, 구성요소에 관한 기술이 생략되어도, 그러한 구성요소가 어떤 실시예에 포함되지 않는 것으로 의도되지는 않는다.
본 명세서에 개시된 실시예의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명과 연관된 통상의 기술자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것일 뿐이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않은 한 이상적으로 또는 과도하게 해석되지 않는다.
예를 들어, "기술"이라는 용어는 시스템, 방법, 컴퓨터 판독 가능 명령어, 모듈, 알고리즘, 하드웨어 로직 및/또는 상기 기술된 문맥에 의해 허용되고 문서 전체에 걸쳐 동작을 지칭할 수 있다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 개시된 실시예에 대해 구체적으로 설명하기로 한다. 본 명세서에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 관련 분야에 종사하는 기술자의 의도, 판례 또는 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 명세서에서의 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다. 명세서 전체에서 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
본 발명에서, '포함하다', '포함하는' 등의 용어는 특징들, 단계들, 동작들, 요소들 및/또는 구성요소들이 존재하는 것을 나타낼 수 있으나, 이러한 용어가 하나 이상의 다른 기능들, 단계들, 동작들, 요소들, 구성요소들 및/또는 이들의 조합이 추가되는 것을 배제하지는 않는다.
본 발명에서, 특정 구성요소가 임의의 다른 구성요소에 '결합', '조합', '연결', '연관' 되거나, '반응' 하는 것으로 언급된 경우, 특정 구성요소는 다른 구성요소에 직접 결합, 조합, 연결 및/또는 연관되거나, 반응할 수 있으나, 이에 한정되지 않는다. 예를 들어, 특정 구성요소와 다른 구성요소 사이에 하나 이상의 중간 구성요소가 존재할 수 있다. 또한, 본 발명에서 "및/또는"은 열거된 하나 이상의 항목의 각각 또는 하나 이상의 항목의 적어도 일부의 조합을 포함할 수 있다.
본 발명에서, '제1', '제2' 등의 용어는 특정 구성요소를 다른 구성요소와 구별하기 위해 사용되는 것으로, 이러한 용어에 의해 상술한 구성요소가 제한되진 않는다. 예를 들어, '제1' 구성 요소는 '제2' 구성 요소와 동일하거나 유사한 형태의 요소를 지칭하기 위해 사용될 수 있다.
본 발명에서 '블록체인 네트워크'는 블록체인 시스템에 참가하며 인터넷 등으로 상호 피투피 통신하는 여러 컴퓨터(노드)들의 집합체이고, 본 발명에서 '노드'는 블록체인 네트워크에 참가하는 컴퓨터일 수 있다. 여기서, 컴퓨터는 CPU, 메모리, 통신, 입출력 기능을 갖는 장치를 모두 포괄하는 의미로서, 구체적으로는 서버 컴퓨터, 개인용 컴퓨터(PC), 휴대폰 단말기, 소형 가전기기 등을 포함할 수 있다.
노드는 블록체인 네트워크를 통해 정보의 공유 및 확산을 실행할 수 있다. 노드는 사용자 어카운트(계정)을 관리한다. 노드가 관리하는 어카운트에는, 노드 소유자의 어카운트(이하, 호스트 어카운트라 함)와, 다른 사용자로부터 관리를 위탁받은 어카운트(이하, 게스트 어카운트라 함)가 포함될 수 있다. 노드는 자신이 관리하는 호스트 어카운트와 게스트 어카운트에 관한 모든 정보를 저장하고 블록체인 네트워크 상의 다른 노드들에게 전송하며, 다른 노드들로부터 각 노드에서 관리하는 호스트 어카운트와 게스트 어카운트에 관한 최신 정보를 수신할 수 있다.
본 발명에서 '어카운트(account)'라 함은 블록체인에 참여하는 사용자 계정으로서, 한 유저를 나타내는 데이터 구조일 수 있다. 어카운트는 트랜잭션을 발행함으로써 블록체인 시스템에 정보가 추가될 수 있으며, 유저가 발행한 트랜잭션의 링크된 리스트일 수 있다. 트랜잭션은 유저가 시스템에 추가하는 데이터의 단위일 수 있다. 어카운트는 노드를 소유하여 자기 자신의 트랜잭션 정보를 직접 관리할 수 있으며, 이러한 어카운트를 호스트 어카운트라 할 수 있다. 또는, 어카운트는 다른 사용자의 노드에 트랜잭션 정보를 위탁하여 관리시킬 수 있으며, 이러한 어카운트를 게스트 어카운트라 하고, 어카운트 관리를 위탁받은 노드를 위탁 노드라 할 수 있다. 노드와 어카운트의 본인 확인은 암호키로 가능하며, 같은 암호키로 트랜잭션에 서명할 수 있다. 게스트 어카운트는 스스로 노드를 운영하여 호스트 어카운트가 될 수도 있고 위탁 노드를 변경할 수도 있으며, 호스트 어카운트는 위탁 노드를 선정하여 게스트 어카운트가 될 수도 있다.
본 발명에서 '트랜잭션'이라 함은 블록체인에 추가되는 정보의 단위로서, 하나의 어카운트가 단독으로 발행할 수 있다. 트랜잭션의 내용은 명목상으로는 사용자가 제공하는 임의의 정보이며, 실제로는 시스템 내에서 의미있는 메시지일 수 있다. 예컨대, 트랜잭션에는 '어카운트 A가 어카운트 B에게 100 코인을 보냈음", "어카운트는 B는 어카운트 A로부터 100 코인을 받음" 등의 메시지가 포함될 수 있다. 본 발명에서는 트랜잭션의 일련 번호는 0부터 시작하는 양의 정수로서, 트랜잭션마다 1씩 증가하고, 어카운트별로 원장을 관리하는 계정별 트랜잭션 체인(AWTC : Account-Wise Transaction Chain)을 사용한다. 계정별 트랜잭션 체인(AWTC)에 대한 기술은 대한민국 공개특허 제2021-0015196호에 기재된 내용을 참조하여 이해될 수 있다.
본 발명에서 '블록'은 특정 기간 동안 샤드 또는 블록체인 네트워크에 추가된 트랜잭션의 서명된 목록일 수 있다. 발생된 트랜잭션이 합의 알고리즘을 통해 목록을 서명함으로서 블록이 생성될 수 있다. 블록은 한 번에 하나만 생성될 수 있으며, 기존의 블록 리스트에 새로운 블록을 추가함으로서 블록체인을 구성할 수 있다.
본 발명에서 '샤드'는 블록체인 네트워크에 참여하는 노드들의 소집합일 수 있다. 전체 블록체인 네트워크는 일반적으로 둘 이상의 샤드로 분할되고, 분할되지 않는 경우에는 모든 노드가 한 샤드에 참여한다고 보며, 각 샤드는 고유의 주소를 갖는다. 통상적으로 샤딩 기법을 적용한 블록체인 네트워크는 동일 샤드에 속한 노드들끼리 상호 피투피 통신을 하며, 동일 샤드에 속한 모든 어카운트들의 계정별 트랜잭션 체인(AWTC)을 공유한다.
본 발명에서, 모든 어카운트는 하나의 워킹샤드와 하나의 홈샤드를 가질 수 있다. 임의의 어카운트의 워킹샤드와 홈샤드는 동일할 수도 있고, 서로 다를 수도 있다. 본 발명에서 어카운트의 '홈샤드'는 어카운트의 주소와 총 샤드 개수를 파라미터로 하는 함수를 기반으로 연산될 수 있다. 본 발명에서 어카운트의 '워킹샤드'는 현재 해당 어카운트가 소속되어 동작하는 샤드로서, 통상적인 샤드일 수 있다. 즉, 통상적인 샤드 기법을 적용한 블록체인 네트워크에서는, 샤드가 동일한 노드간 상호 피투피 통신을 하며, 동일한 샤드에 소속된 모든 어카운트들의 원장이 공유된다. 한편, 본 발명을 적용한 블록체인 네트워크에서는, 워킹샤드가 동일한 노드간 상호 피투피 통신하며, 동일 워킹샤드에 속한 모든 어카운트들의 계정별 트랜잭션 체인(AWTC)을 공유할 수 있다.
본 발명에서 '인트라샤드 트랜잭션'은 동일 워킹샤드를 가지는 노드간 트랜잭션을 의미할 수 있다. 본 발명에서 '인터샤드 트랜잭션'은 서로 다른 워킹샤드를 가지는 노드간 트랜잭션을 의미할 수 있다.
각 샤드는 해당 샤드를 홈샤드로 둔 노드 및 어카운트들의 집합과, 해당 샤드를 워킹샤드로 둔 노드 및 어카운트들의 집합을 가질 수 있다. 각 노드 및 어카운트는 하나의 워킹샤드에 소속되어야 한다.
노드는 하나의 워킹샤드에서 다른 워킹샤드로 소속 워킹샤드를 변경할 수 있으며, 노드가 워킹샤드를 변경할 때, 노드에서 관리하는 호스트 어카운트와 게스트 어카운트가 동시에 워킹샤드를 변경할 수 있다. 예컨대, 블록체인 네트워크에 속한 각 노드는 샤드 리밸런싱 알고리즘을 포함하며, 특정 조건을 만족하면 샤드 리밸런싱 알고리즘을 실행하여, 해당 노드 및 어카운트의 워킹샤드를 변경할 수 있다.
한편, 임의의 어카운트는 노드와는 별개로 하나의 워킹샤드에서 다른 워킹샤드로 소속 워킹샤드를 변경할 수 있다. 예컨대, 임의의 한 노드에 위탁 관리되던 어카운트가 다른 워킹샤드에 소속된 노드로 위탁 노드를 변경하거나, 임의의 호스트 어카운트가 다른 워킹샤드에 소속된 노드에 신규로 위탁되거나, 임의의 게스트 어카운트가 스스로 노드를 운영하여 호스트 어카운트가 될 경우, 기존의 노드와는 별개로 소속 워킹샤드를 변경할 수 있다.
본 발명에서 블록체인 네트워크 및 샤드에서의 '피투피 통신'이라 함은 임의의 노드가 어떤 정보를 수신하면, 수신한 정보를 복제하여 다른 노드들에게 전송하고, 전송받은 노드 또한 해당 정보를 복제하여 다른 노드들에게 전송하는 과정을 반복하여, 충분한 시간 후 블록체인 네트워크 및 샤드에 속한 모든 노드가 해당 정보를 공유하는 것을 의미할 수 있다.
본 발명에서 임의의 샤드의'이웃 샤드'라 함은, 해당 샤드의 주소와 비트 거리가 1인 주소를 가지는 샤드일 수 있다. 비트 거리가 1이라 함은 임의의 두 이진값을 자리별로 비교할 때 하나의 자리 값만 다른 것을 의미한다. 예컨대, 이진값 '0101'에 대해, 1번째 자리 값만 다른 이진값은 '0100'이고, 2번째 자리 값만 다른 이진값은 '0111'이고, 3번째 자리 값만 다른 이진값은 '0001'이고, 4번째 자리 값만 다른 이진값은 '1101'이다. 따라서, 이진값 '0101'에 대해, 이진값 '0100', 이진값 '0111', 이진값 '0001' 및 이진값 '1101'은 모두 하나의 자리 값만 다른 이진값들이다. 이와 같이 본 발명에서는, 임의의 이진값에 대해 하나의 자리 값만 다른 이진값을 비트 거리가 1이라고 정의하고, 임의의 샤드의 주소와 비트 거리가 1인 주소를 가진 샤드를 이웃 샤드로 정의한다.
이하에 기술된 운영 시스템은 하나의 실시예를 구성하고 청구 범위를 임의의 하나의 특정 운영 환경으로 제한하려는 것은 아니다. 청구된 요지의 기술적 사상 및 범위를 벗어나지 않고 다른 환경에서도 사용될 수 있다.
도 1은 본 발명의 3개의 샤드로 분할된 블록체인 네트워크의 개념도를 도시한 도면이다.
블록체인 네트워크를 구성하는 복수의 노드들이 3개의 샤드(110, 120, 130)로 분할될 수 있으며, 이에 한정되지 않는다. 샤드의 개수는 블록체인 네트워크를 구성하는 노드 및 어카운트의 개수가 증가함에 따라 늘어날 수 있으며, 이때, 하나의 샤드가 2개로 분할될 수 있다. 각 샤드(110, 120, 130)는 현재 샤드에 소속된 노드들의 워킹샤드일 수 있다. 현재 워킹샤드 내에 소속된 노드들은 모두 동일한 정보를 공유할 수 있다.
각 노드들은 워킹샤드 내 노드들 중 피투피 통신 대상(인트라샤드 통신 노드) 정보를 저장한 인트라샤드 통신 노드 리스트와, 워킹샤드 외 노드들 중 피투피 통신 대상(인터샤드 통신 노드) 정보를 저장한 인터샤드 통신 노드 리스트를 포함할 수 있다.
각 노드의 워킹샤드 내 통신 대상인 인트라샤드 통신 노드는 kademlia 규칙에 따라 결정될 수 있다. 각 노드의 워킹샤드 외 통신 대상인 인터샤드 통신 노드는 이웃 샤드에 속한 노드들 중 일부 노드들로 랜덤하게 결정할 수 있다.
이러한 방식으로 결정된 인트라샤드 통신 노드 리스트 및 인터샤드 통신 노드 리스트를 기반으로 워킹샤드 내 및 워킹샤드 외 피투피 통신을 통한 정보 공유가 가능해진다. 임의의 노드는 인트라샤드 통신 노드와 공유하는 정보와, 인터샤드 통신 노드와 공유하는 정보가 다를 수 있다. 즉, 인터샤드 통신 노드와 공유하는 정보는 인트라샤드 통신 노드와 공유하는 정보 보다 제한적일 수 있다. 각 노드에 할당되는 인트라샤드 통신 노드 리스트와 인터샤드 통신 노드 리스트에 포함되는 인트라샤드 통신 노드와 인터샤드 통신 노드는 랜덤하게 재구성될 수 있다.
도 1에서 워킹샤드 내 노드들과 통신하는 노드들(111, 121, 131)은 해칭되지 않은 원형으로 표시되어 있고, 워킹샤드 외 노드들과 통신하는 노드들(112, 122, 132)은 해칭 처리된 원형으로 표시되어 있다. 워킹샤드 외 노드들과 통신하는 노드들(112, 122, 132)은 인터샤드 통신 노드 리스트를 기반으로 이웃 샤드에 속한 노드들과 통신할 수 있다. 여기서, 이웃 샤드라 함은 샤드 주소의 비트 거리가 1인 샤드일 수 있다. 비트 거리가 1이라 함은, 샤드의 주소가 오직 한 자리의 비트 값만 다른 것을 의미할 수 있다. 즉, 주소 '00'과 비트 거리가 1인 주소는 '01'과 '10'일 수 있다.
도 1의 예에서, 제1샤드(110)의 주소는 '00', 제2샤드(120)의 주소는 '01', 제3샤드(130)의 주소는 '10'인 경우, 제1샤드(110)와 제2샤드(120)의 주소는 각각 '00', '01'로서 비트 거리가 1이고, 제1샤드(110)와 제3샤드(130)의 주소는 각각 '00', '10'로서 비트 거리가 1이지만, 제2샤드(110)와 제3샤드(130)의 주소는 각각 '01', '10'로서, 2개의 자리값이 다르기 때문에 비트 거리가 1이 아니다.
따라서, 제1샤드와 제2샤드는 이웃 샤드이고, 제1샤드와 제3샤드는 이웃 샤드로서, 직접 통신을 할 수 있다. 그러나, 제2샤드와 제3샤드는 이웃 샤드가 아니라서 직접 통신을 할 수 없으며, 각각 이웃 샤드인 제1샤드를 통해서 통신을 할 수 있다.
도 1의 각 노드들은 샤드 리밸런싱 알고리즘을 포함하며, 기설정된 조건에 따라 샤드 리밸런싱 알고리즘이 실행될 수 있다. 샤드 리밸런싱 알고리즘은 바운디드 쿡쿠(Bounded Cuckoo) 알고리즘을 사용할 수 있으나, 이에 한정되지는 않는다. 바운디드 쿡쿠 알고리즘은 래피드체인(rapidchain) 소개자료(RapidChain: Scaling Blockchain via Full Sharding, https://eprint.iacr.org/2018/460.pdf 참고)에 상세하게 기술되어 있다. 본 발명은 바운디드 쿡쿠 알고리즘을 기반으로 샤드들의 건강(health) 지수를 계산하여, 강한(strong) 샤드와 약한(weak) 샤드로 분류하고, 정기적으로 강한 샤드에서 랜덤으로 일부 노드를 추출하여 약한 샤드로 이동시킬 수 있다.
샤드 리밸런싱 알고리즘이 실행되면, 워킹샤드를 변경할 노드들이 랜덤으로 선정되어, 노드의 워킹샤드가 재할당되어 변경될 수도 있다. 노드의 워킹샤드가 변경되면, 해당 노드는 자신이 관리하는 모든 호스트 어카운트와 게스트 어카운트에 대해 워킹샤드 변경 절차를 수행할 수 있다.
또한, 노드는 자신이 관리하는 호스트 어카운트 및 게스트 어카운트에 대해 개별적의 워킹샤드 변경 절차를 수행할 수도 있다. 예컨대, 노드는 자신이 위탁 관리하는 게스트 어카운트가 위탁 노드를 변경하는데, 변경되는 위탁 노드가 다른 워킹샤드에 소속된 경우, 해당 게스트 어카운트의 워킹샤드 변경 절차를 수행할 수 있다. 또는, 다른 워킹샤드에 속한 노드에서 관리되던 제3의 어카운트를 신규 위탁 관리할 경우, 해당 제3의 어카운트의 워킹샤드 변경 절차를 수행할 수 있다.
도 2는 본 발명의 어카운트의 트랜잭션 시스템을 포함하는 노드(200)의 예시적인 구성을 도시한 블록도이다. 각 노드는 컴퓨터 장치로 구현될 수 있다.
일부 예에서, 노드(200)의 다양한 장치 및/또는 구성 요소는 하나 이상의 네트워크(260)를 통해 서로 및 외부 장치와 통신할 수 있는 분산 컴퓨터 리소스(250)를 포함할 수 있다.
다양한 실시예에서, 분산 컴퓨터 리소스(250)는 장치(250(1) ~ 250(N))를 포함할 수 있다.
본 발명의 실시예는 분산 컴퓨터 리소스(250)가 클러스터 또는 다른 그룹화된 구성으로 동작하여 리소스를 공유하고, 부하를 분산시키며, 성능을 높이고, 또는 다른 목적을 위해 하나 이상의 컴퓨터 장치를 포함할 수 있는 시나리오를 지원한다.
분산 컴퓨터 리소스(250)는 종래의 서버형 장치, 데스크탑 컴퓨터형 장치, 모바일 장치, 특수 목적형 장치, 내장형 장치 및/또는 웨어러블형 장치와 같은 다양한 범주에 해당할 수 있다. 따라서, 데스크톱 및 랩톱 컴퓨터로 설명되었지만 분산 컴퓨터 리소스(250)는 다양한 장치 유형을 포함할 수 있으며 특정 유형의 장치로 제한되지 않는다. 분산 컴퓨터 리소스(250)는 데스크톱 컴퓨터, 서버 컴퓨터, 웹 서버 컴퓨터, 개인용 컴퓨터, 모바일 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 웨어러블 컴퓨터, 이식형 컴퓨터, 통신 장치, 자동차 컴퓨터, 네트워크 지원 텔레비전, 씬 클라이언트, 터미널, PDA, 게임 콘솔, 게임 장치, 워크 스테이션, 미디어 플레이어, 개인 비디오 레코더(PVR), 셋톱 박스, 카메라, 컴퓨터 장치에 포함하기 위한 통합 구성 요소일 수 있다.
노드(200)는 분산 컴퓨터 리소스(250)인 하나의 컴퓨터 장치일 수 있다. 노드(200)는 버스(240)를 통해 컴퓨터 판독 가능 매체(CRM : Computer Readable Media)(204)에 작동 가능하게 연결된 하나 이상의 프로세싱 유닛(202)을 갖는 임의의 유형의 컴퓨터 장치를 포함할 수 있으며, 일부 경우에는 이들 중 하나 이상을 포함할 수 있다. 이러한 버스(240)는 시스템 버스, 데이터 버스, 주소 버스, PCI 버스, 미니 PCI 버스 및 다양한 로컬, 주변 장치 및/또는 독립 버스를 포함할 수 있다.
노드(200)에서, 프로세싱 유닛(202)은 예를 들어 CPU 타입 프로세싱 유닛, GPU 타입 프로세싱 유닛, 필드 프로그래밍 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP) 또는 CPU에 의해 구동 될 수 있는 다른 하드웨어 로직 구성 요소를 나타내는 프로세싱 유닛(202)을 포함할 수 있다.
예를 들어, 이러한 하드웨어 로직 구성 요소는 ASIC(Application-Specific Integrated Circuits), ASP(Application-Specific Standard Products), SOC(System-on-a-chip) 시스템, 복잡한 프로그래밍 가능 논리 장치(CPLD) 등을 포함할 수 있다. 구체적으로, CRM(204)은 외부 CPU 타입 프로세싱 유닛(206), 외부 GPU 타입 프로세싱 유닛(208)과 같은 외부 프로세싱 유닛(208) 및/또는 FPGA형 가속기(210(1)), DSP형 가속기(210(2)) 또는 기타 가속기(210(N))와 같은 외부 가속기(210)에 의해 실행 가능한 명령을 저장할 수 있다.
본 명세서에 기재된 CRM(204)는 컴퓨터 저장 매체 및/또는 통신 매체를 포함할 수 있다.
컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 메모리, 비휘발성 메모리 및/또는 다른 영구 또는 보조 컴퓨터 저장 매체와 같은 유형의 저장 유닛, 착탈식 및 비착탈식 컴퓨터 저장 매체를 포함할 수 있다.
컴퓨터 저장 매체는 RAM, 정적 RAM(SRAM), 동적 RAM(DRAM), 위상 변화 메모리(PRAM), 읽기전용메모리(ROM), 소거 가능 프로그래밍 가능 읽기 전용 메모리(EPROM), 전기 소거 가능 프로그램 가능 읽기 전용 메모리(EEPROM), 플래시 메모리, DVD, 광학 저장 매체, 자기 카세트, 자기 테이프, 솔리드스테이트 메모리(SSD) 등일 수 있다.
CRM(204)에 저장된 실행 가능한 명령어는 운영 체제(220) 및 프로세싱 유닛(202)에 의해 로드 가능하고 실행 가능한 다른 모듈, 프로그램 또는 애플리케이션을 포함할 수 있다.
추가적으로 또는 대안적으로, 본 명세서에서 기능적으로 설명된 것은 가속기와 같은 하나 이상의 하드웨어 로직 구성 요소에 의해 적어도 부분적으로 수행될 수 있다.
예를 들어, 사용될 수 있는 예시적인 유형의 하드웨어 로직 구성 요소는 FPGA(Field-programmable Gate Array), ASIC(Application-Specific Integrated Circuits), ASSP(Application-Specific Standard Products), System-on-a chip system(SOC), 복합 프로그램가능 로직 장치(CPLD) 등을 포함한다. 예를 들어, 가속기는 FPGA 패브릭에 내장된 CPU를 포함하는 XILINX 또는 ALTERA의 하이브리드 장치일 수 있다.
예시된 실시예에서, CRM(204)은 또한 데이터 저장소(212)를 포함할 수 있다. 일부 실시예에서, 데이터 저장소(212)는 데이터베이스, 데이터웨어 하우스 또는 다른 유형의 구조적 또는 비 구조적 데이터 저장소와 같은 데이터 저장소를 포함할 수 있다.
일부 실시예에서, 데이터 저장소(212)는 하나 이상의 하이퍼 텍스트 마크업 언어(HTML) 테이블, 자원 설명 프레임 워크(RDF : Resource description framework) 테이블, 웹 온톨로지 언어(OWL) 테이블 및/또는 XML(Extensible Markup Language) 테이블을 포함하는 웹 테이블과 같은 데이터 액세스를 가능하게 하는 하나 이상의 테이블, 인덱스, 저장 프로시저 등을 갖는 코퍼스 및/또는 관계형 데이터베이스를 포함할 수 있다.
예를 들어, 데이터 저장소(212)는 CRM(204)에 저장되고 프로세싱 유닛(202)에 의해 실행되는 프로세스, 애플리케이션, 컴포넌트 및/또는 모듈의 동작을 위한 데이터 및/또는 명령어를 저장할 수 있다.
노드(200)는 하나 이상의 입/출력(I/O) 인터페이스(216)를 더 포함할 수 있고, 입/출력(I/O) 인터페이스(216)는 노드(200)가 주변 입력 장치(예를 들어, 키보드, 마우스, 펜, 게임 컨트롤러, 음성 입력 장치, 터치 입력 장치, 제스처 입력 장치, 카메라 등)를 포함하는 사용자 입력 장치와 주변 출력 장치(예를 들어, 디스플레이, 프린터 등)와 통신할 수 있는 입/출력 장치와 통신할 수 있게 하는 I/O 인터페이스(216)일 수 있다.
또한, 노드(200)는 블록체인 네트워크의 노드일 수 있으며, 노드(200)와 네트워크(260)를 통해 블록체인 네트워크의 다른 노드와 통신할 수 있게 하는 하나 이상의 입력/출력(I/O) 네트워크 인터페이스(218)를 더 포함할 수 있다.
그러한 입력/출력(I/O) 네트워크 인터페이스(218)는 네트워크(260)를 통해 통신을 송수신하기 위한 하나 이상의 네트워크 인터페이스 제어기(NIC) 또는 다른 유형의 트랜시버 장치를 포함할 수 있다.
네트워크(260)는 인터넷과 같은 공용 네트워크, 기관 및/또는 개인 인트라넷과 같은 개인 네트워크, 또는 개인 및 공용 네트워크의 일부 조합을 포함할 수 있다. 네트워크(260)는 근거리 통신망(LAN), 광역 통신망(WAN), 위성 네트워크, 케이블 네트워크, Wi-Fi 네트워크, WiMax 네트워크를 포함하지만 이에 제한되지 않는 임의의 유형의 유선 및/또는 무선 네트워크를 포함할 수 있으며, 이동 통신 네트워크(예를 들어, 3G, 4G, 5G 등) 또는 이들의 임의의 조합을 포함할 수 있다. 네트워크(260)는 인터넷 프로토콜(IP), 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP), 또는 다른 유형의 프로토콜과 같은 패킷 기반 및/또는 데이터 그램 기반 프로토콜을 포함하는 통신 프로토콜을 이용할 수 있다.
더욱이, 네트워크(260)는 네트워크 통신을 용이하게 하거나 스위치, 라우터, 게이트웨이, 액세스 포인트, 방화벽, 기지국, 리피터, 백본 장치와 같은 네트워크를 위한 하드웨어 기반을 형성하는 다수의 장치를 포함할 수 있다.
일부 실시 예들에서, 네트워크(260)는 무선 액세스 포인트(WAP)와 같은 무선 네트워크로의 연결을 가능하게 하는 장치들을 더 포함할 수 있다. 본 발명에 따른 실시예들은 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준 (예를 들어, 802.11g, 802.11n 등)을 지원하는 WAP를 포함하여 다양한 전자기 주파수(예를 들어, 무선 주파수)를 통해 데이터를 송수신하는 WAP를 통한 연결을 지원할 수 있다.
예시된 실시예에서, CRM(204)은 운영 체제(220)와 어카운트의 트랜잭션 시스템(222)을 포함할 수 있다. 어카운트의 트랜잭션 시스템(222)은 블록(224, 226, 228, 230 및 232)으로 도시된 하나 이상의 모듈 및/또는 API를 포함할 수 있지만, 이는 예시일 뿐이고, 그 수는 더 많거나 더 적을 수 있다. 각 블록(224, 226, 228, 230 및 232)과 관련하여 설명된 기능들은 더 적은 수의 모듈 및/또는 API들에 의해 수행되도록 결합될 수 있거나 더 많은 수의 모듈들 및/또는 API들에 의해 분할 및 수행될 수 있다.
대안적으로, 운영체제, 데이터 저장소에 저장되는 데이터 및 어카운트의 트랜잭션 시스템의 일부 또는 전부는 프로세스 유닛(202) 상의 메모리(214), CPU형 프로세싱 유닛(206) 상의 메모리(234(1)), GPU형 프로세싱 유닛(208) 상의 메모리(234(2)), FPGA형 가속기(210(1)) 상의 메모리(234(3)), DSP형 가속기(210(2)) 상의 메모리(234(4)) 및/또는 다른 가속기(210(N)) 상의 메모리(234(M))와 같은 별도의 메모리(234)에 저장될 수도 있다.
어카운트의 트랜잭션 시스템(222)은, 어카운트 관리 모듈(224)과, 피투피 통신 모듈(226)과, 워킹샤드 변경 모듈(228)과, 트랜잭션 처리 모듈(230)과, 홈샤드 산출 모듈(232)을 포함할 수 있다.
어카운트 관리 모듈(224)은 호스트 어카운트 및 게스트 어카운트들을 관리할 수 있다. 어카운트 관리 모듈(224)은 동일 워킹샤드에 소속된 모든 어카운트들에 대한 계정별 트랜잭션 체인(AWTC)을 입력받아 저장할 수 있다.
피투피 통신 모듈(226)은 워킹샤드 내에 발생된 임의의 메시지에 대해, 인트라샤드 통신 노드 리스트 및 인터샤드 통신 노드 리스트를 기반으로 워킹샤드 내 다른 노드들 및 워킹샤드 외 노드들에게 메시지를 피투피 통신으로 전달할 수 있다. 피투피 통신 모듈(226)은 노드 자체에서 발생된 메시지 또는 다른 노드로부터 공유받은 메시지를 수신하여 처리하거나 다른 노드들에게 공유할 수 있다. 이러한 메시지 공유는 여러 노드들을 걸쳐 이루어질 수 있으나, 편의상 메시지를 공유하는 절차는 생략하기로 한다.
워킹샤드 변경 모듈(228)은 임의의 어카운트의 워킹샤드가 변경되면, 해당 어카운트의 홈샤드에 저장된 워킹샤드 정보를 변경된 워킹샤드 정보로 업데이트할 수 있다. 이때, 워킹샤드를 변경하는 어카운트를 무빙 어카운트라 명명하고, 무빙 어카운트의 변경전 워킹샤드를 출발지 워킹샤드라 명명하고, 무빙 어카운트의 변경후 워킹샤드를 도착지 워킹샤드라고 명명할 수 있다.
예컨대, 무빙 어카운트의 워킹샤드가 출발지 워킹샤드에서 도착지 워킹샤드로 변경될 경우, 무빙 어카운트의 홈샤드를 워킹샤드로 둔 노드들, 무빙 어카운트의 출발지 워킹샤드를 워킹샤드로 둔 노드들, 무빙 어카운트의 도착지 워킹샤드를 워킹샤드로 둔 노드들이 각각 다른 워킹샤드 변경 동작을 수행하여, 무빙 어카운트의 홈샤드에 저장된 워킹샤드 정보를 출발지 워킹샤드에서 도착지 워킹샤드로 변경할 수 있다.
이하, 본 발명에서는, 무빙 어카운트의 홈샤드를 워킹샤드로 둔 노드를 홈샤드 소속 노드라 하고, 무빙 어카운트의 출발지 워킹샤드를 워킹샤드로 둔 노드를 출발지 워킹샤드 소속 노드(변경전 무빙 어카운트와 동일한 워킹샤드에 소속된 노드)라 하고, 무빙 어카운트의 도착지 워킹샤드를 워킹샤드로 둔 노드(변경후 무빙 어카운트와 동일한 워킹샤드에 소속된 노드)를 도착지 워킹샤드 소속 노드라 한다.
따라서, 워킹샤드 변경 모듈(228)은 자기가 홈샤드 소속 노드인지, 출발지 워킹샤드 소속 노드인지 혹은 도착지 워킹샤드 소속인지를 판단하여, 각기 다른 워킹샤드 변경 동작을 수행할 수 있다.
도 1의 예에서, 노드(111)에서 관리되는 임의의 어카운트의 홈샤드가 제2샤드(120)인 경우, 제2샤드(120)를 워킹샤드로 둔 노드(121) 및 노드(122)에는 해당 어카운트의 워킹샤드 정보로서 제1샤드(110) 정보가 저장된다. 한편, 이 어카운트(무빙 어카운트)의 워킹샤드가 제1샤드(110)에서 제3샤드(130)로 변경되면, 노드(121) 및 노드(122)에 저장된 무빙 어카운트의 워킹샤드 정보가 제1샤드(110)에서 제3샤드(130)로 변경된다. 이때, 무빙 어카운트의 변경전 워킹샤드인 제1샤드(110)에 소속된 노드들(111, 112)과, 무빙 어카운트의 홈샤드인 제2샤드(120)에 소속된 노드들(121, 122) 및 무빙 어카운트의 변경후 워킹샤드인 제3샤드(130)에 소속된 노드들(131, 132)이 각각 다른 워킹샤드 변경 동작을 수행하여, 본 발명에 따른 무빙 어카운트의 워킹샤드 변경을 수행하게 된다.
트랜잭션 처리 모듈(230)는 임의의 두 어카운트간 트랜잭션을 처리할 수 있다. 트랜잭션 처리 모듈(230)은 임의의 두 어카운트가 동일한 워킹샤드에 소속된 경우의 인트라샤드 트랜잭션과 임의의 두 어카운트가 서로 다른 워킹샤드에 소속된 경우의 인터샤드 트랜잭션을 처리할 수 있다. 이때, 트랜잭션을 시도하는 어카운트를 송신 어카운트, 트랜잭션의 대상이 되는 어카운트를 수신 어카운트라고 명명할 수 있으며, 송신 어카운트를 관리하는 노드(송신 노드), 수신 어카운트의 홈샤드에 소속된 노드(수신 어카운트의 홈샤드를 워킹샤드로 둔 노드) 및 수신 어카운트를 관리하는 노드(수신 노드)는 각각 다르게 동작할 수 있다.
홈샤드 산출 모듈(232)은 어카운트 주소와 총 샤드 개수 정보를 기반으로 임의의 어카운트의 홈샤드 주소를 산출할 수 있다. 홈샤드 산출 모듈(232)은 워킹샤드 변경 모듈(282) 및 트랜잭션 처리 모듈(230)에 의해 구동될 수 있으며, 워킹샤드 변경 모듈(282)이 무빙 어카운트의 홈샤드 정보를 요청하거나 트랜잭션 처리 모듈(230)이 수신 어카운트의 홈샤드 정보를 요청하면, 해당 어카운트의 주소와 총 샤드 개수 정보를 파라미터로 하는 함수에 적용하여 해당 어카운트의 홈샤드 주소를 산출할 수 있다.
도 3은 본 발명의 어카운트의 트랜잭션 시스템을 구현하기 위해, 데이터 저장소(300)에 저장된 정보를 도시한 도면이다.
노드의 데이터 저장소(300)에는, 노드의 워킹샤드에 속한 모든 어카운트의 계정별 트랜잭션 체인(AWTC)(302, 304, 306, 308)과, 노드의 워킹샤드를 홈샤드로 둔 어카운트들의 워킹샤드 이력 정보를 저장한 어카운트 디렉토리(310)와, 워킹샤드에 속한 모든 어카운트의 계정별 트랜잭션을 결합하고 워킹샤드에 속한 모든 노드들간 합의된 라운드 스테이트 블록을 체인으로 저장한 라운드 스테이트 체인(312)과, 블록체인 네트워크에 속한 모든 라운드 스테이트 블록을 결합하고 합의한 월드 라운드 스테이트 블록을 체인으로 저장한 월드 라운드 스테이트 체인(314)과, 노드의 워킹샤드 내 통신 대상 노드 정보를 저장한 인트라샤드 통신 노드 리스트(316) 및 노드의 워킹샤드 외 통신 대상 노드 정보를 저장한 인터샤드 통신 노드 리스트(318)가 저장될 수 있다.
어카운트 디렉토리(310)는 노드의 워킹샤드를 홈샤드로 둔 어카운트들의 워킹샤드 이력 정보를 저장한다. 본 예시에서 편의상 각 노드는 하나의 어카운트 즉, 호스트 어카운트만 관리하는 것으로 가정한다. 따라서, 본 예시에서 노드는 어카운트와 동일한 개념일 수 있다. 예컨대, 도 1의 예에서, 노드(111) 관리 어카운트의 홈샤드가 제2샤드(120)인 경우, 제2샤드(120)를 워킹샤드로 둔 노드(121) 및 노드(122)의 어카운트 디렉토리에 노드(111) 관리 어카운트의 워킹샤드 정보로서 제1샤드(110) 정보가 저장된다. 한편, 도 1의 예에서, 노드(112) 관리 어카운트의 홈샤드가 제3샤드(130)인 경우에는, 제3샤드를 워킹샤드로 둔 노드(131) 및 노드(132)의 어카운트 디렉토리에 노드(112) 관리 어카운트의 워킹샤드 정보로서 제1샤드(110) 정보가 저장된다.
앞서 설명한 바와 같이 노드 및 어카운트들은 워킹샤드를 변경할 수 있다. 이렇게 워킹샤드가 변경되면, 본 발명의 워킹샤드 변경 모듈이 구동되어, 해당 어카운트의 홈샤드 소속 노드들에는 변경된 워킹샤드 정보가 업데이트될 수 있다.
본 발명은 워킹샤드 변경 모듈에 의해 임의의 어카운트의 홈샤드 소속 노드들의 어카운트 디렉토리에, 해당 어카운트의 최신 워킹샤드 주소가 업데이트되는 것이 바람직하다.
도 4는 본 발명의 일 실시예에 따른 어카운트의 워킹샤드 변경 시스템(400)을 도시한 구성도이다. 이러한 워킹샤드 변경 시스템(400)은 노드의 컴퓨터 시스템에 의해 구현될 수 있으며, 도 4의 어카운트의 워킹샤드 변경 시스템(400)은 도 2의 워킹샤드 변경 모듈일 수 있다.
본 발명의 워킹샤드 변경 시스템을 구현하기 위하여, 노드는 동일 워킹샤드에 소속된 모든 어카운트들에 대한 계정별 트랜잭션 체인(AWTC)을 저장하고 관리하는 어카운트 관리 모듈(401)과, 어카운트 주소와 총 샤드 개수 정보를 기반으로 임의의 어카운트의 홈샤드 주소를 산출하는 홈샤드 산출 모듈(402)과, 임의의 메시지에 대해 인트라샤드 통신 노드 리스트 및 인터샤드 통신 노드 리스트를 기반으로 워킹샤드 내 다른 노드들 및 워킹샤드 외 노드들에게 메시지를 피투피 통신으로 전달하는 피투피 통신 모듈(403)과, 노드의 워킹샤드를 홈샤드로 둔 어카운트들의 워킹샤드 이력 정보를 저장하는 어카운트 디렉토리(404)를 포함한다.
본 발명에서, 워킹샤드를 변경하는 어카운트를 무빙 어카운트라 하고, 무빙 어카운트의 변경전 워킹샤드를 출발지 워킹샤드라 하고, 무빙 어카운트의 변경후 워킹샤드를 도착지 워킹샤드라고 할 수 있다. 무빙 어카운트의 워킹샤드가 출발지 워킹샤드에서 도착지 워킹샤드로 변경될 경우, 무빙 어카운트의 홈샤드를 워킹샤드로 둔 노드들(홈샤드 소속 노드), 무빙 어카운트의 출발지 워킹샤드를 워킹샤드로 둔 노드들(출발지 워킹샤드 소속 노드), 무빙 어카운트의 도착지 워킹샤드를 워킹샤드로 둔 노드들(도착지 워킹샤드 소속 노드)이 각각 다른 워킹샤드 변경 동작을 수행할 수 있다.
즉, 각 노드는, 출발지 워킹샤드 소속 노드로서의 워킹샤드 변경 모듈(410)과, 홈샤드 소속 노드로서의 워킹샤드 변경 모듈(420) 및 도착지 워킹샤드 소속 노드로서의 워킹샤드 변경 모듈(430)을 포함할 수 있으며, 자기가 홈샤드 소속 노드인지, 출발지 워킹샤드 소속 노드인지 혹은 도착지 워킹샤드 소속인지를 판단하여, 각기 다른 워킹샤드 변경 모듈을 동작할 수 있다.
출발지 워킹샤드 소속 노드로서의 워킹샤드 변경 모듈(410)은, 동일 워킹샤드에 소속된 임의의 무빙 어카운트의 워킹샤드가 변경되는 지를 감지하는 워킹샤드 변경 감지부(411) 및 도착지 워킹샤드 소속 노드에 무빙 어카운트의 워킹샤드 변경 요청을 하는 워킹샤드 변경 요청부(414)를 포함한다.
출발지 워킹샤드 소속 노드로서의 워킹샤드 변경 모듈(410)은, 홈샤드 산출 모듈(402)을 통해 무빙 어카운트의 홈샤드 정보를 획득하는 홈샤드 정보 획득부(412) 및 무빙 어카운트의 홈샤드 정보를 기반으로 홈샤드 소속 노드에 무빙 어카운트의 현재 워킹샤드 정보를 요청하여 무빙 어카운트의 현재 워킹샤드 정보를 획득하는 현재 워킹샤드 정보 획득부(413)를 더 포함한다.
워킹샤드 변경 요청부(414)는 현재 워킹샤드 정보 획득부(413)에서 획득된 무빙 어카운트의 현재 워킹샤드 정보가 도착지 워킹샤드 정보와 상이하면 도착지 워킹샤드 소속 노드에 무빙 어카운트의 워킹샤드 변경 요청을 다시한 후 현재 워킹샤드 정보 획득부(413)를 재구동한다.
출발지 워킹샤드 소속 노드로서의 워킹샤드 변경 모듈(410)은, 현재 워킹샤드 정보 획득부(413)에서 획득된 무빙 어카운트의 현재 워킹샤드 정보와 도착지 워킹샤드 정보가 일치하면 무빙 어카운트의 트랜잭션 체인을 비활성화 처리하는 어카운트 비활성화 처리부(415)를 더 포함한다.
홈샤드 소속 노드로서의 워킹샤드 변경 모듈(420)은, 출발지 워킹샤드 소속 노드 및 도착지 워킹샤드 소속 노드 중 적어도 하나의 정보 요청 노드로부터 무빙 어카운트의 현재 워킹샤드 정보 요청이 수신되는 워킹샤드 정보 요청 수신부(421), 어카운트 디렉토리(404)에서 무빙 어카운트의 현재 워킹샤드 정보를 검색하는 어카운트 디렉토리 검색부(422), 검색된 무빙 어카운트의 현재 워킹샤드 정보를 정보 요청 노드에게 발송하는 검색 결과 발송부(423), 도착지 워킹샤드 소속 노드로부터 워킹샤드 정보 변경 요청이 수신되는 워킹샤드 정보 변경 요청 수신부(424) 및 워킹샤드 정보 변경 요청을 검증한 후 어카운트 디렉토리(404)의 무빙 어카운트의 현재 워킹샤드 정보를 도착지 워킹샤드로 변경하는 어카운트 디렉토리 업데이트부(425)를 포함한다.
도착지 워킹샤드 소속 노드로서의 워킹샤드 변경 모듈(430)은, 출발지 워킹샤드 소속 노드로부터 무빙 어카운트의 워킹샤드 변경 요청을 수신하는 워킹샤드 변경 요청 수신부(431), 무빙 어카운트의 워킹샤드 변경 요청을 검증한 후 무빙 어카운트의 트랜잭션 체인을 기록하는 어카운트 기록부(432), 홈샤드 산출 모듈(402)을 통해 무빙 어카운트의 홈샤드 정보를 획득하는 홈샤드 정보 획득부(433) 및 무빙 어카우트의 홈샤드 정보를 기반으로 홈샤드 소속 노드에 워킹샤드 정보 변경 요청을 발송하는 워킹샤드 정보 변경 요청 발송부(435)를 포함한다.
도착지 워킹샤드 소속 노드로서의 워킹샤드 변경 모듈(430)은, 홈샤드 소속 노드에 무빙 어카운트의 현재 워킹샤드 정보를 요청하여 무빙 어카운트의 현재 워킹샤드 정보를 획득하는 현재 워킹샤드 정보 획득부(434)를 더 포함하고, 워킹샤드 정보 변경 요청 발송부(435)는 현재 워킹샤드 정보 획득부(434)에서 획득된 무빙 어카운트의 현재 워킹샤드 정보와 도착지 워킹샤드 정보가 일치하지 않으면 홈샤드 소속 노드에 워킹샤드 정보 변경 요청을 발송할 수 있다.
먼저, 노드가 출발지 워킹샤드 소속 노드인 경우, 노드는 무빙 어카운트의 워킹샤드를 변경하기 위하여, 출발지 워킹샤드 소속 노드로서의 워킹샤드 변경 모듈(410)이 구동된다. 출발지 워킹샤드 소속 노드로서의 워킹샤드 변경 모듈(410)의 각 구성요소의 동작을 설명한다. 이때, 무빙 어카운트를 제1무빙 어카운트, 출발지 워킹샤드 소속 노드를 제1출발지 워킹샤드 소속 노드, 홈샤드 소속 노드를 제1홈샤드 소속 노드, 도착지 워킹샤드 소속 노드를 제1도착지 워킹샤드 소속 노드라 한다. 즉, 노드는 제1무빙 어카운트의 출발지 워킹샤드 소속 노드일 수 있다.
워킹샤드 변경 감지부(411)는 동일 워킹샤드에 소속된 임의의 제1무빙 어카운트에 대한 워킹샤드 이동 사유가 발생하고, 해당 워킹샤드 이동 사유가 라운트 스테이트(RS)에 포함되어 확정된 경우, 이를 감지하여 워킹샤드 변경 동작이 수행되도록 한다. 워킹샤드 이동 사유는 앞서 언급한 바와 같이, 샤드 리밸런싱 알고리즘에 의한 노드의 샤드 재배치, 게스트 어카운트가 호스트 어카운트로 변경, 게스트 어카운트가 위탁 노드를 변경, 호스트 어카운트가 게스트 어카운트로 변경 등이 포함될 수 있다. 워킹샤드 변경 요청부(414)는 제1무빙 어카운트의 워킹샤드 변경 메시지를 생성하여 피투피 통신 모듈(403)을 통해 제1도착지 워킹샤드 소속 노드에게 발송할 수 있다.
제1무빙 어카운트의 워킹샤드 변경 메시지를 발송하고 기설정된 시간 경과 후, 홈샤드 정보 획득부(412)는 홈샤드 산출 모듈(402)에 제1무빙 어카운트의 홈샤드 정보를 요청하고, 홈샤드 산출 모듈(402)로부터 제1무빙 어카운트의 홈샤드 정보를 수신할 수 있다. 홈샤드 산출부(402)는 제1무빙 어카운트의 주소 정보와 블록체인 네트워크의 총 샤드 개수 정보를 파라미터로 하는 함수를 이용하여 제1무빙 어카운트의 홈샤드 정보를 연산할 수 있다.
현재 워킹샤드 정보 획득부(413)는 제1무빙 어카운트의 홈샤드 정보를 기반으로 제1무빙 어카운트의 워킹샤드 정보 요청 메시지를 생성하여 피투피 통신 모듈(403)을 통해 제1홈샤드 소속 노드에게 발송하고, 제1홈샤드 소속 노드로부터 제1무빙 어카운트의 현재 워킹샤드 정보를 수신할 수 있다. 이때, 피투피 통신 모듈(403)은 인트라샤드 통신 노드 리스트 및 인터샤드 통신 노드 리스트를 기반으로 한 통신 대상 노드들에게 워킹샤드 정보 요청 메시지를 피투피 통신으로 발송하고, 워킹샤드 정보 요청 메시지를 전달받은 노드들은 각자 자신의 인트라샤드 통신 노드들과 인터샤드 통신 노드들에게 워킹샤드 정보 요청 메시지를 피투피 통신으로 공유한다. 이렇게 피투피 통신을 통해 워킹샤드 정보 요청 메시지는 제1홈샤드 소속 노드에게 전달될 수 있다.
워킹샤드 변경 요청부(414)는 제1홈샤드 소속 노드로부터 수신된 제1무빙 어카운트의 현재 워킹샤드 정보가 도착지 워킹샤드 정보와 일치하지 않으면 제1무빙 어카운트의 워킹샤드 변경 메시지를 피투피 통신 모듈(403)을 통해 제1도착지 워킹샤드 소속 노드에게 다시 발송할 수 있다.
어카운트 비활성화 처리부(415)는 제1홈샤드 소속 노드로부터 수신된 제1무빙 어카운트의 현재 워킹샤드 정보가 도착지 워킹샤드 정보와 일치하면 어카운트 관리 모듈(401)을 통해 제1무빙 어카운트의 트랜잭션 체인(AWTC)를 비활성화 처리하여, 제1무빙 어카운트의 워킹샤드 변경 절차가 종료되도록 한다.
다음, 노드가 홈샤드 소속 노드인 경우, 노드는 무빙 어카운트의 워킹샤드를 변경하기 위하여, 홈샤드 소속 노드로서의 워킹샤드 변경 모듈(420)이 구동된다. 홈샤드 소속 노드로서의 워킹샤드 변경 모듈(420)의 각 구성요소의 동작을 설명한다. 이때, 무빙 어카운트를 제2무빙 어카운트, 출발지 워킹샤드 소속 노드를 제2출발지 워킹샤드 소속 노드, 홈샤드 소속 노드를 제2홈샤드 소속 노드, 도착지 워킹샤드 소속 노드를 제2도착지 워킹샤드 소속 노드라 한다. 즉, 노드는 제2무빙 어카운트의 홈샤드 소속 노드일 수 있다.
워킹샤드 정보 요청 수신부(421)는 제2출발지 워킹샤드 소속 노드 또는 제2도착지 워킹샤드 소속 노드로부터 제2무빙 어카운트의 워킹샤드 정보 요청 메시지를 수신할 수 있다. 제2무빙 어카운트의 워킹샤드 정보 요청 메시지는 제2출발지 워킹샤드 소속 노드 또는 제2도착지 워킹샤드 소속 노드에서 생성되며, 피투피 통신으로 전달될 수 있다.
어카운트 디렉토리 검색부(422)는 어카운트 디렉토리(404)에서 제2무빙 어카운트를 조회하여 제2무빙 어카운트의 현재 워킹샤드 정보를 획득할 수 있다.
검색 결과 발송부(423)는 어카운트 디렉토리(404)에서 검색된 제2무빙 어카운트의 현재 워킹샤드 정보를 제2출발지 워킹샤드 소속 노드 또는 제2도착지 워킹샤드 소속 노드에게 피투피 통신으로 발송할 수 있다.
워킹샤드 정보 변경 요청 수신부(424)는 제2무빙 어카운트의 제2도착지 워킹샤드 소속 노드로부터 제2무빙 어카운트의 워킹샤드 정보를 제2도착지 워킹샤드로 변경해 줄 것을 요청하는 워킹샤드 정보 변경 요청 메시지를 수신할 수 있다.
어카운트 디렉토리 업데이트(425)는 수신된 워킹샤드 정보 변경 요청 메시지를 검증하고, 어카운트 디렉토리(404)에 저장된 제2무빙 어카운트의 워킹샤드 정보를 제2출발지 워킹샤드에서 제2도착지 워킹샤드로 업데이트한다.
다음, 노드가 도착지 워킹샤드 소속 노드인 경우, 노드는 무빙 어카운트의 워킹샤드를 변경하기 위하여, 도착지 워킹샤드 소속 노드로서의 워킹샤드 변경 모듈(430)이 구동된다. 도착지 워킹샤드 소속 노드로서의 워킹샤드 변경 모듈(430)의 각 구성요소의 동작을 설명한다. 이때, 무빙 어카운트를 제3무빙 어카운트, 출발지 워킹샤드 소속 노드를 제3출발지 워킹샤드 소속 노드, 홈샤드 소속 노드를 제3홈샤드 소속 노드, 도착지 워킹샤드 소속 노드를 제3도착지 워킹샤드 소속 노드라 한다. 즉, 노드는 제3무빙 어카운트의 도착지 워킹샤드 소속 노드일 수 있다.
워킹샤드 변경 요청 수신부(431)는 제3출발지 워킹샤드 소속 노드로부터 워킹샤드 변경 메시지를 수신할 수 있다. 이 워킹샤드 변경 메시지는 제3출발지 워킹샤드 소속 노드의 워킹샤드 변경 요청부(414)에서 생성되어 피투피 통신 모듈(403)을 통해 수신될 수 있다.
어카운트 기록부(432)는 어카운트 관리 모듈(401)을 통해 제3무빙 어카운트의 트랜잭션 체인(AWTC)을 기록할 수 있다.
홈샤드 정보 획득부(433)는 홈샤드 산출 모듈(402)에 제3무빙 어카운트의 홈샤드 정보를 요청하고, 홈샤드 산출 모듈(402)로부터 제3무빙 어카운트의 홈샤드 정보를 수신할 수 있다. 홈샤드 산출부(402)는 제3무빙 어카운트의 주소 정보와 블록체인 네트워크의 총 샤드 개수 정보를 파라미터로 하는 함수를 이용하여 제3무빙 어카운트의 홈샤드 정보를 연산할 수 있다.
워킹샤드 정보 변경 요청 발송부(435)는 제3무빙 어카운트의 워킹샤드 정보 변경 요청 메시지를 생성하고, 그 메시지를 제3무빙 어카운트의 홈샤드 정보를 기반으로 한 제3홈샤드 소속 노드에게 피투피 통신으로 발송할 수 있다.
한편, 현재 워킹샤드 정보 획득부(434)는 제3무빙 어카운트의 홈샤드 정보를 기반으로 제3무빙 어카운트의 워킹샤드 정보 요청 메시지를 생성하여 피투피 통신 모듈(403)을 통해 제3홈샤드 소속 노드에게 발송하고, 제3홈샤드 소속 노드로부터 제3무빙 어카운트의 현재 워킹샤드 정보를 수신할 수 있다.
워킹샤드 정보 변경 요청 발송부(435)는 제3홈샤드 소속 노드로부터 수신된 제3무빙 어카운트의 현재 워킹샤드 정보가 도착지 워킹샤드 정보와 일치하지 않으면 제3무빙 어카운트의 워킹샤드 정보 변경 요청 메시지를 제3홈샤드 소속 노드에게 발송할 수 있다.
도 5는 본 발명의 일 실시예에 따른 어카운트의 워킹샤드 변경 방법을 도시한 동작 흐름도이다.
예시적인 프로세스의 동작은 개별 블록으로 도시되고 이들 블록을 참조하여 설명된다. 프로세스는 블록의 논리 흐름으로서 도시되며, 각 블록은 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있는 하나 이상의 동작을 나타낼 수 있다. 소프트웨어와 관련하여, 동작은 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서가 인용된 동작을 수행할 수 있게 하는 하나 이상의 컴퓨터 판독 가능 매체에 저장된 컴퓨터 실행 가능 명령어를 나타낸다. 일반적으로 컴퓨터 실행 가능 명령어에는 루틴, 프로그램, 객체, 모듈, 구성 요소, 데이터 구조, 특정 함수를 수행하거나 특정 추상 데이터 유형을 구현하는 것을 포함한다. 동작이 설명되는 순서는 제한적인 것으로 해석되어서는 안되며, 설명된 동작의 수는 임의의 순서로, 다수의 하위 동작으로 세분화 또는 병렬적으로 실행될 수 있다.
출발지 워킹샤드 소속 노드는 무빙 어카운트의 워킹샤드 변경을 감지하고, 무빙 어카운트의 워킹샤드 변경 메시지를 생성하여 도착지 워킹샤드 소속 노드에게 피투피 통신으로 발송한다(S501).
무빙 어카운트의 워킹샤드 변경 메시지를 발송하고 일정 시간이 경과되면, 출발지 워킹샤드 소속 노드는 무빙 어카운트의 주소 정보와 블록체인 네트워크의 총 샤드 개수 정보를 파라미터로 하는 함수를 이용하여 무빙 어카운트의 홈샤드 정보를 획득한다(S502).
출발지 워킹샤드 소속 노드는 홈샤드 소속 노드로부터 무빙 어카운트의 현재 워킹샤드 정보를 획득한다(S503). 이를 구체적으로 설명하면, 홈샤드 소속 노드는 어카운트 디렉토리에 무빙 어카운트의 워킹샤드 정보를 업데이트하며 관리한다(S504). 출발지 워킹샤드 소속 노드는 무빙 어카운트의 현재 워킹샤드 정보를 요청하는 워킹샤드 정보 요청 메시지를 생성하여 홈샤드 소속 노드에게 피투피 통신으로 발송한다. 홈샤드 소속 노드는 워킹샤드 정보 요청 메시지를 수신하고, 어카운트 디렉토리에서 무빙 어카운트의 현재 워킹샤드 정보를 검색하고, 검색된 무빙 어카운트의 현재 워킹샤드 정보를 출발지 워킹샤드 소속 노드에게 발송한다(S505).
출발지 워킹샤드 소속 노드는 단계 S505에서 획득된 무빙 어카운트의 현재 워킹샤드 정보와 도착지 워킹샤드 정보를 비교한다(S506).
단계 S506의 비교 결과 무빙 어카운트의 현재 워킹샤드 정보와 도착지 워킹샤드 정보가 일치하지 않으면, 무빙 어카운트의 변경 절차가 완료되지 않았기 때문에, 도착지 워킹샤드 소속 노드에게 무빙 어카운트의 워킹샤드 변경 메시지를 피투피 통신으로 발송한다(S507).
도착지 워킹샤드 소속 노드는 단계 S501 및/또는 단계 S507의 결과로서 무빙 어카운트의 워킹샤드 변경 메시지를 수신한다(S508).
도착지 워킹샤드 소속 노드는 무빙 어카운트의 주소 정보와 블록체인 네트워크의 총 샤드 개수 정보를 파라미터로 하는 함수를 이용하여 무빙 어카운트의 홈샤드 정보를 획득하고, 무빙 어카운트의 워킹샤드 정보 변경 메시지를 생성하여 홈샤드 소속 노드에게 피투피 통신으로 발송한다(S509).
홈샤드 소속 노드에게 무빙 어카운트의 워킹샤드 정보 변경 메시지를 발송하고 기설정된 시간 경과 후, 도착지 워킹샤드 소속 노드는 홈샤드 소속 노드로부터 무빙 어카운트의 현재 워킹샤드 정보를 획득한다(S510). 이를 구체적으로 설명하면, 도착지 워킹샤드 소속 노드는 무빙 어카운트의 현재 워킹샤드 정보를 요청하는 워킹샤드 정보 요청 메시지를 생성하여 홈샤드 소속 노드에게 피투피 통신으로 발송한다. 홈샤드 소속 노드는 워킹샤드 정보 요청 메시지를 수신하고, 어카운트 디렉토리에서 무빙 어카운트의 현재 워킹샤드 정보를 검색하고, 검색된 무빙 어카운트의 현재 워킹샤드 정보를 도착지 워킹샤드 소속 노드에게 발송한다(S505).
도착지 워킹샤드 소속 노드는 단계 S510에서 획득된 무빙 어카운트의 현재 워킹샤드 정보와 도착지 워킹샤드 정보를 비교한다(S511).
단계 S511의 비교 결과 무빙 어카운트의 현재 워킹샤드 정보와 도착지 워킹샤드 정보가 일치하지 않으면, 무빙 어카운트의 변경 절차가 완료되지 않았기 때문에, 무빙 어카운트의 워킹샤드 정보 변경 메시지를 생성하여 홈샤드 소속 노드에게 피투피 통신으로 발송하고(S512), 일정 시간이 경과된 후 단계 S510을 반복 수행한다.
단계 S509 또는 단계 S512에서, 도착지 워킹샤드 소속 노드로부터 무빙 어카운트의 워킹샤드 정보 변경 메시지를 수신한 홈샤드 소속 노드는, 단계 S504를 수행하여, 어카운트 디렉토리에 저장된 무빙 어카운트의 워킹샤드 정보를 도착지 워킹샤드 정보로 업데이트 한다.
이렇게 홈샤드 소속 노드에 저장된 무빙 어카운트의 현재 워킹샤드 정보가 도착지 워킹샤드 정보로 변경된 상태에서, 출발지 워킹샤드 소속 노드가 현재 워킹샤드 정보를 획득하고(S503), 현재 워킹샤드 정보와 도착지 워킹샤드 정보를 비교하면(S506), 두 정보는 일치하며, 두 정보가 일치하면 무빙 어카운트를 비활성화 처리하고 무빙 어카운트의 워킹샤드 변경 과정을 종료한다(S513).
또한, 이렇게 홈샤드 소속 노드에 저장된 무빙 어카운트의 현재 워킹샤드 정보가 도착지 워킹샤드 정보로 변경된 상태에서, 도착지 워킹샤드 소속 노드가 현재 워킹샤드 정보를 획득하고(S510), 현재 워킹샤드 정보와 도착지 워킹샤드 정보를 비교하면(S511), 두 정보는 일치하며, 두 정보가 일치하면 무빙 어카운트의 워킹샤드 변경 과정을 종료한다(S514).
전술한 모든 방법 및 프로세스는 하나 이상의 범용 컴퓨터 또는 프로세서에 의해 실행되는 소프트웨어 코드 모듈로 구현되고 완전 자동화될 수 있다. 코드 모듈은 임의의 유형의 컴퓨터 판독 가능 저장 매체 또는 다른 컴퓨터 저장 장치에 저장될 수 있다. 일부 또는 모든 방법은 특수 컴퓨터 하드웨어로 구현될 수 있다.
본 명세서에 기술되고 및/또는 첨부 도면에 도시된 흐름도의 임의의 일상적인 설명, 요소 또는 블록은 특정 논리 함수 또는 요소를 구현하기 위한 하나 이상의 실행 가능한 명령을 포함하는 코드, 모듈, 세그먼트 또는 부분을 잠재적으로 나타내는 것으로 이해되어야 한다. 루틴. 대안적인 예는 여기에 설명 된 예의 범위 내에 포함되며, 여기에서 이해될 수 있는 기능에 따라 실질적으로 동 기적으로 또는 역순으로 요소 또는 기능이 삭제되거나 도시되거나 논의된 것으로부터 순서대로 실행될 수 있다.
상술된 실시예에 대해 많은 변형 및 수정이 이루어질 수 있으며, 그 요소는 다른 허용 가능한 예 중 하나인 것으로 이해되어야 한다. 이러한 모든 수정 및 변형은 본 개시의 범위 내에 포함되고 다음의 청구범위에 의해 보호되도록 의도된다. 이상 설명된 본 발명에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 한정되어서는 아니되며, 후술하는 특허청구범위 뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.
222; 어카운트의 트랜잭션 시스템 224; 어카운트 관리모듈
226; 피투피 통신 모듈 228; 워킹샤드 변경 모듈
230; 트랜잭션 처리 모듈 232; 홈샤드 산출 모듈
411; 워킹샤드 변경 감지부 412; 홈샤드 정보 획득부
413; 현재 워킹샤드 정보 획득부 414; 워킹샤드 변경 요청부
415; 어카운트 비활성화 처리부 421; 워킹샤드 정보 요청 수신부
422; 어카운트 디렉토리 검색부 423; 검색 결과 발송부
424; 워킹샤드 정보 변경 요청 수신부 425; 어카운트 디렉토리 업데이트부
431; 워킹샤드 변경 요청 수신부 432; 어카운트 기록부
433; 홈샤드 정보 획득부 434; 현재 워킹샤드 정보 획득부
435; 워킹샤드 정보 변경 요청 발송부

Claims (24)

  1. 블록체인 네트워크를 구성하는 네트워크 소속 노드에서 어카운트의 워킹샤드 변경 시스템에 있어서,
    상기 네트워크 소속 노드는 제1무빙 어카운트의 출발지 워킹샤드 소속 노드이며, 상기 제1무빙 어카운트의 제1홈샤드 소속 노드 및 상기 제1무빙 어카운트의 제1도착지 워킹샤드 소속 노드와 통신하여 상기 제1무빙 어카운트의 워킹샤드 변경 절차를 수행하며,
    상기 네트워크 소속 노드는,
    상기 제1무빙 어카운트의 워킹샤드가 변경되는 지를 감지하는 워킹샤드 변경 감지부; 및
    상기 제1도착지 워킹샤드 소속 노드에 상기 제1무빙 어카운트의 워킹샤드 변경 요청을 하는 워킹샤드 변경 요청부;
    를 포함하는, 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템.
  2. 제1항에 있어서,
    상기 네트워크 소속 노드는,
    상기 제1무빙 어카운트의 홈샤드 정보를 획득하는 홈샤드 정보 획득부; 및
    상기 제1무빙 어카운트의 홈샤드 정보를 기반으로 상기 제1홈샤드 소속 노드로부터 상기 제1무빙 어카운트의 현재 워킹샤드 정보를 획득하는 현재 워킹샤드 정보 획득부를 더 포함하고,
    상기 워킹샤드 변경 요청부는 상기 제1무빙 어카운트의 현재 워킹샤드 정보가 상기 제1무빙 어카운트의 도착지 워킹샤드 정보와 일치하지 않으면 상기 제1도착지 워킹샤드 소속 노드에 상기 제1무빙 어카운트의 워킹샤드 변경 요청을 하는,
    블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템.
  3. 제2항에 있어서,
    상기 네트워크 소속 노드는,
    상기 제1무빙 어카운트의 현재 워킹샤드 정보가 상기 제1무빙 어카운트의 도착지 워킹샤드 정보와 일치하면 상기 제1무빙 어카운트의 트랜잭션 체인을 비활성화 처리하고 상기 제1무빙 어카운트의 워킹샤드 변경 절차를 종료하는 어카운트 비활성화 처리부;
    를 더 포함하는, 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템.
  4. 제2항에 있어서,
    상기 홈샤드 정보 획득부는,
    상기 제1무빙 어카운트의 주소 정보와 상기 블록체인 네트워크의 총 샤드 개수 정보를 파라미터로 하는 함수를 이용하여 상기 제1무빙 어카운트의 홈샤드 정보를 획득하는,
    블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템.
  5. 제1항에 있어서,
    상기 네트워크 소속 노드는 상기 제1홈샤드 소속 노드 및 상기 제1도착지 워킹샤드 소속 노드와 피투피 통신하는,
    블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템.
  6. 제1항에 있어서,
    상기 네트워크 소속 노드는 상기 제1무빙 어카운트의 출발지 워킹샤드 소속 노드이면서 제2무빙 어카운트의 홈샤드 소속 노드이며, 상기 제2무빙 어카운트의 제2출발지 워킹샤드 소속 노드 및 상기 제2무빙 어카운트의 제2도착지 워킹샤드 소속 노드와 통신하여 상기 제2무빙 어카운트의 워킹샤드 변경 절차를 수행하며,
    상기 네트워크 소속 노드는,
    상기 제2출발지 워킹샤드 소속 노드 및 제2도착지 워킹샤드 소속 노드 중 적어도 하나의 정보 요청 노드로부터 상기 제2무빙 어카운트의 현재 워킹샤드 정보 요청이 수신되는 워킹샤드 정보 요청 수신부;
    상기 제2무빙 어카운트의 현재 워킹샤드 정보를 어카운트 디렉토리에서 검색하는 어카운트 디렉토리 검색부;
    상기 어카운트 디렉토리 검색부에서 검색된 상기 제2무빙 어카운트의 현재 워킹샤드 정보를 상기 정보 요청 노드에게 발송하는 검색 결과 발송부;
    상기 제2도착지 워킹샤드 소속 노드로부터 워킹샤드 정보 변경 요청이 수신되는 워킹샤드 정보 변경 요청 수신부; 및
    상기 어카운트 디렉토리의 상기 제2무빙 어카운트의 현재 워킹샤드 정보를 상기 제2무빙 어카운트의 도착지 워킹샤드 정보로 변경하는 어카운트 디렉토리 업데이트부;
    를 더 포함하는, 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템.
  7. 제6항에 있어서,
    상기 네트워크 소속 노드는 상기 제2출발지 워킹샤드 소속 노드 및 상기 제2도착지 워킹샤드 소속 노드와 피투피 통신하는,
    블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템.
  8. 제1항에 있어서,
    상기 네트워크 소속 노드는 상기 제1무빙 어카운트의 출발지 워킹샤드 소속 노드이면서 제3무빙 어카운트의 도착지 워킹샤드 소속 노드이며, 상기 제3무빙 어카운트의 제3출발지 워킹샤드 소속 노드 및 상기 제3무빙 어카운트의 제3홈샤드 소속 노드와 통신하여 상기 제3무빙 어카운트의 워킹샤드 변경 절차를 수행하며,
    상기 네트워크 소속 노드는,
    상기 제3출발지 워킹샤드 소속 노드로부터 상기 제3무빙 어카운트의 워킹샤드 변경 요청을 수신하는 워킹샤드 변경 요청 수신부;
    상기 제3무빙 어카운트의 트랜잭션 체인을 기록하는 어카운트 기록부;
    상기 제3무빙 어카운트의 홈샤드 정보를 획득하는 홈샤드 정보 획득부; 및
    상기 제3무빙 어카운트의 홈샤드 정보를 기반으로 상기 제3홈샤드 소속 노드에 워킹샤드 정보 변경 요청을 발송하는 워킹샤드 정보 변경 요청 발송부;
    를 더 포함하는, 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템.
  9. 제8항에 있어서,
    상기 네트워크 소속 노드는,
    상기 제3무빙 어카운트의 홈샤드 정보를 기반으로 상기 제3홈샤드 소속 노드로부터 상기 제3무빙 어카운트의 현재 워킹샤드 정보를 획득하는 현재 워킹샤드 정보 획득부를 더 포함하고,
    상기 워킹샤드 정보 변경 요청 발송부는 상기 제3무빙 어카운트의 현재 워킹샤드 정보와 상기 제3무빙 어카운트의 도착지 워킹샤드 정보가 일치하지 않으면 상기 제3홈샤드 소속 노드에 워킹샤드 정보 변경 요청을 발송하는,
    블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템.
  10. 제8항에 있어서,
    상기 네트워크 소속 노드는,
    상기 제3무빙 어카운트의 현재 워킹샤드 정보와 상기 제3무빙 어카운트의 도착지 워킹샤드 정보가 일치하면 상기 제3무빙 어카운트의 워킹샤드 변경 절차를 종료하는, 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템.
  11. 제8항에 있어서,
    상기 홈샤드 정보 획득부는,
    상기 제3무빙 어카운트의 주소 정보와 상기 블록체인 네트워크의 총 샤드 개수 정보를 파라미터로 하는 함수를 이용하여 상기 제3무빙 어카운트의 홈샤드 정보를 획득하는,
    블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템.
  12. 제8항에 있어서,
    상기 네트워크 소속 노드는 상기 제3출발지 워킹샤드 소속 노드 및 상기 제3홈샤드 소속 노드와 피투피 통신하는,
    블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템.
  13. 블록체인 네트워크를 구성하는 네트워크 소속 노드에서, 적어도 하나의 프로세서에 의해 구현되는 어카운트의 워킹샤드 변경 방법에 있어서,
    상기 네트워크 소속 노드는 제1무빙 어카운트의 출발지 워킹샤드 소속 노드이며, 상기 제1무빙 어카운트의 제1홈샤드 소속 노드 및 상기 제1무빙 어카운트의 제1도착지 워킹샤드 소속 노드와 통신하여 상기 제1무빙 어카운트의 워킹샤드 변경 절차를 수행하며,
    상기 방법은,
    상기 제1무빙 어카운트의 워킹샤드가 변경되는 지를 감지하는 단계; 및
    상기 제1도착지 워킹샤드 소속 노드에 상기 제1무빙 어카운트의 워킹샤드 변경 요청을 하는 단계;
    를 포함하는, 블록체인 네트워크에서 어카운트의 워킹샤드 변경 방법.
  14. 제13항에 있어서,
    상기 제1무빙 어카운트의 홈샤드 정보를 획득하는 단계;
    상기 제1무빙 어카운트의 홈샤드 정보를 기반으로 상기 제1홈샤드 소속 노드로부터 상기 제1무빙 어카운트의 현재 워킹샤드 정보를 획득하는 단계; 및
    상기 제1무빙 어카운트의 현재 워킹샤드 정보가 상기 제1무빙 어카운트의 도착지 워킹샤드 정보와 일치하지 않으면 상기 제1도착지 워킹샤드 소속 노드에 상기 제1무빙 어카운트의 워킹샤드 변경 요청을 하는 단계;
    를 더 포함하는, 블록체인 네트워크에서 어카운트의 워킹샤드 변경 방법.
  15. 제14항에 있어서,
    상기 제1무빙 어카운트의 현재 워킹샤드 정보가 상기 제1무빙 어카운트의 도착지 워킹샤드 정보와 일치하면 상기 제1무빙 어카운트의 트랜잭션 체인을 비활성화 처리하고 상기 제1무빙 어카운트의 워킹샤드 변경 절차를 종료하는 단계
    를 더 포함하는, 블록체인 네트워크에서 어카운트의 워킹샤드 변경 방법.
  16. 제14항에 있어서,
    상기 제1무빙 어카운트의 홈샤드 정보를 획득하는 단계는,
    상기 제1무빙 어카운트의 주소 정보와 상기 블록체인 네트워크의 총 샤드 개수 정보를 파라미터로 하는 함수를 이용하여 상기 제1무빙 어카운트의 홈샤드 정보를 획득하는 단계
    를 더 포함하는, 블록체인 네트워크에서 어카운트의 워킹샤드 변경 방법.
  17. 제13항에 있어서,
    상기 네트워크 소속 노드는 상기 제1홈샤드 소속 노드 및 상기 제1도착지 워킹샤드 소속 노드와 피투피 통신하는,
    블록체인 네트워크에서 어카운트의 워킹샤드 변경 방법.
  18. 제13항에 있어서,
    상기 네트워크 소속 노드는 상기 제1무빙 어카운트의 출발지 워킹샤드 소속 노드이면서 제2무빙 어카운트의 홈샤드 소속 노드이며, 상기 제2무빙 어카운트의 제2출발지 워킹샤드 소속 노드 및 상기 제2무빙 어카운트의 제2도착지 워킹샤드 소속 노드와 통신하여 상기 제2무빙 어카운트의 워킹샤드 변경 절차를 수행하고,
    상기 방법은,
    상기 제2출발지 워킹샤드 소속 노드 및 제2도착지 워킹샤드 소속 노드 중 적어도 하나의 정보 요청 노드로부터 상기 제2무빙 어카운트의 현재 워킹샤드 정보 요청이 수신되는 단계;
    상기 제2무빙 어카운트의 현재 워킹샤드 정보를 어카운트 디렉토리에서 검색하는 단계;
    상기 검색된 제2무빙 어카운트의 현재 워킹샤드 정보를 상기 정보 요청 노드에게 발송하는 단계;
    상기 제2도착지 워킹샤드 소속 노드로부터 워킹샤드 정보 변경 요청이 수신되는 단계; 및
    상기 어카운트 디렉토리의 상기 제2무빙 어카운트의 현재 워킹샤드 정보를 상기 제2무빙 어카운트의 도착지 워킹샤드 정보로 변경하는 단계;
    를 더 포함하는, 블록체인 네트워크에서 어카운트의 워킹샤드 변경 방법.
  19. 제18항에 있어서,
    상기 네트워크 소속 노드는 상기 제2출발지 워킹샤드 소속 노드 및 상기 제2도착지 워킹샤드 소속 노드와 피투피 통신하는,
    블록체인 네트워크에서 어카운트의 워킹샤드 변경 방법.
  20. 제13항에 있어서,
    상기 네트워크 소속 노드는 상기 제1무빙 어카운트의 출발지 워킹샤드 소속 노드이면서 제3무빙 어카운트의 도착지 워킹샤드 소속 노드이며, 상기 제3무빙 어카운트의 제3출발지 워킹샤드 소속 노드 및 상기 제3무빙 어카운트의 제3홈샤드 소속 노드와 통신하여 상기 제3무빙 어카운트의 워킹샤드 변경 절차를 수행하며,
    상기 방법은,
    상기 제3출발지 워킹샤드 소속 노드로부터 상기 제3무빙 어카운트의 워킹샤드 변경 요청을 수신하는 단계;
    상기 제3무빙 어카운트의 트랜잭션 체인을 기록하는 단계;
    상기 제3무빙 어카운트의 홈샤드 정보를 획득하는 단계;
    상기 제3무빙 어카운트의 홈샤드 정보를 기반으로 상기 제3홈샤드 소속 노드에 워킹샤드 정보 변경 요청을 발송하는 단계;
    를 더 포함하는, 블록체인 네트워크에서 어카운트의 워킹샤드 변경 방법.
  21. 제20항에 있어서,
    상기 제3무빙 어카운트의 홈샤드 정보를 기반으로 상기 제3홈샤드 소속 노드로부터 상기 제3무빙 어카운트의 현재 워킹샤드 정보를 획득하는 단계; 및
    상기 제3무빙 어카운트의 현재 워킹샤드 정보와 상기 제3무빙 어카운트의 도착지 워킹샤드 정보가 일치하지 않으면 상기 제3홈샤드 소속 노드에 워킹샤드 정보 변경 요청을 발송하는 단계;
    를 더 포함하는, 블록체인 네트워크에서 어카운트의 워킹샤드 변경 방법.
  22. 제21항에 있어서,
    상기 제3무빙 어카운트의 현재 워킹샤드 정보와 상기 제3무빙 어카운트의 도착지 워킹샤드 정보가 일치하면 상기 제3무빙 어카운트의 워킹샤드 변경 절차를 종료하는, 블록체인 네트워크에서 어카운트의 워킹샤드 변경 방법.
  23. 제20항에 있어서,
    상기 제3무빙 어카운트의 홈샤드 정보를 획득하는 단계는,
    상기 제3무빙 어카운트의 주소 정보와 상기 블록체인 네트워크의 총 샤드 개수 정보를 파라미터로 하는 함수를 이용하여 상기 제3무빙 어카운트의 홈샤드 정보를 획득하는,
    블록체인 네트워크에서 어카운트의 워킹샤드 변경 방법.
  24. 제20항에 있어서,
    상기 네트워크 소속 노드는 상기 제3출발지 워킹샤드 소속 노드 및 상기 제3홈샤드 소속 노드와 피투피 통신하는,
    블록체인 네트워크에서 어카운트의 워킹샤드 변경 방법.
KR1020220072023A 2022-06-14 2022-06-14 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법 KR102628759B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220072023A KR102628759B1 (ko) 2022-06-14 2022-06-14 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법
PCT/KR2023/006752 WO2023243881A1 (ko) 2022-06-14 2023-05-18 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220072023A KR102628759B1 (ko) 2022-06-14 2022-06-14 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20230171628A KR20230171628A (ko) 2023-12-21
KR102628759B1 true KR102628759B1 (ko) 2024-01-23

Family

ID=89191554

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220072023A KR102628759B1 (ko) 2022-06-14 2022-06-14 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법

Country Status (2)

Country Link
KR (1) KR102628759B1 (ko)
WO (1) WO2023243881A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210003234A (ko) * 2018-04-27 2021-01-11 엔체인 홀딩스 리미티드 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것
US11620152B2 (en) * 2018-07-20 2023-04-04 Ezblock Ltd. Blockchain sharding with parallel threads
KR102331202B1 (ko) * 2018-11-19 2021-11-26 서강대학교 산학협력단 블록체인 샤딩 환경에서 노드 간 메시지 전달 방법
US20200192880A1 (en) * 2018-12-14 2020-06-18 Samsung Electronics Co., Ltd. Optimal dynamic shard creation in storage for graph workloads
KR20210097560A (ko) * 2020-01-30 2021-08-09 에스케이텔레콤 주식회사 블록체인 트랜잭션 처리 방법

Also Published As

Publication number Publication date
WO2023243881A1 (ko) 2023-12-21
KR20230171628A (ko) 2023-12-21

Similar Documents

Publication Publication Date Title
KR102454779B1 (ko) 이벤트들의 삭제를 가능하게 하는 분산 데이터베이스를 위한 방법 및 장치
EP4209980A1 (en) Computer-implemented system and method for managing a large distributed memory pool in a blockchain network
Li et al. Dynamic resource discovery based on preference and movement pattern similarity for large-scale social internet of things
Hassanzadeh-Nazarabadi et al. Decentralized utility-and locality-aware replication for heterogeneous DHT-based P2P cloud storage systems
Mashreghi et al. Broadcast and minimum spanning tree with o (m) messages in the asynchronous CONGEST model
Bulut et al. Constructing limited scale-free topologies over peer-to-peer networks
KR102596700B1 (ko) 블록체인 네트워크에서 인터샤드 트랜잭션 시스템 및 방법
CN110324415B (zh) 一种对等网络的路由实现方法、装置、设备和介质
Hassanzadeh-Nazarabadi et al. Dht-based communications survey: architectures and use cases
Czirkos et al. Solution for the broadcasting in the Kademlia peer-to-peer overlay
Akavipat et al. ReDS: A framework for reputation-enhanced DHTs
KR102628759B1 (ko) 블록체인 네트워크에서 어카운트의 워킹샤드 변경 시스템 및 방법
Karolewicz et al. On efficient data storage service for IoT
Apolonia et al. SELECT: A distributed publish/subscribe notification system for online social networks
Zhou et al. Mercury: Fast Transaction Broadcast in High Performance Blockchain Systems
KR20240041141A (ko) 블록체인 네트워크에서 어카운트 디렉토리 변경 시스템 및 방법
Alanazi et al. An optimized method for information system transactions based on blockchain
KR20240057605A (ko) 블록체인 네트워크에서 어카운트 생성 시스템 및 방법
KR20240024465A (ko) 블록체인 네트워크에서 다이나믹 샤딩 시스템 및 방법
Pushpalatha et al. Applicability of sub graph centrality to improve data accessibility among peers in MANETs
Kos et al. U-Sphere: Strengthening scalable flat-name routing for decentralized networks
KR20240008624A (ko) 블록체인 네트워크에서 검증 가능 인터샤드 트랜잭션 시스템 및 방법
KR20240063615A (ko) 블록체인 네트워크에서 노드 분배 시스템 및 방법
Ma et al. Distribution aware collaborative spread replication for rare objects in unstructured peer-to-peer networks
Sotiriadis et al. Using self-led critical friend topology based on P2P chord algorithm for node localization within cloud communities

Legal Events

Date Code Title Description
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right