-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: implement rollup module (#1034)
* feat: implement rollup module * feat: add demo script * chore: fix lint error * chore: comment out * fix: apply review * fix: remove max_sequencers field
- Loading branch information
Showing
42 changed files
with
9,847 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
syntax = "proto3"; | ||
package finschia.or.rollup.v1; | ||
|
||
import "gogoproto/gogo.proto"; | ||
|
||
import "finschia/or/rollup/v1/rollup.proto"; | ||
import "finschia/or/rollup/v1/params.proto"; | ||
|
||
option go_package = "github.com/Finschia/finschia-sdk/x/or/rollup/types"; | ||
|
||
message GenesisState { | ||
repeated Rollup rollup_list = 1 [(gogoproto.nullable) = false]; | ||
repeated Sequencer sequencer_list = 2 [(gogoproto.nullable) = false]; | ||
Params params = 3 [(gogoproto.nullable) = false]; | ||
} |
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,12 @@ | ||
syntax = "proto3"; | ||
package finschia.or.rollup.v1; | ||
|
||
import "gogoproto/gogo.proto"; | ||
|
||
option go_package = "github.com/Finschia/finschia-sdk/x/or/rollup/types"; | ||
|
||
// Params defines the parameters for the module. | ||
message Params { | ||
option (gogoproto.goproto_stringer) = false; | ||
|
||
} |
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,78 @@ | ||
syntax = "proto3"; | ||
package finschia.or.rollup.v1; | ||
|
||
import "google/api/annotations.proto"; | ||
|
||
import "finschia/or/rollup/v1/rollup.proto"; | ||
|
||
import "cosmos/base/query/v1beta1/pagination.proto"; | ||
import "cosmos_proto/cosmos.proto"; | ||
import "google/protobuf/any.proto"; | ||
import "gogoproto/gogo.proto"; | ||
|
||
option go_package = "github.com/Finschia/finschia-sdk/x/or/rollup/types"; | ||
|
||
service Query { | ||
rpc Rollup(QueryRollupRequest) returns (QueryRollupResponse) { | ||
option (google.api.http).get = "/finschia/or/rollup/v1/rollup/{rollup_name}"; | ||
} | ||
|
||
rpc AllRollup(QueryAllRollupRequest) returns (QueryAllRollupResponse) { | ||
option (google.api.http).get = "/finschia/or/rollup/v1/rollup/rollup"; | ||
} | ||
|
||
rpc Sequencer(QuerySequencerRequest) returns (QuerySequencerResponse) { | ||
option (google.api.http).get = "/finschia/or/rollup/v1/rollup/sequencer/{sequencer_address}"; | ||
} | ||
|
||
rpc SequencersByRollup(QuerySequencersByRollupRequest) returns (QuerySequencersByRollupResponse) { | ||
option (google.api.http).get = "/finschia/or/rollup/v1/rollup/sequencers_by_rollup/{rollup_name}"; | ||
} | ||
|
||
rpc Deposit(QueryDepositRequest) returns (QueryDepositResponse) { | ||
option (google.api.http).get = "/finschia/or/rollup/v1/rollup/deposit/{rollup_name}/{sequencer_address}"; | ||
} | ||
} | ||
|
||
message QueryRollupRequest { | ||
string rollup_name = 1; | ||
} | ||
|
||
message QueryAllRollupRequest { | ||
cosmos.base.query.v1beta1.PageRequest pagination = 1; | ||
} | ||
|
||
message QueryAllRollupResponse { | ||
repeated Rollup rollup = 1 [(gogoproto.nullable) = false]; | ||
cosmos.base.query.v1beta1.PageResponse pagination = 2; | ||
} | ||
|
||
message QuerySequencerRequest { | ||
string sequencer_address = 1; | ||
} | ||
|
||
message QueryRollupResponse { | ||
Rollup rollup = 1 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
message QuerySequencerResponse { | ||
Sequencer sequencer = 1 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
message QuerySequencersByRollupRequest { | ||
string rollup_name = 1; | ||
} | ||
|
||
message QuerySequencersByRollupResponse { | ||
string rollup_name = 1; | ||
repeated Sequencer sequencer_list = 2 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
message QueryDepositRequest { | ||
string rollup_name = 1; | ||
string sequencer_address = 2; | ||
} | ||
|
||
message QueryDepositResponse { | ||
Deposit deposit = 1; | ||
} |
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,36 @@ | ||
syntax = "proto3"; | ||
package finschia.or.rollup.v1; | ||
|
||
import "cosmos_proto/cosmos.proto"; | ||
import "google/protobuf/any.proto"; | ||
import "cosmos/base/v1beta1/coin.proto"; | ||
import "gogoproto/gogo.proto"; | ||
|
||
option go_package = "github.com/Finschia/finschia-sdk/x/or/rollup/types"; | ||
|
||
message Rollup { | ||
string rollup_name = 1; | ||
string creator = 2; | ||
Sequencers permissioned_addresses = 3 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
message Sequencer { | ||
string sequencer_address = 1; | ||
google.protobuf.Any pubkey = 2 [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey"]; | ||
string rollup_name = 3; | ||
} | ||
|
||
message Deposit { | ||
string rollup_name = 1; | ||
string sequencer_address = 2; | ||
cosmos.base.v1beta1.Coin value = 3 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
message SequencersByRollup { | ||
string rollup_name = 1; | ||
repeated Sequencer sequencers = 2 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
message Sequencers { | ||
repeated string addresses = 1; | ||
} |
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,55 @@ | ||
syntax = "proto3"; | ||
package finschia.or.rollup.v1; | ||
|
||
import "cosmos_proto/cosmos.proto"; | ||
import "google/protobuf/any.proto"; | ||
import "gogoproto/gogo.proto"; | ||
import "cosmos/base/v1beta1/coin.proto"; | ||
import "finschia/or/rollup/v1/rollup.proto"; | ||
|
||
option go_package = "github.com/Finschia/finschia-sdk/x/or/rollup/types"; | ||
|
||
service Msg { | ||
rpc CreateRollup(MsgCreateRollup) returns (MsgCreateRollupResponse); | ||
rpc RegisterSequencer(MsgRegisterSequencer) returns (MsgRegisterSequencerResponse); | ||
rpc Deposit(MsgDeposit) returns (MsgDepositResponse); | ||
rpc Withdraw(MsgWithdraw) returns (MsgWithdrawResponse); | ||
rpc RemoveSequencer(MsgRemoveSequencer) returns (MsgRemoveSequencerResponse); | ||
} | ||
|
||
message MsgCreateRollup { | ||
string rollup_name = 1; | ||
string creator = 2; | ||
Sequencers permissioned_addresses = 3 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
message MsgRegisterSequencer { | ||
string creator = 1; | ||
google.protobuf.Any pubkey = 2 [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey"]; | ||
string rollup_name = 3; | ||
cosmos.base.v1beta1.Coin value = 4 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
message MsgDeposit { | ||
string rollup_name = 1; | ||
string sequencer_address = 2; | ||
cosmos.base.v1beta1.Coin value = 3 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
message MsgWithdraw { | ||
string rollup_name = 1; | ||
string sequencer_address = 2; | ||
cosmos.base.v1beta1.Coin value = 3 [(gogoproto.nullable) = false]; | ||
} | ||
|
||
message MsgCreateRollupResponse {} | ||
|
||
message MsgRegisterSequencerResponse {} | ||
|
||
message MsgRemoveSequencer {} | ||
|
||
message MsgRemoveSequencerResponse {} | ||
|
||
message MsgDepositResponse {} | ||
|
||
message MsgWithdrawResponse {} |
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
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,87 @@ | ||
#!/bin/bash | ||
|
||
# | ||
DENOM="stake" | ||
ROLLUPNAME="test-rollup" | ||
DEPOSIT="20" | ||
WITHDRAW="10" | ||
|
||
BASE_DIR=~/.simapp | ||
|
||
# Get address which want to register for sequencer | ||
SEQUENCER=$(simd keys list --keyring-backend=test --home $BASE_DIR --output json | jq -r '.[0]'.name) | ||
SEQUENCERADDRESS=$(simd keys list --keyring-backend=test --home $BASE_DIR --output json | jq -r '.[0]'.address) | ||
SEQUENCERPUBKEY=$(simd keys list --keyring-backend=test --home $BASE_DIR --output json | jq -r '.[0]'.pubkey) | ||
echo "Sequencer Info" | ||
echo $SEQUENCER | ||
echo $SEQUENCERADDRESS | ||
echo $SEQUENCERPUBKEY | ||
|
||
echo "# Check init balance" | ||
INITBALANCE=$(simd query bank balances $SEQUENCERADDRESS --home $BASE_DIR --output json | jq -r '.balances[0].amount') | ||
echo $INITBALANCE | ||
|
||
echo "# Create rollup" | ||
simd tx rollup create-rollup $ROLLUPNAME --from $SEQUENCER --keyring-backend=test --home $BASE_DIR --chain-id sim -y | ||
|
||
sleep 5 | ||
|
||
echo "# Check created rollup" | ||
simd query rollup show-rollup $ROLLUPNAME | ||
|
||
echo "# Check rollup list" | ||
simd query rollup list | ||
|
||
echo "# Register sequencer" | ||
simd tx rollup register-sequencer test-rollup ${SEQUENCERPUBKEY} $DEPOSIT$DENOM --from $SEQUENCER --keyring-backend test --home $BASE_DIR --chain-id sim -y | ||
|
||
sleep 5 | ||
|
||
echo "# Check balance after registered sequencer" | ||
BALANCEAFTERREGISTER=$(simd query bank balances $SEQUENCERADDRESS --home $BASE_DIR --output json | jq -r '.balances[0].amount') | ||
echo $BALANCEAFTERREGISTER | ||
|
||
if [ $((${INITBALANCE}-${DEPOSIT})) -ne ${BALANCEAFTERREGISTER} ]; then | ||
echo "The balance after registering the sequencer does not match." | ||
exit 1 | ||
else | ||
echo "Register sequencer done" | ||
fi | ||
|
||
echo "# Check sequencer by rollup name" | ||
simd query rollup show-sequencers-by-rollup $ROLLUPNAME --output json | ||
|
||
echo "# Check sequencer" | ||
simd query rollup show-sequencer $SEQUENCERADDRESS --home $BASE_DIR --output json | ||
|
||
echo "# Withdraw deposit" | ||
simd tx rollup withdraw-by-sequencer $ROLLUPNAME $WITHDRAW$DENOM --from $SEQUENCER --keyring-backend test --home $BASE_DIR --chain-id sim -y | ||
|
||
sleep 5 | ||
|
||
echo "# Check balance after withdraw" | ||
BALANCEAFTERWITHDRAW=$(simd query bank balances $SEQUENCERADDRESS --home $BASE_DIR --output json | jq -r '.balances[0].amount') | ||
|
||
if [ $((${INITBALANCE}-${DEPOSIT}+${WITHDRAW})) -ne ${BALANCEAFTERWITHDRAW} ]; then | ||
echo "The balance after withdraw does not match." | ||
exit 1 | ||
else | ||
echo "Withdraw done" | ||
fi | ||
|
||
echo "# Deposit by sequencer again" | ||
simd tx rollup deposit-by-sequencer test-rollup $DEPOSIT$DENOM --from $SEQUENCER --keyring-backend=test --home $BASE_DIR --chain-id sim -y | ||
|
||
sleep 5 | ||
|
||
echo "# Check balance after deposit again" | ||
BALANCEAFTERDEPOSITAGAIN=$(simd query bank balances $SEQUENCERADDRESS --home $BASE_DIR --output json | jq -r '.balances[0].amount') | ||
|
||
if [ $((${INITBALANCE}-2*${DEPOSIT}+${WITHDRAW})) -ne ${BALANCEAFTERDEPOSITAGAIN} ]; then | ||
echo "The balance after deposit again does not match." | ||
exit 1 | ||
else | ||
echo "Deposit again done" | ||
fi | ||
|
||
echo "Prepare rollup all done." |
Oops, something went wrong.