트랜잭션 스피드 업의 원리 : 이더리움은 가스비가 높은 트랜잭션부터 우선적으로 처리합니다.
생성한 트랜잭션이 펜딩상태(블록에 반영되기 전)일 경우
동일한 트랜잭션에서 높은 가스비를 지불하면 다른 트랜잭션보다 우선적으로 처리되어 스피드 업의 효과를 얻게 됩니다.
트랜잭션 취소의 원리 : 스피드 업에서 높은 가스비를 지불하면 우선 채택된다고 하였습니다.
이 점을 활용하여 A가 B에게 보내는 트랜잭션이 있다고 가정합시다.
사실 트랜잭션에는 논스 값이라는 정보가 함께 포함되는데 논스값을 동일하게 적었을 경우
가스비가 높은 트랜잭션을 먼저 블록에 반영하면 나머지 트랜잭션은 무시하게 됩니다.
그래서 다음과 같은 취소가 가능해집니다.
A가 B에게 보내는 트랜잭션을 취소하고 싶을때,
A가 A에게 보내는 트랜잭션(아무의미 없는 트랜잭션)을 높은 가스비로 책정하여
우선적으로 채택되게 하면 앞서 만들었던 A가 B에게 보내는 트랜잭션은 취소가 되는 효과가 일어납니다.
위 같은 상황이 가능하려면 원래 트랜잭션과 취소 트랜잭션의 논스값이 동일해야 합니다.
메타마스크에는 이런 기능을 제공하기 때문에 가능하게 된 것입니다.