-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
40 changed files
with
3,317 additions
and
73 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,7 +13,7 @@ linters: | |
# - copyloopvar | ||
- goconst | ||
- gocritic | ||
- gci | ||
# - gci | ||
- gofumpt | ||
# - gosec | ||
- gosimple | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,18 @@ | ||
# Cada (Cosmos Avail DA module) | ||
# CADA (Cosmos Avail DA module) | ||
|
||
CADA is a module designed to connect Cosmos sovereign chains with the Avail network, making it easier for any Cosmos chain or rollapp to use Avail as their Data Availability (DA) layer. With CADA, developers can improve the scalability and security of their decentralized applications within the Cosmos ecosystem. It enables better data handling and availability, allowing Cosmos-based chains to tap into the strengths of Avail and build a more connected and resilient blockchain network. | ||
|
||
# How It Works | ||
For example: | ||
Let blobInterval = 10, | ||
|
||
- At height `11`, blocks from `1` to `10` are posted. | ||
- At height `21`, blocks from `11` to `20` are posted. | ||
|
||
Refer to the module specification available [here](./specs/README.md) for more detailed information. | ||
For more detailed information, refer to the `CADA` module specification [here](./specs/README.md). | ||
|
||
Note: Use the latest maintained [Go](https://go.dev/dl/) version to work with this module. | ||
# Integration Guide | ||
|
||
Ensure that the Avail light client URL is correctly configured for the module to function as expected. For instructions on running Avail locally, refer to [this documentation](https://github.com/rollkit/avail-da?tab=readme-ov-file#avail-da). | ||
To integrate the CADA module into your application, follow the steps outlined in the [integration guide](./integration_docs/README.md) | ||
|
||
Note: Ensure that the Avail light client URL is correctly configured for the module to function as expected. For instructions on setup Avail locally, please refer to [this documentation](https://github.com/rollkit/avail-da?tab=readme-ov-file#avail-da). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
package cli_test | ||
|
||
import ( | ||
"fmt" | ||
"testing" | ||
|
||
"github.com/cosmos/cosmos-sdk/client/flags" | ||
"github.com/cosmos/cosmos-sdk/crypto/hd" | ||
sdk "github.com/cosmos/cosmos-sdk/types" | ||
"github.com/stretchr/testify/suite" | ||
"github.com/vitwit/avail-da-module/client/cli" | ||
network "github.com/vitwit/avail-da-module/network" | ||
|
||
app "simapp/app" | ||
|
||
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" | ||
) | ||
|
||
func TestIntegrationTestSuite(t *testing.T) { | ||
suite.Run(t, new(IntegrationTestSuite)) | ||
} | ||
|
||
type IntegrationTestSuite struct { | ||
suite.Suite | ||
|
||
cfg network.Config | ||
network *network.Network | ||
addresses []string | ||
} | ||
|
||
const aliceMnemonic = "all soap kiwi cushion federal skirt tip shock exist tragic verify lunar shine rely torch please view future lizard garbage humble medal leisure mimic" | ||
|
||
func (s *IntegrationTestSuite) SetupSuite() { | ||
s.T().Log("setting up integration test suite") | ||
|
||
var err error | ||
|
||
// Setup network config | ||
cfg := network.DefaultConfig(app.NewTestNetworkFixture) | ||
cfg.NumValidators = 1 | ||
s.cfg = cfg | ||
|
||
// Initialize the network | ||
s.network, err = network.New(s.T(), s.T().TempDir(), cfg) | ||
s.Require().NoError(err) | ||
|
||
kb := s.network.Validators[0].ClientCtx.Keyring | ||
path := sdk.GetConfig().GetFullBIP44Path() | ||
info, err := kb.NewAccount("alice", aliceMnemonic, "", path, hd.Secp256k1) | ||
s.Require().NoError(err) | ||
|
||
add, err := info.GetAddress() | ||
s.Require().NoError(err) | ||
s.addresses = append(s.addresses, add.String()) | ||
|
||
_, err = s.network.WaitForHeight(1) | ||
s.Require().NoError(err) | ||
} | ||
|
||
func (s *IntegrationTestSuite) TearDownSuite() { | ||
s.T().Log("tearing down integration suite") | ||
s.network.Cleanup() | ||
} | ||
|
||
func (s *IntegrationTestSuite) TestNewUpdateBlobStatusCmd() { | ||
val := s.network.Validators[0] | ||
|
||
testCases := []struct { | ||
name string | ||
args []string | ||
expectErr bool | ||
}{ | ||
{ | ||
"update blob status - success", | ||
[]string{ | ||
"1", | ||
"10", | ||
"success", | ||
"120", | ||
fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addresses[0]), | ||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), | ||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), | ||
}, | ||
false, | ||
}, | ||
{ | ||
"update blob status - failure", | ||
[]string{ | ||
"1", | ||
"10", | ||
"failure", | ||
"120", | ||
fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addresses[0]), | ||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), | ||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), | ||
}, | ||
false, | ||
}, | ||
{ | ||
"update blob status - invalid status", | ||
[]string{ | ||
"1", | ||
"10", | ||
"invalid", | ||
"120", | ||
fmt.Sprintf("--%s=%s", flags.FlagFrom, s.addresses[0]), | ||
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), | ||
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), | ||
}, | ||
false, | ||
}, | ||
} | ||
|
||
for _, tc := range testCases { | ||
s.Run(tc.name, func() { | ||
cmd := cli.NewUpdateBlobStatusCmd() | ||
res, err := clitestutil.ExecTestCLICmd(val.ClientCtx, cmd, tc.args) | ||
if tc.expectErr { | ||
if err != nil { | ||
s.Require().Error(err) | ||
} | ||
} | ||
|
||
s.Require().NoError(nil) | ||
s.Require().NotNil(res) | ||
}) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package client | ||
|
||
const ( | ||
KeyringBackendTest = "test" | ||
) | ||
|
||
// ChainClient is client to interact with SPN. | ||
type ChainClient struct { | ||
Address string `json:"address"` | ||
AddressPrefix string `json:"account_address_prefix"` | ||
RPC string `json:"rpc"` | ||
Key string `json:"key"` | ||
Mnemonic string `json:"mnemonic"` | ||
KeyringServiceName string `json:"keyring_service_name"` | ||
HDPath string `json:"hd_path"` | ||
Enabled bool `json:"enabled"` | ||
ChainName string `json:"chain_name"` | ||
Denom string `json:"denom"` | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.