1. contract compiler 설치


   npm install -g solc



2. 폴더 생성후 contract 작성


mkdir test



# contract 작성

pragma solidity ^0.5.0;


contract Simple{

    uint256 public data;

    function get() view public returns(uint256) {

        return data;

    }

    function set (uint256 _data) public{

        data= _data;

    }

}



3. contract compile

# contract compile

solcjs --optimize --bin --abi Simple.sol



4. contract 생성 


web3.personal.unlockAccount(web3.eth.accounts[0], "<password>");


var simpleabi = [{"constant":false,"inputs":[{"name":"_data","type":"uint256"}],"name":"set","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"get","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"data","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}];


var simplebin = "0x608060405234801561001057600080fd5b5060ec8061001f6000396000f3fe608060405260043610604c577c0100000000000000000000000000000000000000000000000000000000600035046360fe47b1811460515780636d4ce63c14607957806373d4a13a14609d575b600080fd5b348015605c57600080fd5b50607760048036036020811015607157600080fd5b503560af565b005b348015608457600080fd5b50608b60b4565b60408051918252519081900360200190f35b34801560a857600080fd5b50608b60ba565b600055565b60005490565b6000548156fea165627a7a7230582021de534458be79a3342e230025b1c954733986fbd89e8048897c933b766d71ce0029";


var simpleContract = web3.eth.contract(simpleabi);

var simple = simpleContract.new({

      from: web3.eth.accounts[0],

      data: simplebin,

      gas: 4700000

   }, function (e, contract) {

      console.log(e, contract)

      if (typeof contract.address !== 'undefined') {

         console.log('Address: ' + contract.address);

      }

   });


위에 new를 수행하면 contract address가 출력되고 해당 address 사용하여 contract 인스턴스 생성 사용


5. contract 사용


web3.personal.unlockAccount(web3.eth.accounts[0]);


var simp = web3.eth.contract(simpleabi).at("0x81b0f269835c1188373e60f026c71f0f3a5120b9");

simp.data()

simp.get()

simp.set(1000, { from: web3.eth.accounts[0] });






'blockchain > ethereum' 카테고리의 다른 글

solidity contract  (0) 2018.12.31
solidity data type  (0) 2018.12.30
solidity solc 설치  (0) 2018.12.30
ethereum 인프라 활용  (0) 2018.12.27
geth 기본 명령어  (0) 2018.12.27

+ Recent posts