일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 리눅스
- 우분투
- 쉘스크립트
- 리액트
- 설치
- 일반유저
- 라우터
- immer
- 이더리움
- 전역설치
- 노드
- 리액트를 다루는 기술
- 시퀄라이즈
- centos
- 자바스크립트
- 깃허브
- wget
- 블록체인
- MariaDB
- node.js 교과서 따라하기
- 환경변수
- 솔리디티
- Docker
- 벨로포터
- 머클트리
- npm
- 변수
- wsl
- Sequelize
- 머클루트
- Today
- Total
코드코코
[솔리디티] web3와 스마트컨트랙트 연결하여 가나슈로 테스트 하기 본문
기본 틀 만들기
truffle init
contracts/Voting_test.sol 파일 작성 및 내용 작성
명령어로 컴파일하기
컴파일러 설치
npm i -g solc
만약 에러가 나는 경우,
npm i -g web3 : 버전문제로 실행이 안됨
npm r web3 지우고
npm i web3 다시 하면 버전 문제 해결되어 실행됨
컴파일하기
solcjs --abi --bin ./contracts/Voting_test.sol
컴파일되어도 아무것도 뜨지 않음
대신 파일리스트에 abi 와 bin 파일이 생김
abi : 방금 만들었던 솔리디티 파일에 대란 내용이 정리되어 있음
bin : 바이트 코드의 모습을 확인 할 수 있음
참고 ) truffle-config.js :배포하거나 할때, 설정 파일
web3와 연결하기
루트 디렉토리에 deploy.js 파일 생성
node deploy.js 로 실행하여 확인
에러의 이유는 모듈설치를 안했기 때문이므로 npm i web3 로 설치
deploy.js 파일에 코드 추가
node deploy.js 로 실행하여 확인
추가 : 플러그인을 통해 컴파일하기
리믹스 플러그인
ctrl + shft + p 단축키 사용
solidity : compile contracts 검색
주의 : 해당 sol파일 활성화 한뒤 해야함, 활성화 된 파일에서 하지 않아서 안뜬 것.
처음하면 아래 경고창 뜸
한번 더 시도하면 잘 됨.
컴파일 되면 bin 폴더가 생기고 그 아래 마찬가지로 abi 와 bin 파일들이 생김.
web3와 가나슈와 연결하기
가나슈
- 이더리움 테스트 환경 제공
- 블록채굴시 시간이 걸리는 데, 가나슈에서는 테스트시 바로바로 블록을 생성시켜줌.
트러플
- 실제 프로젝트 개발시 사용
- 가나슈는 테스트 하기 위해, 로컬환경 에만 설치 되는 이더리움 생태계
가나슈 설치하고 실행
logs에 가면 로그 내용이 확인됨
rpc 서버의 주소가 deploy.js의 주소와 일치해야함
계정 연결 확인하기
deploy.js 코드 추가
노드 실행
계정 정보가 확인 됨
가나슈에서 확인되는 계정과 일치되는 것을 확인 할 수 있음.
계정 연결 코드를 수정하여 다르게 연결해봄
const Web3 = require('web3');
const fs = require('fs');
const ABI = JSON.parse(fs.readFileSync('./contracts_Voting_test_sol_Votingtest.abi').toString());
const BYTECODE = fs.readFileSync('./contracts_Voting_test_sol_Votingtest.bin').toString()
// console.log(ABI);
// console.log(BYTECODE);
// web3와 연결
const web3 = new Web3(Web3.givenProvider || 'http://localhost:8545');
// 계정
const accounts = [];
async function init() {
await web3.eth.getAccounts().then(data => {
data.forEach(x => {
accounts.push(x);
})
})
}
init().then(() => {
console.log(accounts);
})
마찬가지로 가나슈에서 조회되는 것과 일치
스마트 컨트랙트 연결하기
deploy.js 코드 추가
트랜잭션 날리기
날리기전
날린 후 터미널 로그
날린 후 밸런스와 트랜잭션 수가 변한것을 확인할 수 있음.
블록이 생성된 것을 확인 할 수 있음
해당 블럭을 누르면 자세한 정보도 확인 가능
트랜잭션도 확인 가능
마찬가지로 상세내역 확인 가능
로그에서도 트랜잭션이 생성된 것이 확인 됨.
'블록체인 > 솔리디티' 카테고리의 다른 글
[솔리디티] truffle 로 react client 연결하기 (0) | 2022.02.20 |
---|---|
[솔리디티][REMIX-IDE] 간단한 코드로 REMIX-IDE 사용해보기 (0) | 2022.02.17 |
[솔리디티][디앱] lottery - Lottery Distribute 테스트 (0) | 2022.02.16 |
[솔리디티][디앱] lottery - Lottery Distribute 함수 구현 (0) | 2022.02.16 |
[솔리디티][디앱] lottery - Lottery isMatch 함수 구현 및 테스트 (0) | 2022.02.15 |