예제 #1
1
func TestUpdateECTransaction(t *testing.T) {
	state.SetFactoshisPerEC(1)
	add1, err := primitives.HexToHash("0000000000000000000000000000000000000000000000000000000000000001")
	if err != nil {
		t.Error(err)
		return
	}
	add1bs := primitives.StringToByteSlice32("0000000000000000000000000000000000000000000000000000000000000001")

	if state.GetECBalance(add1.Fixed()) != 0 {
		t.Errorf("Invalid address balance - %v", state.GetECBalance(add1.Fixed()))
		return
	}

	var tx interfaces.IECBlockEntry
	tx = new(entryCreditBlock.ServerIndexNumber)

	err = state.UpdateECTransaction(tx)
	if err != nil {
		t.Error(err)
		return
	}
	if state.GetECBalance(add1.Fixed()) != 0 {
		t.Errorf("Invalid address balance - %v", state.GetECBalance(add1.Fixed()))
	}

	tx = new(entryCreditBlock.MinuteNumber)

	err = state.UpdateECTransaction(tx)
	if err != nil {
		t.Error(err)
		return
	}
	if state.GetECBalance(add1.Fixed()) != 0 {
		t.Errorf("Invalid address balance - %v", state.GetECBalance(add1.Fixed()))
		return
	}

	//Proper processing
	cc := new(entryCreditBlock.CommitChain)
	cc.ECPubKey = add1bs
	cc.Credits = 100
	tx = cc

	err = state.UpdateECTransaction(tx)
	if err != nil {
		t.Error(err)
		return
	}
	if state.GetECBalance(add1.Fixed()) != -100 {
		t.Errorf("Invalid address balance - %v", state.GetECBalance(add1.Fixed()))
		return
	}

	ib := new(entryCreditBlock.IncreaseBalance)
	ib.ECPubKey = add1bs
	ib.NumEC = 100
	tx = ib

	err = state.UpdateECTransaction(tx)
	if err != nil {
		t.Error(err)
		return
	}
	if state.GetECBalance(add1.Fixed()) != 0 {
		t.Errorf("Invalid address balance - %v", state.GetECBalance(add1.Fixed()))
		return
	}

	ce := new(entryCreditBlock.CommitEntry)
	ce.ECPubKey = add1bs
	ce.Credits = 100
	tx = ce

	err = state.UpdateECTransaction(tx)
	if err != nil {
		t.Error(err)
		return
	}
	if state.GetECBalance(add1.Fixed()) != -100 {
		t.Errorf("Invalid address balance - %v", state.GetECBalance(add1.Fixed()))
		return
	}

}
예제 #2
0
func DecodeTransactionToHashes(fullTransaction string) (eTxID string, ecTxID string) {
	//fmt.Printf("DecodeTransactionToHashes - %v\n", fullTransaction)
	b, err := hex.DecodeString(fullTransaction)
	if err != nil {
		return
	}

	cc := new(entryCreditBlock.CommitChain)
	rest, err := cc.UnmarshalBinaryData(b)
	if err != nil || len(rest) > 0 {
		//fmt.Printf("err - %v\n", err)
		ec := new(entryCreditBlock.CommitEntry)
		rest, err = ec.UnmarshalBinaryData(b)
		if err != nil || len(rest) > 0 {
			//fmt.Printf("err - %v\n", err)
			e := new(entryBlock.Entry)
			rest, err = e.UnmarshalBinaryData(b)
			if err != nil || len(rest) > 0 {
				//fmt.Printf("err - %v\n", err)
				return
			} else {
				//fmt.Println("e")
				eTxID = e.GetHash().String()
			}
		} else {
			//fmt.Println("ec")
			eTxID = ec.GetEntryHash().String()
			ecTxID = ec.GetHash().String()
		}
	} else {
		//fmt.Println("cc")
		eTxID = cc.GetEntryHash().String()
		ecTxID = cc.GetHash().String()
	}

	//fmt.Printf("eTxID - %v\n", eTxID)
	//fmt.Printf("ecTxID - %v\n", ecTxID)
	return
}