Cardano-db-sync: 계정 μž”μ•‘ 예

에 λ§Œλ“  2021λ…„ 03μ›” 25일  Β·  10μ½”λ©˜νŠΈ  Β·  좜처: input-output-hk/cardano-db-sync

νŒŒν‹°μ— 쑰금 λŠ¦μ—ˆμ§€λ§Œ 예λ₯Ό λ“€μ–΄ 계정 μž”μ•‘μ„ μΆ”μ ν•˜λŠ” 방법을 κ³΅μœ ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

outputs + reward + reserve + treasury - inputs - withdrawal λ₯Ό κ³„μ‚°ν•˜λŠ” 것은 νŠΈλ¦­μ„ μˆ˜ν–‰ν•˜μ§€ μ•ŠμœΌλ©° 이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 멋지고 μ‰¬μš΄ 방법이 μ—†λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

쒋은 ν›„λ³΄λŠ” stake1uyluup0rh6r2cc7kcw8nudqz990ezf5ltagxmw3u8deukvqwq7etq 수 μžˆμŠ΅λ‹ˆλ‹€(이미 μ€ν‡΄ν•œ 풀에 λŒ€ν•œ 보상 계정). λ‹€λ₯Έ νƒν—˜κ°€λ“€μ€ 이것을 λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ λ³΄μ—¬μ£Όμ§€λ§Œ, ν˜„μž¬λ‘œμ„œλŠ” μ–΄λ–€ μ’…λ₯˜μ˜ ν•΄κ²° 방법/μΆ”κ°€ μ„±κ°€μ‹  μ»΄ν“¨νŒ… μ—†μ΄λŠ” λΆˆκ°€λŠ₯ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 엣지 μΌ€μ΄μŠ€λ₯Ό κ³ λ €ν•  λ•Œ 상황은 λ”μš± νλ¦Ών•΄μ§‘λ‹ˆλ‹€. 이 λͺ¨λ“  것을 염두에 두고 dbsyncμ—μ„œ 계정 및 에포크와 ν•¨κ»˜ reap ( deposit μΆ”κ°€) 정보λ₯Ό λͺ…μ‹œμ μœΌλ‘œ μΆ”μ ν•˜λŠ” 것이 μœ μ΅ν•˜μ§€ μ•Šμ„κΉŒμš”?

_μ›λž˜ https://github.com/input-output-hk/cardano-db-sync/issues/474#issuecomment -804793203의 @1000101 에 μ˜ν•΄ κ²Œμ‹œλ¨_

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‚˜λŠ” 이것에 λ™μ˜ν•©λ‹ˆλ‹€. λ˜ν•œ cardano-db-sync의 각 "μ‚¬μš©μž"κ°€ μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ” μˆ˜λ§Žμ€ 엣지 μΌ€μ΄μŠ€κ°€ μžˆμŠ΅λ‹ˆλ‹€. Adalite와 YoroiλŠ” 이전에 은퇴 ν’€μ˜ 보상 κ³„μ •μ΄μ—ˆλ˜ 계정을 보고 ν˜Όλž€μŠ€λŸ¬μ›Œν•©λ‹ˆλ‹€.
image
image

λ˜ν•œ AFAIK only cardanoscan은 λ‚˜λ¨Έμ§€ 보상을 μ˜¬λ°”λ₯΄κ²Œ μ²˜λ¦¬ν•˜λ©° db-syncλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

보상이 μžλ™μœΌλ‘œ μΆ”κ°€λ˜λŠ” 것과 같은 λ°©μ‹μœΌλ‘œ μ—…λ°μ΄νŠΈλ˜λŠ” μ‰¬μš΄ 관계가 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. μ—¬λŸ¬ 등둝 μ·¨μ†Œκ°€ μžˆλŠ” 풀을 예둜 λ“€μ–΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. μ΄λŠ” μ‹€μ œλ‘œ 맀우 일반적이고 μ†Œμœ μž κ³„μ •μ˜ 보상 μž”μ•‘μ„ μ²˜λ¦¬ν•˜κΈ° μ–΄λ ΅κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

9개의 퇴직 증λͺ…μ„œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
image

그리고 15개의 등둝증
image

