트랜잭션 — ETH.BUILD
ETH.BUILD 교육 도구를 사용하여 이더리움 트랜잭션이 어떻게 작동하는지 보여주는 데모입니다. 이더리움 네트워크에서 트랜잭션이 어떻게 구성되고, 서명되며, 전송되는지 알아보세요.
Date published: 2021년 1월 14일
오스틴 그리피스(Austin Griffith)가 ETH.BUILD 시각적 프로그래밍 도구를 사용하여 이더리움 트랜잭션이 어떻게 작동하는지 보여주는 튜토리얼입니다. 트랜잭션 구조, 가스 가격, 서명하기, 브로드캐스팅 및 트랜잭션 풀을 다룹니다.
이 대본은 오스틴 그리피스가 게시한 원본 동영상 대본 (opens in a new tab)의 접근성 향상 버전입니다. 가독성을 위해 약간 편집되었습니다.
트랜잭션 수수료 및 채굴자 인센티브 (0:00)
오늘 ETH.BUILD에서는 트랜잭션에 대해 이야기해 보겠습니다. 지금까지 우리는 이러한 트랜잭션이 블록으로 채굴되고, 블록에 패키징되어 체인으로 채굴되는 과정을 살펴보았습니다. 블록 보상 외에 채굴자가 풀에 있는 다른 사람들의 트랜잭션 대신 우리의 트랜잭션을 풀에서 꺼내 블록에 넣고 체인에 채굴하도록 유도하는 인센티브가 무엇인지 이야기해 보려고 합니다. 풀에는 입찰을 하는 수천 명의 사람들이 있을 수 있으며, 그 입찰은 이 수수료로 이루어집니다.
제 트랜잭션에는 "나는 앨리스이고 밥에게 5를 보내며, 리플레이 공격 방지를 위한 내 논스는 1이다"라고 명시된 수수료가 포함될 수 있습니다. 또한, 이것을 채굴하는 사람은 누구나 그 수수료를 가져갈 수 있습니다. 기본적으로 앨리스는 밥에게 5를 보내는 동시에, 채굴자에게 이것을 체인에 넣어주는 대가로 약간의 수수료를 지불하는 것입니다.
이더리움 트랜잭션의 구조 (1:10)
이더리움에서 트랜잭션은 어떤 모습일까요? 더 이상 "밥"과 "앨리스"는 없고 주소가 사용됩니다. 가치는 ETH가 아닌 Wei 단위로 표시됩니다. 그리고 수수료 역시 Wei 단위가 됩니다.
이제 이 트랜잭션을 살펴보겠습니다. 니모닉이 입력된 계정이 있고, 이더리움 메인넷에 연결되어 있습니다. 또한 CoinMarketCap에서 가격 데이터를 가져오는 모듈을 실행하고 있어서, 0.1 얼마의 이더가 약 23달러에 해당한다는 것을 알 수 있습니다.
트랜잭션 설정하기 (2:25)
제가 할 일은 트랜잭션을 생성하고 채굴자가 이를 선택하여 온체인에 올리도록 인센티브를 제공하는 것입니다. 앨리스와 밥이라는 두 캐릭터가 있습니다. 앨리스는 자신의 개인 키를 사용하여 밥에게 약간의 가치를 보낼 것입니다. 여기에 "보낸 사람(from)" 주소 필드가 없는 이유는, 우리가 키 쌍으로 서명하기 및 복구를 수행하기 때문입니다. 트랜잭션은 패키징되고 서명된 다음 네트워크를 통해 전송됩니다. 아무도 이를 조작할 수 없으며, 반대편에서는 누군가 이를 복구하여 서명한 사람이 실제로 우리라는 것을 확인할 수 있습니다. "보낸 사람" 주소는 이렇게 파생됩니다.
가스 가격 전략 (4:20)
가스 가격은 기본적으로 약 4.1 Gwei로 설정되어 있습니다. 이는 41억 Wei에 해당합니다. 하지만 우리는 이에 대해 좀 더 전략적으로 접근하여 현재 온체인에서 무슨 일이 일어나고 있는지 확인하고자 합니다. 마지막 블록에는 78개의 트랜잭션이 있었고, 가스 가격은 약 5에서 최소값까지 다양했습니다. 기본적으로 해당 블록에 채굴되려면 5 이상이어야 합니다. 따라서 가스 가격을 5.001로, 아주 조금 더 높게 설정해 보겠습니다.
Wei로 변환하기 (5:20)
우리는 Wei로 변환해야 합니다. 이더리움에서는 주로 두 가지 단위를 다룹니다. 사람들이 보통 이야기하는 이더(ETH)와 이더의 아주 작은 부분인 Wei입니다. 가스 가격에 사용하는 Gwei는 그 사이에 있습니다. 그 이유는 우리가 일상생활에서 페니의 몇 분의 일 단위로 이야기하지 않는 것과 비슷합니다.
앨리스는 0.18 이더를 가지고 있고, 우리는 밥에게 0.05 이더를 보낼 것입니다. 가스 가격은 5 Gwei로 입력합니다.
서명하기 및 브로드캐스팅 (7:02)
앨리스가 트랜잭션에 서명하기를 선택하면, 네트워크를 통해 전송될 수 있는 서명된 트랜잭션으로 발송됩니다. 아무도 이를 건드릴 수 없습니다. 반대편에서는 누군가 서명한 사람이 앨리스라는 것을 파생할 수 있으며, 여기에는 우리가 누구에게 보내고자 하는지, 채굴자에게 가는 가스는 얼마인지에 대한 모든 정보가 포함되어 있습니다.
우리는 그 서명된 트랜잭션을 가져와 블록체인 모듈의 전송 함수에 연결합니다. 전송을 클릭하면 해시, 즉 트랜잭션 해시가 반환됩니다. 기본적으로 분산 네트워크에 전송했고, 그들은 저에게 트랜잭션 해시를 돌려주었습니다. 이것은 네트워크로 나가고, 트랜잭션 풀이 존재하게 됩니다. 사람들은 모두 자신의 트랜잭션을 통과시키기 위해 입찰을 합니다.
블록 확인하기 (8:41)
블록체인에서 우리의 트랜잭션을 조회할 수 있습니다. 아니나 다를까, 이미 채굴되었습니다. 블록을 살펴보고 가스 가격순으로 정렬하여 우리 트랜잭션을 찾을 수 있습니다. 가스 가격이 5.001인 우리의 트랜잭션이 있습니다. 앨리스가 밥에게 보내는 것이며 추가 데이터는 없습니다. 우리는 밑에서 네다섯 번째 위치에 있습니다.
트랜잭션과 함께 데이터 보내기 (9:54)
우리는 가치를 전송하고 입찰하여 트랜잭션이 온체인에서 인식되도록 할 수 있습니다. 하지만 한 가지 더, 데이터 필드를 살펴보겠습니다. 트랜잭션과 함께 무언가를 보낼 수 있습니다. 이는 16진수로 표시됩니다. 앨리스는 밥에게 6달러를 더 보낼 것이고, 우리는 "hey Bob"이라는 메시지를 첨부할 것입니다. "hey Bob"이 16진수로 변환된 것을 볼 수 있습니다.
우리는 그 트랜잭션에 서명하고, 채굴자에게 보내고, 네트워크로 전송된 후 해시를 돌려받습니다. 채굴되는지 지켜보면, 실제로 채굴됩니다. 해당 블록을 확인해 보면 데이터가 첨부된 우리의 트랜잭션을 볼 수 있습니다.
트랜잭션 풀 및 가스 올리기 (12:43)
마지막 데모를 위해, 가스 가격을 약 1.001 Gwei로 매우 낮게 설정하여 트랜잭션을 풀에 넣었습니다. 채굴자에게 충분한 인센티브를 제공하지 않았기 때문에 채굴되지 않은 채로 남아 있습니다. 트랜잭션 풀에서 트랜잭션이 대기 중인 것을 볼 수 있습니다. 풀에는 100개에서 300개 사이의 트랜잭션이 있지만, 최근 채굴된 블록을 보면 가장 낮은 가스 가격이 약 5입니다.
따라서 이 트랜잭션을 다시 제출해야 합니다. 10으로 올려보겠습니다. 필요한 것보다 훨씬 많지만, 동일한 논스에 더 높은 가스 가격으로 동일한 트랜잭션을 다시 제출할 것입니다. 네트워크는 "같은 사람, 같은 트랜잭션인데 더 많은 비용을 지불할 의향이 있군"이라고 인식합니다. 그러면 선택되어 다음 블록에 채굴됩니다.
요약 (14:52)
우리는 트랜잭션을 전송했고, 채굴자가 이를 블록체인에 넣도록 유도하기 위해 약간의 가스를 지불했습니다. 또한 트랜잭션과 함께 데이터도 보냈습니다. 이제 이 콜 데이터가 함께 제공되므로 할 수 있는 정말 멋진 일들이 많으며, 나중에 스마트 컨트랙트와 많은 재미있는 내용들을 다루게 될 것입니다.