Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(x/accounts/defaults/lockup): Add tutorial document #22168

Merged
merged 9 commits into from
Oct 9, 2024

Conversation

sontrinh16
Copy link
Member

@sontrinh16 sontrinh16 commented Oct 8, 2024

Description

Closes: #XXXX


Author Checklist

All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.

I have...

  • included the correct type prefix in the PR title, you can find examples of the prefixes below:
  • confirmed ! in the type prefix if API or client breaking change
  • targeted the correct branch (see PR Targeting)
  • provided a link to the relevant issue or specification
  • reviewed "Files changed" and left comments if necessary
  • included the necessary unit and integration tests
  • added a changelog entry to CHANGELOG.md
  • updated the relevant documentation or specification, including comments for documenting Go code
  • confirmed all CI checks have passed

Reviewers Checklist

All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.

Please see Pull Request Reviewer section in the contributing guide for more information on how to review a pull request.

I have...

  • confirmed the correct type prefix in the PR title
  • confirmed all author checklist items have been addressed
  • reviewed state machine logic, API design and naming, documentation is accurate, tests and test coverage

Summary by CodeRabbit

  • New Features
    • Introduced a comprehensive tutorial for using lockup accounts within the Cosmos SDK, covering setup, initialization, execution, and querying.
  • Documentation
    • Added detailed instructions and examples for creating wallets, initializing lockup accounts, executing operations, and querying account states.

@sontrinh16 sontrinh16 requested review from testinginprod and a team as code owners October 8, 2024 07:43
Copy link
Contributor

coderabbitai bot commented Oct 8, 2024

📝 Walkthrough
📝 Walkthrough

Walkthrough

The changes introduce an updated documentation file, TUTORIAL.md, which provides a structured guide for using lockup accounts within the Cosmos SDK. The document is organized into four main sections: Setup, Init, Execution, and Query, each detailing specific processes and requirements for managing lockup accounts, including wallet creation, initialization, message execution, and querying account states.

Changes

File Path Change Summary
x/accounts/defaults/lockup/TUTORIAL.md Enhanced documentation providing guidance on setup, initialization, execution, and querying of lockup accounts.

Possibly related PRs

Suggested reviewers

  • tac0turtle
  • julienrbrt

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (16)
x/accounts/defaults/lockup/TUTORIAL.md (16)

1-13: Add an introductory paragraph for context

The tutorial starts abruptly without providing context about lockup accounts. Consider adding a brief introductory paragraph explaining what lockup accounts are and their purpose in the Cosmos SDK. This will help readers understand the importance of the tutorial and set the stage for the following sections.

🧰 Tools
🪛 LanguageTool

[duplication] ~11-~11: Possible typo: you repeated a word
Context: ...ken) * Send coins * Query * Query account info ...

(ENGLISH_WORD_REPEAT_RULE)


15-22: Improve clarity and fix grammatical issues in the Setup section

Consider the following improvements:

  1. Add a comma after "To create a lockup account" for better readability.
  2. Clarify the purpose of each wallet (granter and owner) in the context of lockup accounts.
  3. Consider adding a brief explanation of what simd is for readers unfamiliar with the tool.

Here's a suggested revision:

## Setup 

To create a lockup account, we need 2 wallets: one for the granter (who will allocate funds to the lockup account) and one for the owner (who will manage the lockup account). You can create new wallets or use existing ones.

Use the following commands to create the wallets using the `simd` command-line tool:

```bash
simd keys add granter --keyring-backend test --home ./.testnets/node0/simd/
simd keys add owner --keyring-backend test --home ./.testnets/node0/simd/

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary><blockquote>

[typographical] ~17-~17: It seems that a comma is missing.
Context: ...periods)  ## Setup   To create a lockup account we need 2 wallets (newly created or use...

(IN_ORDER_TO_VB_COMMA)

</blockquote></details>

</details>

---

`24-29`: **Improve clarity and fix grammatical issues in the Init section introduction**

Consider the following improvements:
1. Fix the verb agreement in "This message depend" to "This message depends".
2. Clarify the relationship between the granter and the lockup account.

Suggested revision:

```markdown
## Init

The granter must have enough tokens to allocate to the lockup account during the initialization process. The owner wallet should be associated with the individual to whom the granter wants to grant the funds.

To initialize a lockup account, the granter needs to craft an init message. The structure of this message depends on the type of lockup account being created.
🧰 Tools
🪛 LanguageTool

[typographical] ~25-~25: Consider adding a comma after ‘Normally’ for more clarity.
Context: ...e ./.testnets/node0/simd/ ``` ## Init Normally the granter must have enough token to g...

(RB_LY_COMMA)


[grammar] ~28-~28: The verb ‘depend’ is plural. Did you mean: “depends”? Did you use a verb instead of a noun?
Context: ...kup account init messages. This message depend on what type of lockup account the gran...

(PLURAL_VERB_AFTER_THIS)


[uncategorized] ~28-~28: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...what type of lockup account the granter want to create.
For continous, delay...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


32-44: Improve explanation of continuous, delayed, and permanent locking accounts

  1. Fix the spelling of "continuous" (currently misspelled as "continous").
  2. Explain the differences between continuous, delayed, and permanent locking accounts.
  3. Clarify the purpose of each field in the JSON structure.

Consider adding explanations like this:

For continuous, delayed, and permanent locking accounts:

```go
{
    "owner": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
    "end_time": 1495793860,
    "start_time": 1465793854
}
  • owner: The address of the account that will manage the lockup account.
  • end_time: The Unix timestamp when the tokens will be fully unlocked.
  • start_time: The Unix timestamp when the locking period begins (only required for continuous locking accounts).

Note: start_time is only needed for continuous locking account initialization. For delayed and permanent locking accounts, you don't need to include it. An error will be returned if start_time is not provided when creating a continuous locking account.

Explanation of account types:

  • Continuous locking: Tokens are gradually unlocked between the start and end times.
  • Delayed locking: Tokens are fully locked until the end time, then fully unlocked.
  • Permanent locking: Tokens are permanently locked (no end time).

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary><blockquote>

[uncategorized] ~43-~43: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... you dont have to set it in. Error will returned if `start_time` is not provided when cr...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)

---

[uncategorized] ~43-~43: You might be missing the article “a” here.
Context: ...art_time` is not provided when creating continous locking account* :::  </br>   For perio...

(AI_EN_LECTOR_MISSING_DETERMINER_A)

</blockquote></details>

</details>

---

`48-76`: **Improve explanation of periodic locking accounts**

1. Explain the concept of periodic locking accounts.
2. Clarify the purpose of each field in the JSON structure.
3. Fix the grammatical issue in the explanation of locking duration.

Consider revising this section as follows:

```markdown
For periodic locking accounts:

```go
{
  "owner": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
  "locking_periods": [
      {
        "length": 84600,
        "amount": {
            "denom": "stake",
            "amount": "2000"
        }
      },
      {
        "length": 84600,
        "amount": {
            "denom": "stake",
            "amount": "1500"
        }
      }
  ],
  "start_time": 1465793854
}

Explanation of fields:

  • owner: The address of the account that will manage the lockup account.
  • locking_periods: An array of periods, each specifying a duration and an amount to be unlocked after that duration.
    • length: The duration of the period in seconds.
    • amount: The amount and denomination of tokens to be unlocked after the period.
  • start_time: The Unix timestamp when the first locking period begins.

The total locking duration for a periodic locking account is the sum of all period lengths specified in locking_periods.


---

`77-92`: **Improve explanation of account initialization process**

1. Clarify the steps for initializing an account.
2. Explain the purpose of each parameter in the command.

Consider revising this section as follows:

```markdown
To initialize the account, follow these steps:

1. Create a JSON file (e.g., `init.json`) with the appropriate structure for your chosen lockup account type.
2. Run the following command to initialize the account:

```bash
initcontents=$(cat init.json)
simd tx accounts init <lockup_type> "$initcontents" --fees 5stake --chain-id $CHAINID --keyring-backend test --home ./.testnets/node0/simd/ --from granter

Replace <lockup_type> with one of the following options:

  • continuous-locking-account
  • delayed-locking-account
  • periodic-locking-account
  • permanent-locking-account

Explanation of command parameters:

  • --fees: The transaction fee (adjust as needed).
  • --chain-id: The ID of the blockchain network.
  • --keyring-backend: The type of keyring to use for key storage.
  • --home: The directory containing the node's configuration files.
  • --from: The account (granter) initiating the transaction.

If successful, check the transaction result for the newly created lockup account address. You can send tokens to this address like a normal account.


---

`96-105`: **Improve clarity and consistency in the Execution section introduction**

Consider the following improvements:
1. Explain the purpose of the Execution section.
2. Clarify the relationship between `execute-msg-type-url` and `msgcontents`.
3. Fix the grammatical issue in "corresponds to lockup account available executions".

Suggested revision:

```markdown
## Execution

This section explains how to perform various operations on a lockup account, such as delegating tokens, undelegating, withdrawing rewards, and more.

To execute a message, use the following command structure:

```bash
msgcontents=$(cat msg.json)
simd tx accounts execute <account_address> <execute-msg-type-url> "$msgcontents" --fees 5stake --chain-id $CHAINID --keyring-backend test --home ./.testnets/node0/simd/ --from owner
  • <account_address>: The address of the lockup account.
  • <execute-msg-type-url>: The type of execution message (explained in each subsection below).
  • msg.json: A JSON file containing the specific parameters for the execution.

The following subsections detail the available execution types and their corresponding execute-msg-type-url and JSON structures.


<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary><blockquote>

[uncategorized] ~105-~105: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...xecute-msg-type-url` and `msgcontents`  corresponds to lockup account available executions,...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)

</blockquote></details>

</details>

---

`107-126`: **Improve explanation of the Delegate execution**

1. Explain the purpose of delegation in the context of lockup accounts.
2. Clarify the meaning of each field in the JSON structure.

Consider revising this section as follows:

