From 408ca64d9e9210540b3ae1a4f98612b16b3c805f Mon Sep 17 00:00:00 2001 From: Youngtaek Yoon Date: Fri, 16 Feb 2024 11:21:37 +0000 Subject: [PATCH 1/8] Update x/test README.md --- x/test/README.md | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/x/test/README.md b/x/test/README.md index 0b5daee..d7132c7 100644 --- a/x/test/README.md +++ b/x/test/README.md @@ -1,5 +1,8 @@ # `x/test` +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=0tech_andromeda_x-test&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=0tech_andromeda_x-test) +[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=0tech_andromeda_x-test&metric=coverage)](https://sonarcloud.io/summary/new_code?id=0tech_andromeda_x-test) + ## Abstract Some modules have messages which may use other messages. Typical examples would @@ -45,36 +48,25 @@ One can change the prefix through the argument of the keeper. * Assets: `0xff | owner_address | asset_name -> ProtocolBuffer(Asset)` -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/test/proto/andromeda/test/v1alpha1/types.proto#L3-L5 -``` - +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/test/proto/andromeda/test/v1alpha1/types.proto#L4-L5 ## Msg Service ### Msg/Create -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/test/proto/andromeda/test/v1alpha1/tx.proto#L18-L27 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/test/proto/andromeda/test/v1alpha1/tx.proto#L18-L28 ### Msg/Send -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/test/proto/andromeda/test/v1alpha1/tx.proto#L32-L44 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/test/proto/andromeda/test/v1alpha1/tx.proto#L33-L46 ## Events ### EventCreate -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/test/proto/andromeda/test/v1alpha1/event.proto#L6-L13 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/test/proto/andromeda/test/v1alpha1/event.proto#L6-L13 ### EventSend -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/test/proto/andromeda/test/v1alpha1/event.proto#L15-L25 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/test/proto/andromeda/test/v1alpha1/event.proto#L15-L25 From 8bfd7192d3b9ed1d9cf4d2ac7d4ab81e9ee95a28 Mon Sep 17 00:00:00 2001 From: Youngtaek Yoon Date: Fri, 16 Feb 2024 11:37:18 +0000 Subject: [PATCH 2/8] Update x/escrow README.md --- x/escrow/README.md | 47 ++++++++++++++-------------------------------- 1 file changed, 14 insertions(+), 33 deletions(-) diff --git a/x/escrow/README.md b/x/escrow/README.md index 644ea0c..0cf3464 100644 --- a/x/escrow/README.md +++ b/x/escrow/README.md @@ -1,5 +1,8 @@ # `x/escrow` +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=0tech_andromeda_x-escrow&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=0tech_andromeda_x-escrow) +[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=0tech_andromeda_x-escrow&metric=coverage)](https://sonarcloud.io/summary/new_code?id=0tech_andromeda_x-escrow) + ## Abstract This module provides means to execute messages whose signers come from @@ -101,9 +104,7 @@ the state. * Params: `0x00 -> ProtocolBuffer(Params)` -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/escrow/proto/andromeda/escrow/v1alpha1/types.proto#L6-L7 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/escrow/proto/andromeda/escrow/v1alpha1/types.proto#L6-L10 ### NextAgent @@ -114,72 +115,52 @@ https://github.com/0tech/andromeda/blob/main/x/escrow/proto/andromeda/escrow/v1a * Agents: `0x11 | agent_address -> ProtocolBuffer(Agent)` * AgentsByCreator: `0x12 | creator_address | agent_address` -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/escrow/proto/andromeda/escrow/v1alpha1/types.proto#L9-L11 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/escrow/proto/andromeda/escrow/v1alpha1/types.proto#L12-L16 ### Proposals * Proposals: `0x20 | agent_address -> ProtocolBuffer(Proposal)` * ProposalsByProposer: `0x21 | proposer_address | agent_address` -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/escrow/proto/andromeda/escrow/v1alpha1/types.proto#L13-L23 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/escrow/proto/andromeda/escrow/v1alpha1/types.proto#L18-L31 ## Msg Service ### Msg/UpdateParams -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/escrow/proto/andromeda/escrow/v1alpha1/tx.proto#L25-L38 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/escrow/proto/andromeda/escrow/v1alpha1/tx.proto#L25-L34 ### Msg/CreateAgent -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/escrow/proto/andromeda/escrow/v1alpha1/tx.proto#L43-L49 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/escrow/proto/andromeda/escrow/v1alpha1/tx.proto#L39-L45 ### Msg/SubmitProposal -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/escrow/proto/andromeda/escrow/v1alpha1/tx.proto#L57-L75 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/escrow/proto/andromeda/escrow/v1alpha1/tx.proto#L53-L74 ### Msg/Exec -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/escrow/proto/andromeda/escrow/v1alpha1/tx.proto#L83-L99 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/escrow/proto/andromeda/escrow/v1alpha1/tx.proto#L79-L93 ## Events ### EventUpdateParams -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/escrow/proto/andromeda/escrow/v1alpha1/event.proto#L7-L9 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/escrow/proto/andromeda/escrow/v1alpha1/event.proto#L7-L14 ### EventCreateAgent -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/escrow/proto/andromeda/escrow/v1alpha1/event.proto#L11-L18 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/escrow/proto/andromeda/escrow/v1alpha1/event.proto#L16-L23 ### EventSubmitProposal -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/escrow/proto/andromeda/escrow/v1alpha1/event.proto#L20-L36 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/escrow/proto/andromeda/escrow/v1alpha1/event.proto#L25-L41 ### EventExec -```protobuf reference -https://github.com/0tech/andromeda/blob/main/x/escrow/proto/andromeda/escrow/v1alpha1/event.proto#L38-L48 -``` +https://github.com/0Tech/andromeda/blob/f405ccd9e13c31233f4d34d46b500a05eb8ef8e7/x/escrow/proto/andromeda/escrow/v1alpha1/event.proto#L43-L53 ## Client From e976633177c1cb79a220e7cc7a1c59e0a3bc234e Mon Sep 17 00:00:00 2001 From: Youngtaek Yoon Date: Fri, 16 Feb 2024 12:04:41 +0000 Subject: [PATCH 3/8] Update cosmos-sdk links --- x/README.md | 4 +++- x/test/README.md | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/x/README.md b/x/README.md index a94b965..530ca53 100644 --- a/x/README.md +++ b/x/README.md @@ -7,4 +7,6 @@ Here are some testing-grade modules, along with their respective documentation: ## Cosmos SDK -You can always use modules from [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) for your applications. +You can always use modules from +[Cosmos SDK](https://github.com/cosmos/cosmos-sdk/blob/v0.50.3/x/README.md) for +your applications. diff --git a/x/test/README.md b/x/test/README.md index d7132c7..cfd3fbf 100644 --- a/x/test/README.md +++ b/x/test/README.md @@ -9,9 +9,9 @@ Some modules have messages which may use other messages. Typical examples would be: * [`x/escrow`](../escrow/README.md) -* [`x/authz`](https://github.com/cosmos/cosmos-sdk/x/authz/README.md) -* [`x/gov`](https://github.com/cosmos/cosmos-sdk/x/gov/README.md) -* [`x/group`](https://github.com/cosmos/cosmos-sdk/x/group/README.md) +* [`x/authz`](https://github.com/cosmos/cosmos-sdk/blob/v0.50.3/x/authz/README.md) +* [`x/gov`](https://github.com/cosmos/cosmos-sdk/blob/v0.50.3/x/gov/README.md) +* [`x/group`](https://github.com/cosmos/cosmos-sdk/blob/v0.50.3/x/group/README.md) Testing those kind of messages requires messages with ownership semantics, however, the corresponding module often lacks such kind of messages. While From 410f30622d6f13081c4492f8cf87cbaa1ba7a0cc Mon Sep 17 00:00:00 2001 From: Youngtaek Yoon Date: Fri, 16 Feb 2024 14:02:49 +0000 Subject: [PATCH 4/8] Improve abstract and add more examples --- x/escrow/README.md | 125 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 117 insertions(+), 8 deletions(-) diff --git a/x/escrow/README.md b/x/escrow/README.md index 0cf3464..43f2179 100644 --- a/x/escrow/README.md +++ b/x/escrow/README.md @@ -15,6 +15,13 @@ involves cumbersome preparation for certain tailer made contract code. The trade itself would be quite simple and obvious, hence this module tries to reduce such efforts on common use cases. +Taking it a step further, this module allows us to build an ecosystem for +healthy, speedy and convenient transactions. One can execute multiple proposals +together, which lowers the hurdles to becoming a retailer or broker. Hence, if +it's a quite reasonable deal, some user will trigger your proposal (together +with other proposals) for their profit, meaning you don't even need to find +matching proposals by yourself. Just submit a proposal and forget about it. + ## Contents @@ -969,7 +976,7 @@ Example Output: ## Examples -### Selling an NFT for coins +### Sale of an NFT for coins It would be the most trivial usage of this module. In this example, a proposer `cosmos1ppp...` sells an x/nft token `cat:leopardcat` for x/bank coins @@ -1016,7 +1023,7 @@ agents: executor: cosmos1eee... ``` -### Selling coins for an NFT +### Sale of coins for an NFT It may sound strange, but one can sell coins for a certain NFT. In this example, a proposer `cosmos1ppp...` sells x/bank coins `42stake` for an x/nft @@ -1063,7 +1070,7 @@ agents: executor: cosmos1eee... ``` -### Selling an NFT to a specific account +### Sale of an NFT to a specific account One may want to offer deals to a specific account. In this example, a proposer `cosmos1ppp...` sells an x/nft token `cat:leopardcat` for x/bank coins @@ -1117,9 +1124,9 @@ agents: executor: cosmos1eee... ``` -#### Mediating sellings +### Broker -One can mediate multiple proposals. In this example, one proposer +One can broker multiple proposals. In this example, one proposer `cosmos1ppp...` sells x/bank coins `1notscam` for x/bank coins `42stake`. ```yaml @@ -1171,9 +1178,9 @@ to buy `1notscam`, hoping to sell it to `cosmos1qqq...` to earn the difference chain, it won't work, because you can send multiple messages in a tx, ensuring they would be executed in all-or-none manner. -Or, you can mediate the proposals, meaning executing multiple proposals in a -one `Msg/Exec`. In this way, you don't even need to prepare `42stake` to -trigger the first proposal. +Or, you can broker the proposals, meaning executing multiple proposals in one +`Msg/Exec`. In this way, you don't even need to prepare `42stake` to trigger +the first proposal. ```yaml actions: @@ -1200,3 +1207,105 @@ agents: - cosmos1bbb... executor: cosmos1eee... ``` + +### Retail + +Wholesalers often sell large amount of assets at a reduced price. One can be a +retailer when certain amount of relevant proposals are accumulated on the +chain. In this example, a wholesaler `cosmos1wholesaler...` sells x/bank coins +`10000egg` for x/bank coins `10000000stake`. + +```yaml +agent: cosmos1wholesaleragent... +metadata: sell 10000egg for 10000000stake +post_actions: +- '@type': /cosmos.bank.v1beta1.MsgSend + amount: + - amount: "10000000" + denom: stake + from_address: cosmos1wholesaleragent... + to_address: cosmos1wholesaler... +pre_actions: +- '@type': /cosmos.bank.v1beta1.MsgSend + amount: + - amount: "10000" + denom: egg + from_address: cosmos1wholesaler... + to_address: cosmos1wholesaleragent... +proposer: cosmos1wholesaler... +``` + +For simplicity, suppose there were 100 proposals selling x/bank coins +`150000stake` for x/bank coins `100egg`. + +```yaml +agent: cosmos1consumerzeroagent... +metadata: sell 150000stake for 100egg +post_actions: +- '@type': /cosmos.bank.v1beta1.MsgSend + amount: + - amount: "100" + denom: egg + from_address: cosmos1consumerzeroagent... + to_address: cosmos1consumerzero... +pre_actions: +- '@type': /cosmos.bank.v1beta1.MsgSend + amount: + - amount: "150000" + denom: stake + from_address: cosmos1consumerzero... + to_address: cosmos1consumerzeroagent... +proposer: cosmos1consumerzero... +``` + +In this case, literally anyone can be a retailer, executing the proposals. + +```yaml +actions: +- '@type': /cosmos.bank.v1beta1.MsgSend + amount: + - amount: "50000" + denom: stake + from_address: cosmos1consumerzeroagent... + to_address: cosmos1retailer... +- '@type': /cosmos.bank.v1beta1.MsgSend + amount: + - amount: "100000" + denom: stake + from_address: cosmos1consumerzeroagent... + to_address: cosmos1wholesaleragent... +- '@type': /cosmos.bank.v1beta1.MsgSend + amount: + - amount: "100" + denom: egg + from_address: cosmos1wholesaleragent... + to_address: cosmos1consumerzeroagent... +... +- '@type': /cosmos.bank.v1beta1.MsgSend + amount: + - amount: "50000" + denom: stake + from_address: cosmos1consumerninetynineagent... + to_address: cosmos1retailer... +- '@type': /cosmos.bank.v1beta1.MsgSend + amount: + - amount: "100000" + denom: stake + from_address: cosmos1consumerninetynineagent... + to_address: cosmos1wholesaleragent... +- '@type': /cosmos.bank.v1beta1.MsgSend + amount: + - amount: "100" + denom: egg + from_address: cosmos1wholesaleragent... + to_address: cosmos1consumerninetynineagent... +agents: +- cosmos1wholesaleragent... +- cosmos1consumerzeroagent... +... +- cosmos1consumerninetynineagent... +executor: cosmos1retailer... +``` + +Obviously, the actions in this example are not optimal, but it's sufficient for +the demonstration. From 7406e19b96717ed74cc67682e34a66b5fd437df1 Mon Sep 17 00:00:00 2001 From: Youngtaek Yoon Date: Fri, 16 Feb 2024 14:07:55 +0000 Subject: [PATCH 5/8] Fix section depth --- x/escrow/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/x/escrow/README.md b/x/escrow/README.md index 43f2179..55c7708 100644 --- a/x/escrow/README.md +++ b/x/escrow/README.md @@ -703,7 +703,7 @@ Example Output: } ``` -### andromeda.escrow.v1alpha1.Query.AgentsByCreator +#### andromeda.escrow.v1alpha1.Query.AgentsByCreator ```bash grpcurl -plaintext \ @@ -738,7 +738,7 @@ Example Output: } ``` -### andromeda.escrow.v1alpha1.Query.Agents +#### andromeda.escrow.v1alpha1.Query.Agents ```bash grpcurl -plaintext \ @@ -825,7 +825,7 @@ Example Output: } ``` -### andromeda.escrow.v1alpha1.Query.ProposalsByProposer +#### andromeda.escrow.v1alpha1.Query.ProposalsByProposer ```bash grpcurl -plaintext \ @@ -886,7 +886,7 @@ Example Output: } ``` -### andromeda.escrow.v1alpha1.Query.Proposals +#### andromeda.escrow.v1alpha1.Query.Proposals ```bash grpcurl -plaintext \ From 98dac1d5e5a9c082badfc7602f1261e74a2af595 Mon Sep 17 00:00:00 2001 From: Youngtaek Yoon Date: Fri, 16 Feb 2024 14:13:58 +0000 Subject: [PATCH 6/8] Use colons --- x/escrow/README.md | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/x/escrow/README.md b/x/escrow/README.md index 55c7708..d5cc441 100644 --- a/x/escrow/README.md +++ b/x/escrow/README.md @@ -980,7 +980,7 @@ Example Output: It would be the most trivial usage of this module. In this example, a proposer `cosmos1ppp...` sells an x/nft token `cat:leopardcat` for x/bank coins -`42stake`. +`42stake`: ```yaml agent: cosmos1aaa... @@ -1003,7 +1003,7 @@ proposer: cosmos1ppp... ``` The proposal would be executed by `cosmos1eee...`, who is willing to pay -`42stake` for `cat:leopardcat`. +`42stake` for `cat:leopardcat`: ```yaml actions: @@ -1027,7 +1027,7 @@ executor: cosmos1eee... It may sound strange, but one can sell coins for a certain NFT. In this example, a proposer `cosmos1ppp...` sells x/bank coins `42stake` for an x/nft -token `cat:leopardcat`. +token `cat:leopardcat`: ```yaml agent: cosmos1aaa... @@ -1050,7 +1050,7 @@ proposer: cosmos1ppp... ``` The proposal would be executed by `cosmos1eee...`, who is willing to pay -`cat:leopardcat` for `42stake`. +`cat:leopardcat` for `42stake`: ```yaml actions: @@ -1074,7 +1074,7 @@ executor: cosmos1eee... One may want to offer deals to a specific account. In this example, a proposer `cosmos1ppp...` sells an x/nft token `cat:leopardcat` for x/bank coins -`42stake` to `cosmos1eee...`. +`42stake` to `cosmos1eee...`: ```yaml agent: cosmos1aaa... @@ -1109,7 +1109,7 @@ this proposal has a specific receipient of the NFT, so the proposer can assure the designated recipient will receive the NFT eventually. The recipient, `cosmos1eee...`, who has an interest on this deal, will execute -the proposal. +the proposal: ```yaml actions: @@ -1127,7 +1127,7 @@ executor: cosmos1eee... ### Broker One can broker multiple proposals. In this example, one proposer -`cosmos1ppp...` sells x/bank coins `1notscam` for x/bank coins `42stake`. +`cosmos1ppp...` sells x/bank coins `1notscam` for x/bank coins `42stake`: ```yaml agent: cosmos1aaa... @@ -1150,7 +1150,7 @@ proposer: cosmos1ppp... ``` The other proposer `cosmos1qqq...` sells x/bank coins `4242stake` for x/bank -coins `1notscam`. +coins `1notscam`: ```yaml agent: cosmos1bbb... @@ -1179,8 +1179,7 @@ chain, it won't work, because you can send multiple messages in a tx, ensuring they would be executed in all-or-none manner. Or, you can broker the proposals, meaning executing multiple proposals in one -`Msg/Exec`. In this way, you don't even need to prepare `42stake` to trigger -the first proposal. +`Msg/Exec`: ```yaml actions: @@ -1208,12 +1207,15 @@ agents: executor: cosmos1eee... ``` +In this way, you don't even need to prepare `42stake` to trigger the first +proposal. + ### Retail Wholesalers often sell large amount of assets at a reduced price. One can be a retailer when certain amount of relevant proposals are accumulated on the chain. In this example, a wholesaler `cosmos1wholesaler...` sells x/bank coins -`10000egg` for x/bank coins `10000000stake`. +`10000egg` for x/bank coins `10000000stake`: ```yaml agent: cosmos1wholesaleragent... @@ -1236,7 +1238,7 @@ proposer: cosmos1wholesaler... ``` For simplicity, suppose there were 100 proposals selling x/bank coins -`150000stake` for x/bank coins `100egg`. +`150000stake` for x/bank coins `100egg`: ```yaml agent: cosmos1consumerzeroagent... @@ -1258,7 +1260,7 @@ pre_actions: proposer: cosmos1consumerzero... ``` -In this case, literally anyone can be a retailer, executing the proposals. +In this case, literally anyone can be a retailer, executing the proposals: ```yaml actions: From 160ccfc6510a8cd075d90eb452708f238b392215 Mon Sep 17 00:00:00 2001 From: Youngtaek Yoon Date: Wed, 28 Feb 2024 11:48:05 +0000 Subject: [PATCH 7/8] Add go report cards --- x/escrow/README.md | 1 + x/test/README.md | 1 + 2 files changed, 2 insertions(+) diff --git a/x/escrow/README.md b/x/escrow/README.md index d5cc441..47249ef 100644 --- a/x/escrow/README.md +++ b/x/escrow/README.md @@ -2,6 +2,7 @@ [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=0tech_andromeda_x-escrow&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=0tech_andromeda_x-escrow) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=0tech_andromeda_x-escrow&metric=coverage)](https://sonarcloud.io/summary/new_code?id=0tech_andromeda_x-escrow) +[![Go Report Card](https://goreportcard.com/badge/github.com/0tech/andromeda/x/escrow)](https://goreportcard.com/report/github.com/0tech/andromeda/x/escrow) ## Abstract diff --git a/x/test/README.md b/x/test/README.md index cfd3fbf..e343d62 100644 --- a/x/test/README.md +++ b/x/test/README.md @@ -2,6 +2,7 @@ [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=0tech_andromeda_x-test&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=0tech_andromeda_x-test) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=0tech_andromeda_x-test&metric=coverage)](https://sonarcloud.io/summary/new_code?id=0tech_andromeda_x-test) +[![Go Report Card](https://goreportcard.com/badge/github.com/0tech/andromeda/x/test)](https://goreportcard.com/report/github.com/0tech/andromeda/x/test) ## Abstract From dd09ffe412af61f3712788a1f1e6a979f3c1e6fc Mon Sep 17 00:00:00 2001 From: Youngtaek Yoon Date: Wed, 28 Feb 2024 12:20:23 +0000 Subject: [PATCH 8/8] Add a status badge of `Check Modules` --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 4440930..19d9679 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ # andromeda +[![Check Modules](https://github.com/0Tech/andromeda/actions/workflows/modules.yml/badge.svg)](https://github.com/0Tech/andromeda/actions/workflows/modules.yml) + This project provides several [modules](x/README.md) based on [Cosmos SDK](https://github.com/cosmos/cosmos-sdk).