mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-11-04 11:47:28 +00:00 
			
		
		
		
	
						commit
						f41fdb6a72
					
				@ -1,7 +1,8 @@
 | 
				
			|||||||
vendor/
 | 
					vendor/
 | 
				
			||||||
Dockerfile
 | 
					Dockerfile
 | 
				
			||||||
deployment/
 | 
					 | 
				
			||||||
*.sublime-project
 | 
					*.sublime-project
 | 
				
			||||||
*.sublime-workspace
 | 
					*.sublime-workspace
 | 
				
			||||||
.kvd/
 | 
					.kvd/
 | 
				
			||||||
.kvcli/
 | 
					.kvcli/
 | 
				
			||||||
 | 
					scratch/
 | 
				
			||||||
 | 
					testnets/
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										7
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -13,10 +13,3 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Exclude build files
 | 
					# Exclude build files
 | 
				
			||||||
vendor
 | 
					vendor
 | 
				
			||||||
 | 
					 | 
				
			||||||
# Exclude text editor files
 | 
					 | 
				
			||||||
*.sublime-project
 | 
					 | 
				
			||||||
*.sublime-workspace
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Exclude kubernetes secrets
 | 
					 | 
				
			||||||
deployment/secret*.yml
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -16,6 +16,7 @@ RUN go build ./cmd/kvd && go build ./cmd/kvcli
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Copy app binary over to small container.
 | 
					# Copy app binary over to small container.
 | 
				
			||||||
# Using alpine instad of scratch to aid in debugging and avoid complicated compile
 | 
					# Using alpine instad of scratch to aid in debugging and avoid complicated compile
 | 
				
			||||||
 | 
					# note the home directory for alpine is /root/
 | 
				
			||||||
FROM alpine
 | 
					FROM alpine
 | 
				
			||||||
COPY --from=builder /go/src/github.com/kava-labs/kava/kvd /go/src/github.com/kava-labs/kava/kvcli /usr/bin/
 | 
					COPY --from=builder /go/src/github.com/kava-labs/kava/kvd /go/src/github.com/kava-labs/kava/kvcli /usr/bin/
 | 
				
			||||||
CMD ["kvd", "start"]
 | 
					CMD ["kvd", "start"]
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										409
									
								
								Gopkg.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										409
									
								
								Gopkg.lock
									
									
									
										generated
									
									
									
								
							@ -2,99 +2,150 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:09a7f74eb6bb3c0f14d8926610c87f569c5cff68e978d30e9a3540aeb626fdf0"
 | 
				
			||||||
 | 
					  name = "github.com/bartekn/go-bip39"
 | 
				
			||||||
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "a05967ea095d81c8fe4833776774cfaff8e5036c"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:d6afaeed1502aa28e80a4ed0981d570ad91b2579193404256ce672ed0a609e0d"
 | 
				
			||||||
 | 
					  name = "github.com/beorn7/perks"
 | 
				
			||||||
 | 
					  packages = ["quantile"]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "3a771d992973f24aa725d07868b467d1ddfceafb"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:1343a2963481a305ca4d051e84bc2abd16b601ee22ed324f8d605de1adb291b0"
 | 
				
			||||||
  name = "github.com/bgentry/speakeasy"
 | 
					  name = "github.com/bgentry/speakeasy"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "4aabc24848ce5fd31929f7d1e4ea74d3709c14cd"
 | 
					  revision = "4aabc24848ce5fd31929f7d1e4ea74d3709c14cd"
 | 
				
			||||||
  version = "v0.1.0"
 | 
					  version = "v0.1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  branch = "master"
 | 
				
			||||||
  name = "github.com/btcsuite/btcd"
 | 
					  digest = "1:70f6b224a59b2fa453debffa85c77f71063d8754b90c8c4fbad5794e2c382b0f"
 | 
				
			||||||
  packages = ["btcec"]
 | 
					  name = "github.com/brejski/hid"
 | 
				
			||||||
  revision = "86fed781132ac890ee03e906e4ecd5d6fa180c64"
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "06112dcfcc50a7e0e4fd06e17f9791e788fdaafc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:2c00f064ba355903866cbfbf3f7f4c0fe64af6638cc7d1b8bdcf3181bc67f1d8"
 | 
				
			||||||
 | 
					  name = "github.com/btcsuite/btcd"
 | 
				
			||||||
 | 
					  packages = ["btcec"]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "f899737d7f2764dc13e4d01ff00108ec58f766a9"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:386de157f7d19259a7f9c81f26ce011223ce0f090353c1152ffdf730d7d10ac2"
 | 
				
			||||||
  name = "github.com/btcsuite/btcutil"
 | 
					  name = "github.com/btcsuite/btcutil"
 | 
				
			||||||
  packages = ["bech32"]
 | 
					  packages = ["bech32"]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "d4cc87b860166d00d6b5b9e0d3b3d71d6088d4d4"
 | 
					  revision = "d4cc87b860166d00d6b5b9e0d3b3d71d6088d4d4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:bb617355120eed649354b41a20d1745b2feb994e4da1a97591259143ad65375a"
 | 
				
			||||||
  name = "github.com/cosmos/cosmos-sdk"
 | 
					  name = "github.com/cosmos/cosmos-sdk"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    "baseapp",
 | 
					    "baseapp",
 | 
				
			||||||
    "client",
 | 
					    "client",
 | 
				
			||||||
    "client/context",
 | 
					    "client/context",
 | 
				
			||||||
    "client/keys",
 | 
					    "client/keys",
 | 
				
			||||||
    "client/lcd",
 | 
					 | 
				
			||||||
    "client/rpc",
 | 
					    "client/rpc",
 | 
				
			||||||
    "client/tx",
 | 
					    "client/tx",
 | 
				
			||||||
    "cmd/gaia/app",
 | 
					    "crypto",
 | 
				
			||||||
 | 
					    "crypto/keys",
 | 
				
			||||||
 | 
					    "crypto/keys/bcrypt",
 | 
				
			||||||
 | 
					    "crypto/keys/bip39",
 | 
				
			||||||
 | 
					    "crypto/keys/hd",
 | 
				
			||||||
    "server",
 | 
					    "server",
 | 
				
			||||||
 | 
					    "server/config",
 | 
				
			||||||
    "store",
 | 
					    "store",
 | 
				
			||||||
    "tests",
 | 
					 | 
				
			||||||
    "types",
 | 
					    "types",
 | 
				
			||||||
    "version",
 | 
					    "version",
 | 
				
			||||||
    "wire",
 | 
					    "wire",
 | 
				
			||||||
    "x/auth",
 | 
					    "x/auth",
 | 
				
			||||||
    "x/auth/client/cli",
 | 
					    "x/auth/client/cli",
 | 
				
			||||||
    "x/auth/client/rest",
 | 
					 | 
				
			||||||
    "x/bank",
 | 
					    "x/bank",
 | 
				
			||||||
    "x/bank/client",
 | 
					    "x/bank/client",
 | 
				
			||||||
    "x/bank/client/cli",
 | 
					    "x/bank/client/cli",
 | 
				
			||||||
    "x/bank/client/rest",
 | 
					    "x/gov",
 | 
				
			||||||
    "x/ibc",
 | 
					    "x/ibc",
 | 
				
			||||||
    "x/ibc/client/cli",
 | 
					    "x/mock",
 | 
				
			||||||
    "x/ibc/client/rest",
 | 
					 | 
				
			||||||
    "x/slashing",
 | 
					    "x/slashing",
 | 
				
			||||||
 | 
					    "x/slashing/client/cli",
 | 
				
			||||||
    "x/stake",
 | 
					    "x/stake",
 | 
				
			||||||
    "x/stake/client/cli",
 | 
					    "x/stake/client/cli",
 | 
				
			||||||
    "x/stake/client/rest"
 | 
					    "x/stake/keeper",
 | 
				
			||||||
 | 
					    "x/stake/tags",
 | 
				
			||||||
 | 
					    "x/stake/types",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
  revision = "c6711810a86f09457481a8dadae899681a9d77ab"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  version = "v0.19.0"
 | 
					  revision = "23e3d5ac12145c02fcb4b4767d7dfccad782aee5"
 | 
				
			||||||
 | 
					  version = "v0.23.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:a2c1d0e43bd3baaa071d1b9ed72c27d78169b2b269f71c105ac4ba34b1be4a39"
 | 
				
			||||||
  name = "github.com/davecgh/go-spew"
 | 
					  name = "github.com/davecgh/go-spew"
 | 
				
			||||||
  packages = ["spew"]
 | 
					  packages = ["spew"]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "346938d642f2ec3594ed81d874461961cd0faa76"
 | 
					  revision = "346938d642f2ec3594ed81d874461961cd0faa76"
 | 
				
			||||||
  version = "v1.1.0"
 | 
					  version = "v1.1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  digest = "1:c7644c73a3d23741fdba8a99b1464e021a224b7e205be497271a8003a15ca41b"
 | 
				
			||||||
  name = "github.com/ebuchman/fail-test"
 | 
					  name = "github.com/ebuchman/fail-test"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "95f809107225be108efcf10a3509e4ea6ceef3c4"
 | 
					  revision = "95f809107225be108efcf10a3509e4ea6ceef3c4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:abeb38ade3f32a92943e5be54f55ed6d6e3b6602761d74b4aab4c9dd45c18abd"
 | 
				
			||||||
  name = "github.com/fsnotify/fsnotify"
 | 
					  name = "github.com/fsnotify/fsnotify"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9"
 | 
					  revision = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9"
 | 
				
			||||||
  version = "v1.4.7"
 | 
					  version = "v1.4.7"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:fdf5169073fb0ad6dc12a70c249145e30f4058647bea25f0abd48b6d9f228a11"
 | 
				
			||||||
  name = "github.com/go-kit/kit"
 | 
					  name = "github.com/go-kit/kit"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    "log",
 | 
					    "log",
 | 
				
			||||||
    "log/level",
 | 
					    "log/level",
 | 
				
			||||||
    "log/term"
 | 
					    "log/term",
 | 
				
			||||||
 | 
					    "metrics",
 | 
				
			||||||
 | 
					    "metrics/discard",
 | 
				
			||||||
 | 
					    "metrics/internal/lv",
 | 
				
			||||||
 | 
					    "metrics/prometheus",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "4dc7be5d2d12881735283bcab7352178e190fc71"
 | 
					  revision = "4dc7be5d2d12881735283bcab7352178e190fc71"
 | 
				
			||||||
  version = "v0.6.0"
 | 
					  version = "v0.6.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:31a18dae27a29aa074515e43a443abfd2ba6deb6d69309d8d7ce789c45f34659"
 | 
				
			||||||
  name = "github.com/go-logfmt/logfmt"
 | 
					  name = "github.com/go-logfmt/logfmt"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "390ab7935ee28ec6b286364bba9b4dd6410cb3d5"
 | 
					  revision = "390ab7935ee28ec6b286364bba9b4dd6410cb3d5"
 | 
				
			||||||
  version = "v0.3.0"
 | 
					  version = "v0.3.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:c4a2528ccbcabf90f9f3c464a5fc9e302d592861bbfd0b7135a7de8a943d0406"
 | 
				
			||||||
  name = "github.com/go-stack/stack"
 | 
					  name = "github.com/go-stack/stack"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "259ab82a6cad3992b4e21ff5cac294ccb06474bc"
 | 
					  revision = "259ab82a6cad3992b4e21ff5cac294ccb06474bc"
 | 
				
			||||||
  version = "v1.7.0"
 | 
					  version = "v1.7.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:35621fe20f140f05a0c4ef662c26c0ab4ee50bca78aa30fe87d33120bd28165e"
 | 
				
			||||||
  name = "github.com/gogo/protobuf"
 | 
					  name = "github.com/gogo/protobuf"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    "gogoproto",
 | 
					    "gogoproto",
 | 
				
			||||||
@ -102,49 +153,61 @@
 | 
				
			|||||||
    "proto",
 | 
					    "proto",
 | 
				
			||||||
    "protoc-gen-gogo/descriptor",
 | 
					    "protoc-gen-gogo/descriptor",
 | 
				
			||||||
    "sortkeys",
 | 
					    "sortkeys",
 | 
				
			||||||
    "types"
 | 
					    "types",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
  revision = "1adfc126b41513cc696b209667c8656ea7aac67c"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  version = "v1.0.0"
 | 
					  revision = "636bf0302bc95575d69441b25a2603156ffdddf1"
 | 
				
			||||||
 | 
					  version = "v1.1.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:17fe264ee908afc795734e8c4e63db2accabaf57326dbf21763a7d6b86096260"
 | 
				
			||||||
  name = "github.com/golang/protobuf"
 | 
					  name = "github.com/golang/protobuf"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    "proto",
 | 
					    "proto",
 | 
				
			||||||
    "ptypes",
 | 
					    "ptypes",
 | 
				
			||||||
    "ptypes/any",
 | 
					    "ptypes/any",
 | 
				
			||||||
    "ptypes/duration",
 | 
					    "ptypes/duration",
 | 
				
			||||||
    "ptypes/timestamp"
 | 
					    "ptypes/timestamp",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
  revision = "925541529c1fa6821df4e44ce2723319eb2be768"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  version = "v1.0.0"
 | 
					  revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265"
 | 
				
			||||||
 | 
					  version = "v1.1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:4a0c6bb4805508a6287675fac876be2ac1182539ca8a32468d8128882e9d5009"
 | 
				
			||||||
  name = "github.com/golang/snappy"
 | 
					  name = "github.com/golang/snappy"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "2e65f85255dbc3072edf28d6b5b8efc472979f5a"
 | 
					  revision = "2e65f85255dbc3072edf28d6b5b8efc472979f5a"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:c79fb010be38a59d657c48c6ba1d003a8aa651fa56b579d959d74573b7dff8e1"
 | 
				
			||||||
  name = "github.com/gorilla/context"
 | 
					  name = "github.com/gorilla/context"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "08b5f424b9271eedf6f9f0ce86cb9396ed337a42"
 | 
					  revision = "08b5f424b9271eedf6f9f0ce86cb9396ed337a42"
 | 
				
			||||||
  version = "v1.1.1"
 | 
					  version = "v1.1.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:e73f5b0152105f18bc131fba127d9949305c8693f8a762588a82a48f61756f5f"
 | 
				
			||||||
  name = "github.com/gorilla/mux"
 | 
					  name = "github.com/gorilla/mux"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "e3702bed27f0d39777b0b37b664b6280e8ef8fbf"
 | 
					  revision = "e3702bed27f0d39777b0b37b664b6280e8ef8fbf"
 | 
				
			||||||
  version = "v1.6.2"
 | 
					  version = "v1.6.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:43dd08a10854b2056e615d1b1d22ac94559d822e1f8b6fcc92c1a1057e85188e"
 | 
				
			||||||
  name = "github.com/gorilla/websocket"
 | 
					  name = "github.com/gorilla/websocket"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b"
 | 
					  revision = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b"
 | 
				
			||||||
  version = "v1.2.0"
 | 
					  version = "v1.2.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:a361611b8c8c75a1091f00027767f7779b29cb37c456a71b8f2604c88057ab40"
 | 
				
			||||||
  name = "github.com/hashicorp/hcl"
 | 
					  name = "github.com/hashicorp/hcl"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    ".",
 | 
					    ".",
 | 
				
			||||||