```markdown
### Delegate

The Delegate execution allows the owner to delegate tokens from the lockup account to a validator.

Execute message type URL: `cosmos.accounts.defaults.lockup.MsgDelegate`

Example JSON file (`msg.json`):

```json
{
    "sender": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
    "validator_address": "cosmosvaloper1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
    "amount": {
        "amount": "100",
        "denom": "stake"
    }
}
  • sender: The address of the lockup account owner.
  • validator_address: The address of the validator to delegate to.
  • amount: The amount and denomination of tokens to delegate.

Warning: The sender must be the address of the owner of the lockup account. If the sender is not the owner, an error will be returned.


<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary><blockquote>

[grammar] ~108-~108: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...e executions, which are:  ### Delegate  The execute message type url for this execution is ...

(A_INFINITIVE)

---

[uncategorized] ~125-~125: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ```   :::warning The `sender` field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)

---

[uncategorized] ~125-~125: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. :::  ### Und...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

</blockquote></details>

</details>

---

`128-147`: **Improve explanation of the Undelegate execution**

1. Explain the purpose of undelegation in the context of lockup accounts.
2. Ensure consistency with the Delegate section in terms of structure and explanations.

Consider revising this section as follows:

```markdown
### Undelegate

The Undelegate execution allows the owner to undelegate tokens from a validator back to the lockup account.

Execute message type URL: `cosmos.accounts.defaults.lockup.MsgUndelegate`

Example JSON file (`msg.json`):

```json
{
    "sender": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
    "validator_address": "cosmosvaloper1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
    "amount": {
        "amount": "100",
        "denom": "stake"
    }
}
  • sender: The address of the lockup account owner.
  • validator_address: The address of the validator to undelegate from.
  • amount: The amount and denomination of tokens to undelegate.

Warning: The sender must be the address of the owner of the lockup account. If the sender is not the owner, an error will be returned.


<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary><blockquote>

[grammar] ~129-~129: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. :::  ### Undelegate  The execute message type url for this execution is ...

(A_INFINITIVE)

---

[uncategorized] ~146-~146: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ```   :::warning The `sender` field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)

---

[uncategorized] ~146-~146: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. :::  ### Wit...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

</blockquote></details>

</details>

---

`149-164`: **Improve explanation of the Withdraw Reward execution**

1. Explain the purpose of withdrawing rewards in the context of lockup accounts.
2. Ensure consistency with other sections in terms of structure and explanations.

Consider revising this section as follows:

```markdown
### Withdraw Reward

The Withdraw Reward execution allows the owner to withdraw staking rewards earned by the lockup account from a specific validator.

Execute message type URL: `cosmos.accounts.defaults.lockup.MsgWithdrawReward`

Example JSON file (`msg.json`):

```json
{
    "sender": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
    "validator_address": "cosmosvaloper1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45"
}
  • sender: The address of the lockup account owner.
  • validator_address: The address of the validator from which to withdraw rewards.

Warning: The sender must be the address of the owner of the lockup account. If the sender is not the owner, an error will be returned.


<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary><blockquote>

[grammar] ~150-~150: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...be returned. :::  ### Withdraw reward   The execute message type url for this execution is ...

(A_INFINITIVE)

---

[uncategorized] ~163-~163: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...", } ```  :::warning The `sender` field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)

---

[uncategorized] ~163-~163: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. :::  ### Wit...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

</blockquote></details>

</details>

---

`166-184`: **Improve explanation of the Withdraw Unlocked Token execution**

1. Explain the purpose of withdrawing unlocked tokens in the context of lockup accounts.
2. Clarify the difference between `withdrawer` and `to_address`.
3. Explain the purpose of the `denoms` field.

Consider revising this section as follows:

```markdown
### Withdraw Unlocked Token

The Withdraw Unlocked Token execution allows the owner to withdraw tokens that have been unlocked from the lockup account.

Execute message type URL: `cosmos.accounts.defaults.lockup.MsgWithdraw`

Example JSON file (`msg.json`):

```json
{
    "withdrawer": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx46",
    "to_address": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx47",
    "denoms": ["stake"]
}
  • withdrawer: The address of the lockup account owner.
  • to_address: The address to which the unlocked tokens will be sent.
  • denoms: An array of token denominations to withdraw. If empty, all unlocked tokens will be withdrawn.

Warning: The withdrawer must be the address of the owner of the lockup account. If the withdrawer is not the owner, an error will be returned.


<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary><blockquote>

[grammar] ~167-~167: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...rned. :::  ### Withdraw unlocked token  The execute message type url for this execution is ...

(A_INFINITIVE)

---

[uncategorized] ~183-~183: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...```   :::warning The `withdrawer` field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)

---

[uncategorized] ~183-~183: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. :::  ### Sen...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

</blockquote></details>

</details>

---

`186-205`: **Improve explanation of the Send Coins execution**

1. Explain the purpose of sending coins in the context of lockup accounts.
2. Ensure consistency with other sections in terms of structure and explanations.

Consider revising this section as follows:

```markdown
### Send Coins

The Send Coins execution allows the owner to send unlocked tokens from the lockup account to another address.

Execute message type URL: `cosmos.accounts.defaults.lockup.MsgSend`

Example JSON file (`msg.json`):

```json
{
    "sender": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
    "to_address": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx46",
    "amount": {
        "amount": "100",
        "denom": "stake"
    }
}
  • sender: The address of the lockup account owner.
  • to_address: The address to which the coins will be sent.
  • amount: The amount and denomination of coins to send.

Warning: The sender must be the address of the owner of the lockup account. If the sender is not the owner, an error will be returned.


<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary><blockquote>

[grammar] ~187-~187: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. :::  ### Send coins  The execute message type url for this execution is ...

(A_INFINITIVE)

---

[uncategorized] ~204-~204: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ```   :::warning The `sender` field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)

---

[uncategorized] ~204-~204: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. :::  ## Quer...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

</blockquote></details>

</details>

---

`207-214`: **Improve clarity and consistency in the Query section introduction**

Consider the following improvements:
1. Explain the purpose of the Query section.
2. Clarify the relationship between `query-request-type-url` and `querycontents`.
3. Fix the grammatical issue in the command (change `tx` to `query`).

Suggested revision:

```markdown
## Query

This section explains how to retrieve information about a lockup account's state, including account details and locking periods.

To query a lockup account state, use the following command structure:

```bash
querycontents=$(cat query.json)
simd query accounts query <account_address> <query-request-type-url> "$querycontents" --chain-id $CHAINID --node <node_address>
  • <account_address>: The address of the lockup account.
  • <query-request-type-url>: The type of query request (explained in each subsection below).
  • query.json: A JSON file containing any specific parameters for the query (if required).

The following subsections detail the available query types and their corresponding query-request-type-url and JSON structures.


---

`216-233`: **Improve explanation of the Query Account Info**

1. Explain the purpose of querying account info.
2. Clarify the structure of the response.

Consider revising this section as follows:

```markdown
### Query Account Info

This query retrieves detailed information about a lockup account.

Query request type URL: `cosmos.accounts.defaults.lockup.QueryLockupAccountInfoRequest`

No input is required for this query. You can use an empty JSON file (`query.json`) or omit the `$querycontents` parameter.

The response will include the following information:

- Original locked amount
- Delegated amount that is locked
- Delegated amount that is free (unlocked)
- Start and end time of the lockup period
- Owner address
- Current locked and unlocked amounts

This information provides a comprehensive overview of the lockup account's current state and history.
🧰 Tools
🪛 LanguageTool

[grammar] ~218-~218: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...QueryLockupAccountInfoRequest` does not required an input. Account informations includi...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)


[misspelling] ~220-~220: The word ‘informations’ is a legal term. In standard English, the word ‘information’ is a non-count noun.
Context: ...t` does not required an input. Account informations including: * original locked amount *...

(INFORMATIONS)


235-246: Improve explanation of the Query Periodic Lockup Account Locking Periods

  1. Explain the purpose of querying locking periods for periodic lockup accounts.
  2. Clarify the structure of the response.

Consider revising this section as follows:

### Query Periodic Lockup Account Locking Periods

This query retrieves information about the locking periods of a periodic lockup account.

> Note: This query can only be used with periodic lockup accounts.

Query request type URL: `cosmos.accounts.defaults.lockup.QueryLockingPeriodsRequest`

No input is required for this query. You can use an empty JSON file (`query.json`) or omit the `$querycontents` parameter.

The response will include:

- A list of periods, each containing:
  - Duration of the period
  - Amount of tokens to be unlocked after the period

This information helps track the unlocking schedule for tokens in a periodic lockup account.
🧰 Tools
🪛 LanguageTool

[grammar] ~240-~240: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...e QueryLockingPeriodsRequest does not required an input. Locking periods including: ...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)


1-246: General suggestions for improving the tutorial

  1. Add a brief introduction at the beginning of the document to explain what lockup accounts are and their purpose in the Cosmos SDK ecosystem.

  2. Consider adding a table of contents with clickable links to each section for easier navigation.

  3. Standardize the format of command examples and JSON structures throughout the document. Use consistent syntax highlighting for better readability.

  4. Add more explanations about the purpose and implications of each operation (init, delegate, undelegate, etc.) in the context of lockup accounts.

  5. Consider adding a troubleshooting section or FAQ to address common issues users might encounter when working with lockup accounts.

  6. Include examples of successful responses for each query and execution to help users understand what to expect.

  7. Add cross-references between related sections (e.g., link the Delegate and Undelegate sections) to help users understand the relationships between different operations.

  8. Consider adding a glossary of terms specific to lockup accounts and the Cosmos SDK to help newcomers understand the terminology used throughout the document.

These improvements will enhance the overall quality and usefulness of the tutorial, making it more accessible to users of varying experience levels.

🧰 Tools
🪛 LanguageTool

[duplication] ~11-~11: Possible typo: you repeated a word
Context: ...ken) * Send coins * Query * Query account info ...

(ENGLISH_WORD_REPEAT_RULE)


[typographical] ~17-~17: It seems that a comma is missing.
Context: ...periods) ## Setup To create a lockup account we need 2 wallets (newly created or use...

(IN_ORDER_TO_VB_COMMA)


[typographical] ~25-~25: Consider adding a comma after ‘Normally’ for more clarity.
Context: ...e ./.testnets/node0/simd/ ``` ## Init Normally the granter must have enough token to g...

