내맘대로 Study/블록체인

[클레이튼] 개발 환경 truffle 설정 및 테스트 배포

jinkwon.kim 2022. 5. 2. 23:38
728x90
반응형

목표 

1. https://docs.klaytn.com/klaytn2 을 기준으로 klaytn에서 smart contract 개발 환경을 구축 합니다.

 

Klaytn 2.0 - Klaytn Docs

2. High Performing Mainnet

docs.klaytn.com

개발 환경

    - klaytn의 smart contract 개발 환경을 구축 합니다. 
    - 설치 가이드  https://docs.klaytn.com/getting-started/quick-start/install-development-tools

 

Install Development Tools - Klaytn Docs

where is one of: compile, console, deploy-contract, deploy-service, flatten, gen-script, init

docs.klaytn.com

1. caver-js 설치

    - caver-js@1.8.1

2. klaytn 배포, 관리 ,테스트 framework

    - truffle@4.1.15

caver

1. caver 정의

    - 

2. caver 설치

    $mkdir $HOME/klaytn

    $npm init

    $ npm install caver-js

truffle

1. truffle 정의

트러플(Truffle)은 이더리움 기반 디앱을 쉽게 개발할 수 있도록 도와주는 블록체인 프레임워크이다. 스마트 컨트랙트(smart contract) 컴파일, 배포, 관리, 테스트까지 빠르고 쉽게 할 수 있다.

 

klaytn 역시 truffle framework 를 사용하여 개발 가능 합니다.

2. truffle 설치

    1) 설치 

        $sudo npm install -g truffle@4.1.15

        $cd /usr/local/lib/node_modules/truffle

        $sudo npm install solc@0.5.6

        $cd -

    2) 버전 확인

        $ truffle version
        Truffle v4.1.15 (core: 4.1.15)
        Solidity v0.4.25 (solc-js)

3. truffle init

    1) $HOME/klaytn 에 truffle 초기화 

        $cd $HOME/klaytn

        $mkdir klaytn-testboard

        $cd klaytn-testboard

        $ truffle init

    2)기본 truffle 구조

    3) 구조설명

depth1 depth2 설명
contract   - solidity contract 파일 보관
  Migrations.sol - smart contract 배포할 때 migrations 폴더안에 있는 script를 실행하게 합니다.
migrations   - 배포와 관련된 정보를 저장 
  1_initial_migration.js - 배포과정 로직이 구현되어 있습니다. 
- Migrations.sol를 불러와서 kalytn node에 배포 합니다. 
test   테스트 디렉토리
truffle-config.js   - 환경 설정을  담당.
- 어느 network에 smart contract를 배포할지 정의 

truffle config 설정

1. truffle-hdwallet-provider-klaytn 설치

    $npm install truffle-hdwallet-provider-klaytn

https://github.com/klaytn/truffle-hdwallet-provider-klaytn

2. truffle-config.js 설정

    - baobab testnetwork 설정

const HDWalletProvider = require("truffle-hdwallet-provider-klaytn");

module.exports = {
  networks: {
    baobab: {
      provider: () => { return new HDWalletProvider("0x6962a54761052918976894526d977036c990e8595c86c983d06e0289e73299bb", "https://api.baobab.klaytn.net:8651") },
      network_id: '1001', //Klaytn baobab testnet's network id
      gas: '8500000',
      gasPrice: null
    },
  },

  // Set default mocha options here, use special reporters etc.
  mocha: {
    // timeout: 100000
  },

  // Configure your compilers
  compilers: {
    solc: {
      version: "0.5.6"    // Specify compiler's version to 0.5.6
    }
  }
}

Test Smart Contract Code

1. KlaytnGreeter.sol Code

pragma solidity 0.5.6;
contract Mortal {
    /* Define variable owner of the type address */
    address payable owner;
    /* This function is executed at initialization and sets the owner of the contract */
    constructor () public { owner = msg.sender; }
    /* Function to recover the funds on the contract */
    function kill() public payable { if (msg.sender == owner) selfdestruct(owner); }
}

contract KlaytnGreeter is Mortal {
    /* Define variable greeting of the type string */
    string greeting;
    /* This runs when the contract is executed */
    constructor (string memory _greeting) public {
        greeting = _greeting;
    }
    /* Main function */
    function greet() public view returns (string memory) {
        return greeting;
    }
}

2. 1_initial_migration.js Code

const Migrations = artifacts.require("Migrations");
const KlaytnGreeter = artifacts.require("./KlaytnGreeter.sol");

module.exports = function (deployer) {
  deployer.deploy(Migrations);
  deployer.deploy(KlaytnGreeter, 'Hello, Klaytn');
};

Test Smart Contract 배포

1. 배포 명령 

    $truffle deploy --network baobab --reset 

 

참조 

https://bloccat.tistory.com/38

 

KAS 사용하기 - 준비

KAS란? KAS란 Klaytn API Service의 약자로 ground-x에서 제공하는 클레이튼 네트워크 전용 api다. 클레이튼기반의 BApp을 개발하려면 클레이튼 네트워크에 Endpoint Node를 띄워야 하는데 KAS를 사용하면 KAS가 E

bloccat.tistory.com

 

728x90
반응형