op, _ := crawler.GetCommandOptions()
c, err := crawler.NewCrawler(op)
c.FilterOpts.End, err = c.SafeBlockNum(3)
contract, err := gum_gateway.NewGumGateway(c.Contract())
iter, err := contract.FilterSold(c.FilterOpts, nil, nil)
grpcClient := gateway.NewGatewayServiceClient(c.GRPC)
for iter.Next() {
e := iter.Event
if e.Raw.Removed {
fmt.Printf("level:info\tmsg:%s removed block\n", e.Raw.TxHash.String())
continue
}
input := &gateway.PurchaseInfo{
EthPurchaser: e.User.String(),
EthAffiliator: e.Referrer.String(),
EthAmountGwei: crawler.ToGwei(e.Value).Uint64(),
TxHash: e.Raw.TxHash.String(),
}
if !op.DryRun {
_, err := grpcClient.GumSale(context.Background(), input)
if err != nil {
if strings.HasPrefix(err.Error(), "rpc error: code = Unknown desc = Error 1062: Duplicate entry") {
fmt.Printf("level:debug\tmsg:%s already affected\n", e.Raw.TxHash.String())
continue
}
return err
}
}
fmt.Printf("level:info\tmsg:%s is affected \n", e.Raw.TxHash.String())
}