로고

보류 중인 이더리움 트랜잭션을 수정하거나 취소하는 방법

김경은 기자 | 기사입력 2021/10/18 [14:52]

보류 중인 이더리움 트랜잭션을 수정하거나 취소하는 방법

김경은 기자 | 입력 : 2021/10/18 [14:52]

▲ 이더리움 이미지 출처 Pixabay

 

보류 중인 이더리움(ETH) 트랜잭션을 수정하거나 취소하는 방법은 무엇일까.

 

이더리움은 제3자의 간섭 없이 전 세계적으로 송수신할 수 있는 고유 암호화폐인 이더리움(ETH)을 구동하는 수천 개의 분산 애플리케이션(DApp, 디앱)이 있는 오픈 소스 블록체인 기반 소프트웨어 플랫폼이다.

 

러시아계 캐나다인 프로그래머 비탈릭 부테린(Vitalik Buterin)이 2013년에 처음 개념화한 이더리움은 금융에서 게임 및 예술에 이르기까지 다양한 사용 사례를 가진 자체 실행, 영구 및 불변 디앱(DApp)을 위한 플랫폼으로 설계됐다.

 

흔히 DApp은 스마트 계약이라고 하는데, 이는 사전 결정된 조건 및 계약으로 거래 처리와 같은 특정 기능과 작업을 자동으로 수행하는 이더리움 트랜잭션 프로토콜이다. 트랜잭션을 전송하거나 취소하거나 보류 중인 이더리움 트랜잭션을 해결하는 것은 스마트 계약의 기능과 관련된 작업이다.

 

암호화폐 전문매체 코인텔레그래프는 17일( 현지 시간) 보류중인 이더리움의 트랜백션을 취소하거나 수정하는 방법을 다음과 같이 정리했다.

 

-이더리움 트랜잭션이란?

 

그렇다면 이더리움 트랜잭션이란 무엇을 말하는 것일까. 트랜잭션(거래)은 계정에서 암호로 서명된 지침이다. 

 

 

▲ 이더리움 공동 개발자 비탈릭 부테린. 사진 출처 공식 트위터    

 

 

이더리움 네트워크는 두 가지 주요 거래 유형인 계약 구축 트랜잭션, 수신자가 없는 트랜잭션 유형, 그리고 ETH를 한 지갑에서 다른 지갑으로 전송하는 데 사용되는 가장 단순한 트랜잭션 유형인 정기적인 트랜잭션을 지원한다.

 

제출된 정기적인 이더리움 트랜잭션에는 보낸 사람의 식별자 또는 보낸 사람의 개인 키가 거래에 서명하고, 보낸 사람이 특정 이더리움 트랜잭션을 승인했음을 확인하는 서명이 포함된다. 수신 주소, 송신자에서 수신자로 전송할 ETH 양, 이더리움 트랜잭션 수수료에 대한 정보, 임의 데이터를 포함하는 선택적 필드 모두 제출된 정규 이더리움 트랜잭션의 일부이다.

 

이더리움 거래가 유효하려면 이더리움을 채굴해야 하며 발신자로부터 수수료가 필요하다.

 

이더리움 채굴자들은 새로운 ETH 생성 작업에 대한 보상을 받기 위해 합법적인 거래를 검증한다. 광부가 암호(수학적 연산) 퍼즐을 풀면 트랜잭션이 검증된 것으로 간주된다. 이더리움은 비트코인(BTC)과 마찬가지로 '작업 증명'(PoW) 시스템  갖추고 있어 한 개인이나 그룹의 사이버 공격을 방지한다.

 

블록체인을 사용할 때 사용자가 거래 수수료를 지불해야 하는 의무는 목적 없는 거래의 과부하로 블록체인을 스팸하는 사용자와 같은 조잡하거나 악의적인 계산 작업으로부터 이더리움 네트워크를 보호한다.

 

▲ 이더리움 이미지 출처 Pixabay    

 

-이더리움 트랜잭션 수명 주기

이더리움 트랜잭션은 블록에서 확인될 때까지 알 수 없는 상태에서 시작하여 다음의 일련의 상태를 거친다.

 

▲ 알수 없음(Unknown) : 알 수 없는 상태는 네트워크에서 보거나 처리하지 않은 트랜잭션을 나타낸다.

 

▲ 보류 중(Pending) : 트랜잭션이 보류 상태에 있으면 채굴자가 이를 선택하여 처리하기를 기다리고 있다. 이를 풀링 트랜잭션이라고 하며 '멤풀'(mempool)이라고도 부른다. 채굴자들은 더 높은 가스 가격을 우선시하기 때문에 더 낮은 가스 가치를 가진 트랜잭션은 오랜 기간 동안 보류 단계에서 지연될 수 있다. 가스 가격이 가장 낮은 거래는 절대 선택되지 않아 영원히 보류 상태에 놓이게 될 수 있다.

 

▲ 블록 내(In block) : 채굴자가 트랜잭션을 성공적으로 선택하고 블록 내에서 채굴하면 '블록 내' 상태로 진행된다. 블록 내 트랜잭션을 채굴된 트랜잭션이라고 한다. 블록이 분기되면 블록의 트랜잭션이 보류 상태로 돌아갈 수 있다. 채굴된 트랜잭션(즉, 블록 상태의 트랜잭션)이 네트워크에 의해 취소되는 경우 이를 분기 트랜잭션이라고 한다.

 

▲ 대체됨(Replaced) : 다음 상황 중 하나가 발생하면 트랜잭션이 보류 상태에서 대체됨 상태로 이동할 수 있다.

 

즉 동일한 발신자의 동일한 논스(nonce)를 가진 새로운 트랜잭션이 차단 상태에 들어가거나 동일한 nonce와 12% 더 높은 가스 가격을 가진 또 다른 트랜잭션이 이번에는 동일한 발신자로부터 보류 단계에 들어간다.

 

-이더리움 트랜잭션 확인

이더리움 트랜잭션 확인은 이 트랜잭션이 포함된 첫 번째 블록 이후에 생성된 블록의 수다.

 

보류 중인 이더리움 트랜잭션은 특정 수의 확인을 받아야 한다. 가스 수수료가 높을수록 이더리움 네트워크가 트랜잭션을 처리하고 인식하는 확실성이 커진다.

 

최근 블록을 재구성하여 트랜잭션 처리에 실패한 것처럼 보이게 할 수 있다. 그럼에도 불구하고 트랜잭션은 다른 블록에 포함될 수 있으며 여전히 유효하다. 재구성의 확률은 각 후속 채굴 블록에 따라 감소한다. 즉, 확인이 많을수록 거래는 더욱 불변하게 된다.

 

트랜잭션 수수료는 사용자가 채굴자를 차단하기 위해 지불하는 인센티브다. 이더리움 블록체인에서 특정 트랜잭션을 보내는 데 사용된다.

 

이더리움 블록체인 거래 수수료는 채굴자가 거래를 처리하는 데 필요한 계산을 나타내는 이더리움 네트워크에서 사용되는 가격 책정 메커니즘인 가스와 관련이 있기 때문에 가스 수수료라고도 한다. 트랜잭션의 계산 작업은 가스 비용으로 측정된다.

 

반면 가스의 각 단위에는 ETH로 표시된 가스 가격이 있다. 특정 거래의 복잡성이 가스 비용을 결정하지만 사용자는 자신의 가격 및 가스 한도 또는 거래에 의해 소비되는 가스 단위의 최대량을 설정할 수 있다.

 

 

 

-넌스(nonce)란 무엇인가?

넌스(nonce)는 주어진 이더리움 주소에서 전송된 확인된 총 트랜잭션 수를 가리키는 '한 번만 사용한 번호'(number only used once)의 약자다.

 

이더리움 지갑은 한 계정에서 여러 트랜잭션을 서로 큰 지연 없이 브로드캐스트할 수 있으며, 이는 nonce 계산이 먼저 처리되는 트랜잭션을 결정하는 필수 메커니즘으로 간주된다는 것을 의미한다. 일반적으로, 이더리움 지갑 애플리케이션은 사용자의 nonce 관리를 담당한다.

 

