본문 바로가기

연구활동/블록체인

[이더리움에 데이터베이스 연결하기] 2-이더리움 Transaction 에 메세지 보내기

이번 시간은 이더리움 트랜잭션 전송 및 Transaction에 메세지를 보내는 방법입니다.

 

포스트는 다음의 순서로 소개됩니다

 

1. 어카운트 만들기 및 채굴

2. 트랜잭션보내기

3. 트랜잭션 확인

 

 

 

1. 어카운트 만들기

 

어카운트 만들기와 채굴은 사실 지난 포스팅에서도 언급되었습니다. 

 

어카운트는 다음의 명령어를 이용하여 만들수 있습니다.

 

personal.newAccount("acoount_name")

 

한 노드에서도 어카운트는 여러개 만들 수 있으니 원하시는 만큼 계정을 만드시면 됩니다. 저희는 여기서 "eth1" 과 "eth2"의 두개의 어카운트를 생성하였습니다.

 

채굴은 miner.start() 명령어를 통해 채굴할 수 있습니다. 채굴에 성공하게 되면 밑의 그림처럼 성공적으로 마이닝에 서공했다는 로그가 뜨게 됩니다.

 

 

정말 채굴이 되었는 지 한번 확인을 해야겟죠.

 

eth.getBalance(eth.accounts[0]) 와 eth.getBalance(eth.accounts[1]) 명령어를 통해 eth1과 eth2의 마이닝을 확인합니다.

 

 

2. 트랜잭션보내기

 

트랜잭션을 보내기 전 먼저 계정을 unlock해야 합니다.

 

계정의 unlock은 personal.unlockAccount(eth.accounts[N],"passwd") 로 할 수있습니다.

 

다만 바로 언락이 되지 않고, 보안상의 이유로 해당계정에 HTTP 를 사용할 수 없다고 뜨기도 하는데, 이럴땐 --allow-insecure-unlock 를 네트워크 접속시 명령어에 추가하여 새로 접속하도록 합니다.

 

geth --networkid 1004 --allow-insecure-unlock --datadir test1 --nodiscover --port 30303 --rpc --rpcport "8545" --rpcaddr "0.0.0.0" --rpccorsdomain "*" --rpcapi "eth, net, web3, miner, debug, personal, rpc" console

 

 

이제 트랜잭션을 보낼차례다. 우리는 아래 명령어를 통해 트랜잭션을 생성하고 메세지를 담을 수 있습니다.

 

eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value:web3.toWei(1,"ether"),data:web3.toHex("test23")})

 

 

3. 트랜잭션 확인

 

이제는 트랜잭션을 확인해볼 차례입니다.

 

먼저 현태 마이닝을 하고 있지 않는다면, 트랜잭션이 pending 상태일 것이며, 이때의 트랜잭션은 eth.pendingTransactions 으로도 확인이 가능합니다.

 

 

트랜잭션은 아래의 명령어를 통해 확인할 수 있습니다.

 

eth.getTransaction("hash")

 

트랜잭션의 input 에 들어간 hex 데이터인 7465 7374를 변환해보면 원래 트랜잭션에 포함하였던 "test" data 인것을 확인할 수 있습니다.

 

 

다음은 Mysql 과 geth를 연동하여 트랜잭션과 해당 데이터 정보를 저장하는 방법에 대해 포스팅 하겠습니다.