목표
1. https://docs.klaytn.com/klaytn2 을 기준으로 klaytn에서 smart contract 개발 환경을 구축 합니다.
개발 환경
- klaytn의 smart contract 개발 환경을 구축 합니다.
- 설치 가이드 https://docs.klaytn.com/getting-started/quick-start/install-development-tools
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
'내맘대로 Study > 블록체인' 카테고리의 다른 글
[클레이튼] caver.wallet.keyring.decrypt() 에러, Uncaught ReferenceError: Buffer is not defined (0) | 2022.05.11 |
---|---|
[클레이튼] webpack 5.x 와 caver-js 호환성 문제 해결 (0) | 2022.05.03 |
[클레이튼] 개발 환경 (0) | 2022.04.27 |
[solidity] 개발자를 위한 속성 문법 2 (0) | 2022.04.25 |
[클레이튼] ERC-721 개발 (0) | 2022.04.25 |