본문으둜 κ±΄λ„ˆλ›°κΈ°

계정

이 μ±•ν„°μ—μ„œλŠ” XRP Ledger의 계정과 지갑을 μƒμ„±ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” 방법을 μ†Œκ°œν•©λ‹ˆλ‹€.

XRP Ledger μ•”ν˜Έν™” 방식​

XRP Ledger의 계정은 λ‹€λ₯Έ λΈ”λ‘μ²΄μΈμ—μ„œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ μ•”ν˜Έν•™μ  원리λ₯Ό 기반으둜 ν•©λ‹ˆλ‹€. μ΄λŠ” κ³„μ •μ˜ μ£Όμ†Œλ₯Ό μƒμ„±ν•˜κ³ , νŠΈλžœμž­μ…˜μ„ μ„œλͺ…ν•˜κ³ , κ³„μ •μ˜ μ†Œμœ κΆŒμ„ 증λͺ…ν•˜λŠ” λ“±μ˜ μž‘μ—…μ— μ‚¬μš©λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μž‘μ—…μ€ λͺ¨λ‘ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μ„ 톡해 이루어지며, 이 μ•Œκ³ λ¦¬μ¦˜μ€ λŒ€μΉ­ ν‚€ μ•”ν˜Έν™”μ™€ λΉ„λŒ€μΉ­ ν‚€ μ•”ν˜Έν™” 두 κ°€μ§€λ‘œ κ΅¬λΆ„λ©λ‹ˆλ‹€. XRP Ledgerμ—μ„œλŠ” λΉ„λŒ€μΉ­ ν‚€ μ•”ν˜Έν™”λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

λŒ€μΉ­ ν‚€ μ•Œκ³ λ¦¬μ¦˜β€‹

λŒ€μΉ­ ν‚€ μ•Œκ³ λ¦¬μ¦˜μ€ μ•”ν˜Έν™”μ™€ λ³΅ν˜Έν™”μ— 같은 ν‚€λ₯Ό μ‚¬μš©ν•˜λŠ” μ•”ν˜Έν™” λ°©μ‹μž…λ‹ˆλ‹€. 이 ν‚€λŠ” μ•”ν˜Έν™”λœ 데이터λ₯Ό λ³΅ν˜Έν™”ν•˜λŠ” 데 μ‚¬μš©λ˜λ©°, 이 ν‚€λ₯Ό μ•Œμ§€ λͺ»ν•˜λŠ” μ‚¬λžŒμ€ μ•”ν˜Έν™”λœ 데이터λ₯Ό λ³΅ν˜Έν™”ν•  수 μ—†μŠ΅λ‹ˆλ‹€. λŒ€μΉ­ ν‚€ μ•”ν˜Έν™”μ˜ κ°€μž₯ 큰 λ¬Έμ œμ μ€ ν‚€ κ΅ν™˜ λ¬Έμ œμž…λ‹ˆλ‹€. μ•”ν˜Έν™”μ™€ λ³΅ν˜Έν™”μ— 같은 ν‚€λ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ, 이 ν‚€λ₯Ό μ•ˆμ „ν•˜κ²Œ κ΅ν™˜ν•΄μ•Ό ν•˜λŠ” λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

λΉ„λŒ€μΉ­ ν‚€ μ•Œκ³ λ¦¬μ¦˜β€‹

λΉ„λŒ€μΉ­ ν‚€ μ•Œκ³ λ¦¬μ¦˜, λ˜λŠ” 퍼블릭 ν‚€ μ•”ν˜Έν™”λŠ” μ•”ν˜Έν™”μ™€ λ³΅ν˜Έν™”μ— μ‚¬μš©λ˜λŠ” 두 개의 ν‚€κ°€ μ„œλ‘œ λ‹€λ₯Έ μ•”ν˜Έν™” λ°©μ‹μž…λ‹ˆλ‹€. 이 두 ν‚€ 쀑 ν•˜λ‚˜λŠ” 곡개 ν‚€(public key), λ‹€λ₯Έ ν•˜λ‚˜λŠ” λΉ„λ°€ ν‚€(private key) λ˜λŠ” 개인 킀라고 ν•©λ‹ˆλ‹€. 이듀 ν‚€λŠ” 쌍으둜 μž‘λ™ν•˜λ©°, ν•œ ν‚€λ‘œ μ•”ν˜Έν™”λœ λ°μ΄ν„°λŠ” 였직 그에 μƒμ‘ν•˜λŠ” λ‹€λ₯Έ ν‚€λ‘œλ§Œ λ³΅ν˜Έν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λΉ„λŒ€μΉ­ ν‚€ μ•”ν˜Έν™”μ˜ κ°€μž₯ 큰 μž₯점은 ν‚€ κ΅ν™˜ 문제λ₯Ό ν•΄κ²°ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. λŒ€μΉ­ ν‚€ μ•”ν˜Έν™”μ—μ„œλŠ” μ•”ν˜Έν™”μ™€ λ³΅ν˜Έν™”μ— 같은 ν‚€λ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ, 이 ν‚€λ₯Ό μ•ˆμ „ν•˜κ²Œ κ΅ν™˜ν•΄μ•Ό ν•˜λŠ” λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ λΉ„λŒ€μΉ­ ν‚€ μ•”ν˜Έν™”μ—μ„œλŠ” 곡개 ν‚€λ₯Ό 자유둭게 배포할 수 μžˆμœΌλ―€λ‘œ, μ΄λŸ¬ν•œ λ¬Έμ œκ°€ λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, Aκ°€ Bμ—κ²Œ μ•”ν˜Έν™”λœ λ©”μ‹œμ§€λ₯Ό 보내렀 ν•  λ•Œ, AλŠ” B의 곡개 ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ λ©”μ‹œμ§€λ₯Ό μ•”ν˜Έν™”ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ μ•”ν˜Έν™”λœ λ©”μ‹œμ§€λŠ” B의 λΉ„λ°€ ν‚€λ‘œλ§Œ λ³΅ν˜Έν™”ν•  수 μžˆμœΌλ―€λ‘œ, λ©”μ‹œμ§€μ˜ μ•ˆμ „μ„±μ΄ 보μž₯λ©λ‹ˆλ‹€.

XRP Ledger 계정 생성 원리​

XRP Ledger의 λΉ„λŒ€μΉ­ ν‚€ 생성은 Elliptic Curve Cryptography(ECC) κΈ°λ°˜μž…λ‹ˆλ‹€. μ΄λŠ” 맀우 큰 두 개의 μ†Œμˆ˜μ˜ 곱을 μΈμˆ˜λΆ„ν•΄ν•˜λŠ” 것이 사싀상 λΆˆκ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— κ°•λ ₯ν•œ λ³΄μ•ˆμ„ μ œκ³΅ν•©λ‹ˆλ‹€.

XRP Ledgerμ—μ„œμ˜ ν‚€ 생성은 λ‹€μŒκ³Ό 같은 μ›λ¦¬λ‘œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.

μ—¬κΈ°μ—μ„œ μ‹œλ“œ, λΉ„κ³΅κ°œ ν‚€λŠ” νƒ€μΈμ—κ²Œ λ…ΈμΆœλ˜μ–΄μ„œλŠ” μ•ˆλ˜κ³  λ³΄μ•ˆμ„ μœ„ν•΄ μ•ˆμ „ν•˜κ²Œ λ³΄κ΄€λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 그에 λ°˜ν•΄ 곡개 ν‚€, 계정 ID, μ£Όμ†ŒλŠ” νƒ€μΈμ—κ²Œ λ…ΈμΆœλ˜μ–΄λ„ μ•ˆμ „ν•©λ‹ˆλ‹€.