μƒˆλ‘œμš΄ μΈμ¦μ„œμ— μ˜ν•΄ λ¬΄νš¨ν™”λ˜λŠ” μˆ˜λ§Žμ€ μ˜ˆμ™Έμ μΈ κ²½μš°μ™€ 퇴직 의 λͺ¨ν˜Έν•œ κ·œμΉ™μ΄ μžˆμŠ΅λ‹ˆλ‹€.

@erikd , 500 tx 예금과 ν‡΄μ§κΈˆ 사이에 μΆ©λΆ„ν•œ 연결을 μ£Όμž₯ν•œλ‹€λ©΄ μ†Œμœ μž 계정 쀑 ν•˜λ‚˜μ˜ λ°˜ν™˜ 된 μ˜ˆκΈˆμ— λŒ€ν•œ 쿼리λ₯Ό μ–΄λ–»κ²Œ μž‘μ„±ν•˜κ² μŠ΅λ‹ˆκΉŒ? 그렇지 μ•Šλ‹€λ©΄ 이것을 db-sync에 λͺ…μ‹œμ μœΌλ‘œ μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? addr_id , amount (ν˜„μž¬λŠ” 500의 λ°°μˆ˜μ—¬μ•Ό 함) 및 epoch_no κ°€ μžˆλŠ” pool_refunds λΌλŠ” μ΄λ¦„μ˜ μƒˆ ν…Œμ΄λΈ”μ„ κ°€μ •ν•΄ λ΄…μ‹œλ‹€. κ·Έλž˜μ•Ό ν•œ κ³³μ—μ„œ μ˜¬λ°”λ₯΄κ²Œ μ²˜λ¦¬λ©λ‹ˆλ‹€.

λͺ¨λ“  10 λŒ“κΈ€

μ €λ₯Ό λŒ€μ‹ ν•˜μ—¬ 이 문제λ₯Ό μ—΄μ–΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€! μ’€ 더 λͺ…ν™•νžˆ ν•˜μžλ©΄ - 계정 μžμ²΄μ— κ΄€ν•œ 것이 μ•„λ‹ˆλΌ 주둜 db의 μ–΄λ”˜κ°€μ—μ„œ reap λ₯Ό μΆ”μ ν•˜λŠ” 것에 κ΄€ν•œ κ²ƒμ΄λ―€λ‘œ 계정 μž”μ•‘ 계산에 μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€(예: ν’€ 라이브 μŠ€ν…Œμ΄ν¬ 크기, ν’€ 라이브 μ„œμ•½ λ“±).

@1000101 "reap"이 λ¬΄μ—‡μž…λ‹ˆκΉŒ? db-syncμ—λŠ” "reap"μ΄λΌλŠ” ν…Œμ΄λΈ”μ΄λ‚˜ 열이 μ—†μŠ΅λ‹ˆλ‹€.

계정 μž”μ•‘μ€ μ‚¬μ†Œν•œ 것이 μ•„λ‹™λ‹ˆλ‹€.

Shelley 및 이후 μ‹œλŒ€μ˜ μ£Όμ†Œμ—λŠ” 두 가지 ꡬ성 μš”μ†Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ§€λΆˆ 자격 증λͺ… 및 μŠ€ν…Œμ΄ν‚Ή 자격 증λͺ…. μŠ€ν…Œμ΄ν¬ μ£Όμ†Œ(예: stake1uyluup0rh6r2cc7kcw8nudqz990ezf5ltagxmw3u8deukvqwq7etq )λŠ” λ‚˜μ€‘μ— νŒŒμƒλ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μŠ€ν…Œμ΄ν‚Ή 자격 증λͺ…을 ν¬ν•¨ν•˜μ§€ μ•ŠλŠ” μœ νš¨ν•œ μ£Όμ†Œλ₯Ό κ΅¬μ„±ν•˜λŠ” 것은 κ°€λŠ₯ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ νŠΉμ • μŠ€ν…Œμ΄ν¬ μ£Όμ†Œμ— λŒ€ν•œ 계정 μž”μ•‘μ„ 얻을 μˆ˜λŠ” μžˆμ§€λ§Œ ν•΄λ‹Ή μ§€κ°‘μ˜ λͺ¨λ“  μ£Όμ†Œμ— λ™μΌν•œ μŠ€ν…Œμ΄ν‚Ή 자격 증λͺ…이 ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©΄ μ§€κ°‘μ˜ 계정 μž”μ•‘μ„ 얻을 수 μžˆλŠ” 방법이 μ—†μŠ΅λ‹ˆλ‹€.

@1000101 "reap"이 λ¬΄μ—‡μž…λ‹ˆκΉŒ? db-syncμ—λŠ” "reap"μ΄λΌλŠ” ν…Œμ΄λΈ”μ΄λ‚˜ 열이 μ—†μŠ΅λ‹ˆλ‹€.

μ•„, 이것에 λŒ€ν•΄ μΆ©λΆ„νžˆ μ„€λͺ…ν•˜μ§€ λͺ»ν•΄ μ£„μ†‘ν•©λ‹ˆλ‹€. λ‚΄κ°€ μ˜λ―Έν•˜λŠ” λ°”λŠ” https://github.com/input-output-hk/cardano-db-sync/issues/474 에 μ„€λͺ…λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 즉, λ‚΄κ°€ λ§ν•˜λŠ” 것은 μ •ν™•νžˆ 이에 λŒ€ν•œ 열이 μ—†μ§€λ§Œ 쒋을 κ²ƒμž…λ‹ˆλ‹€. μžˆλ‹€λ©΄.

이 계정이 ν’€ 등둝(보상 κ³„μ •μœΌλ‘œ)에 μ‚¬μš©λ˜μ—ˆκ³  λ‚˜μ€‘μ— 풀이 νκΈ°λ˜μ–΄ ν’€ μ˜ˆμΉ˜κΈˆμ„ λ˜μ°ΎλŠ” 경우 ν˜„μž¬ 계정 μž”μ•‘μ„ μ‰½κ²Œ 계산할 수 μžˆλŠ” 방법이 μ—†μŠ΅λ‹ˆλ‹€. ν’€ 보증금의 "μ§€λΆˆ"은 dbsyncμ—μ„œ μΆ”μ λ˜μ§€λ§Œ 풀이 폐기될 λ•Œμ˜ "ν™˜λΆˆ"은 μΆ”μ λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이것에 λ™μ˜ν•©λ‹ˆλ‹€. λ˜ν•œ cardano-db-sync의 각 "μ‚¬μš©μž"κ°€ μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ” μˆ˜λ§Žμ€ 엣지 μΌ€μ΄μŠ€κ°€ μžˆμŠ΅λ‹ˆλ‹€. Adalite와 YoroiλŠ” 이전에 은퇴 ν’€μ˜ 보상 κ³„μ •μ΄μ—ˆλ˜ 계정을 보고 ν˜Όλž€μŠ€λŸ¬μ›Œν•©λ‹ˆλ‹€.
image
image

λ˜ν•œ AFAIK only cardanoscan은 λ‚˜λ¨Έμ§€ 보상을 μ˜¬λ°”λ₯΄κ²Œ μ²˜λ¦¬ν•˜λ©° db-syncλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

보상이 μžλ™μœΌλ‘œ μΆ”κ°€λ˜λŠ” 것과 같은 λ°©μ‹μœΌλ‘œ μ—…λ°μ΄νŠΈλ˜λŠ” μ‰¬μš΄ 관계가 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. μ—¬λŸ¬ 등둝 μ·¨μ†Œκ°€ μžˆλŠ” 풀을 예둜 λ“€μ–΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. μ΄λŠ” μ‹€μ œλ‘œ 맀우 일반적이고 μ†Œμœ μž κ³„μ •μ˜ 보상 μž”μ•‘μ„ μ²˜λ¦¬ν•˜κΈ° μ–΄λ ΅κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

9개의 퇴직 증λͺ…μ„œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
image

그리고 15개의 등둝증
image

μƒˆλ‘œμš΄ μΈμ¦μ„œμ— μ˜ν•΄ λ¬΄νš¨ν™”λ˜λŠ” μˆ˜λ§Žμ€ μ˜ˆμ™Έμ μΈ κ²½μš°μ™€ 퇴직 의 λͺ¨ν˜Έν•œ κ·œμΉ™μ΄ μžˆμŠ΅λ‹ˆλ‹€.

@erikd , 500 tx 예금과 ν‡΄μ§κΈˆ 사이에 μΆ©λΆ„ν•œ 연결을 μ£Όμž₯ν•œλ‹€λ©΄ μ†Œμœ μž 계정 쀑 ν•˜λ‚˜μ˜ λ°˜ν™˜ 된 μ˜ˆκΈˆμ— λŒ€ν•œ 쿼리λ₯Ό μ–΄λ–»κ²Œ μž‘μ„±ν•˜κ² μŠ΅λ‹ˆκΉŒ? 그렇지 μ•Šλ‹€λ©΄ 이것을 db-sync에 λͺ…μ‹œμ μœΌλ‘œ μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? addr_id , amount (ν˜„μž¬λŠ” 500의 λ°°μˆ˜μ—¬μ•Ό 함) 및 epoch_no κ°€ μžˆλŠ” pool_refunds λΌλŠ” μ΄λ¦„μ˜ μƒˆ ν…Œμ΄λΈ”μ„ κ°€μ •ν•΄ λ΄…μ‹œλ‹€. κ·Έλž˜μ•Ό ν•œ κ³³μ—μ„œ μ˜¬λ°”λ₯΄κ²Œ μ²˜λ¦¬λ©λ‹ˆλ‹€.

ν˜„μž¬ db-sync λŠ” 원μž₯ μƒνƒœμ—μ„œ 데이터λ₯Ό μΆ”μΆœν•˜κ³  λ°μ΄ν„°λ² μ΄μŠ€μ— μ‚½μž…ν•©λ‹ˆλ‹€. 일뢀 정보λ₯Ό μ‚­μ œν•˜μ§€λ§Œ μ§‘κ³„λŠ” μˆ˜ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€μ— μ‚½μž…λ˜λŠ” 것은 λ‹¨μˆœνžˆ 원μž₯ μƒνƒœκ°€ μ œκ³΅ν•˜λŠ” 것을 λ°˜μ˜ν•œ κ²ƒμž…λ‹ˆλ‹€.

κ΄€λ ¨ pool_hash.id λ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

> select id, hash_raw from pool_hash
    where hash_raw = '\x9c8e59ea7004a51f953642653d70a94d066359b9dd6e6416a5430ff3' ;
  id  |                          hash_raw                          
------+------------------------------------------------------------
 5022 | \x9c8e59ea7004a51f953642653d70a94d066359b9dd6e6416a5430ff3
(1 row)

풀은 λ‹€μŒκ³Ό 같이 λ“±λ‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€( block_no μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μΆ”κ°€ 쑰인).

> select pool_update.id, hash_id, cert_index, active_epoch_no, block.block_no, block.epoch_no
    from pool_update
      inner join tx on tx.id = pool_update.registered_tx_id
      inner join block on tx.block_id = block.id
    where pool_update.hash_id = 5022
    order by block.block_no asc; 
  id  | hash_id | cert_index | active_epoch_no | block_no | epoch_no 
------+---------+------------+-----------------+----------+----------
 5022 |    5022 |          0 |             220 |  4717004 |      218
 5023 |    5022 |          0 |             220 |  4717035 |      218
 5024 |    5022 |          0 |             220 |  4717057 |      218
 5029 |    5022 |          0 |             220 |  4717140 |      218
 5030 |    5022 |          0 |             220 |  4717146 |      218
 5031 |    5022 |          0 |             220 |  4717169 |      218
 5032 |    5022 |          0 |             220 |  4717189 |      218
 5033 |    5022 |          0 |             220 |  4717216 |      218
 5034 |    5022 |          0 |             220 |  4717234 |      218
 5035 |    5022 |          0 |             220 |  4717241 |      218
 5037 |    5022 |          0 |             220 |  4717296 |      218
 5038 |    5022 |          0 |             220 |  4717425 |      218
 5061 |    5022 |          0 |             220 |  4721000 |      218
 5080 |    5022 |          0 |             221 |  4725394 |      219
 5081 |    5022 |          0 |             221 |  4725435 |      219
(15 rows)

λ‹€μŒμ—μ„œ 등둝 μ·¨μ†Œ:

> select pool_retire.id, hash_id, cert_index, retiring_epoch, block.block_no, block.epoch_no
    from pool_retire
      inner join tx on tx.id = pool_retire.announced_tx_id
      inner join block on tx.block_id = block.id
    where hash_id = 5022
    order by block.block_no asc ; 
 id  | hash_id | cert_index | retiring_epoch | block_no | epoch_no 
