[BlockChain] solidity 컴파일

2022. 12. 5. 17:42·개발/BlockChain
728x90
반응형

1. solc

solc 설치

npm i solc

컴파일 명령어

// npx solc --bin --abi (파일경로)
npx solc --bin --abi test.sol

작성한 test.sol 파일

/* 솔리디티 버전 */
pragma solidity ^0.8.15;

// HelloWorld 컨트랙트
contract HelloWorld {
    string text;
    constructor(){
        text = "Hellooooo World~~~~~";
    }
    function getText() public view returns(string memory){
        return text;
    }
    function setText(string memory value) public{
        text = value;
    }
}

2. abi,bin

컴파일을 하게되면 .abi와 .bin 파일이 생성된다.

abi : 스마트 컨트랙트 안에 매개변수나 함수들을 json형식으로 나타낸 리스트

함수를 호출하거나 데이터를 호출해서 받을수 있다.

bin : 컴파일된 바이트 코드내용, 이더리움 네트워크 상에 배포

 

3. 자바스크립트 콘솔창

geth 서버 열고 attach 로 들어가기

 

bytecode = "0x 뒤에 솔리디티로 컴파일한 bin파일의 내용 복붙"
abi = 솔리디티로 컴파이란 abi파일의 내용 복붙(객체들어있는 배열)

위처럼 작성하면 let이나 const,var 없이 선언해준다.

txObject = { from : eth.coinbase, data : bytecode};

트랜잭션 객체를 만들어주고

contract = eth.contract(abi)
instance = contract.new(txObject)

인스턴스를 만들어준다.

인스턴스를 통해 컨트랙트 안의 함수들에 접근한다고 보면 된다.

instance.setText('aaaaaaaaa',{from : eth.coinbase})

작성후 마이닝 하면 'aaaaaaaaaa' 이 출력된다.

4. 상태변수

상태변수를 가져오는것과 변경하는것은 차이가 있다.

상태변수의 값을 바꿔준다는건 저장공간의 값이 달라진다는것이다.

네트워크에 저장공간은 한계가 있기 때문에 저장 용량을 바꾸기 위해서 추가로 비용을 지불해야 한다.

결국엔 EVM을 실행 시키기 위해 비용을 지불하는 것이다.

 

728x90
반응형

'개발 > BlockChain' 카테고리의 다른 글

[BlockChain] truffle로 스마트컨트랙트 배포하기  (1) 2022.12.05
[BlockChain] 스마트 컨트랙트 배포  (0) 2022.12.05
[BlockChain] geth  (0) 2022.11.28
[BlockChain] React 메타마스크 연결하기  (0) 2022.11.21
[BlockChain] RPC web3 테스트  (0) 2022.11.21
'개발/BlockChain' 카테고리의 다른 글
  • [BlockChain] truffle로 스마트컨트랙트 배포하기
  • [BlockChain] 스마트 컨트랙트 배포
  • [BlockChain] geth
  • [BlockChain] React 메타마스크 연결하기
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    컨테이너
    node
    30일 챌린지
    html
    nodejs
    CSS
    go언어
    React
    명령어
    erc20
    ERC721
    프로그래머스
    30일챌린지
    블록체인
    node.js
    하이퍼레저
    도커
    mysql
    go
    js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[BlockChain] solidity 컴파일
상단으로

티스토리툴바