# 트러플 & 컨트랙트 배포
1. truffle 폴더 만들기
2. truffle 초기화 하기
- truffle init 명령어 실행시 오류 발생 (파워쉘 관리자 권한 실행)
Windows에서 정책적으로 Powershell 실행에 제한이 있어서 불가능하다. 관리자 권한이 있는 powershell로 ExecutionPolicy를 RemoteSigned로 변경해주는 것으로 해결이 가능하다.
VSCode 로 열기
파일/폴더명비고
contracts | solidity로 개발된 스마튼 컨트랙트 소스 파일 폴더 |
contracts/Migrations.sol | 배포를 도와주는 solidity 파일(삭제 하지 마세요!) 확인필요! |
migrations | 배포를위한 스크립트 파일 폴더 |
migrations/1_initial_migration.js | Migrations.sol 을 배포하는 스크립트 |
test | 개발된 컨트랙트를 테스트 하기 위한 폴더 |
truffle.js | truffle 설정 파일 (default) |
truffle-config.js | truffle 설정 파일 (truffle.js 파일이 없는경우 적용됨) |
Contract 폴더에 MyContract.sol 파일 만들기
pragma solidity ^0.4.24;
contract MyContract {
struct Student {
string studentName;
string gender;
uint age;
}
mapping(uint256 => Student) studentInfo;
function setStudentInfo(uint _studentId, string _name, string _gender, uint _age) public {
Student storage student = studentInfo[_studentId];
student.studentName = _name;
student.gender = _gender;
student.age = _age;
}
function getStudentInfo(uint256 _studentId) public view returns (string, string, uint) {
return (studentInfo[_studentId].studentName, studentInfo[_studentId].gender, studentInfo[_studentId].age);
}
}
Migrations 폴더에 2_deploy_contract.js 파일 만들기
const MyContract = artifacts.require("./MyContract.sol");
module.exports = function (deployer) {
deployer.deploy(MyContract);
};
truffle develop 실행
파워쉘 하나를 더 띄워서 truffle develop --log 실행
migrate 을 통해 2개의 Contract를 배포
※ 에러,,,,,,,,, Truffle 버전 0.5.16, 사용 현재 Contract 는 ^0.4.24 버전을 사용
현재 Truffle 버전이 0.5.16 이고 위 Contract 는 ^0.4.24를 사용해서 문제임
해결책 : Truffle 을 예전 버전으로 설치 하거나, Contract 버전을 올려야함
삭제 : npm uninstall -g truffle
이전 버전 설치 : npm install -g truffle@4.1.15
다시 migrate 배포시 문제 발생 (아마도 node.js 버전을 최신 14 이상으로 썼더니 발생한듯...!!)
해결책 : 노드 14.16.0 버전을 삭제하고 10 버전으로 재설치 후 truffle develop -> migrate 배포 성공
Truffle 이더리움 노드에 두개의 컨트랙트 소스 배포 완료
트랜잭션 해시 값 : 0xc3a968c31c45842325be93276cfb3fdee30f9b6d4aa1db11b5e1084cbe43734c
배포된 주소 : 0x3458393ff378e3cfe9da068643728a34522875f2
최종 로그 확인
Contract 수정후 재 배포시, 새로운 Contract 주소로 변경된다. (블록체인에서는 수정 불가)
migrate --compile-all --reset // 모든 컨트랙트를 재컴파일 하고, 마이그레이션 폴더안에 있는 스크립트를 강제적으로 재실행
VsCode 에서 build 폴더 생성 확인
# 트러플 콘솔 사용 하기
1. web3 API 사용
web3.eth.accounts (계정 10개 확인)
2. 계정에 있는 잔액 확인 하기
web3.fromWei(web3.eth.getBalance(web3.ethc.accounts[0]), "ether").toNumber()
3. truffle 에 배포한 Contract를 불러오고 사용하기
MyContract.deployed().then(function(instance) { app = instance; })
// undefined 가 나오면 정상
app
app.setStudentInfo(1111, "ssss", "male", 7, {from: web3.eth.accounts[1]})
로그 확인
두번째 계정의 잔액이 100 이더가 아니고 수수료로 소모된걸 확인
app.getStudentInfo(1111) 를 통해 set으로 입력한 값 확인
종료 (truffle develop 는 .exit / 모니터링 ctrl+c 2번)
'신기술분석 > 블록체인' 카테고리의 다른 글
블록체인 Dapp 만들기 #9 (0) | 2021.07.15 |
---|---|
블록체인 Dapp 만들기 #8 (0) | 2021.07.15 |
블록체인 Dapp 만들기 #6 (0) | 2021.07.15 |
블록체인 Dapp 만들기 #5 (0) | 2021.07.15 |
블록체인 Dapp 만들기 #4 (0) | 2021.07.14 |
댓글