솔루션
공공블록

Gonggong Block

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

01 PrivateKey 생성하기

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

02 WIF Compressed 생성하기

개인키를 사용할 필요가 있을때는 WIF (Wallet Info Format) 에 맞춰서 압축된 형태로 사용합니다.
개인키가 달라지면 해당 값도 함께 변경이 됩니다.

개인키 앞에 prefix를 붙이고 뒤에 tail을 추가합니다.

sha256 해쉬함수를 두번 수행하여 암호화를 합니다.

앞자리 8자리 값을 checksum 값으로 사용합니다.

개인키와 checksum 값을 합쳐서 base58 인코딩을 하면 WIF가 만들어집니다.

03 WIF UnCompressed 생성하기

개인키를 사용할 필요가 있을때는 WIF (Wallet Info Format) 에 맞춰서 압축이 되지 않은 형태로 사용합니다.
개인키가 달라지면 해당 값도 함께 변경이 됩니다.

개인키 앞에 prefix를 붙이고 뒤에 tail을 추가합니다.

sha256 해쉬함수를 두번 수행하여 암호화를 합니다.

앞자리 8자리 값을 checksum 값으로 사용합니다.

개인키와 checksum 값을 합쳐서 base58 인코딩을 하면 WIF가 만들어집니다.

04 Public Key 생성하기

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

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

05 Address Compressed 생성하기

공개키를 변형하여 비트코인에서 사용가능한 주소를 생성합니다.

공개키에서 (x, y) 를 분리합니다.

y 값이 짝수/홀수 여부에 따라서 다른 prefix를 붙여줍니다.

SHA256과 RIPEMD-160 암호화해쉬함수를 사용해서 암호화합니다.

다시 앞에 prefix '00' 를 붙이고 SHA256 해쉬를 두번 수행합니다.

앞자리 8자리를 checksum 값으로 사용합니다.

공개키 뒤에 checksum 값을 붙입니다.

BASE58 인코딩을 하여 압축된 공개키를 생성합니다. 이것을 비트코인에서는 Address 로 사용합니다.

06 Address UnCompressed 생성하기

공개키를 변형하여 비트코인에서 사용가능한 주소를 생성합니다.

앞에 prefix '04' 를 붙입니다.

SHA256과 RIPEMD-160 암호화해쉬함수를 사용해서 암호화합니다.

다시 앞에 prefix '00' 를 붙이고 SHA256 해쉬를 두번 수행합니다.

앞자리 8자리를 checksum 값으로 사용합니다.

공개키 뒤에 checksum 값을 붙입니다.

BASE58 인코딩을 하여 비압축된 공개키를 생성합니다. 이것을 비트코인에서는 Address 로 사용합니다.