(RB_LY_COMMA)


[grammar] ~28-~28: The verb ‘depend’ is plural. Did you mean: “depends”? Did you use a verb instead of a noun?
Context: ...kup account init messages. This message depend on what type of lockup account the gran...

(PLURAL_VERB_AFTER_THIS)


[uncategorized] ~28-~28: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...what type of lockup account the granter want to create.
For continous, delay...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~43-~43: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... you dont have to set it in. Error will returned if start_time is not provided when cr...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)


[uncategorized] ~43-~43: You might be missing the article “a” here.
Context: ...art_time` is not provided when creating continous locking account* :::
For perio...

(AI_EN_LECTOR_MISSING_DETERMINER_A)


[uncategorized] ~94-~94: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...he lockup account address. You can send token to it like a normal account. ## Execu...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~105-~105: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...xecute-msg-type-urlandmsgcontents` corresponds to lockup account available executions,...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[grammar] ~108-~108: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...e executions, which are: ### Delegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~125-~125: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~125-~125: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Und...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~129-~129: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Undelegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~146-~146: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~146-~146: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~150-~150: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...be returned. ::: ### Withdraw reward The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~163-~163: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...", } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~163-~163: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~167-~167: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...rned. ::: ### Withdraw unlocked token The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~183-~183: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...``` :::warning The withdrawer field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~183-~183: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Sen...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~187-~187: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Send coins The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~204-~204: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~204-~204: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ## Quer...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~218-~218: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...QueryLockupAccountInfoRequest` does not required an input. Account informations includi...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)


[misspelling] ~220-~220: The word ‘informations’ is a legal term. In standard English, the word ‘information’ is a non-count noun.
Context: ...t` does not required an input. Account informations including: * original locked amount *...

(INFORMATIONS)


[grammar] ~240-~240: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...e QueryLockingPeriodsRequest does not required an input. Locking periods including: ...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)

📜 Review details

Configuration used: .coderabbit.yml
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 9076487 and 98904d4.

📒 Files selected for processing (1)
  • x/accounts/defaults/lockup/TUTORIAL.md (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
x/accounts/defaults/lockup/TUTORIAL.md (1)

Pattern **/*.md: "Assess the documentation for misspellings, grammatical errors, missing documentation and correctness"

🪛 LanguageTool
x/accounts/defaults/lockup/TUTORIAL.md

[duplication] ~11-~11: Possible typo: you repeated a word
Context: ...ken) * Send coins * Query * Query account info ...

(ENGLISH_WORD_REPEAT_RULE)


[typographical] ~17-~17: It seems that a comma is missing.
Context: ...periods) ## Setup To create a lockup account we need 2 wallets (newly created or use...

(IN_ORDER_TO_VB_COMMA)


[typographical] ~25-~25: Consider adding a comma after ‘Normally’ for more clarity.
Context: ...e ./.testnets/node0/simd/ ``` ## Init Normally the granter must have enough token to g...

(RB_LY_COMMA)


[grammar] ~28-~28: The verb ‘depend’ is plural. Did you mean: “depends”? Did you use a verb instead of a noun?
Context: ...kup account init messages. This message depend on what type of lockup account the gran...

(PLURAL_VERB_AFTER_THIS)


[uncategorized] ~28-~28: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...what type of lockup account the granter want to create.
For continous, delay...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~43-~43: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... you dont have to set it in. Error will returned if start_time is not provided when cr...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)


[uncategorized] ~43-~43: You might be missing the article “a” here.
Context: ...art_time` is not provided when creating continous locking account* :::
For perio...

(AI_EN_LECTOR_MISSING_DETERMINER_A)


[uncategorized] ~94-~94: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...he lockup account address. You can send token to it like a normal account. ## Execu...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~105-~105: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...xecute-msg-type-urlandmsgcontents` corresponds to lockup account available executions,...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[grammar] ~108-~108: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...e executions, which are: ### Delegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~125-~125: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~125-~125: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Und...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~129-~129: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Undelegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~146-~146: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~146-~146: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~150-~150: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...be returned. ::: ### Withdraw reward The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~163-~163: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...", } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~163-~163: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~167-~167: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...rned. ::: ### Withdraw unlocked token The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~183-~183: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...``` :::warning The withdrawer field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~183-~183: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Sen...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~187-~187: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Send coins The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~204-~204: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~204-~204: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ## Quer...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~218-~218: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...QueryLockupAccountInfoRequest` does not required an input. Account informations includi...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)


[misspelling] ~220-~220: The word ‘informations’ is a legal term. In standard English, the word ‘information’ is a non-count noun.
Context: ...t` does not required an input. Account informations including: * original locked amount *...

(INFORMATIONS)


[grammar] ~240-~240: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...e QueryLockingPeriodsRequest does not required an input. Locking periods including: ...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)

@julienrbrt julienrbrt added the backport/v0.52.x PR scheduled for inclusion in the v0.52's next stable release label Oct 8, 2024
x/accounts/defaults/lockup/TUTORIAL.md Show resolved Hide resolved
x/accounts/defaults/lockup/TUTORIAL.md Outdated Show resolved Hide resolved
x/accounts/defaults/lockup/TUTORIAL.md Outdated Show resolved Hide resolved
x/accounts/defaults/lockup/TUTORIAL.md Outdated Show resolved Hide resolved
x/accounts/defaults/lockup/TUTORIAL.md Outdated Show resolved Hide resolved
x/accounts/defaults/lockup/TUTORIAL.md Outdated Show resolved Hide resolved
sontrinh16 and others added 3 commits October 8, 2024 23:52
Co-authored-by: Marko <marko@baricevic.me>
Co-authored-by: Julien Robert <julien@rbrt.fr>
Co-authored-by: Julien Robert <julien@rbrt.fr>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Outside diff range and nitpick comments (2)
x/accounts/defaults/lockup/TUTORIAL.md (2)

1-14: Add an introduction and improve the table of contents

Consider adding a brief introduction or abstract at the beginning of the document to provide context for the tutorial. This will help readers understand the purpose and scope of the document.

Also, improve the table of contents by using proper Markdown list formatting. Here's a suggested format:

# Using lockup account on Cosmos SDK

## Introduction
[Add a brief introduction here]

## Table of Contents
- [Setup](#setup)
- [Init](#init)
- [Execution](#execution)
  - [Delegate](#delegate)
  - [Undelegate](#undelegate)
  - [Withdraw reward](#withdraw-reward)
  - [Withdraw unlocked token](#withdraw-unlocked-token)
  - [Send coins](#send-coins)
- [Query](#query)
  - [Query account info](#query-account-info)
  - [Query periodic lockup account locking periods](#query-periodic-lockup-account-locking-periods)

This structure will improve readability and navigation within the document.

🧰 Tools
🪛 LanguageTool

[duplication] ~11-~11: Possible typo: you repeated a word
Context: ...ken) * Send coins * Query * Query account info ...

(ENGLISH_WORD_REPEAT_RULE)


15-22: Minor grammatical correction in the Setup section

In the first sentence of the Setup section, consider adding a comma for better clarity:

- To create a lockup account we need 2 wallets (newly created or use any of the existing wallet that you have) one for the granter and one for the owner of the lockup account. 
+ To create a lockup account, we need 2 wallets (newly created or use any of the existing wallet that you have), one for the granter and one for the owner of the lockup account. 

This small change improves the readability of the sentence.

🧰 Tools
🪛 LanguageTool

[typographical] ~17-~17: It seems that a comma is missing.
Context: ...periods) ## Setup To create a lockup account we need 2 wallets (newly created or use...

(IN_ORDER_TO_VB_COMMA)

📜 Review details

Configuration used: .coderabbit.yml
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 98904d4 and 59fa516.

📒 Files selected for processing (1)
  • x/accounts/defaults/lockup/TUTORIAL.md (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
x/accounts/defaults/lockup/TUTORIAL.md (1)

Pattern **/*.md: "Assess the documentation for misspellings, grammatical errors, missing documentation and correctness"

🪛 LanguageTool
x/accounts/defaults/lockup/TUTORIAL.md

[duplication] ~11-~11: Possible typo: you repeated a word
Context: ...ken) * Send coins * Query * Query account info ...

(ENGLISH_WORD_REPEAT_RULE)


[typographical] ~17-~17: It seems that a comma is missing.
Context: ...periods) ## Setup To create a lockup account we need 2 wallets (newly created or use...

(IN_ORDER_TO_VB_COMMA)


[typographical] ~25-~25: Consider adding a comma after ‘Normally’ for more clarity.
Context: ...e ./.testnets/node0/simd/ ``` ## Init Normally the granter must have enough token to c...

(RB_LY_COMMA)


[grammar] ~28-~28: The verb ‘depend’ is plural. Did you mean: “depends”? Did you use a verb instead of a noun?
Context: ...kup account init messages. This message depend on what type of lockup account the gran...

(PLURAL_VERB_AFTER_THIS)


[style] ~28-~28: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...what type of lockup account the granter want to create.
For continous, delayed,...

(REP_WANT_TO_VB)


[grammar] ~43-~43: The modal verb ‘will’ requires the verb’s base form.
Context: ... you dont have to set it in. Error will returned if start_time is not provided when cr...

(MD_BASEFORM)


[grammar] ~108-~108: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...e executions, which are: ### Delegate The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~129-~129: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Undelegate The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~150-~150: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...be returned. ::: ### Withdraw reward The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~167-~167: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...rned. ::: ### Withdraw unlocked token The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~187-~187: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Send coins The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~218-~218: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...QueryLockupAccountInfoRequest` does not required an input. Account informations includi...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)


