ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 같이보는 블록체인 개념 (6) 트랜잭션이 처리되는 과정
    BlockChain/Technology 2021. 8. 17. 07:26

     


    블록체인을 이해할 때 가장 어려운 점은 돌아가는 것들이 눈에 직접 보이지 않는다는 점입니다.

    배우면 배울수록 이렇게 돌아가는 것일까 순서는 어떻게 처리되는 것일까 궁금중이 생겼습니다.

    이번 시간에는 트랜잭션의 입장에서 발생부터 처리되어 네트워크에 전파되는 과정까지 정리해보려 합니다.

    트랜잭션이 헷갈린다 하는 분들 잘오셨습니다 ! 

     

     

    이더리움에서 트랜잭션이 채굴되는 과정 

     

    1. 사용자가 자기 주소의 개인 키로 트랜잭션을 요청 작성하고 서명합니다.

    0.1 ether를 전송하는 트랜잭션

    2. 사용자는 일부 노드에서 전체 이더리움 네트워크로 트랜잭션 요청을 전파합니다. 

     

    3. 새로운 트랜잭션 요청에 대해 들은 이더리움 네트워크의 각 노드는 블록의 블록체인에 아직 커밋되지 않은 모든 트랜잭션 요청 목록인 local mempool에 요청을 추가합니다. 

     

    Mempool
     - 전송 처리를 기다리는 전송 내역이 저장되는 공간, 일종의 대기실 역할을 합니다. 

     

    4. 마이닝 노드는 수십 또는 수백 개의 트랜잭션 요청을 잠재적으로 생성할 블록에 집계하여 블록의 가스 한도 미만을 유지하면서 얻는 트랜잭션 수수료를 최대합니다. 마이닝 노드는 다음을 수행합니다.

    • 트랜잭션 요청의 유효성을 확인합니다(서명을 생성하지 않은 계정에서 이더 전송을 시도하고 있지 않는지, 요청 형식이 잘못되지 않은지 등). 그런 다음 요청 코드를 실행하여 EVM의 local 복사본의 state를 변경시킵니다. 이 과정을 통해 마이너는 자신의 주소로 각 트랜잭션 요청에 대한 거래 수수료를 지급합니다.
    • 블록의 모든 트랜잭션 요청이 확인되고 로컬 EVM 복사본에서 실행되면 잠재적 블록에 대한 작업증명 생성 프로세스를 시작합니다.
    트랜잭션의 유효성 검사
    - 트랜잭션 풀(tx-pool)에는 로컬 노드에서 수신하고 검증한 네트워크로 전파된 모든 트랜잭션이 포함됩니다.
    트랜잭션 풀에 담길 때 노드는 트랜잭션의 유효성을 확인합니다. 
    ① 트랜잭션의 인덱스(nonce)가 올바른지 확인합니다.
    ② 관련된 수수료를 지불하기에 충분한 자금이 있는지 확인합니다.
    ③ 서명이 유효한지 확인합니다.
    ④ 트랜잭션의 요청 형식에 맞는지 확인합니다.

     

    5. 마이너는 요청한 트랜잭션이 포함된 블록에 대한 인증서 생성을 마칩니다. 그리고 인증서와 변경된 새로운 EVM state의 체크섬이 포함된 블록을 전파합니다. 

     

    6. 다른 노드는 새롭게 생성된 블록에 대해 듣습니다. 그들은 인증서를 확인하고 블록의 모든 트랜잭션을 자체적으로 실행하며, 모든 트랜잭션 실행 후 EVM state의 체크섬이 블록이 주장하는 state의 체크섬과 일치하는지 확인합니다. 일치가 되면 이 블록을 블록체인의 꼬리에 추가하고 새 EVM 상태를 표준 상태로 받아들입니다.

     

     7. 각 노드는 처리되지 않은 트랜잭션 요청의 local mempool에서 새 블록의 모든 트랜잭션을 제거합니다.

     

    8. 네트워크에 합류하는 새로운 노드는 관심있는 트랜잭션이 포함된 블록을 포함하여 모든 블록을 순서대로 다운로드 합니다. local EVM 복사본을 초기화한 다음 local EVM 복사본 위에 있는 모든 트랜잭션을 실행하는 프로세스를 거쳐 각 블록의 state 체크섬을 확인합니다. 

     

    모든 트랜잭션은 한 번 마이닝 되지만 표준 EVM 상태를 진행하는 과정의 모든 노드들이 실행하고 확인합니다. 요청한 트랜잭션이 마이너에 의해 처리되는 과정을 살펴보았습니다. 다소 복잡해 보이지만 이런 과정을 통해 록체인의 핵심 특징인 신뢰성이 보장이 됩니다. 수고하셨습니다 ! 

     

    댓글

Designed by Tistory.