func EstimateNormalSize(ins int, outs int) int64 {
	baseSize := 0
	{
		baseSize += 4
		{
			baseSize += xbase.VarIntSerializeSize(uint64(ins))
			baseSize += inputP2PKHSize * ins
		}
		{
			baseSize += xbase.VarIntSerializeSize(uint64(outs))
			baseSize += (8 + 25) * outs
		}
		baseSize += 4
	}
	return int64(baseSize)
}
EstimateNormalSize -- estimate the normal size by input and output count.
package xcore
import (
	"github.com/keyfuse/tokucore/xbase"
)
const (
	inputP2PKHSigScriptSize = 1 + 73 + 1 + 33
	inputP2PKHSize = 32 + 4 + 1 + inputP2PKHSigScriptSize + 4
	inputWitnessSignatureSize = 73  
	inputWitnessPubKeySize    = 33  
)
func EstimateSize(txins []*TxIn, txouts []*TxOut) int64 {
	baseSize := 0
	witnessSize := 0
	{
		baseSize += 4
		{
			txinNums := len(txins)
			baseSize += xbase.VarIntSerializeSize(uint64(txinNums))
			for _, in := range txins {
				if !in.HasWitness() {
					baseSize += inputP2PKHSize
				}
			}
		}
		{
			txoutNums := len(txouts)
			baseSize += xbase.VarIntSerializeSize(uint64(txoutNums))
			for _, out := range txouts {
				baseSize += (8 + len(out.Script))
			}
		}
		baseSize += 4
	}
	{
		var hasWitness bool
		for _, in := range txins {
			if in.HasWitness() {
				hasWitness = true
				break
			}
		}
		if hasWitness {
			for _, in := range txins {
				if in.HasWitness() {
					witnessSize += xbase.VarIntSerializeSize(uint64(2))
					witnessSize += xbase.VarIntSerializeSize(uint64(inputWitnessSignatureSize))
					witnessSize += xbase.VarIntSerializeSize(uint64(inputWitnessPubKeySize))
				} else {
					witnessSize += xbase.VarIntSerializeSize(uint64(0))
				}
			}
		}
	}
	return int64((baseSize*(witnessScaleFactor-1) + (baseSize + witnessSize)) / witnessScaleFactor)
}