[misspelling] ~220-~220: The word ‘informations’ is a legal term. In standard English, the word ‘information’ is a non-count noun.
Context: ...t` does not required an input. Account informations including: * original locked amount *...

(INFORMATIONS)


[grammar] ~240-~240: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...e QueryLockingPeriodsRequest does not required an input. Locking periods including: ...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)

Comment on lines 24 to 93
## Init

Normally the granter must have enough token to create to the lockup account during the lockup account init process. The owner wallet should be associated with the individual that the granter wants to create the lockup account for.

Now, the granter can craft the lockup account init messages. This message depend on what type of lockup account the granter want to create.

</br>

For continous, delayed, permanent locking account:

```go
{
"owner": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
"end_time": 1495793860
"start_time": 1465793854
}
```

:::info
`start_time` is only needed for continous locking account init process. For the other two, you dont have to set it in. Error will returned if `start_time` is not provided when creating continous locking account*
:::

</br>

For periodic locking account:

```go
{
"owner": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
"locking_periods": [
{
"length": 84600
"amount": {
"denom": "stake",
"amount": 2000
}
},
{
"length": 84600
"amount": {
"denom": "stake",
"amount": 1500
}
}
]
"start_time": 1465793854
}
```

Periodic locking account locking duration is the combines of all the period length from `locking_periods`.

The `owner` field takes a string while `start_time` and `end_time` takes a timestamp as value. `locking_periods` are an array of `period`s which consist of 2 field: `length` for the duration of that period and the `amount` that will be release after such duration.

To initialize the account, we have to run the accounts init command passing the account type and the json string for the init message.

```bash
initcontents=$(cat init.json)
simd tx accounts init <lockup_type> $initcontents --fees 5stake --chain-id $CHAINID --keyring-backend test --home ./.testnets/node0/simd/ --from granter
```

Whereas the available `lockup_type` options are:

* continuous-locking-account

* delayed-locking-account

* periodic-locking-account

* permanent-locking-account

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Improve clarity, consistency, and formatting in the Init section

  1. Consider replacing "granter" with "creator" or "admin" throughout the document for clarity, as suggested in past comments.

  2. Improve the structure and grammar of the first paragraph:

- Normally the granter must have enough token to create to the lockup account during the lockup account init process. The owner wallet should be associated with the individual that the granter wants to create the lockup account for.
+ The creator must have sufficient tokens to initialize the lockup account. The owner wallet should be associated with the individual for whom the creator is establishing the lockup account.
  1. Use language-specific formatting for JSON code blocks. For example:
- ```go
+ ```json
{
    "owner": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
    "end_time": 1495793860,
    "start_time": 1465793854
}
  1. Improve the explanation of start_time:
- `start_time` is only needed for continous locking account init process. For the other two, you dont have to set it in. Error will returned if `start_time` is not provided when creating continous locking account*
+ `start_time` is only required for continuous locking account initialization. For other account types, it's optional. An error will be returned if `start_time` is not provided when creating a continuous locking account.
  1. Use consistent formatting for command examples:
initcontents=$(cat init.json)
simd tx accounts init <lockup_type> "$initcontents" \
    --fees 5stake \
    --chain-id "$CHAINID" \
    --keyring-backend test \
    --home ./.testnets/node0/simd/ \
    --from creator

These changes will improve the overall clarity and consistency of the Init section.

🧰 Tools
🪛 LanguageTool

[typographical] ~25-~25: Consider adding a comma after ‘Normally’ for more clarity.
Context: ...e ./.testnets/node0/simd/ ``` ## Init Normally the granter must have enough token to c...

(RB_LY_COMMA)


[grammar] ~28-~28: The verb ‘depend’ is plural. Did you mean: “depends”? Did you use a verb instead of a noun?
Context: ...kup account init messages. This message depend on what type of lockup account the gran...

(PLURAL_VERB_AFTER_THIS)


[style] ~28-~28: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...what type of lockup account the granter want to create.
For continous, delayed,...

(REP_WANT_TO_VB)


[grammar] ~43-~43: The modal verb ‘will’ requires the verb’s base form.
Context: ... you dont have to set it in. Error will returned if start_time is not provided when cr...

(MD_BASEFORM)

Comment on lines 94 to 205

### Delegate

The execute message type url for this execution is `cosmos.accounts.defaults.lockup.MsgDelegate`.

Example of json file:

```go
{
"sender": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
"validator_address": "cosmosvaloper1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
"amount": {
"amount": 100
"denom": "stake"
}
}
```

:::warning
The `sender` field are the address of the owner of the lockup account. If the sender is not the owner an error will be returned.
:::

### Undelegate

The execute message type url for this execution is `cosmos.accounts.defaults.lockup.MsgUndelegate`.

Example of json file:

```go
{
"sender": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
"validator_address": "cosmosvaloper1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
"amount": {
"amount": 100
"denom": "stake"
}
}
```

:::warning
The `sender` field are the address of the owner of the lockup account. If the sender is not the owner an error will be returned.
:::

### Withdraw reward

The execute message type url for this execution is `cosmos.accounts.defaults.lockup.MsgWithdrawReward`.

Example of json file:

```go
{
"sender": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
"validator_address": "cosmosvaloper1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
}
```

:::warning
The `sender` field are the address of the owner of the lockup account. If the sender is not the owner an error will be returned.
:::

### Withdraw unlocked token

The execute message type url for this execution is `cosmos.accounts.defaults.lockup.MsgWithdraw`.

Example of json file:

```go
{
// lockup account owner address
"withdrawer": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx46",
// withdraw to an account of choice
"to_address": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx47",
"denoms": ["stake"]
}
```

:::warning
The `withdrawer` field are the address of the owner of the lockup account. If the sender is not the owner an error will be returned.
:::

### Send coins

The execute message type url for this execution is `cosmos.accounts.defaults.lockup.MsgSend`.

Example of json file:

```go
{
"sender": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
"to_address": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx46",
"amount": {
"amount": 100
"denom": "stake"
}
}
```

:::warning
The `sender` field are the address of the owner of the lockup account. If the sender is not the owner an error will be returned.
:::
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Improve consistency and conciseness in the Execution section

  1. Remove HTML tags and use Markdown formatting instead. For example, replace <br> with an empty line.

  2. Consolidate the repetitive warnings about the sender field into a single note at the beginning of the Execution section:

> **Note:** For all execution operations, the `sender` field must be the address of the owner of the lockup account. If the sender is not the owner, an error will be returned.
  1. Use consistent and language-specific formatting for JSON code blocks. For example:
- ```go
+ ```json
{
    "sender": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
    "validator_address": "cosmosvaloper1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
    "amount": {
        "amount": 100,
        "denom": "stake"
    }
}
  1. Use consistent formatting for command examples:
msgcontents=$(cat msg.json)
simd tx accounts execute <account_address> <execute-msg-type-url> "$msgcontents" \
    --fees 5stake \
    --chain-id "$CHAINID" \
    --keyring-backend test \
    --home ./.testnets/node0/simd/ \
    --from owner
  1. Consider using a table to summarize the different execution operations, their message type URLs, and any specific requirements. This would make the information more accessible and easier to reference.

These changes will improve the overall consistency and readability of the Execution section.

🧰 Tools
🪛 LanguageTool

[grammar] ~108-~108: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...e executions, which are: ### Delegate The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~129-~129: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Undelegate The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~150-~150: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...be returned. ::: ### Withdraw reward The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~167-~167: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...rned. ::: ### Withdraw unlocked token The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~187-~187: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Send coins The execute message type url for this execution is ...

(A_INFINITIVE)

Comment on lines 206 to 246

## Query

To query a lockup account state, we can use the command below:

```bash
querycontents=$(cat query.json)
simd tx accounts query <account_address> <query-request-type-url> $querycontents --fees 5stake --chain-id $CHAINID --keyring-backend test --home ./.testnets/node0/simd/ --from owner
```

### Query account info

The query request type url for this query is `cosmos.accounts.defaults.lockup.QueryLockupAccountInfoRequest`. And query json file can be an empty object since `QueryLockupAccountInfoRequest` does not required an input.

Account informations including:

* original locked amount

* delegated amount that are locked

* delegated amount that are free

* start and end time

* owner address

* current locked and unlocked amount

### Query periodic lockup account locking periods

:::info
Note, can only be queried from a periodic lockup account
:::

The query request type url for this query is `cosmos.accounts.defaults.lockup.QueryLockingPeriodsRequest`. And query json file can be an empty object since `QueryLockingPeriodsRequest` does not required an input.

Locking periods including:

* List of period with its duration and amount


Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Improve clarity and consistency in the Query section

  1. Improve the explanation of the query command:
- To query a lockup account state, we can use the command below:
+ To query a lockup account state, use the following command:

```bash
querycontents=$(cat query.json)
simd tx accounts query <account_address> <query-request-type-url> "$querycontents" \
    --fees 5stake \
    --chain-id "$CHAINID" \
    --keyring-backend test \
    --home ./.testnets/node0/simd/ \
    --from owner
  1. Correct grammatical issues and improve clarity:
- The query request type url for this query is `cosmos.accounts.defaults.lockup.QueryLockupAccountInfoRequest`. And query json file can be an empty object since `QueryLockupAccountInfoRequest` does not required an input.
+ The query request type URL for this query is `cosmos.accounts.defaults.lockup.QueryLockupAccountInfoRequest`. The query JSON file can be an empty object since `QueryLockupAccountInfoRequest` does not require any input.
  1. Use consistent formatting for lists. For example, in the "Account informations including:" section:
Account information includes:

- Original locked amount
- Delegated amount that is locked
- Delegated amount that is free
- Start and end time
- Owner address
- Current locked and unlocked amount
  1. For the "Query periodic lockup account locking periods" section, use consistent formatting and improve clarity:
### Query periodic lockup account locking periods

> **Note:** This query can only be performed on a periodic lockup account.

The query request type URL for this query is `cosmos.accounts.defaults.lockup.QueryLockingPeriodsRequest`. The query JSON file can be an empty object since `QueryLockingPeriodsRequest` does not require any input.

Locking periods information includes:

- List of periods with their duration and amount

These changes will improve the overall clarity, consistency, and readability of the Query section.

🧰 Tools
🪛 LanguageTool

[grammar] ~218-~218: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...QueryLockupAccountInfoRequest` does not required an input. Account informations includi...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)


