Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Python
- NFT
- 트랜잭션
- tcp
- JavaScript
- ethers
- solidity
- MySQL
- 스마트 컨트랙트
- erc721
- web3.js
- Programming
- ERC165
- geth
- Docker
- 솔리디티
- 네트워크
- git
- truffle
- github
- 제어의역전
- 블록체인
- blockchain
- erc
- Ethereum
- server
- web3
- ERC20
- web
- 이더리움
Archives
- Today
- Total
멍개의 연구소
[ethereum] privatekey를 이용하여 address 복구, transaction 발생 본문
privateKeyToAccount()를 이용하면 privatekey를 이용하여 account를 가져올 수 있습니다.
let Web3 = require('web3')
let web3 = new Web3(new Web3.providers.HttpProvider('https://ropsten.infura.io'));
let PK = "0x1076f9a014620c526eaf424cad97755a8d5c1a492f2637731f56975d30805db6"
let account = web3.eth.accounts.privateKeyToAccount(PK)
console.log(account)
· 실행결과
{ address: '0x31bF95273C33C9042da801580F6d54a6f11b3CfE',
privateKey:
'0x1076f9a014620c526eaf424cad97755a8d5c1a492f2637731f56975d30805db6',
signTransaction: [Function: signTransaction],
sign: [Function: sign],
encrypt: [Function: encrypt] }
가져온 account에서 encrypt를 이용하면 keystore를 만들 수 있고, signTransactio을 이용하면 트랜잭션에 서명하여 rawTransaction을 만들 수 있습니다.
· sample
let Web3 = require('web3')
let web3 = new Web3(new Web3.providers.HttpProvider('https://ropsten.infura.io'));
/*
web3.utils.toWei(1, 'ether') : 1ETH => 1 * 10 ^ 18
web3.utils.fromWei(1, 'ether'): 1 * 10 ^ 18 => 1ETH
*/
(async () => {
let EOA1 = "0x31bF95273C33C9042da801580F6d54a6f11b3CfE"
let PK = "0x1076f9a014620c526eaf424cad97755a8d5c1a492f2637731f56975d30805db6"
let EOA2 = "0x22C353816541d2437dd9Aa673Be0de07d869df6B"
let eoa1_nonce = await web3.eth.getTransactionCount(EOA1, "pending")
let balance = await web3.eth.getBalance(EOA1)
console.log(eoa1_nonce)
console.log(balance)
console.log(web3.utils.toWei("0.1", 'ether'))
console.log(web3.utils.toWei("21", 'Gwei'))
let txParam = {
nonce: eoa1_nonce,
from: EOA1,
to: EOA2,
value: web3.utils.toHex(web3.utils.toWei("0.1", 'ether')), // 0.1 이더
gasPrice: web3.utils.toHex(web3.utils.toWei("21", 'Gwei')), // 가스 가격
gasLimit: web3.utils.toHex(300000), // 가스 최대 사용량
}
let account = web3.eth.accounts.privateKeyToAccount(PK)
let signedTx = await account.signTransaction(txParam)
let txInfo = await web3.eth.sendSignedTransaction(signedTx.rawTransaction, (err, txHash) => {
if (err) {
console.log('========== transaction 발생 중 에러 ===========')
return
}
console.log('========== transaction 발생 ===========')
console.log(txHash)
})
console.log('========== transaction 처리완료 ===========')
console.log(txInfo)
})()
'블록체인' 카테고리의 다른 글
[ethereum] Geth를 이용하여 Ethash 기반 private network 구축하기 (0) | 2022.08.27 |
---|---|
[ethereum] mnemonic 생성, privatekey 복구와 계층적 구조의 원리 (0) | 2022.08.27 |
[블록체인] 블록체인 시스템은 어떻게 구축할까 1편 - exchange, wallet, payment에서 transaction 취급방법 (0) | 2022.08.27 |
[블록체인] 거래소는 시세를 어떻게 형성할까? (0) | 2022.08.27 |
[ethereum] transaction에 데이터를 포함하여 영원히 데이터 남기기 (1) | 2022.08.27 |
Comments