πŸ‡°πŸ‡· μΉ΄λ₯΄λ‹€λ…Έ κ±°λ²„λ„ŒμŠ€ λͺ¨λΈμ—μ„œμ˜ μœ„μž„λŒ€ν‘œ(DRep)의 μ—­ν• 

Ilhun @CryptoVeri :twitter: enics_sky@naver.com

이번 κΈ€μ—μ„œλŠ” μΉ΄λ₯΄λ‹€λ…Έ κ±°λ²„λ„ŒμŠ€ λͺ¨λΈμ—μ„œ μ€‘μš”ν•œ 역할을 λ§‘κ³  μžˆλŠ” μœ„μž„λŒ€ν‘œ(DReps)에 λŒ€ν•΄ μ€‘μ μ μœΌλ‘œ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

μΉ΄λ₯΄λ‹€λ…Έ λΈ”λ‘μ²΄μΈμ˜ μƒˆλ‘œμš΄ κ±°λ²„λ„ŒμŠ€ μ‹œμŠ€ν…œμ—μ„œ μœ„μž„λŒ€ν‘œ(DReps)λŠ” μ§€λΆ„ 보유자λ₯Ό λŒ€μ‹ ν•˜μ—¬ μ˜μ‚¬κ²°μ •μ— μ°Έμ—¬ν•˜λŠ” 핡심 역할을 λ§‘κ³  μžˆμŠ΅λ‹ˆλ‹€. μ§€λΆ„ λ³΄μœ μžλ“€μ€ μžμ‹ μ˜ 지뢄을 μœ„μž„λŒ€ν‘œμ—κ²Œ μœ„μž„ν•˜μ—¬ κ±°λ²„λ„ŒμŠ€μ— κ°„μ ‘μ μœΌλ‘œ μ°Έμ—¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μœ„μž„λŒ€ν‘œλŠ” μœ„μž„λ°›μ€ 지뢄에 λΉ„λ‘€ν•˜μ—¬ νˆ¬ν‘œκΆŒμ„ κ°€μ§€λ©°, 이λ₯Ό 톡해 μ§€λΆ„ λ³΄μœ μžλ“€μ˜ μ˜μ‚¬λ₯Ό λ°˜μ˜ν•˜μ—¬ μΉ΄λ₯΄λ‹€λ…Έ μƒνƒœκ³„μ˜ λ°œμ „μ„ μœ„ν•œ μ€‘μš”ν•œ 결정을 λ‚΄λ¦½λ‹ˆλ‹€. μœ„μž„λŒ€ν‘œκ°€ 되기 μœ„ν•΄μ„œλŠ” νŠΉμ • 자격 μš”κ±΄μ„ μΆ©μ‘±ν•΄μ•Ό ν•˜λ©°, 등둝과 ν™œλ™ μœ μ§€ 절차λ₯Ό 거쳐야 ν•©λ‹ˆλ‹€. μœ„μž„λŒ€ν‘œλŠ” μ •κΈ°μ μœΌλ‘œ νˆ¬ν‘œμ— μ°Έμ—¬ν•΄μ•Ό ν•˜λ©°, 일정 κΈ°κ°„ λ™μ•ˆ νˆ¬ν‘œμ— λΆˆμ°Έν•  경우 λΉ„ν™œμ„±ν™”λ©λ‹ˆλ‹€. λ˜ν•œ, μ μ ˆν•œ μΈμ„Όν‹°λΈŒ λͺ¨λΈμ΄ λ§ˆλ ¨λ˜μ–΄ μœ„μž„λŒ€ν‘œμ˜ μ°Έμ—¬λ₯Ό λ…λ €ν•©λ‹ˆλ‹€. μ§€λΆ„ λ³΄μœ μžλŠ” νˆ¬ν‘œ μœ„μž„ μΈμ¦μ„œλ₯Ό 톡해 μžμ‹ μ˜ 지뢄을 μœ„μž„λŒ€ν‘œμ—κ²Œ μœ„μž„ν•  수 있으며, μœ„μž„λŒ€ν‘œλŠ” 퇴직 μΈμ¦μ„œλ₯Ό μ œμΆœν•˜μ—¬ μ–Έμ œλ“ μ§€ ν™œλ™μ„ 쀑단할 수 μžˆμŠ΅λ‹ˆλ‹€.

