fix keys and glide

This commit is contained in:
Ethan Buchman 2017-03-14 17:28:49 -04:00
parent fa5d7b30f2
commit de5506dd8f
10 changed files with 118 additions and 80 deletions

View File

@ -99,24 +99,24 @@ const genesisJSON = `{
const key1JSON = `{
"address": "1B1BE55F969F54064628A63B9559E7C21C925165",
"priv_key": [
1,
"C70D6934B4F55F1B7BC33B56B9CA8A2061384AFC19E91E44B40C4BBA182953D1619D3678599971ED29C7529DDD4DA537B97129893598A17C82E3AC9A8BA95279"
],
"pub_key": [
1,
"619D3678599971ED29C7529DDD4DA537B97129893598A17C82E3AC9A8BA95279"
]
"priv_key": {
"type": "ed25519",
"data": "C70D6934B4F55F1B7BC33B56B9CA8A2061384AFC19E91E44B40C4BBA182953D1619D3678599971ED29C7529DDD4DA537B97129893598A17C82E3AC9A8BA95279"
},
"pub_key": {
"type": "ed25519",
"data": "619D3678599971ED29C7529DDD4DA537B97129893598A17C82E3AC9A8BA95279"
}
}`
const key2JSON = `{
"address": "1DA7C74F9C219229FD54CC9F7386D5A3839F0090",
"priv_key": [
1,
"34BAE9E65CE8245FAD035A0E3EED9401BDE8785FFB3199ACCF8F5B5DDF7486A8352195DA90CB0B90C24295B90AEBA25A5A71BC61BAB2FE2387241D439698B7B8"
],
"pub_key": [
1,
"352195DA90CB0B90C24295B90AEBA25A5A71BC61BAB2FE2387241D439698B7B8"
]
"priv_key": {
"type": "ed25519",
"data": "34BAE9E65CE8245FAD035A0E3EED9401BDE8785FFB3199ACCF8F5B5DDF7486A8352195DA90CB0B90C24295B90AEBA25A5A71BC61BAB2FE2387241D439698B7B8"
},
"pub_key": {
"type": "ed25519",
"data": "352195DA90CB0B90C24295B90AEBA25A5A71BC61BAB2FE2387241D439698B7B8"
}
}`

View File

@ -1,15 +1,18 @@
package commands
import (
"encoding/hex"
"encoding/json"
"fmt"
"io/ioutil"
"path"
"strings"
"github.com/urfave/cli"
cmn "github.com/tendermint/go-common"
"github.com/tendermint/go-crypto"
"github.com/tendermint/go-wire"
// "github.com/tendermint/go-wire"
)
var (
@ -32,18 +35,37 @@ var (
func cmdNewKey(c *cli.Context) error {
key := genKey()
keyJSON := wire.JSONBytesPretty(key)
fmt.Println(string(keyJSON))
// keyJSON := wire.JSONBytesPretty(key)
keyJSON, err := json.MarshalIndent(key, "", "\t")
if err != nil {
return err
}
fmt.Println(keyJSON)
return nil
}
//---------------------------------------------
// simple implementation of a key
type Address [20]byte
func (a Address) MarshalJSON() ([]byte, error) {
return []byte(fmt.Sprintf(`"%x"`, a[:])), nil
}
func (a *Address) UnmarshalJSON(addrHex []byte) error {
addr, err := hex.DecodeString(strings.Trim(string(addrHex), `"`))
if err != nil {
return err
}
copy(a[:], addr)
return nil
}
type Key struct {
Address []byte `json:"address"`
PubKey crypto.PubKey `json:"pub_key"`
PrivKey crypto.PrivKey `json:"priv_key"`
Address Address `json:"address"`
PubKey crypto.PubKeyS `json:"pub_key"`
PrivKey crypto.PrivKeyS `json:"priv_key"`
}
// Implements Signer
@ -54,10 +76,13 @@ func (k *Key) Sign(msg []byte) crypto.Signature {
// Generates a new validator with private key.
func genKey() *Key {
privKey := crypto.GenPrivKeyEd25519()
addrBytes := privKey.PubKey().Address()
var addr Address
copy(addr[:], addrBytes)
return &Key{
Address: privKey.PubKey().Address(),
PubKey: privKey.PubKey(),
PrivKey: privKey,
Address: addr,
PubKey: crypto.PubKeyS{privKey.PubKey()},
PrivKey: crypto.PrivKeyS{privKey},
}
}
@ -67,7 +92,9 @@ func LoadKey(keyFile string) *Key {
if err != nil {
cmn.Exit(err.Error())
}
key := wire.ReadJSON(&Key{}, keyJSONBytes, &err).(*Key)
key := new(Key)
err = json.Unmarshal(keyJSONBytes, key)
// key := wire.ReadJSON(&Key{}, keyJSONBytes, &err).(*Key)
if err != nil {
cmn.Exit(cmn.Fmt("Error reading key from %v: %v\n", filePath, err))
}

View File

@ -76,17 +76,25 @@ func cmdStart(c *cli.Context) error {
basecoinApp.RegisterPlugin(p.newPlugin())
}
// If genesis file exists, set key-value options
genesisFile := path.Join(basecoinDir, "genesis.json")
if _, err := os.Stat(genesisFile); err == nil {
err := basecoinApp.LoadGenesis(genesisFile)
if err != nil {
return errors.New(cmn.Fmt("%+v", err))
fmt.Println("CHAIN ID", basecoinApp.GetState().GetChainID())
// if chain_id has not been set yet, load the genesis.
// else, assume it's been loaded
if basecoinApp.GetState().GetChainID() == "" {
// If genesis file exists, set key-value options
genesisFile := path.Join(basecoinDir, "genesis.json")
if _, err := os.Stat(genesisFile); err == nil {
err := basecoinApp.LoadGenesis(genesisFile)
if err != nil {
return errors.New(cmn.Fmt("%+v", err))
}
} else {
fmt.Printf("No genesis file at %s, skipping...\n", genesisFile)
}
} else {
fmt.Printf("No genesis file at %s, skipping...\n", genesisFile)
}
fmt.Println("CHAIN ID", basecoinApp.GetState().GetChainID())
if c.Bool("without-tendermint") {
// run just the abci app/server
if err := startBasecoinABCI(c, basecoinApp); err != nil {

View File

@ -86,7 +86,7 @@ func cmdSendTx(c *cli.Context) error {
privKey := LoadKey(fromFile)
// get the sequence number for the tx
sequence, err := getSeq(c, privKey.Address)
sequence, err := getSeq(c, privKey.Address[:])
if err != nil {
return err
}
@ -145,7 +145,7 @@ func AppTx(c *cli.Context, name string, data []byte) error {
privKey := LoadKey(fromFile)
sequence, err := getSeq(c, privKey.Address)
sequence, err := getSeq(c, privKey.Address[:])
if err != nil {
return err
}

View File

@ -1,12 +1,12 @@
{
"address": "D397BC62B435F3CF50570FBAB4340FE52C60858F",
"priv_key": [
1,
"39E75AA1CF7BC710585977EFC375CD1730519186BD231478C339F2819C3C26E7B3588BDC92015ED3CDB6F57A86379E8C79A7111063610B7E625487C76496F4DF"
],
"pub_key": [
1,
"B3588BDC92015ED3CDB6F57A86379E8C79A7111063610B7E625487C76496F4DF"
]
"priv_key": {
"type": "ed25519",
"data": "39E75AA1CF7BC710585977EFC375CD1730519186BD231478C339F2819C3C26E7B3588BDC92015ED3CDB6F57A86379E8C79A7111063610B7E625487C76496F4DF"
},
"pub_key": {
"type": "ed25519",
"data": "B3588BDC92015ED3CDB6F57A86379E8C79A7111063610B7E625487C76496F4DF"
}
}

View File

@ -1,11 +1,11 @@
{
"address": "053BA0F19616AFF975C8756A2CBFF04F408B4D47",
"priv_key": [
1,
"22920C428043D869987F253D7C9B2305E7010642C40CE88A52C9F6CE5ACC42080628C8E6C2D50B15764B443394E06C6A64F3082CE966A2A8C1A55A4D63D0FC5D"
],
"pub_key": [
1,
"0628C8E6C2D50B15764B443394E06C6A64F3082CE966A2A8C1A55A4D63D0FC5D"
]
"priv_key": {
"type": "ed25519",
"data": "22920C428043D869987F253D7C9B2305E7010642C40CE88A52C9F6CE5ACC42080628C8E6C2D50B15764B443394E06C6A64F3082CE966A2A8C1A55A4D63D0FC5D"
},
"pub_key": {
"type": "ed25519",
"data": "0628C8E6C2D50B15764B443394E06C6A64F3082CE966A2A8C1A55A4D63D0FC5D"
}
}

View File

@ -84,7 +84,7 @@ Now, let's create a new private key:
basecoin key new > $BCHOME/key.json
```
Here's what my `key.json looks like (TODO: change `keys` so it looks like this ...):
Here's what my `key.json looks like:
```json
{

33
glide.lock generated
View File

@ -1,34 +1,34 @@
hash: 3869944d14a8df914ffcad02c2ef3548173daba51c5ea697767f8af77c07b348
updated: 2017-03-06T05:37:03.828355251-05:00
hash: c71c0d6c409bfddb4c4b471d8445f59cebd2cd41e1635a90d6facd81bd09a5e0
updated: 2017-03-14T17:02:44.512359631-04:00
imports:
- name: github.com/btcsuite/btcd
version: d06c0bb181529331be8f8d9350288c420d9e60e4
version: 583684b21bfbde9b5fc4403916fd7c807feb0289
subpackages:
- btcec
- name: github.com/BurntSushi/toml
version: 99064174e013895bbd9b025c31100bd1d9b590ca
version: e643e9ef00b049d75de26e61109c5ea01885cd21
- name: github.com/ebuchman/fail-test
version: 13f91f14c826314205cdbed1ec8ac8bf08e03381
version: 95f809107225be108efcf10a3509e4ea6ceef3c4
- name: github.com/go-stack/stack
version: 100eb0c0a9c5b306ca2fb4f165df21d80ada4b82
- name: github.com/golang/protobuf
version: 8ee79997227bf9b34611aee7946ae64735e6fd93
version: c9c7427a2a70d2eb3bafa0ab2dc163e45f143317
subpackages:
- proto
- name: github.com/golang/snappy
version: d9eb7a3d35ec988b8585d4a0068e462c27d28380
version: 553a641470496b2327abcac10b36396bd98e45c9
- name: github.com/gorilla/websocket
version: 3ab3a8b8831546bd18fd182c20687ca853b2bb13
- name: github.com/jmhodges/levigo
version: c42d9e0ca023e2198120196f842701bb4c55d7b9
- name: github.com/mattn/go-colorable
version: d228849504861217f796da67fae4f6e347643f15
version: a392f450ea64cee2b268dfaacdc2502b50a22b18
- name: github.com/mattn/go-isatty
version: 30a891c33c7cde7b02a981314b4228ec99380cca
version: 57fdcb988a5c543893cc61bce354a6e24ab70022
- name: github.com/pkg/errors
version: 645ef00459ed84a119197bfb8d8205042c6df63d
version: bfd5150e4e41705ded2129ec33379de1cb90b513
- name: github.com/syndtr/goleveldb
version: 23851d93a2292dcc56e71a18ec9e0624d84a0f65
version: 3c5717caf1475fd25964109a0fc640bd150fce43
subpackages:
- leveldb
- leveldb/cache
@ -43,7 +43,7 @@ imports:
- leveldb/table
- leveldb/util
- name: github.com/tendermint/abci
version: 1236e8fb6eee3a63909f4014a8e84385ead7933d
version: af792eac777de757cd496349a5f6b5313738fcbc
subpackages:
- client
- example/dummy
@ -117,7 +117,7 @@ imports:
- name: github.com/urfave/cli
version: 0bdeddeeb0f650497d603c4ad7b20cfe685682f6
- name: golang.org/x/crypto
version: 7c6cc321c680f03b9ef0764448e780704f486b51
version: 728b753d0135da6801d45a38e6f43ff55779c5c2
subpackages:
- curve25519
- nacl/box
@ -128,7 +128,7 @@ imports:
- ripemd160
- salsa20/salsa
- name: golang.org/x/net
version: 61557ac0112b576429a0df080e1c2cef5dfbb642
version: a6577fac2d73be281a500b310739095313165611
subpackages:
- context
- http2
@ -138,16 +138,17 @@ imports:
- lex/httplex
- trace
- name: golang.org/x/sys
version: d75a52659825e75fff6158388dddc6a5b04f9ba5
version: 99f16d856c9836c42d24e7ab64ea72916925fa97
subpackages:
- unix
- name: google.golang.org/grpc
version: cbcceb2942a489498cf22b2f918536e819d33f0a
version: 0713829b980f4ddd276689a36235c5fcc82a21bf
subpackages:
- codes
- credentials
- grpclog
- internal
- keepalive
- metadata
- naming
- peer

View File

@ -1,22 +1,22 @@
package: github.com/tendermint/basecoin
import:
- package: github.com/tendermint/go-common
version: develop
version: master
- package: github.com/tendermint/go-crypto
version: develop
version: master
- package: github.com/tendermint/go-events
version: develop
version: master
- package: github.com/tendermint/go-logger
version: develop
version: master
- package: github.com/tendermint/go-rpc
version: develop
version: master
- package: github.com/tendermint/go-wire
version: develop
version: master
- package: github.com/tendermint/merkleeyes
version: develop
version: master
- package: github.com/tendermint/tendermint
version: develop
version: master
- package: github.com/tendermint/abci
version: develop
version: master
- package: github.com/gorilla/websocket
version: v1.1.0

View File

@ -28,12 +28,14 @@ func NewState(store types.KVStore) *State {
func (s *State) SetChainID(chainID string) {
s.chainID = chainID
s.store.Set([]byte("base/chain_id"), []byte(chainID))
}
func (s *State) GetChainID() string {
if s.chainID == "" {
PanicSanity("Expected to have set SetChainID")
if s.chainID != "" {
return s.chainID
}
s.chainID = string(s.store.Get([]byte("base/chain_id")))
return s.chainID
}