[misspelling] ~220-~220: The word ‘informations’ is a legal term. In standard English, the word ‘information’ is a non-count noun.
Context: ...t` does not required an input. Account informations including: * original locked amount *...

(INFORMATIONS)


[grammar] ~240-~240: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...e QueryLockingPeriodsRequest does not required an input. Locking periods including: ...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)

Comment on lines 1 to 246
:::

### Withdraw reward

The execute message type url for this execution is `cosmos.accounts.defaults.lockup.MsgWithdrawReward`.

Example of json file:

```go
{
"sender": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
"validator_address": "cosmosvaloper1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
}
```

:::warning
The `sender` field are the address of the owner of the lockup account. If the sender is not the owner an error will be returned.
:::

### Withdraw unlocked token

The execute message type url for this execution is `cosmos.accounts.defaults.lockup.MsgWithdraw`.

Example of json file:

```go
{
// lockup account owner address
"withdrawer": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx46",
// withdraw to an account of choice
"to_address": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx47",
"denoms": ["stake"]
}
```

:::warning
The `withdrawer` field are the address of the owner of the lockup account. If the sender is not the owner an error will be returned.
:::

### Send coins

The execute message type url for this execution is `cosmos.accounts.defaults.lockup.MsgSend`.

Example of json file:

```go
{
"sender": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
"to_address": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx46",
"amount": {
"amount": 100
"denom": "stake"
}
}
```

:::warning
The `sender` field are the address of the owner of the lockup account. If the sender is not the owner an error will be returned.
:::

## Query

To query a lockup account state, we can use the command below:

```bash
querycontents=$(cat query.json)
simd tx accounts query <account_address> <query-request-type-url> $querycontents --fees 5stake --chain-id $CHAINID --keyring-backend test --home ./.testnets/node0/simd/ --from owner
```

### Query account info

The query request type url for this query is `cosmos.accounts.defaults.lockup.QueryLockupAccountInfoRequest`. And query json file can be an empty object since `QueryLockupAccountInfoRequest` does not required an input.

Account informations including:

* original locked amount

* delegated amount that are locked

* delegated amount that are free

* start and end time

* owner address

* current locked and unlocked amount

### Query periodic lockup account locking periods

:::info
Note, can only be queried from a periodic lockup account
:::

The query request type url for this query is `cosmos.accounts.defaults.lockup.QueryLockingPeriodsRequest`. And query json file can be an empty object since `QueryLockingPeriodsRequest` does not required an input.

Locking periods including:

* List of period with its duration and amount


Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Overall document improvement suggestions

This tutorial provides valuable information on using lockup accounts in Cosmos SDK. To further enhance its effectiveness, consider the following overall improvements:

  1. Add a brief introduction or abstract at the beginning of the document to provide context.
  2. Consistently use Markdown formatting throughout the document, avoiding HTML tags.
  3. Standardize the formatting of code blocks, using language-specific syntax highlighting where appropriate.
  4. Replace the term "granter" with "creator" or "admin" for clarity.
  5. Consolidate repetitive information, such as warnings about the sender field.
  6. Use tables or other structured formats to present information more concisely where applicable.
  7. Ensure consistent capitalization and punctuation throughout the document.
  8. Review and correct any remaining grammatical issues.

By implementing these suggestions, the tutorial will become more readable, consistent, and user-friendly, making it easier for developers to understand and implement lockup accounts in Cosmos SDK.

🧰 Tools
🪛 LanguageTool

[duplication] ~11-~11: Possible typo: you repeated a word
Context: ...ken) * Send coins * Query * Query account info ...

(ENGLISH_WORD_REPEAT_RULE)


[typographical] ~17-~17: It seems that a comma is missing.
Context: ...periods) ## Setup To create a lockup account we need 2 wallets (newly created or use...

(IN_ORDER_TO_VB_COMMA)


[typographical] ~25-~25: Consider adding a comma after ‘Normally’ for more clarity.
Context: ...e ./.testnets/node0/simd/ ``` ## Init Normally the granter must have enough token to c...

(RB_LY_COMMA)


[grammar] ~28-~28: The verb ‘depend’ is plural. Did you mean: “depends”? Did you use a verb instead of a noun?
Context: ...kup account init messages. This message depend on what type of lockup account the gran...

(PLURAL_VERB_AFTER_THIS)


[style] ~28-~28: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...what type of lockup account the granter want to create.
For continous, delayed,...

(REP_WANT_TO_VB)


[grammar] ~43-~43: The modal verb ‘will’ requires the verb’s base form.
Context: ... you dont have to set it in. Error will returned if start_time is not provided when cr...

(MD_BASEFORM)


[grammar] ~108-~108: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...e executions, which are: ### Delegate The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~129-~129: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Undelegate The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~150-~150: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...be returned. ::: ### Withdraw reward The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~167-~167: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...rned. ::: ### Withdraw unlocked token The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~187-~187: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Send coins The execute message type url for this execution is ...

(A_INFINITIVE)


[grammar] ~218-~218: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...QueryLockupAccountInfoRequest` does not required an input. Account informations includi...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)


[misspelling] ~220-~220: The word ‘informations’ is a legal term. In standard English, the word ‘information’ is a non-count noun.
Context: ...t` does not required an input. Account informations including: * original locked amount *...

(INFORMATIONS)


[grammar] ~240-~240: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...e QueryLockingPeriodsRequest does not required an input. Locking periods including: ...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (7)
x/accounts/defaults/lockup/TUTORIAL.md (7)

1-15: Improve title and table of contents

  1. Add an article to the title for better grammar:
-# Using lockup account on Cosmos sdk
+# Using a Lockup Account on Cosmos SDK
  1. Remove the duplicate "Query" entry in the table of contents:
 * [Query](#query)
-    * [Query](#query)
     * [Query account info](#query-account-info)
  1. Capitalize "SDK" in the reference to the README:
-To learn more about lockup account, please also check out [readme](./README.md)
+To learn more about lockup accounts, please also check out the [README](./README.md)
🧰 Tools
🪛 LanguageTool

[uncategorized] ~1-~1: You might be missing the article “a” here.
Context: # Using lockup account on Cosmos sdk * [Setup](#setup...

(AI_EN_LECTOR_MISSING_DETERMINER_A)


[duplication] ~11-~11: Possible typo: you repeated a word
Context: ...ken) * Send coins * Query * Query account info ...

(ENGLISH_WORD_REPEAT_RULE)


17-24: Enhance clarity in the Setup section

  1. Improve grammar and clarity:
-To create a lockup account we need 2 wallets (newly created or use any of the existing wallet that you have) one for the creator and one for the owner of the lockup account. 
+To create a lockup account, we need two wallets: one for the creator and one for the owner of the lockup account. You can create new wallets or use existing ones.
  1. Add context to the command examples:
 ```bash
+# Create a wallet for the creator
 simd keys add creator 
+# Create a wallet for the owner
 simd keys add owner

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary><blockquote>

[typographical] ~19-~19: It seems that a comma is missing.
Context: ...ADME.md)  ## Setup   To create a lockup account we need 2 wallets (newly created or use...

(IN_ORDER_TO_VB_COMMA)

</blockquote></details>

</details>

---

`26-43`: **Improve clarity and consistency in the Init section**

1. Enhance grammar and clarity:
```diff
-Normally the creator must have enough token to grant to the lockup account during the lockup account init process. The owner wallet should be associated with the individual that the creator want to grant the fund to.
+The creator must have sufficient tokens to initialize the lockup account. The owner wallet should be associated with the individual to whom the creator wants to grant the funds.

-Now, the creator can craft the lockup account init messages. This message depend on what type of lockup account the creator want to create.
+Now, the creator can craft the lockup account initialization messages. The message structure depends on the type of lockup account the creator wants to create.
  1. Use consistent JSON formatting and improve the example:
-```go
+```json
 {
     "owner": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
-    "end_time": 1495793860
+    "end_time": 1495793860,
     "start_time": 1465793854
 }

3. Improve the note about `start_time`:
```diff
-:::info
-`start_time` is only needed for continous locking account init process. For the other two, you dont have to set it in. Error will returned if `start_time` is not provided when creating continous locking account*
-:::
+> **Note:** `start_time` is only required for continuous locking account initialization. For other account types, it's optional. An error will be returned if `start_time` is not provided when creating a continuous locking account.
🧰 Tools
🪛 LanguageTool

[typographical] ~27-~27: Consider adding a comma after ‘Normally’ for more clarity.
Context: ...ator simd keys add owner ``` ## Init Normally the creator must have enough token to g...

(RB_LY_COMMA)


[grammar] ~30-~30: The verb ‘depend’ is plural. Did you mean: “depends”? Did you use a verb instead of a noun?
Context: ...kup account init messages. This message depend on what type of lockup account the crea...

(PLURAL_VERB_AFTER_THIS)


[uncategorized] ~30-~30: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...what type of lockup account the creator want to create. For continous, delayed, perm...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~42-~42: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... you dont have to set it in. Error will returned if start_time is not provided when cr...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)


[uncategorized] ~42-~42: You might be missing the article “a” here.
Context: ...art_time` is not provided when creating continous locking account* ::: For periodic loc...

(AI_EN_LECTOR_MISSING_DETERMINER_A)


45-72: Improve JSON example and explanations for periodic locking accounts

  1. Use consistent JSON formatting and improve the example:
-```go
+```json
     {
       "owner": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
       "locking_periods": [
           {
-            "length": 84600
+            "length": 84600,
             "amount": {
                 "denom": "stake",
                 "amount": 2000
             }
           },
           {
-            "length": 84600
+            "length": 84600,
             "amount": {
                 "denom": "stake",
                 "amount": 1500
             }
           }
-      ]
-      "start_time": 1465793854
+      ],
+      "start_time": 1465793854
     }

2. Improve the explanation of periodic locking accounts:
```diff
-Periodic locking account locking duration is the combines of all the period length from `locking_periods`.
+The total locking duration for a periodic locking account is the sum of all period lengths from `locking_periods`.
    
-The `owner` field takes a string while `start_time` and `end_time` takes a timestamp as value. `locking_periods` are an array of `period`s which consist of 2 field: `length` for the duration of that period and the `amount` that will be release after such duration.
+The `owner` field takes a string, while `start_time` and `end_time` take timestamps as values. `locking_periods` is an array of `period` objects, each consisting of two fields: `length` for the duration of that period and `amount` for the tokens that will be released after such duration.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~72-~72: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...n array of periods which consist of 2 field: length for the duration of that peri...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~72-~72: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...at period and the amount that will be release after such duration. To initialize the...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)


74-91: Improve initialization command explanation and formatting

  1. Enhance the explanation of the initialization command:
-To initialize the account, we have to run the accounts init command passing the account type and the json string for the init message.
+To initialize the account, run the accounts init command, passing the account type and the JSON string for the initialization message:
  1. Improve the command example:
 ```bash
 initcontents=$(cat init.json)
-simd tx accounts init <lockup_type> $initcontents --from creator
+simd tx accounts init <lockup_type> "$initcontents" --from creator

3. Format the list of available `lockup_type` options consistently:
```diff
 Whereas the available `lockup_type` options are: 
 
-* continuous-locking-account
-
-* delayed-locking-account
-
-* periodic-locking-account
-
-* permanent-locking-account
+- continuous-locking-account
+- delayed-locking-account
+- periodic-locking-account
+- permanent-locking-account
  1. Improve the success message:
-If success, we'll check the tx result for the lockup account address. You can send token to it like a normal account. 
+If successful, check the transaction result for the lockup account address. You can send tokens to it like a normal account.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~91-~91: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...he lockup account address. You can send token to it like a normal account. ## Execu...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


93-202: Improve consistency and clarity in the Execution section

  1. Consolidate the warnings about the sender field at the beginning of the section:
> **Important:** For all execution operations, the `sender` field must be the address of the owner of the lockup account. If the sender is not the owner, an error will be returned.
  1. Use consistent formatting for JSON examples and improve their structure. For example:
-```go
+```json
 {
     "sender": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
     "validator_address": "cosmosvaloper1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
     "amount": {
-        "amount": 100
+        "amount": "100",
         "denom": "stake"
     }
 }

3. Use consistent formatting for command examples:

```bash
msgcontents=$(cat msg.json)
simd tx accounts execute <account_address> <execute-msg-type-url> "$msgcontents" --from owner
  1. Improve the explanations for each execution type. For example:
-The execute message type url for this execution is `cosmos.accounts.defaults.lockup.MsgDelegate`.
+The execute message type URL for the delegate operation is `cosmos.accounts.defaults.lockup.MsgDelegate`.
  1. Remove the repetitive warnings about the sender field from each execution type.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~102-~102: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...xecute-msg-type-urlandmsgcontents` corresponds to lockup account available executions,...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[grammar] ~105-~105: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...e executions, which are: ### Delegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~122-~122: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~122-~122: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Und...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~126-~126: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Undelegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~143-~143: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~143-~143: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~147-~147: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...be returned. ::: ### Withdraw reward The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~160-~160: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...", } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~160-~160: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~164-~164: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...rned. ::: ### Withdraw unlocked token The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~180-~180: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...``` :::warning The withdrawer field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~180-~180: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Sen...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~184-~184: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Send coins The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~201-~201: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~201-~201: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ## Quer...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


204-243: Enhance clarity and consistency in the Query section

  1. Improve the explanation of the query command:
-To query a lockup account state, we can use the command below:
+To query a lockup account state, use the following command:

 ```bash
 querycontents=$(cat query.json)
-simd tx accounts query <account_address> <query-request-type-url> $querycontents --from owner
+simd query accounts <account_address> <query-request-type-url> "$querycontents" --from owner

2. Correct grammatical issues and improve clarity:

```diff
-The query request type url for this query is `cosmos.accounts.defaults.lockup.QueryLockupAccountInfoRequest`. And query json file can be an empty object since `QueryLockupAccountInfoRequest` does not required an input.
+The query request type URL for this query is `cosmos.accounts.defaults.lockup.QueryLockupAccountInfoRequest`. The query JSON file can be an empty object since `QueryLockupAccountInfoRequest` does not require any input.
  1. Use consistent formatting for lists. For example:
Account information includes:

- Original locked amount
- Delegated amount that is locked
- Delegated amount that is free
- Start and end time
- Owner address
- Current locked and unlocked amount
  1. Improve the explanation for querying periodic lockup account locking periods:
-:::info
-Note, can only be queried from a periodic lockup account
-:::
+> **Note:** This query can only be performed on a periodic lockup account.

-The query request type url for this query is `cosmos.accounts.defaults.lockup.QueryLockingPeriodsRequest`. And query json file can be an empty object since `QueryLockingPeriodsRequest` does not required an input.
+The query request type URL for this query is `cosmos.accounts.defaults.lockup.QueryLockingPeriodsRequest`. The query JSON file can be an empty object since `QueryLockingPeriodsRequest` does not require any input.

-Locking periods including:
+Locking periods information includes:

-* List of period with its duration and amount
+- List of periods with their duration and amount
🧰 Tools
🪛 LanguageTool

[grammar] ~215-~215: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...QueryLockupAccountInfoRequest` does not required an input. Account informations includi...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)


[misspelling] ~217-~217: The word ‘informations’ is a legal term. In standard English, the word ‘information’ is a non-count noun.
Context: ...t` does not required an input. Account informations including: * original locked amount *...

(INFORMATIONS)


[grammar] ~237-~237: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...e QueryLockingPeriodsRequest does not required an input. Locking periods including: ...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)

📜 Review details

Configuration used: .coderabbit.yml
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 59fa516 and c026d0c.