그럼, μœ„μž„λŒ€ν‘œμ˜ μ—­ν• κ³Ό μ±…μž„, 자격 μš”κ±΄, 등둝/퇴직 등에 λŒ€ν•΄ μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

μœ„μž„λŒ€ν‘œ(DReps)의 μ—­ν• 

λ³Όν…Œλ₯΄ μ‹œλŒ€μ˜ μƒˆλ‘œμš΄ κ±°λ²„λ„ŒμŠ€ μ‹œμŠ€ν…œμ—μ„œ μœ„μž„λŒ€ν‘œ(Delegated Representatives, DReps)λŠ” μ§€λΆ„ 보유자λ₯Ό λŒ€μ‹ ν•˜μ—¬ κ±°λ²„λ„ŒμŠ€μ— μ°Έμ—¬ν•˜λŠ” 핡심 역할을 ν•©λ‹ˆλ‹€. μ§€λΆ„ λ³΄μœ μžλ“€μ€ 직접 νˆ¬ν‘œν•˜λŠ” λŒ€μ‹ , μžμ‹ μ˜ 지뢄을 μœ„μž„λŒ€ν‘œμ—κ²Œ μœ„μž„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μœ„μž„λŒ€ν‘œλŠ” μœ„μž„λ°›μ€ 지뢄에 λΉ„λ‘€ν•˜μ—¬ νˆ¬ν‘œκΆŒμ„ κ°€μ§€κ²Œ λ©λ‹ˆλ‹€. 이λ₯Ό 톡해 μ§€λΆ„ λ³΄μœ μžλ“€μ˜ μ˜μ‚¬κ°€ λ°˜μ˜λ˜μ–΄ μΉ΄λ₯΄λ‹€λ…Έ μƒνƒœκ³„μ˜ μ˜μ‚¬κ²°μ •μ— μ°Έμ—¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μœ„μž„λŒ€ν‘œ μ œλ„λŠ” μ§€λΆ„ λ³΄μœ μžλ“€μ—κ²Œ 직접 μ°Έμ—¬μ˜ 기회λ₯Ό μ œκ³΅ν•˜κ³ , λ™μ‹œμ— 효율적인 μ˜μ‚¬κ²°μ • ꡬ쑰λ₯Ό λ§Œλ“€μ–΄λƒ…λ‹ˆλ‹€.

μœ„μž„λŒ€ν‘œμ˜ μ£Όμš” μ±…μž„

μœ„μž„λŒ€ν‘œμ˜ μ£Όμš” μ±…μž„μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  1. κ±°λ²„λ„ŒμŠ€ μ•‘μ…˜μ— λŒ€ν•œ νˆ¬ν‘œ μ°Έμ—¬
  2. μœ„μž„λ°›μ€ μ§€λΆ„ λ³΄μœ μžλ“€μ˜ μ˜μ‚¬ λŒ€λ³€
  3. μΉ΄λ₯΄λ‹€λ…Έ μƒνƒœκ³„ λ°œμ „μ„ μœ„ν•œ μ˜μ‚¬κ²°μ •
  4. 지속적인 ν™œλ™μ„± μœ μ§€

