You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
블록체인 네트워크에 transaction을 올리기 위해서는 수많은 노드의 검증 과정과 연산이 요구된다. 따라서 사용자가 네트워크에 transaction을 보내기 위해서는 일종의 수수료를 지불해야하는데 이를 GAS라고 한다.
GAS의 존재 목적
GAS는 transaction이 올바른지 검증하는 validator 노드들에게 보상으로 지급되며, 네트워크의 과부하를 방지한다. GAS는 통상적으로 transaction에 포함된 코드가 많은 연산을 요구할 수록 증가하기 때문에, 누군가 악의적으로 막대한 연산(무한 loop) 을 요구하는 transaction을 보내는 것을 막을 수 있다. 애초에 GAS의 상한선 (GAS limit)이 존재하기 때문에 이를 넘어선 transaction은 요청이 취소된다.
Transaction Fee
GAS는 sign account가 지불하는 수수료 그 자체가 아니라 수수료 지불을 위해 transaction 코드의 내용을 보고 책정한 값일 뿐이다. transaction을 블록에 올리기 위해 sign account가 지불하는 총 수수료(transaction fee)는 다음과 같다. Trasaction fee = GAS unit * GAS price
GAS unit : transaction의 수수료를 결정하기 위한 단위로 transaction의 소스코드에 의해서 측정된다. 같은 내용의 transaction에 대해서 항상 같은 cost를 가진다.
GAS price : 네트워크의 상태에 따라서 각 블록마다 새로 업데이트 된다. ( 전 단계의 블록이 절반 이상 채워지면 증가, 아니면 감소하며, 1% 보다 크게 바뀌지 않는다), GAS price의 최솟값은 100 million yocto NEAR ( 10^-16 NEAR )이다.
예를 들어 GAS unit이 1Tgas ( 10^12 Gas) 이고 GAS price가 1 million yN (10^-16 NEAR) 이면, transaction fee는 0.1 milliNEAR (10^-4 NEAR) 이다.
Charge gas fee
smart contract을 배포하는 transaction의 경우 복잡한 과정을 요약하면 크게 두 가지 값을 지불한다. 첫 번째는 계약 내용과 상관없이 contract와 receipt의 전송 및 실행을 위해 지불하는 cost, 두번째는 contract의 size에 비례하는 cost이다. 이 외에도 특이하게 NEAR은 stake storage라는 개념이 존재하는데, 이는 contract가 실행되었을 때 차지하는 블록체인 네트워크의 storage 크기에 비례하여 contract 배포자가 near 토큰을 stake 하는 것을 말한다. 다른 계정이 contract에 접근하여 storage를 더 사용하는 행위( 새로운 변수, 토큰 추가)를 한다면 늘어난 byte 만큼 배포자는 더 많은 토큰을 stake 해야한다.
stoage staking 의 cost는 네트워크에 설정된 책정한 가격으로 1byte당 1e19 yN( 10^-5 NEAR)이다. 즉, 10^5 byte의 storage를 차지하는 contract의 경우, 1NEAR을 staking 해야한다.
funcion call의 경우 amount of CPU, network, IO 그리고 contract에 저장된 데이터량에 따라 gas fee가 달라지기 때문에 예측하기 굉장히 어렵다고 한다. (공식 문서에서 이곳 을 참조하라고 권함)
No description provided.
The text was updated successfully, but these errors were encountered: