hoodrunio / explorer-backend

Backend app for Cosmos ecosystem explorer.
https://backend.testnet.run/
5 stars 1 forks source link

Feat: Validator details (Voting power changes, Proposal votes) #39

Open Errorist79 opened 1 year ago

Errorist79 commented 1 year ago

Governance/Proposal votes

Bir validatorün governance/proposal oylamalarını alabilmek için aşağıda ki endpoint'i kullanabiliriz: validator cüzdan adresine ihtiyacımız var, yani self delegate address.

/cosmos/tx/v1beta1/txs?events=message.sender='{{validator_self_delegate_address}}'&events=message.action='/cosmos.gov.v1beta1.MsgVote'

Bu şekilde, validator'ün kullandığı oylar karşımıza çıkmakta.

Yaptığı oylama, hangi proposale oy verdiği, timestamp ve txhash bilgisine ihtiyacımız var, buradan sadece bu verileri alacağız. (görsele timestamp değerini yerleştiremedim)

image

Power Changes (Voting Power)

Validatorlerin voting power değerleri, her yeni delegate/redelegate/unbond işleminde değişir. bu üç işlemde birbirinden farklıdır, redelegate işlemi ise iki yönlüdür. Bir validatorden başka bir validator'e yapılan bir işlem olduğundan, endpointler değişir. Yani, X ve Y adlı iki validator düşünelim, X'ten Y'ye yapılan redelegasyonlar, Y'nin hanesine artı olarak, X'in hanesine eksi olarak yazılır, çünkü X delegasyon kaybetti, Y kazandı :) Tam tersi durumda mümkün. Şimdi, bu yüzden 4 ayrı endpoint kullanacağız totalde.

Bu özelliğimiz, explorer'da bir validatorün delegasyon değişimlerini göstermek üzerinedir. Bu yüzden burada bir iki durum var, endpointler altında açıklayacağım.

Endpoints:

Delegate:

Delegate işlemi, validator'e yeni delegasyon yapıldığı anlamına gelir. Yani güç kazandı diyebiliriz :) Bunu UI tarafında anlaşılır kılabilme adına ek bir parametre ile süslememiz gerekir. Aşağıda ki endpoint ile bir validatorün delegasyonlarını çekmiş olacağız. Bu durumda, yani genel olarak güç kazanılan durumlarda status=positive gibi bir parametre ekleyebiliriz route'a. Güç kaybedilen durumlarda ise, status=negative gibi bir parametre eklememiz yerinde olacaktır diye düşünüyorum.

Alınacak veriler ise tüm endpointlerde aynıdır. Txhash, amount, timestamp.

Power change durumu: status=positive

/cosmos/tx/v1beta1/txs?events=delegate.validator='{{validator_address}}'&order_by=ORDER_BY_DESC

Unbond:

Power change durumu: status=negative

/cosmos/tx/v1beta1/txs?events=unbond.validator='{{validator_address}}'&order_by=ORDER_BY_DESC

Redelegate:

Power change durumu: status=negative

/cosmos/tx/v1beta1/txs?events=redelegate.source_validator='{{validator_address}}'&order_by=ORDER_BY_DESC

Redelegate:

Power change durumu: status=positive

/cosmos/tx/v1beta1/txs?events=redelegate.destination_validator='{{validator_address}}'&order_by=ORDER_BY_DESC