# Construct private Tangle with Goshimmer ## Node-A ### Clone - ```$ git clone https://github.com/iotaledger/goshimmer``` - ```$ cd goshimmer``` ### Remove default entryNode ```diff= diff --git a/plugins/autopeering/parameters/parameters.go b/plugins/autopeering/parameters/parameters.go index 8332389..e277aba 100644 --- a/plugins/autopeering/parameters/parameters.go +++ b/plugins/autopeering/parameters/parameters.go @@ -4,7 +4,7 @@ import "github.com/iotaledger/goshimmer/packages/parameter" var ( ADDRESS = parameter.AddString("AUTOPEERING/ADDRESS", "0.0.0.0", "address to bind for incoming peering requests") - ENTRY_NODES = parameter.AddString("AUTOPEERING/ENTRY_NODES", "7f7a876a4236091257e650da8dcf195fbe3cb625@159.69.158.51:14626", "list of trusted entry nodes for auto peering") + ENTRY_NODES = parameter.AddString("AUTOPEERING/ENTRY_NODES", "", "list of trusted entry nodes for auto peering") PORT = parameter.AddInt("AUTOPEERING/PORT", 14626, "tcp port for incoming peering requests") ACCEPT_REQUESTS = parameter.AddBool("AUTOPEERING/ACCEPT_REQUESTS", true, "accept incoming autopeering requests") SEND_REQUESTS = parameter.AddBool("AUTOPEERING/SEND_REQUESTS", true, "send autopeering requests") ``` ### Build - Remember change default API port before building ```shell $ go build -o shimmer-a ``` ### Run Node-A - Run ```shell= $ ./shimmer-a -autopeering-port 14267 -gossip-port 14667 ``` - Ports ```shell= $ sudo netstat -ntlp | grep shimmer-a ``` ``` tcp 0 0 0.0.0.0:14267 0.0.0.0:* LISTEN 26580/./shimmer-a tcp 0 0 0.0.0.0:14667 0.0.0.0:* LISTEN 26580/./shimmer-a tcp6 0 0 :::8083 :::* LISTEN 26580/./shimmer-a ``` ### Get ID of Node-A - Node ID: ca57ef63e9872ba9751b379147a66d8023375c05 ![](https://i.imgur.com/SVnNGMD.png) ## Node-B ### Clone - ```$ git clone https://github.com/iotaledger/goshimmer``` - ```$ cd goshimmer``` - Remove entryNode - Build - Remember change default API port before building - Run with entryNode(Node-A) ``` ./shimmer-b -autopeering-port 14268 -gossip-port 14668 -autopeering-entry-nodes "ca57ef63e9872ba9751b379147a66d8023375c05@127.0.0.1:14627" ``` - Restart Node-A with entryNode(Node-B) ``` ./shimmer-a -autopeering-port 14267 -gossip-port 14667 -autopeering-entry-nodes "782e154464fd90ad2dedb7c53557c3d62bc9793c:127.0.0.1:14268" -node-enable-plugins "spammer" ``` ## SPAM on goshimmer private-Tangle testing We remove the default entryNode on each goshimmer node(Node-A and Node-B) and add with entryNode to each other, finally issue the SPAM transaction from Node-A and see if Node-B get SPAM transactions. ### Node-A: Replace IF entryNode with Node-B ID ![](https://i.imgur.com/D6gh4du.png) ### Node-B: Replace IF entryNode with Node-A ID ![](https://i.imgur.com/l1djYxc.png) ### SPAM from Node-A - Request http://node0.puyuma.org:8083/spammer?cmd=start&tps=10000 - Response {"duration":6,"status":"success","message":"started spamming transactions"} - Node-A status screen: Got TPS - Thu Aug 15 21:50:42 CST 2019 ![](https://i.imgur.com/5HztDDI.png) ![](https://i.imgur.com/uRL8xpt.png) - Node-B dashboard: Got TPS ![](https://i.imgur.com/MJeKqNI.png) - Note: SPAM is not really broadcast - [source](https://github.com/iotaledger/goshimmer/blob/master/packages/transactionspammer/transactionspammer.go#L53) ```go= tx := value_transaction.New() tx.SetHead(true) tx.SetTail(true) tx.SetValue(totalSentCounter) tx.SetBranchTransactionHash(tipselection.GetRandomTip()) tx.SetTrunkTransactionHash(tipselection.GetRandomTip()) gossip.Events.ReceiveTransaction.Trigger(tx.MetaTransaction) ```