📒 Files selected for processing (1)
  • x/accounts/defaults/lockup/TUTORIAL.md (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
x/accounts/defaults/lockup/TUTORIAL.md (1)

Pattern **/*.md: "Assess the documentation for misspellings, grammatical errors, missing documentation and correctness"

🪛 LanguageTool
x/accounts/defaults/lockup/TUTORIAL.md

[uncategorized] ~1-~1: You might be missing the article “a” here.
Context: # Using lockup account on Cosmos sdk * [Setup](#setup...

(AI_EN_LECTOR_MISSING_DETERMINER_A)


[duplication] ~11-~11: Possible typo: you repeated a word
Context: ...ken) * Send coins * Query * Query account info ...

(ENGLISH_WORD_REPEAT_RULE)


[typographical] ~19-~19: It seems that a comma is missing.
Context: ...ADME.md) ## Setup To create a lockup account we need 2 wallets (newly created or use...

(IN_ORDER_TO_VB_COMMA)


[typographical] ~27-~27: Consider adding a comma after ‘Normally’ for more clarity.
Context: ...ator simd keys add owner ``` ## Init Normally the creator must have enough token to g...

(RB_LY_COMMA)


[grammar] ~30-~30: The verb ‘depend’ is plural. Did you mean: “depends”? Did you use a verb instead of a noun?
Context: ...kup account init messages. This message depend on what type of lockup account the crea...

(PLURAL_VERB_AFTER_THIS)


[uncategorized] ~30-~30: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...what type of lockup account the creator want to create. For continous, delayed, perm...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~42-~42: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... you dont have to set it in. Error will returned if start_time is not provided when cr...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)


[uncategorized] ~42-~42: You might be missing the article “a” here.
Context: ...art_time` is not provided when creating continous locking account* ::: For periodic loc...

(AI_EN_LECTOR_MISSING_DETERMINER_A)


[uncategorized] ~72-~72: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...n array of periods which consist of 2 field: length for the duration of that peri...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~72-~72: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...at period and the amount that will be release after such duration. To initialize the...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)


[uncategorized] ~91-~91: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...he lockup account address. You can send token to it like a normal account. ## Execu...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~102-~102: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...xecute-msg-type-urlandmsgcontents` corresponds to lockup account available executions,...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[grammar] ~105-~105: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...e executions, which are: ### Delegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~122-~122: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~122-~122: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Und...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~126-~126: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Undelegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~143-~143: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~143-~143: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~147-~147: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...be returned. ::: ### Withdraw reward The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~160-~160: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...", } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~160-~160: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~164-~164: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...rned. ::: ### Withdraw unlocked token The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~180-~180: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...``` :::warning The withdrawer field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~180-~180: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Sen...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~184-~184: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Send coins The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~201-~201: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~201-~201: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ## Quer...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~215-~215: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...QueryLockupAccountInfoRequest` does not required an input. Account informations includi...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)


[misspelling] ~217-~217: The word ‘informations’ is a legal term. In standard English, the word ‘information’ is a non-count noun.
Context: ...t` does not required an input. Account informations including: * original locked amount *...

(INFORMATIONS)


[grammar] ~237-~237: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...e QueryLockingPeriodsRequest does not required an input. Locking periods including: ...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)

🔇 Additional comments (1)
x/accounts/defaults/lockup/TUTORIAL.md (1)

1-243: Overall assessment of the TUTORIAL.md document

This tutorial provides valuable information on using lockup accounts in Cosmos SDK. The structure and content are generally good, covering essential aspects such as setup, initialization, execution, and querying. However, there are several areas where improvements can be made:

  1. Consistency: Ensure consistent formatting throughout the document, especially in code blocks and lists.
  2. Grammar and clarity: Address grammatical issues and improve sentence structures for better readability.
  3. Technical precision: Refine explanations of certain concepts, such as the start_time requirement for different account types.
  4. Formatting: Use Markdown features more effectively, such as proper code block language identifiers and blockquotes for notes.

By implementing the suggested changes, this tutorial will become more user-friendly and easier to follow for developers working with lockup accounts in Cosmos SDK.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~1-~1: You might be missing the article “a” here.
Context: # Using lockup account on Cosmos sdk * [Setup](#setup...

(AI_EN_LECTOR_MISSING_DETERMINER_A)


[duplication] ~11-~11: Possible typo: you repeated a word
Context: ...ken) * Send coins * Query * Query account info ...

(ENGLISH_WORD_REPEAT_RULE)


[typographical] ~19-~19: It seems that a comma is missing.
Context: ...ADME.md) ## Setup To create a lockup account we need 2 wallets (newly created or use...

(IN_ORDER_TO_VB_COMMA)


[typographical] ~27-~27: Consider adding a comma after ‘Normally’ for more clarity.
Context: ...ator simd keys add owner ``` ## Init Normally the creator must have enough token to g...

(RB_LY_COMMA)


[grammar] ~30-~30: The verb ‘depend’ is plural. Did you mean: “depends”? Did you use a verb instead of a noun?
Context: ...kup account init messages. This message depend on what type of lockup account the crea...

(PLURAL_VERB_AFTER_THIS)


[uncategorized] ~30-~30: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...what type of lockup account the creator want to create. For continous, delayed, perm...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~42-~42: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... you dont have to set it in. Error will returned if start_time is not provided when cr...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)


[uncategorized] ~42-~42: You might be missing the article “a” here.
Context: ...art_time` is not provided when creating continous locking account* ::: For periodic loc...

(AI_EN_LECTOR_MISSING_DETERMINER_A)


[uncategorized] ~72-~72: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...n array of periods which consist of 2 field: length for the duration of that peri...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~72-~72: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...at period and the amount that will be release after such duration. To initialize the...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)


[uncategorized] ~91-~91: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...he lockup account address. You can send token to it like a normal account. ## Execu...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~102-~102: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...xecute-msg-type-urlandmsgcontents` corresponds to lockup account available executions,...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[grammar] ~105-~105: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...e executions, which are: ### Delegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~122-~122: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~122-~122: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Und...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~126-~126: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Undelegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~143-~143: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~143-~143: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~147-~147: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...be returned. ::: ### Withdraw reward The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~160-~160: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...", } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~160-~160: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~164-~164: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...rned. ::: ### Withdraw unlocked token The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~180-~180: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...``` :::warning The withdrawer field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~180-~180: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Sen...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~184-~184: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Send coins The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~201-~201: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~201-~201: A comma might be missing here.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ## Quer...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[grammar] ~215-~215: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...QueryLockupAccountInfoRequest` does not required an input. Account informations includi...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)


[misspelling] ~217-~217: The word ‘informations’ is a legal term. In standard English, the word ‘information’ is a non-count noun.
Context: ...t` does not required an input. Account informations including: * original locked amount *...

(INFORMATIONS)


[grammar] ~237-~237: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...e QueryLockingPeriodsRequest does not required an input. Locking periods including: ...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)

x/accounts/defaults/lockup/TUTORIAL.md Outdated Show resolved Hide resolved
x/accounts/defaults/lockup/TUTORIAL.md Outdated Show resolved Hide resolved
x/accounts/defaults/lockup/TUTORIAL.md Outdated Show resolved Hide resolved
x/accounts/defaults/lockup/TUTORIAL.md Outdated Show resolved Hide resolved
x/accounts/defaults/lockup/TUTORIAL.md Outdated Show resolved Hide resolved
x/accounts/defaults/lockup/TUTORIAL.md Outdated Show resolved Hide resolved
x/accounts/defaults/lockup/TUTORIAL.md Outdated Show resolved Hide resolved
sontrinh16 and others added 2 commits October 9, 2024 09:46
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (11)
x/accounts/defaults/lockup/TUTORIAL.md (11)

1-15: Add an introduction and fix table of contents

Consider adding a brief introduction at the beginning of the document to provide context for the tutorial. This will help users understand the purpose and scope of lockup accounts before diving into the details.

Also, there's a duplicate entry in the table of contents:

- * [Query](#query)
-     * [Query account info](#query-account-info)
+ * [Query](#query)
+     * [Query account info](#query-account-info)
+     * [Query periodic lockup account locking periods](#query-periodic-lockup-account-locking-periods)

Remove the duplicate "Query" entry and ensure all subsections are properly indented.

🧰 Tools
🪛 LanguageTool

[duplication] ~11-~11: Possible typo: you repeated a word
Context: ...ken) * Send coins * Query * Query account info ...

(ENGLISH_WORD_REPEAT_RULE)


17-24: Improve clarity and grammar in the Setup section

Consider revising the explanation for better clarity and grammar:

- To create a lockup account we need 2 wallets (newly created or use any of the existing wallet that you have) one for the creator and one for the owner of the lockup account. 
+ To create a lockup account, we need two wallets: one for the creator and one for the owner of the lockup account. You can either create new wallets or use existing ones.

This revision improves readability and corrects grammatical issues.

🧰 Tools
🪛 LanguageTool

[typographical] ~19-~19: It seems that a comma is missing.
Context: ...ADME.md) ## Setup To create a lockup account we need 2 wallets (newly created or use...

(IN_ORDER_TO_VB_COMMA)


26-30: Improve clarity and consistency in the Init section introduction

Consider revising the introduction for better clarity and consistency:

- Normally the creator must have enough token to grant to the lockup account during the lockup account init process. The owner wallet should be associated with the individual that the creator want to grant the fund to.
+ The creator must have sufficient tokens to initialize the lockup account. The owner wallet should be associated with the individual to whom the creator wants to grant the funds.

- Now, the creator can craft the lockup account init messages. This message depend on what type of lockup account the creator want to create.
+ Now, the creator can craft the lockup account initialization messages. The message structure depends on the type of lockup account the creator wants to create.

This revision improves clarity, corrects grammatical issues, and maintains consistency in terminology.

🧰 Tools
🪛 LanguageTool

[typographical] ~27-~27: Consider adding a comma after ‘Normally’ for more clarity.
Context: ...ator simd keys add owner ``` ## Init Normally the creator must have enough token to g...

(RB_LY_COMMA)


[grammar] ~30-~30: The verb ‘depend’ is plural. Did you mean: “depends”? Did you use a verb instead of a noun?
Context: ...kup account init messages. This message depend on what type of lockup account the crea...

(PLURAL_VERB_AFTER_THIS)


[style] ~30-~30: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...what type of lockup account the creator want to create. For continous, delayed, permane...

(REP_WANT_TO_VB)


31-43: Improve JSON formatting and clarify start_time usage

  1. Format the JSON example properly:
 ```json
 {
     "owner": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
-    "end_time": 1495793860
+    "end_time": 1495793860,
     "start_time": 1465793854
 }

2. Clarify the explanation about `start_time`:

```diff
- `start_time` is only needed for continous locking account init process. For the other two, you dont have to set it in. Error will returned if `start_time` is not provided when creating continous locking account*
+ `start_time` is only required for continuous locking account initialization. For other account types, it's optional. An error will be returned if `start_time` is not provided when creating a continuous locking account.

These changes improve readability and correct grammatical issues.

🧰 Tools
🪛 LanguageTool

[grammar] ~42-~42: The modal verb ‘will’ requires the verb’s base form.
Context: ... you dont have to set it in. Error will returned if start_time is not provided when cr...

(MD_BASEFORM)


45-72: Improve JSON formatting and clarify periodic locking account explanation

  1. Format the JSON example properly:
 ```json
 {
   "owner": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx45",
   "locking_periods": [
     {
-      "length": 84600
+      "length": 84600,
       "amount": {
         "denom": "stake",
         "amount": 2000
       }
     },
     {
-      "length": 84600
+      "length": 84600,
       "amount": {
         "denom": "stake",
         "amount": 1500
       }
     }
   ],
-  "start_time": 1465793854
+  "start_time": 1465793854
 }

2. Clarify the explanation of periodic locking accounts:

```diff
- Periodic locking account locking duration is the combines of all the period length from `locking_periods`.
+ The total locking duration for a periodic locking account is the sum of all period lengths specified in `locking_periods`.

- The `owner` field takes a string while `start_time` and `end_time` takes a timestamp as value. `locking_periods` are an array of `period`s which consist of 2 field: `length` for the duration of that period and the `amount` that will be release after such duration.
+ The `owner` field takes a string value, while `start_time` and `end_time` take timestamp values. `locking_periods` is an array of `period` objects, each consisting of two fields: `length` for the duration of that period, and `amount` specifying the tokens to be released after that duration.

These changes improve readability and correct grammatical issues.


74-91: Improve clarity and formatting in the account initialization explanation

  1. Clarify the initialization command:
- To initialize the account, we have to run the accounts init command passing the account type and the json string for the init message.
+ To initialize the account, run the following command, passing the account type and the JSON string for the initialization message:
  1. Format the command example properly:
 ```bash
 initcontents=$(cat init.json)
-simd tx accounts init <lockup_type> $initcontents --from creator
+simd tx accounts init <lockup_type> "$initcontents" --from creator

3. Format the list of available `lockup_type` options:

```diff
- Whereas the available `lockup_type` options are: 
+ The available `lockup_type` options are: 

- * continuous-locking-account
- * delayed-locking-account
- * periodic-locking-account
- * permanent-locking-account
+ - continuous-locking-account
+ - delayed-locking-account
+ - periodic-locking-account
+ - permanent-locking-account

These changes improve clarity and formatting consistency.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~74-~74: It seems likely that a singular genitive (’s) apostrophe is missing.
Context: ...tialize the account, we have to run the accounts init command passing the account type a...

(AI_HYDRA_LEO_APOSTROPHE_S_XS)


[uncategorized] ~74-~74: Possible missing comma found.
Context: ...count, we have to run the accounts init command passing the account type and the json s...

(AI_HYDRA_LEO_MISSING_COMMA)


93-102: Improve clarity and formatting in the Execution section introduction

  1. Clarify the execution command explanation:
- To execute a message, we can use the command below:
+ To execute a message on a lockup account, use the following command:
  1. Format the command example properly:
 ```bash
 msgcontents=$(cat msg.json)
-simd tx accounts execute <account_address> <execute-msg-type-url> $msgcontents --from owner
+simd tx accounts execute <account_address> <execute-msg-type-url> "$msgcontents" --from owner

3. Clarify the explanation of `execute-msg-type-url` and `msgcontents`:

```diff
- Whereas `execute-msg-type-url` and `msgcontents`  corresponds to lockup account available executions, which are:
+ The `execute-msg-type-url` and `msgcontents` correspond to the available lockup account executions, which are:

These changes improve clarity and formatting consistency.


103-202: Improve formatting and consolidate repetitive information in execution examples

  1. Format JSON examples consistently for all execution types (Delegate, Undelegate, Withdraw reward, Withdraw unlocked token, Send coins).

  2. Consolidate the repetitive warning about the sender field. Add a note at the beginning of the Execution section:

> **Note:** For all execution operations, the `sender` field must be the address of the owner of the lockup account. If the sender is not the owner, an error will be returned.
  1. Remove the individual warnings from each execution type.

  2. For the "Withdraw unlocked token" execution, update the JSON example to use consistent field names:

 {
-    // lockup account owner address
-    "withdrawer": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx46",
+    "sender": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx46",
     // withdraw to an account of choice
     "to_address": "cosmos1vaqh39cdex9sgr69ef0tdln5cn0hdyd3s0lx47",
     "denoms": ["stake"]
 }

These changes improve consistency and reduce redundancy in the document.

🧰 Tools
🪛 LanguageTool

[grammar] ~105-~105: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...e executions, which are: ### Delegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~122-~122: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~122-~122: Possible missing comma found.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Und...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~126-~126: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Undelegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~143-~143: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~143-~143: Possible missing comma found.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~147-~147: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...be returned. ::: ### Withdraw reward The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~160-~160: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...", } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~160-~160: Possible missing comma found.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~164-~164: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...rned. ::: ### Withdraw unlocked token The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~180-~180: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...``` :::warning The withdrawer field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~180-~180: Possible missing comma found.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Sen...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~184-~184: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Send coins The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~201-~201: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~201-~201: Possible missing comma found.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ## Quer...

(AI_HYDRA_LEO_MISSING_COMMA)


204-211: Improve clarity and formatting in the Query section introduction

  1. Clarify the query command explanation:
- To query a lockup account state, we can use the command below:
+ To query a lockup account state, use the following command:
  1. Format the command example properly:
 ```bash
 querycontents=$(cat query.json)
-simd tx accounts query <account_address> <query-request-type-url> $querycontents --from owner
+simd query accounts <account_address> <query-request-type-url> "$querycontents" --from owner

Note: Changed `tx` to `query` in the command, as this is a query operation, not a transaction.

These changes improve clarity and formatting consistency.

---

`213-230`: **Improve clarity and formatting in the Query account info section**

1. Clarify the explanation of the query request:

```diff
- The query request type url for this query is `cosmos.accounts.defaults.lockup.QueryLockupAccountInfoRequest`. And query json file can be an empty object since `QueryLockupAccountInfoRequest` does not required an input.
+ The query request type URL for this query is `cosmos.accounts.defaults.lockup.QueryLockupAccountInfoRequest`. The query JSON file can be an empty object since `QueryLockupAccountInfoRequest` does not require any input.
  1. Correct the formatting and grammar of the account information list:
- Account informations including:
+ Account information includes:

- * original locked amount
- * delegated amount that are locked
- * delegated amount that are free
- * start and end time
- * owner address
- * current locked and unlocked amount
+ - Original locked amount
+ - Delegated amount that is locked
+ - Delegated amount that is free
+ - Start and end time
+ - Owner address
+ - Current locked and unlocked amount

These changes improve clarity, correct grammatical issues, and enhance formatting consistency.

🧰 Tools
🪛 LanguageTool

[grammar] ~215-~215: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...QueryLockupAccountInfoRequest` does not required an input. Account informations includi...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)


[misspelling] ~217-~217: The word ‘informations’ is a legal term. In standard English, the word ‘information’ is a non-count noun.
Context: ...t` does not required an input. Account informations including: * original locked amount *...

(INFORMATIONS)


231-243: Improve clarity and formatting in the Query periodic lockup account locking periods section

  1. Format the note about periodic lockup accounts:
-:::info
-Note, can only be queried from a periodic lockup account
-:::
+> **Note:** This query can only be performed on a periodic lockup account.
  1. Clarify the explanation of the query request:
- The query request type url for this query is `cosmos.accounts.defaults.lockup.QueryLockingPeriodsRequest`. And query json file can be an empty object since `QueryLockingPeriodsRequest` does not required an input.
+ The query request type URL for this query is `cosmos.accounts.defaults.lockup.QueryLockingPeriodsRequest`. The query JSON file can be an empty object since `QueryLockingPeriodsRequest` does not require any input.
  1. Correct the formatting and grammar of the locking periods information:
- Locking periods including:
+ Locking periods information includes:

- * List of period with its duration and amount
+ - List of periods with their duration and amount

These changes improve clarity, correct grammatical issues, and enhance formatting consistency.

🧰 Tools
🪛 LanguageTool

[grammar] ~237-~237: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...e QueryLockingPeriodsRequest does not required an input. Locking periods including: ...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)

📜 Review details

Configuration used: .coderabbit.yml
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between c026d0c and 3bbe7e3.

📒 Files selected for processing (1)
  • x/accounts/defaults/lockup/TUTORIAL.md (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
x/accounts/defaults/lockup/TUTORIAL.md (1)

Pattern **/*.md: "Assess the documentation for misspellings, grammatical errors, missing documentation and correctness"

🪛 LanguageTool
x/accounts/defaults/lockup/TUTORIAL.md

[duplication] ~11-~11: Possible typo: you repeated a word
Context: ...ken) * Send coins * Query * Query account info ...

