dev_dean 2022. 5. 21. 12:03

스마트컨트랙트를 개발하면서 웹에서 스마트컨트랙트를 호출하기 위해서는 웹 프로젝트 폴더에 abi가 필수적으로 있어야 합니다. 이 ABI라는 것에 대해 알아보겠습니다.

ABI(Application Binary Interface)

ABI란 Application Binary Interface의 약자로서 스마트 컨트랙트와 다른 프로그램 모듈의 인터페이스 역할을 하고 있으며 스마트 컨트랙트의 매개변수, 함수들을 json으로 표현한 것입니다.

ABI를 사용하는 이유

ABI는 컨트랙트 내의 함수를 호출하거나 컨트랙트로부터 데이터를 얻는 방법입니다. 스마트 컨트랙트는 블록체인에 바이트 코드로 배포되는데 컨트랙트 내에 포함된 함수들 중 어떤 함수를 호출할지 지정하기 위해 ABI가 필요하며 호출한 함수의 리턴 값이 어떤 것인지를 보장하기 위해 반드시 필요합니다.

예시

간단한 코드를 보겠습니다.

// SPDX-License-Identifier: None

pragma solidity ^0.8.0;

contract Hello {
    function hello() public pure returns (string memory) {
        return "hello!";
    }
}

이 스마트 컨트랙트를 컴파일하면 Hello.json이라는 파일이 생성되며
맨 밑으로 내려보면 다음과 같이 컨트랙트의 함수 정보가 적혀있는 것을 볼 수 있습니다.


컨트랙트를 컴파일한 후 생성된 이 abi파일을 웹 프로젝트 폴더에 포함한 후 web3 라이브러리를 이용해서 컨트랙트를 호출할 수 있습니다.

더 깊은 내용은 여기를 참고하시면 됩니다.