remix 에서 테스트 개발시 Javascript VM 환경에서 테스트 이더주소들간에 이더전송을 하려면 어떻게 해야할까요?
블록체인 개발 remix IDE 환경에서
솔리디티로 스마트 컨트랙트를 개발 진행중입니다.
Javascript VM 환경에서 테스트로 생성되는 주소들간에
이더리움을 전송하고 싶습니다
어떤식으로 개발해야할지 샘플 예제를 알려주실 솔리디티 고수분 찾습니다
감사합니다.
Remix IDE에서 Javascript VM 환경을 사용하시면, 브라우저 내부의 메모리에서 블록체인을 구동합니다.
그래서 브라우저를 다시 시작할 때마다 새로운 블록체인을 구동하기 때문에 상태가 저장이 되지 않죠.
일단 Javascript VM 환경에서 배포하신 컨트랙트 안에서 이더를 전송하는 함수를 만들어서 트랜젝션을 실행하는 방법이 가능할 것 같습니다.
그러나, 컨트랙트의 함수로 구현하지 않고 단순히 이더만 보내고 싶으신 경우에는, Web3 provider에서 제공되는 web3.eth.sendTransaction 함수를 사용하실 수 있습니다.
위 코드를 실행하고 싶으시면, web3 provider 가 붙어있는 Geth 와 같은 것을 사용하셔야 합니다. Remix IDE console은 제가 해보니까 web3 provider가 제공되지 않는 것 같습니다. (노드에 자바스크립트로 트랜젝션을 요청할 수 있는 방법이 없습니다.)
Remix IDE에서 사용 가능한 명령어는 remix.help() 에서 확인할 수 있는 목록 정도인 것 같습니다.
여러모로 Geth를 구동하시는 것이 가장 덜 스트레스 받고 편리한 방법인 것 같아요. 우선 Geth를 설치하신 다음에,
geth --rpc --rpccorsdomain "https://remix.ethereum.org" console위 명령어로 geth를 구동하시면, Remix IDE에서 Geth에 연결할 수 있습니다. Remix IDE에서 환경을 web3 provider로 세팅하시고,
터미널에 오픈되어 있는 geth console에서 아래와 같은 명령어를 이용하시면 손쉽게 account 간에 이더를 주고받는 트랜젝션을 생성하실 수 있습니다.
eth.sendTransaction({from:sender, to:receiver, value: amount})주어진 account 목록은 web3.eth.accounts 로 확인해보실 수 있습니다.