ν‚€ 생성 과정​

  1. μ‹œλ“œ 생성

    μ‚¬μš©μžλŠ” μž„μ˜μ˜ μ‹œλ“œλ₯Ό μ„ νƒν•˜κ±°λ‚˜ μƒμ„±ν•©λ‹ˆλ‹€. XRP Ledgerμ—μ„œλŠ” μ•”ν˜Έν•™μ μœΌλ‘œ μ•ˆμ „ν•œ λ‚œμˆ˜ 생성기λ₯Ό μ‚¬μš©ν•΄ 16λ°”μ΄νŠΈμ˜ μž„μ˜μ˜ 데이터λ₯Ό μƒμ„±ν•΄μ„œ μ›μ‹œ μ‹œλ“œλ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€. μ›μ‹œ μ‹œλ“œλŠ” Base58Check 인코딩을 톡해 λ‹€μ‹œ s둜 μ‹œμž‘ν•˜λŠ” 29자리의 λ¬Έμžμ—΄λ‘œ λ³€ν™˜λ©λ‹ˆλ‹€.

    from xrpl.core.keypairs import generate_seed

    # Generate a seed
    seed = generate_seed()

    # Print seed
    print(f"seed: {seed}")
    seed: sEdTAmewybtGPwEqGaCGC2KBBJN77gV
  2. λΉ„κ³΅κ°œ ν‚€ 생성

    μ•žμ—μ„œ μƒμ„±ν•œ μ›μ‹œ μ‹œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 타원곑선 DSA (Elliptic Curve Digital Signature Algorithm, ECDSA)λ₯Ό 톡해 λΉ„κ³΅κ°œ ν‚€λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. λΉ„κ³΅κ°œ ν‚€λ₯Ό μƒμ„±ν•˜λŠ” 과정은 νƒ€μ›κ³‘μ„ μ˜ κΈ°λ³Έ 점(G)을 μ›μ‹œ μ‹œλ“œ(s)번 κ³±ν•˜λŠ” κ²ƒμœΌλ‘œ, 이 연산을 톡해 타원곑선 μœ„μ˜ μƒˆλ‘œμš΄ 점(P)이 μ–»μ–΄μ§€κ²Œ λ©λ‹ˆλ‹€. 즉, λΉ„κ³΅κ°œ ν‚€λŠ” 기본적으둜 타원곑선 μœ„μ˜ ν•œ μ μž…λ‹ˆλ‹€.

  3. 곡개 ν‚€ 생성

    λΉ„κ³΅κ°œ ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ 곡개 ν‚€λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. 곡개 ν‚€λŠ” λΉ„κ³΅κ°œ ν‚€(타원곑선 μœ„μ˜ 점)에 νƒ€μ›κ³‘μ„ μ˜ κΈ°λ³Έ 점을 κ³±ν•˜μ—¬ μ–»μ–΄μ§‘λ‹ˆλ‹€. μ΄λ ‡κ²Œ μƒμ„±λœ 곡개 ν‚€λŠ” λΉ„λ°€ ν‚€λ₯Ό μ•Œμ§€ λͺ»ν•˜λŠ” λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ λ©”μ‹œμ§€λ₯Ό μ•”ν˜Έν™”ν•˜κ±°λ‚˜ 디지털 μ„œλͺ…을 κ²€μ¦ν•˜λŠ” 데 μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.

    from xrpl.core.keypairs import derive_keypair

    # Derive a keypair from a seed
    public_key, private_key = derive_keypair("sEdTAmewybtGPwEqGaCGC2KBBJN77gV")

    print(f"public key: {public_key}\nprivate key: {private_key}")
    public key: EDBB2431197ECED939BE4552A583A5D060F5BC0AF9BD5D480A34BFD6787FAE83B1
    private key: EDD3FDF904528CC68CABB645BE19BFB34FE1854D8DD52214AE516338354E3A7F53
  4. 계정 ID 생성

    곡개 ν‚€λŠ” λ‹€μ‹œ 계정 ID둜 ν•΄μ‹œλ©λ‹ˆλ‹€. 이 계정 IDλŠ” 곡개 ν‚€μ˜ SHA-256 ν•΄μ‹œμ΄λ©°, 이 ν•΄μ‹œμ˜ 첫 20λ°”μ΄νŠΈλ§Œ μ‚¬μš©λ©λ‹ˆλ‹€.

  5. XRP Ledger μ£Όμ†Œ 생성

    계정 IDλŠ” μ΅œμ’…μ μœΌλ‘œ XRP Ledger μ£Όμ†Œλ‘œ λ³€ν™˜λ©λ‹ˆλ‹€. 이 λ³€ν™˜μ€ Base58Check 인코딩을 μ‚¬μš©ν•˜λ©°, μ΄λŠ” μ£Όμ†Œμ˜ 첫 κΈ€μžκ°€ 'r'둜 μ‹œμž‘ν•˜κ²Œ λ§Œλ“­λ‹ˆλ‹€. 이 인코딩 방식은 였λ₯˜ 감지 κΈ°λŠ₯을 λ‚΄μž₯ν•˜κ³  μžˆμ–΄, μ£Όμ†Œλ₯Ό 잘λͺ» μž…λ ₯ν–ˆμ„ λ•Œ 이λ₯Ό 감지할 수 있게 ν•©λ‹ˆλ‹€.

    from xrpl.core.keypairs import derive_classic_address

    address = derive_classic_address(
    public_key="EDBB2431197ECED939BE4552A583A5D060F5BC0AF9BD5D480A34BFD6787FAE83B1"
    )

    print(f"address: {address}")
    address: rpifos5x2NQXRW1fxc2uK5WuuZtoWdDh4L

μ΄λŸ¬ν•œ 과정을 톡해 XRP Ledgerμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” 지갑이 μƒμ„±λ©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ‹€μ œ 지갑 생성 μ‹œμ—λŠ” 직접 이 과정을 따라할 ν•„μš”λŠ” μ—†κ³ , λͺ¨λ“  과정이 μžλ™μœΌλ‘œ μ‚¬μš©μžμ˜ κΈ°κΈ°μ—μ„œ μ•ˆμ „ν•˜κ²Œ μ΄λ£¨μ–΄μ§€κ²Œ λ©λ‹ˆλ‹€.

지갑 ν™œμ„±ν™”β€‹

μ•žμ—μ„œ λΉ„κ³΅κ°œ 킀와 곡개 ν‚€, 계정 ID, μ£Όμ†Œλ₯Ό μƒμ„±ν–ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 그것듀을 μƒμ„±ν•œ κ²ƒλ§ŒμœΌλ‘œ 아직은 XRP Ledgerμ—μ„œ 거래λ₯Ό ν•  수 μ—†μŠ΅λ‹ˆλ‹€. XRP Ledgerμ—μ„œ 거래λ₯Ό ν•  수 μžˆλ„λ‘ 지갑(μ£Όμ†Œ)λ₯Ό ν™œμ„±ν™” μ‹œν‚€λ €λ©΄, ν•΄λ‹Ή μ§€κ°‘μ˜ μ£Όμ†Œλ‘œ μ΅œμ†Œ 10 XRPλ₯Ό 전솑해야 ν•©λ‹ˆλ‹€. 이것은 XRP Ledger의 ReservesλΌλŠ” μ •μ±…μœΌλ‘œ 계정이 μ΅œμ†Œ 10 XRP 이상을 λ³΄μœ ν•˜κ³  μžˆμ–΄μ•Όλ§Œ 계정이 ν™œμ„±ν™”λ˜μ–΄ 거래λ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” 슀팸 κ³„μ •μ΄λ‚˜ μ•…μ˜μ μΈ 계정 이용으둜 μΈν•œ κ³ΌλΆ€ν™”λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•œ λͺ©μ μž…λ‹ˆλ‹€.