μœ„μž„λŒ€ν‘œλŠ” μ •κΈ°μ μœΌλ‘œ μ œμ•ˆλœ κ±°λ²„λ„ŒμŠ€ μ•‘μ…˜μ— λŒ€ν•΄ μ°¬μ„±, λ°˜λŒ€, 기ꢌ νˆ¬ν‘œλ₯Ό ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λ•Œ μœ„μž„λ°›μ€ μ§€λΆ„μ˜ 규λͺ¨μ— λΉ„λ‘€ν•˜μ—¬ νˆ¬ν‘œ μˆ˜κ°€ κ²°μ •λ©λ‹ˆλ‹€. μœ„μž„λŒ€ν‘œλŠ” μœ„μž„μžλ“€μ˜ 이읡을 λŒ€λ³€ν•˜μ—¬ μΉ΄λ₯΄λ‹€λ…Έμ˜ λ°œμ „ λ°©ν–₯을 κ²°μ •ν•˜λŠ” μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€. λ˜ν•œ 일정 κΈ°κ°„ νˆ¬ν‘œμ— λΆˆμ°Έν•˜λ©΄ λΉ„ν™œμ„±ν™”λ˜λ―€λ‘œ 지속적인 ν™œλ™μ΄ ν•„μˆ˜μ μž…λ‹ˆλ‹€.

μœ„μž„λŒ€ν‘œμ˜ 자격 μš”κ±΄

μœ„μž„λŒ€ν‘œκ°€ 되기 μœ„ν•΄μ„œλŠ” λ‹€μŒ μš”κ±΄μ„ μΆ©μ‘±ν•΄μ•Ό ν•©λ‹ˆλ‹€:

  1. Ed25519 검증 ν‚€ λ˜λŠ” λ„€μ΄ν‹°λΈŒ/ν”Œλ£¨νˆ¬μŠ€ 슀크립트 보유
  2. 예치금(Deposit) λ‚©λΆ€
  3. μ„ νƒμ μœΌλ‘œ 액컀(메타데이터 URLκ³Ό ν•΄μ‹œκ°’) 제좜

Ed25519 ν‚€λ‚˜ 슀크립트λ₯Ό 톡해 μœ„μž„λŒ€ν‘œμ˜ 고유 ID인 DRep IDκ°€ μƒμ„±λ©λ‹ˆλ‹€. μ˜ˆμΉ˜κΈˆμ€ μœ„μž„λŒ€ν‘œ ν™œλ™μ„ μœ„ν•΄ 일정 κΈˆμ•‘μ˜ ADAλ₯Ό μ˜ˆμΉ˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ•΅μ»€λŠ” μœ„μž„λŒ€ν‘œμ— λŒ€ν•œ 메타데이터λ₯Ό μ œκ³΅ν•˜λŠ” μ„ νƒμ‚¬ν•­μž…λ‹ˆλ‹€.

μœ„μž„λŒ€ν‘œκ°€ 되기 μœ„ν•œ 절차

μœ„μž„λŒ€ν‘œκ°€ 되기 μœ„ν•΄μ„œλŠ” λ‹€μŒ 절차λ₯Ό 거쳐야 ν•©λ‹ˆλ‹€:

  1. μœ„μž„λŒ€ν‘œ 등둝 μΈμ¦μ„œ 제좜
    • DRep ID, 예치금, 액컀(선택사항) 포함
  2. νŠΈλžœμž­μ…˜ 승인 ν›„ μœ„μž„λŒ€ν‘œλ‘œ 등둝 μ™„λ£Œ

μœ„μž„λŒ€ν‘œ 등둝 μΈμ¦μ„œμ—λŠ” DRep ID, 예치금, 액컀가 ν¬ν•¨λ©λ‹ˆλ‹€. 이 μΈμ¦μ„œλ₯Ό νŠΈλžœμž­μ…˜μ— ν¬ν•¨ν•˜μ—¬ μ œμΆœν•˜λ©΄ λ„€νŠΈμ›Œν¬μ—μ„œ 승인 ν›„ κ³΅μ‹μ μœΌλ‘œ μœ„μž„λŒ€ν‘œλ‘œ λ“±λ‘λ©λ‹ˆλ‹€.

μœ„μž„λŒ€ν‘œ 식별 방식

