code: func (ui *CommandlineUI) ApproveTx(request *SignTxRequest) (SignTxResponse, error) {
  	ui.mu.Lock()
  	defer ui.mu.Unlock()
  	weival := request.Transaction.Value.ToInt()
  	fmt.Printf("--------- Transaction request-------------\n")
  	if to := request.Transaction.To; to != nil {
  		fmt.Printf("to:    %v\n", to.Original())
  		if !to.ValidChecksum() {
  			fmt.Printf("\nWARNING: Invalid checksum on to-address!\n\n")
  		}
  	} else {
  		fmt.Printf("to:    <contact creation>\n")
  	}
  	fmt.Printf("from:     %v\n", request.Transaction.From.String())
  	fmt.Printf("value:    %v wei\n", weival)
  	fmt.Printf("gas:      %v (%v)\n", request.Transaction.Gas, uint64(request.Transaction.Gas))
  	fmt.Printf("gasprice: %v wei\n", request.Transaction.GasPrice.ToInt())
  	fmt.Printf("nonce:    %v (%v)\n", request.Transaction.Nonce, uint64(request.Transaction.Nonce))
  	if request.Transaction.Data != nil {
  		d := *request.Transaction.Data
  		if len(d) > 0 {
  
  			fmt.Printf("data:     %v\n", hexutil.Encode(d))
  		}
  	}
  	if request.Callinfo != nil {
  		fmt.Printf("\nTransaction validation:\n")
  		for _, m := range request.Callinfo {
  			fmt.Printf("  * %s : %s\n", m.Typ, m.Message)
  		}
  		fmt.Println()
  
  	}
  	fmt.Printf("\n")
  	showMetadata(request.Meta)
  	fmt.Printf("-------------------------------------------\n")
  	if !ui.confirm() {
  		return SignTxResponse{request.Transaction, false}, nil
  	}
  	return SignTxResponse{request.Transaction, true}, nil
  }
docs: // ApproveTx prompt the user for confirmation to request to sign Transaction