BlockChain
(BlockChain) Truffle
JJeongHyun
2023. 3. 2. 17:38
반응형
기본설정
- 작업하고자 하는 폴더로 이동
- 이후 npm i truffle 입력
- truffle 라이브러리 설치 후 npx truffle init 입력
저는 오늘 날짜에 truffle-test 폴더 안에서 명령어를 입력했습니다!!
그리곤 3개의 폴더와 1개의 js 파일이 생성되었습니다
- 생성된 폴더
- contracts : Solidity를 이용한 Smart Contract 코드 작성 폴더
- migration : 배포 관련된 코드를 작성하는 폴더
- test : 테스트 코드 작성 폴더
- 생성된 파일
- truffle-config.js : tuffle 설정 파일
컴파일할 Solidity 코드 작성
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Practice{
string tempText;
constructor(){
tempText = "Solidity Code test";
}
function getText() public view returns (string memory){
return tempText;
}
function setText(string memory _text) public {
tempText = _text;
}
}
npx truffle compile 실행 후 생성된 데이터를 JSON형식으로 추출한다
- build/contracts 안에 Practice.json 파일이 생성된다
npx truflle migration
- 배포 명령어
- 실행 전에 migration 폴더 내부에 파일을 생성해야 하는데 형식은 다음과 같다
- 번호_내용_컨트랙트명.js
- 1_deploy_Practice.js
- 그다음엔 truffle-config.js 파일 내에 development 관련 설정을 주석을 해제해야 한다
- 이후 정상적으로 연결되는지 보기 위해 ganache와 연결해보려고 한다
- 실행 전에 migration 폴더 내부에 파일을 생성해야 하는데 형식은 다음과 같다
truffle을 사용해서 확인
- npx truffle console
- 실행 후 컨트랙트명.deployed().then((instance)=>저장할변수명=instance)
- instance를 변수에 담아 사용하기 위해 실행
- solidity 코드에 생성한 함수들을 실행해 본다
- 실행 후 컨트랙트명.deployed().then((instance)=>저장할변수명=instance)
getText.call()
setText("변경할 텍스트 작성")
setText로 변경 후 해당 getText() 실행
Jest truffle로 실행
- npx truffle test
- test 폴더 내에 작성
- 컨트랙트명.test.js 생성
const Practice = artifacts.require("Practice");
contract("Practice", (accounts) => {
console.log(accounts);
let practice;
describe("Practice Contract", () => {
it("deploy", async () => {
practice = await Practice.deployed();
});
it("getText", async () => {
console.log(await practice.getText.call());
});
it("setText", async () => {
await test.setText("Hi, hello, bye");
console.log(await practice.getText.call());
});
});
});