kaistshadow / blockchain-sim

Scalable blockchain simulator/emulator running on shadow simulator
MIT License
9 stars 1 forks source link

Add Latency API support Bitcoin #320

Closed hyojin5658 closed 3 years ago

hyojin5658 commented 3 years ago

add latency API and support Bitcoin latency test

hyojin5658 commented 3 years ago

tpstest-app의 두가지 API를 구현하였다.

  1. Latency -Txgenerator가 트랜잭션을 생성 한 순간부터 블록에 올라가기 까지의 시간의 평균
  2. TPS - (메인 체인의 블록에 추가 되어 있는 트랜잭션 개수)/(블록 사이의 timestamp 차의 합) 이 각각의 policy는 1초에 1번씩 Monitoring의 노드의 mainchain을 참고하여 각각 latency 혹은 tps를 업데이트 하는 방식으로 구현하였습니다. 동작 방식은 Mainchain의 가장 마지막 블록(best_tip)부터 genesisblock 까지 탐색하여 tps는 트랜잭션 개수와 timestamp를 구하는 방식이고, latency는 table에 집어넣은 timestamp와 해당 트랜잭션이 포함된 블록의 timestamp를 구해서 latency를 계산한다.

이 두가지 테스트를 진행하기 위해서 사용하는 노드가 있다.

  1. TxGeneratorNode - 트랜잭션의 최대 개수를 파악하기 위하여 트랜잭션을 무한히 생성해주고, 트랜잭션 생성한것을 블록체인에게 메세지 형태로 보냄.
  2. MonitoringNode - 메인체인의 각 블록체인 노드의 블록을 트리 형태로 관리하고 있다.
hyojin5658 commented 3 years ago

TPS 테스트를 실행하는 법 cd BLEEPeval/tpstest-app/bitcoin; sh start_test.sh 3 TPS ; (sh start_test.sh [난이도] [tps/latency]

Latency 테스트 실행 하는 법 cd BLEEPeval/tpstest-app/bitcoin; sh start_test.sh 3 Latency ; (sh start_test.sh [난이도] [tps/latency]

이렇게 실행 하면 되고, 테스트에 대한 결과는 shadow.data/hosts/txgenerator/stdout-txgenerator.BITCOINTPS_TESTER.1000.log 파일에 있으며, 해당 테스트에 관한 결과를 확인할 수 있다.

victork86 commented 3 years ago

어느 브랜치에서 테스트하셨나요? TPS/Latency를 묶어 놨네요. 위키에도 묶어서 작성하는 방향으로 할께요~

hyojin5658 commented 3 years ago

@victork86 issue/320 branch에서 작업했습니다~

tkdlqm2 commented 3 years ago

TPS/Latency Regtest

hyojin5658 commented 3 years ago

해당 브랜치를 develop 브랜치에 PR 날려서 merge 했습니다.

330