Play
Add 10000foocoin to Alice's account. These tokens will be used as a loan
collateral.
version: 1
accounts:
- name: alice
coins:
- 20000token
- 10000foocoin
- 200000000stake
- name: bob
coins:
- 10000token
- 100000000stake
client:
openapi:
path: docs/static/openapi.yml
faucet:
name: bob
coins:
- 5token
- 100000stake
validators:
- name: alice
bonded: 100000000stake
Start a blockchain node:
ignite chain serve
Repaying a loan
Request a loan of 1000token with 100token as a fee and 1000foocoin as a
collateral from Alice's account. The deadline is set to 500 blocks:
loand tx loan request-loan 1000token 100token 1000foocoin 500 --from alice
loand q loan list-loan
Loan:
- amount: 1000token
borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw
collateral: 1000foocoin
deadline: "500"
fee: 100token
id: "0"
lender: ""
state: requested
Please be aware that the addresses displayed in your terminal window (such as those in the borrower field) will not match the ones provided in this tutorial. This is because Ignite generates new accounts each time a chain is started, unless an account has a mnemonic specified in the config.yml file.
Approve the loan from Bob's account:
loand tx loan approve-loan 0 --from bob
loand q loan list-loan
The lender field has been updated to Bob's address and the state field has
been updated to approved:
Loan:
- amount: 1000token
borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw
collateral: 1000foocoin
deadline: "500"
fee: 100token
id: "0"
lender: cosmos1qfzpxfhsu2qfy2exkukuanrkzrrexh9yeg2pr4
state: approved
loand q bank balances $(loand keys show alice -a)
The foocoin balance has been updated to 9000, because 1000foocoin has been
transferred as collateral to the module account. The token balance has been
updated to 21000, because 1000token has been transferred from Bob's account
to Alice's account as a loan:
balances:
- amount: "9000"
denom: foocoin
- amount: "100000000"
denom: stake
- amount: "21000"
denom: token
loand q bank balances $(loand keys show bob -a)
The token balance has been updated to 9000, because 1000token has been
transferred from Bob's account to Alice's account as a loan:
balances:
- amount: "100000000"
denom: stake
- amount: "9000"
denom: token
Repay the loan from Alice's account:
loand tx loan repay-loan 0 --from alice
loand q loan list-loan
The state field has been updated to repayed:
Loan:
- amount: 1000token
borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw
collateral: 1000foocoin
deadline: "500"
fee: 100token
id: "0"
lender: cosmos1qfzpxfhsu2qfy2exkukuanrkzrrexh9yeg2pr4
state: repayed
loand q bank balances $(loand keys show alice -a)
The foocoin balance has been updated to 10000, because 1000foocoin has
been transferred from the module account to Alice's account. The token balance
has been updated to 19900, because 1000token has been transferred from
Alice's account to Bob's account as a repayment and 100token has been
transferred from Alice's account to Bob's account as a fee:
balances:
- amount: "10000"
denom: foocoin
- amount: "100000000"
denom: stake
- amount: "19900"
denom: token
loand q bank balances $(loand keys show bob -a)
The token balance has been updated to 10100, because 1000token has been
transferred from Alice's account to Bob's account as a repayment and 100token
has been transferred from Alice's account to Bob's account as a fee:
balances:
- amount: "100000000"
denom: stake
- amount: "10100"
denom: token
Liquidating a loan
Request a loan of 1000token with 100token as a fee and 1000foocoin as a
collateral from Alice's account. The deadline is set to 20 blocks. The
deadline is set to a very small value, so that the loan can be quickly
liquidated in the next step:
loand tx loan request-loan 1000token 100token 1000foocoin 20 --from alice
loand q loan list-loan
A loan has been added to the list:
Loan:
- amount: 1000token
borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw
collateral: 1000foocoin
deadline: "500"
fee: 100token
id: "0"
lender: cosmos1qfzpxfhsu2qfy2exkukuanrkzrrexh9yeg2pr4
state: repayed
- amount: 1000token
borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw
collateral: 1000foocoin
deadline: "20"
fee: 100token
id: "1"
lender: ""
state: requested
Approve the loan from Bob's account:
loand tx loan approve-loan 1 --from bob
Liquidate the loan from Bob's account:
loand tx loan liquidate-loan 1 --from bob
loand q loan list-loan
The loan has been liquidated:
Loan:
- amount: 1000token
borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw
collateral: 1000foocoin
deadline: "500"
fee: 100token
id: "0"
lender: cosmos1qfzpxfhsu2qfy2exkukuanrkzrrexh9yeg2pr4
state: repayed
- amount: 1000token
borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw
collateral: 1000foocoin
deadline: "20"
fee: 100token
id: "1"
lender: cosmos1qfzpxfhsu2qfy2exkukuanrkzrrexh9yeg2pr4
state: liquidated
loand q bank balances $(loand keys show alice -a)
The foocoin balance has been updated to 9000, because 1000foocoin has been
transferred from Alice's account to the module account as a collateral. Alice
has lost her collateral, but she has kept the loan amount:
balances:
- amount: "9000"
denom: foocoin
- amount: "100000000"
denom: stake
- amount: "20900"
denom: token
loand q bank balances $(loand keys show bob -a)
The foocoin balance has been updated to 1000, because 1000foocoin has been
transferred from the module account to Bob's account as a collateral. Bob has
gained the collateral, but he has lost the loan amount:
balances:
- amount: "1000"
denom: foocoin
- amount: "100000000"
denom: stake
- amount: "9100"
denom: token