kaistshadow / blockchain-sim

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

PoS bundle implementation in BLEEPlib #326

Closed ygnkim closed 3 years ago

ygnkim commented 3 years ago

318 에서 PoW 모듈을 추가한 것처럼, PoS 합의 프로토콜을 구현하여 BLEEPlib에 추가해야함.

대략적으로 아래의 내용에 대한 이해 및 작업이 필요하다.

ygnkim commented 3 years ago

@tkdlqm2 전에 얘기했던대로 PoS 모듈 구현이 필요한데 혹시 여유가 되신다면 시간날때 조금 봐주시고(?), 저랑 효진님한테 공유해주시면 좋을 것 같습니다. 기존 PoS 프로토콜 조사, 현재 PoW 구현 이해 및 PoS는 어떻게 구현하면 좋을지 등등?

tkdlqm2 commented 3 years ago

@ygnkim 확인이 늦어서 죄송합니다. 이번 주에 rel0.3 관련 regtest 마무리 하는데로 작업하겠습니다.

ygnkim commented 3 years ago

현재 유명한 PoS 들이 알고랜드, Cardano(ADA), Casper(이더리움), 텐더민트, peercoin 등이 있는데, Cardano의 ouroboros PoS를 보면 좋을 것 같습니다. 학술적으로 제일 정리가 잘되어 있는것 같습니다. ouroboros에 대해 엄청난 양의 연구가 이루어졌는데, 다 볼 필요는 당연히 없고 가장 기본적이고 가장 기초적인 알고리즘의 최소한의 동작을 위한 부분만 구현을 하는 것을 목표로 하지요.

구현할 내용

hjkim17 commented 3 years ago

@ygnkim 임시로 BLEEPemul/emulation에 PoS 구현체를 간단하게 테스트하기 위해서 node-pos 및 xml 넣어놨습니다. BLEEPlib 쪽 코드에는 디버그용 cout 출력(DEBUG, debug 등으로 시작)을 임시로 넣어놨습니다. BLEEPemul/emulation에 xml 코드는 파일 명대로 1노드/2노드, stake이 여러개인경우, 관련 stake이 없는 경우, 관련 stake이 노드 개수에 맞춰 있는 경우 등의 예시로 인풋 boundary check를 구성했습니다. stake file들(*.txt) 들은 id:stake 페어로 구성되어있고, xml의 각 노드 argument로 creator id 및 stake file 문자열을 입력해줘야 합니다. 각 argument parameter는 BLEEPlib 코드 및 xml 예시를 참고하시면 됩니다.

tkdlqm2 commented 3 years ago

BLEEP - POS regression test

hyojin5658 commented 3 years ago

develop 브랜치에 merge 하였으므로 해당 issue를 닫도록 하겠습니다.