KR102633548B1 - 블록체인에 데이터 블록을 기록하는 방법과, 리더 회계 노드 및 매체 - Google Patents

블록체인에 데이터 블록을 기록하는 방법과, 리더 회계 노드 및 매체 Download PDF

Info

Publication number
KR102633548B1
KR102633548B1 KR1020217016532A KR20217016532A KR102633548B1 KR 102633548 B1 KR102633548 B1 KR 102633548B1 KR 1020217016532 A KR1020217016532 A KR 1020217016532A KR 20217016532 A KR20217016532 A KR 20217016532A KR 102633548 B1 KR102633548 B1 KR 102633548B1
Authority
KR
South Korea
Prior art keywords
blockchain
data block
target data
branch
transaction information
Prior art date
Application number
KR1020217016532A
Other languages
English (en)
Other versions
KR20210080550A (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 텐센트 테크놀로지(센젠) 컴퍼니 리미티드
Publication of KR20210080550A publication Critical patent/KR20210080550A/ko
Application granted granted Critical
Publication of KR102633548B1 publication Critical patent/KR102633548B1/ko

Links

Classifications

    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

블록체인에 데이터 블록을 기록하는 방법, 리더 회계 노드 및 매체가 개시된다. 상기 방법은 타깃 데이터 블록을 생성하는 단계(410); 복수의 브랜치 블록체인 중 아직 컨센서스를 완료하지 못하고 체이닝(chaining)을 기다리는 데이터 블록을 갖는 브랜치 블록체인이 있는지 여부를 판정하는 단계(420); 아직 컨센서스를 완료하지 못하고 체이닝을 기다리는 데이터 블록이 없는 브랜치 블록체인이 있으면, 아직 컨센서스를 완료하지 못하고 체이닝을 기다리는 데이터 블록이 없는 브랜치 블록체인 중에서, 상기 타깃 데이터 블록을 기록하기 위한 브랜치 블록체인을 선택하는 단계(430); 상기 타깃 데이터 블록의 블록 헤더에, 선택된 브랜치 블록체인에 기록된 이전 데이터 블록의 요약 값을 기록하는 단계(440); 및 상기 선택된 브랜치 블록체인에 동일한 것을 기록하기 위해 회계 노드 그룹 중의 다른 회계 노드에 상기 타깃 데이터 블록을 전송하는 단계(450)를 포함한다. 이 방법을 통해, 블록체인에 데이터 블록을 기록하는 효율을 향상시킨다.

Description

블록체인에 데이터 블록을 기록하는 방법과, 리더 회계 노드 및 매체
본 출원은 "METHOD FOR RECORDING DATA BLOCK ON BLOCKCHAIN, AND LEADER ACCOUNTING NODE AND MEDIUM(블록체인에 데이터 블록을 기록하는 방법과, 리더 회계 노드 및 매체)"이라는 명칭으로 2019년 2월 21일에 중국 특허청에 출원된 중국 특허 출원 제201910130823.9호에 대해 우선권을 주장하며, 그 내용 전부는 원용에 의해 본 출원에 통합된다.
본 개시는 블록체인 분야에 관한 것으로, 특히 블록체인에 데이터 블록을 기록하는 것에 관한 것이다.
블록체인 시스템에서 회계 노드(accounting node)는 블록체인에 트랜잭션 정보(transaction information)를 기록해야 하며, 트랜잭션 정보를 리더 회계 노드(leader accounting node)에 송신하고, 리더 회계 노드는 업로딩되어야 하는 트랜잭션 정보를 블록으로 패키징하고, 각각의 블록은 이전 블록의 요약을 저장한다. 이 매커니즘을 통해, 블록들은 직렬로 연결되어 블록체인 구조를 형성하여 변조 방지(tamper-proof)를 달성한다. 이는 블록체인의 현재 블록의 요약이 후속 블록에 기록되기 때문이며, 블록이 변조되면, 후속 블록에 기록된 요약이 현재의 변조된 블록의 요약과 일치하지 않기 때문이다.
본 개시의 목적은 블록체인에 데이터 블록을 기록하는 효율성을 향상시키는 것이다.
본 개시의 일 실시예에 따르면, 블록체인에 데이터 블록을 기록하는 방법이 제공된다. 상기 블록체인은 다수의 블록체인 브랜치(blockchain branch)를 포함하고, 데이터 블록은 동일한 회계 노드 그룹(group of accounting nodes)에 의해 상기 다수의 블록체인 브랜치에 기록된다. 상기 방법은 상기 회계 노드 그룹 중의 리더 회계 노드(leader accounting node)에 의해 수행되고, 상기 방법은,
타깃 데이터 블록(target data block)을 생성하는 단계;
상기 다수의 블록체인 브랜치 중에, 컨센서스(consensus)가 수행되고 있고 업로딩될 데이터 블록을 갖는 블록체인 브랜치가 있는지 여부를 판정하는 단계;
각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들이 있는 경우, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서 상기 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하는 단계;
선택된 블록체인 브랜치에 기록되는 이전 데이터 블록의 요약을 상기 타깃 데이터 블록의 블록 헤더에 기록하는 단계; 및
컨센서스를 수행하기 위해 상기 회계 노드 그룹 중의 다른 회계 노드에 상기 타깃 데이터 블록을 송신하고, 상기 선택된 블록체인 브랜치에 상기 타깃 데이터 블록을 기록하는 단계를 포함한다.
본 개시의 실시예의 다른 측면에 따르면, 블록체인 기록을 위한 리더 회계 노드가 제공된다. 상기 블록체인은 다수의 블록체인 브랜치를 포함하고, 데이터 블록은 동일한 회계 노드 그룹에 의해 상기 다수의 블록체인 브랜치에 기록되고, 상기 리더 회계 노드는 상기 회계 노드 그룹 중에서 선택된다. 상기 리더 회계 노드는, 타깃 데이터 블록 생성 모듈, 결정 모듈, 블록체인 브랜치 선택 모듈, 요약 기록 모듈 및 컨센서스 및 업로딩 모듈을 포함한다. 상기 타깃 데이터 블록 생성 모듈은 타깃 데이터 블록을 생성하도록 구성된다. 상기 결정 모듈은 상기 복수의 블록체인 브랜치 중에, 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖는 블록체인 브랜치가 있는지 여부를 판정하도록 구성된다. 상기 블록체인 브랜치 선택 모듈은, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치가 있는 경우, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서, 상기 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하도록 구성된다. 상기 요약 기록 모듈은 선택된 블록체인 브랜치에 기록되는 이전 데이터 블록의 요약을 상기 타깃 데이터 블록의 블록 헤더에 기록하도록 구성된다. 상기 컨센서스 및 업로딩 모듈은 컨센서스를 수행하기 위해 상기 회계 노드 그룹 중의 다른 회계 노드에 상기 타깃 데이터 블록을 송신하고, 상기 선택된 블록체인 브랜치에 상기 타깃 데이터 블록을 기록하도록 구성된다.
본 개시의 실시예의 일 측면에 따르면, 리더 회계 노드가 제공되며, 상기 리더 회계 노드는 메모리 및 프로세서를 포함한다. 상기 메모리는 컴퓨터로 판독 가능한 명령어를 저장하도록 구성되고, 상기 프로세서는 상기 메모리에 저장된, 상기 컴퓨터로 판독 가능한 명령어를 판독하여 전술한 측면에 따른 방법을 수행하도록 구성된다.
본 개시의 실시예의 일 측면에 따르면, 컴퓨터로 판독 가능한 명령어가 저장되어 있는 컴퓨터 프로그램 매체가 제공된다. 상기 컴퓨터로 판독 가능한 명령어는 컴퓨터의 프로세서에 의해 실행될 때, 컴퓨터로 하여금 전술한 측면에 따른 방법을 수행하게 한다.
본 개시의 실시예에서, 블록체인은 다수의 블록체인 브랜치를 포함하고, 데이터 블록은 동일한 회계 노드 그룹에 의해 블록체인 브랜치에 기록된다. 이러한 방식으로, 블록체인에 타깃 데이터 블록을 업로딩하기 위해, 타깃 데이터 블록은 컨센서스가 수행되고 있고 업로딩될 데이터 블록이 없는 블록체인 브랜치에 업로딩될 수 있다. 이전 데이터 블록의 요약이 블록 헤더에 기록될 때, 전체 블록체인의 이전 데이터 블록의 요약이 아니라, 선택된 블록체인 브랜치상의 (컨센서스가 완료되고 대기할 필요가 없는) 이전에 기록된 데이터 블록의 요약이 타깃 데이터 블록의 블록 헤더에 기록된다. 종래 기술에서는 전체 블록체인의 이전 데이터 블록에 대한 컨센서스가 완료된 후에만 이전 데이터 블록의 요약을 획득할 수 있으며, 그런 다음 요약은 타깃 데이터 블록의 블록 헤더에 기록되고, 이전 데이터 블록에 대한 컨센서스가 완료되지 않으면, 대기가 필요하다. 그러나 본 개시의 상기한 방식에서는 종래 기술의 낮은 효율은 회피할 수 있다. 다중 블록체인 브랜치 방식에서는, 블록 업로딩 프로세스를 어느 정도 병렬로 수행할 수 있어, 시스템 업로딩 효율을 향상시킬 수 있다. 여러 블록체인 브랜치가 동일한 회계 노드 그룹에 의해 회계 처리되므로, 블록체인 브랜치가 동일한 프로세스에서 유지되도록 보장된다. 각각의 회계 노드에는 회계 노드 그룹에 의해 기록되는 데이터의 모든 이력 정보를 가지고 있으므로, 서로 다른 블록체인에 기록하는 것에 의한 데이터 불완전한 데이터 정보의 단점을 회피할 수 있다.
본 개시의 다른 특징 및 장점은 이하의 상세한 설명을 통해 명백해지거나 본 개시의 실시를 통해 부분적으로 학습된다.
이상의 일반적인 설명 및 이하의 상세한 설명은 단지 예시일 뿐이며 본 개시를 한정하지 않음을 이해해야 한다.
본 개시의 상기 및 다른 목적, 특징 및 장점은 도면을 참조하여 이루어진 본 발명의 예시적인 실시예에 대한 상세한 설명으로부터 더욱 명백해질 것이다.
도 1a ∼ 도 1c는 본 개시의 일 실시예에 따른 블록체인에 데이터 블록을 기록하는 방법의 시스템 아키텍처를 나타낸 도면이다.
도 2a ∼ 도 2e는 전자 송장(electronic invoice)이 블록체인에 업로딩되는 애플리케이션 시나리오에서 블록체인에 데이터 블록을 기록하는 방법을 수행하는 과정에서 생성되는 인터페이스를 나타낸 도면이다.
도 3a는 종래 기술의 데이터 블록을 기록하기 위한 단일 블록체인 구조의 개략도이고; 도 3b는 본 개시의 일 실시예에 따른 데이터 블록을 기록하기 위한 다중 블록체인 브랜치 구조의 개략도이다.
도 4a는 종래 기술의 블록체인의 데이터 블록 구조의 개략도이고; 도 4b는 본 개시의 일 실시예에 따른 블록 헤더의 데이터 구조의 개략도이다.
도 5a는 종래 기술의 데이터 블록 구조에서 트랜잭션 정보의 입력과 출력 사이의 링크 관계를 도시하고; 도 5b는 본 개시의 일 실시예에 따른 데이터 블록 구조에서 트랜잭션 정보의 입력과 출력 사이의 링크 관계를 나타낸다.
도 6은 본 개시의 일 실시예에 따라 블록체인에 데이터 블록을 기록하는 시간 시퀀스를 나타낸 시간-시퀀스 도면이다.
도 7은 본 개시의 일 실시예에 따른 다중 블록체인 브랜치 구조에서 데이터 블록을 기록하는 프로세스를 나타낸 개략도이다.
도 8은 다차원 행렬로 배열된 다수의 블록체인 브랜치를 나타낸 개략도이다.
도 9는 본 개시의 일 실시예에 따른 블록체인에 데이터 블록을 기록하는 방법의 흐름도이다.
도 10은 본 개시의 일 실시예에 따른 단계 430의 흐름도이다.
도 11은 본 개시의 일 실시예에 따른 단계 4303의 흐름도이다.
도 12는 본 개시의 일 실시예에 따른 단계 450의 흐름도이다.
도 13은 본 개시의 일 실시예에 따른 다른 회계 노드가 타깃 데이터 블록에 대한 검증 결과를 생성하는 프로세스의 흐름도이다.
도 14는 본 개시의 일 실시예에 따른 리더 회계 노드를 결정하는 프로세스의 흐름도를 나타낸다.
도 15는 본 개시의 일 실시예에 따른 리더 회계 노드의 모듈을 나타낸 도면이다.
도 16은 본 개시의 일 실시예에 따른 리더 회계 노드의 하드웨어를 나타낸 도면이다.
도면을 참조하여 예시적인 실시예를 종합적으로 설명된다. 다만, 예시적인 실시예는 다양한 형태로 구현될 수 있으며 여기에서 설명하는 예에 한정되는 것으로 이해되지 않는다. 또한, 예시적인 실시예는 본 발명의 설명을 보다 종합적이고 완전하게 만들고, 예시적인 실시예의 사상을 당업자에게 완전하게 전달하기 위해 제공된다. 도면은 단지 본 개시의 예시일 뿐이며 반드시 일정한 비율로 그려진 것은 아니다. 도면에서 동일한 참조부호는 동일하거나 유사한 부분을 나타내므로 중복되는 설명은 생략한다.
또한, 기재된 특징, 구조 또는 특성은 임의의 적절한 방식으로 하나 이상의 예시적인 실시예에서 조합될 수 있다. 이하의 설명에서, 본 개시의 예시적인 실시예의 종합적인 이해를 제공하기 위해 많은 구체적인 특정 세부 사항이 제공된다. 그러나 당업자는 본 개시의 기술적 방안이 하나 이상의 특정 세부사항 없이 구현될 수 있거나, 다른 방법, 구성요소, 단계 등이 사용될 수 있음을 알아야 한다. 다른 경우에, 잘 알려진 구조, 방법, 구현 또는 동작은 본 개시의 측면을 모호하게 하는 것을 피하기 위해 상세히 도시되거나 설명되지 않는다.
도면에 도시된 블록도는 기능 엔티티를 나타내며 물리적으로 또는 논리적으로 독립된 개체에 반드시 대응하는 것은 아니다. 이러한 기능 엔티티는 소프트웨어의 형태로 구현되거나, 하나 이상의 하드웨어 모듈 또는 집적 회로로 구현되거나, 다른 네트워크 및/또는 프로세서 장치 및/또는 마이크로컨트롤러 장치로 구현될 수 있다.
도 1a ∼도 1c를 참조하여 본 개시의 실시예가 적용되는 시스템 아키텍처 및 전체 프로세스를 이하에 먼저 설명한다.
도 1a에 도시된 시스템 아키텍처에서, 회계 노드 그룹(100)은 다수의 회계 노드(101)를 포함하고, 다수의 회계 노드(101) 중에 리더 회계 노드(102)가 있다. 리더 회계 노드(102)는 고정될 수 있거나, 회계 노드(101)로부터 주기적으로 선택될 수 있다. 도 1a에 도시된 시스템 아키텍처에서, 각 회계 노드(101)는 또한 트랜잭션 정보를 생성하기 위한 생성기 노드(generator node), 즉 트랜잭션 정보 생성기 회계 노드(103)이다.
트랜잭션 정보 생성기 회계 노드(103)는 블록체인(200)에 기록되어야 할 트랜잭션 정보를 생성하고, 트랜잭션 정보를 리더 회계 노드(102)에 송신한다. 리더 회계 노드(102)는 트랜잭션 정보를 블록체인에 즉시 업로딩하는 대신 트랜잭션 정보를 버퍼링한 다음, 패키징 조건(예: 버퍼링된 트랜잭션 정보가 미리 설정된 개수 또는 미리 설정된 크기를 가짐)이 충족되는 경우, 업로딩을 위해 트랜잭션 정보를 패킷으로 패키징한다. 블록체인(200)이 세 개(도 1a는 세 개의 블록체인 브랜치를 도시하지만, 다른 개수의 블록체인 브랜치가 있을 수 있음)의 블록체인 브랜치(201)를 포함하기 때문에, 리더 회계 노드(102)는 패킷이 기록될 블록체인 브랜치(201)를 결정해야 한다. 종래 기술에서, 타깃 데이터 블록의 이전 데이터 블록은 블록체인 브랜치 1에 기록될 것이고 이전 데이터 블록에 대한 컨센서스가 완료되지 않았으면, 이전 데이터 블록에 대한 컨센서스가 완료되는 경우에만 결정될 수 있고, 그런 다음 타깃 데이터 블록의 블록 헤더에 요약이 채워진다. 결과적으로, 업로딩 효율이 낮다. 도 1a에는 세 개의 블록체인 브랜치가 있으며, 블록체인 브랜치 1을 제외하고는, 블록체인 브랜치 2의 마지막 데이터 블록과 블록체인 브랜치 3의 마지막 데이터 블록에 대한 컨센서스가 완료되었으므로, 블록체인 브랜치 2와 블록체인 브랜치 3 중 어느 하나가 업로드딩을 위해 선택될 수 있다. 두 블록체인 브랜치의 마지막 데이터 블록에 대한 컨센서스가 완료되었기 때문에, 데이터 블록의 요약이 결정되며, 이러한 방식으로, 요약이 타깃 데이터 블록의 블록 헤더에 채워지고, 타깃 데이터 블록이 컨센서스를 수행하기 위해 회계 노드 그룹(100) 중의 다른 회계 노드(101)에 송신되고, 그 후 컨센서스가 완료되면 타깃 데이터 블록이 선택된 블록체인 브랜치에 업로딩되어, 블록 업로드의 효율을 향상시킨다.
도 1b는 본 개시의 일 실시예에 따라, 블록체인에 데이터 블록을 기록하는 방법이 적용되는 다른 시스템 아키텍처를 나타낸다. 도 1b는 회계 노드 그룹(100)이 트랜잭션 정보를 생성하기 위한 생성기 노드로서 기능하지 않는다는 점에서 도 1a와 다르다. 트랜잭션 정보 생성기 노드(104)는 회계 노드 그룹(100)의 외부에 위치하고, 각각의 트랜잭션 정보 생성기 노드(104)는 회계 노드 그룹(100)의 회계 노드(101)에 대응한다. 업로딩되어야 하는 트랜잭션 정보를 생성하는 경우, 트랜잭션 정보 생성기 노드(104)는 트랜잭션 정보를 대응하는 회계 노드(101)에 송신하고, 대응하는 회계 노드(101)는 트랜잭션 정보를 리더 회계 노드(102)에 송신한다. 리더 회계 노드에 의한 패키징 및 업로딩 프로세스는 도 1a에 도시된 것과 동일하며, 세부 사항을 다시 설명하지 않는다.
도 1b에서, 트랜잭션 정보 생성기 노드(104)는 회계(블록체인에 데이터 블록 업로딩)에 대한 권한이 없고, 또한 회계 노드(101)의 어떠한 회계 행위에 대해서도 검증 및 목격(verification and witness)을 수행할 수 없으므로, 트랜잭션 정보 생성기 노드(104)는 회계 노드(101)를 완전히 신뢰할 수 있을 뿐이다.
도 1c에서, 트랜잭션 정보 생성기 서비스 노드(106)는 또한 회계 노드 그룹(100)의 외부에 위치한다. 도 1b에서, 트랜잭션 정보 생성기 서비스 노드(106)는 서비스 노드 그룹(107)을 형성한다. 서비스 노드 그룹(107)에서, 트랜잭션 정보 생성기 서비스 노드(106)는 회계(데이터 블록을 블록체인에 업로딩)에 대한 권한이 없지만, 트랜잭션 정보 생성기 서비스 노드(106)는 회계 노드(101)의 회계 행위에 대한 검증 및 증명을 수행할 수 있다.
구체적으로, 트랜잭션 정보 생성기 서비스 노드(106)가 업로드되어야 할 트랜잭션 정보를 가지고 있는 경우, 트랜잭션 정보 생성기 서비스 노드(106)는 트랜잭션 정보를 프록시 노드(105)에 송신한다. 프록시 노드(105)는 회계 노드 그룹(100)과 서비스 노드 그룹(107) 사이의 인터페이스로서 사용되는 서비스 노드 그룹(107) 중의 노드이다. 프록시 노드(105)는 회계 노드 그룹(100) 중의 회계 노드(102)에 트랜잭션 정보를 송신하고, 회계 노드(102)는 트랜잭션 정보를 리더 회계 노드(102)에 송신한다. 리더 회계 노드(102)에 의한 패키징 및 업로딩 프로세스는 도 1a에 도시된 것과 동일하며, 세부 사항을 다시 설명하지 않는다.
데이터 블록을 업로딩하는 경우, 리더 회계 노드(102)는 데이터 블록의 블록 본체에 대해 요약 연산(abstract operation)을 수행함으로써 획득되는 요약과, 리더 회계 노드(102)의 개인 키를 사용하여 요약을 암호화함으로써 획득되는 서명을 블록 헤더에 기록한다. 데이터 블록을 블록체인에 업로딩한 후, 리더 회계 노드(102)는 데이터 블록의 블록 헤더를 프록시 노드(105)를 통해 트랜잭션 정보 생성기 서비스 노드(106)에 송신한다. 트랜잭션 정보 생성기 서비스 노드(106)는 각각 리더 회계 노드(102)의 공개 키를 사용하여 서명을 암호해독하여 요약을 획득하고, 획득된 요약을 블록 헤더에 포함된 요약과 비교한다. 획득된 요약이 블록 헤더에 포함된 요약과 동일하면, 서명 검증이 통과되고; 획득된 요약이 블록 헤더에 포함된 요약과 다르면, 서명 검증이 통과되지 못한다. 이러한 방식으로, 회계 노드(101)의 회계에 대한 검증을 수행함으로써 모든 회계 노드(101)의 커뮤니티 부정 행위를 방지할 수 있다. 따라서, 도 1c의 시스템 아키텍처는, 트랜잭션 정보 생성기 서비스 노드(106)가 회계 노드(101)를 수동적으로 신뢰하는 대신에 회계 노드(101)의 회계 행위를 목격할 수 있다는 점에서 도 1b의 시스템 아키덱처와 다르다.
도 2a ∼ 도 2e는 전자 송장이 블록체인에 업로드되는 애플리케이션 시나리오에서 블록체인에 데이터 블록을 기록하는 방법을 수행하는 과정에서 생성되는 인터페이스를 나타낸 도면이다.
전자 송장을 한 당사자에서 다른 당사자에게 전송하는 프로세스는 전자 송장의 하나의 트랜잭션으로 간주된다. 트랜잭션과 관련된 정보를 트랜잭션 정보라고 한다. 과세 단말기(taxing terminal)가 전자 송장을 송장 발행 단말기(invoice issuing terminal)에 발표함으로써, 발표 트랜잭션이 수행되고, 전자 송장을 발표하는 트랜잭션 정보는 블록체인에 기록되어야 한다. 송장 발행 단말기는 개인 결제 단말기(personal settlement terminal)에 전자 송장을 발행하므로, 전자 송장 발행 트랜잭션이 이루어지며, 전자 송장의 발행 트랜잭션 정보가 블록체인에 기록되어야 한다. 개인 송장 결제 단말기와 결제 당사자 단말기가 결제를 수행하므로, 전자 송장에 대한 결제의 트랜잭션이 수행되며, 결제의 트랜잭션 정보는 블록체인에 기록되어야 한다. 상기한 어떠한 경우에도, 트랜잭션 정보를 블록체인에 업로딩해야 한다.
리더 회계 노드(102)는 타깃 데이터 블록에 기록되어야 하는 트랜잭션 정보를 수신한 후, 즉시 트랜잭션 정보를 즉시 패키징하여 트랜잭션 정보를 업로딩하지 않고, 대신, 리더 회계 노드(102)는 타깃 데이터 블록에 기록되어야 하는 트랜잭션 정보가 미리 설정된 크기 또는 미리 설정된 개수를 가진 경우에 트랜잭션 정보를 타깃 데이터 블록으로 패키징한다. 타깃 데이터 블록에 기록되어야 하는 트랜잭션 정보가 미리 설정된 크기를 갖는 경우, 도 2a에 도시된 인터페이스가 리더 회계 노드(102)에 제시되어, "업로딩되어야 하는 전자 송장의 트랜잭션 정보는 미리 설정된 패키징 크기를 가지며, 패키징이 수행될 수 있다"것을 프롬프트한다.
관리자가 도 2a에 도시된 인터페이스에서 "OK" 아이콘을 클릭하면, 기록을 위한 블록체인 브랜치가 선택된다. 블록체인에서는, 이전 데이터 블록이 블록체인 브랜치 1에 기록되고 이전 데이터 블록에 대한 컨센서스가 완료되지 않았다. 타깃 데이터 블록이 블록체인 브랜치 1에도 기록되어야 하면, 이전 데이터 블록에 대한 컨센서스가 완료될 때까지 대기해야 하며, 그 후 이전 데이터 블록의 요약이 타깃 데이터 블록의 블록 헤더에 기록될 수 있어, 낮은 업로딩 효율을 초래한다. 따라서, 블록체인 브랜치는 마지막 데이터 블록에 대한 컨센서스가 완료된 두 개의 블록체인 브랜치, 즉, 블록체인 브랜치 2와 3 중에서 선택될 수 있다, 예를 들어 블록체인 브랜치 2가 선택될 수 있다. 블록체인 브랜치 2의 마지막 데이터 블록의 요약은 타깃 데이터 블록의 블록 헤더에 직접 기록될 수 있으며, 타깃 데이터 블록은 블록체인 브랜치 2에 기록된다. 이러한 방식으로, 이전 데이터 블록에 대한 컨센서스가 완료될 때까지 블록 본체를 채울 요약의 획득을 기다리는 것을 피할 수 있다. 이 경우에, 도 2b에 도시된 인터페이스는 "이전 데이터 블록이 블록체인 브랜치 1에 기록될 것이고 현재 생성된 타깃 데이터 블록은 블록체인 브랜치 2에 기록될 것"을 프롬프트하기 위해 제시된다.
관리자가 도 2b에 도시된 인터페이스에서 "OK" 아이콘을 클릭하면, 도 2c에 도시된 인터페이스가 "블록체인 브랜치 2의 이전 데이터 블록의 요약이 타깃 데이터 블록의 블록 헤더에 기록되었고, 컨센서스를 수행하기 위해 타깃 데이터 블록을 다른 회계 노드로 전송할지 여부"를 프롬프트하기 위해 제시된다. 관리자가 "OK"아이콘을 클릭하면, 타깃 데이터 블록이 컨센서스를 수행하기 위해 다른 회계 노드에 전송되고, 현재 회계 노드는 블록체인에 타깃 데이터 블록을 기 록한다.
다른 회계 노드들에 의해 컨센서스가 성공적으로 수행되고 있는 경우, 도 2d에 도시된 인터페이스는 "다른 회계 노드가 컨센서스를 성공적으로 수행하고 있고, 업로딩을 수행할지 여부"를 프롬프트하기 위해 제시된다. 관리자가 "OK" 아이콘을 클릭하면, 다른 회계 노드가 블록체인에 타깃 데이터 블록을 기록한다.
업로딩한 후, 도 2e에 도시된 인터페이스가 "업로드딩 완료"를 프롬프트하기 위해 제시된다.
이하에서는 도 3a 및 도 3b를 참조하여 본 발명의 일 실시예에 따른 다중 블록체인 브랜치 구조에서 데이터 블록을 기록하는 방법과 종래 기술의 단일 블록체인 구조에서 데이터 블록을 기록하는 방법의 차이점을 설명한다.
도 4a에 도시된 바와 같이, 데이터 블록의 데이터 구조는 블록 헤더(301)와 블록 본체(302)를 포함한다. 블록 본체(302)는 블록체인에 업로드된 모든 트랜잭션 정보를 포함하며, 이는 블록체인에 업로드되는 필수 콘텐츠를 나타낸다. 블록 헤더(301)는 블록체인에 업로드되는 추가 정보(예: 식별자 정보)를 실어 전달한다. 블록 헤더(302)는 적어도 두 종류의 콘텐츠, 즉 타깃 데이터 블록의 블록 본체의 요약과 이전 데이터 블록의 요약을 블록체인에 기록해야 한다. 타깃 데이터 블록의 블록 본체의 요약은 현재 데이터 블록을 유일하게 나타내는 식별자이며, 조회의 편의를 위해 기록된다. 블록체인의 이전 데이터 블록의 요약은 각각의 블록이 이전 블록과 관련된 내용을 포함할 수 있도록 기록되고, 블록 자체의 콘텐츠도 다음 블록에 포함되어, 변조 방지(tamper-proof) 목적을 달성한다. 블록체인상의 한 블록이 개인적으로 변조되면, 이전 블록의 블록 헤더에 있는 내용이 현재 블록의 블록 헤더에 있는 내용과 매칭되지 않아, 쉽게 감지된다.
따라서, 도 3a에 도시된 바와 같이, 종래의 단일 블록체인 구조에서, 각각의 데이터 블록의 블록 헤더는 이전 데이터 블록의 요약으로 채워져야 하기 때문에, 이전 데이터 블록에 대한 컨센서스가 완료되기 전에는 타깃 데이터 블록의 필드를 결정할 수 없다. 이 경우, 이전 데이터 블록에 대한 컨센서스가 완료된 후에만 타깃 데이터 블록을 업로딩할 수 있다. 도 3a에 도시된 바와 같이, 컨센서스가 수행되고 있는 데이터 블록(204)은 이전 데이터 블록이 업로드된(컨세서스 완료된) 데이터 블록(203)이 된 후에만 업로딩될 수 있다.
본 개시의 실시예에서, 도 3b에 도시된 바와 같이, 블록체인은 블록체인 브랜치 1 ∼ 5로 분할된다. 도 3b에서 곡선은 블록체인 브랜치 중에서 각각의 블록체인 브랜치가 업로드를 위해 선택되는 순서를 나타낸다. 10개의 데이터 블록(203)이 블록체인에 이미 업로드되었고, 데이터 블록(204)에 대한 컨센서스가 수행되고 있으며, 데이터 블록(204)이 블록체인 브랜치 1에 기록될 경우, 후속하여 업로딩될 데이터 블록(205)은 블록체인 브랜치 1에는 기록되지 않을 것이고, 컨센서스가 수행되고 있는 데이터 블록이 없는 블록체인 브랜치 2, 3, 4, ... 각각에 연속적으로 기록된다. 이는 데이터 블록(205)이 블록체인 브랜치 1에 기록될 경우, 데이터 블록(204)에 대한 컨센서스가 완료되고 업로딩을 위해 현재 데이터 블록(205)의 블록 헤더에 기록되는 경우에만 데이터 블록(204)의 요약이 획득될 수 있기 때문이다. 업로드를 위한 블록(205)은 대기 시간이 길고 처리가 병렬로 수행될 수 없어 효율이 낮아진다. 업로딩될 데이터 블록이 블록체인 브랜치 2, 3, 4에 연속적으로 기록되면 문제가 해결될 수 있는데, 이는 각각의 블록체인 브랜치의 마지막 데이터 블록에 대한 컨센서스가 완료되고, 블록체인 브랜치의 마지막 데이터 블록의 요약은 업로드될 데이터 블록의 블록 헤더에 기록될 수 있다. 따라서 데이터 블록을 블록체인 브랜치에 신속하게 기록할 수 있어 업로딩의 효율을 높일 수 있다.
도 9에 도시된 바와 같이, 본 개시의 일 실시예에 따르면, 블록체인에 데이터 블록을 기록하는 방법이 제공된다. 이 방법은 도 1a ∼ 도 1a의 리더 회계 노드(102)에 의해 수행된다. 리더 회계 노드는 고정되거나 주기적으로 선택될 수 있다. 이하에서는 리더 회계 노드(102)를 선택하는 방법을 상세히 설명한다.
이 실시예에서, 블록체인은 다수의 블록체인 브랜치를 포함한다. 블록체인 브랜치는, 모든 데이터 블록이 동일한 회계 노드 그룹에 의해 기록되고, 모든 데이터 블록이 동일한 프로세스를 점유하는 블록체인을 분할함으로써 획득된다.
동일한 프로세스는 블록체인 브랜치의 분포가 균일하게 계획되고, 각각의 블록체인 브랜치에 기록된 데이터 블록도 전체 스케줄링 순서로 기록된다는 것을 나타내며, 이는 서브 블록체인(sub-blockchain)의 개념과는 대조적이다. 서브 블록체인은, 데이터 블록이 서로 다른 회계 노드 그룹에 의해 기록되고 서로 다른 프로세스를 점유하는 블록체인을 분할하여 획득된다. 예를 들어, 서브 블록체인 1, 2, 3은 각각 공급망 금융, 전자 송장 및 법적 디지털 통화의 트랜잭션의 데이터 블록을 기록할 수 있으며, 데이터 블록은 공급망 금융, 전자 송장 및 법적 디지털 통화의 트랜잭션의 데이터 블록을 각각 기록하는 회계 노드 그룹 1, 회계 노드 그룹 2 및 회계 노드 그룹 3을 사용하여 블록체인에 업로딩된다. 각각의 회계 노드 그룹을 사용하여 각각의 데이터 블록이 블록체인에 업로딩되는 순서도 서로 독립적이며 서로 영향을 주지 않는다. 반대로, 블록체인 브랜치 1, 2, 3은 동일한 회계 노드 그룹을 사용하여 기록을 수행하며, 블록체인 브랜치 1, 2, 3에 데이터 블록이 기록되는 순서도 데이터 블록이 회계 노드 그룹에서 생성되는 순서에 의해 영향을 받는다. 데이터 블록이 블록체인 브랜치에 기록되는 순서는 독립적이지 않으며, 전체 블록체인에서 데이터 블록이 생성되는 순서에 의해 제어된다.
도 9에 도시된 바와 같이, 이 실시예에서, 상기 방법은 다음 단계를 포함한다:
단계 410, 타깃 데이터 블록 생성한다.
단계 420, 다수의 블록체인 브랜치 중에, 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖는 블록체인 브랜치가 있는지를 결정한다.
단계 430, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 브랜치 블록체인들이 있는 경우, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 브랜치 블록체인들 중에서 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택한다.
단계 440, 선택된 블록체인 브랜치에 기록되어 있는 이전 데이터의 요약을 타깃 데이터 블록의 블록 헤더에 기록한다.
단계 450, 컨센서스를 수행하기 위해 회계 노드 그룹 중의 다른 회계 노드에 타깃 데이터 블록을 송신하고, 선택된 블록체인 브랜치에 타깃 데이터 블록을 기록한다.
이하에서는 상기 단계들을 상세하게 설명된다.
단계 410에서, 타깃 데이터 블록이 생성된다.
타깃 데이터 블록은 블록체인에 업로드되어야 하는, 업로딩될 트랜잭션 정보를 포함한다. 일 실시예에서, 타깃 데이터 블록에 기록되어야 하는 트랜잭션 정보를 수신한 후, 리더 회계 노드(102)는 업로드를 위해 트랜잭션 정보를 즉시 패키징하지 않고, 대신에, 리더 회계 노드(102)는 타깃 데이터 블록에 기록되어야 하는 트랜잭션 정보가 미리 설정된 조건을 충족하는 경우, 예를 들어 미리 설정된 크기 또는 미리 설정된 개수를 갖는 경우에만 트랜잭션 정보를 타깃 데이터 블록에 패키징한다.
단계 420에서, 컨센서스가 수행되고 있고 다수의 블록체인 브랜치에 업로딩될 데이터 블록을 갖는 블록체인 브랜치가 있는지 여부를 결정한다.
회계 노드 그룹에 의해 업로드되어야 하는 데이터 블록은 리더 회계 노드에 의해 블록체인에 업로드되어야 한다. 따라서, 리더 회계 노드는 블록체인 브랜치 중에, 어느 블록체인 브랜치가 컨센서스가 수행되고 있는 데이터 블록을 가지고, 어느 블록체인 브랜치가 컨센서스가 수행되고 있는 데이터 블록을 가지고 있지 않는지를 명확하게 알고 있다. 일 실시예에서, 리더 회계 노드에서 각각의 블록체인 브랜치에 대해 컨센서스 식별 비트가 설정될 수 있다. 데이터 블록이 생성되고 데이터 블록이 기록되는 블록체인 브랜치가 선택될 때마다, 선택한 블록체인 브랜치에 대응하는 컨센서스 식별 비트가 1로 설정된다. 일단 블록체인 브랜치에 대한 컨센서스가 완료되면, 블록체인 브랜치에 대응하는 컨센서스 식별 비트가 0으로 설정된다. 이러한 방식으로, 컨센서스 식별 비트가 0인 블록체인 브랜치는 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치이다.
단계 430에서, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치가 있는 경우, 타깃 데이터 블록을 기록하기 위해, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서 하나의 블록체인 브랜치를 선택한다.
데이터 블록이 없는 블록체인 브랜치 중에서 블록체인 브랜치를 선택한다. 타깃 데이터 블록을 기록하기 위해 컨센서스가 수행되고 업로딩될 예정입니다.
타깃 데이터 블록을 기록하기 위해 블록체인 브랜치를 선택하는 한 방식에서, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치세서의 시퀀스 번호의 순서에 따라 선택이 수행된다.
이 실시예에서, 컨센서스가 수행되고 있고 업로딩될 데이터 블록이 없는 블록체인 브랜치들 중에서, 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하는 것은 다음을 포함한다:
각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치ƒR 중에서 제1 블록체인 브랜치들을 결정하는 것 - 제1 블록체인 브랜치 각각의 시퀀스 번호는 제2 블록체인 브랜치의 시퀀스 번호보다 크고, 제2 블록체인 브랜치는 타깃 데이터 블록의 이전 데이터 블록이 기록되는 블록체인 브랜치임 -;
제1 블록체인 브랜치들 중에서, 가장 작은 시퀀스 번호를 갖는 블록체인 브랜치를 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로 선택하는 것; 및
각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중 어느 것도 제2 블록체인 브랜치의 시퀀스 번호보다 큰 시퀀스 번호를 갖지 않는 경우, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서, 가장 작은 시퀀스 번호를 갖는 블록체인 브랜치를 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로 선택하는 것을 포함한다.
각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않으며, 각각이 이전 데이터 블록이 기록되는 블록체인 브랜치보다 시퀀스 번호가 큰 블록체인 브랜치들 중에서 선택이 수행되어, 시퀀스 번호의 오름차순으로 선택이 수행되도록 보장할 수 있다. 각각이 이전 데이터 블록이 기록되는 블록체인 브랜치(즉, 제2 블록체인 브랜치)보다 큰 시퀀스 번호를 가진 제1 블록체인 브랜치들 중에서, 시퀀스 번호가 가장 작은 블록체인 브랜치가 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로 선택되어, 선택하는 동안 블록체인 브랜치의 누락이 없도록 보장한다. 예를 들어, 각각 시퀀스 번호가 1 ∼ 5인 블록체인 브랜치와 각각 시퀀스 번호가 1, 3, 5 인 블록체인 브랜치는 각각이 컨센서스가 수행되고 있는 데이터 블록을 갖지 않는 블록체인 브랜치이다. 이전 데이터 블록이 블록체인 브랜치 2에 업로드되며, 이 경우, 시퀀스 번호 2보다 시퀀스 번호가 큰 블록체인 브랜치 3과 5 사이에서 선택이 수행된다. 시퀀스 번호 3이 더 작기 때문에, 블록체인 브랜치 3이 업로딩을 위해 선택된다.
또한, 시퀀스 번호가 큰 블록체인 브랜치가 선택되고 각각이 컨센서스가 수행되고 있는 데이터 블록을 갖지 않는 블록체인 브랜치들 중에 시퀀스 번호가 더 큰 블록체인 브랜치가 존재하지 않는 경우, 가장 작은 시퀀스 번호를 가진 블록체인 브랜치에서 검출이 수행될 수 있도록 보장하기 위해 순환 메커니즘이 필요하다. 따라서, 이전 데이터 블록이 업로드되는 블록체인 브랜치(즉, 제2 블록체인 브랜치)보다 시퀀스 번호가 큰 블록체인 브랜치가, 각각이 컨센서스가 수행되고 있는 데이터 블록을 갖지 않는 블록체인 브랜치들 중에 존재하지 않으면, 각각이 컨센서스가 수행되고 있고 업로드될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서 가장 작은 시퀀스 번호를 가진 블록체인 브랜치를, 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로서 선택된다, 즉, 가장 작은 시퀀스 번호를 가진 블록체 중에서 선택이 다시 수행된다. 예를 들어, 시퀀스 번호가 각각 1 ∼ 5인 5개의 블록체인 브랜치가 있고, 시퀀스 번호가 1 ∼ 3인 블록체인 브랜치만 컨센서스가 수행되고 있는 데이터 블록이 없다. 이전 데이터 블록은 블록체인 브랜치 4에 업로드되므로, 각각이 컨센서스가 수행되고 있는 데이터 블록을 갖지 않는 블록체인 브랜치들 중에 시퀀스 번호가 4보다 큰 블록체인 브랜치가 없다. 따라서, 시퀀스 번호 1로 돌아가는 프로세스를 수행해야 하며, 업로드를 위해 블록체인 브랜치 1이 선택된다.
본 실시예는 시퀀스 번호의 폴링 방식으로 처리를 수행할 수 있어 편리하고 용이하며 비용이 저렴하다는 이점이 있다.
타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하는 방식으로, 각각의 블록체인 브랜치에 대해 데이터 블록 수의 균형을 맞추는 원리에 따라, 타깃 데이터 블록은 가장 적은 데이터 블록이 기록되어 있는 블록체인 브랜치에 할당된다. 이 실시예에서, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서, 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하는 것은,
각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 각각의 블록체인 브랜치에 기록된 데이터 블록의 수를 결정하는 것; 및
타깃 데이터 블록을 기록하기 위해 가장 적은 데이터 블록이 블록체인 브랜치에 기록되어 있는 블록체인 브랜치를 선택는 것을 포함한다.
일 실시예에서, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치 각각에 기록된 데이터 블록의 수는, 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치 각각에 마지막 데이터 블록의 블록 높이를 조회함으로써 결정될 수 있다. 블록 높이는 기록 시각 순서대로 블록체인 브랜치상의 블록의 시퀀스 번호를 의미한다. 블록체인 브랜치에서는 첫 번째 기록된 데이터 블록의 높이가 1로 설정되고 두 번째 기록된 데이터 블록의 높이가 2로 설정되는 식이다. 이런 방식으로 블록 높이는 블록체인 브랜치에 기록된 데이터 블록의 수를 나타낸다.
이 실시예는 각각의 블록체인 브랜치상의 데이터 블록 수의 균형을 이룰 수 있어 합리적인 자원 사용을 향상시킬 수 있는 이점이 있다.
타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하는 다른 방식에서, 각각의 블록체인 브랜치에 대한 시간 균등화(time equalization)의 기록 원리에 따라, 타깃 데이터 블록은, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들에서 현재 데이터에 대한 마지막 데이터 블록의 기록 시각의 최대 시간 차이를 갖는 블록체인 브랜치에 할당된다. 이 실시예에서, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서, 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하는 것은,
각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 각각의 블록체인 브랜치상의 마지막 데이터 블록의 기록 시각과 현재 시각 사이의 시간 차이를 결정하는 것을 포함한다. 예를 들어, 최대 시간 차이에 대응하는 블록체인 브랜치가 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로서 선택될 수 있다.
리더 회계 노드는 데이터 블록 식별자와 기록 시각 간의 대응 테이블을 저장할 수 있다. 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치상의 마지막 데이터 블록의 기록 시각은 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치상의 마지막 데이터 블록의 식별자에 기초하여 대응관계 표를 검색함으로써 획득될 수 있다.
현재 시각과 마지막 기록된 데이터 블록의 기록 시각의 차이가 가장 큰 블록체인 브랜치를 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로서 선택하는 이점은, 업로딩 시각이 서로 근접한 데이터 블록은 서로 다른 블록체인 브랜치에 분산되어, 각각의 블록체인 브랜치에 기록된 데이터 블록이 서로 가깝지 않은 업로드 시각을 가질 수 있도록 하여, 블록체인 브랜치 간의 데이터 블록 업로드 시각 측면에서 균형을 실현한다.
다른 실시예에서, 도 10에 도시된 바와 같이, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서, 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하는 단계는 다음 단계를 포함한다:
단계 4301, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 각각의 블록체인 브랜치에 기록된 데이터 블록의 수를 결정한다.
단계 4302, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 각각의 블록체인 브랜치상의 마지막 데이터 블록의 기록 시각과 현재 시각 사이의 시간 차이를 결정한다.
단계 4303, 기록된 데이터 블록의 수와 시간 차이에 기초하여, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택한다.
각각의 블록체인 브랜치에 기록된 데이터 블록의 수만을 고려한 실시예 또는 마지막으로 기록된 데이터 블록의 블록 헤더에 현재 시각과 기록 시각의 시간 차이를 고려한 실시예와 비교하면, 본 실시예에서는, 각각의 블록체인 브랜치의 데이터 블록 수의 균형을 고려할 뿐만 아니라 블록체인 브랜치에 서로 다른 시각에 업로딩되는 데이터 블록의 균형도 고려하여, 블록체인 브랜치상의 데이터 블록의 전체 균형을 용이하게 하여, 자원의 협력 활용을 향상시킨다.
도 11에 도시된 바와 같이, 일 실시예에서, 단계 4303은 다음 단계를 포함한다:
단계 43031, 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치 각각에 기록된 데이터 블록의 수에 대한 제1 스코어를 결정한다.
단계 43032: 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치 각각의 시간 차이에 대한 제2 스코어를 결정한다.
단계 43033: 제1 스코어와 제2 스코어의 가중 합에 기초하여, 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 결정한다.
이 실시예에서, 블록체인 브랜치 각각에 기록된 데이터 블록의 수 또는 마지막 기록된 데이터 블록의 블록 헤더에서의 기록 시각과 현재 시각 사이의 시간 차이는 스코어를 부여받고, 블록체인 브랜치 기록 타깃 데이터 블록은 스코어를 사용하여 종합적으로 결정된다. 이러한 방식의 이점은 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 정량적으로 선택하여, 블록체인 브랜치 선택의 정확도를 향상시킬 수 있다는 것이다.
일 실시예에서, 단계 43031은 공식을 사용하여 구현될 수 있다. 블록체인 브랜치에 기록된 데이터 블록 수가 적을 경우, 블록체인 브랜치는 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로 결정될 것으로 더 기대되므로, 블록체인 브랜치에 기록된 데이터 블록 수에 대해 더 높은 제1 스코어가 설정될 수 있다. 따라서 다음 공식을 수립할 수 있다.
S1=a1/(1+P) 공식 1
여기서 S1은 제1 스코어를 나타내고, a1은 경험에 기초하여 미리 설정된 상수이며, P는 블록체인 브랜치에 기록된 데이터 블록의 수를 나타낸다. (1+P)를 분모로 설정하는 이유는 업로딩될 할 블록체인 브랜치에 데이터 블록이 없을 때 분모가 0이되지 않도록 하기 위함이다. 제1 스코어는, 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 각각의 블록체인 브랜치에 대해 식 1에 따라 계산될 수 있다.
공식을 사용하여 제1 스코어를 계산하는 이점은 블록체인 브랜치 선택의 정확도가 향상된다는 것이다.
다른 실시예에서, 단계 43031은 블록체인 브랜치에 기록된 데이터 블록의 수와 제1 스코어 사이의 미리 설정된 대응관계 표을 검색함으로써 구현될 수 있다. 다음은 대응관계 표의 일례이다.
이러한 방식으로, 블록체인 브랜치에 대한 제1 스코어는 블록체인 브랜치에 기록된 데이터 블록의 수와 제1 스코어 사이의 대응관계 표를 검색하여 획득할 수 있다.
테이블 룩업 방식의 이점은 조작이 간단하고 쉽다는 것이다.
일 실시예에서, 단계 43032는 공식을 사용하여 구현될 수 있다. 마지막으로 기록된 데이터 블록의 블록 헤더 내의 기록 시각과 현재 시각 사이의 시간 차이가 크면, 그 블록체인 브랜치는 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로 결정될 것으로 더 기대되어, 마지막으로 기록 데이터 블록의 블록 헤더 내의 기록 시각과 현재 시각 사이의 시간 차이에 더 높은 제2 스코어가 설정될 수 있다. 따라서 다음 공식이 수립될 수 있다.
S2=a2ΔT 공식 2
여기서 S2는 제2 스코어를 나타내고, a2는 경험을 기초하여 미리 설정된 상수이며, ΔT는 마지막으로 기록된 데이터 블록의 블록 헤더 내의 기록 시각과 현재 시각 사이의 시간 차이를 나타낸다. 제2 스코어는 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치 각각에 대해 공식 2에 따라 계산될 수 있다.
유사하게, 다른 실시예에서, 단계 43032는 마지막으로 기록된 데이터 블록의 블록 헤더 내의 기록 시각과 현재 시각 사이의 시간 차이와 제2 스코어 사이의 미리 설정된 대응관계 표를 검색함으로써 구현될 수 있다. 다음은 대응관계 표의 일례이다.
단계 43033에서, 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치는 제1 스코어와 제2 스코어의 가중 합에 기초하여 결정된다.
이 실시예의 이점은, 블록체인 브랜치에 기록된 데이터 블록의 수와, 블록체인 브랜치 선택시 마지막으로 기록된 데이터 블록의 블록 헤더 내의 기록 시각과 현재 시각 사이의 차이의 서로 다른 기여가 고려되도록, 제1 스코어와 제2 스코어에 서로 다른 가중치가 할당되어, 블록체인 브랜치 결정의 정확도를 향상시킨다는 것이다.
일 구현예에서, 제1 스코어와 제2 스코어의 가중 합이 가장 큰 블록체인 브랜치는 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로 결정될 수 있다. 대안으로, 블록체인 브랜치는 제1 스코어와 제2 스코어의 가중 합 또는 가중 평균값이 미리 정해진 가중 합 임계 값을 초과하는 블록체인 브랜치들 중에서 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로서 선택될 수 있다.
단계 440에서, 선택된 블록체인 브랜치에 기록된 이전 데이터 블록의 요약이 타깃 데이터 블록의 헤더에 기록된다.
선택된 블록체인 브랜치에 기록된 이전 데이터 블록은 선택된 블록체인 브랜치에 현재 기록된 마지막 데이터 블록을 의미한다. 마지막 데이터 블록은 블록체인에 업로딩되었고, 마지막 데이터 블록의 요약이 대기 없이 업로딩을 위해 타깃 데이터 블록의 블록 헤더에 즉시 기록될 수 있어, 업로드 효율을 향상시킬 수 있다.
일 실시예에서, 도 4a에서, 블록 헤더는 타깃 데이터 블록의 블록 본체의 요약을 더 포함한다. 블록 본체는 타깃 데이터 블록 내의 모든 트랜잭션 정보를 포함한다. 내용이 다른 블록 본체는 요약이 다르기 때문에, 요약은 데이터 블록을 유일하게 나타낸다. 요약에 기초하여 데이터 블록에 대해 조회를 수행할 수 있다.
이 실시예에서, 단계 440은,
미리 정해진 요약 알고리즘에 따라 타깃 데이터 블록의 블록 본체의 요약을 획득하는 단계; 및
타깃 데이터 블록의 블록 본체의 요약과 선택된 블록체인 브랜치에 기록된 이전 데이터 블록의 요약을 타깃 데이터 블록의 블록 헤더에 기록하는 단계를 포함한다.
단계 450에서, 타깃 데이터 블록은 컨센서스를 수행하기 위해 회계 노드 그룹 중의 다른 회계 노드에 전송되고, 타깃 데이터 블록은 선택된 블록체인 브랜치에 기록된다.
도 3b에 도시된 바와 같이, 선택된 블록체인 브랜치에 타깃 데이터 블록을 기록하는 것은 타깃 데이터 블록이 선택된 블록체인 브랜치의 이전 데이터 블록 다음에 기록된다는 것을 나타내며, 이전 데이터 블록의 요약은 타깃 데이터 블록의 블록 헤더에 기록되며, 타깃 데이터 블록의 요약은 블록체인 브랜치에 기록될 다음 데이터 블록의 블록 헤더에 기록되어, 상호 검증이 필요하고 변조될 수 없는 체인이 형성될 수 있다. 블록체인 브랜치의 블록 높이가 1 증가한다.
일 실시예에서, 각각의 블록체인 브랜치는 식별자를 가진다. 블록체인 브랜치들의 식별자는 서로 다르다. 단계 450은 다음을 포함한다: 선택된 블록체인 브랜치에 기록된 이전 데이터 블록의 요약 및 선택된 블록체인 브랜치의 식별자를 타깃 데이터 블록의 블록 헤더에 기록한다.
실제로, 도 4b에 도시된 바와 같이, 블록 헤더는 선택된 블록체인 브랜치에 기록된 이전 데이터 블록의 요약(hashPrevBlock)과 선택된 블록체인 브랜치의 식별자(nChinaId)를 포함할 수 있을 뿐만 아니라, 요약(도 4b에 도시된, 요약의 한 유형인 머클 트리 루트(Merkle tree root), hashMerkleRoot), 블록체인 버전 번호(nVersion), 블록체인상의 기록 시각(즉, 업로딩 시각, nTime), 및 블록체인 스페셜 마크(nNonce)도 포함한다.
도 4b에서, 종래의 블록 헤더는 블록체인 버전 번호(nVersion), 블록체인 브랜치에 기록된 이전 데이터 블록의 요약(hashPrevBlock), 타깃 데이터 블록의 블록 본체의 요약(HashMerkleRoot), 블록체인상의 기록 시각(즉, 업로드 시간, nTime) 및 블록체인 특수 마크(nNonce)를 포함한다. 본 발명의 실시예에서, 블록 헤더에 블록체인 브랜치의 식별자(nChinaId)를 추가로 기록한다. 그러나 당업자라면 블록체인 버전 번호(nVersion), 블록체인상의 기록 시각(nTime), 록체인 특수 마크(nNonce)는 선택 사항임을 이해해야 한다. 일 실시예에서, 블록 헤더는 위의 어느 것도 포함하지 않을 수 있다. 다른 실시예에서, 블록 헤더는 상기한 것 중 하나 이상을 포함할 수 있다. 다른 실시예에서, 블록 헤더는 또한 상기한 것에 더 하여 다른 필드를 포함할 수 있다.
블록체인 버전 번호(nVersion)는 블록체인 시스템의 버전 번호를 나타낸다. 예를 들어, 전자 송장 정보를 기록하는 블록체인 시스템은 1세대 버전에서 2세대 버전으로 업그레이드될 수 있다. 블록체인 시스템의 네트워킹 방식과 블록체인상의 데이터 블록의 데이터 구조는 업그레이드 후에 변경될 수 있다. 블록체인 버전 번호는 블록 헤더에 기록되므로, 데이터 블록이 블록체인에 업로드되는 블록체인 시스템의 버전을 식별할 수 있다.
블록체인에 기록되는 시각(nTime)은 블록체인에 데이터 블록이 기록되는 시각이다. 리더 회계 노드는 먼저 타깃 데이터 블록이 블록체인에 기록 시각 필드에 업로드되는 시각을 기록 시각의 필드에 채운 다음, 타깃 데이터 블록을 블록체인에 업로딩할 수 있다.
블록체인 특수 마크(nNonce)는 비트 코인 트랜잭션을 식별하기 위해 자주 사용되는 필드를 나타낸다.
블록 헤더는 블록체인 브랜치의 식별자를 포함하므로, 식별자에 따라, 데이터 블록이 그 식별자에 대응하는 블록체인 브랜치에 편리하게 기록될 수 있다. 일 실시예에서, 도 12에 도시된 바와 같이, 단계 450은 다음 단계를 포함한다:
단계 4501, 타깃 데이터 블록을 회계 노드 그룹 중의 다른 회계 노드에 송신한다.
단계 4502, 각각의 다른 회계 노드로부터 타깃 데이터 블록에 대한 검증 결과를 수신한다.
단계 4503, 검증 결과에 기초하여 검증이 성공한 것으로 결정하는 경우, 타깃 데이터 블록을 선택된 블록체인 브랜치에 기록하고 회계 노드 그룹 중의 다른 회계 노드에 선택된 블록체인 브랜치에 타깃 데이터 블록을 기록한 것을 통지하여, 다른 회계 노드는 블록 헤더 내의 블록체인 브랜치 식별자에 기초하여 선택된 블록체인 브랜치에 타깃 데이터 블록을 기록한다.
단계 4501 내지 단계 4503은 이하에 상세하게 설명된다.
단계 4501에서, 타깃 데이터 블록이 회계 노드 그룹 중의 다른 회계 노드에 전송되므로, 회계 노드 그룹 중의 다른 회계 노드는 컨센서스를 수행하기 위해 타깃 데이터 블록에 대한 검증을 수행한다.
단계 4502에서, 타깃 데이터 블록에 대한 검증 결과는 각각의 다른 회계 노드로부터 수신된다.
다른 회계 노드에 의한 타깃 데이터 블록에 대한 검증은 출력 소비 검증, 데이터 블록 서명 검증, 트랜잭션 정보 서명 검증 등을 포함한다.
출력 소비 검증을 이하에 먼저 설명한다.
일 실시예에서, 블록 본체의 트랜잭션 정보는 각각 입력 및 출력을 갖는다. 트랜잭션은 기존 정보가 트랜잭션 정보 생성기 노드에 입력되고, 트랜잭션 정보 생성기 노드가 입력된 정보를 처리하여 트랜잭션 결과 정보를 생성 및 출력하는 프로세스로 이해될 수 있다. 트랜잭션 정보 생성기 노드에 입력된 정보를 입력이라 하고, 트랜잭션 정보 생성기 노드가 출력하는 트랜잭션 결과 정보를 출력이라 한다.
예를 들어, 전자 송장에 관한 애플리케이션 시나리오에서, 과세 단말기가 전자 송장을 송장 발행 단말기에 발표하는 경우, 과세 단말기에 의해 입력되는 발표자 정보(예: 세무서 명칭 및 주소)는 입력 역할을 하고, 전자 송장 발행의 결과로서 일련의 전자 송장 식별자(예: 전자 송장 번호) 및 전자 송장에 기입된 송장 발행 단말기의 정보(청구 당사자 명칭, 납세자 식별 번호, 등)는 출력 역할을 한다.
송장 발행 단말기가 개인 결제 단말기에 전자 송장을 발행하는 경우, 송장 발행 단말기에서 입력된 전자 송장의 정보(예: 발행된 전자 송장의 식별자)는 입력으로 작용한다. 결과적으로 전자 송장 발행시, 전자 송장에 기입된 결제 요청자의 명칭과 연락처가 출력으로 작용한다. 개인 결제 단말기가 결제 당사자 단말기(settlement party terminal)에 결제를 요청하는 경우, 결제 당사자 단말기에서 입력된 결제 요청자의 명칭과 연락처는 입력으로 작용하고, 결제 결과, 결제 당사자의 명칭, 납세자 식별 번호 등은 출력으로 작용한다. 입력과 출력 사이에 대응관계가 있음을 알 수 있다.
상기로부터 하나의 트랜잭션 정보의 입력이 다른 트랜잭션 정보의 출력으로 작용할 수 있음을 알 수 있다. 예를 들어, 전자 송장 발행의 트랜잭션 정보 입력은 전자 송장 발행의 트랜잭션 정보 출력으로 작용하고, 전자 송장 결제의 트랜잭션 정보 입력은 전자 송장 발행의 트랜잭션 정보 출력으로서 작용한다. 따라서 입력은 일반적으로 블록체인에 기록되는 타깃 데이터 블록의 이전 데이터 블록 내의 트랜잭션 정보의 출력과 링크된다. 예를 들어, 전자 송장 결제의 트랜잭션 정보가 타깃 데이터 블록에 기록되면, 트랜잭션 정보의 입력은 다른 데이터 블록에 전자 송장 발행의 트랜잭션 정보의 출력과 링크된다. 이 링크는 하나의 트랜잭션 정보의 입력이 다른 트랜잭션 정보의 출력과 링크되면, 입력이 다른 트랜잭션 정보의 출력으로 표현되므로, 데이터 블록의 트랜잭션 정보 간의 관계를 명확하게 나타낸다.
일 실시예에서, 입력은 다음을 포함한다: 입력이 링크되는 블록체인 브랜치 식별자(nPreOutChinaId), 입력이 링크되는 데이터 블록의 요약(hashPrevTx) 및 입력이 링크되는 데이터 블록 내의 트랜잭션 정보의 색인(NPreOutIndex).
도 4b에 도시된 바와 같이, 기존의 블록 본체의 트랜잭션 정보 입력은 5개의 필드, 즉 블록체인 버전 번호(nVersion), 입력이 링크되는 데이터 블록의 요약(hashPrevTx), 색인(NPreOutIndex), 스크립트 길이(nScriptLength) 및 입력이 링크되는 데이터 블록 내의 트랜잭션 정보의 스크립트(bScript)를 포함할 수 있다. 입력이 링크되는 데이터 블록의 요약(hashPrevTx)은, 입력이 링크되고 이전에 블록체인에 기록된 데이터 블록을 식별할 수 있게 한다. 입력이 링크되는 데이터 블록의 트랜잭션 정보 색인(NPreOutIndex)은 입력이 링크되는 데이터 블록 내의 트랜잭션 정보를 식별할 수 있게 한다. 입력이 링크되는 데이터 블록의 요약(hashPrevTx)과 입력이 링크되는 데이터 블록 내의 트랜잭션 정보 색인(NPreOutIndex)을 통해, 단일 블록체인에 입력이 링크되는 블록체인에 이전에 기록된 트랜잭션 정보의 위치 입력은 유일하게 결정된다. 그러나 다수의 블록체인 브랜치가 있는 경우, 입력에 다른 필드, 즉 입력이 링크되는 블록체인 브랜치 식별자(nPreOutChinaId)가 필요하다. 입력이 링크되는 블록체인 브랜치는 먼저, 입력이 링크되는 블록체인 브랜치 식별자(nPreOutChinaId)에 기초하여 결정된다. 블록체인 브랜치가 결정되는 경우, 입력이 링크되는 데이터 블록의 요약(hashPrevTx)에 기초하여 입력이 링크되는 이전 데이터 블록이 결정된다. 데이터 블록이 결정되는 경우, 입력이 링크되는 데이터 블록 내의 트랜잭션 정보의 색인(NPreOutIndex)에 기초하여 입력이 링크되는 트랜잭션 정보가 결정된다. 이러한 방식으로 입력이 링크되는 이전에 기록된 트랜잭션 정보가 다중 블록체인 브랜치 구조에 정확하게 배치할 수 있다.
도 5a는 종래 기술에서 단일 블록체인 구조의 데이터 블록에서 트랜잭션 정보의 입력과 출력 사이의 링크 관계를 나타낸다. 도 5b는 본 발명의 일 실시예에 따른 다중 블록체인 브랜치 구조에서 데이터 블록의 트랜잭션 정보의 입력과 다른 블록체인 브랜치의 트랜잭션 정보의 출력 사이의 링크 관계를 나타낸다.
도 5a에 도시된 바와 같이, 기존의 단일 블록체인 구조에서, 데이터 블록의 하나 트랜잭션 정보의 입력이 다른 트랜잭션 정보의 출력과 링크되면, 그 입력은 의심할 여지없이 블록체인에 이전에 기록된 데이터 블록 내의 트랜잭션 정보의 출력에 링크되는 것으로 결정될 수 있다.
도 5b에 도시된 바와 같이, 본 개시의 실시예에 따른 다중 블록체인 브랜치 구조에서, 데이터 블록 내의 하나의 트랜잭션 정보의 입력이 다른 트랜잭션 정보의 출력에 링크되면, 그 입력은 트랜잭션 정보가 기록되는 블록체인에 이전에 기록된 데이터 블록 내의 트랜잭션 정보의 출력에 반드시 링크되지는 않지만, 트랜잭션 정보가 기록되는 블록체인 이외의 블록체인 브랜치에 이전에 기록된 데이터 블록의 트랜잭션 정보 출력에 링크될 수 있다. 이러한 방식으로 블록체인 브랜치가 동일한 프로세스를 공유하고 동일한 점유되지 않은 자원을 공유하도록 보장할 수 있다. 블록체인 브랜치 중 어느 하나는 동일한 점유되지 않은 자원을 점유할 수 있으며, 이는 서브 블록체인의 경우와는 완전히 다르다.
일 실시예에서, 다른 회계 노드 각각으로부터의 타깃 데이터 블록에 대한 검증 결과는 다음과 같은 방식(즉, 입력 소비 검증 프로세스)으로 생성된다:
타깃 데이터 블록이 블록체인에 기록되기 전에 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 출력이 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보 입력에 이미 링크되어 있는지 여부를 판정하고;
타깃 데이터 블록이 블록체인에 기록되기 전에 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 출력이 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력에 이미 링크된 경우에, 검증 결과가 검증이 통과되지 못함을 지시하는 것으로 결정하고;
타깃 데이터 블록이 블록체인에 기록되기 전에 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 출력이 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력에 링크되지 않은 경우에, 검증 결과가 검증이 통과됨을 지시하는 것으로 결정한다.
검증은 전자 송장의 반복 결제와 같은 트랜잭션 행위의 재발을 방지하기 위해 수행된다. 전자 송장 결제의 트랜잭션 정보 입력은 전자 송장 발행의 트랜잭션 정보 출력에 링크된다. 전자 송장 발행의 트랜잭션 정보의 데이터 블록이 블록체인에 업로딩된 후에 전자 송장이 결제되면, 전자 송장 결제의 트랜잭션 정보 입력도 전자 송장 발행의 트랜잭션 정보 출력과 링크되고, 타깃 데이터 블록의 트랜잭션 정보가 전자 송장 발행의 트랜잭션 정보 출력에 링크되어 있으면, 이는 반복적인 결제 행위가 있음을 지시하고, 출력 소비 검증을 통과하지 못한다.
일 실시예에서, 타깃 데이터 블록이 블록체인에 기록되기 전에 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 출력이 블록체인에 기록된 다른 데이터 블록 내의 트랜잭션 정보 입력에 이미 링크되어 있는지 여부를 판정하는 것은,
다른 데이터 블록이 블록체인에 기록되는 시각부터 타깃 데이터 블록이 블록체인에 기록되는 시각까지 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력을 순회하고, 각각의 입력이 다른 데이터 블록 내의 트랜잭션 정보의 출력에 링크되어 있는지를 하나씩 판정하는 것을 포함한다.
데이터 블록의 기록 시각, 즉 업로딩 시각이 데이터 블록의 블록 헤더에 기록되므로, 타깃 데이터 블록의 기록 시각과 다른 데이터 블록의 기록 시각을 타깃 데이터 블록과 다른 데이터 블록으로부터 각각 획득할 수 있다. 후속하여, 두 기록 시각 사이에 블록체인에 기록된 모든 데이터 블록이 결정된다.
일 실시예에서, 두 기록 시각 사이에 블록체인에 기록된 모든 데이터 블록을 결정하는 방식에서, 모든 기록 데이터 블록 식별자(예: 요약), 기록 시각, 및 기록된 블록체인 식별자 사이의 대응관계 표는 리더 회계 노드에 저장된다. 이를 위해서는, 리더 회계 노드가 블록체인 브랜치에 데이터 블록을 기록할 때마다, 리더 회계 노드는 대응관계 표 내의 기록된 데이터 블록 식별자(예: 요약), 기록 시각, 및 기록된 블록체인 식별자도 상응하게 기록해야 한다. 이러한 방식으로, 두 기록 시각 사이의 대응관계 표에 있는 모든 기록이 검색될 수 있으며, 대응하는 블록체인 브랜치는 기록 시의 블록체인 브랜치 식별자에 기초하여 결정되고, 블록체인 브랜치에 대응하는 데이터 블록은 기록시의 데이터 블록 식별자(예: 요약)에 기초하여 결정된다. 이 실시예의 이점은, 두 기록 시각 사이에 블록체인에 기록된 모든 데이터 블록을 검색하는 처리 속도가 표 조회를 통해 향상된다는 것이다.
다른 실시예에서, 두 기록 시각 사이에 블록체인에 기록된 모든 데이터 블록을 결정하는 방식으로, 각각의 블록체인 브랜치의 데이터 블록 각각에 대해, 데이터 블록의 블록 헤더 내의 기록 시각이 두 기록 시각 사이에 있는지 여부를 판정하고, 기록 시각이 두 기록 시각 사이에 있으면, 데이터 블록이 두 기록 시각 사이에 블록체인에 기록됨을 지시한다. 이 실시예의 이점은 리더 회계 노드의 메모리가 점유되지 않고 자원이 절약된다는 것이다.
두 기록 시각 사이에 블록체인에 기록된 모든 데이터 블록이 결정된 후, 각각의 데이터 블록 내의 트랜잭션 정보의 입력에 대해, 입력이 다른 데이터 블록 내의 트랜잭션 정보의 출력에 링크되어 있는지 여부를 판정하고, 입력이 다른 데이터 블록 내의 트랜잭션 정보의 출력에 연결되어 있다고 결정하면, 트랜잭션이 반복되었음, 예를 들어 반복 결제되었음을 지시하고, 트랜잭션 정보가 무효한 것으로 결정되고; 그렇지 않으면 트랜잭션 정보가 유효한 것으로 결정된다.
다른 데이터 블록이 블록체인에 기록된 시점부터 타깃 데이터 블록이 블록체인에 기록된 시점까지 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력을 순회하고, 각각의 입력이 다른 데이터 블록 내의 트랜잭션 정보의 출력에 링크되는지 여부를 하나씩 결정하는 것의 이점은 트랜잭션 정보의 유효성 검증의 정확도를 향상시킬 수 있다는 것이다.
다른 실시예에서, 타깃 데이터 블록이 블록체인에 기록되기 전에 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 출력이 블록체인에 기록된 다른 데이터 블록 내의 트랜잭션 정보의 입력에 이미 링크되어 있는지 여부를 판정하는 것은,
타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 다른 데이터 블록의 트랜잭션 정보의 출력에 대응하는 점유 상태 워드(occupancy state word)를 조회하고;
점유 상태 워드가 점유 상태(ccupied state)를 지시하는 경우에 검증 결과가 검증이 통과되지 못함을 지시하는 것으로 결정하고;
점유 상태 워드가 미점유 상태(unoccupied state)를 지시하는 경우에 검증 결과가 검증이 통과됨 지시하는 것으로 결정하는 것을 포함한다.
이에 상응하여, 단계 450 후에, 상기 방법은,
타깃 데이터 블록 내의 트랜잭션 정보 각각의 출력에 대응하는 점유 상태 워드를 미점유 상태를 지시하도록 설정하는 것; 및
타깃 데이터 블록 내의 트랜잭션 정보 각각의 입력이 링크되는 다른 데이터 블록 내의 트랜잭션 정보의 출력에 대응하는 점유 상태 워드를 점유 상태를 지시하도록 설정하는 것을 포함한다.
이 실시예에서, 데이터 블록이 리더 회계 노드에 의해 블록체인에 업로딩될 때마다, 점유 상태 워드가 데이터 블록 내의 트랜잭션 정보 각각의 출력에 할당되고, 점유 상태 워드 및 트랜잭션 정보는 리더 회계 노드의 메모리에 저장되고, 점유 상태 워드는 미점유 상태로 설정된다. 예를 들어 점유 상태 워드는 0으로 설정된다. 그 후, 일단 임의의 데이터 블록이 블록체인에 업로딩되면, 이들 데이터 블록 내의 트랜잭션 정보의 출력에 점유 상태 워드를 할당하고 미점유 상태를 지시하도록 점유 상태 워드를 설정하는 외에, 트랜잭션 정보의 입력 각각에 링크되는 트랜잭션 정보의 출력에 대응하는 점유 상태 워드는 점유 상태를 지시하도록 설정된다, 예를 들어, 점유 상태 워드는 1로 설정된다. 점유 상태를 지시하도록 설정된 점유 상태 워드는 다시 점유 상태를 지시하도록 설정될 수 없으므로, 반복 결제와 같은 트랜잭션의 재발을 피할 수 있다.
구체적으로, 블록 본체 내의 트랜잭션 정보 각각의 입력이 링크되는 다른 데이터 블록 내의 트랜잭션 정보의 출력에 대응하는 점유 상태 워드가 조회되고,
점유 상태 워드가 점유 상태를 지시하는 경우에, 트랜잭션(예: 반복 결제)이 반복적으로 발생할 수 있음을 지시하고, 검증 결과는 검증이 통과되지 못한 것을 지시하는 것으로 결정되고; 그렇지 않으면, 검증 결과는 검증이 통과됨을 지시하는 것으로 결정된다.
이 실시예의 이점은 메모리 내의 점유 상태 워드를 조회함으로써 출력 소비 검증을 신속하게 수행할 수 있어, 출력 소비 검증의 효율을 향상시킬 수 있다는 것이다.
이하, 데이터 블록 서명 검증 프로세스를 설명한다.
일 실시예에서, 단계 440은, 선택된 블록체인 브랜치에 기록된 이전 데이터 블록의 요약 및 그 요약의 블록 헤더 내의 타깃 데이터 블록의 블록 헤더 내의 리더 회계 노드에 고유한 개인 키를 사용하여 요약을 암호화함으로써 형성된 서명을 기록하는 것을 포함한다.
각각의 다른 회계 노드로부터의 타깃 데이터 블록에 대한 검증 결과는 다음과 같은 방식으로 생성된다:
리더 회계 노드에 고유한 공개 키를 사용하여 서명을 암호해독하고;
타깃 데이터 블록 내의 트랜잭션 정보 각각에 대한 요약을 취득하고;
암호해독의 결과를 블록 헤더 내의 요약과 비교하고;
암호해독 결과가 요약과 동일한 경우에 검증 결과는 검증이 통과됨을 지시하는 것으로 결정하고;
암호해독 결과가 요약과 다른 경우에 검증 결과는 검증이 통과되지 못함을 지시하는 것으로 결정한다.
이 실시예의 이점은 리더 회계 노드의 회계에 대해 검증이 수행되므로, 그 회계가 후속 프로세스에서 부인 방지(non-repudiation)를 가질 수 있다는 점이다. 리더 회계 노드는 리더 회계 노드에 고유한 개인 키를 사용하여 블록 본체에 서명하고, 다른 회계 노드는 일반적으로 리더 회계 노드를 제외한 리더 회계 노드의 개인 키를 가지고 있지 않는다. 따라서 리더 회계 노드의 공개 키를 이용하여 블록 본체와 서명을 성공적으로 검증할 수 있다면, 블록 본체가 리더 회계 노드에 의해 블록체인에 확실히 업로딩되었음을 지시한다. 그 후, 블록 본체의 내용에 문제가 있으면, 예를 들어 내용이 변조된 것으로 보고되면, 리더 회계 노드에 의해 문제가 발생한 것으로 확실히 판단된다. 이는 리더 회계 노드만이 자신의 개인 키를 이용하여 서명을 수행할 수 있고, 부인 방지가 생성되므로, 블록체인 업로딩의 보안이 향상되기 때문이다.
리더 회계 노드의 공개 키와 개인 키는 전용 인증 센터 노드(미도시)에 의해 일률적으로 발행될 수 있다.
이하, 트랜잭션 정보 서명 검증 프로세스를 설명한다.
위의 실시예는 전체 데이터 블록의 블록 본체에 서명하는 경우에 초점을 맞추었고, 이하의 실시예에서는 블록 본체 내의 트랜잭션 정보 각각에 서명하는 경우를 설명한다. 블록 본체 내의 트랜잭션 정보 각각에 대한 서명은 트랜잭션 정보의 생성기 노드에 의해 수행된다.
이 실시예에서, 타깃 데이터 블록에 기록되어야 하는 트랜잭션 정보는 생성기 노드에 고유한 개인 키를 사용하여 트랜잭션 정보를 생성하는 생성기 노드에 의해 서명된다.
도 1a에 도시된 시스템 아키텍처에서, 트랜잭션 정보를 생성하는 생성기 노드는 트랜잭션 정보 생성기 회계 노드(103)이다. 도 1b에 도시된 시스템 아키텍처에서, 트랜잭션 정보를 생성하는 생성기 노드는 회계 노드 그룹(100)의 외부에 위치한 트랜잭션 정보 생성기 노드(104)이다. 도 1c에 도시된 시스템 아키텍처에서, 트랜잭션 정보를 생성하는 생성기 노드는 서비스 노드 그룹(107) 내의 트랜잭션 정보 생성기 서비스 노드(106)이다.
일 실시예에서, 생성기 노드에 고유한 공개 키 및 개인 키는 대안으로 전용 인증 센터 노드(미도시)에 의해 일률적으로 발행될 수 있다.
이 실시예에서, 타깃 데이터 블록 내의 트랜잭션 정보 각각은 생성기 노드에 고유한 개인 키를 사용하여 트랜잭션 정보를 생성하는 생성기 노드에 의해 서명되고, 서명은 타깃 데이터 블록에 트랜잭션 정보와 함께 기록된다. 즉, 블록 본체는 트랜잭션 정보를 포함할 뿐만 아니라 트랜잭션 정보에 대응하는 서명도 포함한다. 트랜잭션 정보와 서명은 일대일 대응관계로 블록 본체에 기록된다.
도 13에 도시된 바와 같이, 이 실시예에서, 다른 회계 노드 각각으로부터의 타깃 데이터 블록에 대한 검증 결과는 다음과 같은 방식으로 생성된다:
단계 610, 생성기 노드에 고유한 공개 키를 사용하여 타깃 데이터 블록 내의 트랜잭션 정보 각각의 서명을 암호해독한다.
단계 620, 타깃 데이터 블록 내의 트랜잭션 정보 각각에 대한 요약을 취득한다.
단계 630, 암호해독의 결과를 타깃 데이터 블록 내의 대응하는 트랜잭션 정보의 요약과 비교하고, 각각의 트랜잭션 정보에 대한 암호해독 결과가 대응하는 트랜잭션 정보의 요약과 동일한 경우에 검증 결과는 검증이 통과됨을 지시하는 것으로 결정하고; 그렇지 않으면, 검증 결과는 검증이 통과되지 못함을 지시하는 것으로 결정한다.
트랜잭션 정보 서명 검증은 블록 본체 내의 각각의 트랜잭션 정보가 대응하는 생성기 노드에 의해 실제로 생성되었는지 여부, 블록 본체 내의 각각의 트랜잭션 정보가 변조되지 않았는지 여부, 블록 본체 내의 각각의 트랜잭션 정보가 송신 중에 손실되지 않았는지 여부를 검증하도록 수행된다. 이 실시예에서, 데이터 블록 내의 트랜잭션 정보의 보안이 더욱 향상된다.
트랜잭션 정보 생성기 노드가 트랜잭션 정보의 서명을 생성하는 프로세스는 일반적으로 다음을 포함한다: 미리 결정된 요약 알고리즘에 따라 트랜잭션 정보에 대한 요약을 생성하고; 트랜잭션 정보의 서명을 획득하기 위해, 트랜잭션 정보 생성기 노드에 고유한 개인 키를 사용하여 요약을 암호화하는 것을 포함한다. 이에 상응하여, 제2 서명 검증이 수행되는 경우, 트랜잭션 정보 생성 노드에 고유한 공개 키를 사용하여 트랜잭션 정보의 서명을 암호해독하고, 그 후 트랜잭션 정보의 요약을 생성할 때 사용한 것과 동일한 미리 결정된 요약 알고리즘에 따라 트랜잭션 정보에 대해 요약을 생성하고, 생성된 요약을 암호해독을 통해 획득된 요약과 비교한다. 두 요약이 동일하면, 트랜잭션 정보가 실제로 트랜잭션 정보 생성기 노드에 의해 생성되었고 송신 중에 손실되지 않았으며, 트랜잭션 정보 서명 검증이 통과되었음을 지시하고; 그렇지 않으면 트랜잭션 정보 서명 검증이 통과되지 못했다.
출력 소비 검증, 데이터 블록 서명 검증, 데이터 블록의 트랜잭션 정보 서명 검증 과정은, 도 6에서 리더 회계 노드가 블록체인에 업로드되어야 하는 데이터 블록을 각각의 다른 회계 노드에 송신한 후에, 다른 회계 노드의 검증 중에 모두 수행된다. 모든 검증이 통과된 후, 검증이 통과된 각각의 회계 노드는 다른 모든 회계 노드에 검증이 성공했음을 지시하는 메시지를 송신한다.
단계 4503에서, 검증 결과에 따라 검증이 성공한 것으로 결정되는 경우, 타깃 데이터 블록은 선택된 블록체인 브랜치에 기록되고, 회계 노드 그룹 중의 다른 회계 노드에, 선택된 블록체인 브랜치에 타깃 데이터 블록을 기록한 것을 통지하여, 다른 회계 노드가 블록 헤더 내의 블록체인 브랜치 식별자에 기초하여 선택된 블록체인 브랜치에 타깃 데이터 블록을 기록할 수 있도록 한다.
일 실시예에서, 출력 소비 검증, 데이터 블록 서명 검증 및 트랜잭션 정보 서명 검증이 동시에 수행될 때, 세 가지 검증 중 적어도 하나가 통과되지 못하면, 다른 회계 노드는 검증이 통과되지 못했음을 지시하는 검증 결과를 리더 회계 노드에 송신한다. 세 가지 검증이 모두 통과되면, 다른 회계 노드는 검증이 통과되었음을 지시하는 검증 결과를 리더 회계 노드에 송신한다.
일 실시예에서, 다음과 같은 방식으로 검증 결과에 기초하여 검증이 성공한 것으로 결정된다. 리더 회계 노드에 의해 수신되는 검증이 통과되었음을 지시하는 검증 결과의 수가 (2f+1)에 도달하면, 검증 성공으로 결정되며, 여기서 f는 (N-1)/3보다 작은 정수 중 최대 값이고, N은 회계 노드 그룹 중의 회계 노드 수이다. 다른 회계 노드에 의해 피드백되는, 검증이 통과되었음을 지시하는 검증 결과가 미리 설정된 수 (2f+1)보다 큰 한, f개 이상의 회계 노드의 협력적 오동작을 방지하여, 회계 보안을 향상시킬 수 있다.
이 프로세스는 도 6에 명확하게 도시되어 있다. 도 6에서, 리더 회계 노드는 데이터 블록을 다른 회계 노드에 브로드캐스팅한다. 블록 본체를 수신한 후, 다른 회계 노드는 검증을 수행해야 한다. 검증이 통과되면, 검증이 통과되었음을 지시하는 검증 결과가 회신된다. 리더 회계 노드가 (2f+1)개 이상의 검증 결과를 수신한 경우 검증에 성공한 것으로 결정한다.
그런 다음, 도 6에 도시된 바와 같이, 리더 회계 노드는 블록 헤더 내의 블록체인 브랜치 식별자에 대응하는 블록체인 브랜치에 타깃 데이터 블록을 제출한다. 블록체인 시스템에서 각각의 회계 노드는 동일한 블록체인을 동기화해야 한다. 따라서, 리더 회계 노드는 타깃 데이터 블록을 회계 노드 그룹 중의 다른 회계 노드에도 송신해야 하므로, 다른 회계 노드는 블록 헤더 내의 블록체인 브랜치 식별자에 따라 선택된 블록체인 브랜치에 타깃 데이터 블록을 제출할 수 있다. 이러한 방식으로, 동기화가 완료된다. 성공적으로 제출을 수행한 후, 각각의 다른 회계 노드는 제출이 성공했음을 지시하는 메시지를 리더 회계 노드에 송신한다. 리더 회계 노드는 다른 회계 노드에 의해 전송되는, 미리 설정된 (2f+1)개의 전송 성공을 지시하는 메시지를 수신한 후, 업로딩이 완료되었다고 결정할 수 있으며, 여기서 f는 (N-1)/3보다 작은 정수 중 최대인 것이고, N은 회계 노드 그룹 중의 회계 노드의 수이고, f는 알고리즘에서 허용할 수 있는, 회계 노드 그룹에서 오작동하는 회계 노드의 수이다.
일 실시예에서, 단계 420 이후에, 이 방법은, 각각의 블록체인 브랜치가 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖는 경우, 각각의 데이터 블록에 대한 컨센서스가있을 때까지 대기하는 단계를 더 포함한다. 다수의 블록체인 브랜치 각각의 데이터 블록에 대해 컨센서스가 완료될 때까지 대기하고, 데이터 블록에 대한 컨센서스가 먼저 완료된 블록체인 브랜치를 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로 선택하는 것을 더 포함한다.
단계 430은 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치가 있는 상태에서 수행되어야 한다. 그러나 경우에 따라서는, 단기간에 업로딩되어야 하는 데이터 블록이 많을 수 있기 때문에, 위의 조건을 달성할 수 없다. 즉, 각각의 블록체인 브랜치는 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖는다. 이 경우, 각각의 블록체인 브랜치의 데이터 블록에 대한 컨센서스가 완료될 때까지 대기할 수 있으며, 데이터 블록에 대한 컨센서스가 먼저 완료된 블록체인 브랜치가 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로서 선택될 수 있다. 블록. 이 작업의 장점은 데이터 블록에 대한 컨센서스가 먼저 완료된 블록체인 브랜치를 즉시 업로드에 사용할 수 있어, 업로딩 시간을 절약하여, 업로드의 효율을 향상시킬 수 있다는 것이다.
이 단계 이후에, 단계 440과 단계 450이 수행되어야 한다. 즉, 요약을 기록하고 컨센서스를 수행하고 업로딩하는 프로세스를 수행해야 하는데, 이는 상기한 바와 동일하며, 세부사항을 다시 설명하지 않는다.
도 3b는 다수의 블록체인 브랜치의 1차원 배치를 도시한다. 즉, 다수의 블록체인 브랜치가 1차원의 순서로, 예를 들어, 블록체인 브랜치 1, 블록체인 브랜치 2, 블록체인 브랜치 3, 블록체인 브랜치 4, 및 블록체인 브랜치 5의 나열된 순서로 순차적으로 배열되고, 이는 블록체인 브랜치 수가 적을 때 관리하기 쉽다. 수천 개의 블록체인 브랜치가 있으면, 다차원 배열이 바람직한 형태가 될 수 있다.
따라서, 일 실시예에서, 다수의 블록체인 브랜치는 M 차원 행렬로 배열되고, M은 1보다 큰 양의 정수이고, 각각의 블록체인 브랜치의 식별자는 M개의 요소의 벡터로 지시되며, 여기서 각각의 요소는 대응하는 차원에서의 블록체인 브랜치의 시퀀스 번호이다.
도 8의 예에서, M=2, 즉 차원은 2이고, 각 차원의 최대 시퀀스 번호는 3이다. 즉, 각 차원에는 1, 2, 3의 세 가지 시퀀스 번호가 있다. 이 경우, 각각의 블록체인 브랜치의 식별자는 두 요소의 벡터로 지시되며, 각각의 벡터는 1에서 3까지의 값을 가질 수 있으므로, 9개의 식별자 (1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)이 있으며, 각각 9개의 블록체인 브랜치를 나타낸다. 각각의 블록체인 브랜치상의는 데이터 블록은 블록체인 브랜치에 기록되는 순서로 배열된다.
도 8은 각각의 블록체인 브랜치가 세 개의 데이터 블록으로 배열된 배치를 나타낸 개략도이다. 실제로, 각각의 블록체인 브랜치는 다른 수의 데이터 블록으로 배열될 수 있다. 또한, 블록체인 브랜치는 더 많은 차원의 매트릭스로 배열될 수 있으며, 각각의 차원은 다른 수의 시퀀스 번호를 가질 수 있다. 기록 순서는 블록체인 브랜치 간에 미리 정할 수 있다. 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하기 위해, 이전 데이터 블록이 기록된 블록체인 브랜치의 다음 블록체인 브랜치를, 미리 정해진 순서대로 타깃 데이터 블록을 기록하는 블록체인 브랜치로서 사용할 수 있다. 예를 들어, 도 8에서, 기록을 위한 블록체인 브랜치는 (1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)의 나열된 순서로 선택될 수 있다. 이전 데이터 블록이 블록체인 브랜치 (1, 3)에 기록된 경우, 타깃 데이터 블록은 블록체인 브랜치 (2, 1)에 기록된다.
다차원 행렬 배치는 블록체인 브랜치의 수가 많은 경우에 블록체인 브랜치 스케줄링의 효율을 향상시키는 이점이 있다.
도 7은 본 발명의 일 실시예의 적용 효과를 나타낸다. 도 7에서, 트랜잭션 정보 생성기 노드 1 ∼ 3은 트랜잭션 정보를 생성하고, 업로딩을 위해 트랜잭션 정보를 리더 회계 노드에 송신한다. 리더 회계 노드는 트랜잭션 정보를 수신하고 패키징 조건이 충족되는 경우 트랜잭션 정보를 패키징한다. 또한, 리더 회계 노드는 기록을 위해 블록체인 브랜치를 선택한다, 즉, 리더 회계 노드는 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택한다. 다음에, 블록체인 브랜치의 식별자는 데이터 블록의 블록 헤더에 기록되고, 데이터 블록은 회계 노드 1 ∼ 3에 브로드캐스팅된다. 데이터 블록을 수신한 후, 각각의 회계 노드 1 ∼ 3은 출력 소비 검증, 데이터 블록 서명 검증, 트랜잭션 정보 서명 검증과 같은 검증을 수행하고, 검증 결과를 회계 노드 그룹 중의 다른 회계 노드에 브로드캐스팅한다. 리더 회계 노드는 미리 설정된 수의 회계 노드로부터 검증이 통과되었음을 지시하는 검증 결과를 수신하는 경우, 리더 회계 노드는 블록 헤더에 기록된 블록체인 브랜치의 식별자에 기초하여 대응하는 블록체인 브랜치에 데이터 블록을 제출한다. 각각의 다른 회계 노드도 또한 블록 헤더에 기록된 블록체인 브랜치의 식별자에 기초하여 대응하는 블록체인 브랜치에 데이터 블록을 제출한다.
도 7에서 볼 수 있듯이, 리더 회계 노드는 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치를 기록을 위해 선택하므로, 이전 데이터 블록이 완료될 때까지 대기할 필요가 없음을 알 수 있다. 대신, 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치의 마지막 데이터 블록의 요약이 타깃 데이터 블록의 블록 헤더에 기록된 다음, 타깃 데이터 블록가 블록체인에 업로딩될 수 있으므로, 대기 시간을 감소시켜, 업로드 효율을 향상시킨다.
일 실시예에서, 도 14에 도시된 바와 같이, 리더 회계 노드는 다음과 같은 방식으로 회계 노드 그룹에서 선택된다:
단계 710, 회계 노드 그룹 중의 회계 노드 각각의 현재 처리 부하를 획득한한다.
단계 720, 현재 처리 부하에 기초하여 리더 회계 노드를 결정한다.
본 실시예에서, 리더 회계 노드는 고정되어 있지 않고, 리더 회계 노드는 각 회계 노드의 처리 부하에 따라 결정될 수 있으며, 이에 따라 회계 노드의 처리 부하 균형을 맞추는 효과를 얻을 수 있다.
처리 부하는 노드에 의해 처리되는 태스크 양을 나타내며, 노드에 의해 처리되는 태스크의 수로 표현될 수 있다. 단계 710에서, 회계 노드 그룹 중의 회계 노드 각각의 현재 처리 부하는 회계 노드 각각의 능동 보고 방식(active reporting manner) 또는 수동 조회 방식(passive querying manner)으로 획득될 수 있다.
능동 보고 방식을 채택하는 실시예에서, 단계 710은 다음을 포함한다:
회계 노드 그룹 중의 회계 노드 각각에 의해 주기적으로 브로드캐스팅되는 실시간 처리 부하를 수신하고;
가장 최근에 회계 노드 각각에 의해 브로드캐스팅되어 수신된 실시간 처리 부하를 회계 노드의 현재 처리 부하로서 결정한다.
실시간 처리 부하는 노드가 브로드캐스팅하고 있는 처리 부하를 의미한다.
회계 노드 그룹 중의 회계 노드 각각의 현재 처리 부하를 획득하기 위해, 가장 최근에 회계 노드 각각에 의해 브로드캐스팅되어 수신되고 그에 따라 저장된 실시간 처리 부하를 검색하여 회계 노드의 현재 처리 부하로서 사용한다. 예를 들어, 회계 노드는 3초 간격으로 회계 노드 그룹 중의 다른 회계 노드에 실시간 처리 부하가 브로드캐스팅된다. 회계 노드가 브로드캐스팅한 실시간 처리 부하가 12:37:31에 수신되면, 12:37:33에 회계 노드의 현재 처리 부하를 결정해야 하며, 회계 노드가 브로드캐스팅한 실시간 처리 부하가 가장 최근에 수신된 것은 12:37:31이고, 12:37:31에 브로드캐스팅된 실시간 처리 부하는 회계 노드의 현재 처리 부하로서 사용된다.
이 실시예에서, 능동 보고 방식은 리더 회계 노드의 조회를 위한 처리 오버헤드를 감소시키는 이점이 있다.
수동 조회 방식을 채택하는 실시예에서, 단계 710은 다음을 포함한다:
회계 노드 그룹 중의 회계 노드 각각에 현재 처리 부하 조회 요청을 송신하고;
회계 노드 각각으로부터의 현재 처리 부하를 수신한다.
이 실시예에서, 수동 조회 방식은 회계 노드의 현재 처리 부하를 결정해야 할 때에만 조회를 수행하고, 회계 노드의 현재 처리 부하를 결정해야 할 때 조회된 현재 처리 부하를 실시간 부하로서 결정하여, 회계 노드의 현재 처리 부하를 결정하는 정확도를 향상시키는 이점이 있다.
일 실시예에서, 단계 720은 다음을 포함한다:
현재 처리 부하가 가장 작은 회계 노드를 리더 회계 노드로 결정한다.
처리 부하가 가장 작은 회계 노드는 작업 부하가 가장 적을 수 있다. 처리 부하가 가장 작은 회계 노드가 리더 회계 노드로 선택되어 회계 노드의 작업 부하가 균형을 이룰 수 있다.
다른 실시예에서, 단계 720은 다음을 포함한다:
각각의 현재 처리 부하가 미리 정해진 처리 부하 임계 값 미만인 회계 노드 중 어느 하나를 리더 회계 노드로 선택한다.
이 실시예에서, 회계 노드가 미리 결정된 처리 부하 임계 값 미만의 현재 처리 부하를 갖는 한, 회계 노드는 리더 회계 노드로서 선택될 수 있다. 이 실시예는 처리 부하가 가장 작은 회계 노드만 선택되는 경우로 인해 처리 부하가 가장 작은 회계 노드의 혼잡을 방지하는 이점이 있다.
도 15에 도시된 바와 같이, 본 발명의 일 실시예에 따르면, 블록체인 기록을 위한 리더 회계 노드가 제공되며, 블록체인은 다수의 블록체인 브랜치를 포함하고,
데이터 블록은 동일한 회계 노드 그룹에 의해 다수의 블록체인 브랜치에 기록되고, 리더 회계 노드는 회계 노드 그룹 중에서 선택되며, 리더 회계 노드는 타깃 데이터 블록 생성 모듈(910), 결정 모듈(920), 제1 블록체인 브랜치 선택 모듈(930), 요약 기록 모듈(940) 그리고 컨센서스 및 업로딩 모듈(950)을 포함한다. 타깃 데이터 블록 생성 모듈(910)은 타깃 데이터 블록을 생성하도록 구성된다. 결정 모듈(920)은 복수의 블록체인 브랜치 중에, 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖는 블록체인 브랜치가 있는지 여부를 판정하도록 구성된다. 제1 블록체인 브랜치 선택 모듈(930)은 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치가 있는 경우, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서, 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하도록 구성된다. 요약 기록 모듈(940)은 선택된 블록체인 브랜치에 기록되는 이전 데이터 블록의 요약을 타깃 데이터 블록의 블록 헤더에 기록하도록 구성된다. 컨센서스 및 업로딩 모듈(950)은 컨센서스를 수행하기 위해 회계 노드 그룹 중의 다른 회계 노드에 타깃 데이터 블록을 송신하고, 선택된 블록체인 브랜치에 타깃 데이터 블록을 기록하도록 구성된다.
일 실시예에서, 리더 회계 노드는 제2 블록체인 브랜치 선택 모듈을 더 포함한다. 제2 블록체인 브랜치 선택 모듈은 다수의 블록체인 브랜치 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖는 경우, 다수의 블록체인의 데이터 블록 각각에 대한 컨센서스가 완료될 때까지 대기하고, 컨센서스가 먼저 완료되는 데이터 블록을 갖는 블록체인 브랜치를 타깃 데이터 블록을 기록하기위한 블록체인 브랜치로서 선택한다.
일 실시예에서, 다수의 블록체인 브랜치 각각은 시퀀스 번호를 갖는다. 제1 블록체인 브랜치 선택 모듈(930)은 추가로,
각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서 제1 블록체인 브랜치들을 결정하고 - 여기서 제1 블록체인 브랜치 각각의 시퀀스 번호는 제2 블록체인 브랜치의 시퀀스 번호보다 크고, 제2 블록체인 브랜치는 타깃 데이터 블록의 이전 데이터 블록이 기록되는 블록체인 브랜치임 -;
제1 블록체인 브랜치들 중에서, 가장 작은 시퀀스 번호를 갖는 블록체인 브랜치를 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로 선택하고;
각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중 어느 것도 제2 블록체인 브랜치의 시퀀스 번호보다 큰 시퀀스 번호를 갖지 않는 경우, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서, 가장 작은 시퀀스 번호를 갖는 블록체인 브랜치를 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로 선택하도록 구성된다.
일 실시예에서, 제1 블록체인 브랜치 선택 모듈(930)은 추가로,
각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 각각의 블록체인 브랜치에 기록된 데이터 블록의 수를 결정하고;
각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 각각의 블록체인 브랜치상의 마지막 데이터 블록의 기록 시각과 현재 시각 사이의 시간 차이를 결정하고;
기록된 데이터 블록의 수와 시간 차이에 기초하고 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하도록 구성된다.
일 실시예에서, 기록된 데이터 블록의 수와 시간 차이에 기초하고 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하는 것은,
각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 각각의 블록체인 브랜치에 기록된 데이터 블록의 수에 대한 제1 스코어를 결정하고;
각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 각각의 블록체인 브랜치에 대한 시간 차이에 대한 제2 스코어를 결정하고;
제1 스코어와 제2 스코어의 가중 합에 기초하여, 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 결정하는 것을 포함한다.
일 실시예에서, 다수의 블록체인 브랜치 각각은 식별자를 갖는다. 요약 기록 모듈(940)은 선택된 블록체인 브랜치에 기록되는 이전 데이터 블록의 요약 및 선택된 블록체인 브랜치의 식별자를 타깃 데이터 블록의 블록 헤더에 기록하도록 추가로 구성된다. 컨센서스 및 업로딩 모듈(950)은 추가로,
타깃 데이터 블록을 회계 노드 그룹 중의 다른 회계 노드에 송신하고;
각각의 다른 회계 노드로부터 타깃 데이터 블록에 대한 검증 결과를 수신하고;
검증 결과에 기초하여 검증이 성공한 것으로 결정하는 경우, 선택된 블록체인 브랜치에 타깃 데이터 블록을 기록하고, 선택된 블록체인 브랜치에 타깃 데이터 블록이 기록되었음을 회계 노드 그룹 중의 다른 회계 노드에 통지하도록 구성되며, 여기서 다른 회계 노드는 각각 블록 헤더에 기록되어 있는 블록체인 브랜치의 식별자에 기초하여, 선택된 블록체인 브랜치에 타깃 데이터 블록을 기록하도록 구성된다.
일 실시예에서, 타깃 데이터 블록 내의 트랜잭션 정보는 입력 및 출력을 포함하고, 입력은 타깃 데이터 블록보다 앞선 블록체인에 기록된 다른 데이터 블록 내의 트랜잭션 정보의 출력에 링크된다. 각각의 다른 회계 노드로부터의 타깃 데이터 블록에 대한 검증 결과는,
타깃 데이터 블록이 블록체인에 기록되기 전에 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 출력이 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력에 이미 링크되어 있는지 여부를 판정하고;
타깃 데이터 블록이 블록체인에 기록되기 전에 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 출력이 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력에 이미 링크되어 있는 경우에, 검증 결과가 검증이 통과되지 못함을 지시하는 것으로 결정하고;
타깃 데이터 블록이 블록체인에 기록될 때 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 출력이 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력에 링크되지 않는 경우에, 검증 결과가 검증이 통과됨을 지시하는 것으로 결정하는 방식으로 결정된다.
일 실시예에서, 컨센서스 및 업로드 모듈(950)은 추가로,
이전 데이터 블록이 블록체인에 기록되는 시각부터 타깃 데이터 블록이 블록체인에 기록되는 시각까지 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력을 순회하고, 각각의 입력이 이전 데이터 블록 내의 대응하는 트랜잭션 정보의 출력에 링크되어 있는지 여부를 하나씩 판정하도록 구성된다.
일 실시예에서, 컨센서스 및 업로드 모듈(950)은 추가로,
타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 이전 데이터 블록의 트랜잭션 정보의 출력에 대응하는 점유 상태 워드를 조회하고;
점유 상태 워드가 점유 상태를 지시하는 경우에 검증 결과가 검증이 통과되지 못함을 지시하는 것으로 결정하고;
점유 상태 워드가 미점유 상태를 지시하는 경우에 검증 결과가 검증이 통과됨 지시하는 것으로 결정하고;
타깃 데이터 블록 내의 트랜잭션 정보의 출력에 대응하는 점유 상태 워드를 미점유 상태를 지시하도록 설정하고;
타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 이전 데이터 블록 내의 트랜잭션 정보의 출력에 대응하는 점유 상태 워드를 점유 상태를 지시하도록 설정하도록 구성된다.
일 실시예에서, 요약 기록 모듈(940)은 추가로, 선택된 블록체인에 기록되는 이전 데이터 블록의 요약과 리더 회계 노드에 고유한 개인 키를 사용하여 요약을 암호화하여 형성된 서명을 타깃 데이터 블록의 블록 헤더에 기록하도록 구성된다. 각각의 다른 회계 노드로부터의 타깃 데이터 블록에 대한 검증 결과는,
리더 계정 노드에 고유한 공개 키를 사용하여 서명을 암호해독하고;
암호해독의 결과를 블록 헤더의 요약과 비교하고;
암호해독의 결과가 블록 헤더 내의 요약과 동일한 경우에 검증 결과는 검증이 통과됨을 지시하는 것으로 결정하고;
암호해독의 결과가 블록 헤더 내의 요약과 다른 경우에 검증 결과는 검증이 통과되지 못함을 지시하는 것으로 결정하는 방식으로 생성된다.
일 실시예에서, 타깃 데이터 블록 내의 트랜잭션 정보 각각은 트랜잭션 정보의 생성기 노드에 의해 생성기 노드에 고유한 개인 키를 사용하여 암호화되어 서명을 형성하고, 서명은 타깃 데이터 블록에 트랜잭션 정보와 함께 기록된다.
다른 회계 노드 각각으로부터의 타깃 데이터 블록에 대한 검증 결과는 컨센서스 및 업로딩 모듈(950)에 의해,
생성기 노드에 고유한 공개 키를 사용하여 타깃 데이터 블록 내의 트랜잭션 정보 각각의 서명을 암호해독하고;
타깃 데이터 블록 내의 트랜잭션 정보 각각에 대한 요약을 취득하고;
암호해독의 결과를 타깃 데이터 블록 내의 대응하는 트랜잭션 정보의 요약과 비교하고;
각각의 트랜잭션 정보에 대한 암호해독 결과가 대응하는 트랜잭션 정보의 요약과 동일한 경우에 검증 결과는 검증이 통과됨을 지시하는 것으로 결정하고;
각각의 트랜잭션 정보에 대한 암호해독 결과가 대응하는 트랜잭션 정보의 요약과 다른 경우에 검증 결과는 검증이 통과되지 못함을 지시하는 것으로 결정하는 방식으로 생성된다.
일 실시예에서, 다수의 블록체인 브랜치는 M 차원 행렬로 배열되고, M은 1보다 큰 양의 정수이며, 각각의 블록체인 브랜치의 식별자는 M개의 요소 중 하나의 벡터로 지시되고, M개의 요소 각각은 대응하는 차원의 블록체인 브랜치의 시퀀스 번호를 나타낸다.
본 개시의 실시예에 따른 블록체인 네트워크에서 데이터 블록을 기록하는 방법은 도 16의 리더 회계 노드(102)에 의해 구현될 수 있다. 이하에서는 도 16을 참조하여 본 개시의 이 실시예에 따른 리더 회계 노드(102)를 설명한다. 도 16에 도시된 리더 회계 노드(102)는 예일 뿐이며, 본 개시의 실시예의 기능 및 사용 범위에 대한 어떠한 한정도 아니다.
도 16에 도시된 바와 같이, 리더 회계 노드(102)는 범용 컴퓨팅 기기의 형태로 표현된다. 리더 회계 노드(102)의 구성요소는 적어도 하나의 처리 유닛(810), 적어도 하나의 저장 유닛(820) 및 상이한 시스템 구성요소(저장 유닛(820) 및 처리 유닛(810) 포함)에 연결된 버스(830)를 포함할 수 있지만 이에 한정되지 않는다.
저장 유닛은 프로그램 코드를 저장하고, 프로그램 코드는 처리 유닛(810)에 의해 실행될 수 있으므로, 처리 유닛(810)은 전술한 예시적인 방법의 설명에서 설명한 본 발명의 다양한 실시예에 따른 단계를 수행한다. 예를 들어, 처리 유닛(810)은 도 9에 도시된 단계를 수행할 수 있다.
저장 유닛(820)은 휘발성 저장유닛, 예를 들어 랜덤 액세스 메모리(random access memory, RAM) 유닛(8201) 및/또는 캐시 저장 유닛(8202))과 같은 휘발성 저장 유닛의 형태의 판독 가능한 매체를 포함할 수 있으며, 판독 전용 메모리(read-only memory, ROM) 유닛(8203)을 더 포함할 수 있다.
저장 유닛(820)은 (하나 이상의) 프로그램 모듈(8205)의 그룹을 갖는 프로그램/유틸리티 도구(8204)를 더 포함할 수 있다. 프로그램 모듈(8205)은 운영 체제, 하나 이상의 애플리케이션 프로그램, 기타 프로그램 모듈 및 프로그램 데이터를 포함하지만 이에 한정되는 것은 아니다. 이들 예의 각각 또는 조합은 네트워크 환경의 구현을 포함할 수 있다.
버스(830)는 저장 유닛 버스 또는 저장 유닛 컨트롤러, 버스, 가속형 그래픽 포트, 처리 유닛, 또는 다수의 버스 구조 중 임의의 것을 사용하는 로컬 버스를 포함하는 여러 유형의 버스 구조 중 하나 이상을 나타낼 수 있다..
리더 회계 노드(102)는 하나 이상의 외부 기기(700)(예: 키보드, 포인팅 기기 및 블루투스 기기)와 통신할 수 있거나, 사용자가 리더 회계 노드(102)와 상호 작용할 수 있게 하고, 및/또는 리더 회계 노드(102)가 하나 이상의 다른 컴퓨팅 기기와 통신할 수 있게 하는 임의의 기기(예: 라우터 또는 모뎀)와 통신할 수 있다. 이러한 통신은 입출력(I/O) 인터페이스(650)를 사용하여 수행될 수 있다. 또한, 리더 회계 노드(102)는 하나 이상의 네트워크(예: 근거리 통신망(local area network, LAN), 광역 통신망(wide area network, WAN)와 추가로 통신할 수 있다. 도 16에 도시된 바와 같이, 네트워크 어댑터(860)는 버스(830)를 사용하여 리더 회계 노드(102)의 다른 모듈과 통신한다. 도 16에 도시되지 않았지만, 마이크로코드, 기기 드라이버, 리던던시 처리 유닛, 외부 디스크 드라이브 어레이, RAID 시스템, 테이프 드라이버, 데이터 백업 및 저장 시스템 등을 포함하지만 이에 한정되는 것은 아닌, 다른 하드웨어 및/또는 소프트웨어 모듈이 리더 회계 노드(102)와 결합하여 사용될 수 있다.
전술한 실시예의 설명에 따르면, 당업자는 여기에 기재된 예시적인 실시예들이 소프트웨어를 사용하여 구현될 수 있거나 소프트웨어와 필요한 하드웨어를 결합하여 구현될 수 있음을 쉽게 이해할 수 있다. 따라서, 본 개시의 실시예의 기술적 방안은 소프트웨어 제품의 형태로 구현될 수 있다. 소프트웨어 제품은 비휘발성 저장 매체(CD-ROM, USB 플래시 드라이버, 이동식 하드 디스크 등일 수 있음) 또는 네트워크에 저장될 수 있고 본 개시의 실시예에 기재된 방법을 수행하도록 컴퓨터 기기(개인용 컴퓨터, 서버, 단말 기기, 네트워크 기기 등일 수 있음)에 명령하기 위한 여러 명령어를 포함할 수 있다.
본 개시의 예시적인 실시예에서, 컴퓨터로 판독 가능한 명령어가 저장된 컴퓨터 프로그램 매체가 더 제공된다. 컴퓨터로 판독 가능한 명령어는 컴퓨터의 프로세서에 의해 실행될 때 컴퓨터로 하여금 전술한 방법 실시예에 따른 방법을 수행하게 한다.
본 발명의 일 실시예에 따르면, 전술한 방법 실시예에서의 방법을 구현하기위한 프로그램 제품이 더 제공된다. 프로그램 제품은 휴대용 컴팩트 디스크 판독 전용 메모리(compact disc read-only memory, CD-ROM)를 사용하고 프로그램 코드를 포함할 수 있으며, 개인용 컴퓨터와 같은 단말 기기에서 실행될 수 있다. 그러나 본 개시에서 프로그램 제품은 이에 한정되지 않는다. 본 명세서에서, 판독 가능한 저장 매체는 프로그램을 포함하거나 저장하는 임의의 유형의 매체일 수 있으며, 프로그램은 명령어 실행 시스템, 장치 또는 기기에 의해 사용되거나 이들과 조합되어 사용될 수 있다.
프로그램 제품은 하나 이상의 판독 가능한 매체의 임의의 조합일 수 있다. 판독 가능한 매체는 컴퓨터 판독 가능한 신호 매체 또는 컴퓨터로 판독 가능한 저장 매체일 수 있다. 판독 가능한 저장 매체는 예를 들어, 전기, 자기, 광학, 전자기, 적외선 또는 반도체 시스템, 장치 또는 기기 또는 이들의 조합일 수 있지만 이에 한정되는 것은 아니다. 판독 가능한 저장 매체의 보다 구체적인 예(총망라하지 않는 리스트임)로는 하나 이상의 배선을 가진 전기적 연결, 휴대용 디스크, 하드 디스크, RAM, ROM, 소거 가능한 프로그래밍 가능한 ROM(EPROM 또는 플래시 메모리), 광섬유, CD-ROM(compact disc ROM, CD-ROM), 광학 저장 기기, 자기 저장 기기 또는 이들의 임의의 적절한 조합을 포함할 수 있다.
컴퓨터로 판독 가능한 신호 매체는 판독 가능한 프로그램 코드를 실어 전달하는 기저 대역 또는 캐리어의 일부로서 전파되는 데이터 신호를 포함한다. 이러한 방식으로 전파되는 데이터 신호는 전자기 신호, 광학 신호 또는 이들의 임의의 적절한 조합을 포함하지만 이에 한정되지 않는 여러 형태일 수 있다. 판독 가능한 저장 매체는 또한 판독 가능한 저장 매체 이외의 임의의 판독 가능한 매체일 수 있고, 판독 가능한 저장 매체는 명령어 실행 시스템, 장치 또는 기기에 의해 또는 그와 결합하여 사용되는 프로그램을 송신, 전파 또는 전송하는데 사용될 수 있다.
판독 가능한 저장 매체에 포함된 프로그램 코드는 무선 매체, 유선 매체, 광 케이블, RF 또는 이들의 임의의 적절한 조합을 포함하지만 이에 한정되지 않는 임의의 적절한 매체를 사용하여 송신될 수 있다.
본 개시의 일 실시예에 따르면, 명령어를 포함하는 컴퓨터 프로그램 제품이 더 제공된다. 컴퓨터 프로그램 제품은 서버에서 실행될 때 서버가 전술한 실시예에 따른 방법을 수행하게 한다.
본 개시의 작업을 실행하기 위해 사용되는 프로그램 코드는 하나 이상의 프로그래밍 언어 또는 이들의 조합을 사용하여 작성될 수 있다. 프로그래밍 언어로는 Java 및 C ++와 같은 객체 지향 프로그래밍 언어가 포함되며 "C" 또는 유사한 프로그래밍 언어와 같은 종래의 절 적 프로그래밍 언어도 포함된다. 프로그램 코드는 사용자 컴퓨팅 기기에서 완전히 실행되거나, 사용자 기기에서 부분적으로 실행되거나, 독립된 소프트웨어 패키지로 실행되거나, 사용자 컴퓨팅 기기에서 부분적으로 실행되고, 원격 컴퓨팅 기기에서 부분적으로 실행되거나, 원격 컴퓨팅 기기 또는 서버에서 완전히 실행될 수 있다. 원격 컴퓨팅 장치와 관련된 경우, 원격 컴퓨팅 기기는 근거리 통신망(LAN) 또는 광대역 통신망(WAN)을 포함한 모든 유형의 네트워크를 통해 사용자 컴퓨팅 기기에 연결될 수 있거나, 외부 컴퓨팅 기기(예: 인터넷 서비스 공급자를 사용하여 인터넷을 통해)에 연결될 수 있다.
전술한 상세한 설명에서는 작업을 수행하도록 구성된 기기의 다수의 모듈 또는 유닛에 대해 설명하였지만, 이러한 분할은 필수가 아님을 유의해야 한다. 실제로, 본 개시의 실시예에 따르면, 전술한 둘 이상의 모듈 또는 유닛의 특징 및 기능은 하나의 모듈 또는 유닛으로 구현될 수 있다. 또한, 전술한 하나의 모듈 또는 유닛의 특징 및 기능은 다수의 모듈 또는 유닛으로 구체화되도록 더 분할될 수 있다.
또한, 본 개시 내용의 방법의 단계가 도면에서의 특정 순서로 설명되어 있지만, 이는 이러한 단계가 특정 순서에 따라 수행될 필요가 있거나 표시된 모든 단계를 수행해야만 예상된 결과가 실현될 수 있음을 요구하거나 암시하지 않는다. 추가로 또는 대안으로, 일부 단계는 생략될 수 있고, 여러 단계가 하나의 단계로 결합될 수 있으며, 및/또는 하나의 단계가 여러 단계로 분해될 수 있는 등의 방법이 있다.
전술한 실시예의 설명에 따르면, 본 기술 분야의 통상의 기술자는 본 명세서에 기재된 예시적인 실시예가 소프트웨어를 사용하여 구현될 수 있거나 소프트웨어와 필요한 하드웨어를 결합하여 구현될 수 있음을 쉽게 이해할 수 있다. 따라서, 본 발명의 실시예의 기술적 방안은 소프트웨어 제품의 형태로 구현될 수 있다. 소프트웨어 제품은 비휘발성 저장 매체(CD-ROM, USB 플래시 드라이브, 이동식 하드 디스크 등일 수 있음) 또는 네트워크에 저장될 수 있으며 본 개시의 구현예에 기재된 방법을 수행하기 위해 컴퓨팅 기기(이는 개인용 컴퓨터, 서버, 모바일 단말기, 네트워크 기기 등일 수 있음)에 명령하는 여러 명령어를 포함할 수 있다.
명세서를 고려하고 본 개시를 실행한 후에, 당업자는 본 개시 내용의 다른 구현예를 쉽게 구상할 수 있다. 본 출원은 본 개시의 임의의 변형, 사용 또는 적응 적 변경을 포함하도록 의도된다. 이러한 변형, 사용 또는 적응적 변경은 본 개시의 일반적인 원리를 따라야 하며, 기술에서 본 개시에서 설명되지 않은 통상의 일반적인 지식 또는 통상의 기술 수단을 포함해야 한다. 명세서 및 실시예는 단지 예시적인 것으로 간주되며, 본 개시의 실제 범위 및 사상은 청구 범위에 따른다.

Claims (16)

  1. 블록체인에 데이터 블록을 기록하는 방법으로서,
    상기 블록체인은 복수의 블록체인 브랜치를 포함하고, 데이터 블록은 동일한 회계 노드 그룹에 의해 상기 복수의 블록체인 브랜치에 기록되며, 상기 방법은 상기 회계 노드 그룹 중의 리더 회계 노드에 의해 수행되고, 상기 방법은,
    타깃 데이터 블록을 생성하는 단계;
    상기 복수의 블록체인 브랜치 중에, 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖는 블록체인 브랜치가 있는지 여부를 판정하는 단계;
    각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들이 있는 경우, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서 상기 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하는 단계;
    선택된 블록체인 브랜치에 기록되는 이전 데이터 블록의 요약을 상기 타깃 데이터 블록의 블록 헤더에 기록하는 단계; 및
    컨센서스를 수행하기 위해 상기 회계 노드 그룹 중의 다른 회계 노드에 상기 타깃 데이터 블록을 송신하고, 상기 선택된 블록체인 브랜치에 상기 타깃 데이터 블록을 기록하는 단계
    를 포함하는 블록체인에 데이터 블록을 기록하는 방법.
  2. 제1항에 있어서,
    상기 복수의 블록체인 브랜치 중에, 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖는 블록체인 브랜치가 있는지 여부를 판정하는 단계는 후에, 상기 방법은,
    상기 복수의 블록체인 브랜치 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖는 경우, 상기 복수의 블록체인 브랜치 각각의 데이터 블록에 대한 컨센서스가 완료될 때까지 대기하고, 컨세선스가 먼저 완료되는 데이터 블록을 갖는 블록체인 브랜치를 상기 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로 선택하는 단계를 더 포함하는 블록체인에 데이터 블록을 기록하는 방법.
  3. 제1항에 있어서,
    상기 복수의 블록체인 브랜치 각각은 시퀀스 번호를 가지며,
    각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서, 상기 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하는 단계는,
    각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서 제1 블록체인 브랜치들을 결정하는 단계 - 상기 제1 블록체인 브랜치 각각의 시퀀스 번호는 제2 블록체인 브랜치의 시퀀스 번호보다 크고, 상기 제2 블록체인 브랜치는 상기 타깃 데이터 블록의 이전 데이터 블록이 기록되어 있는 블록체인 브랜치임 -;
    상기 제1 블록체인 브랜치들 중에서, 가장 작은 시퀀스 번호를 갖는 블록체인 브랜치를 상기 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로 선택하는 단계; 및
    각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중 어느 것도 상기 제2 블록체인 브랜치의 시퀀스 번호보다 큰 시퀀스 번호를 갖지 않는 경우, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서, 가장 작은 시퀀스 번호를 갖는 블록체인 브랜치를 상기 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치로 선택하는 단계를 포함하는,
    블록체인에 데이터 블록을 기록하는 방법.
  4. 제1항에 있어서,
    각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서, 상기 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하는 단계는,
    각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 각각의 블록체인 브랜치에 기록된 데이터 블록의 수를 결정하는 단계;
    각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 각각의 블록체인 브랜치상의 마지막 데이터 블록의 기록 시각과 현재 시각 사이의 시간 차이를 결정하는 단계;
    상기 기록된 데이터 블록의 수와 상기 시간 차이에 기초하고 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서 상기 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하는 단계를 포함하는, 블록체인에 데이터 블록을 기록하는 방법.
  5. 제4항에 있어서,
    상기 기록된 데이터 블록의 수와 상기 시간 차이에 기초하고 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서 상기 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하는 단계는,
    각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 각각의 블록체인 브랜치에 기록된 데이터 블록의 수에 대한 제1 스코어를 결정하는 단계;
    각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 각각의 블록체인 브랜치에 대한 상기 시간 차이에 대한 제2 스코어를 결정하는 단계; 및
    상기 제1 스코어와 상기 제2 스코어의 가중 합에 기초하여, 상기 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 결정하는 단계를 포함하는, 블록체인에 데이터 블록을 기록하는 방법.
  6. 제1항에 있어서,
    상기 복수의 블록체인 브랜치 각각은 식별자를 가지며,
    상기 선택된 블록체인 브랜치에 기록되는 이전 데이터 블록의 요약을 상기 타깃 데이터 블록의 블록 헤더에 기록하는 단계는,
    상기 선택된 블록체인 브랜치에 기록되는 이전 데이터 블록의 요약 및 상기 선택된 블록체인 브랜치의 식별자를 상기 타깃 데이터 블록의 블록 헤더에 기록하는 단계를 포함하고,
    컨센서스를 수행하기 위해 상기 회계 노드 그룹 중의 다른 회계 노드에 상기 타깃 데이터 블록을 송신하고, 상기 선택된 블록체인 브랜치에 상기 타깃 데이터 블록을 기록하는 단계는,
    상기 타깃 데이터 블록을 상기 회계 노드 그룹 중의 다른 회계 노드에 송신하는 단계;
    각각의 다른 회계 노드로부터 상기 타깃 데이터 블록에 대한 검증 결과를 수신하는 단계; 및
    상기 검증 결과에 기초하여 검증이 성공한 것으로 결정하는 경우, 상기 선택된 블록체인 브랜치에 타깃 데이터 블록을 기록하고, 상기 선택된 블록체인 브랜치에 상기 타깃 데이터 블록이 기록되었음을 상기 회계 노드 그룹 중의 다른 회계 노드에 통지하는 단계 - 상기 다른 회계 노드는 각각 상기 블록 헤더에 기록되어 있는 상기 블록체인 브랜치의 식별자에 기초하여 상기 선택된 블록체인 브랜치에 상기 타깃 데이터 블록을 기록함 -를 포함하는, 블록체인에 데이터 블록을 기록하는 방법.
  7. 제6항에 있어서,
    상기 타깃 데이터 블록 내의 트랜잭션 정보는 입력 및 출력을 포함하고, 상기 입력은 상기 블록체인에 기록되는 타깃 데이터 블록의 이전 데이터 블록 내의 트랜잭션 정보의 출력에 링크되고,
    각각의 다른 회계 노드로부터의 상기 타깃 데이터 블록에 대한 검증 결과는,
    상기 타깃 데이터 블록이 상기 블록체인에 기록되기 전에 상기 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 출력이 상기 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력에 이미 링크되어 있는지 여부를 판정하고;
    상기 타깃 데이터 블록이 상기 블록체인에 기록되기 전에 상기 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 출력이 상기 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력에 이미 링크되어 있는 경우에, 상기 검증 결과가 검증이 통과되지 못함을 지시하는 것으로 결정하고;
    상기 타깃 데이터 블록이 상기 블록체인에 기록될 때 상기 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 출력이 상기 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력에 링크되지 않는 경우에, 상기 검증 결과가 검증이 통과됨을 지시하는 것으로 결정하는 방식으로 결정되는, 블록체인에 데이터 블록을 기록하는 방법.
  8. 제7항에 있어서,
    상기 타깃 데이터 블록이 상기 블록체인에 기록되기 전에 상기 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 출력이 상기 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력에 이미 링크되어 있는지 여부를 판정하는 것은,
    상기 이전 데이터 블록이 상기 블록체인에 기록되는 시각부터 상기 타깃 데이터 블록이 상기 블록체인에 기록되는 시각까지 상기 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력을 순회하고, 각각의 입력이 이전 데이터 블록 내의 대응하는 트랜잭션 정보의 출력에 링크되어 있는지를 하나씩 판정하는 것을 포함하는, 블록체인에 데이터 블록을 기록하는 방법.
  9. 제7항에 있어서,
    상기 타깃 데이터 블록이 상기 블록체인에 기록되기 전에 상기 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 출력이 상기 블록체인에 기록된 데이터 블록 내의 트랜잭션 정보의 입력에 이미 링크되어 있는지 여부를 판정하는 것은,
    상기 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 상기 이전 데이터 블록의 트랜잭션 정보의 출력에 대응하는 점유 상태 워드(occupancy state word)를 조회하고;
    상기 점유 상태 워드가 점유 상태를 지시하는 경우에 상기 검증 결과가 검증이 통과되지 못함을 지시하는 것으로 결정하고;
    상기 점유 상태 워드가 미점유 상태를 지시하는 경우에 상기 검증 결과가 검증이 통과됨 지시하는 것으로 결정하는 것을 포함하고;
    상기 컨센서스를 수행하기 위해 상기 회계 노드 그룹 중의 다른 회계 노드에 상기 타깃 데이터 블록을 송신하고, 상기 선택된 블록체인 브랜치에 상기 타깃 데이터 블록을 기록하는 단계 후에, 상기 방법은,
    상기 타깃 데이터 블록 내의 트랜잭션 정보의 출력에 대응하는 점유 상태 워드를 미점유 상태를 지시하도록 설정하는 단계; 및
    상기 타깃 데이터 블록 내의 트랜잭션 정보의 입력이 링크되는 이전 데이터 블록 내의 트랜잭션 정보의 출력에 대응하는 점유 상태 워드를 점유 상태를 지시하도록 설정하는 단계를 더 포함하는, 블록체인에 데이터 블록을 기록하는 방법.
  10. 제6항에 있어서,
    상기 선택된 블록체인 브랜치에 기록되는 이전 데이터 블록의 요약을 상기 타깃 데이터 블록의 블록 헤더에 기록하는 단계는, 상기 선택된 블록체인에 기록되는 이전 데이터 블록의 요약과 상기 리더 회계 노드에 고유한 개인 키를 사용하여 상기 요약을 암호화하여 형성된 서명을 상기 타깃 데이터 블록의 블록 헤더에 기록하는 단계를 포함하고;
    각각의 다른 회계 노드로부터의 상기 타깃 데이터 블록에 대한 검증 결과는,
    상기 리더 회계 노드에 고유한 공개 키를 사용하여 상기 서명을 암호해독하고;
    상기 암호해독의 결과를 상기 블록 헤더의 요약과 비교하고;
    상기 암호해독의 결과가 상기 블록 헤더 내의 요약과 동일한 경우에 상기 검증 결과는 검증이 통과됨을 지시하는 것으로 결정하고;
    상기 암호해독의 결과가 상기 블록 헤더 내의 요약과 다른 경우에 상기 검증 결과는 검증이 통과되지 못함을 지시하는 것으로 결정하는 방식으로 생성되는, 블록체인에 데이터 블록을 기록하는 방법.
  11. 제1항에 있어서,
    상기 타깃 데이터 블록 내의 트랜잭션 정보는 상기 트랜잭션 정보의 생성기 노드에 의해 상기 생성기 노드에 고유한 개인 키를 사용하여 암호화되어 서명을 형성하고, 상기 서명은 상기 타깃 데이터 블록에 상기 트랜잭션 정보와 함께 기록되고;
    상기 다른 회계 노드 각각으로부터의 상기 타깃 데이터 블록에 대한 검증 결과는,
    상기 생성기 노드에 고유한 공개 키를 사용하여 상기 타깃 데이터 블록 내의 트랜잭션 정보 각각의 서명을 암호해독하고;
    상기 타깃 데이터 블록 내의 트랜잭션 정보 각각에 대한 요약을 취득하고;
    상기 암호해독의 결과를 상기 타깃 데이터 블록 내의 대응하는 트랜잭션 정보의 요약과 비교하고;
    각각의 트랜잭션 정보에 대한 암호해독 결과가 대응하는 트랜잭션 정보의 요약과 동일한 경우에 상기 검증 결과는 검증이 통과됨을 지시하는 것으로 결정하고;
    각각의 트랜잭션 정보에 대한 암호해독 결과가 대응하는 트랜잭션 정보의 요약과 다른 경우에 상기 검증 결과는 검증이 통과되지 못함을 지시하는 것으로 결정하는 방식으로 생성되는, 블록체인에 데이터 블록을 기록하는 방법.
  12. 제1항에 있어서,
    상기 복수의 블록체인 브랜치는 M 차원 행렬로 배열되고, M은 1보다 큰 양의 정수이며, 각각의 블록체인 브랜치의 식별자는 M개의 요소 중 하나의 벡터로 지시되고, 상기 M개의 요소 각각은 대응하는 차원의 대응하는 블록체인 브랜치의 시퀀스 번호를 나타내는, 블록체인에 데이터 블록을 기록하는 방법.
  13. 블록체인 기록을 위한 리더 회계 노드로서,
    상기 블록체인은 복수의 블록체인 브랜치를 포함하고, 데이터 블록은 동일한 회계 노드 그룹에 의해 상기 복수의 블록체인 브랜치에 기록되고, 상기 리더 회계 노드는 상기 회계 노드 그룹 중에서 선택되며, 상기 리더 회계 노드는,
    타깃 데이터 블록을 생성하도록 구성된 타깃 데이터 블록 생성 모듈;
    상기 복수의 블록체인 브랜치 중에, 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖는 블록체인 브랜치가 있는지 여부를 판정하도록 구성된 결정 모듈;
    각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치가 있는 경우, 각각이 컨센서스가 수행되고 있고 업로딩될 데이터 블록을 갖지 않는 블록체인 브랜치들 중에서, 상기 타깃 데이터 블록을 기록하기 위한 블록체인 브랜치를 선택하도록 구성된 블록체인 브랜치 선택 모듈;
    선택된 블록체인 브랜치에 기록되는 이전 데이터 블록의 요약을 상기 타깃 데이터 블록의 블록 헤더에 기록하도록 구성된 요약 기록 모듈; 및
    컨센서스를 수행하기 위해 상기 회계 노드 그룹 중의 다른 회계 노드에 상기 타깃 데이터 블록을 송신하고, 상기 선택된 블록체인 브랜치에 상기 타깃 데이터 블록을 기록하도록 구성된 컨센서스 및 업로딩 모듈
    을 포함하는 리더 회계 노드.
  14. 리더 회계 노드로서,
    컴퓨터로 판독 가능한 명령어를 저장하도록 구성된 메모리; 및
    상기 메모리에 저장된, 상기 컴퓨터로 판독 가능한 명령어를 판독하여 제1항 내지 제12항 중 어느 한 항에 따른 방법을 수행하도록 구성된 프로세서
    를 포함하는 리더 회계 노드.
  15. 컴퓨터로 판독 가능한 명령어가 저장된 컴퓨터 프로그램 기록 매체로서,
    상기 컴퓨터로 판독 가능한 명령어는 컴퓨터의 프로세서에 의해 실행될 때, 컴퓨터로 하여금 제1항 내지 제12항 중 어느 한 항에 따른 방법을 수행하게 하는,
    컴퓨터 프로그램 기록 매체.
  16. 컴퓨터로 판독 가능한 기록 매체에 저장된 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은 컴퓨터에서 실행될 때, 상기 컴퓨터로 하여금 제1항 내지 제12항 중 어느 한 항에 따른 방법을 수행하게 하는,
    컴퓨터 프로그램.
KR1020217016532A 2019-02-21 2020-02-20 블록체인에 데이터 블록을 기록하는 방법과, 리더 회계 노드 및 매체 KR102633548B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201910130823.9A CN109902091B (zh) 2019-02-21 2019-02-21 数据区块在区块链上记录的方法、领导记账节点和介质
CN201910130823.9 2019-02-21
PCT/CN2020/075976 WO2020169061A1 (zh) 2019-02-21 2020-02-20 数据区块在区块链上记录的方法、领导记账节点和介质

Publications (2)

Publication Number Publication Date
KR20210080550A KR20210080550A (ko) 2021-06-30
KR102633548B1 true KR102633548B1 (ko) 2024-02-02

Family

ID=66945172

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217016532A KR102633548B1 (ko) 2019-02-21 2020-02-20 블록체인에 데이터 블록을 기록하는 방법과, 리더 회계 노드 및 매체

Country Status (6)

Country Link
US (1) US11902446B2 (ko)
EP (1) EP3929762B1 (ko)
JP (1) JP7204278B2 (ko)
KR (1) KR102633548B1 (ko)
CN (1) CN109902091B (ko)
WO (1) WO2020169061A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109902091B (zh) 2019-02-21 2021-08-10 腾讯科技(深圳)有限公司 数据区块在区块链上记录的方法、领导记账节点和介质
CN109949111B (zh) * 2019-03-06 2023-12-08 深圳市智税链科技有限公司 电子票据标识分配方法、电子票据生成方法、装置及系统
CN110535836B (zh) * 2019-08-12 2021-10-29 安徽师范大学 一种基于角色分类的信任区块链共识方法
CN112584364B (zh) * 2019-09-30 2024-03-08 阿里巴巴集团控股有限公司 蓝牙网络及其通信方法、设备和存储介质
CN111275553B (zh) * 2020-01-20 2023-08-11 联动优势科技有限公司 一种区块链的数据存储方法及区块链系统
CN111695128B (zh) * 2020-06-15 2023-11-21 中国银行股份有限公司 用于数据资产分配的区块链网络的数据处理方法及装置
CN111984735A (zh) * 2020-09-03 2020-11-24 深圳壹账通智能科技有限公司 一种数据归档方法、装置、电子设备和存储介质
KR102477240B1 (ko) * 2020-12-31 2022-12-14 심왕섭 듀얼 블록체인 시스템을 이용한 회계정보 관리 수단
CN113612761B (zh) * 2021-07-30 2022-03-22 立信(重庆)数据科技股份有限公司 一种基于区块链的调研数据上链方法及系统
CN113421097B (zh) * 2021-08-23 2021-11-30 腾讯科技(深圳)有限公司 一种数据处理方法、装置、计算机设备及存储介质
CN113761071B (zh) * 2021-10-09 2023-07-11 支付宝(杭州)信息技术有限公司 一种共识方法、区块链系统和共识节点
KR102557196B1 (ko) * 2021-11-23 2023-07-19 주식회사 디지캡 프록시 서버를 이용하여 노드간 트랜잭션을 전달하는 블록체인 시스템
CN114140102A (zh) * 2021-12-02 2022-03-04 杭州复杂美科技有限公司 交易发送方法、计算机设备和存储介质
CN114466024B (zh) * 2022-02-21 2024-02-13 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 基于新型PoM共识算法的分布式账本系统及方法
CN116192382B (zh) * 2023-03-01 2023-09-15 齐齐哈尔大学 一种基于区块链的dh密钥第三方篡改验证方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107767478A (zh) 2017-09-06 2018-03-06 阿里巴巴集团控股有限公司 一种保存工作记录的方法及装置
US20180165476A1 (en) 2016-12-09 2018-06-14 International Business Machines Corporation Interlocked blockchains to increase blockchain security
CN109241772A (zh) 2018-09-07 2019-01-18 腾讯科技(深圳)有限公司 发票区块链记录方法、装置、区块链网关服务器和介质
CN109359973A (zh) 2018-08-24 2019-02-19 阿里巴巴集团控股有限公司 基于区块链的数据存证方法和装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180152442A1 (en) * 2003-12-22 2018-05-31 Guardtime Ip Holdings Limited Blockchain-supported, hash tree-based digital signature infrastructure
US9608829B2 (en) * 2014-07-25 2017-03-28 Blockchain Technologies Corporation System and method for creating a multi-branched blockchain with configurable protocol rules
US20170236123A1 (en) * 2016-02-16 2017-08-17 Blockstack Inc. Decentralized processing of global naming systems
US10198325B2 (en) * 2016-05-24 2019-02-05 Mastercard International Incorporated Method and system for desynchronization recovery for permissioned blockchains using bloom filters
US10204341B2 (en) * 2016-05-24 2019-02-12 Mastercard International Incorporated Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees
US11907406B2 (en) * 2016-08-01 2024-02-20 Cryptowerk Corp. Computer-implemented method and system of tamper-evident recording of a plurality of service data items
CN108876361A (zh) * 2017-05-12 2018-11-23 李平 区块链系统、区块生成方法及计算机可读存储介质
US11281644B2 (en) * 2017-07-28 2022-03-22 Hitachi, Ltd. Blockchain logging of data from multiple systems
CN107480990B (zh) 2017-08-01 2021-02-26 中国联合网络通信集团有限公司 区块链记账方法及装置
TWI659373B (zh) * 2018-02-14 2019-05-11 財團法人工業技術研究院 區塊鏈系統及應用其的方法
US10630463B2 (en) * 2018-02-26 2020-04-21 Ca, Inc. Meta block chain
CN112600841B (zh) * 2018-04-19 2023-09-19 创新先进技术有限公司 基于区块链的信用记录共享方法及装置、电子设备
US10728019B2 (en) * 2018-04-27 2020-07-28 Gulfstream Aerospace Corporation Communication nodes, distributed communication networks, and methods for monitoring communication in a communication network using blockchains
US11030217B2 (en) * 2018-05-01 2021-06-08 International Business Machines Corporation Blockchain implementing cross-chain transactions
CN108810119A (zh) * 2018-05-31 2018-11-13 中国联合网络通信集团有限公司 区块链处理方法、装置及区块链节点
CN108984744B (zh) * 2018-07-16 2022-02-18 夸克链科技(深圳)有限公司 一种非主链区块自增长方法
WO2020160391A1 (en) * 2019-01-31 2020-08-06 Sensoriant, Inc. An efficient, environmental and consumer friendly consensus method for cryptographic transactions
CN109902091B (zh) * 2019-02-21 2021-08-10 腾讯科技(深圳)有限公司 数据区块在区块链上记录的方法、领导记账节点和介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180165476A1 (en) 2016-12-09 2018-06-14 International Business Machines Corporation Interlocked blockchains to increase blockchain security
CN107767478A (zh) 2017-09-06 2018-03-06 阿里巴巴集团控股有限公司 一种保存工作记录的方法及装置
CN109359973A (zh) 2018-08-24 2019-02-19 阿里巴巴集团控股有限公司 基于区块链的数据存证方法和装置
CN109241772A (zh) 2018-09-07 2019-01-18 腾讯科技(深圳)有限公司 发票区块链记录方法、装置、区块链网关服务器和介质

Also Published As

Publication number Publication date
EP3929762A4 (en) 2022-04-13
US11902446B2 (en) 2024-02-13
WO2020169061A1 (zh) 2020-08-27
JP7204278B2 (ja) 2023-01-16
US20210234703A1 (en) 2021-07-29
JP2022521693A (ja) 2022-04-12
KR20210080550A (ko) 2021-06-30
EP3929762B1 (en) 2023-04-19
CN109902091B (zh) 2021-08-10
CN109902091A (zh) 2019-06-18
EP3929762A1 (en) 2021-12-29

Similar Documents

Publication Publication Date Title
KR102633548B1 (ko) 블록체인에 데이터 블록을 기록하는 방법과, 리더 회계 노드 및 매체
US20220329422A1 (en) Data processing method, apparatus, computer program, and storage medium
US11924358B2 (en) Method for issuing digital certificate, digital certificate issuing center, and medium
US20210304201A1 (en) Transaction verification method and apparatus, storage medium, and electronic device
CN107657438B (zh) 一种区块链生成方法、数据验证方法、节点及系统
CN107807951B (zh) 一种区块链生成方法、数据验证方法、节点及系统
US10491396B2 (en) Method and server for providing notary service for file and verifying file recorded by notary service
US20190334726A1 (en) Blockchain-based method and system for immutable resource allocation in a cloud computing environment
US20220239496A1 (en) Blockchain consensus method, device and system
US20210083856A1 (en) Improved hardware security module management
US7117366B2 (en) Public key based authentication method for transaction delegation in service-based computing environments
US20210217004A1 (en) Data processing method, apparatus, device, and medium in blockchain fund settlement system
CN109194669B (zh) 一种轻量级节点的数据传输方法、装置、设备和介质
WO2020233614A1 (zh) 结合代码标注与事件类型的有条件的收据存储方法和节点
US20200250655A1 (en) Efficient, environmental and consumer friendly consensus method for cryptographic transactions
CN103403731A (zh) 云存储系统的数据加密处理装置和方法
CN111865869B (zh) 基于随机映射的注册、认证方法及装置、介质及电子设备
CN115589298B (zh) 区块链的信息验证方法、装置和系统、设备、介质
US20230244797A1 (en) Data processing method and apparatus, electronic device, and medium
WO2010012721A1 (en) Propagating information from a trust chain processing
CN112994882B (zh) 基于区块链的鉴权方法、装置、介质及设备
CN114782045A (zh) 跨链非事务性写入方法和装置、存储介质、电子设备
EP4238032A1 (en) Autonomous cryptographic and blockchain actor in a browser execution context
CN112511565B (zh) 请求响应方法、装置、计算机可读存储介质及电子设备
US11924362B2 (en) Anonymous uncensorable cryptographic chains

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant