mukan-ignite/docs/versioned_docs/version-v0.25/guide/05-scavenge/09-play.md
Mukan Erkin Törük 26b204bd04
Some checks are pending
Docs Deploy / build_and_deploy (push) Waiting to run
Generate Docs / cli (push) Waiting to run
Generate Config Doc / cli (push) Waiting to run
Go formatting / go-formatting (push) Waiting to run
Check links / markdown-link-check (push) Waiting to run
Integration / pre-test (push) Waiting to run
Integration / test on (push) Blocked by required conditions
Integration / status (push) Blocked by required conditions
Lint / Lint Go code (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
feat: fork Ignite CLI v29 as Mukan Ignite — remove cosmos-sdk restrictions
2026-05-11 03:31:37 +03:00

10 KiB

sidebar_position
9

Play with your blockchain

Now that you have made the required updates to you new chain, it's time to test it.

Start the blockchain

To start your blockchain in development, run the following command:

ignite chain serve

The serve command builds the chain binary file, initializes a data directory, and starts a node in development.

For all subsequent commands, you use a terminal window that is different from the window you started the chain in.

Create a scavenge

Follow the instructions and submit a new scavenge.

The first parameter is the solution, but you should also know what the actual question is that your solution solves (the description).

You can make the challenge question something family-friendly like What's brown and sticky?. Of course, the only solution to this question is A stick.

Next, you must specify the reward. Give away 100token as a reward for solving the scavenge.

Now you have all the pieces needed to create your message. Piece them all together in the command and add the flag --from so the CLI knows who is sending it:

scavenged tx scavenge submit-scavenge "A stick" "What's brown and sticky?" 100token --from alice

The results:

{
  "body": {
    "messages": [
      {
        "@type": "/username.scavenge.scavenge.MsgSubmitScavenge",
        "creator": "cosmos1wzgkalxjhaqtznrzzp0xy5jgkxx82xaa660jxh",
        "solutionHash": "2f9457a6e8fb202f9e10389a143a383106268c460743dd59d723c0f82d9ba906",
        "description": "What's brown and sticky?",
        "reward": "100token"
      }
    ],
    "memo": "",
    "timeout_height": "0",
    "extension_options": [],
    "non_critical_extension_options": []
  },
  "auth_info": {
    "signer_infos": [],
    "fee": { "amount": [], "gas_limit": "200000", "payer": "", "granter": "" }
  },
  "signatures": []
}
{
  "height": "229",
  "txhash": "CE401E1F95FC583355BF6ABB823A4655185E2983CACE7C430E22CC7B573152DD",
  "codespace": "",
  "code": 0,
  "data": "0A100A0E43726561746553636176656E6765",
  "raw_log": "[{\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"SubmitScavenge\"},{\"key\":\"sender\",\"value\":\"cosmos1wzgkalxjhaqtznrzzp0xy5jgkxx82xaa660jxh\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"cosmos13aupkh5020l9u6qquf7lvtcxhtr5jjama2kwyg\"},{\"key\":\"sender\",\"value\":\"cosmos1wzgkalxjhaqtznrzzp0xy5jgkxx82xaa660jxh\"},{\"key\":\"amount\",\"value\":\"100token\"}]}]}]",
  "logs": [
    {
      "msg_index": 0,
      "log": "",
      "events": [
        {
          "type": "message",
          "attributes": [
            { "key": "action", "value": "SubmitScavenge" },
            {
              "key": "sender",
              "value": "cosmos1wzgkalxjhaqtznrzzp0xy5jgkxx82xaa660jxh"
            }
          ]
        },
        {
          "type": "transfer",
          "attributes": [
            {
              "key": "recipient",
              "value": "cosmos13aupkh5020l9u6qquf7lvtcxhtr5jjama2kwyg"
            },
            {
              "key": "sender",
              "value": "cosmos1wzgkalxjhaqtznrzzp0xy5jgkxx82xaa660jxh"
            },
            { "key": "amount", "value": "100token" }
          ]
        }
      ]
    }
  ],
  "info": "",
  "gas_wanted": "200000",
  "gas_used": "65320",
  "tx": null,
  "timestamp": ""
}

Replace the txhash with your txhash from the previous output:

scavenged q tx CE401E1F95FC583355BF6ABB823A4655185E2983CACE7C430E22CC7B573152DD --output json

The results:

{
  "height": "229",
  "txhash": "CE401E1F95FC583355BF6ABB823A4655185E2983CACE7C430E22CC7B573152DD",
  "codespace": "",
  "code": 0,
  "data": "0A100A0E43726561746553636176656E6765",
  "raw_log": "[{\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"SubmitScavenge\"},{\"key\":\"sender\",\"value\":\"cosmos1wzgkalxjhaqtznrzzp0xy5jgkxx82xaa660jxh\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"cosmos13aupkh5020l9u6qquf7lvtcxhtr5jjama2kwyg\"},{\"key\":\"sender\",\"value\":\"cosmos1wzgkalxjhaqtznrzzp0xy5jgkxx82xaa660jxh\"},{\"key\":\"amount\",\"value\":\"100token\"}]}]}]",
  "logs": [
    {
      "msg_index": 0,
      "log": "",
      "events": [
        {
          "type": "message",
          "attributes": [
            { "key": "action", "value": "SubmitScavenge" },
            {
              "key": "sender",
              "value": "cosmos1wzgkalxjhaqtznrzzp0xy5jgkxx82xaa660jxh"
            }
          ]
        },
        {
          "type": "transfer",
          "attributes": [
            {
              "key": "recipient",
              "value": "cosmos13aupkh5020l9u6qquf7lvtcxhtr5jjama2kwyg"
            },
            {
              "key": "sender",
              "value": "cosmos1wzgkalxjhaqtznrzzp0xy5jgkxx82xaa660jxh"
            },
            { "key": "amount", "value": "100token" }
          ]
        }
      ]
    }
  ],
  "info": "",
  "gas_wanted": "200000",
  "gas_used": "65320",
  "tx": {
    "@type": "/cosmos.tx.v1beta1.Tx",
    "body": {
      "messages": [
        {
          "@type": "/username.scavenge.scavenge.MsgSubmitScavenge",
          "creator": "cosmos1wzgkalxjhaqtznrzzp0xy5jgkxx82xaa660jxh",
          "solutionHash": "2f9457a6e8fb202f9e10389a143a383106268c460743dd59d723c0f82d9ba906",
          "description": "What's brown and sticky?",
          "reward": "100token"
        }
      ],
      "memo": "",
      "timeout_height": "0",
      "extension_options": [],
      "non_critical_extension_options": []
    },
    "auth_info": {
      "signer_infos": [
        {
          "public_key": {
            "@type": "/cosmos.crypto.secp256k1.PubKey",
            "key": "ApRuim5kLByq9AqJJ9dEF5rFCkAbhIehEcPzSouM92p6"
          },
          "mode_info": { "single": { "mode": "SIGN_MODE_DIRECT" } },
          "sequence": "1"
        }
      ],
      "fee": { "amount": [], "gas_limit": "200000", "payer": "", "granter": "" }
    },
    "signatures": [
      "8W5MkgV8oWpB6UWRGVKuimfPyb1OutG8KPXTIneM6WIvy4YHToG3GUXFpUrh+CxPXmlDh5gIfeR4+nFfUuQXng=="
    ]
  },
  "timestamp": "2021-07-09T10:24:52Z"
}

Query for a list of scavenges

scavenged q scavenge list-scavenge --output json

The results:

{
  "Scavenge": [
    {
      "creator": "cosmos1wzgkalxjhaqtznrzzp0xy5jgkxx82xaa660jxh",
      "index": "2f9457a6e8fb202f9e10389a143a383106268c460743dd59d723c0f82d9ba906",
      "solutionHash": "2f9457a6e8fb202f9e10389a143a383106268c460743dd59d723c0f82d9ba906",
      "solution": "",
      "description": "What's brown and sticky?",
      "reward": "100token",
      "scavenger": ""
    }
  ],
  "pagination": { "next_key": null, "total": "0" }
}

Commit a solution

Follow the instructions and submit the answer as a commit on behalf of bob:

scavenged tx scavenge commit-solution "A stick" --from bob

The results:

{
  "body": {
    "messages": [
      {
        "@type": "/username.scavenge.scavenge.MsgCommitSolution",
        "creator": "cosmos1gkheudhhjsvq0s8fxt7p6pwe0k3k30kepcnz9p",
        "solutionHash": "2f9457a6e8fb202f9e10389a143a383106268c460743dd59d723c0f82d9ba906",
        "solutionScavengerHash": "461d54ec0bbb1d696a79af80d7f63e4c6df262d76309423da37189453eaec127"
      }
    ],
    "memo": "",
    "timeout_height": "0",
    "extension_options": [],
    "non_critical_extension_options": []
  },
  "auth_info": {
    "signer_infos": [],
    "fee": { "amount": [], "gas_limit": "200000", "payer": "", "granter": "" }
  },
  "signatures": []
}

Query for a list of commits

scavenged q scavenge list-commit --output json

The results:

{
  "Commit": [
    {
      "creator": "cosmos1gkheudhhjsvq0s8fxt7p6pwe0k3k30kepcnz9p",
      "index": "461d54ec0bbb1d696a79af80d7f63e4c6df262d76309423da37189453eaec127",
      "solutionHash": "2f9457a6e8fb202f9e10389a143a383106268c460743dd59d723c0f82d9ba906",
      "solutionScavengerHash": "461d54ec0bbb1d696a79af80d7f63e4c6df262d76309423da37189453eaec127"
    }
  ],
  "pagination": { "next_key": null, "total": "0" }
}

You don't need to put the solutionHash because it can be generated by hashing the actual solution.

Since all you need is the solution again, you can send and confirm the final message:

Reveal a solution

scavenged tx scavenge reveal-solution "A stick" --from bob

The results:

{
  "body": {
    "messages": [
      {
        "@type": "/username.scavenge.scavenge.MsgRevealSolution",
        "creator": "cosmos1gkheudhhjsvq0s8fxt7p6pwe0k3k30kepcnz9p",
        "solution": "A stick"
      }
    ],
    "memo": "",
    "timeout_height": "0",
    "extension_options": [],
    "non_critical_extension_options": []
  },
  "auth_info": {
    "signer_infos": [],
    "fee": { "amount": [], "gas_limit": "200000", "payer": "", "granter": "" }
  },
  "signatures": []
}

Query for a list of solved scavenges

scavenged q scavenge list-scavenge --output json

The results:

{
  "Scavenge": [
    {
      "creator": "cosmos1wzgkalxjhaqtznrzzp0xy5jgkxx82xaa660jxh",
      "index": "2f9457a6e8fb202f9e10389a143a383106268c460743dd59d723c0f82d9ba906",
      "solutionHash": "2f9457a6e8fb202f9e10389a143a383106268c460743dd59d723c0f82d9ba906",
      "solution": "A stick",
      "description": "What's brown and sticky?",
      "reward": "100token",
      "scavenger": "cosmos1gkheudhhjsvq0s8fxt7p6pwe0k3k30kepcnz9p"
    }
  ],
  "pagination": { "next_key": null, "total": "0" }
}

Commit a solution again, expect to get an error

scavenged tx scavenge commit-solution "A stick" --from bob

The results:

{
  "height": "665",
  "txhash": "EFA43A3C08BD1D77E597D57E60CD7B4D2E8E442F49BA88C85CC9EEC86E992B75",
  "codespace": "sdk",
  "code": 18,
  "data": "",
  "raw_log": "failed to execute message; message index: 0: Commit with that hash already exists: invalid request",
  "logs": [],
  "info": "",
  "gas_wanted": "200000",
  "gas_used": "41086",
  "tx": null,
  "timestamp": ""
}

Congratulations, you have built and tested a scavenge hunt blockchain!