SmartContract와 node.js(express) 연동 기본 세팅 예시
- JavaScript에서 SmartContract에서 보낸 JSON 객체의 value를 조회할 때 JSON.key가 아닌 JSON[key] 형식으로 value를 불러와야 함 ({"0" : password, "1" : name, "2" : phone} 와 같은 형태로 전송하기 때문)
const express = require("express");
const app = express();
const Web3 = require("web3");
const contractInfo = require("./build/contracts/user_info.json");
// HttpProvider를 통해 특정 네트워크와 연결
const web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:7545"));
// 스마트 컨트랙트 객체 생성(ABI 및 주소 필요)
const smartContract = new web3.eth.Contract(
contractInfo.abi,
contractInfo.networks[5777].address
);
app.set("views", __dirname + "/views"); // views 경로 설정
app.set("view engine", "ejs"); // view 파일 양식 설정
app.use(express.urlencoded({ extended: false })); // post 방식 허용
let address;
// 스마트 컨트랙트 주소 불러오기
web3.eth.getAccounts((err, ass) => {
if (err) {
console.log(err);
} else {
console.log(ass);
address = ass;
}
});
app.get("/", (req, res) => {
res.render("index.ejs");
});
app.get("/signup", (req, res) => {
res.render("signup.ejs");
});
app.get("/signup2", (req, res) => {
const _id = req.query.input_id;
const _pass = req.query.input_pass;
const _name = req.query.input_name;
const _phone = req.query.input_phone;
console.log(_id, _pass, _name, _phone);
smartContract.methods // 불러온 스마트 컨트랙트에 정의한 메소드를 사용할 때
.add_user(_id, _pass, _name, _phone) // 추가 기능이니 트랜잭션 및 가스 발생
.send({ // 트랜잭션 가스에 대한 설정
gas: 200000, // MAX로 얼마나 가스비를 낼 것 인지
from: address[0],
})
.then((receipt) => {
console.log(receipt);
res.redirect("/");
});
});
app.post("/login", (req, res) => {
const _id = req.body.input_id;
const _pass = req.body.input_pass;
console.log(_id, _pass);
// 트랜잭션 미발생 (가스 미발생)
smartContract.methods
.view_info(_id)
.call()
.then((result) => {
console.log(result);
res.send(result);
});
});
app.listen(3000, () => {
console.log("Server Start");
});'블록체인 기술사업 교육 > Node.js' 카테고리의 다른 글
| 블록체인 기술사업 교육 35일차 (0) | 2023.05.23 |
|---|---|
| 블록체인 기술사업 교육 27&28일차 (0) | 2023.05.11 |
| 블록체인 기술사업 교육 25&26일차 (0) | 2023.05.09 |
| 블록체인 기술사업 교육 16일차 (0) | 2023.04.24 |
| 블록체인 기술사업 교육 15일차 (0) | 2023.04.21 |
댓글