status-2025-03-07

Dataset 생성

  • 소스 코드의 컨트랙트에 있는 모든 함수를 각각 분리
  • 각 함수를 개별 컨트랙트로 만들어서 컴파일
  • 컴파일된 바이트코드에서 함수 body 부분만 뽑아내어 데이터셋 생성 (비교적 쉬움)
  • 사용할 parser generator 는 tree-sitter 생각 중

문제점

즉시 위 프로세스를 구현하려 했으나, 디테일한 방법이 완성되지 않아서 손을 못 대고 있음.

1. 다른 함수를 호출하는 함수

  • External function call 이 있을 경우 해당 함수의 definition 없이는 컴파일이 아예 되지 않음.
  • 기존 연구들에서 타깃으로 한 C 와는 다른 상황

  • 그렇다고 function 의 definition 을 살리면 원하는 bytecode 에서 function body 를 정확히 구별할 수 없음.
    • Bytecode 만 봐서는 각 function 의 boundary 를 구분하는 것이 어렵기 때문. (tag 나 label 이 없어서)
    • Intra-functional jump 랑 inter-functional jump 가 쉽게 구별이 안 됨.

  • Type 이 일치하는 empty body function 을 삽입하면 그나마 조금 쉽지 않을까… (previous work)
    • 이것도 function call 수가 늘어나면 구분이 어려워질 수도 있다.

2. Ownable

  • 위와 비슷한 문제
  • Owner 를 확인하는 코드가 중간에 삽입되어서 function body 가 뭔지 정확히 파악이 어려움.

3. State variable

  • state variable 을 직접 변경하는 함수의 경우 우선 state variable 을 해당 변수를 활용하는 함수와 같이 분리할 생각을 하고 있음.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *