본문 바로가기

Blockchain/solidity

(5)
Abi 파일의 역할 스마트컨트랙트 문서를 함께 보며 개발을 진행해야 하다보니, 스마트컨트랙트의 Abi 라는 파일을 알고 있어야 한다. Abi 파일은 무엇이고, 그 역할은 무엇인지 정리해보자. Abi(Application binary interface) 블록체인 외부(오프체인)와 Contract간 상호작용을 위해 EVM의 Contract와 상호작용하는 표준 방법 -> solidity로 작성된 컨트랙트를 remix 등의 IDE로 컴파일하게 되면 나오게 되는 결과로 일종의 코드이다. 컨트랙트 코드를 어떻게 해석해야 하는지에 대한 정보를 담고 있다. Abi의 역할 컨트랙트에 있는 메소드나 다른 정보들을 json형태로 가지고 있는데, 이 abi 파일을 이용해서 컨트랙트의 메소드를 불러서 사용할 수 있으며 & 메소드에 어떤 파라미터가..
스마트컨트랙트 구조 + 접근제어 지정자(external,internal ..) // 1. 컨트랙트 선언 contract Sample { // 2. 상태 변수 선언 uint256 data; address owner; // 3. 이벤트 정의 event logData(uint256 dataToLog); // 4. 함수 변경자 정의 modifier onlyOwner() { if(msg.sender != owner) throw; _; } // 5. 생성자 function Sample(uint256 initData, address initOwner){ data = initData; onwer = initOwner; } // 6. 함수(메소드)정의 function getData() returns (uint256 returned) { return data; } function setData(ui..
Smart Contract의 구조 + contract 정의 스마트컨트랙트 문서를 접하다보면 스마트컨트랙트의 구조가 따로 있지 않을까?를 생각해봤다. contract {} 코드 안에 event가 들어가고, event와 emit은 또 짝을 이루고.. 등등 상태 변수(State Variable) 구조체(Struct Type) 열거형(Enum Type) 함수(Function) 함수 제어자(Function Modifier) 이벤트(Event) 에러(Error) 상속(Inheritance) 위의 요소들이 스마트컨트랙트를 이루는 요소들이다. contract 정의 contract SimpleStorage { uint storedData; // 상태 변수 //함수 function set(uint x) public { storedData = x; } //변수 function ge..
event의 역할 + Transaction log 스마트컨트랙트 문서를 읽다보면 event 라는 용어가 자주 언급된다. event는 말 그대로 '행사','사건'이라는 뜻인데 solidity에서 event가 어떤 역할인지 찾아보았다. solidity's event란? solidity에서 event를 이용하여 블록에 데이터를 저장하거나, EVM logging 기능을 사용하여 저장된 트랜잭션에서 데이터 호출 가능한 문법 event의 특징 - 데이터 저장만 가능하며 삭제&업데이트 불가 - 데이터 조회는 온체인에서 불가능하며, 오프체인에서 JS를 통해 해당 블록의 트랜잭션을 조회하여 데이터를 확인한다. event를 사용하는 이유 Contract의 data storage에 저장하는 것보다 gas fee가 훨씬 저렴하다. 그렇기 때문에 블록체인에서 영속성을 가진 데..
bytes32 자료형을 사용하는 이유? vs bytes solidity로 작성된 스마트 컨트랙트 문서를 보다보면 bytes32로 선언된 function이나 event들을 자주 접하게 된다. 그러던 중에 bytes32이면 32바이트인가? 왜 '32'라는 숫자를 좋아할까? 궁금해서 구글링을 해보았다. 한 블로그의 예시에서는 Polygon의 PoS 브릿지에서는 토큰타입등과 같이 이벤트로 남기는 값에 있어서 주소값을 제외하고는 bytes32를 남긴다고 한다. bytes32를 사용하는 이유 일반 byte에 비하여 용량을 적게 사용한다고 한다. 가스비를 최대한 줄여야 하기 때문에 bytes32를 사용한다고 한다. bytes vs bytes32 bytes bytes는 byte[]와 같은 의미를 가진다. bytes와 같은 가변(동적) 길이의 배열은 interface나 AB..