트랜잭션
블록체인은 전세계적으로 공유되어 트랜잭션이 일어나는 데이터베이스다. 이것은 네트워크에 참여하면 누구나 데이터베이스를 살펴볼 수 있다는 것을 뜻한다. 만약 여러분이 데이터베이스의 어떤 것을 변경하려고 한다면, 소위 트랜잭션을 만들어야 하며 이는 다른 모두가 동의해야만 한다. 트랜잭션이라는 단어는 당신이 만드려는 어떤 변화(동시에 두 값을 바꾸려 할 때)가 모두 안 되었거나, 모두 되었다는 것을 뜻한다. 그리고 여러분의 트랜잭션이 데이터베이스에 적용되는 동안 어떤 트랜잭션도 그 값을 바꿀 수 없다.
예를 들어 한 계좌에서 다른 계좌로 이체하는 작업이 필요할 때, 데이터베이스의 트랜잭션은 한 계좌에서 돈이 빠져나갔으면 다른 계좌에 그 금액만큼 추가가 되있어야 한다는 걸 보장해야 한다. 어떤 이유로 금액 추가가 되지 않으면 돈도 빠져나가지 않아야한다.
그리고 트랜잭션은 항상 만든 사용자에 의해 암호화된다. 그래서 데이터베이스를 직접 수정하려는 것을 차단할 수 있다. 전자화폐의 경우 이 간단한 검사가 계좌의 키를 소유한 사용자만이 이체할 권한을 가지는 것을 보장한다.
블록
비트코인이 극복해야할 가장 큰 장애물은 "이중 지불 공격"이다. 계정을 초기화할 2개의 트랜잭션이 함께 일어난다면 어떻게 될까? 하나의 트랜잭션만이 유효할 것이고, 둘 중 처음으로 수용되는 쪽일 것이다. 문제는 "첫 번째"가 Peer-to-Peer 네트워크에서 객관적인 용어가 아니라는 점입니다.
그에 대한 추상적인 답은 딱히 신경 쓸 필요는 없다는 것이다. 전반적으로 수용되는 트랜잭션들의 순서는 대개 설정한대로 선택되고, 이는 충돌을 해결해 줄 것이다. 트랜잭션들은 "블록" 이라 불리는 곳에 합쳐진다. 그리고 네트워크에 참여한 모든 노드들에 전파된다. 만약 두 개의 트랜잭션이 충돌한다면, 두 번째가 되는 트랜잭션은 거절될 것이며 블록의 일부가 되지 않는다.
이러한 블록들은 시간에 따라 선형의 순서를 가진 형태를 띄며 "블록체인"의 어원이 되었다. 블록들은 일정한 간격에 의해 체인으로 연결된다. Ethereum은 약 17초마다 만들어진다.
("채굴" 이라 불리는) "순서 선택 메커니즘"의 일환으로 블록들의 순서가 바뀌는 경우도 있는데, 이는 블록의 끝 부분에서만 일어난다. 이런 현상은 특정 블록 위에 더 많은 블록이 생길수록 되돌릴 가능성도 점점 낮아진다. 따라서 트랜잭션이 블록체인에서 바뀌거나 제거되는 경우도 있지만, 시간이 지날수록 그럴 가능성은 낮아진다.
Reference
'블록체인 > 블록체인' 카테고리의 다른 글
[블록체인] ERC20 (0) | 2022.05.21 |
---|