1 |
1
프로세서를 포함한 컨센서스 버그 탐지 장치에 의해 실행되는 컨센서스 버그 탐지 방법에 있어서,일련의 트랜잭션을 포함한 테스트 케이스에 대하여, 프로세서에 의해, 적어도 하나의 변이 과정을 실행하여 상기 일련의 트랜잭션 중 적어도 일부가 변경된 일련의 변이 트랜잭션(mutated transaction)을 생성하는 단계;상기 프로세서에 의해, 상기 일련의 변이 트랜잭션을 복수의 이더리움 클라이언트에게 제공하는 단계;상기 복수의 이더리움 클라이언트의 각각으로부터 상기 일련의 변이 트랜잭션에 의한 각 이더리움 클라이언트의 초기 블록체인 상태로부터의 상태 전이(state transition)와 연계된 일련의 전이 블록체인 상태를 획득하는 단계; 및상기 일련의 전이 블록체인 상태를 기반으로 상기 복수의 이더리움 클라이언트 간 컨센서스 정보를 결정하는 단계를 포함하는,컨센서스 버그 탐지 방법
|
2 |
2
제 1 항에 있어서,상기 일련의 트랜잭션의 각 트랜잭션은 스마트 계약을 생성하는 계약 생성 트랜잭션 또는 스마트 계약을 호출하는 메시지 콜 트랜잭션인,컨센서스 버그 탐지 방법
|
3 |
3
제 1 항에 있어서,상기 일련의 변이 트랜잭션을 생성하는 단계는,상기 일련의 트랜잭션 중 적어도 일부에 트랜잭션 컨텍스트 변이, 트랜잭션 파라미터 변이 및 EVM 바이트코드(bytecode) 변이 중 적어도 하나의 변이를 적용하는 단계를 포함하는,컨센서스 버그 탐지 방법
|
4 |
4
제 3 항에 있어서,상기 적어도 하나의 변이를 적용하는 단계는,적어도 하나의 명령어 추가, 삭제, 복제(clone) 및 복사(copy) 중 적어도 일부를 실행하는 단계를 포함하는,컨센서스 버그 탐지 방법
|
5 |
5
제 3 항에 있어서,상기 EVM 바이트코드 변이는 계약 생성 트랜잭션의 생성자(constructor) 변이 및 반환코드(code-to-return) 변이 중 적어도 하나를 포함하는,컨센서스 버그 탐지 방법
|
6 |
6
제 1 항에 있어서,코퍼스에 저장된 테스트 케이스 집합에서 상기 테스트 케이스를 선택하는 단계; 및상기 일련의 변이 트랜잭션를 포함하는 또다른(another) 테스트 케이스를 상기 테스트 케이스 집합에 저장하는 단계를 더 포함하는,컨센서스 버그 탐지 방법
|
7 |
7
제 1 항에 있어서,상기 일련의 전이 블록 상태를 획득하는 단계는,상기 일련의 변이 트랜잭션에 의한 코드 경로(code path) 정보를 획득하는 단계를 포함하는,컨센서스 버그 탐지 방법
|
8 |
8
제 7 항에 있어서,상기 컨센서스 정보는 상기 복수의 이더리움 클라이언트 간 충돌 정보를 포함하고,상기 컨센서스 정보를 결정하는 단계는,상기 코드 경로 정보에 기반하여 상기 충돌 정보를 추적하는 단계를 포함하는,컨센서스 버그 탐지 방법
|
9 |
9
제 1 항에 있어서,상기 컨센서스 정보를 결정하는 단계는,각 이더리움 클라이언트로부터 획득한 상기 일련의 전이 블록 상태를 각 순서대로 비교하는 단계; 및상기 비교의 결과를 기반으로 상기 일련의 트랜잭션에 대한 상기 복수의 이더리움 클라이언트 간 컨센서스 결과를 결정하는 단계를 포함하는,컨센서스 버그 탐지 방법
|
10 |
10
제 1 항에 있어서,상기 복수의 이더리움 클라이언트는 각각 이더리움 스펙(specification)에 따라 구현된 이더리움 가상 머신(Ethereum Virtual Machine; EVM)의 인스턴스(instance)인,컨센서스 버그 탐지 방법
|
11 |
11
컨센서스 버그 탐지 장치에 있어서,적어도 하나의 명령어를 저장하는 메모리; 및 프로세서를 포함하고, 상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금,일련의 트랜잭션을 포함한 테스트 케이스에 대하여, 프로세서에 의해, 적어도 하나의 변이 과정을 실행하여 상기 일련의 트랜잭션 중 적어도 일부가 변경된 일련의 변이 트랜잭션(mutated transaction)을 생성하고,상기 프로세서에 의해, 상기 일련의 변이 트랜잭션을 복수의 이더리움 클라이언트에게 제공하고,상기 복수의 이더리움 클라이언트의 각각으로부터 상기 일련의 변이 트랜잭션에 의한 각 이더리움 클라이언트의 초기 블록체인 상태로부터의 상태 전이(state transition)와 연계된 일련의 전이 블록체인 상태를 획득하고,상기 일련의 전이 블록체인 상태를 기반으로 상기 복수의 이더리움 클라이언트 간 컨센서스 정보를 결정하도록 구성되는,컨센서스 버그 탐지 장치
|
12 |
12
제 11 항에 있어서,상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 상기 일련의 변이 트랜잭션을 생성하기 위하여,상기 일련의 트랜잭션 중 적어도 일부에 트랜잭션 컨텍스트 변이, 트랜잭션 파라미터 변이 및 EVM 바이트코드(bytecode) 변이 중 적어도 하나의 변이를 적용하도록 구성되는,컨센서스 버그 탐지 장치
|
13 |
13
제 12 항에 있어서,상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 상기 적어도 하나의 변이를 적용하기 위하여,적어도 하나의 명령어 추가, 삭제, 복제(clone) 및 복사(copy) 중 적어도 일부를 실행하도록 구성되는,컨센서스 버그 탐지 장치
|
14 |
14
제 12 항에 있어서,상기 EVM 바이트코드 변이는 계약 생성 트랜잭션의 생성자(constructor) 변이 및 반환코드(code-to-return) 변이 중 적어도 하나를 포함하는,컨센서스 버그 탐지 장치
|
15 |
15
제 11 항에 있어서,상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금,코퍼스에 저장된 테스트 케이스 집합에서 상기 테스트 케이스를 선택하고,상기 일련의 변이 트랜잭션를 포함하는 또다른 테스트 케이스를 상기 테스트 케이스 집합에 저장하도록 구성되는,컨센서스 버그 탐지 장치
|
16 |
16
제 11 항에 있어서,상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 상기 일련의 전이 블록 상태를 획득하기 위하여,상기 일련의 변이 트랜잭션에 의한 코드 경로(code path) 정보를 획득하도록 구성되는,컨센서스 버그 탐지 장치
|
17 |
17
제 16 항에 있어서,상기 컨센서스 정보는 상기 복수의 이더리움 클라이언트 간 충돌 정보를 포함하고,상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 상기 컨센서스 정보를 결정하기 위하여,상기 코드 경로 정보에 기반하여 상기 충돌 정보를 추적하도록 구성되는,컨센서스 버그 탐지 장치
|
18 |
18
제 11 항에 있어서,상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 상기 컨센서스 정보를 결정하기 위하여,각 이더리움 클라이언트로부터 획득한 상기 일련의 전이 블록 상태를 각 순서대로 비교하고,상기 비교의 결과를 기반으로 상기 일련의 트랜잭션에 대한 상기 복수의 이더리움 클라이언트 간 컨센서스 결과를 결정하도로 구성되는,컨센서스 버그 탐지 장치
|
19 |
19
제 11 항에 있어서,상기 복수의 이더리움 클라이언트는 각각 이더리움 스펙(specification)에 따라 구현된 이더리움 가상 머신(Ethereum Virtual Machine; EVM)의 인스턴스(instance)인,컨센서스 버그 탐지 장치
|
20 |
20
제 1 항 내지 제 10 항 중 어느 한 항에 따른 컨센서스 버그 탐지 방법을 프로세서에 의해 실행하도록 구성된 적어도 하나의 명령어를 포함한 컴퓨터 프로그램을 저장한 컴퓨터 판독가능한 비 일시적 기록매체
|