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 을 해당 변수를 활용하는 함수와 같이 분리할 생각을 하고 있음.
Leave a Reply