본문 바로가기
IT/이더리움 Ethereum

이더리움 geth 거래 송금 수수료 계산하기

by SidePower 2022. 9. 20.

 

블록체인에서 채굴(마이닝)은

고성능 컴퓨터에 100만원 이상의 그래픽 카드로 

개인이 집에서 24시간 채굴해도 우리돈으로 만원정도

이렇게 한달에 20~30만원정도의 보상받는다고 하네요.

 

컴퓨터에 열도 많이 나고 펜소리도 시끄럽고

전기세도 많이 나오면서 가정집에서 하기가 만만치 않습니다.

 

암튼 참여자들이 계속 채굴해야 블록체인이 유지되기 때문에

이런 채굴에 대한 보상으로 채굴자에게 보너스로 수수료를 지불합니다.

 

수수료는 채굴에 요구되는 자원들과 문제 풀기 복잡성 

그리고 현재 측정되어 있는 수수료 가격을 반영해서 수수료 가격이 결정됩니다.

 

수수료는 송금과 계약이 실행될 때 발생하며 Gas(가스)라고 합니다.

Gas Price(수수료 가격)은 wei 단위이며 wei/Gas로 표현됩니다.

 

 Gas가 어떻게 표현되고 계산되는지 알아볼게요.

> eth.getBalance(eth.accounts[1])
5000000000000000000
> web3.fromWei(eth.getBalance(eth.accounts[1]))
5

> eth.getBalance(eth.accounts[2])
0
▶ accounts[1]에는 5ether가 있고 accounts[2]에는 0입니다.


 accounts[1]에서 accounts[2] 계정으로  3ether 송금해볼게요.
> eth.sendTransaction({from:eth.accounts[1], to:eth.accounts[2], value:web3.toWei(3)})
"0xa13d5ae06aa8f8c2294ffda7d78c2bfa56fb7fe43b9c01fe005e87386517eec8"


 실제 송금 처리를 위해 채굴합니다.
> miner.start()
null
> miner.stop()
null

 트랜젝션 상태 확인
> eth.getTransaction("0xa13d5ae06aa8f8c2294ffda7d78c2bfa56fb7fe43b9c01fe005e87386517eec8")
{
  blockHash: "0x823132b0be189712475ffd90f360476131b2d3f2752e404c1c2291aaaf139cab",
  blockNumber: 18,
  from: "0xc6725761e6d790ef42f0bce2cec9b95577ef9cf8",
  gas: 21000,
  gasPrice: 1000000000,
  hash: "0xa13d5ae06aa8f8c2294ffda7d78c2bfa56fb7fe43b9c01fe005e87386517eec8",
  input: "0x",
  nonce: 0,
  r: "0xbc53338c320bcf3571c7cd25e3162ec9caa844926725ddab53d9387ca8c0bb02",
  s: "0x6924b20eb544815db9bf5f9c82f032922636003ada54864e8af77e3365a2a5a1",
  to: "0xcee6a5b6f45f7a0de0ec246783213a80e9428965",
  transactionIndex: 0,
  type: "0x0",
  v: "0xd4",
  value: 3000000000000000000
}
▶ gas: 21000와 gasPrice: 1000000000 항목을 볼수 있어요.
21000개의 Gas와 Gas 하나당 가격이 1000000000으로 측정되어 있습니다.
21000 × 1000000000 곱하면 21000000000000 wei/Gas입니다.

 

 계정별 잔고 확인

> eth.getBalance(eth.accounts[2])
3000000000000000000
▶ accounts[2]는 3ether를 잘 받았습니다.

> eth.getBalance(eth.accounts[1])
1999979000000000000
▶ accounts[1]은 기존에 5ether가 있었고
3ether를 accounts[2]에게 보냈으니 2ther가 남아야 되죠.
그치만 송금은 수수료가 발생합니다.
위에 트랜젝션 상태에서 확인된 수수료 21000000000000 를 차감되어
2000000000000000000 - 21000000000000 = 1999979000000000000
로 계산되어 accounts[1]의 잔고는 1999979000000000000이 됩니다.


 그렇다면 수수료는 누가한테 갔을까요?
예..채굴 한다고 고생한 채굴자에게 돌아갑니다.
>
> eth.getBalance(eth.accounts[0])
95000021000000000000
▶ 채굴로 받은 95ether에 수수료 21000000000000가 포함되어 있죠.

숫자가 길어서 복잡하게 보이지만 

생각보다 간단하죠.

 

감사합니다.

반응형

댓글