Error: web3.toWei is not a function 이더리움 web3로 이체하기
본문 바로가기
ERROR

Error: web3.toWei is not a function 이더리움 web3로 이체하기

by 쏠수있어ㅤ 2022. 3. 31.
반응형

 

web3를 활용하여 이더리움 계좌이체를 진행하다가 나온 에러 

2017년도의 정보로

web3.sendTransaction({to:receiver, from:sender, value:web3.toWei("0.5", "ether")})

이렇게 썼다가 아래와 같은 에러가 나왔다. 

 

Error: web3.toWei is not a function​

 

 

 

2018년 이후의 답변에서 찾아보니 web3 v1.0부터 toWei와 같은 많은 utility functions 들이 web3.utils. 안으로 옮겨졌다고 한다 !! 

 

-> we3.utils.toWei("0.5", "ether") 

이렇게 작성하기 

 

그러면 이제 두번째 에러가 나온다. 

Error : web3.sendtransaction is not a function

 

이번에는  web3.eth.sendTransaction(~) 이렇게 eth를 붙여주면 된다. 

 

 

** 참고로 infura에 연결한 경우에는 sendTransaction을 사용할 수 없다. ** 

요 내용을 자세히 풀어보자면 

eth_sendTransaction()은 나의 노드가 unlocked 어카운트를 사용하여 트랜잭션에 서명하길 원할 때 사용하는데 Infura나 다른 제 3자 노드 provider는 보통 이 방법을 지원하지 않는다. 이런 경우 app에서 트랜잭션 서명을 한 후 서명되어진 트랜잭션을 broadcast를 나의 노드에 broadcast해야 한다. 이렇게 진행하려면 

1. web3.eth.signTransaction()으로 서명을 하고 

2. web3.eth.sendSignedTransaction()으로 서명된 트랜잭션을 내 노드에 보낸다. 

 

다른 방법은 메타마스크에게 서명을 위임하는 것이다 web3를 메타마스크에 연결하고 (window.ethereum) 그리고 sendTransaction()하면 서명이 뜬다! 

 

반응형

댓글