|
|
|
@ -179,7 +179,9 @@ func TestTxSequence(t *testing.T) {
|
|
|
|
|
// The tx should only pass when i == 1.
|
|
|
|
|
for i := -1; i < 3; i++ {
|
|
|
|
|
sequence := acc0.Sequence + uint(i)
|
|
|
|
|
tx := makeSendTx(sequence)
|
|
|
|
|
tx := types.NewSendTx()
|
|
|
|
|
tx.AddInputWithNonce(acc0PubKey, 1, sequence)
|
|
|
|
|
tx.AddOutput(acc1.Address, 1)
|
|
|
|
|
tx.Inputs[0].Signature = privAccounts[0].Sign(state.ChainID, tx)
|
|
|
|
|
stateCopy := state.Copy()
|
|
|
|
|
err := execTxWithState(stateCopy, tx, true)
|
|
|
|
@ -223,7 +225,7 @@ func TestNameTxs(t *testing.T) {
|
|
|
|
|
for _, name := range names {
|
|
|
|
|
amt := fee + numDesiredBlocks*types.NameCostPerByte*types.NameCostPerBlock*types.BaseEntryCost(name, data)
|
|
|
|
|
tx, _ := types.NewNameTx(state, privAccounts[0].PubKey, name, data, amt, fee)
|
|
|
|
|
tx.Sign(privAccounts[0])
|
|
|
|
|
tx.Sign(state.ChainID, privAccounts[0])
|
|
|
|
|
|
|
|
|
|
if err := execTxWithState(state, tx, true); err == nil {
|
|
|
|
|
t.Fatalf("Expected invalid name error from %s", name)
|
|
|
|
@ -236,7 +238,7 @@ func TestNameTxs(t *testing.T) {
|
|
|
|
|
for _, data := range datas {
|
|
|
|
|
amt := fee + numDesiredBlocks*types.NameCostPerByte*types.NameCostPerBlock*types.BaseEntryCost(name, data)
|
|
|
|
|
tx, _ := types.NewNameTx(state, privAccounts[0].PubKey, name, data, amt, fee)
|
|
|
|
|
tx.Sign(privAccounts[0])
|
|
|
|
|
tx.Sign(state.ChainID, privAccounts[0])
|
|
|
|
|
|
|
|
|
|
if err := execTxWithState(state, tx, true); err == nil {
|
|
|
|
|
t.Fatalf("Expected invalid data error from %s", data)
|
|
|
|
@ -267,7 +269,7 @@ func TestNameTxs(t *testing.T) {
|
|
|
|
|
data = "on this side of neptune there are 1234567890 people: first is OMNIVORE. Or is it. Ok this is pretty restrictive. No exclamations :(. Faces tho :')"
|
|
|
|
|
amt := fee + numDesiredBlocks*types.NameCostPerByte*types.NameCostPerBlock*types.BaseEntryCost(name, data)
|
|
|
|
|
tx, _ := types.NewNameTx(state, privAccounts[0].PubKey, name, data, amt, fee)
|
|
|
|
|
tx.Sign(privAccounts[0])
|
|
|
|
|
tx.Sign(state.ChainID, privAccounts[0])
|
|
|
|
|
if err := execTxWithState(state, tx, true); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
@ -276,7 +278,7 @@ func TestNameTxs(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
// fail to update it as non-owner, in same block
|
|
|
|
|
tx, _ = types.NewNameTx(state, privAccounts[1].PubKey, name, data, amt, fee)
|
|
|
|
|
tx.Sign(privAccounts[1])
|
|
|
|
|
tx.Sign(state.ChainID, privAccounts[1])
|
|
|
|
|
if err := execTxWithState(state, tx, true); err == nil {
|
|
|
|
|
t.Fatal("Expected error")
|
|
|
|
|
}
|
|
|
|
@ -284,7 +286,7 @@ func TestNameTxs(t *testing.T) {
|
|
|
|
|
// update it as owner, just to increase expiry, in same block
|
|
|
|
|
// NOTE: we have to resend the data or it will clear it (is this what we want?)
|
|
|
|
|
tx, _ = types.NewNameTx(state, privAccounts[0].PubKey, name, data, amt, fee)
|
|
|
|
|
tx.Sign(privAccounts[0])
|
|
|
|
|
tx.Sign(state.ChainID, privAccounts[0])
|
|
|
|
|
if err := execTxWithStateNewBlock(state, tx, true); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
@ -293,7 +295,7 @@ func TestNameTxs(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
// update it as owner, just to increase expiry, in next block
|
|
|
|
|
tx, _ = types.NewNameTx(state, privAccounts[0].PubKey, name, data, amt, fee)
|
|
|
|
|
tx.Sign(privAccounts[0])
|
|
|
|
|
tx.Sign(state.ChainID, privAccounts[0])
|
|
|
|
|
if err := execTxWithStateNewBlock(state, tx, true); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
@ -303,7 +305,7 @@ func TestNameTxs(t *testing.T) {
|
|
|
|
|
// fail to update it as non-owner
|
|
|
|
|
state.LastBlockHeight = uint(entry.Expires - 1)
|
|
|
|
|
tx, _ = types.NewNameTx(state, privAccounts[1].PubKey, name, data, amt, fee)
|
|
|
|
|
tx.Sign(privAccounts[1])
|
|
|
|
|
tx.Sign(state.ChainID, privAccounts[1])
|
|
|
|
|
if err := execTxWithState(state, tx, true); err == nil {
|
|
|
|
|
t.Fatal("Expected error")
|
|
|
|
|
}
|
|
|
|
@ -311,7 +313,7 @@ func TestNameTxs(t *testing.T) {
|
|
|
|
|
// once expires, non-owner succeeds
|
|
|
|
|
state.LastBlockHeight = uint(entry.Expires)
|
|
|
|
|
tx, _ = types.NewNameTx(state, privAccounts[1].PubKey, name, data, amt, fee)
|
|
|
|
|
tx.Sign(privAccounts[1])
|
|
|
|
|
tx.Sign(state.ChainID, privAccounts[1])
|
|
|
|
|
if err := execTxWithState(state, tx, true); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
@ -324,7 +326,7 @@ func TestNameTxs(t *testing.T) {
|
|
|
|
|
numDesiredBlocks = 10
|
|
|
|
|
amt = fee + (numDesiredBlocks*types.NameCostPerByte*types.NameCostPerBlock*types.BaseEntryCost(name, data) - oldCredit)
|
|
|
|
|
tx, _ = types.NewNameTx(state, privAccounts[1].PubKey, name, data, amt, fee)
|
|
|
|
|
tx.Sign(privAccounts[1])
|
|
|
|
|
tx.Sign(state.ChainID, privAccounts[1])
|
|
|
|
|
if err := execTxWithState(state, tx, true); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
@ -335,7 +337,7 @@ func TestNameTxs(t *testing.T) {
|
|
|
|
|
amt = fee
|
|
|
|
|
data = ""
|
|
|
|
|
tx, _ = types.NewNameTx(state, privAccounts[1].PubKey, name, data, amt, fee)
|
|
|
|
|
tx.Sign(privAccounts[1])
|
|
|
|
|
tx.Sign(state.ChainID, privAccounts[1])
|
|
|
|
|
if err := execTxWithStateNewBlock(state, tx, true); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
@ -350,7 +352,7 @@ func TestNameTxs(t *testing.T) {
|
|
|
|
|
data = "some data"
|
|
|
|
|
amt = fee + numDesiredBlocks*types.NameCostPerByte*types.NameCostPerBlock*types.BaseEntryCost(name, data)
|
|
|
|
|
tx, _ = types.NewNameTx(state, privAccounts[0].PubKey, name, data, amt, fee)
|
|
|
|
|
tx.Sign(privAccounts[0])
|
|
|
|
|
tx.Sign(state.ChainID, privAccounts[0])
|
|
|
|
|
if err := execTxWithState(state, tx, true); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
@ -361,7 +363,7 @@ func TestNameTxs(t *testing.T) {
|
|
|
|
|
amt = fee
|
|
|
|
|
data = ""
|
|
|
|
|
tx, _ = types.NewNameTx(state, privAccounts[1].PubKey, name, data, amt, fee)
|
|
|
|
|
tx.Sign(privAccounts[1])
|
|
|
|
|
tx.Sign(state.ChainID, privAccounts[1])
|
|
|
|
|
if err := execTxWithStateNewBlock(state, tx, true); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
@ -436,7 +438,7 @@ func TestTxs(t *testing.T) {
|
|
|
|
|
GasLimit: 10,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tx.Input.Signature = privAccounts[0].Sign(tx)
|
|
|
|
|
tx.Input.Signature = privAccounts[0].Sign(state.ChainID, tx)
|
|
|
|
|
err := execTxWithState(state, tx, true)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("Got error in executing call transaction, %v", err)
|
|
|
|
@ -485,7 +487,7 @@ proof-of-work chain as proof of what happened while they were gone `
|
|
|
|
|
Data: entryData,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tx.Input.Signature = privAccounts[0].Sign(tx)
|
|
|
|
|
tx.Input.Signature = privAccounts[0].Sign(state.ChainID, tx)
|
|
|
|
|
err := execTxWithState(state, tx, true)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("Got error in executing call transaction, %v", err)
|
|
|
|
@ -506,7 +508,7 @@ proof-of-work chain as proof of what happened while they were gone `
|
|
|
|
|
// test a bad string
|
|
|
|
|
tx.Data = string([]byte{0, 1, 2, 3, 127, 128, 129, 200, 251})
|
|
|
|
|
tx.Input.Sequence += 1
|
|
|
|
|
tx.Input.Signature = privAccounts[0].Sign(tx)
|
|
|
|
|
tx.Input.Signature = privAccounts[0].Sign(state.ChainID, tx)
|
|
|
|
|
err = execTxWithState(state, tx, true)
|
|
|
|
|
if err != types.ErrTxInvalidString {
|
|
|
|
|
t.Errorf("Expected invalid string error. Got: %s", err.Error())
|
|
|
|
|