diff --git a/tools/double-spend/double-spend.go b/tools/double-spend/double-spend.go
new file mode 100644
index 0000000000000000000000000000000000000000..ce29625f6bd1e0808ba19b2d0b56c4302785aafe
--- /dev/null
+++ b/tools/double-spend/double-spend.go
@@ -0,0 +1,60 @@
+package main
+
+import (
+	"fmt"
+	"net/http"
+	"time"
+
+	"github.com/iotaledger/goshimmer/client"
+	"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/address"
+	"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/address/signaturescheme"
+	"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/balance"
+	"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/transaction"
+	"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/wallet"
+	"github.com/mr-tron/base58"
+)
+
+func main() {
+
+	client := client.NewGoShimmerAPI("http://ressims.iota.cafe:8080", http.Client{Timeout: 30 * time.Second})
+
+	// genesis wallet
+	genesisSeedBytes, err := base58.Decode("7R1itJx5hVuo9w9hjg5cwKFmek4HMSoBDgJZN8hKGxih")
+	if err != nil {
+		fmt.Println(err)
+	}
+
+	const genesisBalance = 1000000000
+	genesisWallet := wallet.New(genesisSeedBytes)
+	genesisAddr := genesisWallet.Seed().Address(0)
+	genesisOutputID := transaction.NewOutputID(genesisAddr, transaction.GenesisID)
+
+	// issue transactions which spend the same genesis output in all partitions
+	conflictingTxs := make([]*transaction.Transaction, 2)
+	conflictingTxIDs := make([]string, 2)
+	receiverWallets := make([]*wallet.Wallet, 2)
+	for i := range conflictingTxs {
+
+		// create a new receiver wallet for the given conflict
+		receiverWallet := wallet.New()
+		destAddr := receiverWallet.Seed().Address(0)
+		receiverWallets[i] = receiverWallet
+		tx := transaction.New(
+			transaction.NewInputs(genesisOutputID),
+			transaction.NewOutputs(map[address.Address][]*balance.Balance{
+				destAddr: {
+					{Value: genesisBalance, Color: balance.ColorIOTA},
+				},
+			}))
+		tx = tx.Sign(signaturescheme.ED25519(*genesisWallet.Seed().KeyPair(0)))
+		conflictingTxs[i] = tx
+
+		// issue the transaction
+		txID, err := client.SendTransaction(tx.Bytes())
+		if err != nil {
+			fmt.Println(err)
+		}
+		conflictingTxIDs[i] = txID
+		fmt.Printf("issued conflict transaction %s\n", txID)
+	}
+}