λ“±λ‘λœ μœ„μž„λŒ€ν‘œλŠ” Ed25519 검증 ν‚€ λ˜λŠ” λ„€μ΄ν‹°λΈŒ/ν”Œλ£¨νˆ¬μŠ€ 슀크립트둜 μ‹λ³„λ©λ‹ˆλ‹€. 이 자격증λͺ…μ˜ blake2b-224 ν•΄μ‹œ 값이 DRep IDκ°€ λ˜μ–΄ μœ„μž„λŒ€ν‘œλ₯Ό κ³ μœ ν•˜κ²Œ μ‹λ³„ν•©λ‹ˆλ‹€. DRep IDλ₯Ό 톡해 μœ„μž„λŒ€ν‘œμ—κ²Œ νˆ¬ν‘œκΆŒμ΄ λΆ€μ—¬λ˜κ³ , νˆ¬ν‘œ λ‚΄μ—­ 등을 좔적할 수 μžˆμŠ΅λ‹ˆλ‹€.

μœ„μž„λŒ€ν‘œ ν™œλ™μ„± μœ μ§€

μœ„μž„λŒ€ν‘œλŠ” 일정 κΈ°κ°„(drepActivity ν”„λ‘œν† μ½œ λ§€κ°œλ³€μˆ˜) λ™μ•ˆ νˆ¬ν‘œμ— μ°Έμ—¬ν•΄μ•Ό ν™œλ™μ„±μ„ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 κΈ°κ°„ λ™μ•ˆ νˆ¬ν‘œν•˜μ§€ μ•ŠμœΌλ©΄ λΉ„ν™œμ„±ν™”λ˜μ–΄ νˆ¬ν‘œ 지뢄에 ν¬ν•¨λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν™œλ™μ„±μ„ λ‹€μ‹œ μ–»μœΌλ €λ©΄ κ±°λ²„λ„ŒμŠ€ μ•‘μ…˜μ— νˆ¬ν‘œν•˜κ±°λ‚˜ μœ„μž„λŒ€ν‘œ μ—…λ°μ΄νŠΈ μΈμ¦μ„œλ₯Ό μ œμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€.

ν™œλ™μ„± μœ μ§€ κ·œμ •μ€ μœ„μž„λŒ€ν‘œκ°€ μ§€μ†μ μœΌλ‘œ κ±°λ²„λ„ŒμŠ€μ— μ°Έμ—¬ν•˜λ„λ‘ ν•˜μ—¬, μƒνƒœκ³„μ˜ ν™œλ ₯을 μœ μ§€ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€. λ˜ν•œ νˆ¬ν‘œ μ§€λΆ„ μ‚°μ • μ‹œ λΉ„ν™œμ„± μœ„μž„λŒ€ν‘œλ₯Ό μ œμ™Έν•¨μœΌλ‘œμ¨ νˆ¬ν‘œ 결과의 λŒ€ν‘œμ„±μ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

μœ„μž„λŒ€ν‘œ νˆ¬ν‘œ 방식

μœ„μž„λŒ€ν‘œμ˜ νˆ¬ν‘œ μˆ˜λŠ” μœ„μž„λ°›μ€ 지뢄에 λΉ„λ‘€ν•©λ‹ˆλ‹€. μœ„μž„λŒ€ν‘œλŠ” μ°¬μ„±, λ°˜λŒ€, 기ꢌ νˆ¬ν‘œλ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μœ„μž„λœ μ§€λΆ„μ˜ μ˜μ‚¬κ°€ μ •ν™•νžˆ λ°˜μ˜λ˜λ„λ‘ ν•©λ‹ˆλ‹€.

νˆ¬ν‘œ κ²°κ³ΌλŠ” 전체 ν™œμ„± νˆ¬ν‘œ μ§€λΆ„ 쀑 μ°¬μ„±/λ°˜λŒ€ λΉ„μœ¨λ‘œ κ²°μ •λ©λ‹ˆλ‹€. 이 κ³Όμ •μ—μ„œ μœ„μž„λŒ€ν‘œμ˜ νˆ¬ν‘œ μˆ˜κ°€ μ€‘μš”ν•œ 역할을 ν•˜κ²Œ λ©λ‹ˆλ‹€. μœ„μž„λŒ€ν‘œ μ œλ„λ₯Ό 톡해 μ§€λΆ„ λ³΄μœ μžλ“€μ˜ μ˜μ‚¬κ°€ κ³΅μ •ν•˜κ²Œ λ°˜μ˜λ˜λŠ” νˆ¬ν‘œ ꡬ쑰λ₯Ό κ°–μΆ”κ²Œ λ©λ‹ˆλ‹€.

μœ„μž„λŒ€ν‘œ μΈμ„Όν‹°λΈŒ

μœ„μž„λŒ€ν‘œμ— λŒ€ν•œ μΈμ„Όν‹°λΈŒ λͺ¨λΈμ€ 아직 연ꡬ μ€‘μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ μΉ΄λ₯΄λ‹€λ…Έ μž¬λ¬΄λΆ€μ—μ„œ 일뢀 ADAλ₯Ό μ—μŠ€ν¬λ‘œμ— λ„£μ–΄ μœ„μž„λŒ€ν‘œμ—κ²Œ 보상을 μ œκ³΅ν•˜λŠ” λ°©μ•ˆμ΄ μ œμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ μ ˆν•œ μΈμ„Όν‹°λΈŒ μ œλ„λ₯Ό λ§ˆλ ¨ν•˜λŠ” 것은 μœ„μž„λŒ€ν‘œ μ œλ„μ˜ ν™œμ„±ν™”μ™€ 지속가λŠ₯성을 μœ„ν•΄ μ€‘μš”ν•©λ‹ˆλ‹€. μΈμ„Όν‹°λΈŒλ₯Ό 톡해 유λŠ₯ν•œ μœ„μž„λŒ€ν‘œκ°€ μ°Έμ—¬ν•˜λ„λ‘ μœ λ„ν•˜κ³ , κ±°λ²„λ„ŒμŠ€ 과정에 λŒ€ν•œ 동기λ₯Ό λΆ€μ—¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

νˆ¬ν‘œ μœ„μž„

μ§€λΆ„ λ³΄μœ μžλŠ” 'νˆ¬ν‘œ μœ„μž„ μΈμ¦μ„œβ€™λ₯Ό 톡해 μžμ‹ μ˜ 지뢄을 μœ„μž„λŒ€ν‘œμ—κ²Œ μœ„μž„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 μΈμ¦μ„œμ—λŠ” μœ„μž„λŒ€ν‘œ ID와 μœ„μž„μžμ˜ μ§€λΆ„ 자격증λͺ…이 ν¬ν•¨λ©λ‹ˆλ‹€. μœ„μž„λœ μ§€λΆ„μ˜ 양에 λΉ„λ‘€ν•˜μ—¬ μœ„μž„λŒ€ν‘œμ˜ νˆ¬ν‘œ μˆ˜κ°€ κ²°μ •λ©λ‹ˆλ‹€.

νˆ¬ν‘œ μœ„μž„μ„ 톡해 μ§€λΆ„ λ³΄μœ μžλŠ” 직접 νˆ¬ν‘œν•˜μ§€ μ•Šκ³ λ„ μžμ‹ μ˜ μ˜μ‚¬λ₯Ό κ±°λ²„λ„ŒμŠ€μ— λ°˜μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ μœ„μž„λŒ€ν‘œμ—κ²Œ νˆ¬ν‘œλ₯Ό μœ„μž„ν•¨μœΌλ‘œμ¨ 효율적인 μ˜μ‚¬κ²°μ • ꡬ쑰λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

μœ„μž„λŒ€ν‘œ 퇴직

μœ„μž„λŒ€ν‘œκ°€ ν™œλ™μ„ μ€‘λ‹¨ν•˜λ €λ©΄ 'μœ„μž„λŒ€ν‘œ 퇴직 μΈμ¦μ„œβ€™λ₯Ό μ œμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€. 이 μΈμ¦μ„œμ—λŠ” μœ„μž„λŒ€ν‘œ IDκ°€ ν¬ν•¨λ˜λ©°, 제좜 μ¦‰μ‹œ μœ„μž„λŒ€ν‘œ μ§€μœ„κ°€ 사라지고 예치금이 λ°˜ν™˜λ©λ‹ˆλ‹€.

μœ„μž„λŒ€ν‘œ 퇴직 μΈμ¦μ„œλ₯Ό 톡해 μœ„μž„λŒ€ν‘œλŠ” μ–Έμ œλ“ μ§€ ν™œλ™μ„ 쀑단할 수 μžˆμŠ΅λ‹ˆλ‹€. 이 κ³Όμ •μ—μ„œ 예치금이 λ°˜ν™˜λ˜λ―€λ‘œ μœ„μž„λŒ€ν‘œμ˜ μž¬μ‚°κΆŒμ΄ 보μž₯λ©λ‹ˆλ‹€. ν‡΄μ§ν•œ μœ„μž„λŒ€ν‘œμ—κ²Œ μœ„μž„λœ 지뢄은 λ‹€λ₯Έ μœ„μž„λŒ€ν‘œλ‚˜ νˆ¬ν‘œ μ˜΅μ…˜μœΌλ‘œ μž¬μœ„μž„λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ CIP-1694μ—μ„œ μ •μ˜ν•˜κ³  μžˆλŠ” μœ„μž„λŒ€ν‘œμ˜ μ—­ν• , μžκ²©μš”κ±΄, 등둝/퇴직 절차, ν™œλ™μ„± μœ μ§€, νˆ¬ν‘œ 방식, μΈμ„Όν‹°λΈŒ λ“± μœ„μž„λŒ€ν‘œ μ œλ„ μ „λ°˜μ— λŒ€ν•΄ μ‚΄νŽ΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

κ²°λ‘ 

μœ„μž„λŒ€ν‘œ μ œλ„λŠ” μ§€λΆ„ λ³΄μœ μžλ“€μ΄ κ°„μ ‘μ μœΌλ‘œ μΉ΄λ₯΄λ‹€λ…Έ κ±°λ²„λ„ŒμŠ€μ— μ°Έμ—¬ν•  수 μžˆλŠ” 효율적인 ꡬ쑰λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. μœ„μž„λŒ€ν‘œλŠ” μœ„μž„λ°›μ€ 지뢄을 λ°”νƒ•μœΌλ‘œ μ€‘μš”ν•œ μ˜μ‚¬κ²°μ •μ„ ν•˜λ©°, 정기적인 νˆ¬ν‘œ μ°Έμ—¬λ₯Ό 톡해 ν™œλ™μ„±μ„ μœ μ§€ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ œλ„λŠ” μ§€λΆ„ λ³΄μœ μžλ“€μ˜ μ°Έμ—¬λ₯Ό μœ λ„ν•˜κ³ , μΉ΄λ₯΄λ‹€λ…Έ μƒνƒœκ³„μ˜ 지속 κ°€λŠ₯ν•œ λ°œμ „μ„ 도λͺ¨ν•©λ‹ˆλ‹€. λ˜ν•œ, μ μ ˆν•œ μΈμ„Όν‹°λΈŒ λͺ¨λΈμ„ 톡해 유λŠ₯ν•œ μœ„μž„λŒ€ν‘œμ˜ μ°Έμ—¬λ₯Ό μ΄‰μ§„ν•¨μœΌλ‘œμ¨ κ±°λ²„λ„ŒμŠ€μ˜ νš¨μœ¨μ„±κ³Ό 곡정성을 높일 수 μžˆμŠ΅λ‹ˆλ‹€.


* μ°Έμ‘°:

  1. CIPs/CIP-1694/README.md at master Β· cardano-foundation/CIPs Β· GitHub