# 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

## 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

### Node-B: Replace IF entryNode with Node-A ID

### 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


- Node-B dashboard: Got TPS

- 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)
```