Update ibc imports

This commit is contained in:
Ethan Frey 2017-10-20 20:36:12 +02:00
parent 624133ad92
commit 40bb1fdca5
6 changed files with 43 additions and 44 deletions

View File

@ -80,13 +80,13 @@ func postPacketTxCmd(cmd *cobra.Command, args []string) error {
return txcmd.DoTx(post.Wrap())
}
func readSeed() (seed certifiers.Seed, err error) {
func readSeed() (fc certifiers.FullCommit, err error) {
name := viper.GetString(FlagSeed)
if name == "" {
return seed, errors.New("You must specify a seed file")
return fc, errors.New("You must specify a commit file")
}
err = readFile(name, &seed)
err = readFile(name, &fc)
return
}

View File

@ -28,19 +28,19 @@ func TestIBCRegister(t *testing.T) {
appHash2 := []byte{12, 34, 56, 78}
// badSeed doesn't validate
badSeed := genEmptySeed(keys2, "chain-2", 123, appHash, len(keys2))
badSeed := genEmptyCommit(keys2, "chain-2", 123, appHash, len(keys2))
badSeed.Header.AppHash = appHash2
cases := []struct {
seed certifiers.Seed
seed certifiers.FullCommit
checker errors.CheckErr
}{
{
genEmptySeed(keys, "chain-1", 100, appHash, len(keys)),
genEmptyCommit(keys, "chain-1", 100, appHash, len(keys)),
errors.NoErr,
},
{
genEmptySeed(keys, "chain-1", 200, appHash, len(keys)),
genEmptyCommit(keys, "chain-1", 200, appHash, len(keys)),
IsAlreadyRegisteredErr,
},
{
@ -48,7 +48,7 @@ func TestIBCRegister(t *testing.T) {
IsInvalidCommitErr,
},
{
genEmptySeed(keys2, "chain-2", 123, appHash2, 5),
genEmptyCommit(keys2, "chain-2", 123, appHash2, 5),
errors.NoErr,
},
}
@ -78,45 +78,45 @@ func TestIBCRegisterPermissions(t *testing.T) {
foobaz := sdk.Actor{App: "foo", Address: []byte("baz")}
cases := []struct {
seed certifiers.Seed
seed certifiers.FullCommit
registrar sdk.Actor
signer sdk.Actor
checker errors.CheckErr
}{
// no sig, no registrar
{
seed: genEmptySeed(keys, "chain-1", 100, appHash, len(keys)),
seed: genEmptyCommit(keys, "chain-1", 100, appHash, len(keys)),
checker: errors.NoErr,
},
// sig, no registrar
{
seed: genEmptySeed(keys, "chain-2", 100, appHash, len(keys)),
seed: genEmptyCommit(keys, "chain-2", 100, appHash, len(keys)),
signer: foobaz,
checker: errors.NoErr,
},
// registrar, no sig
{
seed: genEmptySeed(keys, "chain-3", 100, appHash, len(keys)),
seed: genEmptyCommit(keys, "chain-3", 100, appHash, len(keys)),
registrar: foobar,
checker: errors.IsUnauthorizedErr,
},
// registrar, wrong sig
{
seed: genEmptySeed(keys, "chain-4", 100, appHash, len(keys)),
seed: genEmptyCommit(keys, "chain-4", 100, appHash, len(keys)),
signer: foobaz,
registrar: foobar,
checker: errors.IsUnauthorizedErr,
},
// registrar, wrong sig
{
seed: genEmptySeed(keys, "chain-5", 100, appHash, len(keys)),
seed: genEmptyCommit(keys, "chain-5", 100, appHash, len(keys)),
signer: baz,
registrar: foobar,
checker: errors.IsUnauthorizedErr,
},
// registrar, proper sig
{
seed: genEmptySeed(keys, "chain-6", 100, appHash, len(keys)),
seed: genEmptyCommit(keys, "chain-6", 100, appHash, len(keys)),
signer: foobar,
registrar: foobar,
checker: errors.NoErr,
@ -151,7 +151,7 @@ func TestIBCUpdate(t *testing.T) {
keys := certifiers.GenValKeys(7)
appHash := []byte{0, 4, 7, 23}
start := 100 // initial height
root := genEmptySeed(keys, "chain-1", 100, appHash, len(keys))
root := genEmptyCommit(keys, "chain-1", 100, appHash, len(keys))
keys2 := keys.Extend(2)
keys3 := keys2.Extend(2)
@ -165,47 +165,47 @@ func TestIBCUpdate(t *testing.T) {
require.Nil(err, "%+v", err)
cases := []struct {
seed certifiers.Seed
seed certifiers.FullCommit
checker errors.CheckErr
}{
// same validator, higher up
{
genEmptySeed(keys, "chain-1", start+50, []byte{22}, len(keys)),
genEmptyCommit(keys, "chain-1", start+50, []byte{22}, len(keys)),
errors.NoErr,
},
// same validator, between existing (not most recent)
{
genEmptySeed(keys, "chain-1", start+5, []byte{15, 43}, len(keys)),
genEmptyCommit(keys, "chain-1", start+5, []byte{15, 43}, len(keys)),
errors.NoErr,
},
// same validators, before root of trust
{
genEmptySeed(keys, "chain-1", start-8, []byte{11, 77}, len(keys)),
genEmptyCommit(keys, "chain-1", start-8, []byte{11, 77}, len(keys)),
IsHeaderNotFoundErr,
},
// insufficient signatures
{
genEmptySeed(keys, "chain-1", start+60, []byte{24}, len(keys)/2),
genEmptyCommit(keys, "chain-1", start+60, []byte{24}, len(keys)/2),
IsInvalidCommitErr,
},
// unregistered chain
{
genEmptySeed(keys, "chain-2", start+60, []byte{24}, len(keys)/2),
genEmptyCommit(keys, "chain-2", start+60, []byte{24}, len(keys)/2),
IsNotRegisteredErr,
},
// too much change (keys -> keys3)
{
genEmptySeed(keys3, "chain-1", start+100, []byte{22}, len(keys3)),
genEmptyCommit(keys3, "chain-1", start+100, []byte{22}, len(keys3)),
IsInvalidCommitErr,
},
// legit update to validator set (keys -> keys2)
{
genEmptySeed(keys2, "chain-1", start+90, []byte{33}, len(keys2)),
genEmptyCommit(keys2, "chain-1", start+90, []byte{33}, len(keys2)),
errors.NoErr,
},
// now impossible jump works (keys -> keys2 -> keys3)
{
genEmptySeed(keys3, "chain-1", start+100, []byte{44}, len(keys3)),
genEmptyCommit(keys3, "chain-1", start+100, []byte{44}, len(keys3)),
errors.NoErr,
},
}
@ -227,7 +227,7 @@ func TestIBCCreatePacket(t *testing.T) {
appHash := []byte{1, 2, 3, 4}
start := 100 // initial height
chainID := "cosmos-hub"
root := genEmptySeed(keys, chainID, start, appHash, len(keys))
root := genEmptyCommit(keys, chainID, start, appHash, len(keys))
// create the app and register the root of trust (for chain-1)
ctx := stack.MockContext("hub", 50)

View File

@ -17,11 +17,11 @@ const (
// newCertifier loads up the current state of this chain to make a proper certifier
// it will load the most recent height before block h if h is positive
// if h < 0, it will load the latest height
func newCertifier(store state.SimpleDB, chainID string, h int) (*certifiers.InquiringCertifier, error) {
func newCertifier(store state.SimpleDB, chainID string, h int) (*certifiers.Inquiring, error) {
// each chain has their own prefixed subspace
p := newDBProvider(store)
var seed certifiers.Seed
var seed certifiers.FullCommit
var err error
if h > 0 {
// this gets the most recent verified seed below the specified height
@ -55,7 +55,7 @@ func newDBProvider(store state.SimpleDB) *dbProvider {
var _ certifiers.Provider = &dbProvider{}
func (d *dbProvider) StoreSeed(seed certifiers.Seed) error {
func (d *dbProvider) StoreSeed(seed certifiers.FullCommit) error {
// TODO: don't duplicate data....
b := wire.BinaryBytes(seed)
d.byHash.Set(seed.Hash(), b)
@ -63,7 +63,7 @@ func (d *dbProvider) StoreSeed(seed certifiers.Seed) error {
return nil
}
func (d *dbProvider) GetByHeight(h int) (seed certifiers.Seed, err error) {
func (d *dbProvider) GetByHeight(h int) (seed certifiers.FullCommit, err error) {
b, _ := d.byHeight.LTE(uint64(h))
if b == nil {
return seed, certifiers.ErrSeedNotFound()
@ -72,7 +72,7 @@ func (d *dbProvider) GetByHeight(h int) (seed certifiers.Seed, err error) {
return
}
func (d *dbProvider) GetByHash(hash []byte) (seed certifiers.Seed, err error) {
func (d *dbProvider) GetByHash(hash []byte) (seed certifiers.FullCommit, err error) {
b := d.byHash.Get(hash)
if b == nil {
return seed, certifiers.ErrSeedNotFound()
@ -83,7 +83,7 @@ func (d *dbProvider) GetByHash(hash []byte) (seed certifiers.Seed, err error) {
// GetExactHeight is like GetByHeight, but returns an error instead of
// closest match if there is no exact match
func (d *dbProvider) GetExactHeight(h int) (seed certifiers.Seed, err error) {
func (d *dbProvider) GetExactHeight(h int) (seed certifiers.FullCommit, err error) {
seed, err = d.GetByHeight(h)
if err != nil {
return

View File

@ -10,7 +10,7 @@ import (
"github.com/tendermint/light-client/certifiers"
)
func assertSeedEqual(t *testing.T, s, s2 certifiers.Seed) {
func assertSeedEqual(t *testing.T, s, s2 certifiers.FullCommit) {
assert := assert.New(t)
assert.Equal(s.Height(), s2.Height())
assert.Equal(s.Hash(), s2.Hash())
@ -75,16 +75,16 @@ func TestDBProvider(t *testing.T) {
checkProvider(t, p, "test-db", "bling")
}
func makeSeeds(keys certifiers.ValKeys, count int, chainID, app string) []certifiers.Seed {
func makeSeeds(keys certifiers.ValKeys, count int, chainID, app string) []certifiers.FullCommit {
appHash := []byte(app)
seeds := make([]certifiers.Seed, count)
seeds := make([]certifiers.FullCommit, count)
for i := 0; i < count; i++ {
// two seeds for each validator, to check how we handle dups
// (10, 0), (10, 1), (10, 1), (10, 2), (10, 2), ...
vals := keys.ToValidators(10, int64(count/2))
h := 20 + 10*i
check := keys.GenCheckpoint(chainID, h, nil, vals, appHash, 0, len(keys))
seeds[i] = certifiers.Seed{check, vals}
seeds[i] = certifiers.FullCommit{check, vals}
}
return seeds
}

View File

@ -32,7 +32,7 @@ func NewMockChain(chainID string, numKeys int) MockChain {
// GetRegistrationTx returns a valid tx to register this chain
func (m MockChain) GetRegistrationTx(h int) RegisterChainTx {
seed := genEmptySeed(m.keys, m.chainID, h, m.tree.Hash(), len(m.keys))
seed := genEmptyCommit(m.keys, m.chainID, h, m.tree.Hash(), len(m.keys))
return RegisterChainTx{seed}
}
@ -42,18 +42,17 @@ func (m MockChain) MakePostPacket(packet Packet, h int) (
PostPacketTx, UpdateChainTx) {
post := makePostPacket(m.tree, packet, m.chainID, h)
seed := genEmptySeed(m.keys, m.chainID, h+1, m.tree.Hash(), len(m.keys))
seed := genEmptyCommit(m.keys, m.chainID, h+1, m.tree.Hash(), len(m.keys))
update := UpdateChainTx{seed}
return post, update
}
func genEmptySeed(keys certifiers.ValKeys, chain string, h int,
appHash []byte, count int) certifiers.Seed {
func genEmptyCommit(keys certifiers.ValKeys, chain string, h int,
appHash []byte, count int) certifiers.FullCommit {
vals := keys.ToValidators(10, 0)
cp := keys.GenCheckpoint(chain, h, nil, vals, appHash, 0, count)
return certifiers.Seed{cp, vals}
return keys.GenFullCommit(chain, h, nil, vals, appHash, 0, count)
}
func makePostPacket(tree *iavl.Tree, packet Packet, fromID string, fromHeight int) PostPacketTx {

View File

@ -32,7 +32,7 @@ func init() {
// RegisterChainTx allows you to register a new chain on this blockchain
type RegisterChainTx struct {
Seed certifiers.Seed `json:"seed"`
Seed certifiers.FullCommit `json:"seed"`
}
// ChainID helps get the chain this tx refers to
@ -56,7 +56,7 @@ func (r RegisterChainTx) Wrap() sdk.Tx {
// UpdateChainTx updates the state of this chain
type UpdateChainTx struct {
Seed certifiers.Seed `json:"seed"`
Seed certifiers.FullCommit `json:"seed"`
}
// ChainID helps get the chain this tx refers to