(ENGLISH_WORD_REPEAT_RULE)


[typographical] ~19-~19: It seems that a comma is missing.
Context: ...ADME.md) ## Setup To create a lockup account we need 2 wallets (newly created or use...

(IN_ORDER_TO_VB_COMMA)


[typographical] ~27-~27: Consider adding a comma after ‘Normally’ for more clarity.
Context: ...ator simd keys add owner ``` ## Init Normally the creator must have enough token to g...

(RB_LY_COMMA)


[grammar] ~30-~30: The verb ‘depend’ is plural. Did you mean: “depends”? Did you use a verb instead of a noun?
Context: ...kup account init messages. This message depend on what type of lockup account the crea...

(PLURAL_VERB_AFTER_THIS)


[style] ~30-~30: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...what type of lockup account the creator want to create. For continous, delayed, permane...

(REP_WANT_TO_VB)


[grammar] ~42-~42: The modal verb ‘will’ requires the verb’s base form.
Context: ... you dont have to set it in. Error will returned if start_time is not provided when cr...

(MD_BASEFORM)


[uncategorized] ~74-~74: It seems likely that a singular genitive (’s) apostrophe is missing.
Context: ...tialize the account, we have to run the accounts init command passing the account type a...

(AI_HYDRA_LEO_APOSTROPHE_S_XS)


[uncategorized] ~74-~74: Possible missing comma found.
Context: ...count, we have to run the accounts init command passing the account type and the json s...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~105-~105: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...e executions, which are: ### Delegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~122-~122: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~122-~122: Possible missing comma found.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Und...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~126-~126: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Undelegate The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~143-~143: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~143-~143: Possible missing comma found.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~147-~147: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...be returned. ::: ### Withdraw reward The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~160-~160: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...", } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~160-~160: Possible missing comma found.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Wit...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~164-~164: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ...rned. ::: ### Withdraw unlocked token The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~180-~180: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...``` :::warning The withdrawer field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~180-~180: Possible missing comma found.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ### Sen...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~184-~184: The verb ‘execute’ does not usually follow articles like ‘The’. Check that ‘execute’ is spelled correctly; using ‘execute’ as a noun may be non-standard.
Context: ... will be returned. ::: ### Send coins The execute message type url for this execution is ...

(A_INFINITIVE)


[uncategorized] ~201-~201: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...} } ``` :::warning The sender field are the address of the owner of the lockup ...

(AI_HYDRA_LEO_CPT_ARE_IS)


[uncategorized] ~201-~201: Possible missing comma found.
Context: ...ockup account. If the sender is not the owner an error will be returned. ::: ## Quer...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~215-~215: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...QueryLockupAccountInfoRequest` does not required an input. Account informations includi...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)


[misspelling] ~217-~217: The word ‘informations’ is a legal term. In standard English, the word ‘information’ is a non-count noun.
Context: ...t` does not required an input. Account informations including: * original locked amount *...

(INFORMATIONS)


[grammar] ~237-~237: After the auxiliary verb ‘do’, use the base form of a verb. Did you mean “require”?
Context: ...e QueryLockingPeriodsRequest does not required an input. Locking periods including: ...

(AUXILIARY_DO_WITH_INCORRECT_VERB_FORM)

@tac0turtle tac0turtle added this pull request to the merge queue Oct 9, 2024
Merged via the queue into main with commit 3220aab Oct 9, 2024
69 checks passed
@tac0turtle tac0turtle deleted the son/add_lockup_docs branch October 9, 2024 07:34
mergify bot pushed a commit that referenced this pull request Oct 9, 2024
Co-authored-by: Marko <marko@baricevic.me>
Co-authored-by: Julien Robert <julien@rbrt.fr>
Co-authored-by: beep <beepdeepor@gmail.com>
(cherry picked from commit 3220aab)
julienrbrt pushed a commit that referenced this pull request Oct 9, 2024
) (#22187)

Co-authored-by: son trinh <trinhleson2000@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport/v0.52.x PR scheduled for inclusion in the v0.52's next stable release C:x/accounts/lockup C:x/accounts
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants