-
Notifications
You must be signed in to change notification settings - Fork 21
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
44 changed files
with
7,373 additions
and
0 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 |
---|---|---|
@@ -0,0 +1,35 @@ | ||
name: "Code Scanning - Action" | ||
|
||
on: | ||
pull_request: | ||
paths: | ||
- "**.go" | ||
push: | ||
branches: [ main ] | ||
paths: | ||
- "**.go" | ||
|
||
jobs: | ||
CodeQL-Build: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
actions: read | ||
contents: read | ||
security-events: write | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/[email protected] | ||
|
||
# Initializes the CodeQL tools for scanning. | ||
- name: Initialize CodeQL | ||
uses: github/codeql-action/init@v2 | ||
with: | ||
languages: 'go' | ||
queries: crypto-com/cosmos-sdk-codeql@main,security-and-quality | ||
|
||
- name: Autobuild | ||
uses: github/codeql-action/autobuild@v2 | ||
|
||
- name: Perform CodeQL Analysis | ||
uses: github/codeql-action/analyze@v2 |
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,48 @@ | ||
name: Build | ||
on: | ||
pull_request: | ||
branches: | ||
- "**" | ||
push: | ||
branches: | ||
- "main" | ||
- "release/v[0-9]**" | ||
workflow_dispatch: | ||
permissions: | ||
contents: read | ||
|
||
concurrency: | ||
group: ci-${{ github.ref }}-build | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Check out repository code | ||
uses: actions/checkout@v3 | ||
- name: Setup Golang | ||
uses: actions/setup-go@v4 | ||
with: | ||
go-version: "^1.20" | ||
- name: Display go version | ||
run: go version | ||
- name: Run all tests | ||
run: make test-all | ||
- uses: technote-space/[email protected] | ||
id: git_diff | ||
with: | ||
PATTERNS: | | ||
**/*.go | ||
go.mod | ||
go.sum | ||
**/go.mod | ||
**/go.sum | ||
**/Makefile | ||
Makefile | ||
################### | ||
#### Build App #### | ||
################### | ||
- name: Build demo app # to ensure everything compiles | ||
if: env.GIT_DIFF | ||
run: make build |
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 |
---|---|---|
|
@@ -19,3 +19,5 @@ | |
|
||
# Go workspace file | ||
go.work | ||
go.work.sum | ||
coverage.txt |
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,160 @@ | ||
#!/usr/bin/make -f | ||
|
||
PACKAGES_SIMTEST=$(shell go list ./... | grep '/simulation') | ||
VERSION := $(shell echo $(shell git describe --tags) | sed 's/^v//') | ||
COMMIT := $(shell git log -1 --format='%H') | ||
LEDGER_ENABLED ?= true | ||
BINDIR ?= $(GOPATH)/bin | ||
SIMAPP = ./demo/app | ||
|
||
# for dockerized protobuf tools | ||
DOCKER := $(shell which docker) | ||
BUF_IMAGE=bufbuild/buf@sha256:3cb1f8a4b48bd5ad8f09168f10f607ddc318af202f5c057d52a45216793d85e5 #v1.4.0 | ||
DOCKER_BUF := $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace $(BUF_IMAGE) | ||
HTTPS_GIT := https://github.com/osmosis-labs/mesh-security.git | ||
|
||
export GO111MODULE = on | ||
|
||
# process build tags | ||
|
||
build_tags = netgo | ||
ifeq ($(LEDGER_ENABLED),true) | ||
ifeq ($(OS),Windows_NT) | ||
GCCEXE = $(shell where gcc.exe 2> NUL) | ||
ifeq ($(GCCEXE),) | ||
$(error gcc.exe not installed for ledger support, please install or set LEDGER_ENABLED=false) | ||
else | ||
build_tags += ledger | ||
endif | ||
else | ||
UNAME_S = $(shell uname -s) | ||
ifeq ($(UNAME_S),OpenBSD) | ||
$(warning OpenBSD detected, disabling ledger support (https://github.com/cosmos/cosmos-sdk/issues/1988)) | ||
else | ||
GCC = $(shell command -v gcc 2> /dev/null) | ||
ifeq ($(GCC),) | ||
$(error gcc not installed for ledger support, please install or set LEDGER_ENABLED=false) | ||
else | ||
build_tags += ledger | ||
endif | ||
endif | ||
endif | ||
endif | ||
|
||
ifeq ($(WITH_CLEVELDB),yes) | ||
build_tags += gcc | ||
endif | ||
build_tags += $(BUILD_TAGS) | ||
build_tags := $(strip $(build_tags)) | ||
|
||
whitespace := | ||
empty = $(whitespace) $(whitespace) | ||
comma := , | ||
build_tags_comma_sep := $(subst $(empty),$(comma),$(build_tags)) | ||
|
||
# process linker flags | ||
|
||
ldflags = -X github.com/cosmos/cosmos-sdk/version.Name=mesh \ | ||
-X github.com/cosmos/cosmos-sdk/version.AppName=meshd \ | ||
-X github.com/cosmos/cosmos-sdk/version.Version=$(VERSION) \ | ||
-X github.com/cosmos/cosmos-sdk/version.Commit=$(COMMIT) \ | ||
-X github.com/osmosis-labs/mesh-security-sdk/demo/app.Bech32Prefix=mesh \ | ||
-X "github.com/cosmos/cosmos-sdk/version.BuildTags=$(build_tags_comma_sep)" | ||
|
||
ifeq ($(WITH_CLEVELDB),yes) | ||
ldflags += -X github.com/cosmos/cosmos-sdk/types.DBBackend=cleveldb | ||
endif | ||
ifeq ($(LINK_STATICALLY),true) | ||
ldflags += -linkmode=external -extldflags "-Wl,-z,muldefs -static" | ||
endif | ||
ldflags += $(LDFLAGS) | ||
ldflags := $(strip $(ldflags)) | ||
|
||
BUILD_FLAGS := -tags "$(build_tags_comma_sep)" -ldflags '$(ldflags)' -trimpath | ||
|
||
# The below include contains the tools and runsim targets. | ||
include demo/contrib/devtools/Makefile | ||
|
||
all: install lint test | ||
|
||
build: | ||
ifeq ($(OS),Windows_NT) | ||
$(error mesh demo server not supported) | ||
exit 1 | ||
else | ||
go build -mod=readonly $(BUILD_FLAGS) -o build/meshd ./demo/cmd/meshd | ||
endif | ||
|
||
######################################## | ||
### Testing | ||
|
||
test: test-unit | ||
test-all: test-race test-cover | ||
|
||
test-unit: | ||
@VERSION=$(VERSION) go test -mod=readonly -tags='ledger test_ledger_mock' ./x/... ./tests/e2e/... | ||
|
||
test-race: | ||
@VERSION=$(VERSION) go test -mod=readonly -race -tags='ledger test_ledger_mock' ./x/... ./tests/e2e/... | ||
|
||
test-cover: | ||
@go test -mod=readonly -timeout 30m -race -coverprofile=coverage.txt -covermode=atomic -tags='ledger test_ledger_mock' ./x/... ./tests/e2e/... | ||
|
||
|
||
test-sim-import-export: runsim | ||
@echo "Running application import/export simulation. This may take several minutes..." | ||
@$(BINDIR)/runsim -Jobs=4 -SimAppPkg=$(SIMAPP) -ExitOnFail 50 5 TestAppImportExport | ||
|
||
test-sim-multi-seed-short: runsim | ||
@echo "Running short multi-seed application simulation. This may take awhile!" | ||
@$(BINDIR)/runsim -Jobs=4 -SimAppPkg=$(SIMAPP) -ExitOnFail 50 10 TestFullAppSimulation | ||
|
||
############################################################################### | ||
### Linting ### | ||
############################################################################### | ||
|
||
format-tools: | ||
go install mvdan.cc/[email protected] | ||
go install github.com/client9/misspell/cmd/[email protected] | ||
go install golang.org/x/tools/cmd/goimports@latest | ||
|
||
lint: format-tools | ||
golangci-lint run --tests=false ./demo/... ./x/... | ||
find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "*_test.go" | xargs gofumpt -d -s | ||
|
||
format: format-tools | ||
find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./contracts*" -not -path "./packages*" -not -path "./docs*"| xargs misspell -w | ||
find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./contracts*" -not -path "./packages*" -not -path "./docs*"| xargs gofumpt -w -s | ||
find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./contracts*" -not -path "./packages*" -not -path "./docs*"| xargs goimports -w -local github.com/osmosis-labs/mesh-security-sdk | ||
|
||
############################################################################### | ||
### Protobuf ### | ||
############################################################################### | ||
protoVer=0.11.6 | ||
protoImageName=ghcr.io/cosmos/proto-builder:$(protoVer) | ||
protoImage=$(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace $(protoImageName) | ||
|
||
proto-all: proto-format proto-lint proto-gen format | ||
|
||
proto-gen: | ||
@echo "Generating Protobuf files" | ||
@$(protoImage) sh ./scripts/protocgen.sh | ||
|
||
proto-format: | ||
@echo "Formatting Protobuf files" | ||
@$(protoImage) find ./ -name "*.proto" -exec clang-format -i {} \; | ||
|
||
proto-swagger-gen: | ||
@./scripts/protoc-swagger-gen.sh | ||
|
||
proto-lint: | ||
@$(DOCKER_BUF) lint --error-format=json | ||
|
||
proto-check-breaking: | ||
@$(DOCKER_BUF) breaking --against $(HTTPS_GIT)#branch=main | ||
|
||
|
||
.PHONY: all install install-debug \ | ||
go-mod-cache draw-deps clean build \ | ||
test test-all test-build test-cover test-unit test-race \ | ||
proto-all proto-format proto-swagger-gen proto-lint proto-check-breaking |
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,5 @@ | ||
# This workspace file points to the roots found in your | ||
# previous "buf.yaml" configuration. | ||
version: v1 | ||
directories: | ||
- proto |
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 @@ | ||
# Cosmos Demo Application |
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,62 @@ | ||
package app | ||
|
||
import ( | ||
errorsmod "cosmossdk.io/errors" | ||
storetypes "github.com/cosmos/cosmos-sdk/store/types" | ||
sdk "github.com/cosmos/cosmos-sdk/types" | ||
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" | ||
"github.com/cosmos/cosmos-sdk/x/auth/ante" | ||
ibcante "github.com/cosmos/ibc-go/v7/modules/core/ante" | ||
"github.com/cosmos/ibc-go/v7/modules/core/keeper" | ||
|
||
wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" | ||
wasmTypes "github.com/CosmWasm/wasmd/x/wasm/types" | ||
) | ||
|
||
// HandlerOptions extend the SDK's AnteHandler options by requiring the IBC | ||
// channel keeper. | ||
type HandlerOptions struct { | ||
ante.HandlerOptions | ||
|
||
IBCKeeper *keeper.Keeper | ||
WasmConfig *wasmTypes.WasmConfig | ||
TXCounterStoreKey storetypes.StoreKey | ||
} | ||
|
||
func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { | ||
if options.AccountKeeper == nil { | ||
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "account keeper is required for AnteHandler") | ||
} | ||
if options.BankKeeper == nil { | ||
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "bank keeper is required for AnteHandler") | ||
} | ||
if options.SignModeHandler == nil { | ||
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for ante builder") | ||
} | ||
if options.WasmConfig == nil { | ||
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "wasm config is required for ante builder") | ||
} | ||
if options.TXCounterStoreKey == nil { | ||
return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "tx counter key is required for ante builder") | ||
} | ||
|
||
anteDecorators := []sdk.AnteDecorator{ | ||
ante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first | ||
wasmkeeper.NewLimitSimulationGasDecorator(options.WasmConfig.SimulationGasLimit), // after setup context to enforce limits early | ||
wasmkeeper.NewCountTXDecorator(options.TXCounterStoreKey), | ||
ante.NewExtensionOptionsDecorator(options.ExtensionOptionChecker), | ||
ante.NewValidateBasicDecorator(), | ||
ante.NewTxTimeoutHeightDecorator(), | ||
ante.NewValidateMemoDecorator(options.AccountKeeper), | ||
ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), | ||
ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker), | ||
ante.NewSetPubKeyDecorator(options.AccountKeeper), // SetPubKeyDecorator must be called before all signature verification decorators | ||
ante.NewValidateSigCountDecorator(options.AccountKeeper), | ||
ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer), | ||
ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), | ||
ante.NewIncrementSequenceDecorator(options.AccountKeeper), | ||
ibcante.NewRedundantRelayDecorator(options.IBCKeeper), | ||
} | ||
|
||
return sdk.ChainAnteDecorators(anteDecorators...), nil | ||
} |
Oops, something went wrong.