@ -156,126 +219,206 @@
 | 
				
			|||||||
    "hcl/token",
 | 
					    "hcl/token",
 | 
				
			||||||
    "json/parser",
 | 
					    "json/parser",
 | 
				
			||||||
    "json/scanner",
 | 
					    "json/scanner",
 | 
				
			||||||
    "json/token"
 | 
					    "json/token",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168"
 | 
					  revision = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  digest = "1:870d441fe217b8e689d7949fef6e43efbc787e50f200cb1e70dbca9204a1d6be"
 | 
				
			||||||
  name = "github.com/howeyc/crc16"
 | 
					 | 
				
			||||||
  packages = ["."]
 | 
					 | 
				
			||||||
  revision = "2b2a61e366a66d3efb279e46176e7291001e0354"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[projects]]
 | 
					 | 
				
			||||||
  name = "github.com/inconshreveable/mousetrap"
 | 
					  name = "github.com/inconshreveable/mousetrap"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75"
 | 
					  revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75"
 | 
				
			||||||
  version = "v1.0"
 | 
					  version = "v1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:39b27d1381a30421f9813967a5866fba35dc1d4df43a6eefe3b7a5444cb07214"
 | 
				
			||||||
  name = "github.com/jmhodges/levigo"
 | 
					  name = "github.com/jmhodges/levigo"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "c42d9e0ca023e2198120196f842701bb4c55d7b9"
 | 
					  revision = "c42d9e0ca023e2198120196f842701bb4c55d7b9"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:a64e323dc06b73892e5bb5d040ced475c4645d456038333883f58934abbf6f72"
 | 
				
			||||||
  name = "github.com/kr/logfmt"
 | 
					  name = "github.com/kr/logfmt"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "b84e30acd515aadc4b783ad4ff83aff3299bdfe0"
 | 
					  revision = "b84e30acd515aadc4b783ad4ff83aff3299bdfe0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:c568d7727aa262c32bdf8a3f7db83614f7af0ed661474b24588de635c20024c7"
 | 
				
			||||||
  name = "github.com/magiconair/properties"
 | 
					  name = "github.com/magiconair/properties"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "c2353362d570a7bfa228149c62842019201cfb71"
 | 
					  revision = "c2353362d570a7bfa228149c62842019201cfb71"
 | 
				
			||||||
  version = "v1.8.0"
 | 
					  version = "v1.8.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:d4d17353dbd05cb52a2a52b7fe1771883b682806f68db442b436294926bbfafb"
 | 
				
			||||||
  name = "github.com/mattn/go-isatty"
 | 
					  name = "github.com/mattn/go-isatty"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "0360b2af4f38e8d38c7fce2a9f4e702702d73a39"
 | 
					  revision = "0360b2af4f38e8d38c7fce2a9f4e702702d73a39"
 | 
				
			||||||
  version = "v0.0.3"
 | 
					  version = "v0.0.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  digest = "1:ff5ebae34cfbf047d505ee150de27e60570e8c394b3b8fdbb720ff6ac71985fc"
 | 
				
			||||||
  name = "github.com/mitchellh/mapstructure"
 | 
					  name = "github.com/matttproud/golang_protobuf_extensions"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["pbutil"]
 | 
				
			||||||
  revision = "bb74f1db0675b241733089d5a1faa5dd8b0ef57b"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c"
 | 
				
			||||||
 | 
					  version = "v1.0.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:5ab79470a1d0fb19b041a624415612f8236b3c06070161a910562f2b2d064355"
 | 
				
			||||||
 | 
					  name = "github.com/mitchellh/mapstructure"
 | 
				
			||||||
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "f15292f7a699fcc1a38a80977f80a046874ba8ac"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:95741de3af260a92cc5c7f3f3061e85273f5a81b5db20d4bd68da74bd521675e"
 | 
				
			||||||
  name = "github.com/pelletier/go-toml"
 | 
					  name = "github.com/pelletier/go-toml"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "c01d1270ff3e442a8a57cddc1c92dc1138598194"
 | 
					  revision = "c01d1270ff3e442a8a57cddc1c92dc1138598194"
 | 
				
			||||||
  version = "v1.2.0"
 | 
					  version = "v1.2.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:40e195917a951a8bf867cd05de2a46aaf1806c50cf92eebf4c16f78cd196f747"
 | 
				
			||||||
  name = "github.com/pkg/errors"
 | 
					  name = "github.com/pkg/errors"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
 | 
					  revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
 | 
				
			||||||
  version = "v0.8.0"
 | 
					  version = "v0.8.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:0028cb19b2e4c3112225cd871870f2d9cf49b9b4276531f03438a88e94be86fe"
 | 
				
			||||||
  name = "github.com/pmezard/go-difflib"
 | 
					  name = "github.com/pmezard/go-difflib"
 | 
				
			||||||
  packages = ["difflib"]
 | 
					  packages = ["difflib"]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "792786c7400a136282c1664665ae0a8db921c6c2"
 | 
					  revision = "792786c7400a136282c1664665ae0a8db921c6c2"
 | 
				
			||||||
  version = "v1.0.0"
 | 
					  version = "v1.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:c1a04665f9613e082e1209cf288bf64f4068dcd6c87a64bf1c4ff006ad422ba0"
 | 
				
			||||||
 | 
					  name = "github.com/prometheus/client_golang"
 | 
				
			||||||
 | 
					  packages = [
 | 
				
			||||||
 | 
					    "prometheus",
 | 
				
			||||||
 | 
					    "prometheus/promhttp",
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "ae27198cdd90bf12cd134ad79d1366a6cf49f632"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:2d5cd61daa5565187e1d96bae64dbbc6080dacf741448e9629c64fd93203b0d4"
 | 
				
			||||||
 | 
					  name = "github.com/prometheus/client_model"
 | 
				
			||||||
 | 
					  packages = ["go"]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:63b68062b8968092eb86bedc4e68894bd096ea6b24920faca8b9dcf451f54bb5"
 | 
				
			||||||
 | 
					  name = "github.com/prometheus/common"
 | 
				
			||||||
 | 
					  packages = [
 | 
				
			||||||
 | 
					    "expfmt",
 | 
				
			||||||
 | 
					    "internal/bitbucket.org/ww/goautoneg",
 | 
				
			||||||
 | 
					    "model",
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "c7de2306084e37d54b8be01f3541a8464345e9a5"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:8c49953a1414305f2ff5465147ee576dd705487c35b15918fcd4efdc0cb7a290"
 | 
				
			||||||
 | 
					  name = "github.com/prometheus/procfs"
 | 
				
			||||||
 | 
					  packages = [
 | 
				
			||||||
 | 
					    ".",
 | 
				
			||||||
 | 
					    "internal/util",
 | 
				
			||||||
 | 
					    "nfs",
 | 
				
			||||||
 | 
					    "xfs",
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "05ee40e3a273f7245e8777337fc7b46e533a9a92"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:c4556a44e350b50a490544d9b06e9fba9c286c21d6c0e47f54f3a9214597298c"
 | 
				
			||||||
  name = "github.com/rcrowley/go-metrics"
 | 
					  name = "github.com/rcrowley/go-metrics"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "e2704e165165ec55d062f5919b4b29494e9fa790"
 | 
					  revision = "e2704e165165ec55d062f5919b4b29494e9fa790"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:bd1ae00087d17c5a748660b8e89e1043e1e5479d0fea743352cda2f8dd8c4f84"
 | 
				
			||||||
  name = "github.com/spf13/afero"
 | 
					  name = "github.com/spf13/afero"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    ".",
 | 
					    ".",
 | 
				
			||||||
    "mem"
 | 
					    "mem",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "787d034dfe70e44075ccc060d346146ef53270ad"
 | 
					  revision = "787d034dfe70e44075ccc060d346146ef53270ad"
 | 
				
			||||||
  version = "v1.1.1"
 | 
					  version = "v1.1.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:516e71bed754268937f57d4ecb190e01958452336fa73dbac880894164e91c1f"
 | 
				
			||||||
  name = "github.com/spf13/cast"
 | 
					  name = "github.com/spf13/cast"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "8965335b8c7107321228e3e3702cab9832751bac"
 | 
					  revision = "8965335b8c7107321228e3e3702cab9832751bac"
 | 
				
			||||||
  version = "v1.2.0"
 | 
					  version = "v1.2.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:645cabccbb4fa8aab25a956cbcbdf6a6845ca736b2c64e197ca7cbb9d210b939"
 | 
				
			||||||
  name = "github.com/spf13/cobra"
 | 
					  name = "github.com/spf13/cobra"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "ef82de70bb3f60c65fb8eebacbb2d122ef517385"
 | 
					  revision = "ef82de70bb3f60c65fb8eebacbb2d122ef517385"
 | 
				
			||||||
  version = "v0.0.3"
 | 
					  version = "v0.0.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:8a020f916b23ff574845789daee6818daf8d25a4852419aae3f0b12378ba432a"
 | 
				
			||||||
  name = "github.com/spf13/jwalterweatherman"
 | 
					  name = "github.com/spf13/jwalterweatherman"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
  revision = "7c0cea34c8ece3fbeb2b27ab9b59511d360fb394"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "14d3d4c518341bea657dd8a226f5121c0ff8c9f2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:dab83a1bbc7ad3d7a6ba1a1cc1760f25ac38cdf7d96a5cdd55cd915a4f5ceaf9"
 | 
				
			||||||
  name = "github.com/spf13/pflag"
 | 
					  name = "github.com/spf13/pflag"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
  revision = "583c0c0531f06d5278b7d917446061adc344b5cd"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  version = "v1.0.1"
 | 
					  revision = "9a97c102cda95a86cec2345a6f09f55a939babf5"
 | 
				
			||||||
 | 
					  version = "v1.0.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:59e7dceb53b4a1e57eb1eb0bf9951ff0c25912df7660004a789b62b4e8cdca3b"
 | 
				
			||||||
  name = "github.com/spf13/viper"
 | 
					  name = "github.com/spf13/viper"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "b5e8006cbee93ec955a89ab31e0e3ce3204f3736"
 | 
					  revision = "b5e8006cbee93ec955a89ab31e0e3ce3204f3736"
 | 
				
			||||||
  version = "v1.0.2"
 | 
					  version = "v1.0.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:7e8d267900c7fa7f35129a2a37596e38ed0f11ca746d6d9ba727980ee138f9f6"
 | 
				
			||||||
  name = "github.com/stretchr/testify"
 | 
					  name = "github.com/stretchr/testify"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    "assert",
 | 
					    "assert",
 | 
				
			||||||
    "require"
 | 
					    "require",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
  revision = "f35b8ab0b5a2cef36673838d662e249dd9c94686"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  version = "v1.2.2"
 | 
					  revision = "12b6f73e6084dad08a7c6e575284b177ecafbc71"
 | 
				
			||||||
 | 
					  version = "v1.2.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:b3cfb8d82b1601a846417c3f31c03a7961862cb2c98dcf0959c473843e6d9a2b"
 | 
				
			||||||
  name = "github.com/syndtr/goleveldb"
 | 
					  name = "github.com/syndtr/goleveldb"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    "leveldb",
 | 
					    "leveldb",
 | 
				
			||||||
@ -289,69 +432,91 @@
 | 
				
			|||||||
    "leveldb/opt",
 | 
					    "leveldb/opt",
 | 
				
			||||||
    "leveldb/storage",
 | 
					    "leveldb/storage",
 | 
				
			||||||
    "leveldb/table",
 | 
					    "leveldb/table",
 | 
				
			||||||
    "leveldb/util"
 | 
					    "leveldb/util",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
  revision = "e2150783cd35f5b607daca48afd8c57ec54cc995"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "c4c61651e9e37fa117f53c5a906d3b63090d8445"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:8b7ca9e3745cb049a65364d3adbbab63e98d3c43c83cb101cb450c8dac3c3492"
 | 
				
			||||||
  name = "github.com/tendermint/abci"
 | 
					  name = "github.com/tendermint/abci"
 | 
				
			||||||
  packages = [
 | 
					  packages = ["types"]
 | 
				
			||||||
    "client",
 | 
					  pruneopts = "UT"
 | 
				
			||||||
    "example/code",
 | 
					  revision = "68592f4d8ee34e97db94b7a7976b1309efdb7eb9"
 | 
				
			||||||
    "example/kvstore",
 | 
					  version = "v0.10.0"
 | 
				
			||||||
    "server",
 | 
					 | 
				
			||||||
    "types"
 | 
					 | 
				
			||||||
  ]
 | 
					 | 
				
			||||||
  revision = "ebee2fe114020aa49c70bbbae50b7079fc7e7b90"
 | 
					 | 
				
			||||||
  version = "v0.11.0"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:087aaa7920e5d0bf79586feb57ce01c35c830396ab4392798112e8aae8c47722"
 | 
				
			||||||
  name = "github.com/tendermint/ed25519"
 | 
					  name = "github.com/tendermint/ed25519"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    ".",
 | 
					    ".",
 | 
				
			||||||
    "edwards25519",
 | 
					    "edwards25519",
 | 
				
			||||||
    "extra25519"
 | 
					    "extra25519",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "d8387025d2b9d158cf4efb07e7ebf814bcce2057"
 | 
					  revision = "d8387025d2b9d158cf4efb07e7ebf814bcce2057"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:e9113641c839c21d8eaeb2c907c7276af1eddeed988df8322168c56b7e06e0e1"
 | 
				
			||||||
  name = "github.com/tendermint/go-amino"
 | 
					  name = "github.com/tendermint/go-amino"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
  revision = "ed62928576cfcaf887209dc96142cd79cdfff389"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  version = "0.9.9"
 | 
					  revision = "2106ca61d91029c931fd54968c2bb02dc96b1412"
 | 
				
			||||||
 | 
					  version = "0.10.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:82f70bfe58f1a55601d469b928aec5b10b1d85710e6adde40dfea8d9adba939d"
 | 
				
			||||||
  name = "github.com/tendermint/go-crypto"
 | 
					  name = "github.com/tendermint/go-crypto"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    ".",
 | 
					    ".",
 | 
				
			||||||
    "keys",
 | 
					    "tmhash",
 | 
				
			||||||
    "keys/bcrypt",
 | 
					 | 
				
			||||||
    "keys/words",
 | 
					 | 
				
			||||||
    "keys/words/wordlist"
 | 
					 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
  revision = "915416979bf70efa4bcbf1c6cd5d64c5fff9fc19"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  version = "v0.6.2"
 | 
					  revision = "6a6b591a3d7592a04b46af95451cb5be3b114f76"
 | 
				
			||||||
 | 
					  version = "v0.9.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:d4a15d404afbf591e8be16fcda7f5ac87948d5c7531f9d909fd84cc730ab16e2"
 | 
				
			||||||
  name = "github.com/tendermint/iavl"
 | 
					  name = "github.com/tendermint/iavl"
 | 
				
			||||||
  packages = [
 | 
					  packages = ["."]
 | 
				
			||||||
    ".",
 | 
					  pruneopts = "UT"
 | 
				
			||||||
    "sha256truncated"
 | 
					  revision = "35f66e53d9b01e83b30de68b931f54b2477a94c9"
 | 
				
			||||||
  ]
 | 
					  version = "v0.9.2"
 | 
				
			||||||
  revision = "c9206995e8f948e99927f5084a88a7e94ca256da"
 | 
					 | 
				
			||||||
  version = "v0.8.0-rc0"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:eb0f8bee357e6c28c9ad5fa074545b5085d0dcf580ba0e7024ab8c3285a5c815"
 | 
				
			||||||
  name = "github.com/tendermint/tendermint"
 | 
					  name = "github.com/tendermint/tendermint"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
 | 
					    "abci/client",
 | 
				
			||||||
 | 
					    "abci/example/code",
 | 
				
			||||||
 | 
					    "abci/example/kvstore",
 | 
				
			||||||
 | 
					    "abci/server",
 | 
				
			||||||
 | 
					    "abci/types",
 | 
				
			||||||
    "blockchain",
 | 
					    "blockchain",
 | 
				
			||||||
    "cmd/tendermint/commands",
 | 
					    "cmd/tendermint/commands",
 | 
				
			||||||
    "config",
 | 
					    "config",
 | 
				
			||||||
    "consensus",
 | 
					    "consensus",
 | 
				
			||||||
    "consensus/types",
 | 
					    "consensus/types",
 | 
				
			||||||
 | 
					    "crypto",
 | 
				
			||||||
 | 
					    "crypto/armor",
 | 
				
			||||||
 | 
					    "crypto/ed25519",
 | 
				
			||||||
 | 
					    "crypto/encoding/amino",
 | 
				
			||||||
 | 
					    "crypto/merkle",
 | 
				
			||||||
 | 
					    "crypto/secp256k1",
 | 
				
			||||||
 | 
					    "crypto/tmhash",
 | 
				
			||||||
 | 
					    "crypto/xsalsa20symmetric",
 | 
				
			||||||
    "evidence",
 | 
					    "evidence",
 | 
				
			||||||
 | 
					    "libs/autofile",
 | 
				
			||||||
 | 
					    "libs/bech32",
 | 
				
			||||||
 | 
					    "libs/cli",
 | 
				
			||||||
 | 
					    "libs/cli/flags",
 | 
				
			||||||
 | 
					    "libs/clist",
 | 
				
			||||||
 | 
					    "libs/common",
 | 
				
			||||||
 | 
					    "libs/db",
 | 
				
			||||||
    "libs/events",
 | 
					    "libs/events",
 | 
				
			||||||
 | 
					    "libs/flowrate",
 | 
				
			||||||
 | 
					    "libs/log",
 | 
				
			||||||
    "libs/pubsub",
 | 
					    "libs/pubsub",
 | 
				
			||||||
    "libs/pubsub/query",
 | 
					    "libs/pubsub/query",
 | 
				
			||||||
    "lite",
 | 
					    "lite",
 | 
				
			||||||
@ -380,30 +545,34 @@
 | 
				
			|||||||
    "state/txindex/kv",
 | 
					    "state/txindex/kv",
 | 
				
			||||||
    "state/txindex/null",
 | 
					    "state/txindex/null",
 | 
				
			||||||
    "types",
 | 
					    "types",
 | 
				
			||||||
    "version"
 | 
					    "version",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
  revision = "27bd1deabe4ba6a2d9b463b8f3e3f1e31b993e61"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  version = "v0.20.0"
 | 
					  revision = "d542d2c3945116697f60451e6a407082c41c3cc9"
 | 
				
			||||||
 | 
					  version = "v0.22.8"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:68921ddf468c0db04496dc49cc67948f1727a74520b1f1f06100bce5c65fa08b"
 | 
				
			||||||
  name = "github.com/tendermint/tmlibs"
 | 
					  name = "github.com/tendermint/tmlibs"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    "autofile",
 | 
					 | 
				
			||||||
    "bech32",
 | 
					 | 
				
			||||||
    "cli",
 | 
					 | 
				
			||||||
    "cli/flags",
 | 
					 | 
				
			||||||
    "clist",
 | 
					 | 
				
			||||||
    "common",
 | 
					    "common",
 | 
				
			||||||
    "db",
 | 
					    "db",
 | 
				
			||||||
    "flowrate",
 | 
					 | 
				
			||||||
    "log",
 | 
					    "log",
 | 
				
			||||||
    "merkle",
 | 
					 | 
				
			||||||
    "merkle/tmhash"
 | 
					 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
  revision = "0c98d10b4ffbd87978d79c160e835b3d3df241ec"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "692f1d86a6e2c0efa698fd1e4541b68c74ffaf38"
 | 
				
			||||||
 | 
					  version = "v0.8.4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:5bd938386bd1f61a581bf8cd6ff2b7b2f79c542929176db4ceb44965440dae07"
 | 
				
			||||||
 | 
					  name = "github.com/zondax/ledger-goclient"
 | 
				
			||||||
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "39ba4728c137c75718a21f9b4b3280fa31b9139b"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:65a21a9e051d54eb6a3f70c659a765f706a998d9287c302269f4ed8054b2a852"
 | 
				
			||||||
  name = "golang.org/x/crypto"
 | 
					  name = "golang.org/x/crypto"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    "blowfish",
 | 
					    "blowfish",
 | 
				
			||||||
@ -413,14 +582,16 @@
 | 
				
			|||||||
    "nacl/secretbox",
 | 
					    "nacl/secretbox",
 | 
				
			||||||
    "openpgp/armor",
 | 
					    "openpgp/armor",
 | 
				
			||||||
    "openpgp/errors",
 | 
					    "openpgp/errors",
 | 
				
			||||||
 | 
					    "pbkdf2",
 | 
				
			||||||
    "poly1305",
 | 
					    "poly1305",
 | 
				
			||||||
    "ripemd160",
 | 
					    "ripemd160",
 | 
				
			||||||
    "salsa20/salsa"
 | 
					    "salsa20/salsa",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
  revision = "a8fb68e7206f8c78be19b432c58eb52a6aa34462"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "de0752318171da717af4ce24d0a2e8626afaeb11"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  digest = "1:d36f55a999540d29b6ea3c2ea29d71c76b1d9853fdcd3e5c5cb4836f2ba118f1"
 | 
				
			||||||
  name = "golang.org/x/net"
 | 
					  name = "golang.org/x/net"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    "context",
 | 
					    "context",
 | 
				
			||||||
@ -429,17 +600,22 @@
 | 
				
			|||||||
    "http2/hpack",
 | 
					    "http2/hpack",
 | 
				
			||||||
    "idna",
 | 
					    "idna",
 | 
				
			||||||
    "internal/timeseries",
 | 
					    "internal/timeseries",
 | 
				
			||||||
    "trace"
 | 
					    "netutil",
 | 
				
			||||||
 | 
					    "trace",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
  revision = "db08ff08e8622530d9ed3a0e8ac279f6d4c02196"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "292b43bbf7cb8d35ddf40f8d5100ef3837cced3f"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
  branch = "master"
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:0316a8ad208917f1d141b077e278980fd5e4594f3a85f835dacbf24d85798252"
 | 
				
			||||||
  name = "golang.org/x/sys"
 | 
					  name = "golang.org/x/sys"
 | 
				
			||||||
  packages = ["unix"]
 | 
					  packages = ["unix"]
 | 
				
			||||||
  revision = "6c888cc515d3ed83fc103cf1d84468aad274b0a7"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "4e1fef5609515ec7a2cee7b5de30ba6d9b438cbf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18"
 | 
				
			||||||
  name = "golang.org/x/text"
 | 
					  name = "golang.org/x/text"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    "collate",
 | 
					    "collate",
 | 
				
			||||||
@ -455,49 +631,102 @@
 | 
				
			|||||||
    "unicode/bidi",
 | 
					    "unicode/bidi",
 | 
				
			||||||
    "unicode/cldr",
 | 
					    "unicode/cldr",
 | 
				
			||||||
    "unicode/norm",
 | 
					    "unicode/norm",
 | 
				
			||||||
    "unicode/rangetable"
 | 
					    "unicode/rangetable",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"
 | 
					  revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"
 | 
				
			||||||
  version = "v0.3.0"
 | 
					  version = "v0.3.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					  digest = "1:077c1c599507b3b3e9156d17d36e1e61928ee9b53a5b420f10f28ebd4a0b275c"
 | 
				
			||||||
  name = "google.golang.org/genproto"
 | 
					  name = "google.golang.org/genproto"
 | 
				
			||||||
  packages = ["googleapis/rpc/status"]
 | 
					  packages = ["googleapis/rpc/status"]
 | 
				
			||||||
  revision = "7fd901a49ba6a7f87732eb344f6e3c5b19d1b200"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
 | 
					  revision = "383e8b2c3b9e36c4076b235b32537292176bae20"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:2dab32a43451e320e49608ff4542fdfc653c95dcc35d0065ec9c6c3dd540ed74"
 | 
				
			||||||
  name = "google.golang.org/grpc"
 | 
					  name = "google.golang.org/grpc"
 | 
				
			||||||
  packages = [
 | 
					  packages = [
 | 
				
			||||||
    ".",
 | 
					    ".",
 | 
				
			||||||
    "balancer",
 | 
					    "balancer",
 | 
				
			||||||
 | 
					    "balancer/base",
 | 
				
			||||||
 | 
					    "balancer/roundrobin",
 | 
				
			||||||
    "codes",
 | 
					    "codes",
 | 
				
			||||||
    "connectivity",
 | 
					    "connectivity",
 | 
				
			||||||
    "credentials",
 | 
					    "credentials",
 | 
				
			||||||
    "grpclb/grpc_lb_v1/messages",
 | 
					    "encoding",
 | 
				
			||||||
 | 
					    "encoding/proto",
 | 
				
			||||||
    "grpclog",
 | 
					    "grpclog",
 | 
				
			||||||
    "internal",
 | 
					    "internal",
 | 
				
			||||||
 | 
					    "internal/backoff",
 | 
				
			||||||
 | 
					    "internal/channelz",
 | 
				
			||||||
 | 
					    "internal/grpcrand",
 | 
				
			||||||
    "keepalive",
 | 
					    "keepalive",
 | 
				
			||||||
    "metadata",
 | 
					    "metadata",
 | 
				
			||||||
    "naming",
 | 
					    "naming",
 | 
				
			||||||
    "peer",
 | 
					    "peer",
 | 
				
			||||||
    "resolver",
 | 
					    "resolver",
 | 
				
			||||||
 | 
					    "resolver/dns",
 | 
				
			||||||
 | 
					    "resolver/passthrough",
 | 
				
			||||||
    "stats",
 | 
					    "stats",
 | 
				
			||||||
    "status",
 | 
					    "status",
 | 
				
			||||||
    "tap",
 | 
					    "tap",
 | 
				
			||||||
    "transport"
 | 
					    "transport",
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
  revision = "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  version = "v1.7.5"
 | 
					  revision = "168a6198bcb0ef175f7dacec0b8691fc141dc9b8"
 | 
				
			||||||
 | 
					  version = "v1.13.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[projects]]
 | 
					[[projects]]
 | 
				
			||||||
 | 
					  digest = "1:342378ac4dcb378a5448dd723f0784ae519383532f5e70ade24132c4c8693202"
 | 
				
			||||||
  name = "gopkg.in/yaml.v2"
 | 
					  name = "gopkg.in/yaml.v2"
 | 
				
			||||||
  packages = ["."]
 | 
					  packages = ["."]
 | 
				
			||||||
 | 
					  pruneopts = "UT"
 | 
				
			||||||
  revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183"
 | 
					  revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183"
 | 
				
			||||||
  version = "v2.2.1"
 | 
					  version = "v2.2.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[solve-meta]
 | 
					[solve-meta]
 | 
				
			||||||
  analyzer-name = "dep"
 | 
					  analyzer-name = "dep"
 | 
				
			||||||
  analyzer-version = 1
 | 
					  analyzer-version = 1
 | 
				
			||||||
  inputs-digest = "ffb18db87921d091119ab0ab7fa8daaeb76c646d5dbd6796724ff1e8dc41e044"
 | 
					  input-imports = [
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/baseapp",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/client",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/client/keys",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/client/rpc",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/client/tx",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/server",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/server/config",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/types",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/version",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/wire",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/x/auth",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/x/auth/client/cli",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/x/bank",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/x/bank/client/cli",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/x/gov",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/x/ibc",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/x/slashing",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/x/slashing/client/cli",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/x/stake",
 | 
				
			||||||
 | 
					    "github.com/cosmos/cosmos-sdk/x/stake/client/cli",
 | 
				
			||||||
 | 
					    "github.com/spf13/cobra",
 | 
				
			||||||
 | 
					    "github.com/spf13/pflag",
 | 
				
			||||||
 | 
					    "github.com/spf13/viper",
 | 
				
			||||||
 | 
					    "github.com/stretchr/testify/assert",
 | 
				
			||||||
 | 
					    "github.com/stretchr/testify/require",
 | 
				
			||||||
 | 
					    "github.com/tendermint/abci/types",
 | 
				
			||||||
 | 
					    "github.com/tendermint/go-crypto",
 | 
				
			||||||
 | 
					    "github.com/tendermint/tendermint/abci/types",
 | 
				
			||||||
 | 
					    "github.com/tendermint/tendermint/crypto",
 | 
				
			||||||
 | 
					    "github.com/tendermint/tendermint/libs/cli",
 | 
				
			||||||
 | 
					    "github.com/tendermint/tendermint/libs/common",
 | 
				
			||||||
 | 
					    "github.com/tendermint/tendermint/libs/db",
 | 
				
			||||||
 | 
					    "github.com/tendermint/tendermint/libs/log",
 | 
				
			||||||
 | 
					    "github.com/tendermint/tendermint/types",
 | 
				
			||||||
 | 
					    "github.com/tendermint/tmlibs/db",
 | 
				
			||||||
 | 
					    "github.com/tendermint/tmlibs/log",
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
  solver-name = "gps-cdcl"
 | 
					  solver-name = "gps-cdcl"
 | 
				
			||||||
  solver-version = 1
 | 
					  solver-version = 1
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										90
									
								
								Gopkg.toml
									
									
									
									
									
								
							
							
						
						
									
										90
									
								
								Gopkg.toml
									
									
									
									
									
								
							@ -1,59 +1,57 @@
 | 
				
			|||||||
# [[constraint]]
 | 
					 | 
				
			||||||
#   name = "github.com/bgentry/speakeasy"
 | 
					 | 
				
			||||||
#   version = "~0.1.0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# [[constraint]]
 | 
					 | 
				
			||||||
#   name = "github.com/golang/protobuf"
 | 
					 | 
				
			||||||
#   version = "~1.0.0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# [[constraint]]
 | 
					 | 
				
			||||||
#   name = "github.com/mattn/go-isatty"
 | 
					 | 
				
			||||||
#   version = "~0.0.3"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# [[constraint]]
 | 
					 | 
				
			||||||
#   name = "github.com/pkg/errors"
 | 
					 | 
				
			||||||
#   version = "~0.8.0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[constraint]]
 | 
					[[constraint]]
 | 
				
			||||||
 | 
					  name = "github.com/cosmos/cosmos-sdk"
 | 
				
			||||||
 | 
					  version="=0.23.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copied from cosmos-sdk, constraints switched to overrides
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[override]]
 | 
				
			||||||
 | 
					  name = "github.com/bgentry/speakeasy"
 | 
				
			||||||
 | 
					  version = "~0.1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[override]]
 | 
				
			||||||
 | 
					  name = "github.com/golang/protobuf"
 | 
				
			||||||
 | 
					  version = "=1.1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[override]]
 | 
				
			||||||
 | 
					  name = "github.com/mattn/go-isatty"
 | 
				
			||||||
 | 
					  version = "~0.0.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[override]]
 | 
				
			||||||
  name = "github.com/spf13/cobra"
 | 
					  name = "github.com/spf13/cobra"
 | 
				
			||||||
  version = "~0.0.1"
 | 
					  version = "~0.0.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# [[constraint]]
 | 
					[[override]]
 | 
				
			||||||
#   name = "github.com/spf13/viper"
 | 
					  name = "github.com/spf13/viper"
 | 
				
			||||||
#   version = "~1.0.0"
 | 
					  version = "~1.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[constraint]]
 | 
					[[override]]
 | 
				
			||||||
 | 
					  name = "github.com/pkg/errors"
 | 
				
			||||||
 | 
					  version = "=0.8.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[override]]
 | 
				
			||||||
  name = "github.com/stretchr/testify"
 | 
					  name = "github.com/stretchr/testify"
 | 
				
			||||||
  version = "~1.2.1"
 | 
					  version = "=1.2.1"
 | 
				
			||||||
 | 
					 | 
				
			||||||
[[constraint]]
 | 
					 | 
				
			||||||
  name = "github.com/tendermint/abci"
 | 
					 | 
				
			||||||
  version = "=0.11.0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[constraint]]
 | 
					 | 
				
			||||||
  name = "github.com/tendermint/go-crypto"
 | 
					 | 
				
			||||||
  version = "~0.6.2"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# [[constraint]]
 | 
					 | 
				
			||||||
#   name = "github.com/tendermint/go-amino"
 | 
					 | 
				
			||||||
#   version = "=0.9.9"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# [[constraint]]
 | 
					 | 
				
			||||||
#   name = "github.com/tendermint/iavl"
 | 
					 | 
				
			||||||
#   version = "0.8.0-rc0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# [[constraint]]
 | 
					 | 
				
			||||||
#   name = "github.com/tendermint/tendermint"
 | 
					 | 
				
			||||||
#   version = "=0.20.0"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[override]]
 | 
					[[override]]
 | 
				
			||||||
  name = "github.com/tendermint/tmlibs"
 | 
					  name = "github.com/tendermint/go-amino"
 | 
				
			||||||
  revision = "0c98d10b4ffbd87978d79c160e835b3d3df241ec"
 | 
					  version = "=0.10.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# this got updated and broke, so locked to an old working commit ...
 | 
					 | 
				
			||||||
[[override]]
 | 
					[[override]]
 | 
				
			||||||
  name = "google.golang.org/genproto"
 | 
					  name = "github.com/tendermint/iavl"
 | 
				
			||||||
  revision = "7fd901a49ba6a7f87732eb344f6e3c5b19d1b200"
 | 
					  version = "=v0.9.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[override]]
 | 
				
			||||||
 | 
					  name = "github.com/tendermint/tendermint"
 | 
				
			||||||
 | 
					  version = "=v0.22.8"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[override]]
 | 
				
			||||||
 | 
					  name = "github.com/bartekn/go-bip39"
 | 
				
			||||||
 | 
					  branch = "master"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[override]]
 | 
				
			||||||
 | 
					  name = "github.com/zondax/ledger-goclient"
 | 
				
			||||||
 | 
					  revision = "39ba4728c137c75718a21f9b4b3280fa31b9139b"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[prune]
 | 
					[prune]
 | 
				
			||||||
  go-tests = true
 | 
					  go-tests = true
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										95
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										95
									
								
								README.md
									
									
									
									
									
								
							@ -1,6 +1,97 @@
 | 
				
			|||||||
# Kava Blockchain
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Installation
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A decentralized fast-finality blockchain for interoperable payment channel networks.
 | 
				
			||||||
 | 
					Building on the work of Tendermint and Interledger.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Project status: We're currently in a very early public testnet. With future features being implemented.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Try it out - send txs using our public node, or run a full node to sync to the testnet, or even run a validator.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Source
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Requirements: go installed and set up.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mkdir -p $GOPATH/src/github.com/kava-labs
 | 
				
			||||||
 | 
						cd $GOPATH/src/github.com/kava-labs
 | 
				
			||||||
 | 
						git clone https://github.com/kava-labs/kava
 | 
				
			||||||
 | 
						cd kava
 | 
				
			||||||
	go install ./cmd/kvd
 | 
						go install ./cmd/kvd
 | 
				
			||||||
	go install ./cmd/kvcli
 | 
						go install ./cmd/kvcli
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- Make sure GOBIN environment variable is set if you want to access programs anywhere -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Docker
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TODO
 | 
				
			||||||
 | 
					<!-- Requirements: docker installed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					No installation necessary, just prepend commands with `docker run kava/kava`.  TODO name necessary to avoid new contianer being created each time?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This will use our docker container `kava/kava` and store all blockchain data and keys within the container. -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- To store this data outisde the conatiner, attach volumes to the container:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						docker run --rm -v $HOME/.kvd:/root/.kvd -v $HOME/.kvcli:/root/.kvcli kava/kava <further commands>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Now blockchain data will be stored in `$HOME/.kvd` and keys in `$HOME/.kvcli`. Also the `--rm` flag removes the contianer after each run.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 -->
 | 
				
			||||||
 | 
					<!-- ## Send Transactions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can send transactions on the testnet using our node without yncing a local node.
 | 
				
			||||||
 | 
					Requirements
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TODO users need to set up keys first?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						kvcli <args> --node validator.connector.kava.io:26657 --chain-id kava-test-<current version>
 | 
				
			||||||
 | 
					 -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Run a Full Node
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						kvd init --name <your-name> --chain-id kava-test-0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This will generate config and keys in `$HOME/.kvd` and `$HOME/.kvcli`.
 | 
				
			||||||
 | 
					The default password is 'password'.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copy the testnet genesis file (from https://raw.githubusercontent.com/Kava-Labs/kava/master/testnets/kava-test-1/genesis.json) into `$HOME/.kvd/config/`, replacing the existing one.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Add the kava node address (`0dfd43e440e34fc193ddee4ae99547184f3cb5d1@validator.connector.kava.io:26656`) to `seeds` in `$HOME/.kvd/config/config.toml`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Start your full node
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						kvd start
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Run a Validator
 | 
				
			||||||
 | 
					Join the [validator chat](https://riot.im/app/#/room/#kava-validators:matrix.org). Follow setup for a full node above.
 | 
				
			||||||
 | 
					Get you address with `kvcli keys list`. Should look like `cosmosaccaddr10jpp289accvkhsvrpz4tlj9zhqdaey2tl9m4rg`.
 | 
				
			||||||
 | 
					Ask @rhuairahrighairidh in the chat to give you some coins.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Get your validator pubkey with `kvd tendermint show_validator`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						kvcli stake create-validator \
 | 
				
			||||||
 | 
					            --amount 1000KVA \
 | 
				
			||||||
 | 
					            --pubkey <you validator pubkey from above> \
 | 
				
			||||||
 | 
					            --address-validator <your address from above> \
 | 
				
			||||||
 | 
					            --moniker "<your name>" \
 | 
				
			||||||
 | 
					            --chain-id kava-test-0 \
 | 
				
			||||||
 | 
					            --from <your name>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Now you should be participating in consensus and validating blocks!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Running a validator requires that you keep validating blocks. If you stop then your stake will be slashed.
 | 
				
			||||||
 | 
					In order to stop validating, first remove yourself as validator, then you can stop your node.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						kvcli stake unbond begin \
 | 
				
			||||||
 | 
							--address-delegator <your address> \
 | 
				
			||||||
 | 
							--address-validator <your address> \
 | 
				
			||||||
 | 
							--chain-id kava-test-0 \
 | 
				
			||||||
 | 
							--shares-percent 1 \
 | 
				
			||||||
 | 
							--from <your name>
 | 
				
			||||||
@ -1,11 +1,9 @@
 | 
				
			|||||||
package main
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"os"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"github.com/spf13/cobra"
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/tendermint/tmlibs/cli"
 | 
						"github.com/tendermint/tendermint/libs/cli"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/client"
 | 
						"github.com/cosmos/cosmos-sdk/client"
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/client/keys"
 | 
						"github.com/cosmos/cosmos-sdk/client/keys"
 | 
				
			||||||
@ -15,15 +13,15 @@ import (
 | 
				
			|||||||
	"github.com/cosmos/cosmos-sdk/version"
 | 
						"github.com/cosmos/cosmos-sdk/version"
 | 
				
			||||||
	authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli"
 | 
						authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli"
 | 
				
			||||||
	bankcmd "github.com/cosmos/cosmos-sdk/x/bank/client/cli"
 | 
						bankcmd "github.com/cosmos/cosmos-sdk/x/bank/client/cli"
 | 
				
			||||||
 | 
						//govcmd "github.com/cosmos/cosmos-sdk/x/gov/client/cli"
 | 
				
			||||||
	//ibccmd "github.com/cosmos/cosmos-sdk/x/ibc/client/cli"
 | 
						//ibccmd "github.com/cosmos/cosmos-sdk/x/ibc/client/cli"
 | 
				
			||||||
	//stakecmd "github.com/cosmos/cosmos-sdk/x/stake/client/cli"
 | 
						slashingcmd "github.com/cosmos/cosmos-sdk/x/slashing/client/cli"
 | 
				
			||||||
 | 
						stakecmd "github.com/cosmos/cosmos-sdk/x/stake/client/cli"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/kava-labs/kava/internal/app"
 | 
						"github.com/kava-labs/kava/internal/app"
 | 
				
			||||||
	"github.com/kava-labs/kava/internal/lcd"
 | 
						//"github.com/kava-labs/kava/internal/lcd"
 | 
				
			||||||
	//"github.com/kava-labs/kava/internal/types"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// rootCmd is the entry point for this binary
 | 
					 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	rootCmd = &cobra.Command{
 | 
						rootCmd = &cobra.Command{
 | 
				
			||||||
		Use:   "kvcli",
 | 
							Use:   "kvcli",
 | 
				
			||||||
@ -32,49 +30,119 @@ var (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
	// disable sorting
 | 
					 | 
				
			||||||
	cobra.EnableCommandSorting = false
 | 
						cobra.EnableCommandSorting = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// get the codec
 | 
						// get the codec
 | 
				
			||||||
	cdc := app.MakeCodec()
 | 
						cdc := app.CreateKavaAppCodec()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// TODO: setup keybase, viper object, etc. to be passed into
 | 
						// add standard rpc commands
 | 
				
			||||||
	// the below functions and eliminate global vars, like we do
 | 
					 | 
				
			||||||
	// with the cdc
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// add standard rpc, and tx commands
 | 
					 | 
				
			||||||
	rpc.AddCommands(rootCmd)
 | 
						rpc.AddCommands(rootCmd)
 | 
				
			||||||
	rootCmd.AddCommand(client.LineBreak)
 | 
					 | 
				
			||||||
	tx.AddCommands(rootCmd, cdc)
 | 
					 | 
				
			||||||
	rootCmd.AddCommand(client.LineBreak)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// add query/post commands (custom to binary)
 | 
						//Add state commands
 | 
				
			||||||
 | 
						tendermintCmd := &cobra.Command{
 | 
				
			||||||
 | 
							Use:   "tendermint",
 | 
				
			||||||
 | 
							Short: "Tendermint state querying subcommands",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						tendermintCmd.AddCommand(
 | 
				
			||||||
 | 
							rpc.BlockCommand(),
 | 
				
			||||||
 | 
							rpc.ValidatorCommand(),
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
						tx.AddCommands(tendermintCmd, cdc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//Add IBC commands
 | 
				
			||||||
 | 
						// ibcCmd := &cobra.Command{
 | 
				
			||||||
 | 
						// 	Use:   "ibc",
 | 
				
			||||||
 | 
						// 	Short: "Inter-Blockchain Communication subcommands",
 | 
				
			||||||
 | 
						// }
 | 
				
			||||||
 | 
						// ibcCmd.AddCommand(
 | 
				
			||||||
 | 
						// 	client.PostCommands(
 | 
				
			||||||
 | 
						// 		ibccmd.IBCTransferCmd(cdc),
 | 
				
			||||||
 | 
						// 		ibccmd.IBCRelayCmd(cdc),
 | 
				
			||||||
 | 
						// 	)...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						advancedCmd := &cobra.Command{
 | 
				
			||||||
 | 
							Use:   "advanced",
 | 
				
			||||||
 | 
							Short: "Advanced subcommands",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						advancedCmd.AddCommand(
 | 
				
			||||||
 | 
							tendermintCmd,
 | 
				
			||||||
 | 
							//ibcCmd,
 | 
				
			||||||
 | 
							//lcd.ServeCommand(cdc),
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
						rootCmd.AddCommand(
 | 
				
			||||||
 | 
							advancedCmd,
 | 
				
			||||||
 | 
							client.LineBreak,
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//Add stake commands
 | 
				
			||||||
 | 
						stakeCmd := &cobra.Command{
 | 
				
			||||||
 | 
							Use:   "stake",
 | 
				
			||||||
 | 
							Short: "Stake and validation subcommands",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						stakeCmd.AddCommand(
 | 
				
			||||||
 | 
							client.GetCommands(
 | 
				
			||||||
 | 
								stakecmd.GetCmdQueryValidator("stake", cdc),
 | 
				
			||||||
 | 
								stakecmd.GetCmdQueryValidators("stake", cdc),
 | 
				
			||||||
 | 
								stakecmd.GetCmdQueryDelegation("stake", cdc),
 | 
				
			||||||
 | 
								stakecmd.GetCmdQueryDelegations("stake", cdc),
 | 
				
			||||||
 | 
								slashingcmd.GetCmdQuerySigningInfo("slashing", cdc),
 | 
				
			||||||
 | 
							)...)
 | 
				
			||||||
 | 
						stakeCmd.AddCommand(
 | 
				
			||||||
 | 
							client.PostCommands(
 | 
				
			||||||
 | 
								stakecmd.GetCmdCreateValidator(cdc),
 | 
				
			||||||
 | 
								stakecmd.GetCmdEditValidator(cdc),
 | 
				
			||||||
 | 
								stakecmd.GetCmdDelegate(cdc),
 | 
				
			||||||
 | 
								stakecmd.GetCmdUnbond("stake", cdc),
 | 
				
			||||||
 | 
								stakecmd.GetCmdRedelegate("stake", cdc),
 | 
				
			||||||
 | 
								slashingcmd.GetCmdUnrevoke(cdc),
 | 
				
			||||||
 | 
							)...)
 | 
				
			||||||
 | 
						rootCmd.AddCommand(
 | 
				
			||||||
 | 
							stakeCmd,
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//Add stake commands
 | 
				
			||||||
 | 
						// govCmd := &cobra.Command{
 | 
				
			||||||
 | 
						// 	Use:   "gov",
 | 
				
			||||||
 | 
						// 	Short: "Governance and voting subcommands",
 | 
				
			||||||
 | 
						// }
 | 
				
			||||||
 | 
						// govCmd.AddCommand(
 | 
				
			||||||
 | 
						// 	client.GetCommands(
 | 
				
			||||||
 | 
						// 		govcmd.GetCmdQueryProposal("gov", cdc),
 | 
				
			||||||
 | 
						// 		govcmd.GetCmdQueryVote("gov", cdc),
 | 
				
			||||||
 | 
						// 		govcmd.GetCmdQueryVotes("gov", cdc),
 | 
				
			||||||
 | 
						// 	)...)
 | 
				
			||||||
 | 
						// govCmd.AddCommand(
 | 
				
			||||||
 | 
						// 	client.PostCommands(
 | 
				
			||||||
 | 
						// 		govcmd.GetCmdSubmitProposal(cdc),
 | 
				
			||||||
 | 
						// 		govcmd.GetCmdDeposit(cdc),
 | 
				
			||||||
 | 
						// 		govcmd.GetCmdVote(cdc),
 | 
				
			||||||
 | 
						// 	)...)
 | 
				
			||||||
 | 
						// rootCmd.AddCommand(
 | 
				
			||||||
 | 
						// 	govCmd,
 | 
				
			||||||
 | 
						// )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//Add auth and bank commands
 | 
				
			||||||
	rootCmd.AddCommand(
 | 
						rootCmd.AddCommand(
 | 
				
			||||||
		client.GetCommands(
 | 
							client.GetCommands(
 | 
				
			||||||
			authcmd.GetAccountCmd("acc", cdc, authcmd.GetAccountDecoder(cdc)),
 | 
								authcmd.GetAccountCmd("acc", cdc, authcmd.GetAccountDecoder(cdc)),
 | 
				
			||||||
		)...)
 | 
							)...)
 | 
				
			||||||
 | 
					 | 
				
			||||||
	rootCmd.AddCommand(
 | 
						rootCmd.AddCommand(
 | 
				
			||||||
		client.PostCommands(
 | 
							client.PostCommands(
 | 
				
			||||||
			bankcmd.SendTxCmd(cdc),
 | 
								bankcmd.SendTxCmd(cdc),
 | 
				
			||||||
			//ibccmd.IBCTransferCmd(cdc),
 | 
					 | 
				
			||||||
			//ibccmd.IBCRelayCmd(cdc),
 | 
					 | 
				
			||||||
			//stakecmd.GetCmdCreateValidator(cdc),
 | 
					 | 
				
			||||||
			//stakecmd.GetCmdEditValidator(cdc),
 | 
					 | 
				
			||||||
			//stakecmd.GetCmdDelegate(cdc),
 | 
					 | 
				
			||||||
			//stakecmd.GetCmdUnbond(cdc),
 | 
					 | 
				
			||||||
		)...)
 | 
							)...)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// add proxy, version and key info
 | 
						// add proxy, version and key info
 | 
				
			||||||
	rootCmd.AddCommand(
 | 
						rootCmd.AddCommand(
 | 
				
			||||||
		client.LineBreak,
 | 
					 | 
				
			||||||
		lcd.ServeCommand(cdc),
 | 
					 | 
				
			||||||
		keys.Commands(),
 | 
							keys.Commands(),
 | 
				
			||||||
		client.LineBreak,
 | 
							client.LineBreak,
 | 
				
			||||||
		version.VersionCmd,
 | 
							version.VersionCmd,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// prepare and add flags
 | 
						// prepare and add flags
 | 
				
			||||||
	executor := cli.PrepareMainCmd(rootCmd, "KV", os.ExpandEnv("$HOME/.kvcli"))
 | 
						executor := cli.PrepareMainCmd(rootCmd, "KV", app.DefaultCLIHome)
 | 
				
			||||||
	executor.Execute()
 | 
						err := executor.Execute()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							panic(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -2,45 +2,60 @@ package main
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
	"os"
 | 
						"io"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/cosmos/cosmos-sdk/baseapp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/spf13/cobra"
 | 
						"github.com/spf13/cobra"
 | 
				
			||||||
 | 
						"github.com/spf13/viper"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	abci "github.com/tendermint/abci/types"
 | 
						abci "github.com/tendermint/tendermint/abci/types"
 | 
				
			||||||
 | 
						"github.com/tendermint/tendermint/libs/cli"
 | 
				
			||||||
 | 
						dbm "github.com/tendermint/tendermint/libs/db"
 | 
				
			||||||
 | 
						"github.com/tendermint/tendermint/libs/log"
 | 
				
			||||||
	tmtypes "github.com/tendermint/tendermint/types"
 | 
						tmtypes "github.com/tendermint/tendermint/types"
 | 
				
			||||||
	"github.com/tendermint/tmlibs/cli"
 | 
					 | 
				
			||||||
	dbm "github.com/tendermint/tmlibs/db"
 | 
					 | 
				
			||||||
	"github.com/tendermint/tmlibs/log"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/server"
 | 
						"github.com/cosmos/cosmos-sdk/server"
 | 
				
			||||||
	"github.com/kava-labs/kava/internal/app"
 | 
						"github.com/kava-labs/kava/internal/app"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
	cdc := app.MakeCodec()
 | 
						// Create an app codec
 | 
				
			||||||
 | 
						cdc := app.CreateKavaAppCodec()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create a server context (a struct of a tendermint config and a logger)
 | 
				
			||||||
	ctx := server.NewDefaultContext()
 | 
						ctx := server.NewDefaultContext()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create the root kvd command
 | 
				
			||||||
 | 
						cobra.EnableCommandSorting = false
 | 
				
			||||||
	rootCmd := &cobra.Command{
 | 
						rootCmd := &cobra.Command{
 | 
				
			||||||
		Use:               "kvd",
 | 
							Use:               "kvd",
 | 
				
			||||||
		Short:             "Kava Daemon",
 | 
							Short:             "Kava Daemon",
 | 
				
			||||||
		PersistentPreRunE: server.PersistentPreRunEFn(ctx),
 | 
							PersistentPreRunE: server.PersistentPreRunEFn(ctx),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	server.AddCommands(ctx, cdc, rootCmd, app.CreateAppInit(),
 | 
						// Add server commands to kvd, passing in the app
 | 
				
			||||||
		server.ConstructAppCreator(newApp, "kava"),
 | 
						appInit := app.KavaAppInit()
 | 
				
			||||||
		server.ConstructAppExporter(exportAppStateAndTMValidators, "kava"))
 | 
						appCreator := server.ConstructAppCreator(newApp, "kava") // init db before calling newApp
 | 
				
			||||||
 | 
						appExporter := server.ConstructAppExporter(exportAppStateAndTMValidators, "kava")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// prepare and add flags
 | 
						server.AddCommands(ctx, cdc, rootCmd, appInit, appCreator, appExporter)
 | 
				
			||||||
	rootDir := os.ExpandEnv("$HOME/.kvd")
 | 
					
 | 
				
			||||||
	executor := cli.PrepareBaseCmd(rootCmd, "KV", rootDir)
 | 
						// handle envs and add some flags and stuff
 | 
				
			||||||
	executor.Execute()
 | 
						executor := cli.PrepareBaseCmd(rootCmd, "KV", app.DefaultNodeHome)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Run kvd
 | 
				
			||||||
 | 
						err := executor.Execute()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							panic(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newApp(logger log.Logger, db dbm.DB) abci.Application {
 | 
					func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer) abci.Application {
 | 
				
			||||||
	return app.NewKavaApp(logger, db)
 | 
						return app.NewKavaApp(logger, db, traceStore, baseapp.SetPruning(viper.GetString("pruning")))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func exportAppStateAndTMValidators(logger log.Logger, db dbm.DB) (json.RawMessage, []tmtypes.GenesisValidator, error) {
 | 
					func exportAppStateAndTMValidators(logger log.Logger, db dbm.DB, traceStore io.Writer) (json.RawMessage, []tmtypes.GenesisValidator, error) {
 | 
				
			||||||
	bapp := app.NewKavaApp(logger, db)
 | 
						tempApp := app.NewKavaApp(logger, db, traceStore)
 | 
				
			||||||
	return bapp.ExportAppStateAndValidators()
 | 
						return tempApp.ExportAppStateAndValidators()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,19 +0,0 @@
 | 
				
			|||||||
To initialise a network:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 - delete everything (including persistant volume claim)
 | 
					 | 
				
			||||||
 - deploy everything except the deployments
 | 
					 | 
				
			||||||
 - wait until the job has finished, then deploy the deployments
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 Note on config
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  - Secrets and configmaps need to be generated from files
 | 
					 | 
				
			||||||
  - Ideally everything would be in one file but kubectl doesn't scan directories yet: https://github.com/kubernetes/kubernetes/issues/62421
 | 
					 | 
				
			||||||
  - `kubectl create secret generic kava-user-keys --from-file=./init/init-data --dry-run -o yaml > secret-user.yml`
 | 
					 | 
				
			||||||
  - `kubectl create secret generic kava-node-config --from-file=./init/init-data/.kvd/config --dry-run -o yaml > secret-config.yml`
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Examples of using light client with the node:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 - Get the status `kvcli status --node <node's-url>:46657 --chain-id test-kava`
 | 
					 | 
				
			||||||
 - Send coins `kvcli send --name <your-key-name> --to <receiver's-address> --amount 100KVA --node <node's-url>:46657 --chain-id test-kava`
 | 
					 | 
				
			||||||
 - Run the light client daemon `kvcli rest-server --node <node's-url>:46657 --chain-id test-kava`
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
@ -1,31 +0,0 @@
 | 
				
			|||||||
apiVersion: apps/v1beta2
 | 
					 | 
				
			||||||
kind: Deployment
 | 
					 | 
				
			||||||
metadata:
 | 
					 | 
				
			||||||
  name: kava-d-deployment2
 | 
					 | 
				
			||||||
  labels:
 | 
					 | 
				
			||||||
    app: kava
 | 
					 | 
				
			||||||
spec:
 | 
					 | 
				
			||||||
  replicas: 1
 | 
					 | 
				
			||||||
  selector:
 | 
					 | 
				
			||||||
    matchLabels:
 | 
					 | 
				
			||||||
      pod: kvd
 | 
					 | 
				
			||||||
  template:
 | 
					 | 
				
			||||||
    metadata:
 | 
					 | 
				
			||||||
      labels:
 | 
					 | 
				
			||||||
        app: kava
 | 
					 | 
				
			||||||
        pod: kvd
 | 
					 | 
				
			||||||
    spec:
 | 
					 | 
				
			||||||
      containers:
 | 
					 | 
				
			||||||
      - name: kvd
 | 
					 | 
				
			||||||
        image: kava/kava
 | 
					 | 
				
			||||||
        command: ["kvd", "start"]
 | 
					 | 
				
			||||||
        ports:
 | 
					 | 
				
			||||||
        - containerPort: 46656
 | 
					 | 
				
			||||||
        - containerPort: 46657
 | 
					 | 
				
			||||||
        volumeMounts:
 | 
					 | 
				
			||||||
        - name: persistent-storage-kvd
 | 
					 | 
				
			||||||
          mountPath: /root/.kvd
 | 
					 | 
				
			||||||
      volumes:
 | 
					 | 
				
			||||||
      - name: persistent-storage-kvd
 | 
					 | 
				
			||||||
        persistentVolumeClaim:
 | 
					 | 
				
			||||||
          claimName: kava-pvc-kvd2
 | 
					 | 
				
			||||||
@ -1,30 +0,0 @@
 | 
				
			|||||||
apiVersion: apps/v1beta2
 | 
					 | 
				
			||||||
kind: Deployment
 | 
					 | 
				
			||||||
metadata:
 | 
					 | 
				
			||||||
  name: kava-lcd-deployment2
 | 
					 | 
				
			||||||
  labels:
 | 
					 | 
				
			||||||
    app: kava
 | 
					 | 
				
			||||||
spec:
 | 
					 | 
				
			||||||
  replicas: 1
 | 
					 | 
				
			||||||
  selector:
 | 
					 | 
				
			||||||
    matchLabels:
 | 
					 | 
				
			||||||
      pod: kvcli-lcd
 | 
					 | 
				
			||||||
  template:
 | 
					 | 
				
			||||||
    metadata:
 | 
					 | 
				
			||||||
      labels:
 | 
					 | 
				
			||||||
        app: kava
 | 
					 | 
				
			||||||
        pod: kvcli-lcd
 | 
					 | 
				
			||||||
    spec:
 | 
					 | 
				
			||||||
      containers:
 | 
					 | 
				
			||||||
      - name: kvcli-lcd
 | 
					 | 
				
			||||||
        image: kava/kava
 | 
					 | 
				
			||||||
        command: ["kvcli", "rest-server", "--chain-id=test-kava", "--node=kava-d-service2:46657", "--laddr=tcp://0.0.0.0:1317"]
 | 
					 | 
				
			||||||
        ports:
 | 
					 | 
				
			||||||
        - containerPort: 1317
 | 
					 | 
				
			||||||
        volumeMounts:
 | 
					 | 
				
			||||||
        - name: persistent-storage-kvcli
 | 
					 | 
				
			||||||
          mountPath: /root/.kvcli
 | 
					 | 
				
			||||||
      volumes:
 | 
					 | 
				
			||||||
      - name: persistent-storage-kvcli
 | 
					 | 
				
			||||||
        persistentVolumeClaim:
 | 
					 | 
				
			||||||
          claimName: kava-pvc-kvcli2
 | 
					 | 
				
			||||||
@ -1,5 +0,0 @@
 | 
				
			|||||||
FROM kava/kava
 | 
					 | 
				
			||||||
WORKDIR /
 | 
					 | 
				
			||||||
COPY init.sh ./
 | 
					 | 
				
			||||||
# Expects init data to be mounted at /init-data
 | 
					 | 
				
			||||||
CMD ["sh", "init.sh"]
 | 
					 | 
				
			||||||
@ -1,19 +0,0 @@
 | 
				
			|||||||
# Setup node and light client.
 | 
					 | 
				
			||||||
echo "This assumes you have wiped old data"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
echo "copying kvd config to the default location ($HOME/.kvd)"
 | 
					 | 
				
			||||||
initData=./init-data
 | 
					 | 
				
			||||||
cp -vR $initData/.kvd/. $HOME/.kvd/ # copy contents of .kvd into .kvd, creating dir if necessary
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
echo "setup validator key from seed"
 | 
					 | 
				
			||||||
validatorPassword="$(cat $initData/validatorPassword)"
 | 
					 | 
				
			||||||
echo $validatorPassword
 | 
					 | 
				
			||||||
validatorBackupPhrase="$(cat $initData/validatorBackupPhrase)"
 | 
					 | 
				
			||||||
printf "$validatorPassword\n$validatorBackupPhrase\n" | kvcli keys add --recover validator
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
echo "setup user1 key from seed"
 | 
					 | 
				
			||||||
user1Password="$(cat ./init-data/user1Password)"
 | 
					 | 
				
			||||||
user1BackupPhrase="$(cat ./init-data/user1BackupPhrase)"
 | 
					 | 
				
			||||||
printf "$user1Password\n$user1BackupPhrase\n" | kvcli keys add --recover user1
 | 
					 | 
				
			||||||
@ -1,36 +0,0 @@
 | 
				
			|||||||
apiVersion: batch/v1
 | 
					 | 
				
			||||||
kind: Job
 | 
					 | 
				
			||||||
metadata:
 | 
					 | 
				
			||||||
  name: kava-init-data2
 | 
					 | 
				
			||||||
  labels:
 | 
					 | 
				
			||||||
    app: kava
 | 
					 | 
				
			||||||
spec:
 | 
					 | 
				
			||||||
  template:
 | 
					 | 
				
			||||||
    spec:
 | 
					 | 
				
			||||||
      containers:
 | 
					 | 
				
			||||||
      - name: run-init
 | 
					 | 
				
			||||||
        image: kava/kava-init
 | 
					 | 
				
			||||||
        volumeMounts:
 | 
					 | 
				
			||||||
        - name: kava-persistent-storage-kvd
 | 
					 | 
				
			||||||
          mountPath: /root/.kvd
 | 
					 | 
				
			||||||
        - name: kava-persistent-storage-kvcli
 | 
					 | 
				
			||||||
          mountPath: /root/.kvcli
 | 
					 | 
				
			||||||
        - name: user-keys
 | 
					 | 
				
			||||||
          mountPath: /init-data/
 | 
					 | 
				
			||||||
        - name: node-config
 | 
					 | 
				
			||||||
          mountPath: /init-data/.kvd/config/
 | 
					 | 
				
			||||||
      restartPolicy: Never
 | 
					 | 
				
			||||||
      volumes:
 | 
					 | 
				
			||||||
      - name: kava-persistent-storage-kvd
 | 
					 | 
				
			||||||
        persistentVolumeClaim:
 | 
					 | 
				
			||||||
          claimName: kava-pvc-kvd2
 | 
					 | 
				
			||||||
      - name: kava-persistent-storage-kvcli
 | 
					 | 
				
			||||||
        persistentVolumeClaim:
 | 
					 | 
				
			||||||
          claimName: kava-pvc-kvcli2
 | 
					 | 
				
			||||||
      - name: user-keys
 | 
					 | 
				
			||||||
        secret:
 | 
					 | 
				
			||||||
          secretName: kava-user-keys
 | 
					 | 
				
			||||||
      - name: node-config
 | 
					 | 
				
			||||||
        secret:
 | 
					 | 
				
			||||||
          secretName: kava-node-config
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,35 +0,0 @@
 | 
				
			|||||||
apiVersion: v1
 | 
					 | 
				
			||||||
kind: Service
 | 
					 | 
				
			||||||
metadata:
 | 
					 | 
				
			||||||
  name: kava-d-service2
 | 
					 | 
				
			||||||
  labels:
 | 
					 | 
				
			||||||
    app: kava
 | 
					 | 
				
			||||||
spec:
 | 
					 | 
				
			||||||
  type: LoadBalancer
 | 
					 | 
				
			||||||
  ports:
 | 
					 | 
				
			||||||
    - name: rpc
 | 
					 | 
				
			||||||
      port: 46657
 | 
					 | 
				
			||||||
      protocol: TCP
 | 
					 | 
				
			||||||
      targetPort: 46657
 | 
					 | 
				
			||||||
    - name: p2p
 | 
					 | 
				
			||||||
      port: 46656
 | 
					 | 
				
			||||||
      protocol: TCP
 | 
					 | 
				
			||||||
      targetPort: 46656
 | 
					 | 
				
			||||||
  selector:
 | 
					 | 
				
			||||||
    pod: kvd
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
apiVersion: v1
 | 
					 | 
				
			||||||
kind: Service
 | 
					 | 
				
			||||||
metadata:
 | 
					 | 
				
			||||||
  name: kava-lcd-service2
 | 
					 | 
				
			||||||
  labels:
 | 
					 | 
				
			||||||
    app: kava
 | 
					 | 
				
			||||||
spec:
 | 
					 | 
				
			||||||
  type: LoadBalancer
 | 
					 | 
				
			||||||
  ports:
 | 
					 | 
				
			||||||
    - name: rest-server
 | 
					 | 
				
			||||||
      port: 1317
 | 
					 | 
				
			||||||
      protocol: TCP
 | 
					 | 
				
			||||||
      targetPort: 1317
 | 
					 | 
				
			||||||
  selector:
 | 
					 | 
				
			||||||
    pod: kvcli-lcd
 | 
					 | 
				
			||||||
@ -1,26 +0,0 @@
 | 
				
			|||||||
apiVersion: v1
 | 
					 | 
				
			||||||
kind: PersistentVolumeClaim
 | 
					 | 
				
			||||||
metadata:
 | 
					 | 
				
			||||||
  name: kava-pvc-kvd2
 | 
					 | 
				
			||||||
  labels:
 | 
					 | 
				
			||||||
    app: kava
 | 
					 | 
				
			||||||
spec:
 | 
					 | 
				
			||||||
  accessModes:
 | 
					 | 
				
			||||||
    - ReadWriteOnce
 | 
					 | 
				
			||||||
  resources:
 | 
					 | 
				
			||||||
    requests:
 | 
					 | 
				
			||||||
      storage: 8Gi
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
apiVersion: v1
 | 
					 | 
				
			||||||
kind: PersistentVolumeClaim
 | 
					 | 
				
			||||||
metadata:
 | 
					 | 
				
			||||||
  name: kava-pvc-kvcli2
 | 
					 | 
				
			||||||
  labels:
 | 
					 | 
				
			||||||
    app: kava
 | 
					 | 
				
			||||||
spec:
 | 
					 | 
				
			||||||
  accessModes:
 | 
					 | 
				
			||||||
    - ReadWriteOnce
 | 
					 | 
				
			||||||
  resources:
 | 
					 | 
				
			||||||
    requests:
 | 
					 | 
				
			||||||
      storage: 8Gi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -4,18 +4,18 @@ services:
 | 
				
			|||||||
    image: kava/kava
 | 
					    image: kava/kava
 | 
				
			||||||
    command: ["kvd", "start"]
 | 
					    command: ["kvd", "start"]
 | 
				
			||||||
    ports:
 | 
					    ports:
 | 
				
			||||||
      - 46657:46657
 | 
					      - 26657:26657
 | 
				
			||||||
    volumes:
 | 
					 | 
				
			||||||
      - ~/.kvd:/root/.kvd
 | 
					 | 
				
			||||||
      - ~/.kvcli:/root/.kvcli
 | 
					 | 
				
			||||||
    # Avoid printing out all the tendermint logs
 | 
					 | 
				
			||||||
    logging:
 | 
					 | 
				
			||||||
      driver: "none"
 | 
					 | 
				
			||||||
  lcd:
 | 
					 | 
				
			||||||
    image: kava/kava
 | 
					 | 
				
			||||||
    command: "kvcli rest-server --chain-id test-kava --node kvd:46657 --laddr tcp://0.0.0.0:1317"
 | 
					 | 
				
			||||||
    ports:
 | 
					 | 
				
			||||||
      - 1317:1317
 | 
					 | 
				
			||||||
    volumes:
 | 
					    volumes:
 | 
				
			||||||
      - ~/.kvd:/root/.kvd
 | 
					      - ~/.kvd:/root/.kvd
 | 
				
			||||||
      - ~/.kvcli:/root/.kvcli
 | 
					      - ~/.kvcli:/root/.kvcli
 | 
				
			||||||
 | 
					  #   # Avoid printing out all the tendermint logs
 | 
				
			||||||
 | 
					  #   logging:
 | 
				
			||||||
 | 
					  #     driver: "none"
 | 
				
			||||||
 | 
					  # lcd:
 | 
				
			||||||
 | 
					  #   image: kava/kava
 | 
				
			||||||
 | 
					  #   command: "kvcli rest-server --chain-id test-kava --node kvd:46657 --laddr tcp://0.0.0.0:1317"
 | 
				
			||||||
 | 
					  #   ports:
 | 
				
			||||||
 | 
					  #     - 1317:1317
 | 
				
			||||||
 | 
					  #   volumes:
 | 
				
			||||||
 | 
					  #     - ~/.kvd:/root/.kvd
 | 
				
			||||||
 | 
					  #     - ~/.kvcli:/root/.kvcli
 | 
				
			||||||
 | 
				
			|||||||
@ -2,29 +2,36 @@ package app
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
 | 
						"io"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	abci "github.com/tendermint/abci/types"
 | 
						abci "github.com/tendermint/tendermint/abci/types"
 | 
				
			||||||
 | 
						cmn "github.com/tendermint/tendermint/libs/common"
 | 
				
			||||||
 | 
						dbm "github.com/tendermint/tendermint/libs/db"
 | 
				
			||||||
 | 
						"github.com/tendermint/tendermint/libs/log"
 | 
				
			||||||
	tmtypes "github.com/tendermint/tendermint/types"
 | 
						tmtypes "github.com/tendermint/tendermint/types"
 | 
				
			||||||
	cmn "github.com/tendermint/tmlibs/common"
 | 
					 | 
				
			||||||
	dbm "github.com/tendermint/tmlibs/db"
 | 
					 | 
				
			||||||
	"github.com/tendermint/tmlibs/log"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bam "github.com/cosmos/cosmos-sdk/baseapp"
 | 
						bam "github.com/cosmos/cosmos-sdk/baseapp"
 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/wire"
 | 
						"github.com/cosmos/cosmos-sdk/wire"
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/x/auth"
 | 
						"github.com/cosmos/cosmos-sdk/x/auth"
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/x/bank"
 | 
						"github.com/cosmos/cosmos-sdk/x/bank"
 | 
				
			||||||
 | 
						//"github.com/cosmos/cosmos-sdk/x/gov"
 | 
				
			||||||
	//"github.com/cosmos/cosmos-sdk/x/ibc"
 | 
						//"github.com/cosmos/cosmos-sdk/x/ibc"
 | 
				
			||||||
	//"github.com/cosmos/cosmos-sdk/x/slashing"
 | 
						"github.com/cosmos/cosmos-sdk/x/slashing"
 | 
				
			||||||
	//"github.com/cosmos/cosmos-sdk/x/stake"
 | 
						"github.com/cosmos/cosmos-sdk/x/stake"
 | 
				
			||||||
	"github.com/kava-labs/kava/internal/types"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
	appName = "KavaApp"
 | 
						appName = "KavaApp"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Extended ABCI application
 | 
					// Set default directories for data
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						DefaultCLIHome  = os.ExpandEnv("$HOME/.kvcli")
 | 
				
			||||||
 | 
						DefaultNodeHome = os.ExpandEnv("$HOME/.kvd")
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type KavaApp struct {
 | 
					type KavaApp struct {
 | 
				
			||||||
	*bam.BaseApp
 | 
						*bam.BaseApp
 | 
				
			||||||
	cdc *wire.Codec
 | 
						cdc *wire.Codec
 | 
				
			||||||
@ -33,60 +40,77 @@ type KavaApp struct {
 | 
				
			|||||||
	keyMain    *sdk.KVStoreKey
 | 
						keyMain    *sdk.KVStoreKey
 | 
				
			||||||
	keyAccount *sdk.KVStoreKey
 | 
						keyAccount *sdk.KVStoreKey
 | 
				
			||||||
	//keyIBC           *sdk.KVStoreKey
 | 
						//keyIBC           *sdk.KVStoreKey
 | 
				
			||||||
	//keyStake    *sdk.KVStoreKey
 | 
						keyStake    *sdk.KVStoreKey
 | 
				
			||||||
	//keySlashing *sdk.KVStoreKey
 | 
						keySlashing *sdk.KVStoreKey
 | 
				
			||||||
 | 
						//keyGov           *sdk.KVStoreKey
 | 
				
			||||||
 | 
						keyFeeCollection *sdk.KVStoreKey
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Manage getting and setting accounts
 | 
						// keepers
 | 
				
			||||||
	accountMapper       auth.AccountMapper
 | 
						accountMapper       auth.AccountMapper
 | 
				
			||||||
	feeCollectionKeeper auth.FeeCollectionKeeper
 | 
						feeCollectionKeeper auth.FeeCollectionKeeper
 | 
				
			||||||
	coinKeeper          bank.Keeper
 | 
						coinKeeper          bank.Keeper
 | 
				
			||||||
	//ibcMapper           ibc.Mapper
 | 
						//ibcMapper           ibc.Mapper
 | 
				
			||||||
	//stakeKeeper         stake.Keeper
 | 
						stakeKeeper    stake.Keeper
 | 
				
			||||||
	//slashingKeeper      slashing.Keeper
 | 
						slashingKeeper slashing.Keeper
 | 
				
			||||||
 | 
						//govKeeper           gov.Keeper
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewKavaApp(logger log.Logger, db dbm.DB) *KavaApp {
 | 
					// Creates a new KavaApp.
 | 
				
			||||||
 | 
					func NewKavaApp(logger log.Logger, db dbm.DB, traceStore io.Writer, baseAppOptions ...func(*bam.BaseApp)) *KavaApp {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Create app-level codec for txs and accounts.
 | 
						// Create a codec for use across the whole app
 | 
				
			||||||
	var cdc = MakeCodec()
 | 
						cdc := CreateKavaAppCodec()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Create your application object.
 | 
						// Create a new base app
 | 
				
			||||||
 | 
						bApp := bam.NewBaseApp(appName, cdc, logger, db, baseAppOptions...)
 | 
				
			||||||
 | 
						bApp.SetCommitMultiStoreTracer(traceStore)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create the kava app, extending baseApp
 | 
				
			||||||
	var app = &KavaApp{
 | 
						var app = &KavaApp{
 | 
				
			||||||
		BaseApp:    bam.NewBaseApp(appName, cdc, logger, db),
 | 
							BaseApp:    bApp,
 | 
				
			||||||
		cdc:        cdc,
 | 
							cdc:        cdc,
 | 
				
			||||||
		keyMain:    sdk.NewKVStoreKey("main"),
 | 
							keyMain:    sdk.NewKVStoreKey("main"),
 | 
				
			||||||
		keyAccount: sdk.NewKVStoreKey("acc"),
 | 
							keyAccount: sdk.NewKVStoreKey("acc"),
 | 
				
			||||||
		//keyIBC:      sdk.NewKVStoreKey("ibc"),
 | 
							//keyIBC:      sdk.NewKVStoreKey("ibc"),
 | 
				
			||||||
		//keyStake:    sdk.NewKVStoreKey("stake"),
 | 
							keyStake:    sdk.NewKVStoreKey("stake"),
 | 
				
			||||||
		//keySlashing: sdk.NewKVStoreKey("slashing"),
 | 
							keySlashing: sdk.NewKVStoreKey("slashing"),
 | 
				
			||||||
 | 
							//keyGov:           sdk.NewKVStoreKey("gov"),
 | 
				
			||||||
 | 
							keyFeeCollection: sdk.NewKVStoreKey("fee"),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Define the accountMapper.
 | 
						// Define the accountMapper and base account
 | 
				
			||||||
	app.accountMapper = auth.NewAccountMapper(
 | 
						app.accountMapper = auth.NewAccountMapper(
 | 
				
			||||||
		cdc,
 | 
							cdc,
 | 
				
			||||||
		app.keyAccount, // target store
 | 
							app.keyAccount,
 | 
				
			||||||
		&auth.BaseAccount{},
 | 
							auth.ProtoBaseAccount,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// add accountMapper/handlers
 | 
						// Create the keepers
 | 
				
			||||||
	app.coinKeeper = bank.NewKeeper(app.accountMapper)
 | 
						app.coinKeeper = bank.NewKeeper(app.accountMapper)
 | 
				
			||||||
	//app.ibcMapper = ibc.NewMapper(app.cdc, app.keyIBC, app.RegisterCodespace(ibc.DefaultCodespace))
 | 
						//app.ibcMapper = ibc.NewMapper(app.cdc, app.keyIBC, app.RegisterCodespace(ibc.DefaultCodespace))
 | 
				
			||||||
	//app.stakeKeeper = stake.NewKeeper(app.cdc, app.keyStake, app.coinKeeper, app.RegisterCodespace(stake.DefaultCodespace))
 | 
						app.stakeKeeper = stake.NewKeeper(app.cdc, app.keyStake, app.coinKeeper, app.RegisterCodespace(stake.DefaultCodespace))
 | 
				
			||||||
	//app.slashingKeeper = slashing.NewKeeper(app.cdc, app.keySlashing, app.stakeKeeper, app.RegisterCodespace(slashing.DefaultCodespace))
 | 
						app.slashingKeeper = slashing.NewKeeper(app.cdc, app.keySlashing, app.stakeKeeper, app.RegisterCodespace(slashing.DefaultCodespace))
 | 
				
			||||||
 | 
						//app.govKeeper = gov.NewKeeper(app.cdc, app.keyGov, app.coinKeeper, app.stakeKeeper, app.RegisterCodespace(gov.DefaultCodespace))
 | 
				
			||||||
 | 
						app.feeCollectionKeeper = auth.NewFeeCollectionKeeper(app.cdc, app.keyFeeCollection)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// register message routes
 | 
						// Register the message handlers
 | 
				
			||||||
	app.Router().
 | 
						app.Router().
 | 
				
			||||||
		AddRoute("auth", auth.NewHandler(app.accountMapper)).
 | 
							AddRoute("bank", bank.NewHandler(app.coinKeeper)).
 | 
				
			||||||
		AddRoute("bank", bank.NewHandler(app.coinKeeper))
 | 
					 | 
				
			||||||
		//AddRoute("ibc", ibc.NewHandler(app.ibcMapper, app.coinKeeper)).
 | 
							//AddRoute("ibc", ibc.NewHandler(app.ibcMapper, app.coinKeeper)).
 | 
				
			||||||
		//AddRoute("stake", stake.NewHandler(app.stakeKeeper))
 | 
							AddRoute("stake", stake.NewHandler(app.stakeKeeper)).
 | 
				
			||||||
 | 
							AddRoute("slashing", slashing.NewHandler(app.slashingKeeper))
 | 
				
			||||||
 | 
							//AddRoute("gov", gov.NewHandler(app.govKeeper))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Initialize BaseApp.
 | 
						// Set func to initialze the chain from appState in genesis file
 | 
				
			||||||
	app.SetInitChainer(app.initChainer)
 | 
						app.SetInitChainer(app.initChainer)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Set functions that run before and after txs / blocks
 | 
				
			||||||
	app.SetBeginBlocker(app.BeginBlocker)
 | 
						app.SetBeginBlocker(app.BeginBlocker)
 | 
				
			||||||
	app.SetEndBlocker(app.EndBlocker)
 | 
						app.SetEndBlocker(app.EndBlocker)
 | 
				
			||||||
	app.SetAnteHandler(auth.NewAnteHandler(app.accountMapper, app.feeCollectionKeeper))
 | 
						app.SetAnteHandler(auth.NewAnteHandler(app.accountMapper, app.feeCollectionKeeper))
 | 
				
			||||||
	app.MountStoresIAVL(app.keyMain, app.keyAccount) //, app.keyIBC, app.keyStake, app.keySlashing)
 | 
					
 | 
				
			||||||
 | 
						// Mount stores
 | 
				
			||||||
 | 
						app.MountStoresIAVL(app.keyMain, app.keyAccount, app.keyStake, app.keySlashing, app.keyFeeCollection)
 | 
				
			||||||
	err := app.LoadLatestVersion(app.keyMain)
 | 
						err := app.LoadLatestVersion(app.keyMain)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		cmn.Exit(err.Error())
 | 
							cmn.Exit(err.Error())
 | 
				
			||||||
@ -94,95 +118,90 @@ func NewKavaApp(logger log.Logger, db dbm.DB) *KavaApp {
 | 
				
			|||||||
	return app
 | 
						return app
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Custom tx codec
 | 
					// Creates a codec for use across the whole app.
 | 
				
			||||||
func MakeCodec() *wire.Codec {
 | 
					func CreateKavaAppCodec() *wire.Codec {
 | 
				
			||||||
	var cdc = wire.NewCodec()
 | 
						cdc := wire.NewCodec()
 | 
				
			||||||
	wire.RegisterCrypto(cdc) // Register crypto.
 | 
					 | 
				
			||||||
	sdk.RegisterWire(cdc)    // Register Msgs
 | 
					 | 
				
			||||||
	bank.RegisterWire(cdc)
 | 
					 | 
				
			||||||
	//stake.RegisterWire(cdc)
 | 
					 | 
				
			||||||
	//slashing.RegisterWire(cdc)
 | 
					 | 
				
			||||||
	//ibc.RegisterWire(cdc)
 | 
						//ibc.RegisterWire(cdc)
 | 
				
			||||||
 | 
						bank.RegisterWire(cdc)
 | 
				
			||||||
 | 
						stake.RegisterWire(cdc)
 | 
				
			||||||
 | 
						slashing.RegisterWire(cdc)
 | 
				
			||||||
 | 
						//gov.RegisterWire(cdc)
 | 
				
			||||||
	auth.RegisterWire(cdc)
 | 
						auth.RegisterWire(cdc)
 | 
				
			||||||
 | 
						sdk.RegisterWire(cdc)
 | 
				
			||||||
	// register custom AppAccount
 | 
						wire.RegisterCrypto(cdc)
 | 
				
			||||||
	//cdc.RegisterInterface((*auth.Account)(nil), nil)
 | 
					 | 
				
			||||||
	//cdc.RegisterConcrete(&types.BaseAccount{}, "kava/Account", nil)
 | 
					 | 
				
			||||||
	return cdc
 | 
						return cdc
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// application updates every end block
 | 
					// The function baseapp runs on receipt of a BeginBlock ABCI message
 | 
				
			||||||
func (app *KavaApp) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock {
 | 
					func (app *KavaApp) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock {
 | 
				
			||||||
	//tags := slashing.BeginBlocker(ctx, req, app.slashingKeeper)
 | 
						tags := slashing.BeginBlocker(ctx, req, app.slashingKeeper)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//return abci.ResponseBeginBlock{
 | 
						return abci.ResponseBeginBlock{
 | 
				
			||||||
	//	Tags: tags.ToKVPairs(),
 | 
							Tags: tags.ToKVPairs(),
 | 
				
			||||||
	//}
 | 
						}
 | 
				
			||||||
	return abci.ResponseBeginBlock{}
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// application updates every end block
 | 
					// The function baseapp runs on receipt of a EndBlock ABCI message
 | 
				
			||||||
func (app *KavaApp) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock {
 | 
					func (app *KavaApp) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock {
 | 
				
			||||||
	//validatorUpdates := stake.EndBlocker(ctx, app.stakeKeeper)
 | 
						validatorUpdates := stake.EndBlocker(ctx, app.stakeKeeper)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//return abci.ResponseEndBlock{
 | 
						//tags, _ := gov.EndBlocker(ctx, app.govKeeper)
 | 
				
			||||||
	//	ValidatorUpdates: validatorUpdates,
 | 
					
 | 
				
			||||||
	//}
 | 
						return abci.ResponseEndBlock{
 | 
				
			||||||
	return abci.ResponseEndBlock{}
 | 
							ValidatorUpdates: validatorUpdates,
 | 
				
			||||||
 | 
							//Tags:             tags,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Custom logic for initialization
 | 
					// Initialzes the app db from the appState in the genesis file. Baseapp runs this on receipt of an InitChain ABCI message
 | 
				
			||||||
func (app *KavaApp) initChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain {
 | 
					func (app *KavaApp) initChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain {
 | 
				
			||||||
	stateJSON := req.AppStateBytes
 | 
						stateJSON := req.AppStateBytes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	genesisState := new(types.GenesisState)
 | 
						var genesisState GenesisState
 | 
				
			||||||
	err := app.cdc.UnmarshalJSON(stateJSON, genesisState)
 | 
						err := app.cdc.UnmarshalJSON(stateJSON, &genesisState)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err) // TODO https://github.com/cosmos/cosmos-sdk/issues/468
 | 
							panic(err)
 | 
				
			||||||
		// return sdk.ErrGenesisParse("").TraceCause(err, "")
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// load the accounts
 | 
				
			||||||
	for _, gacc := range genesisState.Accounts {
 | 
						for _, gacc := range genesisState.Accounts {
 | 
				
			||||||
		acc, err := gacc.ToAppAccount()
 | 
							acc := gacc.ToAccount()
 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			panic(err) // TODO https://github.com/cosmos/cosmos-sdk/issues/468
 | 
					 | 
				
			||||||
			//	return sdk.ErrGenesisParse("").TraceCause(err, "")
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		acc.AccountNumber = app.accountMapper.GetNextAccountNumber(ctx)
 | 
							acc.AccountNumber = app.accountMapper.GetNextAccountNumber(ctx)
 | 
				
			||||||
		app.accountMapper.SetAccount(ctx, acc)
 | 
							app.accountMapper.SetAccount(ctx, acc)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// load the initial stake information
 | 
						// load the initial stake information
 | 
				
			||||||
	//stake.InitGenesis(ctx, app.stakeKeeper, genesisState.StakeData)
 | 
						err = stake.InitGenesis(ctx, app.stakeKeeper, genesisState.StakeData)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							panic(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//gov.InitGenesis(ctx, app.govKeeper, gov.DefaultGenesisState())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return abci.ResponseInitChain{}
 | 
						return abci.ResponseInitChain{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Custom logic for state export
 | 
					//
 | 
				
			||||||
func (app *KavaApp) ExportAppStateAndValidators() (appState json.RawMessage, validators []tmtypes.GenesisValidator, err error) {
 | 
					func (app *KavaApp) ExportAppStateAndValidators() (appState json.RawMessage, validators []tmtypes.GenesisValidator, err error) {
 | 
				
			||||||
	ctx := app.NewContext(true, abci.Header{})
 | 
						ctx := app.NewContext(true, abci.Header{})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// iterate to get the accounts
 | 
						// iterate to get the accounts
 | 
				
			||||||
	accounts := []types.GenesisAccount{}
 | 
						accounts := []GenesisAccount{}
 | 
				
			||||||
	appendAccount := func(acc auth.Account) (stop bool) {
 | 
						appendAccount := func(acc auth.Account) (stop bool) {
 | 
				
			||||||
		account := types.GenesisAccount{
 | 
							account := NewGenesisAccountI(acc)
 | 
				
			||||||
			Address: acc.GetAddress(),
 | 
					 | 
				
			||||||
			Coins:   acc.GetCoins(),
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		accounts = append(accounts, account)
 | 
							accounts = append(accounts, account)
 | 
				
			||||||
		return false
 | 
							return false
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	app.accountMapper.IterateAccounts(ctx, appendAccount)
 | 
						app.accountMapper.IterateAccounts(ctx, appendAccount)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	genState := types.GenesisState{
 | 
						genState := GenesisState{
 | 
				
			||||||
		Accounts:  accounts,
 | 
							Accounts:  accounts,
 | 
				
			||||||
 | 
							StakeData: stake.WriteGenesis(ctx, app.stakeKeeper),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	appState, err = wire.MarshalJSONIndent(app.cdc, genState)
 | 
						appState, err = wire.MarshalJSONIndent(app.cdc, genState)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, nil, err
 | 
							return nil, nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						validators = stake.WriteValidators(ctx, app.stakeKeeper)
 | 
				
			||||||
	validators = make([]tmtypes.GenesisValidator, 0) // TODO export the actual validators
 | 
						return appState, validators, nil
 | 
				
			||||||
 | 
					 | 
				
			||||||
	return appState, validators, err
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -4,20 +4,220 @@ import (
 | 
				
			|||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//"github.com/spf13/pflag"
 | 
						"github.com/spf13/pflag"
 | 
				
			||||||
	//"github.com/spf13/viper"
 | 
						"github.com/tendermint/tendermint/crypto"
 | 
				
			||||||
	crypto "github.com/tendermint/go-crypto"
 | 
					 | 
				
			||||||
	tmtypes "github.com/tendermint/tendermint/types"
 | 
						tmtypes "github.com/tendermint/tendermint/types"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/server"
 | 
						"github.com/cosmos/cosmos-sdk/server"
 | 
				
			||||||
 | 
						"github.com/cosmos/cosmos-sdk/server/config"
 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/wire"
 | 
						"github.com/cosmos/cosmos-sdk/wire"
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/x/auth"
 | 
						"github.com/cosmos/cosmos-sdk/x/auth"
 | 
				
			||||||
	//"github.com/cosmos/cosmos-sdk/x/stake"
 | 
						"github.com/cosmos/cosmos-sdk/x/stake"
 | 
				
			||||||
 | 
					 | 
				
			||||||
	"github.com/kava-labs/kava/internal/types"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						// Tokens given to genesis validators and accounts
 | 
				
			||||||
 | 
						numStartingTokensValidators = int64(1000)
 | 
				
			||||||
 | 
						numStartingTokensAccounts   = int64(99000)
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Initial app state to be written to (and read from) genesis file
 | 
				
			||||||
 | 
					type GenesisState struct {
 | 
				
			||||||
 | 
						Accounts  []GenesisAccount   `json:"accounts"`
 | 
				
			||||||
 | 
						StakeData stake.GenesisState `json:"stake"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// A simplified version of a normal account. It doesn't have pubkey or sequence.
 | 
				
			||||||
 | 
					type GenesisAccount struct {
 | 
				
			||||||
 | 
						Address sdk.AccAddress `json:"address"`
 | 
				
			||||||
 | 
						Coins   sdk.Coins      `json:"coins"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TODO remove?
 | 
				
			||||||
 | 
					func NewGenesisAccount(acc *auth.BaseAccount) GenesisAccount {
 | 
				
			||||||
 | 
						return GenesisAccount{
 | 
				
			||||||
 | 
							Address: acc.Address,
 | 
				
			||||||
 | 
							Coins:   acc.Coins,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TODO remove?
 | 
				
			||||||
 | 
					func NewGenesisAccountI(acc auth.Account) GenesisAccount {
 | 
				
			||||||
 | 
						return GenesisAccount{
 | 
				
			||||||
 | 
							Address: acc.GetAddress(),
 | 
				
			||||||
 | 
							Coins:   acc.GetCoins(),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Converts a GenesisAccount to auth.BaseAccount TODO rename
 | 
				
			||||||
 | 
					func (ga *GenesisAccount) ToAccount() (acc *auth.BaseAccount) {
 | 
				
			||||||
 | 
						return &auth.BaseAccount{
 | 
				
			||||||
 | 
							Address: ga.Address,
 | 
				
			||||||
 | 
							Coins:   ga.Coins.Sort(),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Create the appInit stuct for server init command
 | 
				
			||||||
 | 
					func KavaAppInit() server.AppInit {
 | 
				
			||||||
 | 
						fsAppGenState := pflag.NewFlagSet("", pflag.ContinueOnError)
 | 
				
			||||||
 | 
						fsAppGenTx := pflag.NewFlagSet("", pflag.ContinueOnError)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fsAppGenTx.String(server.FlagName, "", "validator moniker, required")
 | 
				
			||||||
 | 
						fsAppGenTx.String(server.FlagClientHome, DefaultCLIHome,
 | 
				
			||||||
 | 
							"home directory for the client, used for key generation")
 | 
				
			||||||
 | 
						fsAppGenTx.Bool(server.FlagOWK, false, "overwrite the accounts created")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return server.AppInit{
 | 
				
			||||||
 | 
							FlagsAppGenState: fsAppGenState,
 | 
				
			||||||
 | 
							FlagsAppGenTx:    fsAppGenTx,
 | 
				
			||||||
 | 
							AppGenTx:         KavaAppGenTx,
 | 
				
			||||||
 | 
							AppGenState:      KavaAppGenStateJSON,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Define format for GenTx json
 | 
				
			||||||
 | 
					type KavaGenTx struct {
 | 
				
			||||||
 | 
						Name    string         `json:"name"`
 | 
				
			||||||
 | 
						Address sdk.AccAddress `json:"address"`
 | 
				
			||||||
 | 
						PubKey  string         `json:"pub_key"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Generate a genesis transsction
 | 
				
			||||||
 | 
					func KavaAppGenTx(cdc *wire.Codec, pk crypto.PubKey, genTxConfig config.GenTx) (
 | 
				
			||||||
 | 
						appGenTx, cliPrint json.RawMessage, validator tmtypes.GenesisValidator, err error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Generate address and secret key for the validator
 | 
				
			||||||
 | 
						if genTxConfig.Name == "" {
 | 
				
			||||||
 | 
							return nil, nil, tmtypes.GenesisValidator{}, errors.New("Must specify --name (validator moniker)")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var addr sdk.AccAddress
 | 
				
			||||||
 | 
						var secret string
 | 
				
			||||||
 | 
						addr, secret, err = server.GenerateSaveCoinKey(genTxConfig.CliRoot, genTxConfig.Name, "password", genTxConfig.Overwrite)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create string to print out
 | 
				
			||||||
 | 
						mm := map[string]string{"secret": secret}
 | 
				
			||||||
 | 
						var bz []byte
 | 
				
			||||||
 | 
						bz, err = cdc.MarshalJSON(mm)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						cliPrint = json.RawMessage(bz)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create genTx and validator
 | 
				
			||||||
 | 
						appGenTx, _, validator, err = KavaAppGenTxNF(cdc, pk, addr, genTxConfig.Name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TODO combine with KavaAppGenTx
 | 
				
			||||||
 | 
					func KavaAppGenTxNF(cdc *wire.Codec, pk crypto.PubKey, addr sdk.AccAddress, name string) (
 | 
				
			||||||
 | 
						appGenTx, cliPrint json.RawMessage, validator tmtypes.GenesisValidator, err error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create the gentx
 | 
				
			||||||
 | 
						var bz []byte
 | 
				
			||||||
 | 
						genTx := KavaGenTx{
 | 
				
			||||||
 | 
							Name:    name,
 | 
				
			||||||
 | 
							Address: addr,
 | 
				
			||||||
 | 
							PubKey:  sdk.MustBech32ifyAccPub(pk),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						bz, err = wire.MarshalJSONIndent(cdc, genTx)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						appGenTx = json.RawMessage(bz)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Create the validator
 | 
				
			||||||
 | 
						validator = tmtypes.GenesisValidator{
 | 
				
			||||||
 | 
							PubKey: pk,
 | 
				
			||||||
 | 
							Power:  numStartingTokensValidators,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Create the core parameters for genesis initialization
 | 
				
			||||||
 | 
					// note that the pubkey input is this machines pubkey
 | 
				
			||||||
 | 
					func KavaAppGenState(cdc *wire.Codec, appGenTxs []json.RawMessage) (genesisState GenesisState, err error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if len(appGenTxs) == 0 {
 | 
				
			||||||
 | 
							err = errors.New("must provide at least 1 genesis transaction")
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// start with the default staking genesis state
 | 
				
			||||||
 | 
						stakeData := stake.DefaultGenesisState()
 | 
				
			||||||
 | 
						// change denom of staking coin
 | 
				
			||||||
 | 
						stakeData.Params.BondDenom = "KVA"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// get genesis flag account information
 | 
				
			||||||
 | 
						genaccs := make([]GenesisAccount, len(appGenTxs))
 | 
				
			||||||
 | 
						for i, appGenTx := range appGenTxs {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var genTx KavaGenTx
 | 
				
			||||||
 | 
							err = cdc.UnmarshalJSON(appGenTx, &genTx)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// create the genesis account
 | 
				
			||||||
 | 
							accAuth := auth.NewBaseAccountWithAddress(genTx.Address)
 | 
				
			||||||
 | 
							accAuth.Coins = sdk.Coins{
 | 
				
			||||||
 | 
								{"KVA", sdk.NewInt(numStartingTokensAccounts)},
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							acc := NewGenesisAccount(&accAuth)
 | 
				
			||||||
 | 
							genaccs[i] = acc
 | 
				
			||||||
 | 
							stakeData.Pool.LooseTokens = stakeData.Pool.LooseTokens.Add(sdk.NewRat(numStartingTokensAccounts)) // increase the supply
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// add the validator
 | 
				
			||||||
 | 
							if len(genTx.Name) > 0 {
 | 
				
			||||||
 | 
								desc := stake.NewDescription(genTx.Name, "", "", "")
 | 
				
			||||||
 | 
								validator := stake.NewValidator(genTx.Address,
 | 
				
			||||||
 | 
									sdk.MustGetAccPubKeyBech32(genTx.PubKey), desc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								stakeData.Pool.LooseTokens = stakeData.Pool.LooseTokens.Add(sdk.NewRat(numStartingTokensValidators)) // increase the supply
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// add some new shares to the validator
 | 
				
			||||||
 | 
								var issuedDelShares sdk.Rat
 | 
				
			||||||
 | 
								validator, stakeData.Pool, issuedDelShares = validator.AddTokensFromDel(stakeData.Pool, numStartingTokensValidators)
 | 
				
			||||||
 | 
								stakeData.Validators = append(stakeData.Validators, validator)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// create the self-delegation from the issuedDelShares
 | 
				
			||||||
 | 
								delegation := stake.Delegation{
 | 
				
			||||||
 | 
									DelegatorAddr: validator.Owner,
 | 
				
			||||||
 | 
									ValidatorAddr: validator.Owner,
 | 
				
			||||||
 | 
									Shares:        issuedDelShares,
 | 
				
			||||||
 | 
									Height:        0,
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								stakeData.Bonds = append(stakeData.Bonds, delegation)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// create the final app state
 | 
				
			||||||
 | 
						genesisState = GenesisState{
 | 
				
			||||||
 | 
							Accounts:  genaccs,
 | 
				
			||||||
 | 
							StakeData: stakeData,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Run KavaAppGenState then convert to JSON
 | 
				
			||||||
 | 
					func KavaAppGenStateJSON(cdc *wire.Codec, appGenTxs []json.RawMessage) (appState json.RawMessage, err error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// create the final app state
 | 
				
			||||||
 | 
						genesisState, err := KavaAppGenState(cdc, appGenTxs)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						appState, err = wire.MarshalJSONIndent(cdc, genesisState)
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A file, genesis.json, is created with the initial state of the kava network.
 | 
					// A file, genesis.json, is created with the initial state of the kava network.
 | 
				
			||||||
// This is done by creating an AppInit object to be handed to the server when it creates commands.
 | 
					// This is done by creating an AppInit object to be handed to the server when it creates commands.
 | 
				
			||||||
// When `kvd init` is run, a genesis tx is created. Then, from that, an initial app state.
 | 
					// When `kvd init` is run, a genesis tx is created. Then, from that, an initial app state.
 | 
				
			||||||
@ -29,11 +229,11 @@ func CreateAppInit() server.AppInit {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func KavaAppGenTx(cdc *wire.Codec, pk crypto.PubKey) (
 | 
					func KavaAppGenTx(cdc *wire.Codec, pk crypto.PubKey, genTxConfig config.GenTx) (
 | 
				
			||||||
	appGenTx, cliPrint json.RawMessage, validator tmtypes.GenesisValidator, err error) {
 | 
						appGenTx, cliPrint json.RawMessage, validator tmtypes.GenesisValidator, err error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Generate address and secret key for the validator
 | 
						// Generate address and secret key for the validator
 | 
				
			||||||
	var addr sdk.Address
 | 
						var addr sdk.AccAddress
 | 
				
			||||||
	var secret string
 | 
						var secret string
 | 
				
			||||||
	addr, secret, err = server.GenerateCoinKey()
 | 
						addr, secret, err = server.GenerateCoinKey()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@ -103,204 +303,4 @@ func KavaAppGenState(cdc *wire.Codec, appGenTxs []json.RawMessage) (appState jso
 | 
				
			|||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// --------------------- default init --------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// simple default application init
 | 
					 | 
				
			||||||
var DefaultAppInit = AppInit{
 | 
					 | 
				
			||||||
	AppGenTx:    SimpleAppGenTx,
 | 
					 | 
				
			||||||
	AppGenState: SimpleAppGenState,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// simple genesis tx
 | 
					 | 
				
			||||||
type SimpleGenTx struct {
 | 
					 | 
				
			||||||
	Addr sdk.Address `json:"addr"`
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Generate a genesis transaction
 | 
					 | 
				
			||||||
func SimpleAppGenTx(cdc *wire.Codec, pk crypto.PubKey) (
 | 
					 | 
				
			||||||
	appGenTx, cliPrint json.RawMessage, validator tmtypes.GenesisValidator, err error) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var addr sdk.Address
 | 
					 | 
				
			||||||
	var secret string
 | 
					 | 
				
			||||||
	addr, secret, err = GenerateCoinKey()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var bz []byte
 | 
					 | 
				
			||||||
	simpleGenTx := SimpleGenTx{addr}
 | 
					 | 
				
			||||||
	bz, err = cdc.MarshalJSON(simpleGenTx)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	appGenTx = json.RawMessage(bz)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	mm := map[string]string{"secret": secret}
 | 
					 | 
				
			||||||
	bz, err = cdc.MarshalJSON(mm)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	cliPrint = json.RawMessage(bz)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	validator = tmtypes.GenesisValidator{
 | 
					 | 
				
			||||||
		PubKey: pk,
 | 
					 | 
				
			||||||
		Power:  10,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// create the genesis app state
 | 
					 | 
				
			||||||
func SimpleAppGenState(cdc *wire.Codec, appGenTxs []json.RawMessage) (appState json.RawMessage, err error) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if len(appGenTxs) != 1 {
 | 
					 | 
				
			||||||
		err = errors.New("must provide a single genesis transaction")
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var genTx SimpleGenTx
 | 
					 | 
				
			||||||
	err = cdc.UnmarshalJSON(appGenTxs[0], &genTx)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	appState = json.RawMessage(fmt.Sprintf(`{
 | 
					 | 
				
			||||||
  "accounts": [{
 | 
					 | 
				
			||||||
    "address": "%s",
 | 
					 | 
				
			||||||
    "coins": [
 | 
					 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
        "denom": "mycoin",
 | 
					 | 
				
			||||||
        "amount": 9007199254740992
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    ]
 | 
					 | 
				
			||||||
  }]
 | 
					 | 
				
			||||||
}`, genTx.Addr.String()))
 | 
					 | 
				
			||||||
	return
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// -------------------- gaia init ----------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// simple genesis tx
 | 
					 | 
				
			||||||
type GaiaGenTx struct {
 | 
					 | 
				
			||||||
	Name    string        `json:"name"`
 | 
					 | 
				
			||||||
	Address sdk.Address   `json:"address"`
 | 
					 | 
				
			||||||
	PubKey  crypto.PubKey `json:"pub_key"`
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Generate a gaia genesis transaction with flags
 | 
					 | 
				
			||||||
func GaiaAppGenTx(cdc *wire.Codec, pk crypto.PubKey) (
 | 
					 | 
				
			||||||
	appGenTx, cliPrint json.RawMessage, validator tmtypes.GenesisValidator, err error) {
 | 
					 | 
				
			||||||
	clientRoot := viper.GetString(flagClientHome)
 | 
					 | 
				
			||||||
	overwrite := viper.GetBool(flagOWK)
 | 
					 | 
				
			||||||
	name := viper.GetString(flagName)
 | 
					 | 
				
			||||||
	if name == "" {
 | 
					 | 
				
			||||||
		return nil, nil, tmtypes.GenesisValidator{}, errors.New("Must specify --name (validator moniker)")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var addr sdk.Address
 | 
					 | 
				
			||||||
	var secret string
 | 
					 | 
				
			||||||
	addr, secret, err = server.GenerateSaveCoinKey(clientRoot, name, "1234567890", overwrite)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	mm := map[string]string{"secret": secret}
 | 
					 | 
				
			||||||
	var bz []byte
 | 
					 | 
				
			||||||
	bz, err = cdc.MarshalJSON(mm)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	cliPrint = json.RawMessage(bz)
 | 
					 | 
				
			||||||
	appGenTx,_,validator,err = GaiaAppGenTxNF(cdc, pk, addr, name, overwrite)
 | 
					 | 
				
			||||||
	return
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Generate a gaia genesis transaction without flags
 | 
					 | 
				
			||||||
func GaiaAppGenTxNF(cdc *wire.Codec, pk crypto.PubKey, addr sdk.Address, name string, overwrite bool) (
 | 
					 | 
				
			||||||
	appGenTx, cliPrint json.RawMessage, validator tmtypes.GenesisValidator, err error) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var bz []byte
 | 
					 | 
				
			||||||
	gaiaGenTx := GaiaGenTx{
 | 
					 | 
				
			||||||
		Name:    name,
 | 
					 | 
				
			||||||
		Address: addr,
 | 
					 | 
				
			||||||
		PubKey:  pk,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	bz, err = wire.MarshalJSONIndent(cdc, gaiaGenTx)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	appGenTx = json.RawMessage(bz)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	validator = tmtypes.GenesisValidator{
 | 
					 | 
				
			||||||
		PubKey: pk,
 | 
					 | 
				
			||||||
		Power:  freeFermionVal,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Create the core parameters for genesis initialization for gaia
 | 
					 | 
				
			||||||
// note that the pubkey input is this machines pubkey
 | 
					 | 
				
			||||||
func GaiaAppGenState(cdc *wire.Codec, appGenTxs []json.RawMessage) (genesisState GenesisState, err error) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if len(appGenTxs) == 0 {
 | 
					 | 
				
			||||||
		err = errors.New("must provide at least genesis transaction")
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// start with the default staking genesis state
 | 
					 | 
				
			||||||
	stakeData := stake.DefaultGenesisState()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// get genesis flag account information
 | 
					 | 
				
			||||||
	genaccs := make([]GenesisAccount, len(appGenTxs))
 | 
					 | 
				
			||||||
	for i, appGenTx := range appGenTxs {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		var genTx GaiaGenTx
 | 
					 | 
				
			||||||
		err = cdc.UnmarshalJSON(appGenTx, &genTx)
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// create the genesis account, give'm few steaks and a buncha token with there name
 | 
					 | 
				
			||||||
		accAuth := auth.NewBaseAccountWithAddress(genTx.Address)
 | 
					 | 
				
			||||||
		accAuth.Coins = sdk.Coins{
 | 
					 | 
				
			||||||
			{genTx.Name + "Token", 1000},
 | 
					 | 
				
			||||||
			{"steak", freeFermionsAcc},
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		acc := NewGenesisAccount(&accAuth)
 | 
					 | 
				
			||||||
		genaccs[i] = acc
 | 
					 | 
				
			||||||
		stakeData.Pool.LooseUnbondedTokens += freeFermionsAcc // increase the supply
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// add the validator
 | 
					 | 
				
			||||||
		if len(genTx.Name) > 0 {
 | 
					 | 
				
			||||||
			desc := stake.NewDescription(genTx.Name, "", "", "")
 | 
					 | 
				
			||||||
			validator := stake.NewValidator(genTx.Address, genTx.PubKey, desc)
 | 
					 | 
				
			||||||
			validator.PoolShares = stake.NewBondedShares(sdk.NewRat(freeFermionVal))
 | 
					 | 
				
			||||||
			stakeData.Validators = append(stakeData.Validators, validator)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			// pool logic
 | 
					 | 
				
			||||||
			stakeData.Pool.BondedTokens += freeFermionVal
 | 
					 | 
				
			||||||
			stakeData.Pool.BondedShares = sdk.NewRat(stakeData.Pool.BondedTokens)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// create the final app state
 | 
					 | 
				
			||||||
	genesisState = GenesisState{
 | 
					 | 
				
			||||||
		Accounts:  genaccs,
 | 
					 | 
				
			||||||
		StakeData: stakeData,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// GaiaAppGenState but with JSON
 | 
					 | 
				
			||||||
func GaiaAppGenStateJSON(cdc *wire.Codec, appGenTxs []json.RawMessage) (appState json.RawMessage, err error) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// create the final app state
 | 
					 | 
				
			||||||
	genesisState, err := GaiaAppGenState(cdc, appGenTxs)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	appState, err = wire.MarshalJSONIndent(cdc, genesisState)
 | 
					 | 
				
			||||||
	return
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
package lcd
 | 
					package lcd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	//"encoding/hex"
 | 
						//"encoding/hex"
 | 
				
			||||||
@ -10,6 +11,7 @@ import (
 | 
				
			|||||||
	"github.com/cosmos/cosmos-sdk/wire"
 | 
						"github.com/cosmos/cosmos-sdk/wire"
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/x/auth"
 | 
						"github.com/cosmos/cosmos-sdk/x/auth"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type TxBody struct {
 | 
					type TxBody struct {
 | 
				
			||||||
	TxBase64 string `json:"txbase64"`
 | 
						TxBase64 string `json:"txbase64"`
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
package lcd
 | 
					package lcd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
@ -24,6 +25,7 @@ import (
 | 
				
			|||||||
	//ibc "github.com/cosmos/cosmos-sdk/x/ibc/client/rest"
 | 
						//ibc "github.com/cosmos/cosmos-sdk/x/ibc/client/rest"
 | 
				
			||||||
	//stake "github.com/cosmos/cosmos-sdk/x/stake/client/rest"
 | 
						//stake "github.com/cosmos/cosmos-sdk/x/stake/client/rest"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ServeCommand will generate a long-running rest server
 | 
					// ServeCommand will generate a long-running rest server
 | 
				
			||||||
// (aka Light Client Daemon) that exposes functionality similar
 | 
					// (aka Light Client Daemon) that exposes functionality similar
 | 
				
			||||||
 | 
				
			|||||||
@ -1,9 +1,11 @@
 | 
				
			|||||||
package lcd
 | 
					package lcd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	amino "github.com/tendermint/go-amino"
 | 
						amino "github.com/tendermint/go-amino"
 | 
				
			||||||
	ctypes "github.com/tendermint/tendermint/rpc/core/types"
 | 
						ctypes "github.com/tendermint/tendermint/rpc/core/types"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var cdc = amino.NewCodec()
 | 
					var cdc = amino.NewCodec()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,8 @@
 | 
				
			|||||||
package types
 | 
					package types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DEPRECATED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
	crypto "github.com/tendermint/go-crypto"
 | 
						crypto "github.com/tendermint/go-crypto"
 | 
				
			||||||
@ -41,7 +44,7 @@ func GetAccountDecoder(cdc *wire.Codec) auth.AccountDecoder {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
//___________________________________________________________________________________
 | 
					//___________________________________________________________________________________
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
type GenTx struct {
 | 
					type GenTx struct {
 | 
				
			||||||
	Address sdk.Address   `json:"address"`
 | 
						Address sdk.Address   `json:"address"`
 | 
				
			||||||
	PubKey  crypto.PubKey `json:"pub_key"`
 | 
						PubKey  crypto.PubKey `json:"pub_key"`
 | 
				
			||||||
@ -75,3 +78,4 @@ func (ga *GenesisAccount) ToAppAccount() (acc *auth.BaseAccount, err error) {
 | 
				
			|||||||
		Coins:   ga.Coins.Sort(),
 | 
							Coins:   ga.Coins.Sort(),
 | 
				
			||||||
	}, nil
 | 
						}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										44
									
								
								kava-logo.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								kava-logo.svg
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 | 
				
			||||||
 | 
					<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
 | 
				
			||||||
 | 
					<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 | 
				
			||||||
 | 
						 width="725px" height="213px" viewBox="0 0 725 213" enable-background="new 0 0 725 213" xml:space="preserve">
 | 
				
			||||||
 | 
					<g>
 | 
				
			||||||
 | 
						<g opacity="0.2">
 | 
				
			||||||
 | 
							<polygon fill="#FF564F" points="30,213 111.625,106.851 30,0 20.246,38.336 72.809,106.851 22.664,171.296 		"/>
 | 
				
			||||||
 | 
						</g>
 | 
				
			||||||
 | 
						<g>
 | 
				
			||||||
 | 
							<polygon fill="#FF564F" points="154.344,213 72.211,106.851 154.125,0 193,0 111.027,106.851 193.625,213 		"/>
 | 
				
			||||||
 | 
						</g>
 | 
				
			||||||
 | 
						<g>
 | 
				
			||||||
 | 
							<rect fill="#FF564F" width="30" height="213"/>
 | 
				
			||||||
 | 
						</g>
 | 
				
			||||||
 | 
						<g>
 | 
				
			||||||
 | 
							<path fill="#FF564F" d="M288.04,39.144c-12.1,0-23.001,1.318-32.403,3.917c-9.313,2.58-18.633,6.056-27.701,10.332l-2.473,1.167
 | 
				
			||||||
 | 
								l9.252,25.495l2.977-1.405c7.314-3.451,14.881-6.231,22.489-8.262c7.549-2.01,16.08-3.028,25.355-3.028
 | 
				
			||||||
 | 
								c14.401,0,25.424,3.462,33.168,10.29C326.336,84.381,330,94.554,330,107.887v1.038c-6-1.637-12.337-2.99-18.681-4.032
 | 
				
			||||||
 | 
								c-7.742-1.272-16.909-1.918-27.45-1.918c-10.432,0-20.067,1.193-28.741,3.548c-8.765,2.384-16.429,5.904-22.829,10.463
 | 
				
			||||||
 | 
								c-6.528,4.646-11.531,10.538-15.07,17.512c-3.538,6.964-5.23,15.158-5.23,24.357v0.626c0,8.815,1.772,16.671,5.445,23.348
 | 
				
			||||||
 | 
								c3.632,6.604,8.441,12.239,14.38,16.745c5.909,4.489,12.749,7.867,20.369,10.039c7.543,2.152,15.284,3.244,23.028,3.244
 | 
				
			||||||
 | 
								c14.647,0,26.893-2.927,36.813-8.698c7.052-4.105,12.965-8.749,17.965-13.859V213h30V107.539c0-21.171-5.885-37.887-17.68-49.682
 | 
				
			||||||
 | 
								C329.902,45.439,311.703,39.144,288.04,39.144z M280.081,187.145c-5.101,0-10.005-0.691-14.581-2.057
 | 
				
			||||||
 | 
								c-4.535-1.347-8.585-3.293-12.042-5.786c-3.356-2.419-5.818-5.483-7.772-9.111c-1.935-3.584-2.686-7.661-2.686-12.118v-0.626
 | 
				
			||||||
 | 
								c0-8.815,3.391-15.708,10.839-21.071c7.658-5.517,18.654-8.313,32.907-8.313c9.735,0,18.548,0.716,26.031,2.128
 | 
				
			||||||
 | 
								c6.664,1.263,12.223,2.613,18.223,4.023v12.649c0,5.912-1.437,11.356-3.999,16.185c-2.594,4.894-6.277,9.184-10.81,12.751
 | 
				
			||||||
 | 
								c-4.585,3.604-10.025,6.423-16.101,8.377C293.978,186.146,287.223,187.145,280.081,187.145z"/>
 | 
				
			||||||
 | 
							<polygon fill="#FF564F" points="473.281,171.271 420.85,42 387.678,42 461.364,213 484.532,213 558.564,42 526.015,42 		"/>
 | 
				
			||||||
 | 
							<path fill="#FF564F" d="M707.237,57.857c-12.418-12.418-30.707-18.714-54.369-18.714c-12.1,0-22.999,1.318-32.4,3.917
 | 
				
			||||||
 | 
								c-9.313,2.58-18.631,6.056-27.7,10.332l-2.472,1.167l9.252,25.495l2.978-1.405c7.314-3.451,14.881-6.231,22.489-8.262
 | 
				
			||||||
 | 
								c7.549-2.01,16.08-3.028,25.355-3.028c14.401,0,25.507,3.462,33.251,10.29C691.253,84.381,695,94.554,695,107.887v1.038
 | 
				
			||||||
 | 
								c-6-1.637-12.42-2.99-18.764-4.032c-7.742-1.272-16.951-1.918-27.491-1.918c-10.432,0-20.088,1.193-28.762,3.548
 | 
				
			||||||
 | 
								c-8.765,2.384-16.439,5.904-22.839,10.463c-6.528,4.646-11.453,10.538-14.992,17.512c-3.538,6.964-5.152,15.158-5.152,24.357
 | 
				
			||||||
 | 
								v0.626c0,8.815,1.689,16.671,5.362,23.348c3.632,6.604,8.399,12.239,14.339,16.745c5.909,4.489,12.728,7.867,20.348,10.039
 | 
				
			||||||
 | 
								c7.543,2.152,15.273,3.244,23.017,3.244c14.647,0,26.971-2.927,36.891-8.698c7.052-4.105,13.043-8.749,18.043-13.859V213h30
 | 
				
			||||||
 | 
								V107.539C725,86.368,719.032,69.652,707.237,57.857z M644.915,187.145c-5.101,0-10.005-0.691-14.581-2.057
 | 
				
			||||||
 | 
								c-4.535-1.347-8.585-3.293-12.042-5.786c-3.356-2.419-6.235-5.483-8.189-9.111c-1.935-3.584-3.103-7.661-3.103-12.118v-0.626
 | 
				
			||||||
 | 
								c0-8.815,3.808-15.708,11.256-21.071c7.658-5.517,18.862-8.313,33.116-8.313c9.735,0,18.735,0.716,26.218,2.128
 | 
				
			||||||
 | 
								c6.664,1.263,12.41,2.613,18.41,4.023v12.649c0,5.912-1.52,11.356-4.082,16.185c-2.594,4.894-6.318,9.184-10.852,12.751
 | 
				
			||||||
 | 
								c-4.585,3.604-10.046,6.423-16.122,8.377C658.833,186.146,652.057,187.145,644.915,187.145z"/>
 | 
				
			||||||
 | 
						</g>
 | 
				
			||||||
 | 
					</g>
 | 
				
			||||||
 | 
					</svg>
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 3.7 KiB  | 
							
								
								
									
										99
									
								
								testnets/kava-test-0/genesis.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								testnets/kava-test-0/genesis.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "genesis_time": "2018-08-16T20:19:19.700191483Z",
 | 
				
			||||||
 | 
					  "chain_id": "kava-test-0",
 | 
				
			||||||
 | 
					  "consensus_params": {
 | 
				
			||||||
 | 
					    "block_size_params": {
 | 
				
			||||||
 | 
					      "max_bytes": "22020096",
 | 
				
			||||||
 | 
					      "max_txs": "10000",
 | 
				
			||||||
 | 
					      "max_gas": "-1"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "tx_size_params": {
 | 
				
			||||||
 | 
					      "max_bytes": "10240",
 | 
				
			||||||
 | 
					      "max_gas": "-1"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "block_gossip_params": {
 | 
				
			||||||
 | 
					      "block_part_size_bytes": "65536"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "evidence_params": {
 | 
				
			||||||
 | 
					      "max_age": "100000"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "validators": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "pub_key": {
 | 
				
			||||||
 | 
					        "type": "tendermint/PubKeyEd25519",
 | 
				
			||||||
 | 
					        "value": "dnl/bkhWxCMuq5ia4AWwU4r2HRl+MJjU4bSS0qsmI/0="
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "power": "500000",
 | 
				
			||||||
 | 
					      "name": ""
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "app_hash": "",
 | 
				
			||||||
 | 
					  "app_state": {
 | 
				
			||||||
 | 
					    "accounts": [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "address": "cosmosaccaddr10fa3g29glhkekp6nhsqq4njwrpv69kl9zt4a7q",
 | 
				
			||||||
 | 
					        "coins": [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "denom": "KVA",
 | 
				
			||||||
 | 
					            "amount": "500000"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "stake": {
 | 
				
			||||||
 | 
					      "pool": {
 | 
				
			||||||
 | 
					        "loose_tokens": "1000000",
 | 
				
			||||||
 | 
					        "bonded_tokens": "0",
 | 
				
			||||||
 | 
					        "inflation_last_time": "0",
 | 
				
			||||||
 | 
					        "inflation": "7/100",
 | 
				
			||||||
 | 
					        "date_last_commission_reset": "0",
 | 
				
			||||||
 | 
					        "prev_bonded_shares": "0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "params": {
 | 
				
			||||||
 | 
					        "inflation_rate_change": "13/100",
 | 
				
			||||||
 | 
					        "inflation_max": "1/5",
 | 
				
			||||||
 | 
					        "inflation_min": "7/100",
 | 
				
			||||||
 | 
					        "goal_bonded": "67/100",
 | 
				
			||||||
 | 
					        "unbonding_time": "259200",
 | 
				
			||||||
 | 
					        "max_validators": 100,
 | 
				
			||||||
 | 
					        "bond_denom": "KVA"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "validators": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "owner": "cosmosaccaddr10fa3g29glhkekp6nhsqq4njwrpv69kl9zt4a7q",
 | 
				
			||||||
 | 
					          "pub_key": {
 | 
				
			||||||
 | 
					            "type": "tendermint/PubKeyEd25519",
 | 
				
			||||||
 | 
					            "value": "dnl/bkhWxCMuq5ia4AWwU4r2HRl+MJjU4bSS0qsmI/0="
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "revoked": false,
 | 
				
			||||||
 | 
					          "status": 0,
 | 
				
			||||||
 | 
					          "tokens": "500000",
 | 
				
			||||||
 | 
					          "delegator_shares": "500000",
 | 
				
			||||||
 | 
					          "description": {
 | 
				
			||||||
 | 
					            "moniker": "kava-validator",
 | 
				
			||||||
 | 
					            "identity": "",
 | 
				
			||||||
 | 
					            "website": "",
 | 
				
			||||||
 | 
					            "details": ""
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "bond_height": "0",
 | 
				
			||||||
 | 
					          "bond_intra_tx_counter": 0,
 | 
				
			||||||
 | 
					          "proposer_reward_pool": [],
 | 
				
			||||||
 | 
					          "commission": "0",
 | 
				
			||||||
 | 
					          "commission_max": "0",
 | 
				
			||||||
 | 
					          "commission_change_rate": "0",
 | 
				
			||||||
 | 
					          "commission_change_today": "0",
 | 
				
			||||||
 | 
					          "prev_bonded_tokens": "0"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "bonds": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "delegator_addr": "cosmosaccaddr10fa3g29glhkekp6nhsqq4njwrpv69kl9zt4a7q",
 | 
				
			||||||
 | 
					          "validator_addr": "cosmosaccaddr10fa3g29glhkekp6nhsqq4njwrpv69kl9zt4a7q",
 | 
				
			||||||
 | 
					          "shares": "500000",
 | 
				
			||||||
 | 
					          "height": "0"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										99
									
								
								testnets/kava-test-1/genesis.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								testnets/kava-test-1/genesis.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "genesis_time": "2018-08-17T20:36:46.515426797Z",
 | 
				
			||||||
 | 
					  "chain_id": "kava-test-1",
 | 
				
			||||||
 | 
					  "consensus_params": {
 | 
				
			||||||
 | 
					    "block_size_params": {
 | 
				
			||||||
 | 
					      "max_bytes": "22020096",
 | 
				
			||||||
 | 
					      "max_txs": "10000",
 | 
				
			||||||
 | 
					      "max_gas": "-1"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "tx_size_params": {
 | 
				
			||||||
 | 
					      "max_bytes": "10240",
 | 
				
			||||||
 | 
					      "max_gas": "-1"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "block_gossip_params": {
 | 
				
			||||||
 | 
					      "block_part_size_bytes": "65536"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "evidence_params": {
 | 
				
			||||||
 | 
					      "max_age": "100000"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "validators": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "pub_key": {
 | 
				
			||||||
 | 
					        "type": "tendermint/PubKeyEd25519",
 | 
				
			||||||
 | 
					        "value": "2XxN3kL5CWNyI9x4o3+iG//R+BVyTwmhx0ZVNGQOAjo="
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "power": "1000",
 | 
				
			||||||
 | 
					      "name": ""
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "app_hash": "",
 | 
				
			||||||
 | 
					  "app_state": {
 | 
				
			||||||
 | 
					    "accounts": [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "address": "cosmosaccaddr1fr2eescsy22uw93x9df2dernrd6llyar66e4gy",
 | 
				
			||||||
 | 
					        "coins": [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "denom": "KVA",
 | 
				
			||||||
 | 
					            "amount": "99000"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    "stake": {
 | 
				
			||||||
 | 
					      "pool": {
 | 
				
			||||||
 | 
					        "loose_tokens": "100000",
 | 
				
			||||||
 | 
					        "bonded_tokens": "0",
 | 
				
			||||||
 | 
					        "inflation_last_time": "0",
 | 
				
			||||||
 | 
					        "inflation": "7/100",
 | 
				
			||||||
 | 
					        "date_last_commission_reset": "0",
 | 
				
			||||||
 | 
					        "prev_bonded_shares": "0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "params": {
 | 
				
			||||||
 | 
					        "inflation_rate_change": "13/100",
 | 
				
			||||||
 | 
					        "inflation_max": "1/5",
 | 
				
			||||||
 | 
					        "inflation_min": "7/100",
 | 
				
			||||||
 | 
					        "goal_bonded": "67/100",
 | 
				
			||||||
 | 
					        "unbonding_time": "259200",
 | 
				
			||||||
 | 
					        "max_validators": 100,
 | 
				
			||||||
 | 
					        "bond_denom": "KVA"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "validators": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "owner": "cosmosaccaddr1fr2eescsy22uw93x9df2dernrd6llyar66e4gy",
 | 
				
			||||||
 | 
					          "pub_key": {
 | 
				
			||||||
 | 
					            "type": "tendermint/PubKeyEd25519",
 | 
				
			||||||
 | 
					            "value": "2XxN3kL5CWNyI9x4o3+iG//R+BVyTwmhx0ZVNGQOAjo="
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "revoked": false,
 | 
				
			||||||
 | 
					          "status": 0,
 | 
				
			||||||
 | 
					          "tokens": "1000",
 | 
				
			||||||
 | 
					          "delegator_shares": "1000",
 | 
				
			||||||
 | 
					          "description": {
 | 
				
			||||||
 | 
					            "moniker": "kava-validator",
 | 
				
			||||||
 | 
					            "identity": "",
 | 
				
			||||||
 | 
					            "website": "",
 | 
				
			||||||
 | 
					            "details": ""
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "bond_height": "0",
 | 
				
			||||||
 | 
					          "bond_intra_tx_counter": 0,
 | 
				
			||||||
 | 
					          "proposer_reward_pool": [],
 | 
				
			||||||
 | 
					          "commission": "0",
 | 
				
			||||||
 | 
					          "commission_max": "0",
 | 
				
			||||||
 | 
					          "commission_change_rate": "0",
 | 
				
			||||||
 | 
					          "commission_change_today": "0",
 | 
				
			||||||
 | 
					          "prev_bonded_tokens": "0"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "bonds": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "delegator_addr": "cosmosaccaddr1fr2eescsy22uw93x9df2dernrd6llyar66e4gy",
 | 
				
			||||||
 | 
					          "validator_addr": "cosmosaccaddr1fr2eescsy22uw93x9df2dernrd6llyar66e4gy",
 | 
				
			||||||
 | 
					          "shares": "1000",
 | 
				
			||||||
 | 
					          "height": "0"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user