From 0a15c9ff9a88bf0c48f9842f6d6dca882d2b1d47 Mon Sep 17 00:00:00 2001 From: Adam Babik Date: Mon, 26 Feb 2018 19:36:04 +0100 Subject: [PATCH] Configure mainnet nodes (#701) Add mainnet static peers to static/config/staticpeers.json. --- Makefile | 2 +- cmd/statusd/main.go | 17 +- geth/params/config.go | 6 +- geth/params/config_test.go | 94 ++----- static/bindata.go | 257 ++++++++----------- static/config/{cht.json => staticpeers.json} | 20 +- 6 files changed, 155 insertions(+), 241 deletions(-) rename static/config/{cht.json => staticpeers.json} (77%) diff --git a/Makefile b/Makefile index b458e5c2e..8ce8815de 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ XGOVERSION ?= 1.9.2 XGOIMAGE = statusteam/xgo:$(XGOVERSION) XGOIMAGEIOSSIM = statusteam/xgo-ios-simulator:$(XGOVERSION) -DOCKER_IMAGE_NAME ?= status-go +DOCKER_IMAGE_NAME ?= statusteam/status-go DOCKER_TEST_WORKDIR = /go/src/github.com/status-im/status-go/ DOCKER_TEST_IMAGE = golang:1.9 diff --git a/cmd/statusd/main.go b/cmd/statusd/main.go index 25ed4ce30..e511aef83 100644 --- a/cmd/statusd/main.go +++ b/cmd/statusd/main.go @@ -156,6 +156,17 @@ func startCollectingStats(interruptCh <-chan struct{}, nodeManager common.NodeMa }() server := metrics.NewMetricsServer(*statsAddr) + defer func() { + // server may be nil if `-stats` flag is used + // but the binary is compiled without metrics enabled + if server == nil { + return + } + + if err := server.Shutdown(context.TODO()); err != nil { + log.Printf("Failed to shutdown metrics server: %v", err) + } + }() go func() { // server may be nil if `-stats` flag is used // but the binary is compiled without metrics enabled @@ -172,12 +183,6 @@ func startCollectingStats(interruptCh <-chan struct{}, nodeManager common.NodeMa }() <-interruptCh - - if server != nil { - if err := server.Shutdown(context.TODO()); err != nil { - log.Printf("Failed to shutdown metrics server: %v", err) - } - } } // makeNodeConfig parses incoming CLI options and returns node configuration object diff --git a/geth/params/config.go b/geth/params/config.go index 0bc5a8ddb..bd493dfce 100644 --- a/geth/params/config.go +++ b/geth/params/config.go @@ -543,15 +543,15 @@ func (c *NodeConfig) updateBootClusterConfig() error { Dev subClusterConfig `json:"dev"` } - chtFile, err := static.Asset("config/cht.json") + chtFile, err := static.Asset("config/staticpeers.json") if err != nil { - return fmt.Errorf("cht.json could not be loaded: %s", err) + return fmt.Errorf("staticpeers.json could not be loaded: %s", err) } var clusters []clusterConfig err = json.Unmarshal(chtFile, &clusters) if err != nil { - return fmt.Errorf("failed to unmarshal cht.json: %s", err) + return fmt.Errorf("failed to unmarshal staticpeers.json: %s", err) } for _, cluster := range clusters { diff --git a/geth/params/config_test.go b/geth/params/config_test.go index 203edb615..553a7c994 100644 --- a/geth/params/config_test.go +++ b/geth/params/config_test.go @@ -221,31 +221,26 @@ var loadConfigTestCases = []struct { "DataDir": "$TMPDIR" }`, func(t *testing.T, dataDir string, nodeConfig *params.NodeConfig, err error) { - // Bootnodes for dev and prod modes are the same so no need for a separate Ropsten Prod test. - require.NoError(t, err) require.True(t, nodeConfig.BootClusterConfig.Enabled, "boot cluster is expected to be enabled by default") enodes := nodeConfig.BootClusterConfig.BootNodes - expectedEnodes := []string{ - "enode://7ab298cedc4185a894d21d8a4615262ec6bdce66c9b6783878258e0d5b31013d30c9038932432f70e5b2b6a5cd323bf820554fcb22fbc7b45367889522e9c449@51.15.63.93:30303", - "enode://f59e8701f18c79c5cbc7618dc7bb928d44dc2f5405c7d693dad97da2d8585975942ec6fd36d3fe608bfdc7270a34a4dd00f38cfe96b2baa24f7cd0ac28d382a1@51.15.79.88:30303", - "enode://e2a3587b7b41acfc49eddea9229281905d252efba0baf565cf6276df17faf04801b7879eead757da8b5be13b05f25e775ab6d857ff264bc53a89c027a657dd10@51.15.45.114:30303", - "enode://fe991752c4ceab8b90608fbf16d89a5f7d6d1825647d4981569ebcece1b243b2000420a5db721e214231c7a6da3543fa821185c706cbd9b9be651494ec97f56a@51.15.67.119:30303", - "enode://482484b9198530ee2e00db89791823244ca41dcd372242e2e1297dd06f6d8dd357603960c5ad9cc8dc15fcdf0e4edd06b7ad7db590e67a0b54f798c26581ebd7@51.15.75.138:30303", - "enode://9e99e183b5c71d51deb16e6b42ac9c26c75cfc95fff9dfae828b871b348354cbecf196dff4dd43567b26c8241b2b979cb4ea9f8dae2d9aacf86649dafe19a39a@51.15.79.176:30303", - "enode://12d52c3796700fb5acff2c7d96df7bbb6d7109b67f3442ee3d99ac1c197016cddb4c3568bbeba05d39145c59c990cd64f76bc9b00d4b13f10095c49507dd4cf9@51.15.63.110:30303", - "enode://0f7c65277f916ff4379fe520b875082a56e587eb3ce1c1567d9ff94206bdb05ba167c52272f20f634cd1ebdec5d9dfeb393018bfde1595d8e64a717c8b46692f@51.15.54.150:30303", - "enode://e006f0b2dc98e757468b67173295519e9b6d5ff4842772acb18fd055c620727ab23766c95b8ee1008dea9e8ef61e83b1515ddb3fb56dbfb9dbf1f463552a7c9f@212.47.237.127:30303", - "enode://d40871fc3e11b2649700978e06acd68a24af54e603d4333faecb70926ca7df93baa0b7bf4e927fcad9a7c1c07f9b325b22f6d1730e728314d0e4e6523e5cebc2@51.15.132.235:30303", - "enode://ea37c9724762be7f668e15d3dc955562529ab4f01bd7951f0b3c1960b75ecba45e8c3bb3c8ebe6a7504d9a40dd99a562b13629cc8e5e12153451765f9a12a61d@163.172.189.205:30303", - "enode://88c2b24429a6f7683fbfd06874ae3f1e7c8b4a5ffb846e77c705ba02e2543789d66fc032b6606a8d8888eb6239a2abe5897ce83f78dcdcfcb027d6ea69aa6fe9@163.172.157.61:30303", - "enode://ce6854c2c77a8800fcc12600206c344b8053bb90ee3ba280e6c4f18f3141cdc5ee80bcc3bdb24cbc0e96dffd4b38d7b57546ed528c00af6cd604ab65c4d528f6@163.172.153.124:30303", - "enode://00ae60771d9815daba35766d463a82a7b360b3a80e35ab2e0daa25bdc6ca6213ff4c8348025e7e1a908a8f58411a364fe02a0fb3c2aa32008304f063d8aaf1a2@163.172.132.85:30303", - "enode://86ebc843aa51669e08e27400e435f957918e39dc540b021a2f3291ab776c88bbda3d97631639219b6e77e375ab7944222c47713bdeb3251b25779ce743a39d70@212.47.254.155:30303", - "enode://a1ef9ba5550d5fac27f7cbd4e8d20a643ad75596f307c91cd6e7f85b548b8a6bf215cca436d6ee436d6135f9fe51398f8dd4c0bd6c6a0c332ccb41880f33ec12@51.15.218.125:30303", - } - require.Equal(t, expectedEnodes, enodes) + require.True(t, len(enodes) >= 3) + }, + }, + { + `default boot cluster (Ropsten Prod)`, + `{ + "NetworkId": 3, + "DataDir": "$TMPDIR", + "DevMode": false + }`, + func(t *testing.T, dataDir string, nodeConfig *params.NodeConfig, err error) { + require.NoError(t, err) + require.True(t, nodeConfig.BootClusterConfig.Enabled, "boot cluster is expected to be enabled by default") + + enodes := nodeConfig.BootClusterConfig.BootNodes + require.True(t, len(enodes) >= 3) }, }, { @@ -262,39 +257,6 @@ var loadConfigTestCases = []struct { require.False(t, nodeConfig.BootClusterConfig.Enabled, "boot cluster is expected to be disabled") }, }, - { - `select boot cluster (Ropsten Prod)`, - `{ - "NetworkId": 3, - "DataDir": "$TMPDIR", - "DevMode": false - }`, - func(t *testing.T, dataDir string, nodeConfig *params.NodeConfig, err error) { - require.NoError(t, err) - require.True(t, nodeConfig.BootClusterConfig.Enabled, "boot cluster is expected to be enabled by default") - - enodes := nodeConfig.BootClusterConfig.BootNodes - expectedEnodes := []string{ - "enode://7ab298cedc4185a894d21d8a4615262ec6bdce66c9b6783878258e0d5b31013d30c9038932432f70e5b2b6a5cd323bf820554fcb22fbc7b45367889522e9c449@51.15.63.93:30303", - "enode://f59e8701f18c79c5cbc7618dc7bb928d44dc2f5405c7d693dad97da2d8585975942ec6fd36d3fe608bfdc7270a34a4dd00f38cfe96b2baa24f7cd0ac28d382a1@51.15.79.88:30303", - "enode://e2a3587b7b41acfc49eddea9229281905d252efba0baf565cf6276df17faf04801b7879eead757da8b5be13b05f25e775ab6d857ff264bc53a89c027a657dd10@51.15.45.114:30303", - "enode://fe991752c4ceab8b90608fbf16d89a5f7d6d1825647d4981569ebcece1b243b2000420a5db721e214231c7a6da3543fa821185c706cbd9b9be651494ec97f56a@51.15.67.119:30303", - "enode://482484b9198530ee2e00db89791823244ca41dcd372242e2e1297dd06f6d8dd357603960c5ad9cc8dc15fcdf0e4edd06b7ad7db590e67a0b54f798c26581ebd7@51.15.75.138:30303", - "enode://9e99e183b5c71d51deb16e6b42ac9c26c75cfc95fff9dfae828b871b348354cbecf196dff4dd43567b26c8241b2b979cb4ea9f8dae2d9aacf86649dafe19a39a@51.15.79.176:30303", - "enode://12d52c3796700fb5acff2c7d96df7bbb6d7109b67f3442ee3d99ac1c197016cddb4c3568bbeba05d39145c59c990cd64f76bc9b00d4b13f10095c49507dd4cf9@51.15.63.110:30303", - "enode://0f7c65277f916ff4379fe520b875082a56e587eb3ce1c1567d9ff94206bdb05ba167c52272f20f634cd1ebdec5d9dfeb393018bfde1595d8e64a717c8b46692f@51.15.54.150:30303", - "enode://e006f0b2dc98e757468b67173295519e9b6d5ff4842772acb18fd055c620727ab23766c95b8ee1008dea9e8ef61e83b1515ddb3fb56dbfb9dbf1f463552a7c9f@212.47.237.127:30303", - "enode://d40871fc3e11b2649700978e06acd68a24af54e603d4333faecb70926ca7df93baa0b7bf4e927fcad9a7c1c07f9b325b22f6d1730e728314d0e4e6523e5cebc2@51.15.132.235:30303", - "enode://ea37c9724762be7f668e15d3dc955562529ab4f01bd7951f0b3c1960b75ecba45e8c3bb3c8ebe6a7504d9a40dd99a562b13629cc8e5e12153451765f9a12a61d@163.172.189.205:30303", - "enode://88c2b24429a6f7683fbfd06874ae3f1e7c8b4a5ffb846e77c705ba02e2543789d66fc032b6606a8d8888eb6239a2abe5897ce83f78dcdcfcb027d6ea69aa6fe9@163.172.157.61:30303", - "enode://ce6854c2c77a8800fcc12600206c344b8053bb90ee3ba280e6c4f18f3141cdc5ee80bcc3bdb24cbc0e96dffd4b38d7b57546ed528c00af6cd604ab65c4d528f6@163.172.153.124:30303", - "enode://00ae60771d9815daba35766d463a82a7b360b3a80e35ab2e0daa25bdc6ca6213ff4c8348025e7e1a908a8f58411a364fe02a0fb3c2aa32008304f063d8aaf1a2@163.172.132.85:30303", - "enode://86ebc843aa51669e08e27400e435f957918e39dc540b021a2f3291ab776c88bbda3d97631639219b6e77e375ab7944222c47713bdeb3251b25779ce743a39d70@212.47.254.155:30303", - "enode://a1ef9ba5550d5fac27f7cbd4e8d20a643ad75596f307c91cd6e7f85b548b8a6bf215cca436d6ee436d6135f9fe51398f8dd4c0bd6c6a0c332ccb41880f33ec12@51.15.218.125:30303", - } - require.Equal(t, expectedEnodes, enodes) - }, - }, { `select boot cluster (Rinkeby Dev)`, `{ @@ -306,12 +268,7 @@ var loadConfigTestCases = []struct { require.True(t, nodeConfig.BootClusterConfig.Enabled, "boot cluster is expected to be enabled by default") enodes := nodeConfig.BootClusterConfig.BootNodes - expectedEnodes := []string{ - "enode://7512c8f6e7ffdcc723cf77e602a1de9d8cc2e8ad35db309464819122cd773857131aee390fec33894db13da730c8432bb248eed64039e3810e156e979b2847cb@51.15.78.243:30303", - "enode://1cc27a5a41130a5c8b90db5b2273dc28f7b56f3edfc0dcc57b665d451274b26541e8de49ea7a074281906a82209b9600239c981163b6ff85c3038a8e2bc5d8b8@51.15.68.93:30303", - "enode://798d17064141b8f88df718028a8272b943d1cb8e696b3dab56519c70b77b1d3469b56b6f4ce3788457646808f5c7299e9116626f2281f30b959527b969a71e4f@51.15.75.244:30303", - } - require.Equal(t, expectedEnodes, enodes) + require.True(t, len(enodes) >= 3) }, }, { @@ -326,16 +283,11 @@ var loadConfigTestCases = []struct { require.True(t, nodeConfig.BootClusterConfig.Enabled, "boot cluster is expected to be enabled by default") enodes := nodeConfig.BootClusterConfig.BootNodes - expectedEnodes := []string{ - "enode://fda3f6273a0f2da4ac5858d1f52e5afaf9def281121be3d37558c67d4d9ca26c6ad7a0520b2cd7454120fb770e86d5760487c9924b2166e65485f606e56d60fc@51.15.69.144:30303", - "enode://ba41aa829287a0a9076d9bffed97c8ce2e491b99873288c9e886f16fd575306ac6c656db4fbf814f5a9021aec004ffa9c0ae8650f92fd10c12eeb7c364593eb3@51.15.69.147:30303", - "enode://28ecf5272b560ca951f4cd7f1eb8bd62da5853b026b46db432c4b01797f5b0114819a090a72acd7f32685365ecd8e00450074fa0673039aefe10f3fb666e0f3f@51.15.76.249:30303", - } - require.Equal(t, expectedEnodes, enodes) + require.True(t, len(enodes) >= 3) }, }, { - `select boot cluster (Homestead Dev)`, + `select boot cluster (Mainnet dev)`, `{ "NetworkId": 1, "DataDir": "$TMPDIR" @@ -345,12 +297,11 @@ var loadConfigTestCases = []struct { require.True(t, nodeConfig.BootClusterConfig.Enabled, "boot cluster is expected to be enabled by default") enodes := nodeConfig.BootClusterConfig.BootNodes - expectedEnodes := []string{} - require.Equal(t, expectedEnodes, enodes) + require.True(t, len(enodes) >= 2) }, }, { - `select boot cluster (Homestead Prod)`, + `select boot cluster (Mainnet Prod)`, `{ "NetworkId": 1, "DataDir": "$TMPDIR", @@ -361,8 +312,7 @@ var loadConfigTestCases = []struct { require.True(t, nodeConfig.BootClusterConfig.Enabled, "boot cluster is expected to be enabled by default") enodes := nodeConfig.BootClusterConfig.BootNodes - expectedEnodes := []string{} - require.Equal(t, expectedEnodes, enodes) + require.True(t, len(enodes) >= 2) }, }, { diff --git a/static/bindata.go b/static/bindata.go index ca5c0d266..07ad48078 100644 --- a/static/bindata.go +++ b/static/bindata.go @@ -1,9 +1,9 @@ -// Code generated by go-bindata. DO NOT EDIT. +// Code generated by go-bindata. // sources: // scripts/README.md // scripts/web3.js -// config/cht.json // config/public-chain-accounts.json +// config/staticpeers.json // config/status-chain-accounts.json // config/status-chain-genesis.json // config/test-data.json @@ -22,13 +22,13 @@ // testdata/jail/tx-send/no-message-id-or-context.js // testdata/jail/tx-send/tx-send.js // testdata/node/test.sol +// DO NOT EDIT! package static import ( "bytes" "compress/gzip" - "crypto/sha256" "fmt" "io" "io/ioutil" @@ -59,9 +59,8 @@ func bindataRead(data []byte, name string) ([]byte, error) { } type asset struct { - bytes []byte - info os.FileInfo - digest [sha256.Size]byte + bytes []byte + info os.FileInfo } type bindataFileInfo struct { @@ -105,8 +104,8 @@ func scriptsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "scripts/README.md", size: 133, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0x94, 0xc, 0xba, 0xac, 0xa8, 0xe3, 0xd0, 0xbb, 0xdd, 0x6e, 0xd7, 0xd8, 0x67, 0x6a, 0x76, 0x72, 0x7c, 0x80, 0xd8, 0xdd, 0xf5, 0xd2, 0xf8, 0x20, 0xe8, 0x50, 0xb6, 0x4e, 0xd2, 0xc8, 0xf8}} + info := bindataFileInfo{name: "scripts/README.md", size: 133, mode: os.FileMode(420), modTime: time.Unix(1505683992, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -125,28 +124,8 @@ func scriptsWeb3Js() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "scripts/web3.js", size: 497689, mode: os.FileMode(436), modTime: time.Unix(1519298311, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdb, 0x1a, 0xf9, 0x11, 0xef, 0xf0, 0xce, 0x2d, 0xd1, 0xfc, 0xd, 0x24, 0x5d, 0x1, 0x25, 0x55, 0xbf, 0x9a, 0x59, 0x92, 0x55, 0x21, 0xa5, 0xf5, 0xb4, 0xf0, 0x9c, 0xd7, 0x90, 0xe3, 0xe8, 0x48}} - return a, nil -} - -var _configChtJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x78\xcd\xae\x64\x49\x52\xf4\xbe\x9f\xe2\xaa\xd6\x9f\x72\xfc\xdf\x3d\x6a\xd5\x8b\x6f\x01\xcf\x30\x9a\x45\xf8\x1f\x20\xa4\x6e\x34\x3d\x02\x24\xc4\xbb\xa3\x53\xdc\x9a\x6e\x24\xea\xaa\x85\x58\xb0\xa8\xd5\x49\x45\xa6\xf2\x98\x47\x98\x9b\x99\xc7\x1f\x7f\x78\x7b\xfb\xb7\x1f\xde\xde\xde\xde\x3e\xfd\x34\x7f\xf9\x97\x9f\xff\xfc\x8f\x7f\xfb\xff\x3f\x7d\x7e\xe3\xff\xf7\x9f\x6b\x7f\x37\x3f\xcd\x2f\xff\xf0\xcb\xdf\xdc\x5f\xfe\xfe\xd3\xe7\xb7\x4f\xf0\xaf\x82\x47\x10\x88\x2d\xe0\x10\x0f\xec\x48\xbb\x5c\x96\xec\x5b\x81\x82\x4b\x2a\x30\x7c\xe7\x80\x11\x3b\xc6\x88\xb7\x59\x63\x5d\xb9\xd4\x9f\xde\xff\xf8\x9f\xfe\xfc\x73\x7f\xfa\xfc\xfe\xea\xb7\xb7\x4f\xf9\xf3\xcf\x7f\xf9\xe9\xe7\x9e\x5f\x3e\x7d\x7e\xfb\xe3\xfb\xe2\xdb\xdb\xa7\x79\xd6\x3e\xff\xe1\x0f\x7e\x93\x4e\xd4\x74\x09\x86\xde\x38\xd2\x84\x1d\x57\x0c\x95\x8c\xa6\x2c\xbb\xc6\xac\x4e\x9a\x07\x87\x07\x69\x0c\xb4\x26\x23\x20\x37\x43\x1d\xe0\x38\x4c\xc2\xb4\x0e\xa3\x49\x69\x57\xab\x99\x38\x37\x08\x54\x65\x2b\x89\x36\xcb\x53\x94\xcd\x23\x8e\x12\xcd\x29\x91\xf3\xa3\xe2\x0b\xf5\x65\xfc\x3a\xfc\x99\x81\x81\xdf\x0b\xf9\x2f\x28\x57\xcf\x84\x03\x2e\x46\xf9\x29\xad\x2c\x37\x8c\x2e\xcf\x3c\x14\x2d\xd2\x45\xab\x02\x5a\xde\x76\xb8\x6f\x1f\xef\x4b\x1d\x1a\x7a\x5c\x8f\x3c\x95\x6c\xb3\x35\xef\x18\x44\x6e\x97\x93\xc3\x65\xb9\xd2\x0d\xb0\x1c\xb5\x73\x2c\x29\xef\x25\x59\xaf\x86\x5b\x14\xcd\x41\x17\xdf\x51\xfa\x79\x45\x7c\x1b\xe5\xd0\x65\x0d\x4f\x4f\xc1\x5b\x5b\x72\xa6\x7b\xee\x21\x3a\x14\x78\x40\x9b\x94\x66\xf3\x42\xde\x55\xd3\x5a\x23\xb7\x5e\xf4\xbd\x0b\x12\x80\xe9\xe1\x67\xe6\xb6\xab\xf7\x8d\xd4\x1c\xe4\x04\x5d\xd2\x71\xd7\x9b\xd6\xa1\xbe\x4b\x26\x59\xca\x37\x4e\x01\xf9\x35\xf5\x6e\x84\x77\x94\xa2\x2f\x44\xf9\x60\x33\xe7\x1c\x74\xa5\x92\x9a\x9b\x91\x07\x0c\x62\x73\xd1\x3a\xce\xd5\xf5\xb6\xc6\x20\x35\xf1\x96\x13\xa8\x76\x26\x6b\x6a\x30\x49\x38\x09\x00\x84\xe0\x6a\xa7\x13\x0e\xa1\x10\x63\xf9\xb5\xbe\xac\xc2\x7b\x83\x10\x43\xcb\xc1\x2a\xfb\xe4\xc9\x31\x45\x39\x32\x75\x7c\xd5\xee\xd7\x23\xf7\x17\xe2\xf9\x36\x4c\x09\x92\x90\x3c\x78\x42\x19\x66\x68\x00\x3a\xe3\xf8\xc1\x20\x26\x91\xba\x82\x5d\xcd\x4e\x24\x34\x34\x48\xc7\xbb\xc1\xd6\x3a\xba\x59\xdd\x80\x8f\x41\xe9\xed\x53\x15\x5d\xa8\x5b\xbd\x30\x32\xcf\xcf\xd2\x6f\x7b\xa7\x1e\x18\xf3\x0b\xa9\xb2\x7e\xa2\xc8\x34\x70\xb2\xfd\xeb\x99\xeb\x0b\xf9\x83\x43\x3f\x73\xce\x60\x70\x6a\x39\xb6\x62\x4f\xa2\x8d\xa5\xd0\xad\x53\x64\xe5\x5a\x5b\x47\x77\xf7\xf4\xde\x09\x8a\x0c\xc7\x64\x09\x56\xa9\x9c\x5a\x3c\xd6\xbb\xd2\x2d\xac\xe6\x49\x56\x41\x82\x49\x79\xfc\x54\xca\xdc\xb3\xd1\x77\xa8\xcf\xbd\xb5\x61\x26\xa7\xef\x0e\x9e\xcb\xe7\xfe\x4a\x4d\x74\xfb\x36\x4c\xa4\x56\x2a\xf6\x63\x0e\xb0\xa9\xb7\x76\xa9\xbc\x9f\x57\x7b\x66\x5a\x3b\xc2\xd3\xe3\xcb\x22\x34\xc3\x7d\xce\x2d\x2c\x3c\x0e\x68\xd5\x9d\x52\xac\x16\x99\x93\x17\xb4\xf9\xa0\x68\xe9\xa9\x73\xa0\xda\x64\xdd\xb2\x4e\x02\xb4\x24\xf2\x22\xc0\xd1\x92\xa3\xe0\xdd\x52\xfb\x9b\x3e\x47\x84\x6f\xc3\x84\xf5\x32\x25\xf7\x3d\x68\xbb\xc2\x7e\x76\x94\x20\xc3\x15\x82\xae\xda\x68\xf8\x24\xd7\x60\xa1\x9a\xf7\xd9\x3d\x42\x60\xd9\x09\x9a\x17\xcd\x4b\x89\x9c\x96\x60\x8d\xa5\xfa\x39\xcc\x29\xed\xd3\x3b\xc9\x87\x01\x9f\xee\x1f\xd4\xa3\x1d\x63\x72\x1d\xbd\x22\xc5\xec\xd0\xbe\xc3\x54\x79\xa1\x7e\x00\x73\x00\x6c\x21\xa9\xeb\xc4\xb8\xba\x58\xa4\x39\x3a\xd3\x51\xc5\x33\x27\xad\x75\x57\x42\xc8\x9d\x6e\x25\xc6\x36\xa8\x96\x11\x38\x3d\x9a\xcb\xfe\x68\xaa\x66\xcc\x20\x40\x3c\x32\x31\x31\x6b\x38\xc1\x89\x8a\xda\x9d\xbc\xa9\xd6\xb9\x79\x3a\x17\x57\x8c\x55\xe9\x7a\x9d\xfd\x91\x90\x5e\xe2\x2f\x62\x7f\x21\xf9\xb7\x81\xb6\x40\x38\x6e\xf1\x20\x26\x99\x1c\x07\x38\x1e\x03\x76\xab\x2d\x2e\xc9\x5d\x95\x31\xe0\x16\x66\xde\x3b\x95\x0e\x87\xac\xae\xf7\x1e\xce\x7b\x21\x3d\x57\xe6\x90\x6f\xdd\x3e\xd7\x0b\x0b\x7c\x4f\x32\xe9\x23\xeb\xd6\xe8\x0c\xe3\x14\x8c\xd2\x4f\x77\x99\x12\x8f\xd6\x64\xd1\xfb\x7e\x22\xd3\x8b\x58\x3f\xd8\xd0\xcb\x5e\xc7\x49\xdc\x28\xc7\xd7\x2c\x06\xb5\xb9\xeb\xa8\xaa\x91\xd2\xb9\x29\x0b\x98\xed\x47\x71\x21\xb9\xf0\x18\xa4\xeb\x54\x5e\xd1\x89\xe2\x4c\xae\x98\x1c\xbb\xae\x20\x7d\xae\x40\x3f\x34\x56\xa3\x44\x36\x7a\x54\x60\x74\x90\x50\x59\x14\xdd\x74\xcf\x45\xba\x86\xfd\x23\x3e\xcc\x74\x7a\x61\x9c\x17\xc1\x07\x48\x23\x8a\x92\x44\xe8\x5c\x5b\xb7\xe0\xcd\x6d\xb0\x70\xb9\xc3\x8b\xf3\x85\x4b\x57\x77\x33\xc4\xc6\xbd\xfc\xa1\x25\xd0\x90\x0a\x7b\x9c\x36\xdb\x02\xa6\x34\x03\xbb\xd1\x11\x11\x93\x46\x7c\x2e\xdd\x1c\x8d\xe3\x35\xc1\xeb\xd1\xd5\xb5\x95\x40\xde\x36\xd7\xce\xbd\xb6\x73\x7e\x45\xaa\xfe\x32\xfc\x36\xd0\x1a\x0b\x95\xa2\x72\xbf\x11\x00\x5b\x85\x64\x00\x04\x56\x2c\x92\x01\xca\x99\x07\x66\x38\x2f\x05\x8c\x95\x2c\xc6\x32\x0a\x56\x97\xce\x04\x64\x15\x67\x27\x49\x65\xc1\x7c\x91\xa9\x96\xe4\x68\x4f\x75\x15\x9b\x56\x8a\x02\xb8\x6b\xd5\x06\x72\xd3\xb4\xe4\x59\x5c\xfb\x0d\x50\x7e\x21\x7d\x60\x48\x00\x77\x0c\xdc\xb1\x1f\xb7\xe9\x9b\xf7\x11\x6f\x6b\x31\xbe\x41\xd7\x93\x0d\x92\x6f\xc0\xb0\xde\xa4\x81\xbe\x97\x34\xbb\xac\xae\x11\xf2\xae\x54\xb0\x04\x3c\x2e\x39\x78\x0f\xc4\x8d\xd5\x10\xc4\xcb\x26\x3b\x40\x17\x36\xb9\xe8\x5e\x26\x80\x60\x90\x05\xe3\x8e\x7b\x17\x2f\xfd\x8a\x94\xe9\x15\x1f\x9d\xbd\x4d\x56\x08\xdf\xab\x68\x76\x06\x62\xc8\x05\x60\x84\x75\x8f\x3e\xce\x34\x7c\xba\x54\x20\x81\xf0\xd2\x32\x1d\xbc\xe9\x6e\x15\x91\xd9\x97\xfb\xb8\x31\x1a\x1f\xc2\x93\x0f\x3f\x86\x1f\x5f\xf7\x23\x42\x44\x25\xee\xc8\xd9\xf3\x34\x17\x26\xa9\xfb\xa9\x71\xe1\xcb\xa7\x1d\xfe\xda\xf6\x5f\xf4\xe9\x03\xa0\x17\x67\x4f\x5e\x55\x85\xd6\xbd\x45\xbe\x5e\xd9\x32\xd1\x04\xd7\x84\x9f\x84\xa1\xc7\x96\xc1\xeb\x60\xb5\x8d\x6f\x68\xaa\x44\xc6\xb5\x5c\x42\xad\xba\xc2\xd6\x36\xf3\xe5\x81\x4f\x89\x3b\x8a\x7c\x62\xe3\x11\x75\xc8\xb6\xb2\x0b\xc5\x4c\x55\x29\x18\x01\xcb\x3c\x85\x5f\xdb\x9e\x30\x5e\x48\x5f\x71\xbe\xc3\xfc\xd3\x97\xe7\xbf\xbf\xc7\xd5\x9e\x7f\xfe\x9e\x56\xbf\xa7\xd5\xef\x69\xf5\x7b\x5a\xfd\x9e\x56\xbf\xa7\xd5\xef\x69\xf5\x7b\x5a\xfd\x9e\x56\xbf\xa7\xd5\xff\x6b\x69\xf5\x87\xf7\xc4\xfa\xdf\xdc\xe8\xca\xb7\x6e\x74\x8d\x05\xb7\xb9\xef\x1e\x49\x97\x28\xa7\x9a\xd6\xab\x49\x06\x14\x4b\xe2\xb2\xba\x00\x1d\x24\x0a\x32\xb2\x97\xfd\xba\xba\xf9\xa0\xfb\xff\xf0\x46\x77\xfb\xf2\x13\xd5\xf8\xc2\x52\x5f\xb9\xa5\xa1\xd1\xb8\x4a\xa3\x77\xef\x9e\x9e\xa5\x40\x24\xcc\xe1\x66\x57\x8d\x32\x6f\xe9\x53\x97\x9e\x3d\x6a\xbf\xf0\xb8\x18\x55\xbb\xa8\x20\xc1\xa6\x3b\x4c\x58\x3f\x31\x45\xc2\xeb\x1c\x92\x24\x34\x1b\x53\x09\x5d\x03\x1b\xb5\x36\xd8\xfa\xea\x9d\xe7\x85\xf2\x41\x1b\xe5\x15\xbc\x37\x9e\xb0\xe9\x17\xee\x01\xb7\x3e\xb9\x3b\x7d\xbc\xa2\x86\x46\x0e\xe6\x39\xe1\x4c\x11\x75\x26\xc2\x16\x6d\x5b\x5d\xf9\x31\x04\x2b\x7b\xfc\x46\x36\x37\x50\x56\xef\x79\x48\x3c\x05\x20\xbb\xf7\x14\xdc\x09\x53\xd8\x43\xdb\x08\x85\x34\x93\x5e\x6c\xa2\x87\x27\xf9\xb7\x30\x3f\xb0\x24\x8a\xa9\x55\x72\x4a\x35\xa8\xfb\xa8\xb9\x54\xfb\xe2\x64\x64\x1b\xf5\xd5\x50\x4e\x20\x4b\x79\xd0\x30\x95\x24\xa0\x3f\xe1\x31\x01\x51\x02\xcf\x85\x03\xf7\x31\xd6\xf6\x65\xb2\x50\x36\x9d\xea\x18\x00\x51\x00\x97\xbd\x60\xce\xc0\xe7\xce\x0e\xc2\xf2\xa6\x99\xcd\xf3\xe1\x6b\x60\xb2\x17\xc9\xf9\x5f\x1c\xa4\x14\xa9\x62\x9f\x46\xda\xae\x72\xe2\x5a\xf7\x31\xa0\x8b\x3d\xa7\xa3\x8a\x26\x6e\xb3\x76\x32\x1c\xb1\xa7\x0e\xa4\x87\x11\xce\xa1\x8e\x8c\x77\x86\x0f\xec\x14\xf3\x33\x87\x25\x72\x5f\x67\x78\x14\x87\x32\x49\x62\xa6\x4d\x80\xcf\x70\x20\x0c\xaa\xcd\xf1\x93\x14\xe2\x95\x5f\xcb\x8a\x17\xc9\x07\x93\x14\x56\x91\x5f\xbd\x82\xc8\x70\xb5\x9e\xf8\xdf\xf9\x18\xb9\x73\x17\xc5\x7a\xaa\x2d\x4f\x6f\x41\x57\xa9\xa7\x99\xb6\x28\x92\x4b\x92\xa9\xe0\x44\x8f\x9c\xb9\x7e\xc1\xe5\xcb\x5c\x63\x37\x88\xe0\xe4\x79\xdc\x85\x4f\x9d\x40\x34\x4e\xdb\x0d\x2d\x06\x8e\x1b\x43\x59\xda\x91\xf1\x95\x24\xf1\xe1\xbc\xe7\x27\x1a\x1d\x4c\x50\x30\x63\x23\x7a\x1d\x03\x28\x6e\x3c\xc4\x39\xc2\x8d\x95\x31\x76\x2c\xb9\x6f\xaa\x29\x9e\x72\x48\xf7\xc4\x66\xb1\x93\x6a\x69\x2b\x35\xec\x11\xa2\x6e\x62\x01\xb1\x5a\x4e\xe7\xcc\x41\x34\x23\x5b\xa2\xc0\x65\xc8\xa3\x47\xc9\xf3\xd8\xb9\x8e\x23\xfb\x6b\xf6\xa7\xbf\x76\xdc\xef\x96\x2f\xfc\x96\x7c\xb5\x8c\x9a\x0b\x6c\xb8\xdd\xd9\x28\x40\xc8\xb0\x27\xa6\xe8\x3e\xdf\xe8\x45\x8c\x86\x67\x47\x59\xc6\xce\x9d\x8a\x82\xce\xa7\xd6\xbd\xfc\xbb\xe4\xeb\xf7\x73\xf8\x37\x95\xfc\xf0\xa7\x1f\xfe\x23\x00\x00\xff\xff\x67\x1f\xd0\xb1\x5e\x1b\x00\x00") - -func configChtJsonBytes() ([]byte, error) { - return bindataRead( - _configChtJson, - "config/cht.json", - ) -} - -func configChtJson() (*asset, error) { - bytes, err := configChtJsonBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "config/cht.json", size: 7006, mode: os.FileMode(436), modTime: time.Unix(1516097139, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7a, 0x7d, 0x0, 0xd4, 0xf3, 0x67, 0x5c, 0xd7, 0xd, 0xf8, 0x83, 0x9e, 0x27, 0x79, 0xbc, 0x66, 0xf3, 0xc9, 0x19, 0x95, 0x7b, 0x4c, 0x5c, 0xbd, 0x3a, 0x9c, 0xfe, 0x74, 0x3b, 0x32, 0xc5, 0xf5}} + info := bindataFileInfo{name: "scripts/web3.js", size: 497689, mode: os.FileMode(420), modTime: time.Unix(1519657265, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -165,8 +144,28 @@ func configPublicChainAccountsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/public-chain-accounts.json", size: 165, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf6, 0xa7, 0xf7, 0xe4, 0xdd, 0x94, 0xb2, 0x97, 0x99, 0x13, 0xd1, 0xc0, 0x5f, 0xf9, 0x63, 0x13, 0x14, 0xc0, 0xe1, 0xde, 0x56, 0x3f, 0x14, 0x1b, 0x37, 0xf1, 0x87, 0x5d, 0xda, 0xc8, 0xd4, 0x1c}} + info := bindataFileInfo{name: "config/public-chain-accounts.json", size: 165, mode: os.FileMode(420), modTime: time.Unix(1518722857, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _configStaticpeersJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x99\xcb\x8a\x66\x49\x72\xad\xe7\xf5\x14\x41\x8e\x0f\xd1\x76\xbf\xe4\xa8\x06\x67\x20\x3d\x43\xd3\x03\xb7\x8b\x4b\x42\x50\x25\xba\x1a\x49\x20\xf4\xee\x62\xa7\x22\x3b\x4b\xa8\x32\x10\x4d\x0f\x7a\x10\xa3\x3f\xf0\x08\x62\x2f\x77\x37\x5b\xeb\xb3\xfd\xff\xfe\x87\x97\x97\xff\xf8\xe1\xe5\xe5\xe5\xe5\xd3\x4f\xfb\xa7\x7f\xfb\xf9\x8f\xff\xfc\xf7\xff\xff\xd3\xe7\x17\xfe\x7f\xff\xbd\xf6\x0f\xfb\xd3\xfe\xf2\x4f\xbf\xfc\xdd\xf9\xe5\x1f\x3f\x7d\x7e\xf9\x04\xff\x2e\x98\x82\x40\x6c\x01\x49\xbc\x70\x57\xc6\xe5\xb0\xd4\x9c\x0e\x14\xbc\xa4\x02\xcb\x67\x13\x8c\xd8\x31\x56\x7c\xcc\x06\xfb\xc8\xa1\xf9\xf4\xf6\x8f\xff\xe5\x8f\x3f\xcf\xa7\xcf\x6f\x8f\x7e\x79\xf9\x54\x3f\xff\xfc\xa7\x9f\x7e\x9e\xfd\xe5\xd3\xe7\x97\xdf\xbf\x2d\xbe\xbc\x7c\xda\x67\xed\xf3\xef\x7e\xe7\xa7\x28\xa3\x77\x5a\x30\xf4\x44\xca\x10\x4e\x1c\x31\x54\x32\xda\xb6\x9a\x5e\xb3\xce\x32\x0f\x0e\x0f\xd2\x58\x18\x2d\x46\x40\x1e\x86\x4e\xe0\x48\x26\x61\xba\x0e\xab\x45\x65\x47\x7b\x98\xb8\x6e\x10\xa8\xca\xed\x22\xba\xd5\x5e\xa2\x6c\x1e\x91\x4a\xb4\xd9\x22\xf9\xa3\xe2\x2b\xea\xab\xf1\x6b\xf2\x67\x06\x06\x7e\xdb\xc8\xff\x50\x79\x35\x37\x1c\xf0\x62\xb4\x67\x6b\x57\xbb\x61\x4c\x7b\x55\x52\x8c\xc8\x34\x5d\x15\xd0\xf6\xb1\xe4\x39\x93\x3e\x87\x26\x34\x34\x5d\x53\x9e\x9d\xdc\x61\x1b\xbe\x6b\x10\x75\xa7\x9d\x1c\x0e\xcb\x91\x19\x80\xcb\xd1\x77\xd3\x8a\xea\x1c\x92\xeb\x3d\x70\x9a\x62\x38\xe8\xe0\x9b\x4a\xcf\xd7\x88\xef\xab\x5c\x3a\xac\xe1\xe5\x25\x78\xfa\xb6\xe4\xce\xec\x49\xa2\xa4\xc0\x04\x1d\x52\xda\x5b\x07\xea\x5c\x35\xed\x6b\xe4\x36\x17\xfd\x9e\x0b\x12\x80\xe5\xe1\xb9\x7b\xc6\xd5\xe7\x44\x69\x2d\x72\x81\x5e\xd2\x75\xd7\x53\x36\xa1\x7e\x2f\x99\x54\x2b\x9f\xc8\x06\xf2\x63\xea\x33\x08\x6f\x2a\x45\x5f\x11\xe5\x9d\xc3\xdc\x4c\x74\xa5\x96\xde\x53\x51\x09\x06\x71\xeb\xa2\x4d\xe4\xd1\xeb\x63\x83\x41\x6a\xe2\x23\x19\xa8\x96\x5b\xbd\xbd\x58\x24\x5c\x04\x00\x42\x70\x74\xca\x09\x97\x50\x88\xb1\xfd\xd8\x1c\x56\xe1\x7b\x82\x10\x43\xdb\xc1\xba\x26\x2b\x6b\x4d\x51\x52\xb6\xd3\xaf\xda\xf9\x7a\xe5\xfe\x8a\x98\xdf\x97\x29\x41\x12\x52\x89\x19\xca\xb0\x4b\x0b\x30\x15\xe9\x89\x41\x4c\x22\x7d\x04\xa7\x87\x9d\x48\x68\x69\x91\xd2\x67\xc0\xae\x4d\xcc\xb0\xba\x01\xa7\x41\xeb\x99\xec\x8e\x69\xd4\xdb\x73\x61\x65\x9f\x3f\x2b\x3f\xe3\x53\x9a\xb0\xe6\x07\x4a\xe5\x7a\x46\x93\x69\xe0\xd6\xf8\xd7\x3b\xd7\x57\xe4\x77\x2e\x3d\x37\x73\x31\xb8\xb4\x1d\x47\x71\xb6\xd0\xd6\x4a\xe8\x74\x36\x59\xbb\xf6\xed\xd4\x7b\x6f\xce\x3d\x1b\x14\x15\x8e\xc5\x12\xac\xd2\xb5\x7d\x31\x6d\xee\x95\x19\x61\x35\x2f\xb2\x0e\x12\x2c\xaa\xf4\xec\x92\x3d\x79\x63\xce\xd2\xe4\x39\x7d\xc3\x4c\x72\xce\x5d\xcc\xc3\x79\xbe\x95\x26\xba\x7d\x5f\x26\xd2\x28\x35\x7b\x9a\x03\xdc\xd2\xd3\xf7\x52\xfb\x3c\x8f\xf6\xaa\xb2\x71\x84\xa7\xc7\x2f\x8b\xd0\x2e\x4f\xe6\x69\x6c\x4c\x07\xb4\x9e\x29\x69\x56\x8b\xaa\xad\x03\x3a\x9c\x28\xda\x9a\x9d\x09\x3d\x26\xd7\xad\x3a\x0b\x60\xa4\x90\x2f\x02\xa4\xb6\xa4\x82\xcf\x48\xdf\x5f\xf5\x39\x22\x7c\x5f\x26\x5c\x6f\x53\x72\xbf\x89\x76\xaf\xb0\xe7\x5d\x25\xa8\x70\x85\xa0\xa3\xb6\x1a\xbe\xc5\xbd\xd8\xa8\xe6\x93\xf7\xa6\x10\x58\x4d\x81\xd6\x41\xf3\x56\x22\xa7\x4b\x70\x8d\xa5\xe7\xb9\xcc\x6d\x9d\x9c\xbb\xc5\xc9\x80\x4f\xf7\x2f\x6a\xea\xc4\x9a\x1c\x47\xef\x28\x31\x4b\xba\x6f\x32\x55\x5e\x51\xdf\x91\xb9\x00\x76\xa1\x68\x3a\x63\x5d\x5d\x2c\xca\x1c\x9d\x29\x55\x31\x37\xcb\x46\xef\x95\x10\x72\xa7\xd3\x85\x71\x07\x54\xdb\x08\x9c\x1e\xcf\x65\x7f\x3c\x55\x2b\x76\x11\x20\x1e\x9b\xd8\xd8\x6b\xb8\xc1\x85\x8a\x3a\x53\x7c\x4b\x6d\xea\x56\x4e\x5d\xbc\x62\xac\x4a\xc7\x3b\xef\x8f\x84\xf4\x2a\xfe\x4a\xec\xaf\x48\xfe\x7d\xa1\x23\x10\x8e\xb7\x79\x11\x8b\x4c\xd2\x01\xd2\x63\xc1\x4e\x8f\xc5\x21\x39\x57\x65\x0d\x78\x84\x99\xef\xd9\x2e\x87\x24\xeb\xe3\x73\x93\xeb\x1c\x28\xaf\x2b\x9b\xe4\xb7\xcf\xe4\xf1\xc6\x06\xbf\x59\x4c\xfa\xd8\xba\x0d\x3a\xc3\x3a\x05\xa3\xcc\xd3\x5d\xa6\xc4\xab\xbd\xd5\xf4\x76\x9e\xc8\xf4\x4a\xac\xef\x1c\xe8\x61\xef\x74\x12\x37\xaa\xf5\x6b\x16\x8b\x3a\x3c\x9d\xaa\x6a\xa4\x94\xa7\xe4\x02\xd6\x78\x2a\x5e\x28\x6e\x4c\x83\x72\xdd\xae\x23\xba\xd1\x5c\xc5\x1d\x5b\x6b\xc7\x15\x64\xf2\x08\xcc\x53\xc6\x6a\x54\xc8\x46\x8f\x0b\xac\x2e\x12\x2a\x8b\xa2\x9b\xde\x3c\x48\xc7\x70\x7e\xc4\xa7\x32\x9d\x5e\x31\xf2\x95\xe0\x1d\xa5\x11\x4d\x45\x22\x94\xc7\xae\x5b\xf0\xad\x3b\x60\xe1\x72\x96\x2f\xee\x97\x5a\x3a\x7a\x6f\x85\xd8\xba\xb7\x3f\x65\x09\xb4\xa4\xc2\x1e\x39\x66\xb7\x81\xa9\xcc\xc0\x4e\x4c\x44\xc4\x96\x11\xe7\xa1\x53\xab\x91\xde\x1b\x7c\x3d\xa6\xa7\x6f\x17\x90\x8f\xed\xb1\x3c\xc7\xee\xe6\x37\xa5\xea\xaf\x86\xdf\x17\xda\x6b\xa1\xd2\xd4\xee\x27\x02\xe0\x76\x23\x19\x00\x81\x35\x8b\x54\x80\x72\x55\xc2\x2e\xd7\xa1\x80\xb5\x96\x8b\x71\x19\x05\x7b\x5a\x77\x03\xaa\x9b\x6b\x8a\xa4\xab\x61\xbf\xd8\xd4\x48\x71\x8c\x97\xba\x8a\xed\x28\x45\x03\x9c\x6b\x3d\x06\x72\xca\xb4\xe5\x59\xbc\xf6\x2b\xa1\xfc\x8a\xf4\x4e\x20\x01\x9c\x35\x70\xc7\x79\xd2\x66\x4e\x9d\xc7\xbc\x6d\xc4\xf8\x04\x1d\x2f\x36\x28\x3e\x01\xcb\x7a\x8a\x16\xe6\x1c\xd2\x9a\xb6\x3e\x46\xc8\xf7\x4a\x07\x4b\xc0\x93\x92\x8b\x27\x21\x4e\x5c\x0d\x41\x3c\x6c\x72\x17\xe8\xc0\x2d\x6e\x3a\x87\x09\x20\x18\xe4\x82\xf1\xc4\x39\x17\x0f\x7d\x53\xca\xf4\x1a\xef\xdd\xbd\x6d\x75\x08\x9f\xa3\x68\x96\x0b\xb1\xe4\x02\xb0\xc2\x7a\x53\x9f\x64\x5a\xce\x69\x15\x28\x20\x3c\x74\x99\x12\x4f\xb9\x5b\x47\x54\xcd\xe1\x49\x37\x46\xe3\x24\xcc\x7a\xea\x63\xf9\xc9\x75\x4f\x11\x22\x6a\x71\x47\xae\xd9\xa7\xb9\xb0\x48\xdd\xb3\xd7\x85\x0f\xe7\x38\xfc\xb9\xed\xbf\xf8\xd3\x3b\x42\x0f\xee\xcd\x3a\xaa\x0a\xa3\xf7\x34\xf9\xf5\xae\x91\x8d\x21\x38\x26\xfc\x10\x86\xa6\x5d\x06\xef\xc4\x1e\x5b\xbf\xa1\xa5\x12\x15\xc7\xea\x12\x6a\xf7\x11\xb6\xb1\xdd\x2f\x1f\xf8\x6c\xf1\xae\x22\x67\xdc\x78\x4c\x1d\x6a\xac\xed\x40\x33\x53\x77\x09\x46\xc0\x65\xde\xc6\xaf\x6d\x4f\x18\xaf\x48\x5f\x75\xbe\xc9\xfc\xc3\x97\xcf\xff\x7c\xc3\xd5\xd9\x7f\xfd\xa0\xd5\x0f\x5a\xfd\xa0\xd5\x0f\x5a\xfd\xa0\xd5\x0f\x5a\xfd\xa0\xd5\x0f\x5a\xfd\xa0\xd5\x0f\x5a\xfd\x5b\xa3\xd5\x1f\xde\x88\xf5\x37\xde\xe8\xca\xf7\xde\xe8\x1a\x0b\xde\xe1\x39\x37\xa5\x5c\xa2\x9d\x7a\x47\x8f\x16\x19\x50\x5c\x12\x97\xab\x17\x60\x82\x44\x41\x56\xee\x61\x3f\xae\x6e\xbe\xe8\xfe\x17\xbe\xd1\xbd\x73\xf8\x41\x35\x3e\x70\x69\x8e\x9c\xd6\xd0\x18\xbc\x4a\xab\xe7\x9e\x9b\xb3\x97\x02\x91\xb0\x96\x87\x5d\x35\xda\x7c\x64\xb2\x0f\x3d\x67\x34\x7e\xe0\x49\x31\xea\x71\x51\x41\x82\x5b\xee\xb0\x61\xf3\x60\x8a\x84\x77\x26\x49\x11\x9a\xad\xa9\x84\x5e\x03\x5b\xb5\x31\xb8\xfd\x35\x3b\xf3\x15\xe5\x9d\x36\xaa\x23\x78\x4e\x3c\xb0\xe9\x07\x4e\x82\xdb\x64\xdd\xbb\x93\xde\xd1\x4b\x2b\x89\x95\x19\xce\x14\xd1\xb9\x11\x76\xd1\xee\xa8\x2b\x3f\x81\x60\x6d\x4f\xde\xc8\xad\x1b\x28\x57\x4f\x3e\x45\xbc\x0d\x20\xf7\x9e\x6c\x38\x1b\xa6\x70\x93\xee\x20\x34\xd2\x6e\x79\xb3\x89\x26\x6f\xf1\xaf\x65\xbe\x13\x49\x14\xdb\x57\xc9\xa9\xd4\xa0\xcf\xe3\xe6\xd2\xe3\x17\xb7\xa2\xc6\x68\x8e\x86\x72\x01\x59\xc9\xa3\x86\xa9\xa5\x00\xfd\x81\xc7\x02\x44\x09\xcc\x03\x09\xe7\x09\xd6\xf1\xcb\x64\xa1\x6c\xba\x3d\xb1\x00\xa2\x00\x2e\xf7\x80\x39\x03\xe7\xd9\xbb\x08\x97\x6f\x99\xd9\x3e\x3f\x7c\x05\x26\x7b\x25\xc9\xbf\xe2\x20\xa5\x48\x1d\xf7\x69\xa4\x3b\xdd\x4e\xdc\xd7\x7d\x0d\xe8\xe0\x6c\x4e\x74\xd3\xc6\x19\xd6\x29\x86\x14\x7b\xf6\x81\xf4\x54\x84\x73\xa8\x23\xe3\xd9\xe5\x84\xbb\xcd\xfc\xcc\x61\x85\x3c\xc7\x19\x1e\xc7\xa1\x2a\x92\xd8\x1d\x13\xe0\x5c\x0e\x84\x45\xb5\x4d\xcf\xa2\x10\xef\xfa\xba\xad\x78\x25\x79\x67\x92\xc2\x6e\xf2\xa3\x47\x10\x19\x8e\xf6\x83\xff\x53\x4f\x90\x3b\x4f\x53\x5c\x2f\xb5\xcb\x3b\xb7\x61\xba\xd5\xcb\x4c\x47\x14\xc9\xa5\xc8\x54\x70\x63\x56\x72\x8f\x1f\x70\xf9\x32\xd7\xd8\x09\x22\xc8\xca\x27\x5d\x38\x3b\x03\xd1\xb8\xec\xde\xd0\x66\xe0\x38\xb1\x54\xad\x13\x15\x5f\x8b\x24\xde\x9d\xf7\x3c\x63\xd0\xc1\x04\x05\x2b\x6e\xc4\x5c\xc7\x00\x8a\x13\x4f\xe1\xa4\xf0\x60\x57\xac\xa5\x15\xcf\x29\x35\xc5\x6c\x87\x72\x2f\x1c\x16\xcb\x52\x2b\xbb\xd2\xcb\x1e\x21\xea\x26\x16\x10\x57\xdb\x29\x73\x13\xd1\x8c\xec\x12\x05\x5e\x86\x4a\x4d\x25\xaf\xb4\x3c\x8e\x2b\xf7\x1b\xfb\xd3\x9f\x3b\xee\xff\x6c\x5f\xf8\x3d\xfb\x1a\x59\x35\x17\xb8\xe1\x76\xf6\x46\x03\x42\x85\x3d\x98\xa2\xf7\xf9\x8d\x1e\xc4\x18\x78\x4e\x94\x65\x2d\xcf\x76\x34\x4c\x3d\x7b\xbd\x87\xff\xd2\x2f\xa4\xb0\x0a\xb0\x34\xd0\x74\x99\x8c\xce\x1e\x1a\x2e\x78\xd8\x32\x4f\x55\x8c\x2a\xd2\xa4\xad\x02\xc0\xfa\x0a\x9e\x22\xe4\x28\xf1\x7a\x28\x22\x59\x87\xb7\x10\xf3\x36\xe9\xa2\x20\xcf\x83\xfa\x31\x45\x8c\x77\x72\xf4\xc1\xb4\x83\x3d\xae\x44\x19\x84\xaa\x59\x76\x64\x4b\xbf\x0e\xcf\xa1\xef\x57\xa6\x9f\x3b\x88\xd9\x2a\x79\xfc\x14\x50\xf1\xf5\x1a\xf7\xbd\x2c\x09\x65\x63\x06\xf3\x0c\x15\x03\xce\x72\xa0\xa3\x9e\xc7\xa7\xf6\x8e\x9c\x5e\xa8\xab\x3d\x6b\xce\x3d\xda\x77\x9e\xd1\x23\xc6\x35\x9f\x71\x82\x27\x04\x62\xeb\xa9\x72\x6e\x42\xaf\x5a\x80\x0b\x0f\x5d\x81\xed\x6e\xfe\x6f\x99\xfa\x9b\x44\x7d\xe2\x5c\x08\xcb\x95\x0d\x10\xbf\x84\x8d\xa7\x01\xad\x52\x8e\x97\x4f\xec\x73\x5e\x33\x43\x31\xf2\x4c\x22\x11\x07\x7b\xcf\xae\x37\xea\xfa\xec\x76\x96\xdd\xc1\xd4\x1d\xae\x16\x76\x89\x48\x46\xc4\xad\xfb\xd0\xa5\xe7\xbd\x22\xe7\x21\x9a\xf3\x5c\x4f\xc6\xe5\x4e\x2f\x8d\xdf\x90\xf9\xc4\xda\x6f\xb0\x0a\x3c\x03\x3b\xde\x01\x71\x1e\x3c\x7d\xa9\x53\x06\x3a\x94\xf6\xd8\x71\xe0\x23\x47\x94\xe3\x1c\x5a\xce\x60\x79\xfc\x32\x75\x70\xf6\x0b\xa0\xfa\x17\x80\x61\x8b\xde\x03\x20\x8c\xa2\x27\xe4\xc6\xcd\x67\x3f\x7e\x37\x53\x42\x1c\x7c\x9f\x43\xc7\x21\xde\x22\x2f\xf7\x24\x25\xf9\x06\x55\x8f\xd3\xd2\x5f\xd1\x68\x3f\xca\xf9\xa3\x9c\xff\x26\xcb\xf9\xc9\x84\x1f\xfe\xf0\xc3\x7f\x05\x00\x00\xff\xff\x2a\xbb\x26\xd9\xa8\x20\x00\x00") + +func configStaticpeersJsonBytes() ([]byte, error) { + return bindataRead( + _configStaticpeersJson, + "config/staticpeers.json", + ) +} + +func configStaticpeersJson() (*asset, error) { + bytes, err := configStaticpeersJsonBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "config/staticpeers.json", size: 8360, mode: os.FileMode(420), modTime: time.Unix(1519657261, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -185,8 +184,8 @@ func configStatusChainAccountsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/status-chain-accounts.json", size: 330, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3d, 0x4a, 0x37, 0x3b, 0x7f, 0xee, 0x4b, 0x1b, 0x5, 0x9e, 0xc5, 0x5d, 0xbf, 0x31, 0x12, 0xf5, 0xa, 0xd2, 0xcf, 0xec, 0xee, 0xe4, 0x90, 0x42, 0x5, 0xba, 0x71, 0xce, 0x84, 0x98, 0xd1, 0xd6}} + info := bindataFileInfo{name: "config/status-chain-accounts.json", size: 330, mode: os.FileMode(420), modTime: time.Unix(1511267822, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -205,8 +204,8 @@ func configStatusChainGenesisJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/status-chain-genesis.json", size: 612, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb, 0xf0, 0xc, 0x1, 0x95, 0x65, 0x6, 0x55, 0x48, 0x8f, 0x83, 0xa0, 0xb4, 0x81, 0xda, 0xad, 0x30, 0x6d, 0xb2, 0x78, 0x1b, 0x26, 0x4, 0x13, 0x12, 0x9, 0x6, 0xae, 0x3a, 0x2c, 0x1, 0x71}} + info := bindataFileInfo{name: "config/status-chain-genesis.json", size: 612, mode: os.FileMode(420), modTime: time.Unix(1511267822, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -225,8 +224,8 @@ func configTestDataJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/test-data.json", size: 84, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xce, 0x9d, 0x80, 0xf5, 0x87, 0xfa, 0x57, 0x1d, 0xa1, 0xd5, 0x7a, 0x10, 0x3, 0xac, 0xd7, 0xf4, 0x64, 0x32, 0x96, 0x2b, 0xb7, 0x21, 0xb7, 0xa6, 0x80, 0x40, 0xe9, 0x65, 0xe3, 0xd6, 0xbd, 0x40}} + info := bindataFileInfo{name: "config/test-data.json", size: 84, mode: os.FileMode(420), modTime: time.Unix(1513343345, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -245,8 +244,8 @@ func keysBootnodeKey() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(436), modTime: time.Unix(1517849813, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x31, 0xcf, 0x27, 0xd4, 0x96, 0x2e, 0x32, 0xcd, 0x58, 0x96, 0x2a, 0xe5, 0x8c, 0xa0, 0xf1, 0x73, 0x1f, 0xd6, 0xd6, 0x8b, 0xb, 0x73, 0xd3, 0x2c, 0x84, 0x1a, 0x56, 0xa4, 0x74, 0xb6, 0x95, 0x20}} + info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(420), modTime: time.Unix(1518088538, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -265,8 +264,8 @@ func keysFirebaseauthkey() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe, 0x69, 0x23, 0x64, 0x7d, 0xf9, 0x14, 0x37, 0x6f, 0x2b, 0x1, 0xf0, 0xb0, 0xa4, 0xb2, 0xd0, 0x18, 0xcd, 0xf9, 0xeb, 0x57, 0xa3, 0xfd, 0x79, 0x25, 0xa7, 0x9c, 0x3, 0xce, 0x26, 0xec, 0xe1}} + info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(420), modTime: time.Unix(1505683992, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -285,8 +284,8 @@ func keysTestAccount1StatusChainPk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account1-status-chain.pk", size: 489, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0xba, 0x35, 0x1, 0x2b, 0x9d, 0xad, 0xf0, 0x2d, 0x3c, 0x4d, 0x6, 0xb5, 0x22, 0x2, 0x47, 0xd4, 0x1c, 0xf4, 0x31, 0x2f, 0xb, 0x5b, 0x27, 0x5d, 0x43, 0x97, 0x58, 0x2d, 0xf0, 0xe1, 0xbe}} + info := bindataFileInfo{name: "keys/test-account1-status-chain.pk", size: 489, mode: os.FileMode(420), modTime: time.Unix(1511267822, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -305,8 +304,8 @@ func keysTestAccount1Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9, 0x43, 0xc2, 0xf4, 0x8c, 0xc6, 0x64, 0x25, 0x8c, 0x7, 0x8c, 0xa8, 0x89, 0x2b, 0x7b, 0x9b, 0x4f, 0x81, 0xcb, 0xce, 0x3d, 0xef, 0x82, 0x9c, 0x27, 0x27, 0xa9, 0xc5, 0x46, 0x70, 0x30, 0x38}} + info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(420), modTime: time.Unix(1518722857, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -325,8 +324,8 @@ func keysTestAccount2StatusChainPk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account2-status-chain.pk", size: 489, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9, 0xf8, 0x5c, 0xe9, 0x92, 0x96, 0x2d, 0x88, 0x2b, 0x8e, 0x42, 0x3f, 0xa4, 0x93, 0x6c, 0xad, 0xe9, 0xc0, 0x1b, 0x8a, 0x8, 0x8c, 0x5e, 0x7a, 0x84, 0xa2, 0xf, 0x9f, 0x77, 0x58, 0x2c, 0x2c}} + info := bindataFileInfo{name: "keys/test-account2-status-chain.pk", size: 489, mode: os.FileMode(420), modTime: time.Unix(1511267822, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -345,8 +344,8 @@ func keysTestAccount2Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9f, 0x72, 0xd5, 0x95, 0x5c, 0x5a, 0x99, 0x9d, 0x2f, 0x21, 0x83, 0xd7, 0x10, 0x17, 0x4a, 0x3d, 0x65, 0xc9, 0x26, 0x1a, 0x2c, 0x9d, 0x65, 0x63, 0xd2, 0xa0, 0xfc, 0x7c, 0x0, 0x87, 0x38, 0x9f}} + info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(420), modTime: time.Unix(1518722857, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -365,8 +364,8 @@ func keysTestAccount3BeforeEip55Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account3-before-eip55.pk", size: 489, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x40, 0x56, 0xc1, 0x5e, 0x10, 0x6e, 0x28, 0x15, 0x3, 0x4e, 0xc4, 0xc4, 0x71, 0x4d, 0x16, 0x99, 0xcc, 0x1b, 0x63, 0xee, 0x10, 0x20, 0xe4, 0x59, 0x52, 0x3f, 0xc0, 0xad, 0x15, 0x13, 0x72}} + info := bindataFileInfo{name: "keys/test-account3-before-eip55.pk", size: 489, mode: os.FileMode(420), modTime: time.Unix(1511267822, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -385,8 +384,8 @@ func keysWnodepassword() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/wnodepassword", size: 21, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x94, 0x4b, 0xc5, 0xc1, 0xf, 0x43, 0x6b, 0xab, 0xa2, 0x7d, 0x66, 0xae, 0xf8, 0x31, 0x63, 0xd0, 0x7b, 0xec, 0x4d, 0xd6, 0x91, 0x2, 0x29, 0x12, 0x9b, 0x43, 0x43, 0xba, 0x6a, 0x84, 0x4f, 0x25}} + info := bindataFileInfo{name: "keys/wnodepassword", size: 21, mode: os.FileMode(420), modTime: time.Unix(1512728162, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -405,8 +404,8 @@ func testdataJailCommandsJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "testdata/jail/commands.js", size: 7677, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4a, 0x74, 0x1c, 0xb8, 0xbc, 0x8f, 0x6, 0xd3, 0x3f, 0x2d, 0x3f, 0xde, 0xe2, 0x1c, 0xb7, 0x96, 0x13, 0x2a, 0x43, 0xe5, 0xdf, 0xa1, 0x4a, 0xb9, 0xda, 0xa1, 0x36, 0x69, 0x7d, 0xbb, 0x2c, 0x3a}} + info := bindataFileInfo{name: "testdata/jail/commands.js", size: 7677, mode: os.FileMode(420), modTime: time.Unix(1505683992, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -425,8 +424,8 @@ func testdataJailStatusJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "testdata/jail/status.js", size: 3402, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x35, 0x35, 0xca, 0xeb, 0xac, 0x18, 0xe2, 0x16, 0x7f, 0xaa, 0x34, 0x9c, 0xcd, 0xb2, 0x5a, 0x39, 0xc3, 0x5, 0xb8, 0x30, 0x81, 0x39, 0x9f, 0x15, 0x2d, 0x14, 0x1a, 0xef, 0x4e, 0x41, 0x65, 0xaa}} + info := bindataFileInfo{name: "testdata/jail/status.js", size: 3402, mode: os.FileMode(420), modTime: time.Unix(1505683992, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -445,8 +444,8 @@ func testdataJailTxSendContextNoMessageIdJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "testdata/jail/tx-send/context-no-message-id.js", size: 1793, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7d, 0x5f, 0x44, 0x87, 0xd0, 0x35, 0x3c, 0xe, 0xc3, 0x4c, 0xc8, 0x7f, 0x1a, 0x64, 0x92, 0xa, 0x8e, 0x4a, 0xd3, 0x73, 0x59, 0xe0, 0x9b, 0xd2, 0xa2, 0x2b, 0xd4, 0xa9, 0x25, 0xaf, 0xbb, 0x7b}} + info := bindataFileInfo{name: "testdata/jail/tx-send/context-no-message-id.js", size: 1793, mode: os.FileMode(420), modTime: time.Unix(1505683992, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -465,8 +464,8 @@ func testdataJailTxSendMessageIdNoContextJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "testdata/jail/tx-send/message-id-no-context.js", size: 1875, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2, 0xcd, 0x94, 0x54, 0xf5, 0xc0, 0x62, 0x7c, 0x17, 0xa8, 0x2b, 0xf4, 0xf2, 0x87, 0x4f, 0x3d, 0x5d, 0xb9, 0x59, 0x8f, 0x13, 0xe4, 0xac, 0xb1, 0xd5, 0xfa, 0x29, 0x93, 0xbe, 0x45, 0x3, 0x4f}} + info := bindataFileInfo{name: "testdata/jail/tx-send/message-id-no-context.js", size: 1875, mode: os.FileMode(420), modTime: time.Unix(1505683992, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -485,8 +484,8 @@ func testdataJailTxSendNoMessageIdOrContextJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "testdata/jail/tx-send/no-message-id-or-context.js", size: 1354, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x1d, 0xcc, 0x30, 0x33, 0xc2, 0x4a, 0xc1, 0x4c, 0x8c, 0x9d, 0x58, 0x47, 0x3a, 0x24, 0x36, 0xbb, 0x33, 0xec, 0x80, 0x7e, 0xb5, 0xc5, 0x91, 0x24, 0xf5, 0xe, 0x81, 0xc7, 0x83, 0xf, 0x19}} + info := bindataFileInfo{name: "testdata/jail/tx-send/no-message-id-or-context.js", size: 1354, mode: os.FileMode(420), modTime: time.Unix(1505683992, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -505,8 +504,8 @@ func testdataJailTxSendTxSendJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "testdata/jail/tx-send/tx-send.js", size: 3343, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb1, 0xf8, 0x43, 0xf2, 0x8a, 0x6d, 0x84, 0x5, 0x3, 0xe8, 0xb2, 0x3, 0x66, 0x98, 0x4, 0xbe, 0x81, 0xc6, 0x83, 0xfd, 0x13, 0xd5, 0xa6, 0x30, 0x36, 0x34, 0x34, 0xb7, 0x4e, 0x5c, 0xf0, 0x29}} + info := bindataFileInfo{name: "testdata/jail/tx-send/tx-send.js", size: 3343, mode: os.FileMode(420), modTime: time.Unix(1505738069, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -525,8 +524,8 @@ func testdataNodeTestSol() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "testdata/node/test.sol", size: 119, mode: os.FileMode(436), modTime: time.Unix(1515152500, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0x9f, 0x45, 0xd8, 0xc3, 0xbb, 0xe2, 0x33, 0x7a, 0x78, 0x38, 0x99, 0x70, 0x6c, 0x53, 0xea, 0x3e, 0x2c, 0xd0, 0x1d, 0x7e, 0x6, 0x71, 0xb7, 0xc0, 0x27, 0x61, 0x2, 0xbe, 0xba, 0xe3, 0x15}} + info := bindataFileInfo{name: "testdata/node/test.sol", size: 119, mode: os.FileMode(420), modTime: time.Unix(1505683992, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -534,8 +533,8 @@ func testdataNodeTestSol() (*asset, error) { // It returns an error if the asset could not be found or // could not be loaded. func Asset(name string) ([]byte, error) { - canonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[canonicalName]; ok { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) @@ -545,12 +544,6 @@ func Asset(name string) ([]byte, error) { return nil, fmt.Errorf("Asset %s not found", name) } -// AssetString returns the asset contents as a string (instead of a []byte). -func AssetString(name string) (string, error) { - data, err := Asset(name) - return string(data), err -} - // MustAsset is like Asset but panics when Asset would return an error. // It simplifies safe initialization of global variables. func MustAsset(name string) []byte { @@ -562,18 +555,12 @@ func MustAsset(name string) []byte { return a } -// MustAssetString is like AssetString but panics when Asset would return an -// error. It simplifies safe initialization of global variables. -func MustAssetString(name string) string { - return string(MustAsset(name)) -} - // AssetInfo loads and returns the asset info for the given name. // It returns an error if the asset could not be found or // could not be loaded. func AssetInfo(name string) (os.FileInfo, error) { - canonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[canonicalName]; ok { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) @@ -583,33 +570,6 @@ func AssetInfo(name string) (os.FileInfo, error) { return nil, fmt.Errorf("AssetInfo %s not found", name) } -// AssetDigest returns the digest of the file with the given name. It returns an -// error if the asset could not be found or the digest could not be loaded. -func AssetDigest(name string) ([sha256.Size]byte, error) { - canonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[canonicalName]; ok { - a, err := f() - if err != nil { - return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s can't read by error: %v", name, err) - } - return a.digest, nil - } - return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s not found", name) -} - -// Digests returns a map of all known files and their checksums. -func Digests() (map[string][sha256.Size]byte, error) { - mp := make(map[string][sha256.Size]byte, len(_bindata)) - for name := range _bindata { - a, err := _bindata[name]() - if err != nil { - return nil, err - } - mp[name] = a.digest - } - return mp, nil -} - // AssetNames returns the names of the assets. func AssetNames() []string { names := make([]string, 0, len(_bindata)) @@ -622,47 +582,26 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ "scripts/README.md": scriptsReadmeMd, - "scripts/web3.js": scriptsWeb3Js, - - "config/cht.json": configChtJson, - "config/public-chain-accounts.json": configPublicChainAccountsJson, - + "config/staticpeers.json": configStaticpeersJson, "config/status-chain-accounts.json": configStatusChainAccountsJson, - "config/status-chain-genesis.json": configStatusChainGenesisJson, - "config/test-data.json": configTestDataJson, - "keys/bootnode.key": keysBootnodeKey, - "keys/firebaseauthkey": keysFirebaseauthkey, - "keys/test-account1-status-chain.pk": keysTestAccount1StatusChainPk, - "keys/test-account1.pk": keysTestAccount1Pk, - "keys/test-account2-status-chain.pk": keysTestAccount2StatusChainPk, - "keys/test-account2.pk": keysTestAccount2Pk, - "keys/test-account3-before-eip55.pk": keysTestAccount3BeforeEip55Pk, - "keys/wnodepassword": keysWnodepassword, - "testdata/jail/commands.js": testdataJailCommandsJs, - "testdata/jail/status.js": testdataJailStatusJs, - "testdata/jail/tx-send/context-no-message-id.js": testdataJailTxSendContextNoMessageIdJs, - "testdata/jail/tx-send/message-id-no-context.js": testdataJailTxSendMessageIdNoContextJs, - "testdata/jail/tx-send/no-message-id-or-context.js": testdataJailTxSendNoMessageIdOrContextJs, - "testdata/jail/tx-send/tx-send.js": testdataJailTxSendTxSendJs, - "testdata/node/test.sol": testdataNodeTestSol, } @@ -675,15 +614,15 @@ var _bindata = map[string]func() (*asset, error){ // img/ // a.png // b.png -// then AssetDir("data") would return []string{"foo.txt", "img"}, -// AssetDir("data/img") would return []string{"a.png", "b.png"}, -// AssetDir("foo.txt") and AssetDir("notexist") would return an error, and +// then AssetDir("data") would return []string{"foo.txt", "img"} +// AssetDir("data/img") would return []string{"a.png", "b.png"} +// AssetDir("foo.txt") and AssetDir("notexist") would return an error // AssetDir("") will return []string{"data"}. func AssetDir(name string) ([]string, error) { node := _bintree if len(name) != 0 { - canonicalName := strings.Replace(name, "\\", "/", -1) - pathList := strings.Split(canonicalName, "/") + cannonicalName := strings.Replace(name, "\\", "/", -1) + pathList := strings.Split(cannonicalName, "/") for _, p := range pathList { node = node.Children[p] if node == nil { @@ -705,38 +644,37 @@ type bintree struct { Func func() (*asset, error) Children map[string]*bintree } - var _bintree = &bintree{nil, map[string]*bintree{ "config": &bintree{nil, map[string]*bintree{ - "cht.json": &bintree{configChtJson, map[string]*bintree{}}, "public-chain-accounts.json": &bintree{configPublicChainAccountsJson, map[string]*bintree{}}, + "staticpeers.json": &bintree{configStaticpeersJson, map[string]*bintree{}}, "status-chain-accounts.json": &bintree{configStatusChainAccountsJson, map[string]*bintree{}}, - "status-chain-genesis.json": &bintree{configStatusChainGenesisJson, map[string]*bintree{}}, - "test-data.json": &bintree{configTestDataJson, map[string]*bintree{}}, + "status-chain-genesis.json": &bintree{configStatusChainGenesisJson, map[string]*bintree{}}, + "test-data.json": &bintree{configTestDataJson, map[string]*bintree{}}, }}, "keys": &bintree{nil, map[string]*bintree{ - "bootnode.key": &bintree{keysBootnodeKey, map[string]*bintree{}}, - "firebaseauthkey": &bintree{keysFirebaseauthkey, map[string]*bintree{}}, + "bootnode.key": &bintree{keysBootnodeKey, map[string]*bintree{}}, + "firebaseauthkey": &bintree{keysFirebaseauthkey, map[string]*bintree{}}, "test-account1-status-chain.pk": &bintree{keysTestAccount1StatusChainPk, map[string]*bintree{}}, - "test-account1.pk": &bintree{keysTestAccount1Pk, map[string]*bintree{}}, + "test-account1.pk": &bintree{keysTestAccount1Pk, map[string]*bintree{}}, "test-account2-status-chain.pk": &bintree{keysTestAccount2StatusChainPk, map[string]*bintree{}}, - "test-account2.pk": &bintree{keysTestAccount2Pk, map[string]*bintree{}}, + "test-account2.pk": &bintree{keysTestAccount2Pk, map[string]*bintree{}}, "test-account3-before-eip55.pk": &bintree{keysTestAccount3BeforeEip55Pk, map[string]*bintree{}}, - "wnodepassword": &bintree{keysWnodepassword, map[string]*bintree{}}, + "wnodepassword": &bintree{keysWnodepassword, map[string]*bintree{}}, }}, "scripts": &bintree{nil, map[string]*bintree{ "README.md": &bintree{scriptsReadmeMd, map[string]*bintree{}}, - "web3.js": &bintree{scriptsWeb3Js, map[string]*bintree{}}, + "web3.js": &bintree{scriptsWeb3Js, map[string]*bintree{}}, }}, "testdata": &bintree{nil, map[string]*bintree{ "jail": &bintree{nil, map[string]*bintree{ "commands.js": &bintree{testdataJailCommandsJs, map[string]*bintree{}}, - "status.js": &bintree{testdataJailStatusJs, map[string]*bintree{}}, + "status.js": &bintree{testdataJailStatusJs, map[string]*bintree{}}, "tx-send": &bintree{nil, map[string]*bintree{ - "context-no-message-id.js": &bintree{testdataJailTxSendContextNoMessageIdJs, map[string]*bintree{}}, - "message-id-no-context.js": &bintree{testdataJailTxSendMessageIdNoContextJs, map[string]*bintree{}}, + "context-no-message-id.js": &bintree{testdataJailTxSendContextNoMessageIdJs, map[string]*bintree{}}, + "message-id-no-context.js": &bintree{testdataJailTxSendMessageIdNoContextJs, map[string]*bintree{}}, "no-message-id-or-context.js": &bintree{testdataJailTxSendNoMessageIdOrContextJs, map[string]*bintree{}}, - "tx-send.js": &bintree{testdataJailTxSendTxSendJs, map[string]*bintree{}}, + "tx-send.js": &bintree{testdataJailTxSendTxSendJs, map[string]*bintree{}}, }}, }}, "node": &bintree{nil, map[string]*bintree{ @@ -745,7 +683,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ }}, }} -// RestoreAsset restores an asset under the given directory. +// RestoreAsset restores an asset under the given directory func RestoreAsset(dir, name string) error { data, err := Asset(name) if err != nil { @@ -763,10 +701,14 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - return os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) + err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) + if err != nil { + return err + } + return nil } -// RestoreAssets restores an asset under the given directory recursively. +// RestoreAssets restores an asset under the given directory recursively func RestoreAssets(dir, name string) error { children, err := AssetDir(name) // File @@ -784,6 +726,7 @@ func RestoreAssets(dir, name string) error { } func _filePath(dir, name string) string { - canonicalName := strings.Replace(name, "\\", "/", -1) - return filepath.Join(append([]string{dir}, strings.Split(canonicalName, "/")...)...) + cannonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } + diff --git a/static/config/cht.json b/static/config/staticpeers.json similarity index 77% rename from static/config/cht.json rename to static/config/staticpeers.json index cf3037063..cfdb33bc0 100644 --- a/static/config/cht.json +++ b/static/config/staticpeers.json @@ -65,10 +65,26 @@ "networkID": 1, "genesisHash": "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3", "prod": { - "bootnodes": [] + "bootnodes": [ + "enode://71bb01b58165e3262aea2d3b06dbf9abb8d5512d96e5000e7e41ab2138b47be685935d3eb119fc25e1413db00d8db231fd9d59555a1cd75229821559b6a4eb51@51.15.85.243:30303", + "enode://7afd119c549a7ab02b3f7bd77ef3490b6d660d5c49d0734a0c8bb23195ced4ace0bf5cde673cd5cfd07dd8d759277f3d8408eb73dc3c217bbe00f0027d06eee9@51.15.85.243:30305", + "enode://da8af0869e4e8047f21c1ac016b94a7b7d8e935dddd28d4272f88a1ceaee7c15e7deec9b6fd195ed3bc43748893111ebf2b2479ff44a8025ab8d598f3c97b589@51.15.85.243:30307", + + "enode://80ce1b1fd0473d1acf2c94d0c852ea6a703a4a4538aa2e39834303995d1dec032b71a2f3368cea0043145a84f8f98a1c7fe99484707ede671d23eb27b7792524@163.172.176.22:30303", + "enode://8aa650ae7145ce65915c17ab0d369a9fcf3b16bc932a603d1bf9edf782010b54a0a069bbc607a3cf32e644276882c0d5b9b2d7e7bda7c7a10e635515746a6aa4@163.172.176.22:30305", + "enode://277b7896b63baae5f0e31575df5cd4912a554e50af33c0abecb95acd56000f0f69aeff2569db20b411fcb53cfd39f0eade27b8c57006b094b4d5c3091ed13458@163.172.176.22:30307" + ] }, "dev": { - "bootnodes": [] + "bootnodes": [ + "enode://71bb01b58165e3262aea2d3b06dbf9abb8d5512d96e5000e7e41ab2138b47be685935d3eb119fc25e1413db00d8db231fd9d59555a1cd75229821559b6a4eb51@51.15.85.243:30303", + "enode://7afd119c549a7ab02b3f7bd77ef3490b6d660d5c49d0734a0c8bb23195ced4ace0bf5cde673cd5cfd07dd8d759277f3d8408eb73dc3c217bbe00f0027d06eee9@51.15.85.243:30305", + "enode://da8af0869e4e8047f21c1ac016b94a7b7d8e935dddd28d4272f88a1ceaee7c15e7deec9b6fd195ed3bc43748893111ebf2b2479ff44a8025ab8d598f3c97b589@51.15.85.243:30307", + + "enode://80ce1b1fd0473d1acf2c94d0c852ea6a703a4a4538aa2e39834303995d1dec032b71a2f3368cea0043145a84f8f98a1c7fe99484707ede671d23eb27b7792524@163.172.176.22:30303", + "enode://8aa650ae7145ce65915c17ab0d369a9fcf3b16bc932a603d1bf9edf782010b54a0a069bbc607a3cf32e644276882c0d5b9b2d7e7bda7c7a10e635515746a6aa4@163.172.176.22:30305", + "enode://277b7896b63baae5f0e31575df5cd4912a554e50af33c0abecb95acd56000f0f69aeff2569db20b411fcb53cfd39f0eade27b8c57006b094b4d5c3091ed13458@163.172.176.22:30307" + ] } } ]