ABI(Application Binary interface) 구현 방법공부방/블록체인2023. 4. 21. 18:16
Table of Contents
이번에는 웹에서 스마트 컨트랙트의 함수를 실행 시켜 볼거에요.
실행에 대한 결과를 말하면
test.sol 의 renderTest함수를 실행해서 String 값을 가져오고
http://127.0.0.1:8080/test 접속시
해당 함수 실행 값을 가져올거에요.
시작해 볼게요.
아래의 코드들을 프로젝트에 옮겨 주세요.
1. test.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;
contract Test {
function renderTest () public pure returns (string memory greeting) {
greeting = "Hello World!";
}
}
2. index.js
const express = require('express');
const app = express();
const port = 8080;
const Contract = require('web3-eth-contract');
async function test() {
try {
const abi = [
{
"inputs": [],
"name": "renderTest",
"outputs": [
{
"internalType": "string",
"name": "greeting",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
];
const address = '배포된 스마트 컨트랙트 주소 복사';
Contract.setProvider('http://127.0.0.1:7545');
const contract = new Contract(abi, address);
const result = await contract.methods.renderTest().call();
console.log(result);
return result;
} catch (e) {
console.log(e);
return e;
}
}
app.get('/test', (req, res) => {
test().then( (result) => {
res.send(result);
})
})
app.listen(port, () => {
console.log('Listening...');
});
3. 위의 코드들을 입력후 Remix 에 접속해서 Deploy를 해줘요
그리고 아래 그림의 빨간색 네모 박스의 컨트랙트 주소 값을 복사해주세요.
해당 값을 2번의 address 변수 에 넣어서
index.js 파일을 실행 시켜주면 돼요.
터미널에서
node index.js
를 입력하여 실행해 주세요.
4. 정상 적으로 실행 되었다면 접속시 (http://127.0.0.1:8080/test) 아래와 같은 화면이 나올거에요
반응형
'공부방 > 블록체인' 카테고리의 다른 글
ERC20 코드 분석 1 (0) | 2023.04.27 |
---|---|
솔리디티 문법 (0) | 2023.04.24 |
Remix 가나슈 연결 (0) | 2023.04.21 |
Web 3 js 를 이용한 지갑 잔액 확인 (0) | 2023.04.21 |
@soycrab :: 꿀맛코딩
행복한 코딩을 위하여!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!