전체 글
-
Symbolic ExecutionSoftware Testing 2022. 9. 26. 23:07
보통 프로그램을 실행한다고 하면, 구체적인 입력값이 주어지고 입력값에 대해 특정한 경로가 실행되는 것을 말한다. 1️⃣ Symbolic Execution 구체적인 입력값이 아닌 symbol, 기호를 사용하여 프로그램을 실행하는 기법이다. void foo(int x) { int i = 10; if (x > 0) i = x; else i = -x; } 예로 들어 이와 같은 함수가 있다고 가정해보자. 일반적인 프로그램은 i의 값이 10으로 지정되어있고, foo에 x가 정의되어 있으니까 i의 값을 x에 대입해 조건문에 대해 값을 도출한다. 여기서 symbolic execution 같은 경우는 x > 0 AND i = x x < 0 AND i = -x 이렇게 두 결과를 준다. 이 말은 즉슨, 구체적인 값을 따로 ..
-
HowToGit - 3Tools/Github 2022. 9. 13. 23:27
git merge 하는 방법을 알아보다가 또 까먹을까봐.. git remote -v 위 명령어를 통해 remote 된 레포지터리를 확인한다. 지금 현재 cliffclimber-721로 등록된 깃허브 레포지토리가 있는데, 얘를 merge 했다고 부른다. 보통 내가 작성 코드를 다른 레포지토리로 올리고 싶을 때 사용하는 방법이다. git branch "브랜치 이름" 내가 이 터미널 내에서 사용하고자 하는 브랜치 이름을 만들어준다. 위 터미널창을 보면 난 cliffclimber-721로 지정해두었다. git merge main git merge "브랜치 이름" main으로 지정해둔 레포지터리와 내가 지정한 브랜치 이름의 레포지토리를 서로 merge 한다. 그럼 병합되는 레포지터리기 때문에 맨 위에서 보이는 터..
-
solc 0.4.25 with DockerBlockchain Security/solc 2022. 8. 7. 21:14
드디어 성공했다! Docker 통해 특정 버전의 solc를 호출했다. 여태 Docker를 글로만 읽어서 해결하려니까 어려웠는데 역시 인프런은 인프런했다라고 말해주고 싶다. solc 0.4.25 버전이 실행될 수 있는 파일을 만들었다. 물론 안에는 Dockerfile만 존재한다. Dockerfile을 실행하기 위해선 해당되는 디렉토리 주소를 입력하고 실행한다. (그냥 내 마음 편하자고 거기 들어가서 하는겁니다. 상관없어요.) 그리고 내가 만든 Dockerfile은 아래와 같다. FROM ubuntu:20.04 RUN apt-get update RUN DEBIAN_FRONTEND=noninteractive apt-get install -y curl RUN curl -sL https://deb.nodesour..
-
Docker 이미지 생성Tools/Docker 2022. 8. 5. 17:27
이미지는 읽기 전용과 쓰기 가능 전용이 따로 나뉜다. 예로 들어서 Ubuntu를 설치했다고 생각해보자. Ubuntu 이미지 자체는 수정할 수 없다. 이미지를 바꿀 수도 없고 안에 내용들을 추가하거나 삭제하는 것은 가능하다. 내용이라고 한다면 프로그램 설치를 말할 수 있을 것 같다. 그 프로그램 설치는 쓰기 가능한 이미지가 되는 것이다. 한 번 예시로 Ubuntu 18.04에 Git을 깔아본다면 docker run -it --name git ubuntu:18.04 bash root으로 접근한 것을 볼 수 있고 git init 명령어를 치면 git이 없는 것을 확인할 수 있다. ls를 입력해 git을 찾아보려고 해도 보이지는 않는다. 설치한 명령어와 화면 로그는 아래와 같다. 그리고 내가 만든 Dockerf..
-
docker-composeTools/Docker 2022. 8. 5. 01:29
1️⃣ docker-compose docker-compose version docker를 설치하게 되면 docker-compose는 따라서 설치되게 된다. 2️⃣ docker-compose.yml 일단 예시로 MySQL을 설치해보는 것으로 시작해보자면 docker run --platform linux/amd64 -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=0721 -e MYSQL_DATABASE=mydb -e MYSQL_PASSWORD=0000 -d mysql 제일 중요한 부분은 --platform linux/amd64 이다. 그 이유는 Apple Silicon은 arm이기 때문에 linux/amd64를 지원하지 않는다. 명령어는 Linux와 유사할지 몰라도 일..
-
Docker 설치 및 기본 명령어Tools/Docker 2022. 8. 4. 23:53
solc 버전 0.5.16 버전을 설치하고 싶어서 Docker 설치법을 찾아보다가 여러 자료를 뒤지고 내 맘대로 설정해보다가 까먹을까봐 적는 글. 참고로 제 환경은 Macbook Pro 2021 M1 Pro 니까 아마 그에 맞는 환경을 찾는게 빠를 수도 있고, 대부분 명령어는 비슷하니까 참고해도 좋을 법한.. 1️⃣ Docker? Docker를 사용하기 전에 UTM이나 VirtualBox, VMware 등 원래는 가상머신 혹은 가상환경을 통해 우분투나 CentOS를 사용하는 경우가 많았는데 이젠 Docker의 컨테이너를 통해 여러 버전의 환경들을 사용할 수 있다. https://www.docker.com/products/docker-desktop/ Docker Desktop - Docker MOST CO..
-
-
General InformationBlockchain Security/solc 2022. 7. 16. 16:59
solc --version 버전 확인이 가능하다. solc --license solc이랑 관련된 license 정보가 다 나온다. solc --input-file "arg" solc 로 input file에 대해 compile의 유무를 확인하고 arg 자리에는 파일명을 입력해주면 된다. 지금 내 파일 안에 subcurrency.sol 파일을 예시로 삼아서 했고, 그 결과는 위 사진처럼 나온다. 일단 이 명령어가 실행되려면 문법이 어긋나서는 안되고, pragma solidity '숫자버전'의 유무도 중요하다고 생각한다. subcurrency.sol 코드는 아래와 같다. subcurrency.sol // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.4; c..