Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Research gas model #35

Open
junha1 opened this issue Jul 24, 2022 · 1 comment
Open

Research gas model #35

junha1 opened this issue Jul 24, 2022 · 1 comment
Assignees

Comments

@junha1
Copy link
Member

junha1 commented Jul 24, 2022

No description provided.

@junha1 junha1 changed the title Research Gas model Research gas model Jul 24, 2022
@silca3553
Copy link

silca3553 commented Jul 30, 2022

본 문서는 NEAR protocol 에 대한 내용을 바탕으로 작성되었습니다.

GAS란?

  • 블록체인 네트워크에 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가 달라지기 때문에 예측하기 굉장히 어렵다고 한다. (공식 문서에서 이곳 을 참조하라고 권함)

  • 세부 참조
    gas: https://docs.near.org/concepts/basics/transactions/gas
    storage staking: https://docs.near.org/concepts/storage/storage-staking
    gas traking command: https://nomicon.io/RuntimeSpec/Fees/#gas-tracking

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants