Skip to main content
Version: v28

Play

Add 10000foocoin to Alice's account. These tokens will be used as a loan collateral.

config.yml
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 --chain-id loan
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 --chain-id loan
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 --chain-id loan
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 --chain-id loan
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 --chain-id loan

Liquidate the loan from Bob's account:

loand tx loan liquidate-loan 1 --from bob --chain-id loan
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