생애 2번째 블록체인 개발자 면접에서 받은 질문이었다.개발 팀장님 : 솔리디티에서 deleagete이 뭐죠?나 : 태어나서 처음 들어봅니다.난 팀장님의 표정을 보았다. 씁쓸하게 웃으시면서 넘어가시는 표정, 분명 실망이었으랴.내가 공부해갔던 솔리디티와 관련 블록체인 지식
블록체인 개발자 면접 과정에서 관련 질문을 받았는데, 답변을 하긴 했는데 정확히 맞는지 모르겠다.개발 팀장님 : 솔리디티 에러 처리에서, 가스비를 되돌려 주는 에러처리는요?나 : 음.... revert와 require?다시 복기해보자.0.8 이후로 assert도 환불이
스마트 컨트랙트를 블록체인에 저장한다는 말은 무엇일까?Solidity 코드를 파일 통으로 저장한다는 건가? 맞겠냐?Solidity를 Compile한 Bytecode가 블록체인에 저장된다.함수 하나, 전역 변수 하나 있는 Solidity 코드는 이렇게 바이트코드로 컴파일
컨트랙트에서 저장되는 다양한 전역변수들은 Storage에 저장된다.이 때 Slot(256비트) 단위로 주소를 가지어 저장한다.뭔 개소리냐고? 예시를 보면 ㅈㄴ 쉽다.EVM은 컨트랙트에 선언한 순서대로 슬롯에 저장한다. 즉 위부터 슬롯 0부터 차례대로 저장한다.대충 감이
당신이 블록체인 노드를 개발해야 된다. EVM을 직접 만들어야 돼.상식적으로 생각하면 된다.만약 상황을 가정하고, EVM의 동작 방식을 먼저 살펴보자.여기서 우리가 주목할 건 to, data, gas!상태 DB에서 to인 주소를 찾아간다.해당하는 컨트랙트의 값으로가
totalSupply() : 총 발행량 조회balanceOf() : 특정 주소의 토큰 잔액 조회transfer() : 토큰 전송approve() : 다른 주소가 내 토큰을 사용할 수 있도록 허용transferFrom() : 허용된 주소가 토큰을 전송하도록 허용정말 별
이더리움에서 트랜잭션의 종류는 총 3가지다. (롤업 트랜잭션 제외)컨트랙트 생성 트랜잭션컨트랙트 함수 호출 트랜잭션이더 전송 트랜잭션당신은 각각의 종류의 트랜잭션 데이터를 아는가?뭔 개소리냐고?이 JSON 데이터를 적재적소에 맞게 직접 만들 수 있냐는 거다.태어나서 처
컨트랙트가 배포되면, 코드는 수정할 수 없다. 여기서 말하는 Code는 전체 솔리디티 코드에 해당하는 부분이 아닌, "함수부" 이다.변수야 함수 로직을 통해서 수정할 수 있으니까 제외하고, 함수의 로직은 배포되면 수정할 수 없음을 기억하자.그런데 아무리 불변성이니, 무
1편을 완벽하게 이해했다면,Proxy에 실제 변수들을 저장해놓고, 이 변수들을 활용하는 로직만을 V1,V2에 구현해야 한다는 것을 느꼈을 것이다.다만 이때 delegatecall을 사용하기에 Slot layout이 Proxy 것임을 고려하여, 충돌이 안나게 해야할 것이
원래 라이브러리에서 제공하는 컨트랙트들을 상속받아 예제를 만들려고 했으나,뭔가 자꾸 엉켜서 직접 핵심기능들만 만들어 보는 것은 안 비밀.원래 UUPS 예제도 만들려고 했으나 upgradeToandAll 호출하는 과정에서 에러의 원인을못찾아 Transparent Prox
Rust로 만들어진 초고속 Solidity 개발 프레임워크로,Solidity 프로젝트를 컴파일 → 테스트 → 배포 → 검증까지 전부 지원하는 툴이다.이더스캔 등에 코드가 공개된 유명한 컨트랙트 같은 경우 복제해올 수 있다.프로젝트 내에서 외부 라이브러리 사용하는 것li