- 이더리움 트랜잭션을 취소하는 방법은?

보류 중인 이더리움 거래를 취소하는 두 가지 주요 방법은 애플리케이션 내 취소와 사용자 지정 취소(nonce) 설정이다.

 

일반적으로, 이더리움 거래는 사용자가 낮은 수수료를 제출하면 몇 시간 동안 보류되거나 정체된다. 따라서 사용자는 종종 이더리움 트랜잭션을 변경해야 한다고 생각한다.

 

만약 이 단계에서 문제를 해결하지 못한다면, 넌스를 이용하는 두 번째 방법이 있다.

 

사용자 지정 넌스를 설정하여 보류 중인 이더리움 트랜잭션을 취소한다는 것은 이전 트랜잭션이 고착되는 것을 방지하기 위해 사용자 자신의 주소에 높은 가스 가격으로 0 ETH 트랜잭션을 생성하는 것을 의미한다. 이 두 번째 트랜잭션을 전송하기 전에 사용자는 보류 중인 원래 트랜잭션에서 사용되고 있는 nonce에 주목한 다음 자신이 기록한 nonce를 다시 사용해야 한다.

 

사용자가 보류 중인 여러 이더리움 트랜잭션을 가지고 있는 경우 가장 오래된 거래 또는 가장 낮은 nonce 값부터 시작하는 것이 좋다.

 

-이더리움 트랜잭션 속도를 높이는 방법은?

사용자는 느린 이더리움 트랜잭션에 가스를 추가하여 속도를 높일 수 있다. 이 단계는 이더리움 광부가 우선순위를 정하도록 유도할 수 있다.

 

이더리움 사용자가 가스 값을 너무 낮게 책정하면, 다른 사용자는 이 초기 입찰보다 높은 가격을 제시할 수 있는 기회를 얻게 되며 거래는 보류 상태로 남게 된다. 트랜잭션이 고착될 때, 네트워크는 마이너가 첫 번째 트랜잭션을 확인할 때까지 동일한 지갑 주소로부터 어떠한 새로운 트랜잭션도 확인하지 않는다.

 

이 상황에서, 사용자들은 네트워크가 정해진 가격으로 거래를 처리할 의향이 있을 때까지 기다리거나 원래 거래를 다시 제출하지만 가스 요금이 더 높을 때까지 기다릴 수 있다. 이더리움 지갑에서 '속도 향상' 버튼을 클릭하면 거래가 더 빨리 처리될 수 있다.

 

이전 단계가 작동하지 않으면 고급 탭으로 이동하여 수동으로 가스 값을 설정할 수 있다.

 

따라서 사용자는 해당 트랜잭션이 성공적으로 처리되었는지 확인하기 위해 해당 해시를 블록체인 탐색기에 게시하여 해당 트랜잭션을 검색하는 것이 좋다. 트랜잭션이 즉시 나타나지 않으면 몇 분 정도 기다렸다가 페이지를 새로 고쳐야 한다.

 

-이더리움 트랜잭션을 되돌릴 수 있을까?

이더리움 지갑은 이미 완료된 이더리움 트랜잭션을 되돌릴 수 없다.

 

이더리움 사용자가 실수로 잘못된 주소로 자금을 보내거나 ETH 금액을 잘못 보내면 아직 미결인 상태에서 거래를 취소할 수 있다. 트랜잭션이 확인되고 다음 블록에 추가되었음을 의미하는 '성공적'(Successful)로 표시되면 트랜잭션을 되돌릴 수 없다. 

 

이더리움 블록체인은 불변으로 설계되었기 때문에 입력된 블록은 되돌릴 수 없다. 전송 버튼을 클릭하기 전에 트랜잭션 세부 정보가 올바른지 반드시 확인해야 한다.

 

마지막으로, 많은 블록체인 스타트업이 이미 사용자가 이더리움 거래를 되돌릴 수 있는 메커니즘을 개발했다는 점에 주목할 필요가 있다.

  • 도배방지 이미지

광고

광고

광고
광고
광고
광고
광고
광고