본문으로 건너뛰기

1. Digital Signature

  • 디지털 서명은 디지털 메시지나 문서의 진위를 표한하기 위한 수학적 기법
  • 이더리움은 세 가지 용도로 디지털 서명을 사용한다
    1. 유효한 디지털 서명은 메시지가 알려진 발신자에 의해 생성되었다
    2. 보낸 사람이 메시지를 보내지 않았음을 부인할 수 없다
    3. 메시지가 전송 중에 변경되지 않았다

2 디지털 서명 작동 방법

  • 디지털 서명은 두 단계의 알고리즘으로 구성됨
  1. 메시지에서 개인키를 사용하여 서명을 만드는 알고리즘
  2. 누구나 메시지와 공개키만 사용하여 서명을 검증할 수 있는 알고리즘

2.1 디지털 서명 만들기

  • 이더리움 ECDSA 구현에서 서명된 메시지는 트랜잭션이다.
  • Sig = (r, s) = F_sig(F_keccak256(m), k)
    • m: RLP 인코딩된 트랜잭션
    • F_keccak256: keccak-256 해시 함수
    • F_sig: 서명 알고리즘
    • Sig: 결과 서명
      • Sig는 r과 s로 구성된다.

2.2 서명 확인

  • 서명을 확인하려면 서명(r, s)과 시리얼라이즈된 트랜잭션, 그리고 서명을 만드는 데 사용된 개인키에 상응하는 공개키가 필요하다

3 EIP-155

  • 한 네트워크에서 전파된 트랜잭션이 다른 네트워크에서 재생 되는 것을 방지하는 역할
  • 서명하기 전에 트랜잭션 데이터 내부에 체인 식별자를 포함한다.
    • 트랜잭션이 인코딩되고 해싱되기 전에 트랜잭션 데이터 구조의 주요 6개 필드에 체인 식별자, 0, 0 3개의 필드를 추가한다.
  • 이렇게 하면 이더리움 메인 네트워크 블록체인에 대해 생성된 트랜잭션이 이더리움 클래식 또는 롭스텐 테스트 네트워크 블록체인에서는 유효하지 않다
체인체인 ID
이더리움 메인넷1
롭스텐3
...