솔루션
공공블록

Gonggong Block

공공장소에서 진행하는 블록체인 코어개발을 위한 Visual Web Tool입니다.
블록체인의 핵심적인 알고리즘들을 모두 모아놓았으며 세부적으로 생성되는 값들과 동작방식을 볼 수 있습니다.

01 PrivateKey 생성하기

개인키를 생성하기 위해서는 임의의 난수값을 만듭니다. 이것은 32bytes 사이즈의 hex 값을 생성합니다.
생성 버튼을 클릭하여 생성하거나 이미 보유하고 있는 개인키가 있으면 붙여넣어보세요.

02 Public Key 생성하기

공개키를 생성하기 위해서는 오리지널 개인키를 기반으로 ECC() 알고리즘을 사용하여 생성합니다.
이더리움에서는 sept256k1 알고리즘을 사용하고 있으며 사용되는 스팩은 아래와 같습니다.
_p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
_r = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
_b = 0x0000000000000000000000000000000000000000000000000000000000000007
_a = 0x0000000000000000000000000000000000000000000000000000000000000000
_Gx = 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
_Gy = 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8

SECP256k1 알고리즘을 사용하여 생성한 공개키입니다.

03 Address 생성하기

공개키를 변형하여 이더리움에서 사용가능한 주소를 생성합니다.

공개키를 사용하여 Keccak256 해쉬함수를 적용합니다.

해쉬함수의 결과값에서 마지막 20bytes 만 취하면 이더리움의 주소가 생성됩니다.

04 EIP-55 생성하기

이더리움의 주소체계에는 체크섬의 정보가 없습니다. 때문에 주소값에 대한 validation이 어려움으로 이를 보완하기 위해서 체크섬 정보를 주소의 대소문자로 표현합니다.

앞에서 생성된 주소는 모두 소문자로 표현이 되며 체크섬 정보를 포함하지 않습니다.

위 주소를 keccak256으로 해쉬를 합니다

소문자의 주소값에 해쉬의 결과값을 hex 단위로 비교를 하여 8보다 큰 값을 갖으면 대문자로 표현합니다. 이렇게 하여 대소문자가 포함되어 있는 주소값은 체크섬 정보를 가지고 있어 validation이 가능해집니다.