Web3.js 설치
npm init
npm install web3
InfuraApi로 Web3 jsonRPC사용 설정
// getBalance.js
const Web3 = require('web3');
const rpcURL = "https://ropsten.infura.io/v3/{PROJECT_ID}"; // 원격 이더리움 노드에 접속할 수 있는 주소
const web3 = new Web3(rpcURL); // web3 객체 생성
잔액을 읽는 getBalance.js 생성해보기 ( 실행 node getBalance.js )
const account = "0xDd41dB13a6edc9eEce69174B0797eBcd707b574B";
web3.eth.getBalance(account)
.then((bal) => {
console.log("지갑 ${account}의 잔액은... ${bal} wei 입니다.");
return web3.utils.fromWei(bal, "ether"); // web3.utils.fromWei 를 사용해 ether 단위로 변경
})
.then((eth) => {
console.log(`이더 단위로는 ${eth} ETH 입니다.`);
});
트랜잭션 정보를 읽는 getTransaction.js 생성
const txId = "{자신이 만든 트랜잭션의 해시값}";
web3.eth.getTransaction(txId)
.then((obj) => {
console.log(obj);
});
세인자를 입력받아 해당주소와 시작블록,끝블록에 해당하는 주소의 txid만 배열로 반환하기
*readline을 사용하여 여러 인자를 쉼표로 구분하여 받아 input배열에 담는다.
const readline = require('readline');
const Web3 = require('web3');
const rpcURL = "https://ropsten.infura.io/v3/6f1d81dc47a74fb490115e38f779483f";
const web3 = new Web3(rpcURL);
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input =[]
let result =[];
rl.on('line', function async (line) {
input = line.split(',').map((el)=>el);
let myaccount = input[0];
let startBlockNumber = parseInt(input[1]);
let endBlockNumber = parseInt(input[2])
if (endBlockNumber == null) {
endBlockNumber = eth.blockNumber;
console.log("Using endBlockNumber: " + endBlockNumber);
}
if (startBlockNumber == null) {
startBlockNumber = endBlockNumber - 1000;
console.log("Using startBlockNumber: " + startBlockNumber);
}
console.log("Searching for transactions to/from account "" + myaccount + "" within blocks " + startBlockNumber + " and " + endBlockNumber);
for (var i = startBlockNumber; i <= endBlockNumber; i++) {
if (i % 1000 == 0) {
console.log("Searching block " + i);
}
var block = web3.eth.getBlock(i);
block.then(eachblock=>{
if (eachblock != null && eachblock.transactions != null) {
eachblock.transactions.forEach( function(e) {
web3.eth.getTransaction(e).then((obj)=>{
if(obj.from == myaccount){
result.push(e);
}
})
})
}
})
}
}).on('close',function(){
console.log('결과는',result)
process.exit();
})
'개발 학습 > 블록체인' 카테고리의 다른 글
Docker로 노드 운영 (1) : Docker와 Geth 설치 및 세팅 (0) | 2022.02.19 |
---|---|
S4: Web3에 ABI로 contract 와 personal 쓰기 (0) | 2021.12.08 |
S4: Infura로 이더리움 노드 접근 데이터 읽기 (0) | 2021.12.07 |
S4: 다른컨트랙트 와 상호작용하기 (0) | 2021.12.02 |
S4: public/private/internal/external (0) | 2021.12.02 |
댓글