일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 스마트컨트렉트 함수이름 중복 호출
- multicall
- vue기초
- 프록시배포구조
- 러스트기초
- 러스트 기초
- 러스트 기초 학습
- ethers v6
- ambiguous function description
- SBT표준
- 티스토리챌린지
- chainlink 설명
- 스마트컨트렉트프록시
- ethers typescript
- Vue.js
- ethers
- 체인의정석
- 스마트 컨트렉트 함수이름 중복
- rust 기초
- git rebase
- 오블완
- ethers websocket
- Vue
- ethers type
- 스마트컨트렉트 예약어 함수이름 중복
- 스마트컨트렉트테스트
- 컨트렉트 배포 자동화
- nest.js설명
- 컨트렉트 동일한 함수이름 호출
- 머신러닝기초
Archives
- Today
- Total
체인의정석
Express,node.js,solidity)블록체인에 있는 데이터 가져와서 표시하기 본문
728x90
반응형
1. 스마트 컨트렉트
파일의 해시값을 저장하고 불러오는 간단한 기능이다.
이때, 한번 저장된 인덱스로는 다시 저장되지 않게 조건을 걸어두었다.
pragma solidity >=0.4.22 <0.8.0;
contract patent{
struct Patents {
string filehash;
bool isFirst;
}
mapping (uint=>Patents) public filesaved;
event Savefile(address sender, string filehash);
function _savefile(string memory _filehash, uint board_idx) internal {
require(filesaved[board_idx].isFirst == false);
filesaved[board_idx].filehash = _filehash;
filesaved[board_idx].isFirst = true;
emit Savefile(msg.sender, _filehash);
}
function savefile(string memory _filehash, uint board_idx) public returns (bool) {
_savefile(_filehash, board_idx);
return true;
}
}
이번에는 여기서 mapping으로 되어있는 부분에 게시판 index를 넣고 filesaved구조체에 있는 데이터를 가져와서 사용하도록 할 것이다.
2. 블록체인에서 정보를 가져오는 부분
router.post('/get_blockchaindata', async function(req,res){
let rb = req.body;
let bidx = rb.bidx;
let blockchain_result = await fileSaved(bidx); //board_idx로 추후 수정
console.log("체크3",blockchain_result)
if(blockchain_result){
console.log("Blockchain search Success")
}else{
res.send(JSONResponse.successFalse({message : "블록체인에 정보가 저장되지 않았습니다."}))
}
console.log(blockchain_result);
res.send(JSONResponse.successTrue({"blockchain_contract_hash":blockchain_result.filehash}));
})
await에서 web3로 블록체인 데이터를 불러오는 부분
////////call data
const fileSaved = async(board_index) => {
console.log("fileSaved_앞부분",board_index)
var web3 = new Web3(new Web3.providers.HttpProvider(endpoint));
let contract = new web3.eth.Contract(patentABI, contractAddressP);
let file_saved = await contract.methods.filesaved(board_index).call();
console.log( "filesaved 결과1",file_saved);
return file_saved;
}
3. 가져온 정보를 바탕으로 클라이언트단에서 블록체인에서 가져온 정보를 표시해 주도록 한다.
function get_blockchaindata(index){
$.ajax({
type : "POST",
url : 'blockchain/get_blockchaindata',
data : {"bidx": index},
success: function(r){
if(r.success){
console.log("결과",r.data[0]);
$("#file_hash_blockchain").val(r.data[0].blockchain_contract_hash);
}else{
alert(r.message);
}
}
})
}
728x90
반응형
'개발' 카테고리의 다른 글
블록체인 공증 모듈 - 게시판 기능 만들기, 양쪽의 동의를 얻은 후 블록체인에 데이터 저장시키기 (0) | 2021.01.07 |
---|---|
게시판 조회 화면 상황에 따라 다르게 띄우기 (오류 수정) (0) | 2021.01.05 |
게시판 조회 기능 , 첨부파일 읽어오는 기능 만들기 (0) | 2020.12.31 |
Jquery & JsGrid) 화면 이쁘게 수정하기 & 게시판 기능 달기 (0) | 2020.12.30 |
Jquery) 박스에서 옵션 설정했을 때 화면 다르게 나오게 하기 (0) | 2020.12.30 |
Comments