개인키를 생성하기 위해서는 임의의 난수값을 만듭니다. 이것은 32bytes 사이즈의 hex 값을 생성합니다.
생성 버튼을 클릭하여 생성하거나 이미 보유하고 있는 개인키가 있으면 붙여넣어보세요.
공개키를 생성하기 위해서는 오리지널 개인키를 기반으로 ECC() 알고리즘을 사용하여 생성합니다.
이더리움에서는 sept256k1 알고리즘을 사용하고 있으며 사용되는 스팩은 아래와 같습니다.
_p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
_r = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
_b = 0x0000000000000000000000000000000000000000000000000000000000000007
_a = 0x0000000000000000000000000000000000000000000000000000000000000000
_Gx = 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
_Gy = 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8
SECP256k1 알고리즘을 사용하여 생성한 공개키입니다.
공개키를 변형하여 이더리움에서 사용가능한 주소를 생성합니다.
공개키를 사용하여 Keccak256 해쉬함수를 적용합니다.
해쉬함수의 결과값에서 마지막 20bytes 만 취하면 이더리움의 주소가 생성됩니다.
이더리움의 주소체계에는 체크섬의 정보가 없습니다. 때문에 주소값에 대한 validation이 어려움으로 이를 보완하기 위해서 체크섬 정보를 주소의 대소문자로 표현합니다.
앞에서 생성된 주소는 모두 소문자로 표현이 되며 체크섬 정보를 포함하지 않습니다.
위 주소를 keccak256으로 해쉬를 합니다
소문자의 주소값에 해쉬의 결과값을 hex 단위로 비교를 하여 8보다 큰 값을 갖으면 대문자로 표현합니다. 이렇게 하여 대소문자가 포함되어 있는 주소값은 체크섬 정보를 가지고 있어 validation이 가능해집니다.