Skip to content

Commit

Permalink
Merge pull request #702 from comdex-official/feature/dev
Browse files Browse the repository at this point in the history
Feature/dev
  • Loading branch information
dheerajkd30 authored Mar 10, 2023
2 parents d9b836d + 89f9110 commit e01a9f8
Show file tree
Hide file tree
Showing 101 changed files with 189,221 additions and 3,579 deletions.
Binary file modified .DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
build/
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@
/cover.out
/bin/
__pycache__
*.pyc
*.pyc
**/*/node_modules
55 changes: 55 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# docker build . -t cosmoscontracts/comdex:latest
# docker run --rm -it cosmoscontracts/comdex:latest /bin/sh
FROM golang:1.20-alpine AS go-builder

# this comes from standard alpine nightly file
# https://github.com/rust-lang/docker-rust-nightly/blob/master/alpine3.12/Dockerfile
# with some changes to support our toolchain, etc
SHELL ["/bin/sh", "-ecuxo", "pipefail"]
# we probably want to default to latest and error
# since this is predominantly for dev use
# hadolint ignore=DL3018
RUN apk add --no-cache ca-certificates build-base git
# NOTE: add these to run with LEDGER_ENABLED=true
# RUN apk add libusb-dev linux-headers

WORKDIR /code
COPY . /code/

# See https://github.com/CosmWasm/wasmvm/releases
ADD https://github.com/CosmWasm/wasmvm/releases/download/v1.1.1/libwasmvm_muslc.aarch64.a /lib/libwasmvm_muslc.aarch64.a
ADD https://github.com/CosmWasm/wasmvm/releases/download/v1.1.1/libwasmvm_muslc.x86_64.a /lib/libwasmvm_muslc.x86_64.a
RUN sha256sum /lib/libwasmvm_muslc.aarch64.a | grep 9ecb037336bd56076573dc18c26631a9d2099a7f2b40dc04b6cae31ffb4c8f9a
RUN sha256sum /lib/libwasmvm_muslc.x86_64.a | grep 6e4de7ba9bad4ae9679c7f9ecf7e283dd0160e71567c6a7be6ae47c81ebe7f32

# Copy the library you want to the final location that will be found by the linker flag `-lwasmvm_muslc`
RUN cp "/lib/libwasmvm_muslc.$(uname -m).a" /lib/libwasmvm_muslc.a

# force it to use static lib (from above) not standard libgo_cosmwasm.so file
# then log output of file /code/bin/comdex
# then ensure static linking
RUN LEDGER_ENABLED=false BUILD_TAGS=muslc LINK_STATICALLY=true make build \
&& file /code/bin/comdex \
&& echo "Ensuring binary is statically linked ..." \
&& (file /code/bin/comdex | grep "statically linked")

# --------------------------------------------------------
#FROM alpine:3.16
FROM golang

COPY --from=go-builder /code/bin/comdex /usr/bin/comdex
RUN apt update && apt install -y python3 protobuf-compiler

COPY docker/* /opt/
RUN chmod +x /opt/*.sh

WORKDIR /opt

# rest server
EXPOSE 1317
# tendermint p2p
EXPOSE 26656
# tendermint rpc
EXPOSE 26657

CMD ["/usr/bin/comdex", "version"]
27 changes: 26 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ PACKAGES_SIMTEST=$(shell go list ./... | grep '/simulation')
LEDGER_ENABLED ?= true
SDK_PACK := $(shell go list -m github.com/cosmos/cosmos-sdk | sed 's/ /\@/g')
TM_VERSION := $(shell go list -m github.com/tendermint/tendermint | sed 's:.* ::') # grab everything after the space in "github.com/tendermint/tendermint v0.34.7"
DOCKER := $(shell which docker)
DOCKER_BUF := $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace bufbuild/buf:1.0.0-rc8
BUILDDIR ?= $(CURDIR)/build
GOBIN = $(shell go env GOPATH)/bin
GOARCH = $(shell go env GOARCH)
Expand Down Expand Up @@ -91,7 +93,9 @@ endif
#$(info $$BUILD_FLAGS is [$(BUILD_FLAGS)])


all: install test
all: install
@echo "--> project root: go mod tidy"
@go mod tidy

go-mod-cache: go.sum
@echo "--> Download go modules to local cache"
Expand All @@ -108,6 +112,7 @@ distclean: clean
rm -rf vendor/

install: go.sum
@echo "--> installing"
go install -mod=readonly $(BUILD_FLAGS) ./cmd/comdex

build:
Expand Down Expand Up @@ -173,6 +178,26 @@ endif

.PHONY: run-tests test test-all $(TEST_TARGETS)

protoVer=v0.1
containerProtoGenSwagger=comdex-proto-gen-swagger-$(protoVer)

proto-swagger-gen:
@echo
@echo "=========== Generating Docs ============"
@echo
./scripts/protoc_swagger_gen.sh

@if [ -n "$(git status --porcelain)" ]; then \
echo "\033[91mSwagger docs are out of sync!!!\033[0m";\
exit 1;\
else \
echo "\033[92mSwagger docs are in sync\033[0m";\
fi
@echo
@echo "=========== Docs Generation Complete ============"
@echo
.PHONY: docs

test-sim-nondeterminism:
@echo "Running non-determinism test..."
@go test -mod=readonly $(SIMAPP) -run TestAppStateDeterminism -Enabled=true \
Expand Down
6 changes: 6 additions & 0 deletions app/ante.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@ package app
import (
"github.com/CosmWasm/wasmd/x/wasm"
wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
"github.com/comdex-official/comdex/app/decorators"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/cosmos/cosmos-sdk/x/auth/ante"
govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
ibcante "github.com/cosmos/ibc-go/v4/modules/core/ante"
ibckeeper "github.com/cosmos/ibc-go/v4/modules/core/keeper"
)
Expand All @@ -17,6 +20,8 @@ type HandlerOptions struct {
wasmConfig wasm.Config
txCounterStoreKey sdk.StoreKey
IBCChannelKeeper *ibckeeper.Keeper
GovKeeper govkeeper.Keeper
Cdc codec.BinaryCodec
}

func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
Expand All @@ -40,6 +45,7 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
wasmkeeper.NewLimitSimulationGasDecorator(options.wasmConfig.SimulationGasLimit),
wasmkeeper.NewCountTXDecorator(options.txCounterStoreKey),
ante.NewRejectExtensionOptionsDecorator(),
decorators.NewGovPreventSpamDecorator(options.Cdc, options.GovKeeper),
ante.NewMempoolFeeDecorator(),
ante.NewValidateBasicDecorator(),
ante.NewTxTimeoutHeightDecorator(),
Expand Down
10 changes: 8 additions & 2 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ import (

cwasm "github.com/comdex-official/comdex/app/wasm"

mv10 "github.com/comdex-official/comdex/app/upgrades/mainnet/v10"
mv5 "github.com/comdex-official/comdex/app/upgrades/mainnet/v5"
mv6 "github.com/comdex-official/comdex/app/upgrades/mainnet/v6"
mv7 "github.com/comdex-official/comdex/app/upgrades/mainnet/v7"
Expand Down Expand Up @@ -996,9 +997,11 @@ func New(
SignModeHandler: encoding.TxConfig.SignModeHandler(),
SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
},
GovKeeper: app.GovKeeper,
wasmConfig: wasmConfig,
txCounterStoreKey: app.GetKey(wasm.StoreKey),
IBCChannelKeeper: app.IbcKeeper,
Cdc: appCodec,
},
)
if err != nil {
Expand Down Expand Up @@ -1215,8 +1218,8 @@ func (a *App) ModuleAccountsPermissions() map[string][]string {

func (a *App) registerUpgradeHandlers() {
a.UpgradeKeeper.SetUpgradeHandler(
mv9.UpgradeName,
mv9.CreateUpgradeHandlerV900(a.mm, a.configurator, a.AssetKeeper),
mv10.UpgradeName,
mv10.CreateUpgradeHandlerV10(a.mm, a.configurator, a.LiquidityKeeper, a.AssetKeeper, a.BankKeeper),
)
// When a planned update height is reached, the old binary will panic
// writing on disk the height and name of the update that triggered it
Expand Down Expand Up @@ -1281,6 +1284,9 @@ func upgradeHandlers(upgradeInfo storetypes.UpgradeInfo, a *App, storeUpgrades *

case upgradeInfo.Name == mv9.UpgradeName && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height):
storeUpgrades = &storetypes.StoreUpgrades{}

case upgradeInfo.Name == mv10.UpgradeName && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height):
storeUpgrades = &storetypes.StoreUpgrades{}
}

return storeUpgrades
Expand Down
88 changes: 88 additions & 0 deletions app/decorators/gov_filter.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package decorators

import (
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/cosmos/cosmos-sdk/x/authz"
govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
)

var MiniumInitialDepositRate = sdk.NewDecWithPrec(25, 2)

type GovPreventSpamDecorator struct {
govKeeper govkeeper.Keeper
cdc codec.BinaryCodec
}

func NewGovPreventSpamDecorator(cdc codec.BinaryCodec, govKeeper govkeeper.Keeper) GovPreventSpamDecorator {
return GovPreventSpamDecorator{
govKeeper: govKeeper,
cdc: cdc,
}
}

func (gpsd GovPreventSpamDecorator) AnteHandle(
ctx sdk.Context, tx sdk.Tx,
simulate bool, next sdk.AnteHandler,
) (newCtx sdk.Context, err error) {
msgs := tx.GetMsgs()

err = gpsd.checkSpamSubmitProposalMsg(ctx, msgs)

if err != nil {
return ctx, err
}

return next(ctx, tx, simulate)
}

func (gpsd GovPreventSpamDecorator) checkSpamSubmitProposalMsg(ctx sdk.Context, msgs []sdk.Msg) error {
validMsg := func(m sdk.Msg) error {
if msg, ok := m.(*govtypes.MsgSubmitProposal); ok {
// prevent spam gov msg
depositParams := gpsd.govKeeper.GetDepositParams(ctx)
miniumInitialDeposit := gpsd.calcMiniumInitialDeposit(depositParams.MinDeposit)
if msg.InitialDeposit.IsAllLT(miniumInitialDeposit) {
return sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "not enough initial deposit. required: %v", miniumInitialDeposit)
}
}
return nil
}

// Check every msg in the tx, if it's a MsgExec, check the inner msgs.
// If it's a MsgSubmitProposal, check the initial deposit is enough.
for _, m := range msgs {
var innerMsg sdk.Msg
if msg, ok := m.(*authz.MsgExec); ok {
for _, v := range msg.Msgs {
err := gpsd.cdc.UnpackAny(v, &innerMsg)
if err != nil {
return sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "cannot unmarshal authz exec msgs")
}

err = validMsg(innerMsg)
if err != nil {
return err
}
}
} else {
err := validMsg(m)
if err != nil {
return err
}
}
}

return nil
}

func (gpsd GovPreventSpamDecorator) calcMiniumInitialDeposit(minDeposit sdk.Coins) (miniumInitialDeposit sdk.Coins) {
for _, coin := range minDeposit {
miniumInitialCoin := MiniumInitialDepositRate.MulInt(coin.Amount).RoundInt()
miniumInitialDeposit = miniumInitialDeposit.Add(sdk.NewCoin(coin.Denom, miniumInitialCoin))
}

return
}
15 changes: 15 additions & 0 deletions app/upgrades/mainnet/v10/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package v10

const (
UpgradeName = "v10.0.0"
UpgradeHeight = ""
UpgradeInfo = `'{
"binaries": {
"darwin/arm64":"",
"darwin/x86_64":"",
"linux/arm64":"",
"linux/x86_64":"",
"windows/x86_64":""
}
}'`
)
Loading

0 comments on commit e01a9f8

Please sign in to comment.