Some checks failed
Build SimApp / build (amd64) (push) Waiting to run
Build SimApp / build (arm64) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Build & Push / build (push) Waiting to run
Run Gosec / Gosec (push) Waiting to run
Lint / golangci-lint (push) Waiting to run
Checks dependencies and mocks generation / Check go mod tidy (push) Waiting to run
Checks dependencies and mocks generation / Check up to date mocks (push) Waiting to run
System Tests / setup (push) Waiting to run
System Tests / test-system (push) Blocked by required conditions
System Tests / test-system-legacy (push) Blocked by required conditions
Tests / Code Coverage / split-test-files (push) Waiting to run
Tests / Code Coverage / tests (00) (push) Blocked by required conditions
Tests / Code Coverage / tests (01) (push) Blocked by required conditions
Tests / Code Coverage / tests (02) (push) Blocked by required conditions
Tests / Code Coverage / tests (03) (push) Blocked by required conditions
Tests / Code Coverage / test-integration (push) Waiting to run
Tests / Code Coverage / test-e2e (push) Waiting to run
Tests / Code Coverage / repo-analysis (push) Blocked by required conditions
Tests / Code Coverage / test-sim-nondeterminism (push) Waiting to run
Tests / Code Coverage / test-clientv2 (push) Waiting to run
Tests / Code Coverage / test-core (push) Waiting to run
Tests / Code Coverage / test-depinject (push) Waiting to run
Tests / Code Coverage / test-errors (push) Waiting to run
Tests / Code Coverage / test-math (push) Waiting to run
Tests / Code Coverage / test-schema (push) Waiting to run
Tests / Code Coverage / test-collections (push) Waiting to run
Tests / Code Coverage / test-cosmovisor (push) Waiting to run
Tests / Code Coverage / test-confix (push) Waiting to run
Tests / Code Coverage / test-store (push) Waiting to run
Tests / Code Coverage / test-log (push) Waiting to run
Tests / Code Coverage / test-x-tx (push) Waiting to run
Tests / Code Coverage / test-x-nft (push) Waiting to run
Tests / Code Coverage / test-x-circuit (push) Waiting to run
Tests / Code Coverage / test-x-feegrant (push) Waiting to run
Tests / Code Coverage / test-x-evidence (push) Waiting to run
Tests / Code Coverage / test-x-upgrade (push) Waiting to run
Tests / Code Coverage / test-tools-benchmark (push) Waiting to run
Build & Push SDK Proto Builder / build (push) Has been cancelled
51 lines
1.6 KiB
Text
51 lines
1.6 KiB
Text
@startuml
|
|
'https://plantuml.com/sequence-diagram
|
|
|
|
title: Undelegate
|
|
|
|
msgServer -> keeper : Undelegate(delAddr, valAddr, tokenAmount)
|
|
|
|
keeper -> keeper : calculate number of shares the tokenAmount represents
|
|
|
|
alt wrong denom
|
|
msgServer <-- keeper : error
|
|
end
|
|
|
|
group Unbond(delAddr, valAddr, shares)
|
|
keeper -> keeper: BeforeDelegationSharesModified hook
|
|
alt no such delegation
|
|
keeper --> msgServer : error
|
|
end
|
|
alt not enough shares
|
|
keeper --> msgServer : error
|
|
end
|
|
alt delegator is the operator of the validator\nand validator is not already jailed\nand unbonding would put self-delegation under min threshold
|
|
keeper -> keeper : jail the validator, but proceed with unbonding
|
|
note left : Default min delegation threshold : 1 share
|
|
end
|
|
|
|
database store
|
|
|
|
alt complete unbonding, all shares removed
|
|
keeper -> store : remove delegation object
|
|
else there are still shares delegated (not a complete undbonding)
|
|
keeper -> store : update delegation object
|
|
keeper -> keeper : AfterDelegationModified hook
|
|
end
|
|
|
|
keeper -> store : update validator power index
|
|
keeper -> store : update validator information (including token amount)
|
|
|
|
alt validator status is "unbonded" and it has no more tokens
|
|
keeper -> store : delete the validator
|
|
note right : otherwise, do this in EndBlock once validator is unbonded
|
|
end
|
|
end
|
|
|
|
alt validator is bonded
|
|
keeper -> bankKeeper : send tokens from bonded pool to not bonded pool
|
|
end
|
|
|
|
msgServer -> msgServer : emit event : EventTypeUnbond(delAddr, valAddr, tokenAmount, completion time)
|
|
|
|
@enduml
|