Klaytn의 blockhash를 이용하는 서비스를 기획해도 좋을까요?

miner 입장에서 transaction들을 임의로 배열할 수 있다면 원하는 blockhash 값을 만들어 낼 수 있을 것 같아 보안적으로 취약할 것 같습니다. 현재 이런 취약점을 해결할 수 있는 장치가 있나요?
없다면 블록에 담길 transaction들의 순서를 정렬하도록 강제하기만 해도 해결할 수 있을 것 같은데 이러한 pull request 작성을 고려해봐도 괜찮을까요?

안녕하세요, 클레이튼 포럼에 질문을 올려주셔서 감사드립니다.

  • 원하는 blockhash를 만들어 낼 수 있다면, blockhash를 이용하는 서비스에 영향을 끼칠 수는 있을 것 같습니다. 다만 그 마이너가 해당 서비스에 대해 뭔가 이득을 취할 수 있어야 하는데, 그 영향력이 얼마나 될지는 분석과 실험이 필요할 것 같습니다.

  • 취약점이라고 한다면 정확히 어떤 부분이 취약점인지 판단을 해야 할 것 같은데요, 현 시점에서 transaction을 임의로 배열하여 원하는 blockhash를 만들어 냈을 때 어떤 문제가 생길 수 있을지 좀 더 고민해 봐야 할 것 같네요.

  • 마지막으로 transaction의 순서를 강제한다고 하셨는데, 어떻게 강제할 수 있을까요? 임의의 트랜잭션들이 있다고 할 때 그 순서를 정할 기준을 만드는 것도, 확인하는 것도 쉬울 것 같진 않습니다.

klaytn은 오픈소스이기 때문에 pull request는 누구나 만들 수 있습니다. 작성해보시고 클레이튼 코어 개발자들과 논의를 해 보시면 좋을 것 같습니다.

감사합니다.

1개의 좋아요

초기에 이득이 일정 수준보다 작더라도, 추후에 더 큰 규모의 서비스로 확장할 때 문제가 생길 수 있을 것 같다는게 생각입니다.

아직 구체화된 것은 없습니다만, 간단하게 예를 들어보겠습니다. 어떤 tx이 포함된 블록의 바로 다음 블록(미래의 블록)의 hash값을 seed로 하는 랜덤추첨 서비스의 경우, miner가 원하는 seed가 나올 때까지 tx들의 순서를 섞는 상황이 있을 것 같습니다. 물론 이렇게 서비스를 기획하지 않으면 발생하지 않는 문제는 맞습니다.

강제하는 방법은 단순히 transaction들의 hash값을 key로 해서 정렬하는 것입니다. 큰 비용없이 위의 문제를 해결할 수 있을 것 같습니다.

코드가 방대해서 조금 막막하긴 하지만, 저에게 필요한 기능이 될 수 있을 것 같아서 한번 시작해봐야겠습니다…!
답변 감사합니다. :slight_smile:

네네 외부 컨트리뷰션이 별로 없는 프로젝트인데, 기여해주신다면 좋을 것 같습니다. :slight_smile:

몇가지 구현 디테일에 대해 추가 말씀을 드리자면, hash를 통해 정렬한다는 이야기는 실행 순서 또한 hash로 정렬된 순서로 실행을 해야 합니다. mining을 하는 시점부터 정렬된 순서로 트랜잭션을 처리하도록 구현해야 하는데, 이 부분도 고려해 보시면 좋을 것 같습니다. 즉 txpool에서 transaction을 뽑을 때 부터 정렬된 순서로 나오도록 해야 할 것 같습니다.

반대로 이럴경우, transaction 생성시에 낮은 혹은 높은 hash값을 가지기 위해 어떤 동작들이 발생할 수 있을 가능성도 생각해 볼 수도 있을 것 같습니다.

그리고 가능하시다면 KIP 에 기여할 수 있는 부분이 될 수도 있을 것 같아서, 이 부분도 고려해주시면 좋을 것 같습니다.

감사합니다.

1개의 좋아요