github.com/bigzoro/my_simplechain@v0.0.0-20240315012955-8ad0a2a29bb9/cmd/dummytx/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "github.com/bigzoro/my_simplechain/cmd/dummytx/config" 6 "log" 7 "os" 8 "strconv" 9 ) 10 11 func main() { 12 if len(os.Args) != 4 { 13 log.Printf("Usage: dummyTx config.json 500 1\n") 14 os.Exit(1) 15 } 16 txNums, err := strconv.ParseInt(os.Args[2], 10, 64) 17 if err != nil { 18 log.Printf("the second para is not number\n") 19 os.Exit(1) 20 } 21 num, err := strconv.ParseInt(os.Args[3], 10, 64) 22 if err != nil { 23 log.Printf("the third para is not number\n") 24 os.Exit(1) 25 } 26 if num < 0 { 27 log.Printf("the third para is less than 0\n") 28 os.Exit(1) 29 } 30 switch num { 31 case 0: 32 for { 33 ctx, cancel := context.WithCancel(context.Background()) 34 conf := config.LoadConfig(os.Args[1]) 35 s := newSender(ctx, conf, txNums) 36 s.connect() // 连接上某sipe节点 37 s.claimFunds() 38 if conf.Monitor { 39 log.Println("start monitor txs in blockChain") 40 go s.calcTotalCount(ctx) 41 } 42 go s.dummyTx() 43 for i := 0; i < 1; i++ { 44 <-s.signal 45 } 46 close(s.signal) 47 s.client.Close() 48 cancel() 49 log.Printf("txsCount=%v", s.txsCount) 50 } 51 default: 52 for j := 0; j < int(num); j++ { 53 ctx, cancel := context.WithCancel(context.Background()) 54 conf := config.LoadConfig(os.Args[1]) 55 s := newSender(ctx, conf, txNums) 56 s.connect() // 连接上某sipe节点 57 s.claimFunds() 58 if conf.Monitor { 59 log.Println("start monitor txs in blockChain") 60 go s.calcTotalCount(ctx) 61 } 62 go s.dummyTx() 63 for i := 0; i < 1; i++ { 64 <-s.signal 65 } 66 close(s.signal) 67 s.client.Close() 68 cancel() 69 log.Printf("txsCount=%v", s.txsCount) 70 } 71 } 72 log.Println("dummy transaction exit") 73 }