Destination Tag와 X-address​

XRP LedgerλŠ” λΆ„μ‚°ν˜• 디지털 μžμ‚° λ„€νŠΈμ›Œν¬λ‘œ, Ripple의 디지털 토큰인 XRPλ₯Ό ν™œμš©ν•˜λŠ” λ§Žμ€ κΈ°κ΄€κ³Ό 개인이 ν”Œλž«νΌμ„ μ‚¬μš©ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜, μ΄λŸ¬ν•œ λͺ¨λ“  μ‚¬μš©μžμ—κ²Œ κ³ μœ ν•œ μ£Όμ†Œλ₯Ό μ œκ³΅ν•˜λŠ” 것은 맀우 λΉ„νš¨μœ¨μ μΌ 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ XRP LedgerλŠ” Destination TagλΌλŠ” νŠΉλ³„ν•œ κ°œλ…μ„ λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€.

Destination TagλŠ” μ •ν™•ν•˜κ²Œ λ§ν•˜λ©΄ 고유의 숫자 μ‹λ³„μžλ‘œ, νŠΉμ • μ‚¬μš©μžλ₯Ό μ‹λ³„ν•˜κ³  거래λ₯Ό μΆ”μ ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. μ΄λŠ” 특히 λŒ€ν˜• κ±°λž˜μ†Œλ‚˜ μ›”λ › μ„œλΉ„μŠ€μ™€ 같이 μ—¬λŸ¬ μ‚¬μš©μžκ°€ λ™μΌν•œ XRP μ£Όμ†Œλ₯Ό κ³΅μœ ν•˜λŠ” κ²½μš°μ— μœ μš©ν•©λ‹ˆλ‹€. Destination Tagλ₯Ό 톡해, μ„œλΉ„μŠ€ μ œκ³΅μžλŠ” μ‚¬μš©μž κ°„μ˜ 거래λ₯Ό λ”μš± μ •ν™•ν•˜κ²Œ κ΅¬λΆ„ν•˜κ³  관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, κ±°λž˜μ†Œ Xκ°€ 단일 XRP μ£Όμ†Œλ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ¨λ“  μ‚¬μš©μžμ˜ μžκΈˆμ„ κ΄€λ¦¬ν•œλ‹€κ³  κ°€μ •ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 이제 μ‚¬μš©μž A와 μ‚¬μš©μž Bκ°€ λͺ¨λ‘ 이 κ±°λž˜μ†Œλ‘œ XRPλ₯Ό μž…κΈˆν•˜λ €κ³  ν•©λ‹ˆλ‹€. 두 μ‚¬μš©μžμ˜ μž…κΈˆμ„ μ–΄λ–»κ²Œ κ΅¬λΆ„ν• κΉŒμš”? μ—¬κΈ°μ„œ Destination Tagκ°€ μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€. μ‚¬μš©μž AλŠ” Destination Tag 12345λ₯Ό λ°›κ³ , μ‚¬μš©μž BλŠ” 67890을 λ°›μŠ΅λ‹ˆλ‹€. 이제 두 μ‚¬μš©μžκ°€ λ™μΌν•œ μ£Όμ†Œλ‘œ μž…κΈˆν•  λ•Œ, κ±°λž˜μ†ŒλŠ” Destination Tagλ₯Ό 톡해 λˆ„κ°€ μž…κΈˆν–ˆλŠ”μ§€ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

이와 같이, Destination TagλŠ” XRP Ledger의 νš¨μœ¨μ„±κ³Ό 정확성을 ν–₯μƒμ‹œν‚€λŠ” μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€. μ΄λŠ” μ‚¬μš©μžκ°€ μžμ‹ μ˜ 거래λ₯Ό μ‰½κ²Œ μΆ”μ ν•˜κ³ , μ‚¬μš©μžκ°„μ˜ κ±°λž˜κ°€ ν˜Όλž€μŠ€λŸ½κ²Œ μ–½νžˆλŠ” 것을 λ°©μ§€ν•˜λ©°, κ±°λž˜μ†Œλ‚˜ μ›”λ › μ„œλΉ„μŠ€κ°€ 효과적으둜 μžκΈˆμ„ κ΄€λ¦¬ν•˜κ²Œ λ•μŠ΅λ‹ˆλ‹€.

X-addressλŠ” XRP Ledger의 μ£Όμ†Œ μ²΄κ³„μ˜ ν•œ λΆ€λΆ„μœΌλ‘œ, μ£Όμ†Œμ™€ Destination Tagλ₯Ό ν•©μΉœ μƒˆλ‘œμš΄ ν˜•μ‹μ˜ μ£Όμ†Œμž…λ‹ˆλ‹€. 이 μ£Όμ†Œ ν˜•μ‹μ€ Destination Tagλ₯Ό λ‚΄μž₯ν•˜κ³  μžˆμ–΄, μ‚¬μš©μžκ°€ μ£Όμ†Œμ™€ Destination Tagλ₯Ό λ³„λ„λ‘œ μž…λ ₯ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. 이둜 인해 μ‚¬μš©μžμ˜ μ‹€μˆ˜λ₯Ό 쀄일 수 있으며, νŽΈλ¦¬ν•˜κ³  μ•ˆμ „ν•œ XRP Ledger μ‚¬μš© κ²½ν—˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

μ•”ν˜Έν™” ν‚€ ν™œμš© 방식​

μœ„μ—μ„œ μ–ΈκΈ‰λœ 과정을 톡해 μƒμ„±λœ μ•”ν˜Έν™” 킀듀은 XRP Ledgerμ—μ„œ 맀우 λ‹€μ–‘ν•˜κ²Œ ν™œμš©λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν‚€λ“€μ˜ μ£Όμš” ν™œμš© 방식은 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

  • 디지털 μ„œλͺ…(Digital Signature Algorithm, DSA)

    λΉ„κ³΅κ°œ ν‚€λ₯Ό μ‚¬μš©ν•΄ λ©”μ‹œμ§€λ₯Ό 'μ„œλͺ…'ν•˜κ³ , 곡개 ν‚€λ₯Ό μ‚¬μš©ν•΄ μ„œλͺ…을 κ²€μ¦ν•©λ‹ˆλ‹€. 이 과정은 λ‹€μŒκ³Ό 같이 μ§„ν–‰λ©λ‹ˆλ‹€.

    1. μ„œλͺ… 생성: 거래λ₯Ό μƒμ„±ν•œ ν›„, ν•΄λ‹Ή 거래λ₯Ό λΉ„κ³΅κ°œ ν‚€λ‘œ μ„œλͺ…ν•©λ‹ˆλ‹€. μ΄λŠ” μΌμ’…μ˜ μ•”ν˜Έν™” μž‘μ—…μœΌλ‘œ λ³Ό 수 있으며, 이 μž‘μ—…μ„ 거치면 μ„œλͺ…λœ κ±°λž˜κ°€ μƒμ„±λ©λ‹ˆλ‹€. λΉ„κ³΅κ°œ ν‚€λŠ” μ„œλͺ… ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ‚¬μš©λ˜λ©°, 이 ν‚€λŠ” 거래λ₯Ό μƒμ„±ν•œ μ‚¬μš©μžλ§Œμ΄ μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 거래의 무결성이 보μž₯되며, κ±°λž˜κ°€ λ³€κ²½λ˜μ§€ μ•Šμ•˜μŒμ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

    2. μ„œλͺ… 검증: 거래λ₯Ό μˆ˜μ‹ ν•œ 츑은 곡개 ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ μ„œλͺ…을 κ²€μ¦ν•©λ‹ˆλ‹€. 이 κ³Όμ •μ—μ„œλŠ” κ±°λž˜μ™€ ν•¨κ»˜ μ „λ‹¬λœ 디지털 μ„œλͺ…κ³Ό μ›λž˜ 거래λ₯Ό λΉ„κ΅ν•©λ‹ˆλ‹€. 곡개 ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ 디지털 μ„œλͺ…을 'λ³΅ν˜Έν™”'ν•˜κ³ , λ³΅ν˜Έν™”λœ λ‚΄μš©μ΄ μ›λž˜μ˜ 거래 λ‚΄μš©κ³Ό μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. λ§Œμ•½ μΌμΉ˜ν•œλ‹€λ©΄, μ΄λŠ” κ±°λž˜κ°€ 쀑간에 λ³€κ²½λ˜μ§€ μ•Šμ•˜μœΌλ©°, ν•΄λ‹Ή λΉ„κ³΅κ°œ ν‚€μ˜ μ†Œμœ μžκ°€ 거래λ₯Ό μƒμ„±ν•˜μ˜€μŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

    μ΄λ ‡κ²Œ λΉ„κ³΅κ°œ 킀와 곡개 ν‚€λ₯Ό ν™œμš©ν•œ 디지털 μ„œλͺ… μ‹œμŠ€ν…œμ€ μ „μž κ±°λž˜μ—μ„œμ˜ 사기λ₯Ό λ°©μ§€ν•˜κ³ , μ •λ³΄μ˜ 무결성을 보μž₯ν•˜λ©°, 디지털 μ„Έκ³„μ—μ„œμ˜ μ‹ λ’°λ₯Ό κ΅¬μΆ•ν•˜λŠ”λ° 맀우 μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€. XRP Ledgerμ—μ„œλ„ μ΄λŸ¬ν•œ 원리가 μ μš©λ˜μ–΄, 거래의 μ•ˆμ „μ„±κ³Ό λ³΄μ•ˆμ„ 보μž₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

  • 계정 μ†Œμœ κΆŒ 증λͺ…

    μ•”ν˜Έν™” ν‚€λŠ” κ³„μ •μ˜ μ†Œμœ κΆŒμ„ 증λͺ…ν•˜λŠ” 데에도 μ‚¬μš©λ©λ‹ˆλ‹€. 각 XRP Ledger 계정은 곡개 킀와 그에 μ—°κ²°λœ λΉ„κ³΅κ°œ ν‚€λ‘œ μƒμ„±λ©λ‹ˆλ‹€. 이 λΉ„κ³΅κ°œ ν‚€λŠ” κ³„μ •μ˜ μ†Œμœ μžλ§Œμ΄ μ•Œκ³  μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 이 λΉ„κ³΅κ°œ ν‚€λ‘œ μƒμ„±λœ 디지털 μ„œλͺ…은 곡개 ν‚€λ₯Ό 톡해 검증 κ°€λŠ₯ν•˜λ©°, 이λ₯Ό 톡해 νŠΉμ • κ³„μ •μ˜ μ†Œμœ κΆŒμ„ 증λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 즉, λ§Œμ•½ μ‚¬μš©μžκ°€ κ³„μ •μ˜ λΉ„κ³΅κ°œ ν‚€λ‘œ 거래λ₯Ό μ„œλͺ…ν•  수 μžˆλ‹€λ©΄, κ·Έ μ‚¬μš©μžλŠ” ν•΄λ‹Ή κ³„μ •μ˜ 합법적 μ†Œμœ μžμž„μ„ 증λͺ…ν•œ 것이 λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ μ•”ν˜Έν™” ν‚€λ₯Ό μ‚¬μš©ν•˜λŠ” 것은 κ³„μ •μ˜ μ†Œμœ κΆŒμ„ 신원을 증λͺ…ν•˜λŠ” κ°•λ ₯ν•œ 도ꡬ가 λ©λ‹ˆλ‹€.

