정말정말 오랜만에 TIL을 적으러 왔당!!
사실 그동안 TIL태기 와서 벨로그 안들어왔었는데 정말정말 오랜만에 드디어 정리하러 왔어용
내가 작업하고자 하는 폴더로 이동해서 터미널을 켠다.
나는 powershell이 편해서 powershell로 켰다.
명령어 정리해 둔 것 !!
var {Web3} = require('web3')
var web3 = new Web3('https://goerli.infura.io/v3/infura 개인키 복사해서 가져오기~')
web3.provider
var privateKey = '메타마스크 개인키'
var account = web3.eth.accounts.privateKeyToAccount(privateKey)
web3.eth.accounts.wallet.add(account)
var c_address = '컨트랙트 주소'
var abi = 컨트랙트 abi
var contract = new web3.eth.Contract(abi, c_address)
var tx = {from : account.address, to : c_address, gas : 300000, gasPrice : 300000, data : contract.methods.add(3, 5).encodeABI() }
var signPromise = web3.eth.accounts.signTransaction(tx, account.privateKey)
signPromise.then((signedTx) => {var sentTx = web3.eth.sendSignedTransaction(signedTx.raw || signedTx.rawTransaction); sentTx.on("receipt", receipt => {console.log(receipt)})})
web3.eth.getGasPrice().then(console.log)
contract.methods.add(3, 5).estimateGas().then(console.log)
var {ethers} = require('ethers')
var provider_main = new ethers.InfuraProvider()
var provider_goerli = new ethers.InfuraProvider("goerli")
그러면 provider_main과 provider_goerli가 각각 아래와 같이 나온다.
await provider_main.getBlockNumber()
await provider_goerli.getBlockNumber()
각각의 블록넘버를 확인할 수 있다.
await provider_main.getBalance('지갑 주소')
await provider_goerli.getBalance('지갑 주소')
main에는 잔액이 없고, goerli에만 잔액이 있는 것을 볼 수 있다.
await provider_goerli.getCode('스마트컨트랙트 주소')
provider_goerli.getCode('스마트컨트랙트 주소').then(console.log)
await provider_goerli.getStorage('0x86bC1Aa345Cd31b3274Db1cd43184Af4e9868Ab1', 0)
await provider_goerli.getStorage('0x86bC1Aa345Cd31b3274Db1cd43184Af4e9868Ab1', 1)
await provider_goerli.getStorage('0x86bC1Aa345Cd31b3274Db1cd43184Af4e9868Ab1', 2)
(혹시나 싶어서 주소들은 다 가렸다..!)
await provider_goerli.getBlock(100000)
var signer = new ethers.Wallet(privateKey, provider_goerli)
var acccount2 = '받을 지갑주소'
var tx = {to : account2, value : 100000000000000}
signer.sendTransaction(tx).then(console.log)
//web3에서는 이렇게 함
web3.eth.sendTransaction(tx).then(console.log)
var abi = 배포할 컨트랙트의 abi
var c_addr = '배포할 컨트랙트의 주소'
var contract = new ethers.Contract(c_addr, abi, signer)
contract.runner.address
contract.target
컨트랙트의 정보를 잘 받아오는 것을 볼 수 있다.
contract.interface.fragments
await contract.a()
await contract.b()
await contract.c()
await provider_goerli.getStorage('배포한 컨트랙트 주소', 0)
contract.target