def h160_to_p2sh_address(h160, testnet=False): """ 20바이트의 hash160 해시값을 p2sh 주소로 변환 :param h160: 리딤 스크립트의 해시값 :param testnet: 테스트넷 여부 :return: p2sh 주소 """ # 테스트넷의 경우 if testnet: prefix = b"\xc4" # 메인넷의 경우 else: prefix = b"\x05" return encode_base58_checksum(prefix + h160)
def address(self, compressed=True, testnet=False): """ 공개키인 객체에 대해서 비트코인 주소 생성 :param compressed: SEC 압축 여부 :param testnet: 테스트넷 여부 :return: 비트코인 주소 """ h160 = self.hash160(compressed) # 테스트넷의 경우 if testnet: prefix = b"\x6f" # 메인넷의 경우 else: prefix = b"\x00" return encode_base58_checksum(prefix + h160)
def wif(self, public_compressed=True, testnet=False): # 비밀키를 32바이트 빅엔디언으로 표현 secret_bytes = self.secret.to_bytes(32, "big") # 테스트넷의 경우 if testnet: prefix = b"\xef" # 메인넷의 경우 else: prefix = b"\x80" # 공개키 압축 여부에 대한 추가 바이트 설정 if public_compressed: compressed_bytes = b"\x01" else: compressed_bytes = b"" return encode_base58_checksum(prefix + secret_bytes + compressed_bytes)
def example1(): h160 = bytes.fromhex('74d691da1574e6b3c192ecfb52cc8984ee7b6c56') print(encode_base58_checksum(b"\x05" + h160))