Commit Graph

60 Commits

Author SHA1 Message Date
IshaVenikar
5d361062cb Add a method to update onboarding module params 2024-08-30 15:04:48 +05:30
c7f9ef6576 Add a method to update bond module params 2024-08-27 10:17:42 +05:30
debfb82205 Integrate slashing module in the app (#53)
Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675)

Add `slashing` module for penalizing / jailing offline validators
Reference: https://docs.cosmos.network/main/build/modules/slashing#liveness-tracking

Note: Breaking change, an existing chain cannot be run with the updated binary

Reviewed-on: cerc-io/laconicd#53
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-08-16 06:23:56 +00:00
3c5cd002e1 Add env variables to configure authority auctions in initialization script (#50)
Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675)

Reviewed-on: cerc-io/laconicd#50
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-08-08 07:14:36 +00:00
b5a76a920e Update node initialization script (#49)
Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675)

Reviewed-on: cerc-io/laconicd#49
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-08-07 11:25:01 +00:00
f176a5889e Implement GQL query for listing authorities (#48)
Part of [Create a public laconicd testnet](https://www.notion.so/Create-a-public-laconicd-testnet-896a11bdd8094eff8f1b49c0be0ca3b8)

Co-authored-by: IshaVenikar <ishavenikar7@gmail.com>
Reviewed-on: cerc-io/laconicd#48
2024-08-02 09:15:08 +00:00
5e7d5fc47c Update init script to use existing genesis file (#47)
Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675)

Co-authored-by: Adw8 <adwaitgharpure@gmail.com>
Reviewed-on: cerc-io/laconicd#47
2024-08-01 11:52:47 +00:00
c162396298 Change token denom from photon to lnt and alnt (#46)
Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675)

Co-authored-by: zramsay <zach@bluecollarcoding.ca>
Reviewed-on: cerc-io/laconicd#46
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-07-30 11:05:58 +00:00
7a88c82816 Add queries to get participant by laconic or nitro address (#44)
Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675)

Co-authored-by: IshaVenikar <ishavenikar7@gmail.com>
Reviewed-on: cerc-io/laconicd#44
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-07-29 10:28:30 +00:00
9fab3f8326 Add fields for role and KYC ID for onboarded participants (#43)
Part of [Sumsub KYC integration in onboarding app](https://www.notion.so/Sumsub-KYC-integration-in-onboarding-app-607b598c9c1d4d12adc71725e2ab5e7e)

Reviewed-on: cerc-io/laconicd#43
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-07-26 14:42:40 +00:00
ec6e2f3776 Add a query to list authorities (#42)
Part of [Add a CLI query to list all authorities with owner filter](cerc-io/laconicd#41)

Usage:
```bash
$ laconicd query registry list-authorities -h
List authorities (optionally by owner)
Usage:
  laconicd query registry list-authorities [flags]
Flags:
      --grpc-addr string   the gRPC endpoint to use for this chain
      --grpc-insecure      allow gRPC over insecure channels, if not the server must use TLS
      --height int         Use a specific height to query state at (this can error if the node is pruning state)
  -h, --help               help for list-authorities
      --no-indent          Do not indent JSON output
      --node string        <host>:<port> to CometBFT RPC interface for this chain (default "tcp://localhost:26657")
  -o, --output string      Output format (text|json) (default "text")
      --owner string       Owner to get the authorities for
```

Example:
```bash
# Without owner filter
$ laconicd query registry list-authorities
authorities:
- entry:
    expiry_time: "2024-07-26T06:54:28.491158167Z"
    height: "247"
    owner_address: laconic1e23vfttpvk045pqeydr4mujmlemx8hf9zjm7h2
    owner_public_key: A6RlTGLIpyA8nnEQN4V3sz3uaLMY0fHtB7aS7u1zTOdD
    status: active
  name: cerc
- entry:
    expiry_time: "2024-07-26T06:47:58.971429925Z"
    height: "118"
    owner_address: laconic10ztdu07xn7rracvzvehelgwvsytqlrvj6pvput
    owner_public_key: AvBxGIXBFmWCF+OHFwydqEtp2bfP+aimObO3teunbve7
    status: active
  name: laconic

# With owner filter
$ laconicd query registry list-authorities --owner laconic1e23vfttpvk045pqeydr4mujmlemx8hf9zjm7h2
authorities:
- entry:
    expiry_time: "2024-07-26T06:54:28.491158167Z"
    height: "247"
    owner_address: laconic1e23vfttpvk045pqeydr4mujmlemx8hf9zjm7h2
    owner_public_key: A6RlTGLIpyA8nnEQN4V3sz3uaLMY0fHtB7aS7u1zTOdD
    status: active
  name: cerc
```

Reviewed-on: cerc-io/laconicd#42
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-07-24 09:14:39 +00:00
eb20f77e83 Fixes for handling authority expiry queue (#40)
Part of #38

Reviewed-on: cerc-io/laconic2d#40
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-07-22 05:40:45 +00:00
43b675cc0a Ignore error on not finding an authority expiry queue entry (#39)
Part of cerc-io/laconic2d#38

This is a hot fix for the issue, cause yet to be investigated.

Reviewed-on: cerc-io/laconic2d#39
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-07-19 11:30:15 +00:00
b2be09e0e4 Allow requests from any origin (#37)
Part of [laconicd testnet validator enrollment](https://www.notion.so/laconicd-testnet-validator-enrollment-6fc1d3cafcc64fef8c5ed3affa27c675)

Co-authored-by: Adw8 <adwait@deepstacksoft.com>
Reviewed-on: cerc-io/laconic2d#37
Co-authored-by: Prathamesh Musale <prathamesh@noreply.git.vdb.to>
Co-committed-by: Prathamesh Musale <prathamesh@noreply.git.vdb.to>
2024-07-17 09:59:59 +00:00
456491a4f2 Comment lint workflow 2024-07-16 12:49:31 +05:30
d36f54543d Pin golangci-lint version in lint workflow 2024-07-16 12:01:44 +05:30
a8a59ad0c1 Rename ethereum_address to nitro_address in onboarding module (#8)
* Rename ethereum_address to nitro_address

* Use camel case for variables in gql schema

* Fix indentation in proto files

* Fix proto lint errors

---------

Co-authored-by: IshaVenikar <ishavenikar7@gmail.com>
2024-07-16 09:25:39 +05:30
Isha Venikar
f23f691646 Add lint config and fix lint errors (#7)
* Add config file for linter

* Fix lint errors

* Fix gofumpt errors

* Fix pre-allocate slices lint error

* Remove unused lint rule

* Disable style check ID error

* Add gomodguard section in yml file

* Remove trailing white spaces

* Remove unnecessary comments

---------

Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-07-16 09:25:39 +05:30
Isha Venikar
8c14d578f7 Add flag to enable/disable onboarding of validators (#6)
* Add gql implementation for getParticipant query

* Add onboarding enable/disable flag

* Remove unnecessary message field from onboardParticipant message

* Add instructions to generate gql bindings
2024-07-16 09:25:39 +05:30
Isha Venikar
582c83543c Implement query in onboarding module to list the registered participants (#4)
* Implement query to list participants

* Remove unnecessary comments
2024-07-16 09:25:39 +05:30
Isha Venikar
a21e9ea387 Implement onboarding module for testnet validator enrollment (#3)
* Add proto files for onboarding module

* Add generated proto bindings

* Define onboarding object

* Define the participants state in keeper

* Update genesis file to initialize and export module state to/from genesis

* Add msg to onboard participant

* Register command to enroll participant

* Add functionality to decode ethereum address from signature

* Add comments for messages and fields

* Fix lint errors in proto files

* Add message validation and events in msg_server

* Reuse crypto utils from go-nitro

* Sign entire eth_payload object

* Use google API for rpc method

* Regenerate proto bindings

---------

Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-07-16 09:25:39 +05:30
Isha Venikar
7369264f0a Create skeleton for onboarding module (#2)
* Add proto files for onboarding module

* Add general files for onboarding module

* Add keeper files for onboarding module

* Add module files for onboarding module

* Update proto files

* Add generated proto bindings

* Use Keeper pointer in depinject

* Fix lint errors
2024-07-16 09:25:39 +05:30
4c0cb6c2c4 Unset home and keyring dir from depinject client config (#35)
Part of #33
Follows PR #34

- With earlier workaround in root cmd (not passing `DefaultNodeHome` to depinject), it created a `config/client.toml` wherever the laconicd CLI was being run
- Unset `clientCtx.HomeDir` and `clientCtx.KeyringDir` while providing client context to depinject instead to prevent this and still handle the `--home` flag precedence issue
  - When using default home directory, all commands still work as `DefaultNodeHome` is passed to the [command executor](https://git.vdb.to/cerc-io/laconic2d/src/branch/main/cmd/laconicd/main.go#L18)

Reviewed-on: cerc-io/laconic2d#35
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-07-16 03:50:08 +00:00
9dc84ef943 Replace alpine with ubuntu as base image in the Dockerfile (#31)
Part of [Create a public laconicd testnet](https://www.notion.so/Create-a-public-laconicd-testnet-896a11bdd8094eff8f1b49c0be0ca3b8)

Co-authored-by: Nabarun <nabarun@deepstacksoft.com>
Reviewed-on: cerc-io/laconic2d#31
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-07-10 14:36:09 +00:00
576569fe66 Update root command setup to respect home flag (#34)
Part of cerc-io/laconic2d#32 and cerc-io/laconic2d#33

- Update context used in root command with Viper so that it recognizes the client config from home directory passed in CLI flags
- Avoid providing default home dir to depinject so that the home directory passed in CLI flags is used in txs
- Known issue: The client config from non-default home directory still doesn't seem to be getting used for some commands; in such cases, user has to pass the required flags explicitly

Reviewed-on: cerc-io/laconic2d#34
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-07-10 12:32:49 +00:00
e63f51cacd Use custom KV store config to handle progressively increasing gas usage (#30)
Part of [Create an external fixturenet-laconicd stack](https://www.notion.so/Create-an-external-fixturenet-laconicd-stack-3b33cc2317444f4da209c4472f4244ed)

Reviewed-on: cerc-io/laconic2d#30
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-06-25 06:33:41 +00:00
66df959d51 Changes required for laconicd testnet stack (#29)
Part of [Create a public laconicd testnet](https://www.notion.so/Create-a-public-laconicd-testnet-896a11bdd8094eff8f1b49c0be0ca3b8)

Reviewed-on: cerc-io/laconic2d#29
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-06-19 12:09:49 +00:00
1d3311b864 Update init script to enable prometheus metrics (#28)
Part of https://www.notion.so/Monitoring-and-alerting-for-laconicd-86727c3b4dde4dc993d87d6e29f935fe

Reviewed-on: cerc-io/laconic2d#28
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-04-11 07:56:50 +00:00
816e1623ac Rename laconicd rest endpoint to rpc for SDK tests (#27)
Part of https://www.notion.so/Rename-laconic2d-to-laconicd-9028d0c020d24d1288e92ebcb773d7a7

Co-authored-by: neeraj <neeraj.rtly@gmail.com>
Reviewed-on: cerc-io/laconic2d#27
Co-authored-by: Prathamesh Musale <prathamesh@noreply.git.vdb.to>
Co-committed-by: Prathamesh Musale <prathamesh@noreply.git.vdb.to>
2024-04-02 03:38:48 +00:00
6bc3d2fcde the chain-id needs to be set before anything else (#25)
otherwise this error presents itself silently:

```
updated config is invalid: client config invalid: chain-id is empty
```

Co-authored-by: zramsay <zach@bluecollarcoding.ca>
Reviewed-on: cerc-io/laconic2d#25
Co-authored-by: zramsay <zramsay@noreply.git.vdb.to>
Co-committed-by: zramsay <zramsay@noreply.git.vdb.to>
2024-04-01 12:19:54 +00:00
213c390c37 Rename laconic2d to laconicd (#26)
Part of https://www.notion.so/Rename-laconic2d-to-laconicd-9028d0c020d24d1288e92ebcb773d7a7

Co-authored-by: neeraj <neeraj.rtly@gmail.com>
Reviewed-on: cerc-io/laconic2d#26
Co-authored-by: Prathamesh Musale <prathamesh@noreply.git.vdb.to>
Co-committed-by: Prathamesh Musale <prathamesh@noreply.git.vdb.to>
2024-04-01 09:57:26 +00:00
1956161316 Update registry-sdk repo path in CI (#24)
Part of https://www.notion.so/Port-laconicd-to-cosmos-sdk-v0-50-x-43b30ab4e33a49c5912ebb2871cb777c

Reviewed-on: cerc-io/laconic2d#24
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-03-14 09:15:15 +00:00
8e9f08b652 Add CI workflows for SDK tests (#23)
Part of https://www.notion.so/Port-laconicd-to-cosmos-sdk-v0-50-x-43b30ab4e33a49c5912ebb2871cb777c

Reviewed-on: deep-stack/laconic2d#23
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-03-13 06:19:15 +00:00
946e64d289 Verify write transactions in E2E tests (#22)
- Verify transaction inclusion and response code for write txs as done in cosmos-sdk E2E tests

Reviewed-on: deep-stack/laconic2d#22
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-03-13 04:53:11 +00:00
08a29c023c Add SDK tests script (#21)
Reviewed-on: deep-stack/laconic2d#21
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-03-12 12:06:24 +00:00
373af7562b Handle not found errors in GQL query resolvers (#20)
Part of https://www.notion.so/Create-laconic-registry-SDK-d3a636d4aba44f7cbba3bd99b7146811

- Return `nil` in response when
  - bond not found on `getBondsByIds` request
  - authority not found on `lookupAuthorities` / `whois` request

Co-authored-by: neeraj <neeraj.rtly@gmail.com>
Reviewed-on: deep-stack/laconic2d#20
Co-authored-by: Prathamesh Musale <prathamesh@noreply.git.vdb.to>
Co-committed-by: Prathamesh Musale <prathamesh@noreply.git.vdb.to>
2024-03-12 08:40:23 +00:00
67cbbf7088 Disable block timeouts in E2E test network (#19)
- The E2E tests sometimes fail with error `timeout exceeded waiting for block` in CI (always passed locally)
- Update the test network setup to disable timeouts when waiting for blocks

Reviewed-on: deep-stack/laconic2d#19
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-03-12 04:35:20 +00:00
8c0540bdb5 Add a test network setup and patch for E2E tests (#18)
- The E2E tests sometimes fail with error `timeout exceeded waiting for block` in CI (always passed locally)
- The error occurs in the test network (provided in cosmos-sdk) creation when [waiting](https://github.com/cosmos/cosmos-sdk/blob/v0.50.3/testutil/network/network.go#L622) for the first block because of block timeout being too short ([hardcoded](https://github.com/cosmos/cosmos-sdk/blob/v0.50.3/testutil/network/network.go#L670) to 5s)
- Copy over this network setup in the repo and patch to skip this check; we are waiting for a block to appear after the network creation anyway

Reviewed-on: deep-stack/laconic2d#18
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-03-07 12:35:59 +00:00
aed2d6d4c6 Rename RPC method to reserve authority and fix proto lint errors (#17)
- Rename RPC method to reserve authority from `ReserveName` to `ReserveAuthority`
  and `GetBondsModuleBalance` to `GetBondModuleBalance`
- Run lint formatter
- Fix proto lint errors and regenerate proto bindings

Reviewed-on: deep-stack/laconic2d#17
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-03-07 11:25:15 +00:00
33b6cce362 Additional CI workflows (#16)
Reviewed-on: deep-stack/laconic2d#16
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-03-07 09:11:53 +00:00
4e4e9caccf Add initialization script and a Dockerfile (#15)
Reviewed-on: deep-stack/laconic2d#15
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-03-07 05:10:41 +00:00
ec147272e6 Add module invariants and input validations (#14)
Reviewed-on: deep-stack/laconic2d#14
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-03-06 09:24:15 +00:00
d346b95234 Add e2e tests for gRPC requests and CLI commands (#13)
- Add E2E tests following pattern suggested in cosmos-sdk docs:
  https://docs.cosmos.network/v0.50/build/building-modules/testing#end-to-end-tests
  - Tests for gRPC requests
  - Tests for manually configured CLI commands
- Add a CI workflow to run these E2E tests

Reviewed-on: deep-stack/laconic2d#13
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-03-04 11:16:09 +00:00
fa5885b349 Setup and integrate GQL server (#12)
Reviewed-on: deep-stack/laconic2d#12
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-02-29 12:45:38 +00:00
0af44b5f17 Setup integration tests and CI (#11)
- Setup integration tests following pattern suggested in cosmos-sdk docs:
  https://docs.cosmos.network/v0.50/build/building-modules/testing#integration-tests
- Add tests for laconic modules query services
- Setup a CI workflow to run the integration tests

Reviewed-on: deep-stack/laconic2d#11
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-02-29 11:54:35 +00:00
d2505367aa Use LRN abbrevation for names (#10)
Reviewed-on: deep-stack/laconic2d#10
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-02-28 04:53:23 +00:00
c79b7bea7d Setup hooks between laconic modules (#9)
- Implement auction and bond module hooks in registry module
- Code cleanup

Reviewed-on: deep-stack/laconic2d#9
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-02-28 04:34:58 +00:00
ba7a127d7f Add bond-record association commands to registry module (#8)
Reviewed-on: deep-stack/laconic2d#8
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-02-26 12:56:11 +00:00
d2339e2426 Handle record and authority expiry in registry module (#7)
- Registry module
  - Update module state to track record / authority expiry queues
  - Handle expired records and authorities at the end of each block
  - Add a command to handle record renewal

Reviewed-on: deep-stack/laconic2d#7
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-02-26 06:16:09 +00:00
92764535a6 Additional registry module commands (#6)
For registry module:
- Add commands to:
  - get records by bond id
  - reserve name authority
  - get name authority
  - set authority bond id
  - set name
  - get and list names
  - resolve name to a record
  - delete name
- Handle:
  - genesis import / export
  - returning names when fetching record(s)
  - sub-authority reservation
- To be handled in an upcoming PR:
  - module end blocker
  - record expiry
  - command to renew records
  - bond-association commands

Reviewed-on: deep-stack/laconic2d#6
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
2024-02-26 05:42:36 +00:00