μ•ˆμ „ν•œ 지갑 보관​

  • μ•ˆμ „ν•œ 온라인 지갑 μ‚¬μš©

    XUMM은 XRP Ledger 지갑을 μƒμ„±ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” λͺ¨λ°”일 지갑 μ•±μž…λ‹ˆλ‹€. XRPL Labs νŒ€μ— μ˜ν•΄ λ””μžμΈλ˜κ³  κ°œλ°œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. XUMM은 ν‚€λ₯Ό μ•ˆμ „ν•˜κ²Œ λ³΄κ΄€ν•˜κ³ , ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ 거래λ₯Ό μ„œλͺ…ν•˜κ³ , ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ 계정을 μ œμ–΄ν•˜λŠ” λͺ¨λ“  κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 앱은 μ‚¬μš©μž μΉœν™”μ μΈ μΈν„°νŽ˜μ΄μŠ€μ™€ κ°•λ ₯ν•œ λ³΄μ•ˆ κΈ°λŠ₯을 κ²°ν•©ν•˜μ—¬ μ‚¬μš©μžκ°€ μžμ‹ μ˜ μžμ‚°μ„ μ•ˆμ „ν•˜κ²Œ 관리할 수 있게 ν•΄μ€λ‹ˆλ‹€. λ˜ν•œ λͺ¨λ°”일 μ•±μ΄μ§€λ§Œ, QR μ½”λ“œ μŠ€μΊ” κΈ°λŠ₯을 λ„μž…ν•΄ νŽΈν•˜κ³  μ‰½κ²Œ λ°μŠ€ν¬ν†±μ—μ„œλ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    XUMM의 λ³΄μ•ˆ μ²΄κ³„λŠ” λ‹€μŒκ³Ό 같은 μ£Όμš” μš”μ†Œλ“€μ„ ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€:

    • μ•”ν˜Έν™”: XUMM은 μ‚¬μš©μžμ˜ λΉ„κ³΅κ°œ ν‚€λ₯Ό μ•”ν˜Έν™”ν•˜μ—¬ 둜컬 μŠ€ν† λ¦¬μ§€μ— μ•ˆμ „ν•˜κ²Œ λ³΄κ΄€ν•©λ‹ˆλ‹€. 이 ν‚€λŠ” μ•”ν˜Έν™”λ˜μ–΄ μžˆμœΌλ―€λ‘œ, μ‹€μ œ ν‚€ 값을 μ–»μœΌλ €λ©΄ μ‚¬μš©μžμ˜ λΉ„λ°€λ²ˆν˜Έλ‚˜ PIN μ½”λ“œλ₯Ό μ•Œμ•„μ•Ό ν•©λ‹ˆλ‹€.

    • μ‚¬μš©μž 인증: XUMM은 μ‚¬μš©μžκ°€ μžμ‹ μ˜ 지갑에 μ ‘κ·Όν•˜κ±°λ‚˜ νŠΈλžœμž­μ…˜μ„ μ„œλͺ…ν•  λ•Œλ§ˆλ‹€ λΉ„λ°€λ²ˆν˜Έλ‚˜ PIN μ½”λ“œλ₯Ό μž…λ ₯ν•˜λ„λ‘ μš”κ΅¬ν•©λ‹ˆλ‹€. μ΄λŠ” λΉ„κ³΅κ°œ 킀에 λŒ€ν•œ 접근을 λ³΄ν˜Έν•˜κ³ , λ¬΄λ‹¨μœΌλ‘œ κ±°λž˜κ°€ λ°œμƒν•˜λŠ” 것을 λ°©μ§€ν•˜λŠ” 데 μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.

    • κ°œμΈμ •λ³΄ 보호: XUMM은 μ‚¬μš©μžμ˜ κ°œμΈμ •λ³΄μ™€ 금육 정보λ₯Ό μ‘΄μ€‘ν•©λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ μ‚¬μš©μžμ˜ 지갑 μ£Όμ†Œλ‚˜ νŠΈλžœμž­μ…˜ 정보λ₯Ό μˆ˜μ§‘ν•˜μ§€ μ•ŠμœΌλ©°, μ„œλ²„μ— μ €μž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ, XUMM은 ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ λ°μ΄ν„°λ§Œμ„ μˆ˜μ§‘ν•˜κ³ , 이λ₯Ό μ•ˆμ „ν•˜κ²Œ μ•”ν˜Έν™”ν•˜μ—¬ μ €μž₯ν•©λ‹ˆλ‹€.

    • 디지털 μ„œλͺ…: XUMM은 μ‚¬μš©μžμ˜ λΉ„κ³΅κ°œ ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ XRP Ledger의 νŠΈλžœμž­μ…˜μ„ μ„œλͺ…ν•©λ‹ˆλ‹€. 이 μ„œλͺ… 과정은 μ‚¬μš©μžμ˜ κΈ°κΈ°μ—μ„œ 직접 이루어지며, λΉ„κ³΅κ°œ ν‚€κ°€ μ‚¬μš©μžμ˜ κΈ°κΈ°λ₯Ό λ²—μ–΄λ‚˜μ§€ μ•Šλ„λ‘ 보μž₯ν•©λ‹ˆλ‹€.

  • ν•˜λ“œμ›¨μ–΄ 지갑 μ‚¬μš©

    ν•˜λ“œμ›¨μ–΄ 지갑은 μ•”ν˜Έν™”νλ₯Ό λ³΄κ΄€ν•˜λŠ”λ° κ°€μž₯ μ•ˆμ „ν•œ 방법 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. 이듀은 인터넷에 μ—°κ²°λ˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ ν‚€λ₯Ό μ•ˆμ „ν•˜κ²Œ λ³΄κ΄€ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” 물리적인 μž₯μΉ˜μž…λ‹ˆλ‹€. 이런 λ°©μ‹μœΌλ‘œ, ν•˜λ“œμ›¨μ–΄ 지갑은 온라인 ν•΄ν‚Ή κ³΅κ²©μœΌλ‘œλΆ€ν„° μ‚¬μš©μžμ˜ μžμ‚°μ„ λ³΄ν˜Έν•΄ μ€λ‹ˆλ‹€. νŠΈλ ˆμ €(Trezor)와 λ ˆμ €(Ledger)와 같은 λΈŒλžœλ“œλŠ” 이 λΆ„μ•Όμ—μ„œ κ°€μž₯ 잘 μ•Œλ €μ Έ μžˆμŠ΅λ‹ˆλ‹€. 이듀은 λͺ¨λ‘ ν™•λ³΄λœ ν™˜κ²½μ—μ„œ 개인 ν‚€λ₯Ό μƒμ„±ν•˜κ³ , κ·Έ ν‚€κ°€ μž₯치 λ°–μœΌλ‘œ λ‚˜κ°€μ§€ μ•Šκ²Œ ν•˜λŠ” λ“±μ˜ λ³΄μ•ˆ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

  • λΉ„λ°€λ²ˆν˜Έ κ΄€λ¦¬μž μ‚¬μš©

    λΉ„λ°€λ²ˆν˜Έ κ΄€λ¦¬μžλŠ” μ•”ν˜Έν™”ν μ‚¬μš©μžμ—κ²Œ 맀우 μœ μš©ν•œ 도ꡬ가 될 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ„œλΉ„μŠ€λŠ” μ‚¬μš©μžμ˜ ν‚€λ₯Ό μ•ˆμ „ν•˜κ²Œ λ³΄κ΄€ν•˜λ©°, 그것듀을 μ•”ν˜Έν™”ν•˜μ—¬ μ €μž₯ν•©λ‹ˆλ‹€. λ˜ν•œ μ‚¬μš©μžκ°€ ν•„μš”λ‘œ ν•  λ•Œλ§ˆλ‹€ μ•”ν˜Έν™”λœ ν‚€λ₯Ό λ³΅ν˜Έν™”ν•  수 있게 ν•΄μ€λ‹ˆλ‹€. κ·Έ κ²°κ³Ό, μ‚¬μš©μžλŠ” λ³΅μž‘ν•œ λΉ„λ°€λ²ˆν˜Έλ₯Ό κΈ°μ–΅ν•  ν•„μš” 없이 λͺ¨λ“  μžμ‚°μ— λŒ€ν•œ 접근을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λΉ„λ°€λ²ˆν˜Έ κ΄€λ¦¬μžλŠ” κ°•λ ₯ν•œ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžμ˜ 정보λ₯Ό λ³΄ν˜Έν•˜λ―€λ‘œ, 해컀가 κ·Έ 정보λ₯Ό μ΄μš©ν•˜λŠ” 것은 극히 μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

Regular key와 Master key​

XRP Ledger (XRPL)μ—μ„œ Master Key와 Regular KeyλŠ” λͺ¨λ‘ 거래λ₯Ό μ„œλͺ…ν•  수 μžˆλŠ” κΆŒν•œμ„ κ°€μ§€μ§€λ§Œ, κ·Έ μš©λ„μ™€ 관리 λ°©μ‹μ—λŠ” 차이가 μžˆμŠ΅λ‹ˆλ‹€.

  • Master Key

    Master KeyλŠ” 계정을 생성할 λ•Œ μƒμ„±λ˜λ©°, 계정 μ„€μ • λ³€κ²½, 거래 μ„œλͺ… λ“± κ³„μ •μ˜ λͺ¨λ“  κΈ°λŠ₯을 ν†΅μ œν•  수 μžˆλŠ” κΆŒν•œμ„ κ°€μ§‘λ‹ˆλ‹€. λ˜ν•œ, 계정 μ†Œμœ κΆŒμ„ 증λͺ…ν•˜λŠ” μœ μΌν•œ λ°©λ²•μ΄λ―€λ‘œ 맀우 μ€‘μš”ν•©λ‹ˆλ‹€.

  • Regular Key

    Regular KeyλŠ” Master Keyλ₯Ό λŒ€μ²΄ν•˜κ±°λ‚˜ λ³΄μ•ˆμ„ κ°•ν™”ν•˜λ €λŠ” λͺ©μ μœΌλ‘œ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. Regular KeyλŠ” Master Key와 같은 κΆŒν•œμ„ κ°€μ§€λ‚˜, Regular Keyλ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ μ‚­μ œν•˜λŠ” 것이 Master Keyλ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ μ‚­μ œν•˜λŠ” 것보닀 더 μ‰½μŠ΅λ‹ˆλ‹€. λ˜ν•œ, Regular Keyλ₯Ό μ‚¬μš©ν•˜μ—¬ 계정을 μ œμ–΄ν•˜λ©΄, Master Keyλ₯Ό μ•ˆμ „ν•˜κ²Œ λ³΄κ΄€ν•˜λ©΄μ„œλ„ 일상적인 거래λ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜, XRPLμ—μ„œ Regular KeyλŠ” Master Keyκ°€ κ°€μ§€λŠ” 계정 μ„€μ • λ³€κ²½ λ“±μ˜ 일뢀 κΆŒν•œμ„ λŒ€μ²΄ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€. Master KeyλŠ” 계정을 μ‚­μ œν•˜κ±°λ‚˜, Regular Keyλ₯Ό μ„€μ •ν•˜κ±°λ‚˜ λ³€κ²½ν•˜λŠ” λ“±μ˜ κΆŒν•œμ„ κ°€μ§‘λ‹ˆλ‹€. λ”°λΌμ„œ Regular KeyλŠ” 일상적인 거래λ₯Ό μˆ˜ν–‰ν•˜κ³ , Master KeyλŠ” 더 μ€‘μš”ν•˜κ³  λ―Όκ°ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

즉, Master Key와 Regular Key λͺ¨λ‘ 계정을 μ œμ–΄ν•˜λŠ” κΆŒν•œμ„ κ°€μ§€μ§€λ§Œ, Master KeyλŠ” 더 λ§Žμ€ κΆŒν•œκ³Ό 더 높은 λ³΄μ•ˆ μš”κ΅¬ 사항을 가지고 μžˆμŠ΅λ‹ˆλ‹€. Master KeyλŠ” λ˜ν•œ Regular Keyλ₯Ό μƒμ„±ν•˜κ³  λ³€κ²½ν•˜λŠ” 데 μ‚¬μš©λ˜λ©°, 이둜써 Master Key의 λ³΄μ•ˆμ„ κ°•ν™”ν•˜κ³ , 일상적인 거래λ₯Ό 보닀 μ•ˆμ „ν•˜κ²Œ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Regular Key 섀정​

λ‹€μŒμ€ Regular Keyλ₯Ό μƒμ„±ν•˜κ³ , Master Keyλ₯Ό λΉ„ν™œμ„±ν™”ν•˜λŠ” 과정을 λ³΄μ—¬μ€λ‹ˆλ‹€.

  1. Regular key의 생성

    Regular keyλŠ” 곡개 킀와 λΉ„λ°€ ν‚€μ˜ 쌍으둜 κ΅¬μ„±λ©λ‹ˆλ‹€. 이 ν‚€μ˜ 생성은 μ „μž μ„œλͺ… μ•Œκ³ λ¦¬μ¦˜μ— μ˜ν•΄ 이루어지며, 보톡은 μ•”ν˜Έν™” λ°©λ²•λ‘ μ˜ 일뢀인 elliptic-curve cryptography (ECC)λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

    Regular key의 생성은 λ³΄μ•ˆμƒ 맀우 μ€‘μš”ν•œ λ‹¨κ³„μž…λ‹ˆλ‹€. 일반적으둜 μ΄λŠ” μ•ˆμ „ν•œ λ‚œμˆ˜ 생성기λ₯Ό μ‚¬μš©ν•˜μ—¬ 이루어지며, ν‚€ 생성 ν”„λ‘œμ„ΈμŠ€μ˜ λͺ¨λ“  뢀뢄이 적절히 λ³΄ν˜Έλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μƒμ„±λœ λΉ„λ°€ ν‚€λŠ” μ ˆλŒ€ λ…ΈμΆœλ˜μ–΄μ„œλŠ” μ•ˆλ˜λ©°, μ•ˆμ „ν•˜κ²Œ μ €μž₯λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

    μƒμ„±λœ Regular keyλŠ” νŠΉμ • κ³„μ •μ˜ μƒˆλ‘œμš΄ 인증 μˆ˜λ‹¨μœΌλ‘œ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 기본적인 계정 관리λ₯Ό μœ„ν•œ Master key의 μ‚¬μš©μ„ 쀄이고, κ³„μ •μ˜ λ³΄μ•ˆμ„ κ°•ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” 특히 블둝체인 κΈ°μˆ μ—μ„œ μ€‘μš”ν•œλ°, κ·Έ μ΄μœ λŠ” ν•œ 번 μƒμ„±λœ ν‚€λŠ” 변경이 λΆˆκ°€λŠ₯ν•˜λ©°, 잘λͺ» κ΄€λ¦¬λ˜κ±°λ‚˜ λ…ΈμΆœλ  경우 ν•΄λ‹Ή κ³„μ •μ˜ μžμ‚°μ΄ μœ„ν—˜μ— λ…ΈμΆœλ˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

  2. Regular key의 ν• λ‹Ή

    μƒμ„±λœ Regular keyλŠ” νŠΉμ • 계정에 ν• λ‹Ήλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 이 λ‹¨κ³„λŠ” Regular keyλ₯Ό ν•΄λ‹Ή κ³„μ •μ˜ μƒˆλ‘œμš΄ μ ‘κ·Ό ν‚€λ‘œ μ„€μ •ν•©λ‹ˆλ‹€. Regular key의 할당은 μ‚¬μš©μžμ˜ λͺ©ν‘œμ— 따라 진행될 수 있으며, νŠΈλžœμž­μ…˜ μ„œλͺ… λ˜λŠ” 계정 관리λ₯Ό μœ„ν•œ μƒˆλ‘œμš΄ 방법을 μ œκ³΅ν•©λ‹ˆλ‹€.

  3. Master key의 λΉ„ν™œμ„±ν™”

    Regular keyκ°€ ν• λ‹Ήλ˜λ©΄ Master keyλ₯Ό λΉ„ν™œμ„±ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” ν•΄λ‹Ή 계정에 λŒ€ν•œ λͺ¨λ“  κΆŒν•œμ΄ Regular key둜 이동함을 μ˜λ―Έν•©λ‹ˆλ‹€. 이 λ‹¨κ³„λŠ” Regular keyλ₯Ό 주된 계정 ν‚€λ‘œ μ„€μ •ν•˜κ³ , Master keyλ₯Ό 더 이상 μ‚¬μš©ν•˜μ§€ μ•Šλ„λ‘ ν•˜μ—¬ 좔가적인 λ³΄μ•ˆ λ ˆλ²¨μ„ μ œκ³΅ν•©λ‹ˆλ‹€. μ΄λŠ” 특히 Master keyκ°€ μœ„ν—˜μ— λ…ΈμΆœλ˜μ—ˆκ±°λ‚˜ 손싀됐을 경우 μœ μš©ν•©λ‹ˆλ‹€.

  4. Regular key의 μ—…λ°μ΄νŠΈ 및 Master key의 μž¬ν™œμ„±ν™”

    μ‚¬μš©μžμ˜ ν•„μš”μ— 따라, Regular keyλŠ” μ—…λ°μ΄νŠΈ 될 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μƒˆλ‘œμš΄ Regular keyλ₯Ό μƒμ„±ν•˜κ³  계정에 μž¬ν• λ‹Ήν•˜λŠ” 과정을 ν¬ν•¨ν•©λ‹ˆλ‹€. λ˜ν•œ, ν•„μš”ν•œ 경우 Master keyλŠ” μ–Έμ œλ“ μ§€ μž¬ν™œμ„±ν™” 될 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” Master keyκ°€ ν•„μš”ν•œ νŠΉμ • νŠΈλžœμž­μ…˜μ„ μ§„ν–‰ν•˜κ±°λ‚˜, Regular keyλ₯Ό λŒ€μ²΄ν•˜κ±°λ‚˜ μ‚­μ œν•΄μ•Ό ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ μ ˆμ°¨λŠ” 계정 λ³΄μ•ˆμ„ κ°•ν™”ν•˜λŠ” μ€‘μš”ν•œ λ°©λ²•μž…λ‹ˆλ‹€. Regular key와 Master keyλ₯Ό 적절히 κ΄€λ¦¬ν•˜λ©΄, μ•”ν˜Έν™”ν μ§€κ°‘μ˜ μ•ˆμ „μ„±μ„ 크게 ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. ν‚€λ₯Ό κ΄€λ¦¬ν•˜λŠ” κ³Όμ •μ—μ„œλŠ” 항상 μ•ˆμ „ν•˜κ²Œ λ³΄κ΄€ν•˜κ³ , λ°±μ—…ν•˜λŠ” λ“±μ˜ 절차λ₯Ό λ”°λ₯΄λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

μ‹€μŠ΅ ν”„λ‘œμ νŠΈβ€‹

이번 μ‹€μŠ΅μ—μ„œλŠ” XRP Ledger 지갑을 μƒμ„±ν•˜κ³ , 계정을 ν™œμ„±ν™” ν•œ ν›„, Regular Keyλ₯Ό 생성 및 μ„€μ •ν•˜λŠ” 과정을 μ§„ν–‰ν•©λ‹ˆλ‹€.

지갑 생성​

λ¨Όμ € XRP Ledgerμ—μ„œ 지갑을 μƒμ„±ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

xrpl-py와 같은 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ 직접 λ§Œλ“€ μˆ˜λ„ 있고, XUMMκ³Ό 같은 지갑 앱을 μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. XUMM 이용 κ°€μ΄λ“œλŠ” 이 링크λ₯Ό μ°Έκ³ ν•˜μ„Έμš”. 이번 μ‹€μŠ΅μ—μ„œλŠ” xrpl-pyλ₯Ό μ‚¬μš©ν•˜μ—¬ 지갑을 μƒμ„±ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ λ§Œλ“  지갑은 λ‹€μ‹œ XUMMκ³Ό 같은 지갑 앱에 μ—°κ²°ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈλ„·μ—μ„œ κ°„λ‹¨ν•˜κ²Œ μ΄μš©ν•΄λ³΄λ €λ©΄ generate_faucet_wallet ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄λ„ μ’‹μŠ΅λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” λ‹€μŒμ— λ‚˜μ˜€λŠ” 지갑 ν™œμ„±ν™” νŒŒνŠΈμ—μ„œ λ‹€μ‹œ μ„€λͺ…ν•˜κ² μŠ΅λ‹ˆλ‹€.

from xrpl.wallet import Wallet
from xrpl.constants import CryptoAlgorithm

wallet = Wallet.create()

Wallet.create() λ©”μ„œλ“œμ—λŠ” algorithm=CryptoAlgorithm.ED25519와 같이 λ§€κ°œλ³€μˆ˜λ₯Ό μ£Όμ–΄ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μ„ 지정할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 기본값은 ED25519μž…λ‹ˆλ‹€. μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μ˜ μ’…λ₯˜λŠ” μ—¬κΈ°μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

지갑 정보λ₯Ό ν™•μΈν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 μž…λ ₯ν•©λ‹ˆλ‹€.

print(wallet)
public_key: EDBD30AA72B8A968705D535B4C4B2843E692F68026D6D5AB44C9E06834FDB1310E
private_key: -HIDDEN-
classic_address: rGjfhcmVfrwW4DRcghhdR8ZXUViqFdpt83

λΉ„κ³΅κ°œ ν‚€λ₯Ό ν¬ν•¨ν•œ λͺ¨λ“  정보λ₯Ό ν™•μΈν•˜κ³  μ‹Άλ‹€λ©΄ λ‹€μŒκ³Ό 같이 μž…λ ₯ν•©λ‹ˆλ‹€.

print(wallet.__dict__)
{'_address': 'rshhyEKHHeW2CUBryRdFpZ5LeSh4tdN4Cq',
'algorithm': <CryptoAlgorithm.ED25519: 'ed25519'>,
'private_key': 'ED0DDC86B79A55C1B8BEA8BB4D27187C1C731B55FA0417E0519CB31306AC78D373',
'public_key': 'ED8A9341F24320B8218D591A599D5B2C12D3EF750A32C0857061153AEC8E809C37',
'seed': 'sEdTjia3fsH9AtAnmYm1rUwTHazetY2'}

지갑 μ €μž₯ 및 λΆˆλŸ¬μ˜€κΈ°β€‹

지갑을 직접 μ €μž₯ν•˜κ³  뢈러였렀면 λ‹€μŒκ³Ό 같은 방법을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

import json

with open(wallet_path, "w", encoding="UTF-8") as file:
json.dump(wallet.__dict__, file)

μœ„ μ½”λ“œλŠ” μ§€κ°‘μ˜ 정보λ₯Ό JSON ν˜•μ‹μœΌλ‘œ νŒŒμΌμ— μ €μž₯ν•©λ‹ˆλ‹€. 이λ₯Ό λ‹€μ‹œ 뢈러였렀면 λ‹€μŒκ³Ό 같이 μž…λ ₯ν•©λ‹ˆλ‹€.

import json
from xrpl.wallet import Wallet

with open(wallet_path, "r", encoding="UTF-8") as file:
wallet_info = json.load(file)

wallet = Wallet(
public_key=wallet_info["public_key"],
private_key=wallet_info["private_key"],
master_address=wallet_info["address"],
seed=wallet_info["seed"],
algorithm=wallet_info["algorithm"],
)

μ΄λ ‡κ²Œ ν•˜λ©΄ 지갑을 λ‹€μ‹œ 뢈러올 수 μžˆμŠ΅λ‹ˆλ‹€. 이 방법은 지갑을 직접 μ €μž₯ν•˜κ³  λΆˆλŸ¬μ˜€λŠ” 방법 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ 이 방법은 μ§€κ°‘μ˜ 정보λ₯Ό λͺ¨λ‘ μ €μž₯ν•˜λ―€λ‘œ, λ³΄μ•ˆμ— μ·¨μ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ‹€μ œ 지갑을 μ €μž₯ν•  λ•ŒλŠ” μ•”ν˜Έν™”λ₯Ό ν•˜κ±°λ‚˜ λ‹€λ₯Έ 지갑 μ„œλΉ„μŠ€, ν•˜λ“œμ›¨μ–΄ 지갑 등을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

지갑 ν™œμ„±ν™”β€‹

지갑을 ν™œμ„±ν™” ν•˜λ €λ©΄ μ΅œμ†Œ 10 XRPλ₯Ό λ³΄μœ ν•΄μ•Ό ν•©λ‹ˆλ‹€. ν…ŒμŠ€νŠΈλ„·μ—μ„œλŠ” 무료둜 ν…ŒμŠ€νŠΈμš© XRPλ₯Ό μ œκ³΅ν•˜λŠ” 'Faucet' μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•˜λ©΄, ν…ŒμŠ€νŠΈμš© XRPκ°€ λ“€μ–΄μžˆλŠ” 지갑을 μƒμ„±ν•˜κ±°λ‚˜ κΈ°μ‘΄ 지갑에 ν…ŒμŠ€νŠΈμš© XRPλ₯Ό 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.

  • ν…ŒμŠ€νŠΈμš© XRPκ°€ λ“€μ–΄μžˆλŠ” 지갑 생성

    from xrpl.wallet import generate_faucet_wallet

    wallet = generate_faucet_wallet(client=client)
  • κΈ°μ‘΄ 지갑에 ν…ŒμŠ€νŠΈμš© XRP 전솑

    from xrpl.wallet import generate_faucet_wallet

    wallet = generate_faucet_wallet(client=client, wallet=wallet)

계정 정보 확인​

계정 정보λ₯Ό ν™•μΈν•˜λ €λ©΄, XRP Ledger둜 λΆ€ν„° 계정 μ •λ³΄μ˜ 데이터λ₯Ό μš”μ²­ν•΄μ•Ό ν•©λ‹ˆλ‹€.

XRP Ledgerλ‘œλΆ€ν„° λ ˆμ €μ˜ 데이터λ₯Ό μš”μ²­ν•˜λŠ” 방법은 xrpl.models.requestsμ—μ„œ μ›ν•˜λŠ” μš”μ²­ 클래슀λ₯Ό λΆˆλŸ¬μ™€μ„œ λ‚΄μš©μ„ μ±„μš°κ³ , client.request λ©”μ„œλ“œμ— λ„£μ–΄μ£Όλ©΄ λ©λ‹ˆλ‹€.

계정 μ •λ³΄λŠ” AccountInfo μš”μ²­ 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ μš”μ²­ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

from xrpl.models.requests import AccountInfo

response = client.request(request = AccountInfo(account=wallet.classic_address))

print(response.result)
{'account_data': {'Account': 'r9Y5orxqCmkHDPUEX9jG2zhadz8PwNA7sg',
'Balance': '10000000000',
'Flags': 0,
'LedgerEntryType': 'AccountRoot',
'OwnerCount': 0,
'PreviousTxnID': 'E3A3B7B1619A618261154A9468E8F93D28AC7B813F40741D494A0ED7B9794653',
'PreviousTxnLgrSeq': 39662860,
'Sequence': 39662860,
'index': '173F2F53EB166A75818F3D01D9CCB7ECEF83879B99C869ADF32F5A438A657BAF'},
'account_flags': {'defaultRipple': False,
'depositAuth': False,
'disableMasterKey': False,
'disallowIncomingCheck': False,
'disallowIncomingNFTokenOffer': False,
'disallowIncomingPayChan': False,
'disallowIncomingTrustline': False,
'disallowIncomingXRP': False,
'globalFreeze': False,
'noFreeze': False,
'passwordSpent': False,
'requireAuthorization': False,
'requireDestinationTag': False},
'ledger_current_index': 39662862,
'validated': False}

계정 μ •λ³΄μ—λŠ” κ³„μ •μ˜ μž”μ•‘, μ‹œν€€μŠ€ 번호, ν”Œλž˜κ·Έ 등이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 정보λ₯Ό 톡해 κ³„μ •μ˜ μƒνƒœλ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

Regular Key 생성​

Regular Keyλ₯Ό μƒμ„±ν•˜κ³ , λ“±λ‘ν•˜λ €λ©΄ Ledger에 νŠΈλžœμž­μ…˜μ„ μ œμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€. νŠΈλžœμž­μ…˜μ„ μ œμΆœν•˜λŠ” 과정은 transaction νŒŒνŠΈμ—μ„œ 더 μžμ„Έν•˜κ²Œ 닀루고 이번 μ‹€μŠ΅μ—μ„œλŠ” ν•΄λ‹Ή 뢀뢄에 λŒ€ν•œ μ„€λͺ…은 κ°„λ‹¨ν•˜κ²Œ ν•˜κ² μŠ΅λ‹ˆλ‹€.

from pprint import pprint

from xrpl.clients import JsonRpcClient
from xrpl.models.transactions import SetRegularKey
from xrpl.transaction import autofill_and_sign, submit_and_wait
from xrpl.wallet import generate_faucet_wallet, Wallet

# JsonRpcClient 객체 생성
client = JsonRpcClient("https://s.altnet.rippletest.net:51234")

# master key 지갑 (μ›λž˜ 있던 지갑을 뢈러였면 λ©λ‹ˆλ‹€. μ—¬κΈ°μ„œλŠ” μ˜ˆμ‹œλ₯Ό μœ„ν•΄ μƒˆλ‘œμš΄ ν…ŒμŠ€νŠΈ 지갑을 μƒμ„±ν–ˆμŠ΅λ‹ˆλ‹€)
my_wallet = generate_faucet_wallet(client=client)

# regular key 지갑 생성
regular_key_wallet = Wallet.create()

# SetRegularKey νŠΈλžœμž­μ…˜ 객체 생성
set_regular_key_tx = SetRegularKey(
account=my_wallet.classic_address,
regular_key=regular_key_wallet.classic_address,
)

# νŠΈλžœμž­μ…˜ ν•„λ“œ μžλ™ μ±„μš°κΈ° 및 μ„œλͺ…
signed_tx = autofill_and_sign(
transaction=set_regular_key_tx, client=client, wallet=my_wallet
)

# νŠΈλžœμž­μ…˜ 제좜 및 응닡 λ°˜ν™˜
response = submit_and_wait(transaction=signed_tx, client=client, wallet=my_wallet)

# κ²°κ³Ό 좜λ ₯
pprint(response.result)

μœ„ μ½”λ“œλŠ” Regular Keyλ₯Ό μƒμ„±ν•˜κ³ , λ“±λ‘ν•˜λŠ” 과정을 λ³΄μ—¬μ€λ‹ˆλ‹€.

Regular Keyλ₯Ό λ“±λ‘ν•˜λ €λŠ” κ³„μ •μ˜ 지갑은 my_wallet이며, 이 μ§€κ°‘μ˜ κ³΅κ°œμ™€ λΉ„κ³΅κ°œ ν‚€ 쌍이 λ°”λ‘œ Master Key μž…λ‹ˆλ‹€.

λ¨Όμ €, μƒˆλ‘œμš΄ ν‚€ μŒμ„ ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ μƒˆλ‘œμš΄ 지갑(regular_key_wallet)을 μƒμ„±ν•˜λ©°, 이 μ§€κ°‘μ˜ ν‚€ 쌍이 Regular Keyκ°€ λ©λ‹ˆλ‹€. 이 μ§€κ°‘μ˜ 생성은 이전에 μ„€λͺ…ν•œ 지갑 생성 방법을 톡해 진행할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒμœΌλ‘œ SetRegularKey νŠΈλžœμž­μ…˜ 객체λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. 이 λ•Œ, my_wallet의 μ£Όμ†Œμ™€ regular_key_wallet의 곡개 ν‚€λ₯Ό νŠΈλžœμž­μ…˜μ— ν¬ν•¨μ‹œν‚΅λ‹ˆλ‹€.

νŠΈλžœμž­μ…˜ μ„œλͺ…을 μœ„ν•΄ sign_and_autofill ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©°, 이 ν•¨μˆ˜λŠ” νŠΈλžœμž­μ…˜μ— ν•„μš”ν•œ μ„ΈλΆ€ 정보λ₯Ό μžλ™μœΌλ‘œ μ±„μ›Œλ„£κ³  μ„œλͺ… 과정을 μ§„ν–‰ν•©λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ, submit_and_wait ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ„œλͺ…λœ νŠΈλžœμž­μ…˜μ„ XRPL에 μ œμΆœν•˜κ³ , 처리 κ²°κ³Όλ₯Ό κΈ°λ‹€λ¦½λ‹ˆλ‹€.

제좜이 μ„±κ³΅μ μœΌλ‘œ 이루어진 경우, Regular Keyκ°€ μ„±κ³΅μ μœΌλ‘œ λ“±λ‘λ˜μ—ˆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€. μ΄ν›„λΆ€ν„°λŠ” my_wallet에 κ΄€λ ¨λœ νŠΈλžœμž­μ…˜ μ„œλͺ… μ‹œ, μ•„λž˜μ˜ μ½”λ“œμ™€ 같이 Master Key λŒ€μ‹  이 Regular Keyλ₯Ό μ‚¬μš©ν•˜μ—¬ μ„œλͺ…ν•  수 있게 λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•¨μœΌλ‘œμ¨ Master KeyλŠ” μ•ˆμ „ν•˜κ²Œ λ³΄κ΄€λ˜λ©°, 일상적인 νŠΈλžœμž­μ…˜ μ„œλͺ…은 Regular Keyλ₯Ό 톡해 μ΄λ£¨μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

from xrpl.transaction import sign

# some_tx = Transaction(account=my_wallet.classic_address, ...)

signed_tx = sign(
transaction=some_tx, wallet=regular_key_wallet, client=client
)