-----+---------+------------+----------------+----------+----------
 180 |    5022 |          0 |            219 |  4717395 |      218
 181 |    5022 |          0 |            219 |  4717397 |      218
 182 |    5022 |          0 |            219 |  4717401 |      218
 183 |    5022 |          0 |            219 |  4717403 |      218
 184 |    5022 |          0 |            219 |  4717405 |      218
 185 |    5022 |          0 |            219 |  4717417 |      218
 186 |    5022 |          0 |            219 |  4717430 |      218
 187 |    5022 |          0 |            220 |  4725366 |      219
 188 |    5022 |          0 |            220 |  4725717 |      219
(9 rows)

μ—…λ°μ΄νŠΈ 및 등둝 μ·¨μ†Œλ₯Ό 인터리빙 ν•΄μ œ:

action   | block_no
---------+------------
register | 4717004
update   | 4717035
update   | 4717057
update   | 4717140
update   | 4717146
update   | 4717169
update   | 4717189
update   | 4717216
update   | 4717234
update   | 4717241
update   | 4717296
retire   | 4717395
retire   | 4717397
retire   | 4717401
retire   | 4717403
retire   | 4717405
retire   | 4717417
update   | 4717425
retire   | 4717430
update   | 4721000
retire   | 4725366
update   | 4725394
update   | 4725435
retire   | 4725717

κ³„μ†ν•˜λ €λ©΄ ....

이것은 ν™•μ‹€νžˆ λͺ©μ΄ λ„ˆλ¬΄ μ•„ν”„λ‹€. 원μž₯ μ‚¬μ–‘μ˜ μ‚¬λžŒλ“€κ³Ό λŒ€ν™”ν•˜μ—¬ μ†”λ£¨μ…˜μ„ λ§ˆλ ¨ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

더 λ‚˜μ€ 해결책을 κΈ°λ‹€λ¦¬λŠ” λ™μ•ˆ μ§€κΈˆ λ‹Ήμž₯은 그것을 퍼지할 λΉ λ₯΄κ³  λ”λŸ¬μš΄ 방법을 μ œμ•ˆν•œ ledger-specs μ‚¬λžŒλ“€κ³Ό μ΄μ•ΌκΈ°ν–ˆμŠ΅λ‹ˆλ‹€.

μ•„μ΄λ””μ–΄λŠ” μŠ€ν…Œμ΄ν¬ μ£Όμ†Œμ™€ κΈˆμ•‘μ΄ ν¬ν•¨λœ pool_registration_refund ν…Œμ΄λΈ”κ³Ό 같은 κ²ƒμž…λ‹ˆλ‹€.

정말 쒋을 것 κ°™μ•„μš”!

더 λ‚˜μ€ 해결책을 κΈ°λ‹€λ¦¬λŠ” λ™μ•ˆ μ§€κΈˆ λ‹Ήμž₯은 그것을 퍼지할 λΉ λ₯΄κ³  λ”λŸ¬μš΄ 방법을 μ œμ•ˆν•œ ledger-specs μ‚¬λžŒλ“€κ³Ό μ΄μ•ΌκΈ°ν–ˆμŠ΅λ‹ˆλ‹€.

μ•„μ΄λ””μ–΄λŠ” μŠ€ν…Œμ΄ν¬ μ£Όμ†Œμ™€ κΈˆμ•‘μ΄ ν¬ν•¨λœ pool_registration_refund ν…Œμ΄λΈ”κ³Ό 같은 κ²ƒμž…λ‹ˆλ‹€.

μ—„μ²­λ‚œ! λ‚΄ 말은, μš°λ¦¬λŠ” ν˜„μž¬ ν•΄κ²° 방법을 가지고 μžˆμœΌλ―€λ‘œ @xdzurman이 κ³΅μœ ν•œ λ§ˆμ΄λ„ˆμŠ€ μž”μ•‘μ— λ„λ‹¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λͺ¨λ“  κ³„μ •λ§ˆλ‹€ 계산해야 ν•˜λŠ” μ•½ 100μ€„μ˜ not-so- pretty:tm : SQLμž…λ‹ˆλ‹€. 이것은 ν™•μ‹€νžˆ 도움이 될 κ²ƒμž…λ‹ˆλ‹€. 밀리 κ°μ‚¬ν•©λ‹ˆλ‹€!!!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