전 포스팅에서 스마트 컨트랙트 배포까지 공부했다.
이제 배포한 스마트 컨트랙트를 가져와서 자바스크립트 연동을 해야한다.
이때 쓰이는 것이 web3.js이다.
web3.js
web3.js는 Ethereum Compatible JavaScript API로 이더리움과 자바스크립트 간 호환이 가능하도록 여러 기능과 함수를 묶어 놓은 라이브러리이다. web3.js는 자바스크립트 기반으로 dApp이나 서비스를 구현할 때 매우 유용하며 이더리움의 표준 API로 보여지고 있다.
var contractAddress = '0xd9145CCE52D386f254917e481eB44e9943F39138';
var abiDefinition = '';
전 포스팅에서 배포한 컨트랙트 주소를 가져온다.
// 설정
var Web3 = require('web3');
var solc = require('solc');//contract compile
var fs = require('fs'); //file system
var path = require('path');
//web3.js 객체를 설정합니다.
var web3 = new Web3(new Web3.providers.HttpProvider('http://3.36.172.204:8545'));
var code = fs.readFileSync('./BVC.sol','utf-8');
let compiledCode = solc.compile(code);
// sol파일의 abi 값입니다.
var abiDefinition = JSON.parse(compiledCode.contracts[':BVC'].interface);
// sol파일의 컨트랙트 주소입니다.
var contractAddress = '0xd9145CCE52D386f254917e481eB44e9943F39138';
// 컨트랙트를 연결합니다.
var contract = web3.eth.contract(abiDefinition);
var BVC = contract.at(contractAddress);//.at을 통해 실제 내용을 채워서 컨트랙트를 객체화
// eth를 지불할 eth지갑을 선택합니다.
web3.eth.defaultAccount = web3.eth.accounts[0];
module.exports = BVC;
Solc모듈과 fs모듈을 이용하여 해당 스마트컨트랙트를 컴파일한다. solc은 solidity를 JSON형태로 컴파일해주는 모듈이다.
그 후 web3객체를 설정한다. web3를 지원하는 브라우저의 경우 자동으로 가져온다.나는 메타마스크를 사용하기 때문에 그 계정의 정보를 가져온다.
그리고 내가 작성한 솔리디티 파일인 BVC.sol을 가져와서 abi값을 가져온다. abi값으로 컨트랙트 객체를 생성한다.
그리고 eth지갑을 0번째 계정을 가져오게 설정하면 된다.
.
.
.
블록체인 초보이니 지적은 언제나 환영입니다. 🌝
- 참고
이더리움 블록체인_Web3.js로 스마트컨트랙트 실행하기
이번 포스팅은 Web3.js를 통해서 스마트컨트랙트를 실행하는 방법을 포스팅하겠습니다. 스마트컨트랙트를 실행하기에 앞서서 우선 Solidity란 무엇이고 어떻게 작성해야 되는지에 대해서 알아보겠
medium.com
- 참고
Ethereum_dApp_4_개발하기(2)
이전 포스팅에서 TestRPC 블록체인에 컨트랙트를 발행하는 것에 이어서 진행하겠습니다. 이전 포스팅 내용을 다시 보고 싶다면, '다시보기'를 클릭해주세요. 다시 Spring Boot 로 돌아와서 /src/main/res
cyberx.tistory.com
'개발 > BlockChain' 카테고리의 다른 글
[블록체인] EVM과 ABI (0) | 2021.10.09 |
---|---|
스마트 컨트랙트 배포하기 (+주소 알아내기) (0) | 2021.10.07 |
스마트컨트랙트와 dApp (0) | 2021.10.05 |
[블록체인] cannot read property 'sendTransaction' of undefined (0) | 2021.06.19 |
[블록체인] web3 버전 확인하기 (0) | 2021.06.19 |