KR102098548B1 - 블록체인에서 블록 데이터를 검증하기 위한 방법 및 장치 - Google Patents

블록체인에서 블록 데이터를 검증하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR102098548B1
KR102098548B1 KR1020197021825A KR20197021825A KR102098548B1 KR 102098548 B1 KR102098548 B1 KR 102098548B1 KR 1020197021825 A KR1020197021825 A KR 1020197021825A KR 20197021825 A KR20197021825 A KR 20197021825A KR 102098548 B1 KR102098548 B1 KR 102098548B1
Authority
KR
South Korea
Prior art keywords
data
block
newly added
verification value
node
Prior art date
Application number
KR1020197021825A
Other languages
English (en)
Other versions
KR20190099053A (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 KR20190099053A publication Critical patent/KR20190099053A/ko
Application granted granted Critical
Publication of KR102098548B1 publication Critical patent/KR102098548B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • 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
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • H04L9/16Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
    • 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
    • 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

Abstract

본 출원은 블록 데이터를 검증하기 위한 방법 및 장치를 개시하는데, 방법 및 장치는: 복수의 데이터 노드를 포함하는 블록으로부터, 새롭게 추가된 데이터를 저장하도록 구성되는 데이터 노드를 선택하는 것; 데이터 노드에 대한 새롭게 추가된 데이터의 검증 값을 결정하고, 새롭게 추가된 데이터의 검증 값에 기초하여 데이터 노드의 업데이트 검증 값을 계산하는 것; 및 데이터 노드의 업데이트 검증 값 및 블록에 포함되는 다른 데이터 노드의 원래의 검증 값에 기초하여 블록의 검증 값을 획득하는 것을 포함하되; 블록의 검증 값은, 블록에 저장되는 데이터가 블록체인의 다른 블록에 저장되는 데이터와 일치하는지의 여부를 검증하기 위해 사용된다. 새로운 데이터가 블록에 추가되는 경우 검증 값이 블록 내의 모든 데이터를 사용하는 것에 의해 계산되기 때문에 너무 많은 시간이 소비된다는 현존하는 기술에서의 문제점을 완화하게 위해, 그리고 검증 값을 계산하기 위한 시간을 효과적으로 단축하기 위해, 새롭게 추가된 데이터를 저장하도록 구성되는 데이터 노드의 업데이트 검증 값은 새롭게 추가된 데이터를 사용하는 것에 의해 결정되어, 블록 데이터 검증 효율성을 향상시킨다.

Description

블록체인에서 블록 데이터를 검증하기 위한 방법 및 장치
본 출원은 컴퓨터 통신 기술 분야에 관한 것으로, 특히 블록체인(blockchain)에서 블록 데이터를 검증하기 위한 방법 및 장치에 관한 것이다.
블록체인 기술은 또한, 분산 원장 기술(distributed ledger technology)로도 칭해지며, 분산 인터넷 데이터베이스 기술이다. 블록체인 기술은 탈중앙화되고(decentralized), 투명하며, 신뢰 가능하고, 무단 변경될 수 없다. 블록체인에 저장된 데이터의 각각의 단편(piece)이 브로드캐스팅되어 블록체인의 각각의 블록에 저장된다. 따라서, 완전하고 일관된 데이터가 블록체인의 각각의 블록에 저장된다.
실제로, 모든 블록에 저장되는 데이터는 블록체인에서 일관성을 유지할 필요가 있다. 데이터 검증 방법은 일반적으로 모든 블록에 저장되는 데이터가 일관성이 있는지의 여부를 검증하기 위해 사용된다.
구체적으로, 블록체인 내의 모든 블록에 저장되는 데이터가 일치하는지의 여부를 결정하기 위해서는, 블록 데이터 검증 동안, 모든 블록의 검증 값이 결정될 필요가 있고, 모든 블록의 검증 값이 비교될 필요가 있다.
연구에 의하면, 각각의 블록의 검증 값이 결정되어야 할 때, 블록에 저장되는 데이터의 양이 상대적으로 많기 때문에, 블록의 검증 값이 결정되어야 하는 경우, 블록의 검증 값을 계산하기 위해서는, 블록에 저장되는 모든 데이터가 계산될 필요가 있다는 것을 밝히고 있다. 그러나, 블록에 저장되는 데이터의 양이 증가함에 따라, 검증 값 계산량이 증가하고, 결과적으로 데이터 검증 효율성이 감소한다.
따라서, 블록 데이터 검증 효율성을 향상시키는 방법이 당해 기술 분야에서 긴급하게 완화될 필요가 있는 문제가 되었다.
배경 기술에서 개시되는 정보는, 본 출원의 일반적인 배경의 이해를 향상시키도록 의도되는 것에 불과하며, 그 정보가 기술 분야의 숙련된 자에게 공지된 현존하는 기술을 구성한다는 것을 인정하거나 또는 시인하는 것으로 간주되어서는 안된다.
이것을 고려하여, 현존하는 기술에서 상대적으로 낮은 블록 데이터 검증 효율성의 문제점을 완화하기 위해, 본 출원의 구현예는 블록 데이터를 검증하기 위한 방법 및 장치를 제공한다.
본 출원의 구현예는 블록 데이터를 검증하기 위한 방법을 제공하는데, 방법은: 복수의 데이터 노드를 포함하는 블록으로부터, 새롭게 추가된 데이터를 저장하도록 구성되는 데이터 노드를 선택하는 것; 데이터 노드에 대한 새롭게 추가된 데이터의 검증 값을 결정하고, 새롭게 추가된 데이터의 검증 값에 기초하여 데이터 노드의 업데이트 검증 값을 계산하는 것; 및 데이터 노드의 업데이트 검증 값 및 블록에 포함되는 다른 데이터 노드의 원래의 검증 값에 기초하여 블록의 검증 값을 획득하는 것을 포함하되; 블록의 검증 값은, 블록에 저장되는 데이터가 블록체인의 다른 블록에 저장되는 데이터와 일치하는지의 여부를 검증하기 위해 사용된다.
본 출원의 구현예는 또한 블록 데이터를 검증하기 위한 장치를 제공하는데, 장치는: 복수의 데이터 노드를 포함하는 블록으로부터, 새롭게 추가된 데이터를 저장하도록 구성되는 데이터 노드를 선택하도록 구성되는 선택 모듈; 데이터 노드에 대한 새롭게 추가된 데이터의 검증 값을 결정하도록, 그리고 새롭게 추가된 데이터의 검증 값에 기초하여 데이터 노드의 업데이트 검증 값을 계산하도록 구성되는 결정 모듈; 및 데이터 노드의 업데이트 검증 값 및 블록에 포함되는 다른 데이터 노드의 원래의 검증 값에 기초하여 블록의 검증 값을 획득하도록 구성되는 프로세싱 모듈을 포함하되; 블록의 검증 값은, 블록에 저장되는 데이터가 블록체인의 다른 블록에 저장되는 데이터와 일치하는지의 여부를 검증하기 위해 사용된다.
본 출원의 구현예에서 사용되는 앞서 설명된 적어도 하나의 기술적 솔루션은 다음의 유익한 효과를 달성할 수 있다:
새로운 데이터가 블록에 추가되는 경우 검증 값이 블록 내의 모든 데이터를 사용하는 것에 의해 계산되기 때문에 너무 많은 시간이 소비된다는 현존하는 기술에서의 문제점을 완화하게 위해, 새로운 데이터가 블록에 추가되는 경우, 새롭게 추가된 데이터를 저장하도록 구성되는 데이터 노드의 업데이트 검증 값은 새롭게 추가된 데이터를 사용하는 것에 의해 결정된다. 그러한 만큼, 새로운 데이터가 추가된 블록의 검증 값이 계산될 때, 소비된 시간은 블록 내의 데이터의 양과 무관하며, 검증 값을 계산하기 위한 시간은 효과적으로 단축되어, 블록 데이터 검증 효율성을 향상시킨다.
여기에서 설명되는 첨부의 도면은, 본 출원의 더 나은 이해를 제공하도록 그리고 본 출원의 일부를 구성하도록 의도된다. 본 출원의 예시적인 구현예 및 본 출원의 구현예의 설명은, 본 출원을 설명하도록 의도되며, 본 출원에 대한 제한을 구성하지는 않는다. 첨부의 도면에서:
도 1은, 본 출원의 구현예에 따른, 블록 데이터를 검증하기 위한 방법을 예시하는 개략적인 플로우차트이다;
도 2는, 본 출원의 구현예에 따른, 머클 트리(Merkle tree)를 예시하는 개략적인 구조도이다;
도 3은, 본 출원의 구현예에 따른, 새롭게 추가된 데이터의 검증 값을 결정하는 개략적인 플로우차트이다;
도 4는, 본 출원의 구현예에 따른, 새롭게 추가된 데이터의 검증 값을 결정하는 개략적인 플로우차트이다; 그리고
도 5는, 본 출원의 구현예에 따른, 블록 데이터를 검증하기 위한 장치를 예시하는 개략적인 구조도이다.
본 출원의 목적을 달성하기 위해, 본 출원의 구현예는 블록 데이터를 검증하기 위한 방법 및 장치를 제공한다. 새롭게 추가된 데이터를 저장하도록 구성되는 데이터 노드는 복수의 데이터 노드를 포함하는 블록으로부터 선택되고; 데이터 노드에 대한 새롭게 추가된 데이터의 검증 값이 결정되고, 새롭게 추가된 데이터의 검증 값에 기초하여 데이터 노드의 업데이트 검증 값을 계산되며; 데이터 노드의 업데이트 검증 값과 블록에 포함되는 다른 데이터 노드의 원래의 검증 값에 기초하여 블록의 검증 값이 획득된다. 블록의 검증 값은, 블록에 저장되는 데이터가 블록체인의 다른 블록에 저장되는 데이터와 일치하는지의 여부를 검증하기 위해 사용된다. 모든 이력 데이터(historical data)를 프로세싱하기 위한 현존하는 기술과 비교하여, 본 출원의 구현예에서는, 블록의 새롭게 추가된 데이터가 주로 고려되고, 새로운 데이터가 블록에 추가되는 경우 검증 값이 블록 내의 모든 데이터를 사용하는 것에 의해 계산되기 때문에 너무 많은 시간이 소비된다는 현존하는 기술에서의 문제점을 완화하게 위해, 새로운 데이터가 추가되는 블록에 대해, 검증 값은 증분적 방법(incremental method)을 사용하는 것에 의해 계산된다. 그러한 만큼, 새로운 데이터가 추가된 블록의 검증 값이 계산될 때, 소비된 시간은 블록 내의 데이터의 양과 무관하며, 검증 값을 계산하기 위한 시간은 효과적으로 단축되어, 블록 데이터 검증 효율성을 향상시킨다.
본 출원의 구현예에서 설명되는 검증 값을 계산하기 위해 사용되는 미리 결정된 알고리즘은 다양한 검증 알고리즘일 수 있거나, 또는 다양한 비가역적 알고리즘일 수 있고, 본 출원의 구현예에서는, 특정한 알고리즘 타입이 구체적으로 제한되지는 않는다는 것을 주목할 가치가 있다.
예를 들면, 필요한 검증 값은 해시 알고리즘(hash algorithm)을 사용하는 것에 의해 계산될 수 있다. 해시 알고리즘은 해시 함수로도 또한 칭해질 수 있다. 해시 함수는 단방향 암호화 시스템이다, 다시 말하면, 해시 함수는 평문(plaintext)으로부터 암호문(ciphertext)으로의 비가역적 매핑이다, 다시 말하면, 함수는 암호화 프로세스만을 포함하고 암호 해제 프로세스(decryption process)는 포함하지 않는다. 또한, 해시 함수는 임의의 길이의 입력을 변경한 이후 고정된 길이의 출력을 획득할 수 있다. 통상적인 해시 알고리즘은 MD2, MD4, MD5, SHA-1, 등등을 포함한다.
기술 분야의 숙련된 자는, 본 출원의 구현예의 명세에서 언급되는 해시 알고리즘이 예에 불과하며, 본 개시에 대한 제한을 구성하지는 않는다는 것을 이해해야 한다. 기술 분야의 숙련된 자는, 실제 적용 및 필요에 기초하여, 검증을 위해 사용되는 다른 알고리즘을 사용할 수 있다. 이것은 여기에서는 특별히 제한되지는 않는다.
본 출원의 목적, 기술적 솔루션, 및 이점을 더욱 명확하게 만들기 위해, 하기에서는, 본 출원의 특정한 구현예 및 대응하는 첨부의 도면을 참조하여 본 출원의 기술적 솔루션을 명확하고 포괄적으로 설명한다. 명백하게, 설명되는 구현예는 본 출원의 구현예의 전체가 아닌 단지 일부일 뿐이다. 창의적인 노력 없이 본 출원의 구현예에 기초하여 기술 분야에서 통상의 기술을 가진 자에 의해 획득되는 다른 모든 구현예는 본 출원의 보호 범위 내에 속할 것이다.
이하, 첨부하는 도면을 참조하여 본 출원의 구현예에서 제공되는 기술적 솔루션을 상세히 설명한다.
도 1은, 본 출원의 구현예에 따른, 블록 데이터를 검증하기 위한 방법을 예시하는 개략적인 플로우차트이다. 블록 데이터를 검증하기 위한 방법은 다음의 단계를 포함한다.
단계 S110: 복수의 데이터 노드를 포함하는 블록으로부터, 새롭게 추가된 데이터를 저장하도록 구성되는 데이터 노드를 선택함.
블록체인은 체인 데이터 구조를 사용함으로써 여러 블록을 연결하는 것에 의해 획득된다. 각각의 블록은 복수의 데이터 노드를 포함한다. 블록에 포함되는 데이터 노드는 머클 트리의 형태로 구성될 수 있다, 다시 말하면, 각각은 루트(root) 노드와 복수의 리프(leaf) 노드를 포함한다.
머클 트리 구조에서, 블록에 포함되는 데이터 노드는, 머클 트리 구조에서, 도 2에서 도시되는 하부 리프 노드(bottom leaf node)로서 사용된다.
도 2로부터, 머클 트리 구조에서, A, B, C, D 및 E는 블록 내의 데이터 노드에 대응한다는 것을 알 수 있다.
기술 분야의 숙련된 자는, 블록 내의 데이터 노드에 기초하여 머클 트리가 구성되고, 필요에 따라, 머클 트리의 깊이가 결정될 수 있다는 것을 이해해야 한다.
블록체인 내의 모든 블록에 저장되는 데이터 사이의 일관성을 보장하기 위해, 블록체인 내의 모든 블록에서 구성되는 머클 트리는 동일한 깊이를 가지며, 모든 블록에 포함되는 데이터 노드의 양도 또한 동일하다는 것을 주목할 가치가 있다. 또한, 여기에서 열거되는 머클 트리는 설명의 예에 불과하며, 기술 분야의 숙련된 자는 다른 적절한 데이터 구성 형태를 사용할 수 있다는 것이 추가로 이해되어야 한다. 이것은 여기에서는 특별히 제한되지는 않는다.
저장될 데이터(여기에서 데이터는 새롭게 추가된 데이터로 칭해질 수 있음)에 대해, 새롭게 추가된 데이터를 저장하기 위해 사용된 블록이 먼저 결정되고, 그 다음, 새롭게 추가된 데이터를 저장하도록 구성되는 블록 내의 데이터 노드가 결정된다.
따라서, 새롭게 추가된 데이터가 수신되면, 새롭게 추가된 데이터를 저장하기 위해 사용되는 블록 정보가 먼저 결정된다. 블록 정보는, 블록 식별자 및 데이터 노드 식별자를 포함한다.
구체적으로, 결정된 블록 정보를 획득하기 위해, 새롭게 추가된 데이터에 대응하는 데이터 콘텐츠(data content)가 계산된다.
본 출원의 이러한 구현예에서, 새롭게 추가된 데이터에 대응하는 데이터 콘텐츠는 새롭게 추가된 데이터의 타입에 기초하여 결정될 수 있거나, 또는 새롭게 추가된 데이터에 포함되는 데이터에 기초하여 결정될 수 있다. 이것은 여기에서는 특별히 제한되지는 않는다.
예를 들면, 새롭게 추가된 데이터가 텍스트 데이터인 경우, 새롭게 추가된 데이터에 대응하는 데이터 콘텐츠는 텍스트 데이터의 콘텐츠 다이제스트로서 이해될 수 있거나, 또는 텍스트 데이터로서 이해될 수 있고, 새롭게 추가된 데이터에 대응하는 데이터 콘텐츠(예를 들면, 콘텐츠 다이제스트 또는 텍스트 데이터)는, 계산 결과를 획득하기 위해, 미리 결정된 알고리즘에 기초하여 계산될 수 있다. 이 경우, 블록 정보는 계산 결과에 기초하여 결정된다.
다른 예로서, 새롭게 추가된 데이터가 트랜잭션 데이터의 하나의 단편인 경우, 계산 결과를 획득하기 위해, 트랜잭션 데이터는 미리 결정된 알고리즘에 기초하여 계산될 수 있다. 이 경우, 블록 정보는 계산 결과에 기초하여 결정된다.
본 출원의 이러한 구현예에서 설명되는 미리 결정된 알고리즘에서, 예를 들면, 나머지 계산 방법(remainder calculation method)에 있어서, 데이터 콘텐츠는 정수 데이터로 변환되고, 블록체인에 포함되는 블록의 양이 제수(divisor)로서 사용되고, 몫과 나머지를 획득하기 위해, 정수 데이터는 제수를 사용하는 것에 의해 계산된다. 여기에서, 몫은 블록 식별자로서 간주될 수 있고, 나머지는 블록에서의 데이터 노드 식별자로서 간주될 수 있다. 대안적으로, 몫은 데이터 노드 식별자로서 간주될 수 있고, 나머지는 블록 식별자로서 간주될 수 있다.
물론, 새롭게 추가된 데이터를 필요에 따라 적절한 블록 및 데이터 노드에 할당하기 위해, 기술 분야의 숙련된 자는 데이터 콘텐츠를 계산하기 위한 다른 방법을 또한 사용할 수 있는데, 예를 들면, 데이터 콘텐츠에 대해 랜덤 계산을 수행할 수 있다. 이것은 여기에서는 제한되지는 않는다.
그 다음, 블록 식별자에 기초하여, 블록 식별자에 대응하는 블록을 블록체인에서 검색하고, 발견된 블록으로부터 데이터 노드 식별자에 대응하는 데이터 노드가 결정된다.
블록체인을 획득하는 프로세스에서, 각각의 블록에 대해 하나의 블록 식별자가 결정된다. 따라서, 블록 정보가 획득되면, 블록 정보에서의 블록 식별자에 기초하여, 블록 식별자에 대응하는 블록을 블록체인에서 검색할 수 있다.
각각의 블록은 복수의 데이터 노드를 포함하고, 하나의 데이터 노드 식별자가 각각의 데이터 노드에 대해 결정될 수 있다. 따라서, 블록 정보가 획득되면, 데이터 노드 식별자에 대응하는 데이터 노드는, 블록 정보에서의 데이터 노드 식별자에 기초하여 발견된 블록체인으로부터 결정될 수 있다.
마지막으로, 발견된 데이터 노드는 새롭게 추가된 데이터를 저장하도록 구성되는 데이터 노드로서 사용된다.
단계 S120: 데이터 노드에 대한 새롭게 추가된 데이터의 검증 값을 결정함.
본 출원의 이러한 구현예에서, 새롭게 추가된 데이터가 데이터 노드에 저장되기 이전에 데이터 노드에 데이터가 어쩌면 저장되었고, 이들 데이터 중 일부는 어쩌면 새롭게 추가된 데이터와 관련되기 때문에, 새롭게 추가된 데이터와 연관된 데이터는 관련 데이터로서 언급될 수 있다. 대안적으로, 데이터 노드에 저장되는 데이터는, 어쩌면, 새롭게 추가된 데이터와 관련되지 않는다, 다시 말하면, 데이터 노드는 새롭게 추가된 데이터와 연관된 관련 데이터를 포함하지 않는다.
본 출원의 이러한 구현예에서 설명되는 관련성 관계(association relationship)는, 유저 계정, 결제 활동, 트랜잭션 시간, 트랜잭션 위치, 등등, 예를 들면, 한 명의 유저의 두 단편의 트랜잭션 데이터 때문에 생성되는 관계일 수 있다는 것을 주목할 가치가 있다. 이 경우, 두 단편의 트랜잭션 데이터는 동일한 유저 계정 때문에 관련된다. 대안적으로, 관련성 관계는 트랜잭션 거동 때문에 생성되는 관계일 수 있다. 예를 들면, 하나의 단편의 트랜잭션 데이터에 기록되는 콘텐츠는, 유저 A가 유저 B에게 100 위안을 송금한다는 것이고, 다른 단편의 트랜잭션 데이터에 기록되는 콘텐츠는 유저 B가 유저 A에게 100 위안을 송금한다는 것이다. 이 경우, 전송 거동에 포함되는 오브젝트와 돈이 동일하기 때문에, 두 단편의 트랜잭션 데이터는 관련된다. 관련성 관계의 특정한 콘텐츠는 여기에서는 구체적으로 제한되지는 않는다.
또한, 새롭게 추가된 데이터가 데이터 노드에 저장되기 이전에, 어쩌면 데이터 노드에 어떠한 데이터도 저장되지 않았다. 이 경우, 데이터 노드는 새롭게 추가된 데이터와 연관된 관련 데이터를 포함하지 않는 것으로 간주될 수 있다.
그러므로, 새롭게 추가된 데이터의 검증 값을 결정하는 것은 다음의 두 가지 사례를 포함할 수 있지만, 그러나 이들로 제한되는 것은 아니다:
사례 1: 데이터 노드는 새롭게 추가된 데이터와 연관된 관련 데이터를 포함하지 않는다.
새롭게 추가된 데이터의 검증 값을 결정하기 위해, 도 3에 대한 참조가 이루어질 수 있다. 도 3은, 본 출원의 구현예에 따른, 새롭게 추가된 데이터의 검증 값을 결정하는 개략적인 플로우차트이다.
S310. 새롭게 추가된 데이터에 대응하는 문자열(character string)을 결정함.
본 출원의 이러한 구현예에서, 새롭게 추가된 데이터에 대응하는 문자열은, 데이터를 문자열로 변환하는 임의의 적절한 기술적 방법을 사용하는 것에 의해, 예를 들면, 새롭게 추가된 데이터를 대응하는 전달 함수(transfer function)를 사용함으로써 문자열로 변환하는 것에 의해, 결정될 수 있다. 이것은 여기에서는 특별히 제한되지는 않는다.
S320. 새롭게 추가된 데이터의 검증 값을 획득하기 위해, 미리 결정된 알고리즘에 기초하여 문자열을 계산함.
구체적으로는, 새롭게 추가된 데이터의 해시 값을 획득하기 위해, 그리고 해시 값을, 새롭게 추가된 데이터의 검증 값으로서 사용하기 위해, 문자열은 해시 알고리즘을 사용하는 것에 의해 계산된다.
기술 분야의 숙련된 자는, 여기에서 언급되는 해시 알고리즘이 예에 불과하며, 본 개시에 대한 제한을 구성하지는 않는다는 것을 이해해야 한다.
사례 2: 데이터 노드는 새롭게 추가된 데이터와 연관된 관련 데이터를 포함한다.
새롭게 추가된 데이터의 검증 값을 결정하기 위해, 도 4에 대한 참조가 이루어질 수 있다. 도 4는, 본 출원의 구현예에 따른, 새롭게 추가된 데이터의 검증 값을 결정하는 개략적인 플로우차트이다.
S410. 관련 데이터에 대응하는 제1 문자열 및 새롭게 추가된 데이터에 대응하는 제2 문자열을 개별적으로 결정함.
마찬가지로, 관련 데이터에 대응하는 제1 문자열 및 새롭게 추가된 데이터에 대응하는 제2 문자열은, 데이터를 문자열로 변환하는 임의의 적절한 기술적 방법을 사용하는 것에 의해, 예를 들면, 새롭게 추가된 데이터를 대응하는 전달 함수를 사용함으로써 문자열로 변환하는 것에 의해, 결정될 수 있다. 이것은 여기에서는 특별히 제한되지는 않는다.
S420. 미리 결정된 방법을 사용하는 것에 의해 제1 문자열과 제2 문자열을 소팅함(sort).
미리 결정된 방법은 실제 요구에 기초하여 결정될 수 있거나, 또는 실험 결과에 기초하여 결정될 수 있다는 것을 주목할 가치가 있다. 본 출원의 이러한 구현예에서 사용되는 소팅 방법은 제한되지는 않는다. 예를 들면, 제1 문자열 및 제2 문자열을 조합하여 계산을 위해 사용되는 문자열 그룹을 획득하기 위해, 제1 문자열 및 제2 문자열은 순차적으로 소팅된다. 제1 문자열이 제2 문자열 앞에 있는지 또는 제2 문자열이 제1 문자열 앞에 있는지의 여부는, 본 출원의 이러한 구현예에서 제한되지는 않는다. 기술 분야의 숙련된 자는, 다른 소팅 방법을 또한 사용할 수 있다.
S430. 새롭게 추가된 데이터의 검증 값을 획득하기 위해, 미리 결정된 알고리즘에 기초하여 소팅된 문자열을 계산함.
구체적으로는, 새롭게 추가된 데이터의 해시 값을 획득하기 위해, 그리고 해시 값을, 새롭게 추가된 데이터의 검증 값으로서 사용하기 위해, 소팅된 문자열은 해시 알고리즘을 사용하는 것에 의해 계산된다.
단계 S130: 새롭게 추가된 데이터의 검증 값에 기초하여 데이터 노드의 업데이트 검증 값을 계산함.
구체적으로는, 새롭게 추가된 데이터 이전에 획득되는 데이터 노드의 원래의 검증 값이 저장되고; 데이터 노드의 업데이트 검증 값은, 원래의 검증 값과 새롭게 추가된 데이터의 검증 값에 기초하여 계산된다.
본 출원의 이러한 구현예에서, 새롭게 추가된 데이터가 데이터 노드에 저장되기 이전에 다른 데이터가 저장된 경우, 다른 데이터가 저장될 때 데이터 노드에 대한 검증 값이 계산된다. 검증 값은 새롭게 추가된 데이터에 대한 원래의 검증 값으로 칭해질 수 있다.
예를 들면, 데이터 노드 A에 대해, 하나의 단편의 데이터가 저장될 때마다 하나의 검증 값이 계산된다, 다시 말하면, 데이터 노드의 검증 값은 데이터 노드의 데이터와 함께 변한다. 새롭게 추가된 데이터가 저장되기 이전에 데이터 노드 A에 데이터 11 및 데이터 12가 저장되었다고 가정하면, 데이터 노드에 데이터 11이 저장될 때 검증 값 a가 계산되고, 데이터 12가 데이터 노드에 저장될 때 a는 원래의 검증 값으로 참조될 수 있다. 이 경우, 원래의 검증 값을 사용하는 것에 의해 검증 값 b가 계산되고, b는 업데이트 검증 값으로 칭해질 수 있다.
새롭게 추가된 데이터가 데이터 13이라고 가정하면, 데이터 13의 검증 값 c가 단계 S120에 따라 획득된다. 이 경우, 데이터 13가 저장되기 이전에 획득되는 데이터 노드의 검증 값, 즉 검증 값 b가 결정될 필요가 있고, 검증 값 b는 원래의 검증 값으로 칭해진다. 데이터 노드의 업데이트 검증 값은, 검증 값 c 및 검증 값 b를 사용하는 것에 의해 미리 결정된 알고리즘에 기초하여 계산된다.
데이터 노드에 어떠한 데이터도 저장되어 있지 않고, 새롭게 추가된 데이터가 데이터 노드의 제1 데이터로서 사용되는 경우, 새롭게 추가된 데이터의 검증 값을 검증 값은, 본 출원의 이러한 구현예에서, 데이터 노드의 검증 값으로서 간주될 수 있다는 것을 주목할 가치가 있다.
단계 S140: 데이터 노드의 업데이트 검증 값 및 블록에 포함되는 다른 데이터 노드의 원래의 검증 값에 기초하여 블록의 검증 값을 획득함.
본 출원의 이러한 구현예에서, 블록에 포함되는 복수의 데이터 노드에 대응하는 트리 구조가 결정되고, 블록에 포함되는 다른 데이터 노드의 원래의 검증 값이 결정되고; 트리 구조의 루트 노드의 검증 값을 획득하기 위해, 그리고 루트 노드의 검증 값을 블록의 검증 값으로서 사용하기 위해 , 트리 구조는 데이터 노드의 업데이트 검증 값 및 블록에 포함되는 다른 데이터 노드의 원래의 검증 값에 기초하여 순회(traverse)된다.
도 2에서 도시되는 콘텐츠가 예로서 사용된다. 도 2에서 도시되는 블록에 어떠한 새롭게 추가된 데이터도 저장되지 않았다고 가정하면, 도 2에서 도시되는 데이터 노드 A에 대응하는 검증 값은 a이고, 데이터 노드 B에 대응하는 검증 값은 b이고, 데이터 노드 C에 대응하는 검증 값은 c이고, 데이터 노드 D에 대응하는 검증 값은 d이고, 데이터 노드 E에 대응하는 검증 값은 e이다.
이 경우, 새롭게 추가된 데이터는 데이터 노드 A에 저장될 필요가 있고, 따라서, 검증 값 a, 검증 값 b, 검증 값 c, 검증 값 d, 및 검증 값 e는 원래의 검증 값으로서 참조된다.
새롭게 추가된 데이터가 데이터 노드 A에 저장된 이후, 데이터 노드 A의 검증 값은 변한다. 데이터 노드 A의 검증 값이 검증 값 a로부터 검증 값 g로 변한다고 가정하면, 검증 값 g는 데이터 노드 A의 업데이트 검증 값으로 칭해질 수 있다.
이 경우, 블록의 검증 값은, 데이터 노드 A의 검증 값 g, 데이터 노드 B의 검증 값 b, 데이터 노드 C의 검증 값 c, 데이터 노드 D의 검증 값 d, 및 데이터 노드 E의 검증 값 e를 사용하는 것에 의해 미리 결정된 알고리즘에 기초하여 계산된다.
예를 들면, 블록의 검증 값은, 데이터 노드 A, 데이터 노드 B, 데이터 노드 C, 데이터 노드 D, 및 데이터 노드 E에 대응하는 그리고 도 2에서 도시되는 트리 구조에 기초하여 그리고 데이터 노드 A의 검증 값 g, 데이터 노드 B의 검증 값 b, 데이터 노드 C의 검증 값 c, 데이터 노드 D의 검증 값 d, 및 데이터 노드 E의 검증 값 e를 사용하는 것에 의해 계산된다.
블록의 검증 값이 획득된 이후, 검증 값은 블록체인 내의 다른 블록의 검증 값과 비교될 수 있다. 두 개의 검증 값이 일치하면, 그것은 블록에 저장되는 데이터가 다른 블록에 저장되는 데이터와 일치한다는 것을 나타내고, 검증은 성공한다. 두 검증 값이 일치하지 않으면, 그것은, 블록에 저장되는 데이터가 다른 블록에 저장되는 데이터와 일치하지 않는다는 것을 나타낸다. 예를 들면, 블록의 데이터는 어쩌면 손실되었거나 또는 무단 변경되었을 수도 있고, 검증은 성공할 수 없다.
본 출원의 이러한 구현예에서, 검증 값을 계산하기 위한 시간을 단축하기 위해, 그리고, 시스템 컴퓨팅 성능을 향상시키기 위해, 새롭게 추가된 데이터와 함께 변하는 블록의 검증 값은, 증분적 계산 방법을 사용하는 것에 의해 신속하게 결정된다.
본 출원의 구현예에서 제공되는 기술적 솔루션에 따르면, 새롭게 추가된 데이터를 저장하도록 구성되는 데이터 노드는 복수의 데이터 노드를 포함하는 블록으로부터 선택되고; 데이터 노드에 대한 새롭게 추가된 데이터의 검증 값이 결정되고, 새롭게 추가된 데이터의 검증 값에 기초하여 데이터 노드의 업데이트 검증 값을 계산되며; 데이터 노드의 업데이트 검증 값과 블록에 포함되는 다른 데이터 노드의 원래의 검증 값에 기초하여 블록의 검증 값이 획득된다. 블록의 검증 값은, 블록에 저장되는 데이터가 블록체인의 다른 블록에 저장되는 데이터와 일치하는지의 여부를 검증하기 위해 사용된다. 모든 이력 데이터(historical data)를 프로세싱하기 위한 현존하는 기술과 비교하여, 본 출원의 구현예에서는, 블록의 새롭게 추가된 데이터가 주로 고려되고, 새로운 데이터가 블록에 추가되는 경우 검증 값이 블록 내의 모든 데이터를 사용하는 것에 의해 계산되기 때문에 너무 많은 시간이 소비된다는 현존하는 기술에서의 문제점을 완화하게 위해, 새로운 데이터가 추가되는 블록에 대해, 검증 값은 증분적 방법을 사용하는 것에 의해 계산된다. 그러한 만큼, 새로운 데이터가 추가된 블록의 검증 값이 계산될 때, 소비된 시간은 블록 내의 데이터의 양과 무관하며, 검증 값을 계산하기 위한 시간은 효과적으로 단축되어, 블록 데이터 검증 효율성을 향상시킨다.
또한, 프로세싱되지 않은 원래의 데이터가 무단 변경되면, 비록 새롭게 추가된 데이터의 검증 값이 본 출원의 구현예에서 계산될 때 무단 변경이 발견되지 않더라도, 블록체인의 구조 및 속성 때문에, 블록체인의 각각의 블록에서 데이터 업데이트가 수행될 때 데이터 무단 변경이 확실하게 발견될 수 있다. 따라서, 최종적인 블록 데이터 검증은 영향을 받지 않는다.
도 5는, 본 출원의 구현예에 따른, 블록 데이터를 검증하기 위한 장치를 예시하는 개략적인 구조도이다. 블록 데이터를 검증하기 위한 장치는, 선택 모듈(510), 결정 모듈(520), 및 프로세싱 모듈(530)을 포함한다.
선택 모듈(510)은, 복수의 데이터 노드를 포함하는 블록으로부터, 새롭게 추가된 데이터를 저장하도록 구성되는 데이터 노드를 선택하도록 구성된다.
결정 모듈(520)은, 데이터 노드에 대한 새롭게 추가된 데이터의 검증 값을 결정하도록, 그리고, 새롭게 추가된 데이터의 검증 값에 기초하여 데이터 노드의 업데이트 검증 값을 계산하도록 구성된다.
프로세싱 모듈(530)은, 데이터 노드의 업데이트 검증 값 및 블록에 포함되는 다른 데이터 노드의 원래의 검증 값에 기초하여 블록의 검증 값을 획득하도록 구성된다.
블록의 검증 값은, 블록에 저장되는 데이터가 블록체인의 다른 블록에 저장되는 데이터와 일치하는지의 여부를 검증하기 위해 사용된다.
본 출원의 또 다른 구현예에서, 선택 모듈(510)이, 복수의 데이터 노드를 포함하는 블록으로부터, 새롭게 추가된 데이터를 저장하도록 구성되는 데이터 노드를 선택하는 것은 다음의 것을 포함한다: 새롭게 추가된 데이터가 수신되는 경우, 새롭게 추가된 데이터를 저장하기 위해 사용되는 블록 정보 - 블록 정보는 블록 식별자 및 데이터 노드 식별자를 포함함 - 를 결정하는 것; 블록 식별자에 기초하여, 블록 식별자에 대응하는 블록을 블록체인에서 검색하고, 발견된 블록으로부터, 데이터 노드 식별자에 대응하는 데이터 노드를 결정하는 것; 및 발견된 데이터 노드를, 새롭게 추가된 데이터를 저장하도록 구성되는 데이터 노드로서 사용하는 것.
본 출원의 다른 구현예에서, 선택 모듈(510)이 새롭게 추가된 데이터를 저장하기 위해 사용되는 블록 정보를 결정하는 것은 다음의 것을 포함한다: 결정된 블록 정보를 획득하기 위해, 새롭게 추가된 데이터에 대응하는 데이터 콘텐츠를 계산하는 것.
본 출원의 다른 구현예에서, 결정 모듈(520)이 새롭게 추가된 데이터의 검증 값을 결정하는 것은 다음의 것을 포함한다: 데이터 노드가 새롭게 추가된 데이터의 관련 데이터를 포함하지 않는다는 것이 결정되는 경우, 새롭게 추가된 데이터에 대응하는 문자열을 결정하는 것; 및 새롭게 추가된 데이터의 검증 값을 획득하기 위해, 미리 결정된 알고리즘에 기초하여 문자열을 계산하는 것.
본 출원의 다른 구현예에서, 결정 모듈(520)이 새롭게 추가된 데이터의 검증 값을 결정하는 것은 다음의 것을 포함한다: 데이터 노드가 새롭게 추가된 데이터의 관련 데이터를 포함한다는 것이 결정되는 경우, 관련 데이터에 대응하는 제1 문자열 및 새롭게 추가된 데이터에 대응하는 제2 문자열을 별개로 결정하는 것; 미리 결정된 방법을 사용하는 것에 의해 제1 문자열과 제2 문자열을 소팅하는 것; 및 새롭게 추가된 데이터의 검증 값을 획득하기 위해, 미리 결정된 알고리즘에 기초하여 소팅된 문자열을 계산하는 것.
본 출원의 다른 구현예에서, 결정 모듈(520)이 새롭게 추가된 데이터의 검증 값에 기초하여 데이터 노드의 업데이트 검증 값을 계산하는 것은 다음의 것을 포함한다: 새롭게 추가된 데이터가 저장되기 이전에 획득되는 데이터 노드의 원래의 검증 값을 결정하는 것; 및 원래의 검증 값 및 새롭게 추가된 데이터의 검증 값에 기초하여 데이터 노드의 업데이트 검증 값을 계산하는 것.
본 출원의 다른 구현예에서, 프로세싱 모듈(530)이 데이터 노드의 업데이트 검증 값 및 블록에 포함되는 다른 데이터 노드의 원래의 검증 값에 기초하여 블록의 검증 값을 획득하는 것은 다음의 것을 포함한다: 블록에 포함되는 복수의 데이터 노드에 대응하는 트리 구조를 결정하고, 블록에 포함되는 다른 데이터 노드의 원래의 검증 값이 결정하는 것; 및 트리 구조의 루트 노드의 검증 값을 획득하기 위해, 그리고 루트 노드의 검증 값을 블록의 검증 값으로서 사용하기 위해 , 데이터 노드의 업데이트 검증 값 및 블록에 포함되는 다른 데이터 노드의 원래의 검증 값에 기초하여 트리 구조를 순회하는 것.
본 출원의 이러한 구현예에서 설명되는 블록 데이터를 검증하기 위한 장치는 소프트웨어를 사용하는 것에 의해 구현될 수 있거나, 또는 하드웨어를 사용하는 것에 의해 구현될 수 있다는 것을 주목할 가치가 있다. 이것은 여기에서는 특별히 제한되지는 않는다. 블록 데이터를 검증하기 위한 장치에 따르면, 새로운 데이터가 블록에 추가되는 경우 검증 값이 블록 내의 모든 데이터를 사용하는 것에 의해 계산되기 때문에 너무 많은 시간이 소비된다는 현존하는 기술에서의 문제점을 완화하게 위해, 새로운 데이터가 추가되는 블록에 대해, 검증 값은 증분 방법을 사용하는 것에 의해 계산된다. 그러한 만큼, 새로운 데이터가 추가된 블록의 검증 값이 계산될 때, 소비된 시간은 블록 내의 데이터의 양과 무관하며, 검증 값을 계산하기 위한 시간은 효과적으로 단축되어, 블록 데이터 검증 효율성을 향상시킨다.
1990년대에는, 하드웨어 향상(예를 들면, 다이오드, 트랜지스터, 또는 스위치와 같은 회로 구조체에 대한 향상)과 소프트웨어 향상(방법 프로시져에 대한 향상) 사이에서 기술의 향상이 명확히 구별될 수 있다. 그러나, 기술의 발달과 함께, 많은 방법 프로시져의 향상은, 하드웨어 회로 구조체에 대한 직접적인 향상으로 간주될 수 있다. 설계자 거의 모두는, 대응하는 하드웨어 회로 구조체를 획득하기 위해, 향상된 방법 프로시져를 하드웨어 회로에 프로그래밍한다. 따라서, 방법 프로시져의 향상이 하드웨어 엔티티 모듈을 사용하는 것에 의해 구현될 수 없다고 말할 수 없다. 예를 들면, 프로그래머블 논리 디바이스(programmable logic device; PLD)(예를 들면, 필드 프로그래머블 게이트 어레이(field programmable gate array; FPGA))는 그러한 집적 회로이다. 프로그래머블 논리 디바이스의 논리적 기능은 유저에 의해 실행되는 컴포넌트 프로그래밍에 의해 결정된다. 설계자는, 칩 제조자가 전용 집적 회로 칩을 설계 및 생산할 필요 없이, 디지털 시스템을 단일의 PLD에 "통합"하는 자발적인 프로그래밍을 수행한다. 또한, 집적 회로 칩을 수동으로 생산하는 대신, 프로그래밍은, 프로그램 개발 동안 사용되는 소프트웨어 컴파일러와 유사한 "논리 컴파일러" 소프트웨어에 의해 주로 구현된다. 컴파일하기 이전의 원래의 코드는 또한, 하드웨어 기술 언어(hardware description language; HDL)로 칭해지는 특정한 프로그래밍 언어로 작성되며, ABEL(Advanced Boolean Expression Language; 어드밴스드 불린 표현 언어), AHDL(Altera Hardware Description Language; 알테라 하드웨어 기술 언어), 컨플루언스(Confluence), CUPL(Cornell University Programming Language; 코넬대 프로그래밍 언어), HDCal 및 JHDL(Java Hardware Description Language; 자바 하드웨어 기술 언어), 라바(Lava), 롤라(Lola), MyHDL, PALASM 및 RHDL(Ruby Hardware Description Language; 루비 하드웨어 기술 언어), 등등과 같은, 하나보다 더 많은 타입의 HDL이 존재한다. 현재, VHDL(Very-High-Speed Integrated Circuit Hardware Description Language; 초고속 집적 회로 하드웨어 기술 언어) 및 Verilog가 가장 일반적으로 사용된다. 기술 분야의 숙련된 자는 또한, 논리적 방법 프로시져를 구현하는 하드웨어 회로가 쉽게 획득될 수 있도록, 방법 프로시져가 논리적으로만 프로그래밍되는 것, 및 이전의 하드웨어 기술 언어를 사용하는 것에 의해 집적 회로에 프로그래밍되는 것만을 필요로 한다는 것을 이해해야 한다.
컨트롤러는 임의의 적절한 방법을 사용하는 것에 의해 구현될 수 있다. 예를 들면, 컨트롤러는 마이크로프로세서 또는 프로세서, 또는 컴퓨터 판독 가능 매체, 논리 게이트, 스위치, 주문형 집적 회로(application-specific integrated circuit; ASIC), 프로그래머블 논리 컨트롤러, 또는 마이크로프로세서 또는 프로세서에 의해 실행될 수 있는 컴퓨터 판독 가능 프로그램 코드(예컨대 소프트웨어 또는 펌웨어)를 저장하는 임베딩된 마이크로프로세서일 수 있다. 컨트롤러의 예는 다음의 마이크로프로세서를 포함하지만 그러나 이들로 제한되지는 않는다: ARC 625D, Atmel(아트멜) AT91SAM, Microchip(마이크로칩) PIC18F26K20, 및 Silicone Labs(실리콘 랩스) C8051F320. 메모리 컨트롤러는 또한, 메모리의 제어 논리의 일부로서 구현될 수 있다. 기술 분야의 숙련된 자는 또한, 컨트롤러가 순수한 컴퓨터 판독 가능 프로그램 코드를 사용하는 것에 의해 구현될 수 있고, 방법에서의 단계는, 컨트롤러가, 논리 게이트, 스위치, 주문형 집적 회로, 프로그래머블 논리 컨트롤러, 및 임베딩된 마이크로컨트롤러, 등등의 형태로, 동일한 기능을 또한 구현하는 것을 가능하게 하도록 논리적으로 프로그래밍될 수 있다는 것을 알고 있다. 따라서, 컨트롤러는 하드웨어 컴포넌트로서 간주될 수 있고, 컨트롤러에 포함되며 다양한 기능을 구현하도록 구성되는 장치도 하드웨어 컴포넌트에서의 구조체로서 또한 간주될 수 있다. 대안적으로, 다양한 기능을 구현하도록 구성되는 장치가, 방법을 구현하기 위한 소프트웨어 모듈 및 하드웨어 컴포넌트에서의 구조체 둘 모두로서 간주될 수 있다.
설명된 구현예에서 설명되는 시스템, 장치, 모듈, 또는 유닛은, 컴퓨터 칩 또는 엔티티에 의해 구현될 수 있거나, 또는 소정의 기능을 갖는 제품에 의해 구현될 수 있다. 통상적인 구현 디바이스는 컴퓨터이다. 컴퓨터는, 예를 들면, 퍼스널 컴퓨터, 랩탑 컴퓨터, 셀룰러 전화, 카메라 폰, 스마트폰, 개인 휴대형 정보 단말(personal digital assistant), 미디어 플레이어, 내비게이션 디바이스, 이메일 디바이스, 게임 콘솔, 태블릿 컴퓨터, 또는 웨어러블 디바이스, 또는 이들 디바이스 중 임의의 것의 조합일 수 있다.
설명의 용이성을 위해, 설명된 장치는 기능을 다양한 유닛으로 분할하는 것에 의해 설명된다. 물론, 본 출원이 구현될 때, 유닛의 기능은 하나 이상의 단편의 소프트웨어 및/또는 하드웨어에서 구현될 수 있다.
기술 분야의 숙련된 자는, 본 개시의 구현예가, 방법, 시스템, 또는 컴퓨터 프로그램 제품으로서 제공될 수 있다는 것을 이해해야 한다. 따라서, 본 개시는 하드웨어 전용 구현예, 소프트웨어 전용 구현예, 또는 소프트웨어 및 하드웨어의 조합을 갖는 구현예의 형태를 사용할 수 있다. 또한, 본 개시는, 컴퓨터 사용 가능 프로그램 코드를 포함하는 하나 이상의 컴퓨터 사용 가능 저장 매체(디스크 메모리, CD-ROM, 및 광학 메모리를 포함하지만 그러나 이들로 제한되지는 않음) 상에서 구현되는 컴퓨터 프로그램 제품의 형태를 사용할 수 있다.
본 개시는, 본 개시의 구현예에 따른 방법, 디바이스(시스템), 및 컴퓨터 프로그램 제품의 플로우차트 및/또는 블록도를 참조하여 설명된다. 컴퓨터 프로그램 명령어는 플로우차트 및/또는 블록도 내의 각각의 프로세스 및/또는 각각의 블록 및 플로우차트 및/또는 블록도 내의 프로세스 및/또는 블록의 조합을 구현하기 위해 사용될 수 있다는 것이 이해되어야 한다. 컴퓨터 또는 임의의 다른 프로그래머블 데이터 프로세싱 디바이스의 프로세서에 의해 실행되는 명령어가, 플로우차트 내의 하나 이상의 프로세스에서 및/또는 블록도 내의 하나 이상의 블록에서 특정한 기능을 구현하기 위한 장치를 생성하도록, 이들 컴퓨터 프로그램 명령어는, 범용 컴퓨터, 전용 컴퓨터, 임베딩된 프로세서, 또는 임의의 다른 프로그래머블 데이터 프로세싱 디바이스의 프로세서에 제공되어 머신을 생성할 수 있다.
컴퓨터 판독 가능 메모리에 저장되는 명령어가 명령어 장치를 포함하는 아티팩트(artifact)를 생성하도록, 컴퓨터 또는 임의의 다른 프로그래머블 데이터 프로세싱 디바이스에게 특정한 방법에서 작동할 것을 지시할 수 있는 이들 컴퓨터 프로그램 명령어는 컴퓨터 판독 가능 메모리에 저장될 수 있다. 명령어 장치는 플로우차트 내의 하나 이상의 프로세스에서 및/또는 블록도 내의 하나 이상의 블록에서 특정한 기능을 구현한다.
일련의 동작 및 단계가 컴퓨터 또는 다른 프로그래머블 디바이스 상에서 수행되어, 컴퓨터 구현 프로세싱을 생성하도록, 이들 컴퓨터 프로그램 명령어는, 컴퓨터 또는 다른 프로그래머블 데이터 프로세싱 디바이스 상으로 로딩될 수 있다. 따라서, 컴퓨터 또는 다른 프로그래머블 디바이스 상에서 실행되는 명령어는, 플로우차트 내의 하나 이상의 프로세스에서 및/또는 블록도 내의 하나 이상의 블록에서 특정한 기능을 구현하기 위한 단계를 제공한다.
통상적인 구성에서, 컴퓨팅 디바이스는 하나 이상의 프로세서(CPU), 하나 이상의 입력/출력 인터페이스, 하나 이상의 네트워크 인터페이스, 및 하나 이상의 메모리를 포함한다.
메모리는, 컴퓨터 판독 가능 매체에서 비영구적 메모리, 랜덤 액세스 메모리(random access memory; RAM) 및/또는 불휘발성 메모리, 예를 들면, 리드 온리 메모리(read-only memory; ROM) 또는 플래시 메모리(플래시 RAM)를 포함할 수 있다.
컴퓨터 판독 가능 매체는, 임의의 방법 또는 기술을 사용하는 것에 의해 정보 저장을 구현할 수 있는, 영구적, 비영구적, 이동식, 및 비이동식 매체를 포함한다. 정보는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터일 수 있다. 컴퓨터 저장 매체는, 상변화 랜덤 액세스 메모리(phase-change random access memory; PRAM), 정적 랜덤 액세스 메모리(static random access memory: SRAM), 동적 랜덤 액세스 메모리(dynamic random access memory: DRAM), 다른 타입의 랜덤 액세스 메모리(RAM), 리드 온리 메모리(ROM), 전기적으로 소거 가능한 프로그래머블 리드 온리 메모리(electrically erasable programmable read only memory: EEPROM), 플래시 메모리 또는 다른 메모리 기술, 컴팩트 디스크 리드 온리 메모리(compact disc-read only memory: CD-ROM), 디지털 다기능 디스크(digital video disk: DVD) 또는 다른 광학 스토리지, 자기 테이프, 자기 디스크 스토리지, 다른 자기 스토리지 디바이스, 또는 컴퓨팅 디바이스가 액세스할 수 있는 정보를 저장하기 위해 사용될 수 있는 임의의 다른 비송신 매체를 포함하지만, 그러나 이들로 제한되지는 않는다. 본 명세서에서의 정의에 기초하여, 컴퓨터 판독 가능 매체는 일시적 컴퓨터 판독 가능 매체(임시 매체), 예를 들면, 변조된 데이터 신호 및 캐리어를 포함하지 않는다.
엘리먼트의 리스트를 포함하는 프로세스, 방법, 상품, 또는 디바이스가, 그들 엘리먼트를 포함할 뿐만 아니라, 명시적으로 열거되지 않은 다른 엘리먼트도 또한 포함하거나, 또는 그러한 프로세스, 방법, 상품 또는 디바이스에 내재하는 엘리먼트를 더 포함하도록, 용어 "포함한다", "구비한다", 또는 그들의 임의의 다른 변형예는 비 배타적인 포함을 포괄하도록 의도된다는 것을 또한 주목할 가치가 있다. "~를 포함하는" 앞에 오는 엘리먼트는, 추가적인 제약 없이, 그 엘리먼트를 포함하는 프로세스, 방법, 상품, 또는 디바이스에서 추가적인 동일한 엘리먼트의 존재를 배제하지는 않는다.
기술 분야의 숙련된 자는, 본 출원의 구현예가, 방법, 시스템, 또는, 컴퓨터 프로그램 제품으로서 제공될 수 있다는 것을 이해해야 한다. 따라서, 본 출원은 하드웨어 전용 구현예, 소프트웨어 전용 구현예, 또는 소프트웨어와 하드웨어의 조합을 갖는 구현예의 형태를 사용할 수 있다. 또한, 본 출원은, 컴퓨터 사용 가능 프로그램 코드를 포함하는 하나 이상의 컴퓨터 사용 가능 저장 매체(디스크 메모리, CD-ROM, 및 광학 메모리를 포함하지만 그러나 이들로 제한되지는 않음) 상에서 구현되는 컴퓨터 프로그램 제품의 형태를 사용할 수 있다.
앞선 설명은 본 출원의 구현예에 불과하며, 본 출원을 제한하도록 의도되는 것은 아니다. 기술 분야의 숙련된 자는 본 출원에 대해 다양한 수정 및 변경을 가할 수 있다. 본 출원의 취지 및 원리 내에서 이루어지는 임의의 수정예, 등가적 대체예, 개선예, 등등은, 본 출원의 청구범위의 범위 내에 속할 것이다.

Claims (20)

  1. 블록 데이터(block data)를 검증하기 위한 컴퓨터 구현 방법에 있어서,
    블록체인(blockchain) 내에 저장될 새롭게 추가된 데이터를 식별하는 단계;
    복수의 데이터 노드들을 포함하는 블록으로부터, 상기 새롭게 추가된 데이터를 저장하도록 구성된 데이터 노드를 선택하는 단계;
    상기 선택된 데이터 노드가 상기 새롭게 추가된 데이터와 연관된 데이터를 포함하는지의 여부를 결정하는 단계;
    상기 선택된 데이터 노드가 상기 새롭게 추가된 데이터와 연관된 데이터를 포함하지 않는다고 결정한 것에 응답하여,
    상기 새롭게 추가된 데이터에 대응하는 제1 문자열(character string)을 생성하는 단계;
    상기 제1 문자열에 대해 미리결정된 알고리즘을 실행함으로써 상기 선택된 데이터 노드에 대한 상기 새롭게 추가된 데이터의 제1 검증 값을 결정하는 단계;
    상기 새롭게 추가된 데이터의 제1 검증 값에 기초하여 상기 선택된 데이터 노드의 업데이트된 제2 검증 값을 계산하는 단계; 및
    상기 선택된 데이터 노드의 상기 업데이트된 제2 검증 값 및 상기 블록의 다른 데이터 노드들의 원래의 제2 검증 값들에 기초하여 상기 블록의 제3 검증 값을 결정하는 단계
    를 포함하며,
    상기 블록의 제3 검증 값은, 상기 블록에 저장되어 있는 데이터가 블록체인 내의 다른 블록들에 저장되어 있는 데이터와 일치하는지의 여부를 검증하기 위해 사용되는 것인, 블록 데이터를 검증하기 위한 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 데이터 노드를 선택하는 단계는,
    상기 새롭게 추가된 데이터를 수신한 것에 응답하여, 블록 식별자와 데이터 노드 식별자 - 상기 블록 식별자와 상기 데이터 노드 식별자는 상기 새롭게 추가된 데이터를 저장하기 위해 사용됨 - 를 결정하는 단계;
    상기 블록 식별자에 기초하여, 상기 블록 식별자에 대응하는 블록을 상기 블록체인에서 검색하는 단계 - 상기 검색의 결과들은 발견된 블록을 포함함 -;
    상기 발견된 블록과 상기 데이터 노드 식별자로부터, 상기 데이터 노드 식별자에 대응하는 발견된 데이터 노드를 결정하는 단계; 및
    상기 발견된 데이터 노드를, 상기 새롭게 추가된 데이터를 저장하도록 구성된 상기 데이터 노드로서 선택하는 단계
    를 포함한 것인, 블록 데이터를 검증하기 위한 컴퓨터 구현 방법.
  3. 제2항에 있어서,
    상기 블록 식별자와 상기 데이터 노드 식별자를 결정하는 단계는,
    상기 블록 식별자와 상기 데이터 노드 식별자를 획득하기 위해 상기 새롭게 추가된 데이터에 대응하는 데이터 콘텐츠를 계산하는 단계
    를 포함한 것인, 블록 데이터를 검증하기 위한 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 미리결정된 알고리즘은 암호화 알고리즘을 포함하고,
    상기 제1 검증 값은 상기 새롭게 추가된 데이터의 암호화된 값을 포함한 것인, 블록 데이터를 검증하기 위한 컴퓨터 구현 방법.
  5. 제4항에 있어서,
    상기 암호화 알고리즘은 해시 알고리즘(hash algorithm)을 포함하고,
    상기 암호화된 값은 상기 새롭게 추가된 데이터의 해시 값(hash value)을 포함한 것인, 블록 데이터를 검증하기 위한 컴퓨터 구현 방법.
  6. 제1항에 있어서,
    상기 선택된 데이터 노드가 상기 새롭게 추가된 데이터와 연관된 데이터를 포함한다고 결정한 것에 응답하여, 상기 방법은,
    상기 새롭게 추가된 데이터에 대응하는 제2 문자열 및 상기 새롭게 추가된 데이터와 연관된 데이터에 대응하는 제3 문자열을 개별적으로 생성하는 단계;
    미리결정된 방법을 사용하여 상기 제2 문자열과 상기 제3 문자열을 소팅(sorting)함으로써 소팅된 문자열을 획득하는 단계; 및
    상기 소팅된 문자열에 대해 미리결정된 알고리즘을 실행함으로써 상기 데이터 노드에 대한 상기 새롭게 추가된 데이터의 제1 검증 값을 결정하는 단계
    를 더 포함한 것인, 블록 데이터를 검증하기 위한 컴퓨터 구현 방법.
  7. 제6항에 있어서,
    상기 소팅된 문자열은 상기 새롭게 추가된 데이터의 상기 제1 검증 값 내에 포함된 문자열 그룹을 포함한 것인, 블록 데이터를 검증하기 위한 컴퓨터 구현 방법.
  8. 제1항에 있어서,
    상기 선택된 데이터 노드의 업데이트된 제2 검증 값을 계산하는 단계는,
    상기 새롭게 추가된 데이터가 저장되기 전에 획득된 상기 선택된 데이터 노드의 원래의 제2 검증 값을 결정하는 단계; 및
    상기 원래의 제2 검증 값과 상기 새롭게 추가된 데이터의 제1 검증 값에 기초하여 상기 선택된 데이터 노드의 상기 업데이트된 제2 검증 값을 계산하는 단계
    를 포함한 것인, 블록 데이터를 검증하기 위한 컴퓨터 구현 방법.
  9. 제1항에 있어서,
    상기 제3 검증 값을 결정하는 단계는,
    상기 블록 내에 포함된 상기 복수의 데이터 노드들에 대응하는 트리 구조(tree structure)를 결정하는 단계;
    상기 블록 내에 포함된 상기 다른 데이터 노드들의 원래의 제2 검증 값들을 결정하는 단계;
    상기 트리 구조의 루트 노드(root node)의 제3 검증 값을 획득하기 위해, 상기 선택된 데이터 노드의 상기 업데이트된 제2 검증 값 및 상기 블록 내에 포함된 상기 다른 데이터 노드들의 원래의 제2 검증 값들에 기초하여 상기 트리 구조를 순회(traversing)하는 단계; 및
    상기 루트 노드의 제3 검증 값을 상기 블록의 제3 검증 값으로서 사용하는 단계
    를 포함한 것인, 블록 데이터를 검증하기 위한 컴퓨터 구현 방법.
  10. 동작들을 수행하도록 컴퓨터 시스템에 의해 실행가능한 하나 이상의 명령어를 저장한 컴퓨터 판독가능 비일시적 매체에 있어서,
    상기 동작들은,
    블록체인 내에 저장될 새롭게 추가된 데이터를 식별하는 동작;
    복수의 데이터 노드들을 포함하는 블록으로부터, 상기 새롭게 추가된 데이터를 저장하도록 구성된 데이터 노드를 선택하는 동작;
    상기 선택된 데이터 노드가 상기 새롭게 추가된 데이터와 연관된 데이터를 포함하는지의 여부를 결정하는 동작;
    상기 선택된 데이터 노드가 상기 새롭게 추가된 데이터와 연관된 데이터를 포함하지 않는다고 결정한 것에 응답하여,
    상기 새롭게 추가된 데이터에 대응하는 제1 문자열을 생성하는 동작;
    상기 제1 문자열에 대해 미리결정된 알고리즘을 실행함으로써 상기 선택된 데이터 노드에 대한 상기 새롭게 추가된 데이터의 제1 검증 값을 결정하는 동작;
    상기 새롭게 추가된 데이터의 제1 검증 값에 기초하여 상기 선택된 데이터 노드의 업데이트된 제2 검증 값을 계산하는 동작; 및
    상기 선택된 데이터 노드의 상기 업데이트된 제2 검증 값 및 상기 블록의 다른 데이터 노드들의 원래의 제2 검증 값들에 기초하여 상기 블록의 제3 검증 값을 결정하는 동작
    을 포함하며,
    상기 블록의 제3 검증 값은, 상기 블록에 저장되어 있는 데이터가 블록체인 내의 다른 블록들에 저장되어 있는 데이터와 일치하는지의 여부를 검증하기 위해 사용되는 것인, 컴퓨터 판독가능 비일시적 매체.
  11. 제10항에 있어서,
    상기 데이터 노드를 선택하는 동작은,
    상기 새롭게 추가된 데이터를 수신한 것에 응답하여, 블록 식별자와 데이터 노드 식별자 - 상기 블록 식별자와 상기 데이터 노드 식별자는 상기 새롭게 추가된 데이터를 저장하기 위해 사용됨 - 를 결정하는 동작;
    상기 블록 식별자에 기초하여, 상기 블록 식별자에 대응하는 블록을 상기 블록체인에서 검색하는 동작 - 상기 검색의 결과들은 발견된 블록을 포함함 -;
    상기 발견된 블록과 상기 데이터 노드 식별자로부터, 상기 데이터 노드 식별자에 대응하는 발견된 데이터 노드를 결정하는 동작; 및
    상기 발견된 데이터 노드를, 상기 새롭게 추가된 데이터를 저장하도록 구성된 상기 데이터 노드로서 선택하는 동작
    을 포함한 것인, 컴퓨터 판독가능 비일시적 매체.
  12. 제11항에 있어서,
    상기 블록 식별자와 상기 데이터 노드 식별자를 결정하는 동작은,
    상기 블록 식별자와 상기 데이터 노드 식별자를 획득하기 위해 상기 새롭게 추가된 데이터에 대응하는 데이터 콘텐츠를 계산하는 동작
    을 포함한 것인, 컴퓨터 판독가능 비일시적 매체.
  13. 제10항에 있어서,
    상기 미리결정된 알고리즘은 암호화 알고리즘을 포함하고,
    상기 제1 검증 값은 상기 새롭게 추가된 데이터의 암호화된 값을 포함한 것인, 컴퓨터 판독가능 비일시적 매체.
  14. 제13항에 있어서,
    상기 암호화 알고리즘은 해시 알고리즘을 포함하고,
    상기 암호화된 값은 상기 새롭게 추가된 데이터의 해시 값을 포함한 것인, 컴퓨터 판독가능 비일시적 매체.
  15. 제10항에 있어서,
    상기 선택된 데이터 노드가 상기 새롭게 추가된 데이터와 연관된 데이터를 포함한다고 결정한 것에 응답하여,
    상기 동작들은,
    상기 새롭게 추가된 데이터에 대응하는 제2 문자열 및 상기 새롭게 추가된 데이터와 연관된 데이터에 대응하는 제3 문자열을 개별적으로 생성하는 동작;
    미리결정된 방법을 사용하여 상기 제2 문자열과 상기 제3 문자열을 소팅함으로써 소팅된 문자열을 획득하는 동작; 및
    상기 소팅된 문자열에 대해 미리결정된 알고리즘을 실행함으로써 상기 데이터 노드에 대한 상기 새롭게 추가된 데이터의 제1 검증 값을 결정하는 동작
    을 더 포함한 것인, 컴퓨터 판독가능 비일시적 매체.
  16. 제15항에 있어서,
    상기 소팅된 문자열은 상기 새롭게 추가된 데이터의 상기 제1 검증 값 내에 포함된 문자열 그룹을 포함한 것인, 컴퓨터 판독가능 비일시적 매체.
  17. 제10항에 있어서,
    상기 선택된 데이터 노드의 업데이트된 제2 검증 값을 계산하는 동작은,
    상기 새롭게 추가된 데이터가 저장되기 전에 획득된 상기 선택된 데이터 노드의 원래의 제2 검증 값을 결정하는 동작; 및
    상기 원래의 제2 검증 값과 상기 새롭게 추가된 데이터의 제1 검증 값에 기초하여 상기 선택된 데이터 노드의 상기 업데이트된 제2 검증 값을 계산하는 동작
    을 포함한 것인, 컴퓨터 판독가능 비일시적 매체.
  18. 제10항에 있어서,
    상기 제3 검증 값을 결정하는 동작은,
    상기 블록 내에 포함된 상기 복수의 데이터 노드들에 대응하는 트리 구조를 결정하는 동작;
    상기 블록 내에 포함된 상기 다른 데이터 노드들의 원래의 제2 검증 값들을 결정하는 동작;
    상기 트리 구조의 루트 노드의 제3 검증 값을 획득하기 위해, 상기 선택된 데이터 노드의 상기 업데이트된 제2 검증 값 및 상기 블록 내에 포함된 상기 다른 데이터 노드들의 원래의 제2 검증 값들에 기초하여 상기 트리 구조를 순회하는 동작; 및
    상기 루트 노드의 제3 검증 값을 상기 블록의 제3 검증 값으로서 사용하는 동작
    을 포함한 것인, 컴퓨터 판독가능 비일시적 매체.
  19. 컴퓨터 구현 시스템에 있어서,
    하나 이상의 컴퓨터; 및
    상기 하나 이상의 컴퓨터와 상호동작가능하게 결합되고, 하나 이상의 명령어를 저장하는 유형적인 머신 판독가능 비일시적 매체를 갖는 하나 이상의 컴퓨터 메모리 디바이스
    를 포함하고,
    상기 하나 이상의 명령어는, 상기 하나 이상의 컴퓨터에 의해 실행될 때, 하나 이상의 동작을 수행하고,
    상기 하나 이상의 동작은,
    블록체인 내에 저장될 새롭게 추가된 데이터를 식별하는 동작;
    복수의 데이터 노드들을 포함하는 블록으로부터, 상기 새롭게 추가된 데이터를 저장하도록 구성된 데이터 노드를 선택하는 동작;
    상기 선택된 데이터 노드가 상기 새롭게 추가된 데이터와 연관된 데이터를 포함하는지의 여부를 결정하는 동작;
    상기 선택된 데이터 노드가 상기 새롭게 추가된 데이터와 연관된 데이터를 포함하지 않는다고 결정한 것에 응답하여,
    상기 새롭게 추가된 데이터에 대응하는 제1 문자열을 생성하는 동작;
    상기 제1 문자열에 대해 미리결정된 알고리즘을 실행함으로써 상기 선택된 데이터 노드에 대한 상기 새롭게 추가된 데이터의 제1 검증 값을 결정하는 동작;
    상기 새롭게 추가된 데이터의 제1 검증 값에 기초하여 상기 선택된 데이터 노드의 업데이트된 제2 검증 값을 계산하는 동작; 및
    상기 선택된 데이터 노드의 상기 업데이트된 제2 검증 값 및 상기 블록의 다른 데이터 노드들의 원래의 제2 검증 값들에 기초하여 상기 블록의 제3 검증 값을 결정하는 동작
    을 포함하며,
    상기 블록의 제3 검증 값은, 상기 블록에 저장되어 있는 데이터가 블록체인 내의 다른 블록들에 저장되어 있는 데이터와 일치하는지의 여부를 검증하기 위해 사용되는 것인, 컴퓨터 구현 시스템.
  20. 제19항에 있어서,
    상기 선택된 데이터 노드가 상기 새롭게 추가된 데이터와 연관된 데이터를 포함한다고 결정한 것에 응답하여, 상기 하나 이상의 동작은,
    상기 새롭게 추가된 데이터에 대응하는 제2 문자열 및 상기 새롭게 추가된 데이터와 연관된 데이터에 대응하는 제3 문자열을 개별적으로 생성하는 동작;
    미리결정된 방법을 사용하여 상기 제2 문자열과 상기 제3 문자열을 소팅함으로써 소팅된 문자열을 획득하는 동작; 및
    상기 소팅된 문자열에 대해 미리결정된 알고리즘을 실행함으로써 상기 데이터 노드에 대한 상기 새롭게 추가된 데이터의 제1 검증 값을 결정하는 동작
    을 더 포함한 것인, 컴퓨터 구현 시스템.
KR1020197021825A 2016-12-26 2017-12-18 블록체인에서 블록 데이터를 검증하기 위한 방법 및 장치 KR102098548B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201611215749.3A CN107015882B (zh) 2016-12-26 2016-12-26 一种区块数据校验方法和装置
CN201611215749.3 2016-12-26
PCT/CN2017/116835 WO2018121319A1 (zh) 2016-12-26 2017-12-18 一种区块数据校验方法和装置

Publications (2)

Publication Number Publication Date
KR20190099053A KR20190099053A (ko) 2019-08-23
KR102098548B1 true KR102098548B1 (ko) 2020-04-08

Family

ID=59439902

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197021825A KR102098548B1 (ko) 2016-12-26 2017-12-18 블록체인에서 블록 데이터를 검증하기 위한 방법 및 장치

Country Status (8)

Country Link
US (2) US10560267B2 (ko)
EP (1) EP3561674B1 (ko)
JP (1) JP6804668B2 (ko)
KR (1) KR102098548B1 (ko)
CN (1) CN107015882B (ko)
PH (1) PH12019501501A1 (ko)
TW (1) TWI695260B (ko)
WO (1) WO2018121319A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017112893A1 (en) 2015-12-23 2017-06-29 The Regents Of The University Of Colorado, A Body Corporate An ophthalmic knife and methods of use
CN107015882B (zh) 2016-12-26 2019-11-22 阿里巴巴集团控股有限公司 一种区块数据校验方法和装置
CN108876371B (zh) * 2018-06-26 2021-01-29 广州天高软件科技有限公司 基于区块链的消费数据存储、数据校验、数据溯源方法
CN110795269B (zh) * 2018-08-03 2023-05-26 阿里巴巴集团控股有限公司 一种数据恢复验证方法、装置及设备
TW202016743A (zh) 2018-10-25 2020-05-01 財團法人資訊工業策進會 用於物聯網系統之資料處理裝置及資料處理方法
CN109582473A (zh) * 2018-10-26 2019-04-05 阿里巴巴集团控股有限公司 基于区块链的跨链数据访问方法和装置
CN109493221B (zh) * 2018-10-26 2021-01-12 全链通有限公司 区块链中交易记录保密方法、设备、网络及存储介质
CN111768203A (zh) * 2018-11-07 2020-10-13 阿里巴巴集团控股有限公司 一种构建梅克尔树、简单支付验证方法及装置
US11354734B2 (en) 2018-12-10 2022-06-07 Henry Gleizer Cryptographic monetary system for providing digital currency
CN109918378B (zh) * 2019-03-05 2020-09-25 中国科学院深圳先进技术研究院 一种基于区块链的遥感数据存储方法和存储系统
CN111694502B (zh) * 2019-03-14 2023-05-30 北京沃东天骏信息技术有限公司 区块链数据存储方法、装置、设备及存储介质
CN110275884B (zh) * 2019-05-31 2020-08-04 阿里巴巴集团控股有限公司 数据存储方法及节点
US11294875B2 (en) 2019-05-31 2022-04-05 Advanced New Technologies Co., Ltd. Data storage on tree nodes
CN112667855B (zh) * 2019-10-15 2022-07-05 北京新唐思创教育科技有限公司 区块链数据管理方法、电子设备及计算机存储介质
CN111027972B (zh) * 2019-11-25 2023-09-01 北京链化未来科技有限公司 一种基于区块链的数据验证方法、装置及电子设备
CN111176567B (zh) * 2019-12-25 2023-11-03 上海新沄信息科技有限公司 分布式云存储的存储供应量验证方法及装置
US10887104B1 (en) 2020-04-01 2021-01-05 Onu Technology Inc. Methods and systems for cryptographically secured decentralized testing
US11409907B2 (en) 2020-04-01 2022-08-09 Onu Technology Inc. Methods and systems for cryptographically secured decentralized testing
CN111478957B (zh) * 2020-04-02 2023-09-08 深圳市人工智能与机器人研究院 基于区块链的实验数据处理方法、装置和计算机设备
CN111555860B (zh) * 2020-04-09 2023-04-21 中信梧桐港供应链管理有限公司 一种区块链节点共识方法、装置、电子设备及存储介质
CN112199350B (zh) * 2020-09-29 2023-10-24 中国平安人寿保险股份有限公司 基于数据筛选的功能验证方法、装置、计算机设备和介质
WO2023201032A1 (en) * 2022-04-15 2023-10-19 Kanovitz Michael Ira Secure retrieval of off-network data by trusted network entities
CN117251707B (zh) * 2023-11-20 2024-02-09 武汉大学 一种河流数据要素的区块链锚定和验证方法与装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009521049A (ja) 2005-12-21 2009-05-28 エヌエックスピー ビー ヴィ ブロック消去可能な記憶場所を有するメモリ
CN101478369A (zh) 2009-01-05 2009-07-08 深圳华为通信技术有限公司 一种crc校验的方法和系统及crc初值影响矩阵
KR101680540B1 (ko) 2015-06-18 2016-11-30 주식회사 코인플러그 블록체인을 기반으로 하는 금융기관 제증명서류 위변조 검증시스템 및 방법

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4849978A (en) * 1987-07-02 1989-07-18 International Business Machines Corporation Memory unit backup using checksum
JP3570114B2 (ja) * 1996-10-21 2004-09-29 富士ゼロックス株式会社 データ検証方法およびデータ検証システム
TW583546B (en) * 2002-09-20 2004-04-11 Wu-Jeng Li Web-based hardware-neutral centralized sequential controller
US7451310B2 (en) * 2002-12-02 2008-11-11 International Business Machines Corporation Parallelizable authentication tree for random access storage
KR100782807B1 (ko) * 2003-02-11 2007-12-06 삼성전자주식회사 첵섬 기입 방법 및 그에 따른 첵섬 확인 장치
US8504904B2 (en) * 2008-01-16 2013-08-06 Hitachi Data Systems Engineering UK Limited Validating objects in a data storage system
CN101452409B (zh) * 2007-12-04 2010-10-13 无锡江南计算技术研究所 数据校验冗余方法及装置
KR101426270B1 (ko) 2008-02-13 2014-08-05 삼성전자주식회사 소프트웨어의 전자 서명 생성 방법, 검증 방법, 그 장치,및 그 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로읽을 수 있는 기록매체
US7904450B2 (en) * 2008-04-25 2011-03-08 Wilson Kelce S Public electronic document dating list
CN101290628B (zh) * 2008-06-17 2010-06-16 中兴通讯股份有限公司 一种数据文件更新存储方法
CN101482802A (zh) * 2009-02-18 2009-07-15 杭州华三通信技术有限公司 独立磁盘冗余阵列5扩展方法及装置
CN101930442A (zh) * 2009-06-24 2010-12-29 侯方勇 一种哈希树的节点更新方法
CN103312732B (zh) * 2012-03-07 2017-12-26 腾讯科技(深圳)有限公司 数据文件的传输方法及装置
TWI493341B (zh) * 2012-07-09 2015-07-21 Phison Electronics Corp 記憶體儲存裝置及其修復方法
CN104142954B (zh) * 2013-05-10 2017-11-21 中国电信股份有限公司 一种基于频度分区的数据表比对更新方法与装置
US11232414B2 (en) * 2014-07-03 2022-01-25 Raise Marketplace Inc. Cryptocurrency verification system
CN106296184A (zh) * 2015-06-05 2017-01-04 地气股份有限公司 电子货币管理方法及电子货币系统
CN106251144A (zh) * 2015-06-05 2016-12-21 地气股份有限公司 电子货币管理方法及电子货币节点装置
US20170132621A1 (en) * 2015-11-06 2017-05-11 SWFL, Inc., d/b/a "Filament" Systems and methods for autonomous device transacting
US9922278B2 (en) * 2016-08-15 2018-03-20 Lenovo (Singapore) Pte. Ltd. Verifying integrity of physical documents
CN107015882B (zh) * 2016-12-26 2019-11-22 阿里巴巴集团控股有限公司 一种区块数据校验方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009521049A (ja) 2005-12-21 2009-05-28 エヌエックスピー ビー ヴィ ブロック消去可能な記憶場所を有するメモリ
CN101478369A (zh) 2009-01-05 2009-07-08 深圳华为通信技术有限公司 一种crc校验的方法和系统及crc初值影响矩阵
KR101680540B1 (ko) 2015-06-18 2016-11-30 주식회사 코인플러그 블록체인을 기반으로 하는 금융기관 제증명서류 위변조 검증시스템 및 방법

Also Published As

Publication number Publication date
CN107015882A (zh) 2017-08-04
JP2020515197A (ja) 2020-05-21
CN107015882B (zh) 2019-11-22
KR20190099053A (ko) 2019-08-23
TW201823988A (zh) 2018-07-01
US20190296916A1 (en) 2019-09-26
TWI695260B (zh) 2020-06-01
PH12019501501A1 (en) 2020-06-08
JP6804668B2 (ja) 2020-12-23
EP3561674A4 (en) 2019-11-13
EP3561674B1 (en) 2022-03-16
WO2018121319A1 (zh) 2018-07-05
EP3561674A1 (en) 2019-10-30
US20200052900A1 (en) 2020-02-13
US10560267B2 (en) 2020-02-11
US10790981B2 (en) 2020-09-29

Similar Documents

Publication Publication Date Title
KR102098548B1 (ko) 블록체인에서 블록 데이터를 검증하기 위한 방법 및 장치
KR102272117B1 (ko) 블록체인 기반 데이터 프로세싱 방법 및 디바이스
US10594489B2 (en) Method and device for processing service request
CA3054363C (en) Business verification method and apparatus
US10931651B2 (en) Key management
EP3547168A1 (en) Block chain based data processing method and device
US8719237B2 (en) Method and apparatus for deleting duplicate data
JP2020521254A (ja) サービス・データをブロックチェーン・システムに書き込むための方法およびデバイス
KR20190096391A (ko) 데이터베이스 상태 결정 방법 및 디바이스, 및 일관성 검증 방법 및 디바이스
US20200265124A1 (en) Blockchain-based image processing method and apparatus
EP3640813A1 (en) Random walk method, apparatus and device, and cluster-based random walk method, apparatus and device
CN109800582B (zh) 可溯源的多方数据处理方法、装置及设备
CN105511814A (zh) 一种静态数据文件的存储方法
US10901971B2 (en) Random walking and cluster-based random walking method, apparatus and device
CN105335530A (zh) 一种提升大数据块重复数据删除性能的方法
TW201923628A (zh) 隨機漫步、基於叢集的隨機漫步方法、裝置以及設備
CN116166693B (zh) 一种基于密态范围索引的数据查询方法、装置以及设备

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant