func NewConsensusConflict(s string) ConsensusConflict {
	return ConsensusConflict("consensus conflict: " + s)
}
NewConsensusConflict returns a consensus conflict, which implements the
error interface.
package modules
import (
	"errors"
	"github.com/NebulousLabs/Sia/crypto"
	"github.com/NebulousLabs/Sia/encoding"
	"github.com/NebulousLabs/Sia/types"
)
const (
	TransactionSetSizeLimit = 250e3
	TransactionSizeLimit = 32e3
)
var (
	ErrDuplicateTransactionSet = errors.New("transaction set contains only duplicate transactions")
	ErrInvalidArbPrefix = errors.New("transaction contains non-standard arbitrary data")
	ErrLargeTransaction = errors.New("transaction is too large for this transaction pool")
	ErrLargeTransactionSet = errors.New("transaction set is too large for this transaction pool")
	PrefixNonSia = types.Specifier{'N', 'o', 'n', 'S', 'i', 'a'}
	TransactionPoolDir = "transactionpool"
)
type (
	ConsensusConflict string
	TransactionSetID crypto.Hash
	TransactionPoolDiff struct {
		AppliedTransactions  []*UnconfirmedTransactionSet
		RevertedTransactions []TransactionSetID
	}
	UnconfirmedTransactionSet struct {
		Change *ConsensusChange
		ID     TransactionSetID
		IDs          []types.TransactionID
		Sizes        []uint64
		Transactions []types.Transaction
	}
)
type (
	TransactionPoolSubscriber interface {
		ReceiveUpdatedUnconfirmedTransactions(*TransactionPoolDiff)
	}
	TransactionPool interface {
		AcceptTransactionSet([]types.Transaction) error
		Broadcast(ts []types.Transaction)
		Close() error
		FeeEstimation() (minimumRecommended, maximumRecommended types.Currency)
		PurgeTransactionPool()
		Transaction(id types.TransactionID) (txn types.Transaction, unconfirmedParents []types.Transaction, exists bool)
		TransactionConfirmed(id types.TransactionID) (bool, error)
		TransactionList() []types.Transaction
		TransactionPoolSubscribe(TransactionPoolSubscriber)
		TransactionSet(crypto.Hash) []types.Transaction
		Unsubscribe(TransactionPoolSubscriber)
	}
)