fix PK encodings

This commit is contained in:
rigelrozanski 2018-04-16 16:47:28 -04:00
parent e584d5acac
commit 265670297c
3 changed files with 28 additions and 64 deletions

View File

@ -23,8 +23,8 @@ func TestGaiaCLI(t *testing.T) {
tests.ExecuteT(t, "gaiad unsafe_reset_all") tests.ExecuteT(t, "gaiad unsafe_reset_all")
pass := "1234567890" pass := "1234567890"
executeWrite(t, false, "gaiacli keys delete foo", pass) executeWrite(t, "gaiacli keys delete foo", pass)
executeWrite(t, false, "gaiacli keys delete bar", pass) executeWrite(t, "gaiacli keys delete bar", pass)
masterKey, chainID := executeInit(t, "gaiad init") masterKey, chainID := executeInit(t, "gaiad init")
// get a free port, also setup some common flags // get a free port, also setup some common flags
@ -35,8 +35,8 @@ func TestGaiaCLI(t *testing.T) {
cmd, _, _ := tests.GoExecuteT(t, fmt.Sprintf("gaiad start --rpc.laddr=%v", servAddr)) cmd, _, _ := tests.GoExecuteT(t, fmt.Sprintf("gaiad start --rpc.laddr=%v", servAddr))
defer cmd.Process.Kill() defer cmd.Process.Kill()
executeWrite(t, false, "gaiacli keys add foo --recover", pass, masterKey) executeWrite(t, "gaiacli keys add foo --recover", pass, masterKey)
executeWrite(t, false, "gaiacli keys add bar", pass) executeWrite(t, "gaiacli keys add bar", pass)
fooAddr, fooPubKey := executeGetAddr(t, "gaiacli keys show foo --output=json") fooAddr, fooPubKey := executeGetAddr(t, "gaiacli keys show foo --output=json")
barAddr, _ := executeGetAddr(t, "gaiacli keys show bar --output=json") barAddr, _ := executeGetAddr(t, "gaiacli keys show bar --output=json")
@ -44,7 +44,7 @@ func TestGaiaCLI(t *testing.T) {
fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", fooAddr, flags)) fooAcc := executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", fooAddr, flags))
assert.Equal(t, int64(100000), fooAcc.GetCoins().AmountOf("fermion")) assert.Equal(t, int64(100000), fooAcc.GetCoins().AmountOf("fermion"))
executeWrite(t, false, fmt.Sprintf("gaiacli send %v --amount=10fermion --to=%v --name=foo", flags, barAddr), pass) executeWrite(t, fmt.Sprintf("gaiacli send %v --amount=10fermion --to=%v --name=foo", flags, barAddr), pass)
time.Sleep(time.Second * 3) // waiting for some blocks to pass time.Sleep(time.Second * 3) // waiting for some blocks to pass
barAcc := executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", barAddr, flags)) barAcc := executeGetAccount(t, fmt.Sprintf("gaiacli account %v %v", barAddr, flags))
@ -64,25 +64,25 @@ func TestGaiaCLI(t *testing.T) {
//--pubkey string PubKey of the validator-candidate //--pubkey string PubKey of the validator-candidate
//--sequence int Sequence number to sign the tx //--sequence int Sequence number to sign the tx
//--website string optional website //--website string optional website
_ = fooPubKey //_ = fooPubKey
//declStr := fmt.Sprintf("gaiacli declare-candidacy %v", flags) declStr := fmt.Sprintf("gaiacli declare-candidacy %v", flags)
//declStr += fmt.Sprintf(" --name=%v", "foo") declStr += fmt.Sprintf(" --name=%v", "foo")
//declStr += fmt.Sprintf(" --address-candidate=%v", fooAddr) declStr += fmt.Sprintf(" --address-candidate=%v", fooAddr)
//declStr += fmt.Sprintf(" --pubkey=%v", fooPubKey) declStr += fmt.Sprintf(" --pubkey=%v", fooPubKey)
//declStr += fmt.Sprintf(" --amount=%v", "3fermion") declStr += fmt.Sprintf(" --amount=%v", "3fermion")
//declStr += fmt.Sprintf(" --moniker=%v", "foo-vally") declStr += fmt.Sprintf(" --moniker=%v", "foo-vally")
//fmt.Printf("debug declStr: %v\n", declStr) fmt.Printf("debug declStr: %v\n", declStr)
//executeWrite(t, true, declStr, pass) executeWrite(t, declStr, pass)
} }
func executeWrite(t *testing.T, print bool, cmdStr string, writes ...string) { func executeWrite(t *testing.T, cmdStr string, writes ...string) {
cmd, wc, rc := tests.GoExecuteT(t, cmdStr) cmd, wc, _ := tests.GoExecuteT(t, cmdStr)
if print { //if print {
bz := make([]byte, 100000) //bz := make([]byte, 100000)
rc.Read(bz) //rc.Read(bz)
fmt.Printf("debug read: %v\n", string(bz)) //fmt.Printf("debug read: %v\n", string(bz))
} //}
for _, write := range writes { for _, write := range writes {
_, err := wc.Write([]byte(write + "\n")) _, err := wc.Write([]byte(write + "\n"))

View File

@ -5,7 +5,6 @@ import (
"testing" "testing"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
crypto "github.com/tendermint/go-crypto"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
@ -315,15 +314,6 @@ func TestGetAccUpdateValidators(t *testing.T) {
} }
} }
// to compare pubkeys between abci pubkey and crypto.PubKey
wirePK := func(pk crypto.PubKey) []byte {
pkBytes, err := keeper.cdc.MarshalBinary(pk)
if err != nil {
panic(err)
}
return pkBytes
}
// test from nothing to something // test from nothing to something
// candidate set: {} -> {c1, c3} // candidate set: {} -> {c1, c3}
// validator set: {} -> {c1, c3} // validator set: {} -> {c1, c3}
@ -478,7 +468,7 @@ func TestGetAccUpdateValidators(t *testing.T) {
acc = keeper.getAccUpdateValidators(ctx) acc = keeper.getAccUpdateValidators(ctx)
require.Equal(t, 2, len(acc), "%v", acc) require.Equal(t, 2, len(acc), "%v", acc)
assert.Equal(t, wirePK(candidatesIn[0].PubKey), acc[0].PubKey) assert.Equal(t, candidatesIn[0].PubKey.Bytes(), acc[0].PubKey)
assert.Equal(t, int64(0), acc[0].Power) assert.Equal(t, int64(0), acc[0].Power)
assert.Equal(t, vals[0].abciValidator(keeper.cdc), acc[1]) assert.Equal(t, vals[0].abciValidator(keeper.cdc), acc[1])
@ -503,10 +493,10 @@ func TestGetAccUpdateValidators(t *testing.T) {
require.Equal(t, 0, len(candidates)) require.Equal(t, 0, len(candidates))
acc = keeper.getAccUpdateValidators(ctx) acc = keeper.getAccUpdateValidators(ctx)
require.Equal(t, 4, len(acc)) require.Equal(t, 4, len(acc))
assert.Equal(t, wirePK(candidatesIn[1].PubKey), acc[0].PubKey) assert.Equal(t, candidatesIn[1].PubKey.Bytes(), acc[0].PubKey)
assert.Equal(t, wirePK(candidatesIn[2].PubKey), acc[1].PubKey) assert.Equal(t, candidatesIn[2].PubKey.Bytes(), acc[1].PubKey)
assert.Equal(t, wirePK(candidatesIn[3].PubKey), acc[2].PubKey) assert.Equal(t, candidatesIn[3].PubKey.Bytes(), acc[2].PubKey)
assert.Equal(t, wirePK(candidatesIn[4].PubKey), acc[3].PubKey) assert.Equal(t, candidatesIn[4].PubKey.Bytes(), acc[3].PubKey)
assert.Equal(t, int64(0), acc[0].Power) assert.Equal(t, int64(0), acc[0].Power)
assert.Equal(t, int64(0), acc[1].Power) assert.Equal(t, int64(0), acc[1].Power)
assert.Equal(t, int64(0), acc[2].Power) assert.Equal(t, int64(0), acc[2].Power)

View File

@ -1,8 +1,6 @@
package stake package stake
import ( import (
"encoding/hex"
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"
abci "github.com/tendermint/abci/types" abci "github.com/tendermint/abci/types"
@ -133,20 +131,8 @@ type Validator struct {
// abci validator from stake validator type // abci validator from stake validator type
func (v Validator) abciValidator(cdc *wire.Codec) abci.Validator { func (v Validator) abciValidator(cdc *wire.Codec) abci.Validator {
//pkBytes, err := cdc.MarshalBinary(v.PubKey)
//if err != nil {
//panic(err)
//}
//return abci.Validator{
//PubKey: pkBytes,
//Power: v.Power.Evaluate(),
//}
TypeDistinguisher, err := hex.DecodeString("1624de6220")
if err != nil {
panic(err)
}
return abci.Validator{ return abci.Validator{
PubKey: append(TypeDistinguisher, v.PubKey.Bytes()...), PubKey: v.PubKey.Bytes(),
Power: v.Power.Evaluate(), Power: v.Power.Evaluate(),
} }
} }
@ -154,20 +140,8 @@ func (v Validator) abciValidator(cdc *wire.Codec) abci.Validator {
// abci validator from stake validator type // abci validator from stake validator type
// with zero power used for validator updates // with zero power used for validator updates
func (v Validator) abciValidatorZero(cdc *wire.Codec) abci.Validator { func (v Validator) abciValidatorZero(cdc *wire.Codec) abci.Validator {
//pkBytes, err := cdc.MarshalBinary(v.PubKey)
//if err != nil {
//panic(err)
//}
//return abci.Validator{
//PubKey: pkBytes,
//Power: 0,
//}
TypeDistinguisher, err := hex.DecodeString("1624de6220")
if err != nil {
panic(err)
}
return abci.Validator{ return abci.Validator{
PubKey: append(TypeDistinguisher, v.PubKey.Bytes()...), PubKey: v.PubKey.Bytes(),
Power: 0, Power: 0,
} }
} }